From ee365ea276e0895aaa5e096cd8bbe46781f9e36c Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:26:53 -0700 Subject: [PATCH 01/41] Frontend: Step 1 for query caching (organize FE directories, build save modals, modify routes/URLs) (#13908) --- assets/images/phone-home.svg | 1 - frontend/components/EmptyTable/_styles.scss | 1 - .../components/LiveQuery/SelectTargets.tsx | 4 +- .../LiveQuery/TargetsInput/_styles.scss | 3 + .../TooltipWrapper/TooltipWrapper.tsx | 1 + .../components/icons/CollectingResults.tsx | 254 ++++++++++++++++++ frontend/components/icons/index.ts | 2 + .../AwaitingResults/AwaitingResults.tsx | 17 +- .../queryResults/AwaitingResults/_styles.scss | 15 -- frontend/context/query.tsx | 21 ++ frontend/interfaces/target.ts | 3 + .../HostDetailsPage/HostDetailsPage.tsx | 12 +- .../pages/policies/PolicyPage/PolicyPage.tsx | 18 +- .../pages/policies/PolicyPage/_styles.scss | 32 --- .../PolicyPage/screens/QueryEditor.tsx | 2 +- .../QueriesTable/QueriesTableConfig.tsx | 2 +- frontend/pages/queries/QueryPage/index.ts | 1 - .../queries/QueryPage/screens/QueryEditor.tsx | 186 ------------- .../pages/queries/QueryPage/screens/test.js | 0 .../QueryDetailsPage/QueryDetailsPage.tsx | 241 +++++++++++++++++ .../details/QueryDetailsPage/_styles.scss | 65 +++++ .../queries/details/QueryDetailsPage/index.ts | 1 + .../CachedDetails/CachedDetails.tsx | 14 + .../details/components/CachedDetails/index.ts | 1 + .../components/NoResults/NoResults.tsx | 116 ++++++++ .../details/components/NoResults/index.ts | 1 + .../EditQueryPage/EditQueryPage.tsx} | 237 +++++++++------- .../queries/edit/EditQueryPage/_styles.scss | 54 ++++ .../pages/queries/edit/EditQueryPage/index.ts | 1 + .../components/QueryForm/QueryForm.tests.tsx | 1 - .../components/QueryForm/QueryForm.tsx | 46 +++- .../components/QueryForm/_styles.scss | 5 - .../components/QueryForm/index.ts | 0 .../components/QueryResults/QueryResults.tsx | 0 .../QueryResults/QueryResultsTableConfig.tsx | 0 .../components/QueryResults/_styles.scss | 0 .../components/QueryResults/index.ts | 0 .../SaveChangesModal/SaveChangesModal.tsx | 53 ++++ .../edit/components/SaveChangesModal/index.ts | 1 + .../SaveQueryModal/SaveQueryModal.tsx | 214 ++++++++------- .../components/SaveQueryModal/_styles.scss | 0 .../components/SaveQueryModal/index.ts | 0 .../live/LiveQueryPage/LiveQueryPage.tsx | 213 +++++++++++++++ .../LiveQueryPage}/_styles.scss | 63 +---- .../pages/queries/live/LiveQueryPage/index.ts | 1 + .../{QueryPage => live}/screens/RunQuery.tsx | 2 +- frontend/router/index.tsx | 12 +- frontend/router/paths.ts | 10 + frontend/services/entities/queries.ts | 4 +- frontend/utilities/constants.ts | 7 +- frontend/utilities/endpoints.ts | 2 +- frontend/utilities/helpers.ts | 7 + 52 files changed, 1391 insertions(+), 556 deletions(-) delete mode 100644 assets/images/phone-home.svg create mode 100644 frontend/components/icons/CollectingResults.tsx delete mode 100644 frontend/pages/queries/QueryPage/index.ts delete mode 100644 frontend/pages/queries/QueryPage/screens/QueryEditor.tsx delete mode 100644 frontend/pages/queries/QueryPage/screens/test.js create mode 100644 frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx create mode 100644 frontend/pages/queries/details/QueryDetailsPage/_styles.scss create mode 100644 frontend/pages/queries/details/QueryDetailsPage/index.ts create mode 100644 frontend/pages/queries/details/components/CachedDetails/CachedDetails.tsx create mode 100644 frontend/pages/queries/details/components/CachedDetails/index.ts create mode 100644 frontend/pages/queries/details/components/NoResults/NoResults.tsx create mode 100644 frontend/pages/queries/details/components/NoResults/index.ts rename frontend/pages/queries/{QueryPage/QueryPage.tsx => edit/EditQueryPage/EditQueryPage.tsx} (54%) create mode 100644 frontend/pages/queries/edit/EditQueryPage/_styles.scss create mode 100644 frontend/pages/queries/edit/EditQueryPage/index.ts rename frontend/pages/queries/{QueryPage => edit}/components/QueryForm/QueryForm.tests.tsx (98%) rename frontend/pages/queries/{QueryPage => edit}/components/QueryForm/QueryForm.tsx (95%) rename frontend/pages/queries/{QueryPage => edit}/components/QueryForm/_styles.scss (98%) rename frontend/pages/queries/{QueryPage => edit}/components/QueryForm/index.ts (100%) rename frontend/pages/queries/{QueryPage => edit}/components/QueryResults/QueryResults.tsx (100%) rename frontend/pages/queries/{QueryPage => edit}/components/QueryResults/QueryResultsTableConfig.tsx (100%) rename frontend/pages/queries/{QueryPage => edit}/components/QueryResults/_styles.scss (100%) rename frontend/pages/queries/{QueryPage => edit}/components/QueryResults/index.ts (100%) create mode 100644 frontend/pages/queries/edit/components/SaveChangesModal/SaveChangesModal.tsx create mode 100644 frontend/pages/queries/edit/components/SaveChangesModal/index.ts rename frontend/pages/queries/{QueryPage => edit}/components/SaveQueryModal/SaveQueryModal.tsx (51%) rename frontend/pages/queries/{QueryPage => edit}/components/SaveQueryModal/_styles.scss (100%) rename frontend/pages/queries/{QueryPage => edit}/components/SaveQueryModal/index.ts (100%) create mode 100644 frontend/pages/queries/live/LiveQueryPage/LiveQueryPage.tsx rename frontend/pages/queries/{QueryPage => live/LiveQueryPage}/_styles.scss (69%) create mode 100644 frontend/pages/queries/live/LiveQueryPage/index.ts rename frontend/pages/queries/{QueryPage => live}/screens/RunQuery.tsx (98%) diff --git a/assets/images/phone-home.svg b/assets/images/phone-home.svg deleted file mode 100644 index a0335a1113..0000000000 --- a/assets/images/phone-home.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/components/EmptyTable/_styles.scss b/frontend/components/EmptyTable/_styles.scss index c24d1c9543..15517d8d8f 100644 --- a/frontend/components/EmptyTable/_styles.scss +++ b/frontend/components/EmptyTable/_styles.scss @@ -57,7 +57,6 @@ &__container { align-self: center; justify-content: center; - margin: 0; margin-bottom: 20px; min-height: 155px; max-width: none; diff --git a/frontend/components/LiveQuery/SelectTargets.tsx b/frontend/components/LiveQuery/SelectTargets.tsx index c65a3e0e60..2052d13e14 100644 --- a/frontend/components/LiveQuery/SelectTargets.tsx +++ b/frontend/components/LiveQuery/SelectTargets.tsx @@ -48,7 +48,9 @@ interface ISelectTargetsProps { targetedTeams: ITeam[]; goToQueryEditor: () => void; goToRunQuery: () => void; - setSelectedTargets: React.Dispatch>; + setSelectedTargets: + | React.Dispatch> // Used for policies page level useState hook + | ((value: ITarget[]) => void); // Used for queries app level QueryContext setTargetedHosts: React.Dispatch>; setTargetedLabels: React.Dispatch>; setTargetedTeams: React.Dispatch>; diff --git a/frontend/components/LiveQuery/TargetsInput/_styles.scss b/frontend/components/LiveQuery/TargetsInput/_styles.scss index e2f14ce6e1..137525dd04 100644 --- a/frontend/components/LiveQuery/TargetsInput/_styles.scss +++ b/frontend/components/LiveQuery/TargetsInput/_styles.scss @@ -79,4 +79,7 @@ overflow: auto; } } + .input-icon-field__icon { + top: 34px; // Override styling to include label header + } } diff --git a/frontend/components/TooltipWrapper/TooltipWrapper.tsx b/frontend/components/TooltipWrapper/TooltipWrapper.tsx index 0b48e54b91..43e334495a 100644 --- a/frontend/components/TooltipWrapper/TooltipWrapper.tsx +++ b/frontend/components/TooltipWrapper/TooltipWrapper.tsx @@ -6,6 +6,7 @@ import * as DOMPurify from "dompurify"; interface ITooltipWrapperProps { children: string | JSX.Element; tipContent: string; + /** Default: bottom */ position?: "top" | "bottom"; isDelayed?: boolean; className?: string; diff --git a/frontend/components/icons/CollectingResults.tsx b/frontend/components/icons/CollectingResults.tsx new file mode 100644 index 0000000000..0df9824b3e --- /dev/null +++ b/frontend/components/icons/CollectingResults.tsx @@ -0,0 +1,254 @@ +import React from "react"; + +const CollectingResults = () => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default CollectingResults; diff --git a/frontend/components/icons/index.ts b/frontend/components/icons/index.ts index cd18850643..36ac93a842 100644 --- a/frontend/components/icons/index.ts +++ b/frontend/components/icons/index.ts @@ -4,6 +4,7 @@ import ArrowInternalLink from "./ArrowInternalLink"; import CalendarCheck from "./CalendarCheck"; import Check from "./Check"; import Chevron from "./Chevron"; +import CollectingResults from "./CollectingResults"; import Columns from "./Columns"; import CriticalPolicy from "./CriticalPolicy"; import Disable from "./Disable"; @@ -84,6 +85,7 @@ export const ICON_MAP = { "calendar-check": CalendarCheck, chevron: Chevron, check: Check, + "collecting-results": CollectingResults, columns: Columns, "critical-policy": CriticalPolicy, disable: Disable, diff --git a/frontend/components/queries/queryResults/AwaitingResults/AwaitingResults.tsx b/frontend/components/queries/queryResults/AwaitingResults/AwaitingResults.tsx index ed2bf4953a..e807a83b6a 100644 --- a/frontend/components/queries/queryResults/AwaitingResults/AwaitingResults.tsx +++ b/frontend/components/queries/queryResults/AwaitingResults/AwaitingResults.tsx @@ -1,19 +1,18 @@ import React from "react"; -import PhoneHome from "../../../../../assets/images/phone-home.svg"; +import EmptyTable from "components/EmptyTable/EmptyTable"; const baseClass = "awaiting-results"; const AwaitingResults = () => { return ( -
- awaiting results - Phoning home... -

- There are currently no results to your query. Please wait while we talk - to more hosts. -

-
+ ); }; diff --git a/frontend/components/queries/queryResults/AwaitingResults/_styles.scss b/frontend/components/queries/queryResults/AwaitingResults/_styles.scss index 12463a3844..ba2b2dad9b 100644 --- a/frontend/components/queries/queryResults/AwaitingResults/_styles.scss +++ b/frontend/components/queries/queryResults/AwaitingResults/_styles.scss @@ -5,19 +5,4 @@ flex-direction: column; align-items: center; text-align: center; - - img { - margin-bottom: $pad-medium; - } - - &__title { - font-size: $small; - font-weight: $bold; - margin-bottom: $pad-small; - } - - &__description { - font-size: $x-small; - margin: 0; - } } diff --git a/frontend/context/query.tsx b/frontend/context/query.tsx index 992e152cad..e313a0a156 100644 --- a/frontend/context/query.tsx +++ b/frontend/context/query.tsx @@ -6,6 +6,7 @@ import { DEFAULT_QUERY } from "utilities/constants"; import { DEFAULT_OSQUERY_TABLE, IOsQueryTable } from "interfaces/osquery_table"; import { SelectedPlatformString } from "interfaces/platform"; import { QueryLoggingOption } from "interfaces/schedulable_query"; +import { DEFAULT_TARGETS, ITarget } from "interfaces/target"; type Props = { children: ReactNode; @@ -22,6 +23,7 @@ type InitialStateType = { lastEditedQueryPlatforms: SelectedPlatformString; lastEditedQueryMinOsqueryVersion: string; lastEditedQueryLoggingType: QueryLoggingOption; + selectedQueryTargets: ITarget[]; setLastEditedQueryId: (value: number | null) => void; setLastEditedQueryName: (value: string) => void; setLastEditedQueryDescription: (value: string) => void; @@ -32,6 +34,7 @@ type InitialStateType = { setLastEditedQueryMinOsqueryVersion: (value: string) => void; setLastEditedQueryLoggingType: (value: string) => void; setSelectedOsqueryTable: (tableName: string) => void; + setSelectedQueryTargets: (value: ITarget[]) => void; }; export type IQueryContext = InitialStateType; @@ -48,6 +51,7 @@ const initialState = { lastEditedQueryPlatforms: DEFAULT_QUERY.platform, lastEditedQueryMinOsqueryVersion: DEFAULT_QUERY.min_osquery_version, lastEditedQueryLoggingType: DEFAULT_QUERY.logging, + selectedQueryTargets: DEFAULT_TARGETS, setLastEditedQueryId: () => null, setLastEditedQueryName: () => null, setLastEditedQueryDescription: () => null, @@ -58,11 +62,13 @@ const initialState = { setLastEditedQueryMinOsqueryVersion: () => null, setLastEditedQueryLoggingType: () => null, setSelectedOsqueryTable: () => null, + setSelectedQueryTargets: () => null, }; const actions = { SET_SELECTED_OSQUERY_TABLE: "SET_SELECTED_OSQUERY_TABLE", SET_LAST_EDITED_QUERY_INFO: "SET_LAST_EDITED_QUERY_INFO", + SET_SELECTED_QUERY_TARGETS: "SET_SELECTED_QUERY_TARGETS", } as const; const reducer = (state: InitialStateType, action: any) => { @@ -114,6 +120,14 @@ const reducer = (state: InitialStateType, action: any) => { ? state.lastEditedQueryLoggingType : action.lastEditedQueryLoggingType, }; + case actions.SET_SELECTED_QUERY_TARGETS: + return { + ...state, + selectedQueryTargets: + typeof action.selectedQueryTargets === "undefined" + ? state.selectedQueryTargets + : action.selectedQueryTargets, + }; default: return state; } @@ -135,6 +149,7 @@ const QueryProvider = ({ children }: Props) => { lastEditedQueryPlatforms: state.lastEditedQueryPlatforms, lastEditedQueryMinOsqueryVersion: state.lastEditedQueryMinOsqueryVersion, lastEditedQueryLoggingType: state.lastEditedQueryLoggingType, + selectedQueryTargets: state.selectedQueryTargets, setLastEditedQueryId: (lastEditedQueryId: number | null) => { dispatch({ type: actions.SET_LAST_EDITED_QUERY_INFO, @@ -193,6 +208,12 @@ const QueryProvider = ({ children }: Props) => { lastEditedQueryLoggingType, }); }, + setSelectedQueryTargets: (selectedQueryTargets: ITarget[]) => { + dispatch({ + type: actions.SET_SELECTED_QUERY_TARGETS, + selectedQueryTargets, + }); + }, setSelectedOsqueryTable: (tableName: string) => { dispatch({ type: actions.SET_SELECTED_OSQUERY_TABLE, tableName }); }, diff --git a/frontend/interfaces/target.ts b/frontend/interfaces/target.ts index 7526719212..873d7907f3 100644 --- a/frontend/interfaces/target.ts +++ b/frontend/interfaces/target.ts @@ -49,3 +49,6 @@ export interface IPackTargets { label_ids: (number | string)[]; team_ids: (number | string)[]; } + +// TODO: Also use for testing +export const DEFAULT_TARGETS: ITarget[] = []; diff --git a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx index 0d1a0b6b46..132dd5b502 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx @@ -39,7 +39,11 @@ import MainContent from "components/MainContent"; import InfoBanner from "components/InfoBanner"; import BackLink from "components/BackLink"; -import { normalizeEmptyValues, wrapFleetHelper } from "utilities/helpers"; +import { + normalizeEmptyValues, + wrapFleetHelper, + TAGGED_TEMPLATES, +} from "utilities/helpers"; import permissions from "utilities/permissions"; import HostSummaryCard from "../cards/HostSummary"; @@ -99,12 +103,6 @@ interface IHostDetailsSubNavItem { pathname: string; } -const TAGGED_TEMPLATES = { - queryByHostRoute: (hostId: number | undefined | null) => { - return `${hostId ? `?host_ids=${hostId}` : ""}`; - }, -}; - const HostDetailsPage = ({ route, router, diff --git a/frontend/pages/policies/PolicyPage/PolicyPage.tsx b/frontend/pages/policies/PolicyPage/PolicyPage.tsx index ef3fc1eb4c..5d10551229 100644 --- a/frontend/pages/policies/PolicyPage/PolicyPage.tsx +++ b/frontend/pages/policies/PolicyPage/PolicyPage.tsx @@ -19,7 +19,7 @@ import globalPoliciesAPI from "services/entities/global_policies"; import teamPoliciesAPI from "services/entities/team_policies"; import hostAPI from "services/entities/hosts"; import statusAPI from "services/entities/status"; -import { QUERIES_PAGE_STEPS } from "utilities/constants"; +import { LIVE_POLICY_STEPS } from "utilities/constants"; import QuerySidePanel from "components/side_panels/QuerySidePanel"; import QueryEditor from "pages/policies/PolicyPage/screens/QueryEditor"; @@ -127,7 +127,7 @@ const PolicyPage = ({ }; }, []); - const [step, setStep] = useState(QUERIES_PAGE_STEPS[1]); + const [step, setStep] = useState(LIVE_POLICY_STEPS[1]); const [selectedTargets, setSelectedTargets] = useState([]); const [targetedHosts, setTargetedHosts] = useState([]); const [targetedLabels, setTargetedLabels] = useState([]); @@ -260,7 +260,7 @@ const PolicyPage = ({ storedPolicyError, createPolicy, onOsqueryTableSelect, - goToSelectTargets: () => setStep(QUERIES_PAGE_STEPS[2]), + goToSelectTargets: () => setStep(LIVE_POLICY_STEPS[2]), onOpenSchemaSidebar, renderLiveQueryWarning, }; @@ -272,8 +272,8 @@ const PolicyPage = ({ targetedLabels, targetedTeams, targetsTotalCount, - goToQueryEditor: () => setStep(QUERIES_PAGE_STEPS[1]), - goToRunQuery: () => setStep(QUERIES_PAGE_STEPS[3]), + goToQueryEditor: () => setStep(LIVE_POLICY_STEPS[1]), + goToRunQuery: () => setStep(LIVE_POLICY_STEPS[3]), setSelectedTargets, setTargetedHosts, setTargetedLabels, @@ -285,21 +285,21 @@ const PolicyPage = ({ selectedTargets, storedPolicy, setSelectedTargets, - goToQueryEditor: () => setStep(QUERIES_PAGE_STEPS[1]), + goToQueryEditor: () => setStep(LIVE_POLICY_STEPS[1]), targetsTotalCount, }; switch (step) { - case QUERIES_PAGE_STEPS[2]: + case LIVE_POLICY_STEPS[2]: return ; - case QUERIES_PAGE_STEPS[3]: + case LIVE_POLICY_STEPS[3]: return ; default: return ; } }; - const isFirstStep = step === QUERIES_PAGE_STEPS[1]; + const isFirstStep = step === LIVE_POLICY_STEPS[1]; const showSidebar = isFirstStep && isSidebarOpen && diff --git a/frontend/pages/policies/PolicyPage/_styles.scss b/frontend/pages/policies/PolicyPage/_styles.scss index 262b83b515..1eb28ded67 100644 --- a/frontend/pages/policies/PolicyPage/_styles.scss +++ b/frontend/pages/policies/PolicyPage/_styles.scss @@ -34,33 +34,6 @@ } } - &__observer-query-details { - padding: 0 2rem; - - h1 { - margin: $pad-large 0; - font-size: $large; - } - - p { - margin-bottom: $pad-small; - } - - .sql-button { - color: $core-vibrant-blue; - font-weight: $bold; - font-size: $x-small; - } - } - - &__query-preview { - margin-top: 15px; - - .fleet-ace__label { - display: none; - } - } - .ace_content { min-height: 500px !important; } @@ -177,9 +150,4 @@ margin-bottom: 0; } } - .targets-input { - .input-icon-field__icon { - top: 34px; // Override styling to include label header - } - } } diff --git a/frontend/pages/policies/PolicyPage/screens/QueryEditor.tsx b/frontend/pages/policies/PolicyPage/screens/QueryEditor.tsx index 89e46d024a..5e42e673de 100644 --- a/frontend/pages/policies/PolicyPage/screens/QueryEditor.tsx +++ b/frontend/pages/policies/PolicyPage/screens/QueryEditor.tsx @@ -173,7 +173,7 @@ const QueryEditor = ({ return null; } - // Function instead of constant eliminates race condition with filteredSoftwarePath + // Function instead of constant eliminates race condition with filteredPoliciesPath const backToPoliciesPath = () => { return filteredPoliciesPath || PATHS.MANAGE_POLICIES; }; diff --git a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTableConfig.tsx b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTableConfig.tsx index f24c17af24..10b4611433 100644 --- a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTableConfig.tsx +++ b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTableConfig.tsx @@ -152,7 +152,7 @@ const generateTableHeaders = ({ )} } - path={PATHS.EDIT_QUERY( + path={PATHS.QUERY( cellProps.row.original.id, cellProps.row.original.team_id ?? undefined )} diff --git a/frontend/pages/queries/QueryPage/index.ts b/frontend/pages/queries/QueryPage/index.ts deleted file mode 100644 index 8d00fa0475..0000000000 --- a/frontend/pages/queries/QueryPage/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./QueryPage"; diff --git a/frontend/pages/queries/QueryPage/screens/QueryEditor.tsx b/frontend/pages/queries/QueryPage/screens/QueryEditor.tsx deleted file mode 100644 index 7b94956efd..0000000000 --- a/frontend/pages/queries/QueryPage/screens/QueryEditor.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import React, { useContext, useEffect, useState } from "react"; - -import { InjectedRouter } from "react-router/lib/Router"; -import { UseMutateAsyncFunction } from "react-query"; - -import queryAPI from "services/entities/queries"; -import { AppContext } from "context/app"; -import { QueryContext } from "context/query"; -import { NotificationContext } from "context/notification"; -import { - ICreateQueryRequestBody, - ISchedulableQuery, -} from "interfaces/schedulable_query"; -import PATHS from "router/paths"; -import debounce from "utilities/debounce"; -import deepDifference from "utilities/deep_difference"; - -import BackLink from "components/BackLink"; -import QueryForm from "pages/queries/QueryPage/components/QueryForm"; - -interface IQueryEditorProps { - router: InjectedRouter; - baseClass: string; - queryIdForEdit: number | null; - teamNameForQuery?: string; - apiTeamIdForQuery?: number; - storedQuery: ISchedulableQuery | undefined; - storedQueryError: Error | null; - showOpenSchemaActionText: boolean; - isStoredQueryLoading: boolean; - onOsqueryTableSelect: (tableName: string) => void; - goToSelectTargets: () => void; - onOpenSchemaSidebar: () => void; - renderLiveQueryWarning: () => JSX.Element | null; -} - -const QueryEditor = ({ - router, - baseClass, - queryIdForEdit, - teamNameForQuery, - apiTeamIdForQuery, - storedQuery, - storedQueryError, - showOpenSchemaActionText, - isStoredQueryLoading, - onOsqueryTableSelect, - goToSelectTargets, - onOpenSchemaSidebar, - renderLiveQueryWarning, -}: IQueryEditorProps): JSX.Element | null => { - const { currentUser, filteredQueriesPath } = useContext(AppContext); - const { renderFlash } = useContext(NotificationContext); - - // Note: The QueryContext values should always be used for any mutable query data such as query name - // The storedQuery prop should only be used to access immutable metadata such as author id - const { - lastEditedQueryName, - lastEditedQueryDescription, - lastEditedQueryBody, - lastEditedQueryObserverCanRun, - lastEditedQueryFrequency, - lastEditedQueryLoggingType, - lastEditedQueryPlatforms, - lastEditedQueryMinOsqueryVersion, - } = useContext(QueryContext); - - const [isQuerySaving, setIsQuerySaving] = useState(false); - const [isQueryUpdating, setIsQueryUpdating] = useState(false); - - useEffect(() => { - if (storedQueryError) { - renderFlash( - "error", - "Something went wrong retrieving your query. Please try again." - ); - } - }, []); - - const [backendValidators, setBackendValidators] = useState<{ - [key: string]: string; - }>({}); - - const saveQuery = debounce(async (formData: ICreateQueryRequestBody) => { - setIsQuerySaving(true); - try { - const { query } = await queryAPI.create(formData); - router.push(PATHS.EDIT_QUERY(query.id)); - renderFlash("success", "Query created!"); - setBackendValidators({}); - } catch (createError: any) { - if (createError.data.errors[0].reason.includes("already exists")) { - const teamErrorText = - teamNameForQuery && apiTeamIdForQuery !== 0 - ? `the ${teamNameForQuery} team` - : "all teams"; - setBackendValidators({ - name: `A query with that name already exists for ${teamErrorText}.`, - }); - } else { - renderFlash( - "error", - "Something went wrong creating your query. Please try again." - ); - setBackendValidators({}); - } - } finally { - setIsQuerySaving(false); - } - }); - - const onUpdateQuery = async (formData: ICreateQueryRequestBody) => { - if (!queryIdForEdit) { - return false; - } - - setIsQueryUpdating(true); - - const updatedQuery = deepDifference(formData, { - lastEditedQueryName, - lastEditedQueryDescription, - lastEditedQueryBody, - lastEditedQueryObserverCanRun, - lastEditedQueryFrequency, - lastEditedQueryPlatforms, - lastEditedQueryLoggingType, - lastEditedQueryMinOsqueryVersion, - }); - - try { - await queryAPI.update(queryIdForEdit, updatedQuery); - renderFlash("success", "Query updated!"); - } catch (updateError: any) { - console.error(updateError); - if (updateError.data.errors[0].reason.includes("Duplicate")) { - renderFlash("error", "A query with this name already exists."); - } else { - renderFlash( - "error", - "Something went wrong updating your query. Please try again." - ); - } - } - - setIsQueryUpdating(false); - - return false; - }; - - if (!currentUser) { - return null; - } - - // Function instead of constant eliminates race condition with filteredSoftwarePath - const backToQueriesPath = () => { - return filteredQueriesPath || PATHS.MANAGE_QUERIES; - }; - - return ( -
-
- -
- -
- ); -}; - -export default QueryEditor; diff --git a/frontend/pages/queries/QueryPage/screens/test.js b/frontend/pages/queries/QueryPage/screens/test.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx new file mode 100644 index 0000000000..be52bd6ad3 --- /dev/null +++ b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx @@ -0,0 +1,241 @@ +import React, { useContext, useEffect } from "react"; +import { useQuery } from "react-query"; +import { InjectedRouter, Params } from "react-router/lib/Router"; +import { useErrorHandler } from "react-error-boundary"; + +import PATHS from "router/paths"; +import { AppContext } from "context/app"; +import { QueryContext } from "context/query"; +import useTeamIdParam from "hooks/useTeamIdParam"; + +import { + IGetQueryResponse, + ISchedulableQuery, +} from "interfaces/schedulable_query"; + +import queryAPI from "services/entities/queries"; + +import Spinner from "components/Spinner/Spinner"; +import Button from "components/buttons/Button"; +import BackLink from "components/BackLink"; +import MainContent from "components/MainContent"; +import TooltipWrapper from "components/TooltipWrapper/TooltipWrapper"; +import QueryAutomationsStatusIndicator from "pages/queries/ManageQueriesPage/components/QueryAutomationsStatusIndicator/QueryAutomationsStatusIndicator"; +import DataError from "components/DataError/DataError"; +import LogDestinationIndicator from "components/LogDestinationIndicator/LogDestinationIndicator"; +import CachedDetails from "../components/CachedDetails/CachedDetails"; +import NoResults from "../components/NoResults/NoResults"; + +interface IQueryDetailsPageProps { + router: InjectedRouter; // v3 + params: Params; + location: { + pathname: string; + query: { team_id?: string }; + search: string; + }; +} + +const baseClass = "query-details-page"; + +const QueryDetailsPage = ({ + router, + params: { id: paramsQueryId }, + location, +}: IQueryDetailsPageProps): JSX.Element => { + const queryId = paramsQueryId ? parseInt(paramsQueryId, 10) : null; + + const { + currentTeamName: teamNameForQuery, + teamIdForApi: apiTeamIdForQuery, + } = useTeamIdParam({ + location, + router, + includeAllTeams: true, + includeNoTeam: false, + }); + + const handlePageError = useErrorHandler(); + const { + isGlobalAdmin, + isGlobalMaintainer, + isAnyTeamMaintainerOrTeamAdmin, + isObserverPlus, + isAnyTeamObserverPlus, + config, + filteredQueriesPath, + } = useContext(AppContext); + const { + lastEditedQueryName, + lastEditedQueryDescription, + lastEditedQueryObserverCanRun, + setLastEditedQueryId, + setLastEditedQueryName, + setLastEditedQueryDescription, + setLastEditedQueryBody, + setLastEditedQueryObserverCanRun, + setLastEditedQueryFrequency, + setLastEditedQueryLoggingType, + setLastEditedQueryMinOsqueryVersion, + setLastEditedQueryPlatforms, + } = useContext(QueryContext); + + // Title that shows up on browser tabs (e.g., Query details | Discover TLS certificates | Fleet for osquery) + document.title = `Query details | ${lastEditedQueryName} | Fleet for osquery`; + + // disabled on page load so we can control the number of renders + // else it will re-populate the context on occasion + const { + isLoading: isStoredQueryLoading, + data: storedQuery, + error: storedQueryError, + } = useQuery( + ["query", queryId], + () => queryAPI.load(queryId as number), + { + enabled: !!queryId, + refetchOnWindowFocus: false, + select: (data) => data.query, + onSuccess: (returnedQuery) => { + setLastEditedQueryId(returnedQuery.id); + setLastEditedQueryName(returnedQuery.name); + setLastEditedQueryDescription(returnedQuery.description); + setLastEditedQueryBody(returnedQuery.query); + setLastEditedQueryObserverCanRun(returnedQuery.observer_can_run); + setLastEditedQueryFrequency(returnedQuery.interval); + setLastEditedQueryPlatforms(returnedQuery.platform); + setLastEditedQueryLoggingType(returnedQuery.logging); + setLastEditedQueryMinOsqueryVersion(returnedQuery.min_osquery_version); + }, + onError: (error) => handlePageError(error), + } + ); + + const isLoading = isStoredQueryLoading; // TODO: Add || isCachedResultsLoading for new API response + const isApiError = storedQueryError || true; // TODO: Add || isCachedResultsError for new API response + + const renderHeader = () => { + const canEditQuery = + isGlobalAdmin || isGlobalMaintainer || isAnyTeamMaintainerOrTeamAdmin; + + // Function instead of constant eliminates race condition with filteredQueriesPath + const backToQueriesPath = () => { + return filteredQueriesPath || PATHS.MANAGE_QUERIES; + }; + + return ( + <> +
+ +
+ {!isLoading && !isApiError && ( +
+
+

+ {lastEditedQueryName} +

+

+ {lastEditedQueryDescription} +

+
+
+ + {(lastEditedQueryObserverCanRun || + isObserverPlus || + isAnyTeamObserverPlus || + canEditQuery) && ( +
+ +
+ )} +
+
+ )} + {!isLoading && !isApiError && ( +
+
+ + Automations: + + +
+
+ Log destination:{" "} + +
+
+ )} + + ); + }; + + const renderReport = () => { + const disabledCachingGlobally = true; // TODO: Update accordingly to config?.server_settings.query_reports_disabled + const discardDataEnabled = true; // TODO: Update accordingly to storedQuery?.discard_data + const loggingSnapshot = storedQuery?.logging === "snapshot"; + const disabledCaching = + disabledCachingGlobally || discardDataEnabled || !loggingSnapshot; + const emptyCache = true; // TODO: Update with API response + const errorsOnly = true; // TODO: Update with API response + + // Loading state + if (isLoading) { + return ; + } + + // Error state + if (isApiError) { + return ; + } + + // Empty state with varying messages explaining why there's no results + if (emptyCache) { + return ( + + ); + } + return ; // TODO: Everything related to new APIs including surfacing errorsOnly + }; + + return ( + +
+ {renderHeader()} + {renderReport()} +
+
+ ); +}; + +export default QueryDetailsPage; diff --git a/frontend/pages/queries/details/QueryDetailsPage/_styles.scss b/frontend/pages/queries/details/QueryDetailsPage/_styles.scss new file mode 100644 index 0000000000..9b0a5a0a25 --- /dev/null +++ b/frontend/pages/queries/details/QueryDetailsPage/_styles.scss @@ -0,0 +1,65 @@ +.query-details-page { + &__title-bar { + display: flex; + justify-content: space-between; + margin-top: $pad-large; + + .name-description { + display: flex; + flex-direction: column; + gap: $pad-small; + } + } + + &__action-button-container { + display: flex; + justify-content: flex-end; + min-width: 266px; + gap: $pad-medium; + } + + &__query-name { + margin-top: 0; + font-size: $large; + } + + &__query-description { + margin-top: 0; + margin-bottom: $pad-small; + font-size: $x-small; + } + + &__settings { + display: flex; + gap: $pad-large; + font-size: $x-small; + } + + &__automations, + &__log-destination { + display: flex; + gap: $pad-small; + } + + .empty-table__inner { + .component__tooltip-wrapper__tip-text { + text-align: left; + width: 320px; + } + + ul { + color: $core-white; + + li { + &::before { + content: "•"; + color: $core-white; + } + } + } + } + + .data-error { + padding-top: $pad-xxxlarge; + } +} diff --git a/frontend/pages/queries/details/QueryDetailsPage/index.ts b/frontend/pages/queries/details/QueryDetailsPage/index.ts new file mode 100644 index 0000000000..9bb526e7b5 --- /dev/null +++ b/frontend/pages/queries/details/QueryDetailsPage/index.ts @@ -0,0 +1 @@ +export { default } from "./QueryDetailsPage"; diff --git a/frontend/pages/queries/details/components/CachedDetails/CachedDetails.tsx b/frontend/pages/queries/details/components/CachedDetails/CachedDetails.tsx new file mode 100644 index 0000000000..ab5255e3f0 --- /dev/null +++ b/frontend/pages/queries/details/components/CachedDetails/CachedDetails.tsx @@ -0,0 +1,14 @@ +import React from "react"; + +// TODO: This whole section +// interface ICachedDetailsProps { +// +// } + +const baseClass = "cached-details"; + +const CachedDetails = (): JSX.Element => { + return
TODO
; +}; + +export default CachedDetails; diff --git a/frontend/pages/queries/details/components/CachedDetails/index.ts b/frontend/pages/queries/details/components/CachedDetails/index.ts new file mode 100644 index 0000000000..b50b73552b --- /dev/null +++ b/frontend/pages/queries/details/components/CachedDetails/index.ts @@ -0,0 +1 @@ +export { default } from "./CachedDetails"; diff --git a/frontend/pages/queries/details/components/NoResults/NoResults.tsx b/frontend/pages/queries/details/components/NoResults/NoResults.tsx new file mode 100644 index 0000000000..7897facb23 --- /dev/null +++ b/frontend/pages/queries/details/components/NoResults/NoResults.tsx @@ -0,0 +1,116 @@ +import React from "react"; + +import differenceInSeconds from "date-fns/differenceInSeconds"; +import formatDistance from "date-fns/formatDistance"; +import add from "date-fns/add"; + +import TooltipWrapper from "components/TooltipWrapper/TooltipWrapper"; +import EmptyTable from "components/EmptyTable/EmptyTable"; + +interface INoResultsProps { + queryInterval?: number; + queryUpdatedAt?: string; + disabledCaching: boolean; + disabledCachingGlobally: boolean; + discardDataEnabled: boolean; + loggingSnapshot: boolean; + errorsOnly: boolean; +} + +const baseClass = "no-results"; + +const NoResults = ({ + queryInterval, + queryUpdatedAt, + disabledCaching, + disabledCachingGlobally, + discardDataEnabled, + loggingSnapshot, + errorsOnly, +}: INoResultsProps): JSX.Element => { + // Returns how many seconds it takes to expect a cached update + const secondsCheckbackTime = () => { + const secondsSinceUpdate = queryUpdatedAt + ? differenceInSeconds(new Date(), new Date(queryUpdatedAt)) + : 0; + const secondsUpdateWaittime = (queryInterval || 0) + 60; + return secondsUpdateWaittime - secondsSinceUpdate; + }; + + // Update status of collecting cached results + const collectingResults = secondsCheckbackTime() > 0; + + // Converts seconds takes to update to human readable format + const readableCheckbackTime = formatDistance( + add(new Date(), { seconds: secondsCheckbackTime() }), + new Date() + ); + + // Collecting results state + if (collectingResults) { + const collectingResultsInfo = () => + `Fleet is collecting query results. Check back in about ${readableCheckbackTime}.`; + + return ( + + ); + } + + const noResultsInfo = () => { + if (!queryInterval) { + return ( + <> + This query does not collect data on a schedule. Add a{" "} + frequency or run this as a live query to see results. + + ); + } + if (disabledCaching) { + const tipContent = () => { + if (disabledCachingGlobally) { + return "The following setting prevents saving this query's results in Fleet:
  • Query reports are globally disabled in organization settings.
"; + } + if (discardDataEnabled) { + return "The following setting prevents saving this query's results in Fleet:
  • This query has Discard data enabled.
"; + } + if (!loggingSnapshot) { + return "The following setting prevents saving this query's results in Fleet:
  • The logging setting for this query is not Snapshot.
"; + } + return "Unknown"; + }; + return ( + <> + Results from this query are{" "} + + not reported in Fleet + + . + + ); + } + if (errorsOnly) { + return ( + <> + This query had trouble collecting data on some hosts. Check out the{" "} + Errors tab to see why. + + ); + } + return "This query has returned no data so far."; + }; + + return ( + + ); +}; + +export default NoResults; diff --git a/frontend/pages/queries/details/components/NoResults/index.ts b/frontend/pages/queries/details/components/NoResults/index.ts new file mode 100644 index 0000000000..04bef19e77 --- /dev/null +++ b/frontend/pages/queries/details/components/NoResults/index.ts @@ -0,0 +1 @@ +export { default } from "./NoResults"; diff --git a/frontend/pages/queries/QueryPage/QueryPage.tsx b/frontend/pages/queries/edit/EditQueryPage/EditQueryPage.tsx similarity index 54% rename from frontend/pages/queries/QueryPage/QueryPage.tsx rename to frontend/pages/queries/edit/EditQueryPage/EditQueryPage.tsx index ca93efe3d4..e9aa57dce9 100644 --- a/frontend/pages/queries/QueryPage/QueryPage.tsx +++ b/frontend/pages/queries/edit/EditQueryPage/EditQueryPage.tsx @@ -1,34 +1,36 @@ -import React, { useState, useEffect, useContext, useCallback } from "react"; -import { useQuery, useMutation } from "react-query"; +import React, { useState, useEffect, useContext } from "react"; +import { useQuery } from "react-query"; import { useErrorHandler } from "react-error-boundary"; import { InjectedRouter, Params } from "react-router/lib/Router"; import { AppContext } from "context/app"; import { QueryContext } from "context/query"; -import { QUERIES_PAGE_STEPS, DEFAULT_QUERY } from "utilities/constants"; +import { DEFAULT_QUERY } from "utilities/constants"; import queryAPI from "services/entities/queries"; -import hostAPI from "services/entities/hosts"; import statusAPI from "services/entities/status"; -import { IHost, IHostResponse } from "interfaces/host"; -import { ILabel } from "interfaces/label"; -import { ITeam } from "interfaces/team"; import { IGetQueryResponse, + ICreateQueryRequestBody, ISchedulableQuery, } from "interfaces/schedulable_query"; -import { ITarget } from "interfaces/target"; import QuerySidePanel from "components/side_panels/QuerySidePanel"; import MainContent from "components/MainContent"; import SidePanelContent from "components/SidePanelContent"; -import SelectTargets from "components/LiveQuery/SelectTargets"; import CustomLink from "components/CustomLink"; -import QueryEditor from "pages/queries/QueryPage/screens/QueryEditor"; -import RunQuery from "pages/queries/QueryPage/screens/RunQuery"; import useTeamIdParam from "hooks/useTeamIdParam"; -interface IQueryPageProps { +import { NotificationContext } from "context/notification"; + +import PATHS from "router/paths"; +import debounce from "utilities/debounce"; +import deepDifference from "utilities/deep_difference"; + +import BackLink from "components/BackLink"; +import QueryForm from "pages/queries/edit/components/QueryForm"; + +interface IEditQueryPageProps { router: InjectedRouter; params: Params; location: { @@ -38,13 +40,13 @@ interface IQueryPageProps { }; } -const baseClass = "query-page"; +const baseClass = "edit-query-page"; -const QueryPage = ({ +const EditQueryPage = ({ router, params: { id: paramsQueryId }, location, -}: IQueryPageProps): JSX.Element => { +}: IEditQueryPageProps): JSX.Element => { const queryId = paramsQueryId ? parseInt(paramsQueryId, 10) : null; const { currentTeamName: teamNameForQuery, @@ -67,6 +69,15 @@ const QueryPage = ({ const { selectedOsqueryTable, setSelectedOsqueryTable, + lastEditedQueryName, + lastEditedQueryDescription, + lastEditedQueryBody, + lastEditedQueryObserverCanRun, + lastEditedQueryFrequency, + lastEditedQueryPlatforms, + lastEditedQueryLoggingType, + lastEditedQueryMinOsqueryVersion, + selectedQueryTargets, setLastEditedQueryId, setLastEditedQueryName, setLastEditedQueryDescription, @@ -76,15 +87,14 @@ const QueryPage = ({ setLastEditedQueryLoggingType, setLastEditedQueryMinOsqueryVersion, setLastEditedQueryPlatforms, + // setSelectedQueryTargets, } = useContext(QueryContext); + const { currentUser } = useContext(AppContext); + const { renderFlash } = useContext(NotificationContext); + + // const [queryParamHostsAdded, setQueryParamHostsAdded] = useState(false); + // const [targetedHosts, setTargetedHosts] = useState([]); - const [queryParamHostsAdded, setQueryParamHostsAdded] = useState(false); - const [step, setStep] = useState(QUERIES_PAGE_STEPS[1]); - const [selectedTargets, setSelectedTargets] = useState([]); - const [targetedHosts, setTargetedHosts] = useState([]); - const [targetedLabels, setTargetedLabels] = useState([]); - const [targetedTeams, setTargetedTeams] = useState([]); - const [targetsTotalCount, setTargetsTotalCount] = useState(0); const [isLiveQueryRunnable, setIsLiveQueryRunnable] = useState(true); const [isSidebarOpen, setIsSidebarOpen] = useState(true); const [showOpenSchemaActionText, setShowOpenSchemaActionText] = useState( @@ -119,29 +129,6 @@ const QueryPage = ({ } ); - useQuery( - "hostFromURL", - () => - hostAPI.loadHostDetails(parseInt(location.query.host_ids as string, 10)), - { - enabled: !!location.query.host_ids && !queryParamHostsAdded, - select: (data: IHostResponse) => data.host, - onSuccess: (host) => { - setTargetedHosts((prevHosts) => - prevHosts.filter((h) => h.id !== host.id).concat(host) - ); - const targets = selectedTargets; - host.target_type = "hosts"; - targets.push(host); - setSelectedTargets([...targets]); - if (!queryParamHostsAdded) { - setQueryParamHostsAdded(true); - } - router.replace(location.pathname); - }, - } - ); - const detectIsFleetQueryRunnable = () => { statusAPI.live_query().catch(() => { setIsLiveQueryRunnable(false); @@ -163,16 +150,88 @@ const QueryPage = ({ } }, [queryId]); + const [isQuerySaving, setIsQuerySaving] = useState(false); + const [isQueryUpdating, setIsQueryUpdating] = useState(false); + const [backendValidators, setBackendValidators] = useState<{ + [key: string]: string; + }>({}); + // Updates title that shows up on browser tabs useEffect(() => { // e.g., Query details | Discover TLS certificates | Fleet for osquery - document.title = `Query details | ${storedQuery?.name} | Fleet for osquery`; + document.title = `Edit query | ${storedQuery?.name} | Fleet for osquery`; }, [location.pathname, storedQuery?.name]); useEffect(() => { setShowOpenSchemaActionText(!isSidebarOpen); }, [isSidebarOpen]); + const saveQuery = debounce(async (formData: ICreateQueryRequestBody) => { + setIsQuerySaving(true); + try { + const { query } = await queryAPI.create(formData); + router.push(PATHS.EDIT_QUERY(query.id)); + renderFlash("success", "Query created!"); + setBackendValidators({}); + } catch (createError: any) { + if (createError.data.errors[0].reason.includes("already exists")) { + const teamErrorText = + teamNameForQuery && apiTeamIdForQuery !== 0 + ? `the ${teamNameForQuery} team` + : "all teams"; + setBackendValidators({ + name: `A query with that name already exists for ${teamErrorText}.`, + }); + } else { + renderFlash( + "error", + "Something went wrong creating your query. Please try again." + ); + setBackendValidators({}); + } + } finally { + setIsQuerySaving(false); + } + }); + + const onUpdateQuery = async (formData: ICreateQueryRequestBody) => { + if (!queryId) { + return false; + } + + setIsQueryUpdating(true); + + const updatedQuery = deepDifference(formData, { + lastEditedQueryName, + lastEditedQueryDescription, + lastEditedQueryBody, + lastEditedQueryObserverCanRun, + lastEditedQueryFrequency, + lastEditedQueryPlatforms, + lastEditedQueryLoggingType, + lastEditedQueryMinOsqueryVersion, + }); + + try { + await queryAPI.update(queryId, updatedQuery); + renderFlash("success", "Query updated!"); + } catch (updateError: any) { + console.error(updateError); + if (updateError.data.errors[0].reason.includes("Duplicate")) { + renderFlash("error", "A query with this name already exists."); + } else { + renderFlash( + "error", + "Something went wrong updating your query. Please try again." + ); + } + } + + setIsQueryUpdating(false); + + return false; + }; + const onOsqueryTableSelect = (tableName: string) => { setSelectedOsqueryTable(tableName); }; @@ -207,64 +266,12 @@ const QueryPage = ({ ); }; - const goToQueryEditor = useCallback(() => setStep(QUERIES_PAGE_STEPS[1]), []); - - const renderScreen = () => { - const step1Props = { - router, - baseClass, - queryIdForEdit: queryId, - teamNameForQuery, - apiTeamIdForQuery, - showOpenSchemaActionText, - storedQuery, - isStoredQueryLoading, - storedQueryError, - onOsqueryTableSelect, - goToSelectTargets: () => setStep(QUERIES_PAGE_STEPS[2]), - onOpenSchemaSidebar, - renderLiveQueryWarning, - }; - - const step2Props = { - baseClass, - queryId, - selectedTargets, - targetedHosts, - targetedLabels, - targetedTeams, - targetsTotalCount, - goToQueryEditor: () => setStep(QUERIES_PAGE_STEPS[1]), - goToRunQuery: () => setStep(QUERIES_PAGE_STEPS[3]), - setSelectedTargets, - setTargetedHosts, - setTargetedLabels, - setTargetedTeams, - setTargetsTotalCount, - }; - - const step3Props = { - queryId, - selectedTargets, - storedQuery, - setSelectedTargets, - goToQueryEditor, - targetsTotalCount, - }; - - switch (step) { - case QUERIES_PAGE_STEPS[2]: - return ; - case QUERIES_PAGE_STEPS[3]: - return ; - default: - return ; - } + // Function instead of constant eliminates race condition + const backToQueriesPath = () => { + return queryId ? PATHS.QUERY(queryId) : PATHS.MANAGE_QUERIES; }; - const isFirstStep = step === QUERIES_PAGE_STEPS[1]; const showSidebar = - isFirstStep && isSidebarOpen && (isGlobalAdmin || isGlobalMaintainer || @@ -275,7 +282,31 @@ const QueryPage = ({ return ( <> -
{renderScreen()}
+
+
+
+ +
+ +
+
{showSidebar && ( @@ -290,4 +321,4 @@ const QueryPage = ({ ); }; -export default QueryPage; +export default EditQueryPage; diff --git a/frontend/pages/queries/edit/EditQueryPage/_styles.scss b/frontend/pages/queries/edit/EditQueryPage/_styles.scss new file mode 100644 index 0000000000..f4ffcbbfd2 --- /dev/null +++ b/frontend/pages/queries/edit/EditQueryPage/_styles.scss @@ -0,0 +1,54 @@ +.edit-query-page { + .body-wrap { + min-width: 0; + } + + &__warning { + padding: $pad-medium; + font-size: $x-small; + color: $core-fleet-black; + background-color: #fff0b9; + border: 1px solid #f2c94c; + border-radius: $border-radius; + margin: 0; + margin-top: $pad-large; + + p { + margin: 0; + line-height: 20px; + } + } + + .ace_content { + min-height: 500px !important; + } + + &__count-spinner { + margin-right: $pad-small; + } + &__page-loading { + .loading-spinner { + margin: $pad-large 0 0; + } + } + &__page-error { + h4 { + margin: 0; + margin-top: 28px; + margin-left: -7px; + font-size: $small; + + img { + transform: scale(0.5); + vertical-align: middle; + position: relative; + top: -2px; + } + } + p { + margin: 0; + margin-top: $pad-medium; + font-size: $x-small; + } + } +} diff --git a/frontend/pages/queries/edit/EditQueryPage/index.ts b/frontend/pages/queries/edit/EditQueryPage/index.ts new file mode 100644 index 0000000000..29c0d100ac --- /dev/null +++ b/frontend/pages/queries/edit/EditQueryPage/index.ts @@ -0,0 +1 @@ +export { default } from "./EditQueryPage"; diff --git a/frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tests.tsx b/frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx similarity index 98% rename from frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tests.tsx rename to frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx index 87bc29c8fd..bb5286895f 100644 --- a/frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tests.tsx +++ b/frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx @@ -68,7 +68,6 @@ describe("QueryForm - component", () => { isQueryUpdating={false} saveQuery={jest.fn()} onOsqueryTableSelect={jest.fn()} - goToSelectTargets={jest.fn()} onUpdate={jest.fn()} onOpenSchemaSidebar={jest.fn()} renderLiveQueryWarning={jest.fn()} diff --git a/frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tsx b/frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx similarity index 95% rename from frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tsx rename to frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx index 452e06d4ee..a704ee2ef8 100644 --- a/frontend/pages/queries/QueryPage/components/QueryForm/QueryForm.tsx +++ b/frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx @@ -15,7 +15,11 @@ import PATHS from "router/paths"; import { AppContext } from "context/app"; import { QueryContext } from "context/query"; import { NotificationContext } from "context/notification"; -import { addGravatarUrlToResource, secondsToDhms } from "utilities/helpers"; +import { + addGravatarUrlToResource, + secondsToDhms, + TAGGED_TEMPLATES, +} from "utilities/helpers"; import { FREQUENCY_DROPDOWN_OPTIONS, SCHEDULE_PLATFORM_DROPDOWN_OPTIONS, @@ -48,6 +52,7 @@ import Spinner from "components/Spinner"; import Icon from "components/Icon/Icon"; import AutoSizeInputField from "components/forms/fields/AutoSizeInputField"; import SaveQueryModal from "../SaveQueryModal"; +import SaveChangesModal from "../SaveChangesModal"; const baseClass = "query-form"; @@ -63,11 +68,11 @@ interface IQueryFormProps { isQueryUpdating: boolean; saveQuery: (formData: ICreateQueryRequestBody) => void; onOsqueryTableSelect: (tableName: string) => void; - goToSelectTargets: () => void; onUpdate: (formData: ICreateQueryRequestBody) => void; onOpenSchemaSidebar: () => void; renderLiveQueryWarning: () => JSX.Element | null; backendValidators: { [key: string]: string }; + hostId?: number; } const validateQuerySQL = (query: string) => { @@ -110,11 +115,11 @@ const QueryForm = ({ isQueryUpdating, saveQuery, onOsqueryTableSelect, - goToSelectTargets, onUpdate, onOpenSchemaSidebar, renderLiveQueryWarning, backendValidators, + hostId, }: IQueryFormProps): JSX.Element => { // Note: The QueryContext values should always be used for any mutable query data such as query name // The storedQuery prop should only be used to access immutable metadata such as author id @@ -153,6 +158,7 @@ const QueryForm = ({ const savedQueryMode = !!queryIdForEdit; const [errors, setErrors] = useState<{ [key: string]: any }>({}); // string | null | undefined or boolean | undefined const [showSaveQueryModal, setShowSaveQueryModal] = useState(false); + const [showSaveChangesModal, setShowSaveChangesModal] = useState(false); // #7766 implementation const [showQueryEditor, setShowQueryEditor] = useState( isObserverPlus || isAnyTeamObserverPlus || false ); @@ -205,6 +211,11 @@ const QueryForm = ({ setShowSaveQueryModal(!showSaveQueryModal); }; + // #7766 implementation + const toggleSaveChangesModal = () => { + setShowSaveChangesModal(!showSaveChangesModal); + }; + const onLoad = (editor: IAceEditor) => { editor.setOptions({ enableLinking: true, @@ -400,6 +411,12 @@ const QueryForm = ({ logging: lastEditedQueryLoggingType, }); } + + // #7766 implementation + // savedQueryMode + // ? setShowSaveChangesModal(true) + // : setShowSaveQueryModal(true); + // TODO: onUpdate for saveChangesModal } }; @@ -575,7 +592,13 @@ const QueryForm = ({ @@ -749,7 +772,13 @@ const QueryForm = ({ @@ -765,6 +794,13 @@ const QueryForm = ({ isLoading={isQuerySaving} /> )} + {showSaveChangesModal && ( + + )} ); }; diff --git a/frontend/pages/queries/QueryPage/components/QueryForm/_styles.scss b/frontend/pages/queries/edit/components/QueryForm/_styles.scss similarity index 98% rename from frontend/pages/queries/QueryPage/components/QueryForm/_styles.scss rename to frontend/pages/queries/edit/components/QueryForm/_styles.scss index 5a9ab0d49f..bc63146bac 100644 --- a/frontend/pages/queries/QueryPage/components/QueryForm/_styles.scss +++ b/frontend/pages/queries/edit/components/QueryForm/_styles.scss @@ -3,11 +3,6 @@ position: relative; font-size: $x-small; - .query-page__warning { - margin: 0; - margin-top: $pad-large; - } - .form-field--input { margin: 0; } diff --git a/frontend/pages/queries/QueryPage/components/QueryForm/index.ts b/frontend/pages/queries/edit/components/QueryForm/index.ts similarity index 100% rename from frontend/pages/queries/QueryPage/components/QueryForm/index.ts rename to frontend/pages/queries/edit/components/QueryForm/index.ts diff --git a/frontend/pages/queries/QueryPage/components/QueryResults/QueryResults.tsx b/frontend/pages/queries/edit/components/QueryResults/QueryResults.tsx similarity index 100% rename from frontend/pages/queries/QueryPage/components/QueryResults/QueryResults.tsx rename to frontend/pages/queries/edit/components/QueryResults/QueryResults.tsx diff --git a/frontend/pages/queries/QueryPage/components/QueryResults/QueryResultsTableConfig.tsx b/frontend/pages/queries/edit/components/QueryResults/QueryResultsTableConfig.tsx similarity index 100% rename from frontend/pages/queries/QueryPage/components/QueryResults/QueryResultsTableConfig.tsx rename to frontend/pages/queries/edit/components/QueryResults/QueryResultsTableConfig.tsx diff --git a/frontend/pages/queries/QueryPage/components/QueryResults/_styles.scss b/frontend/pages/queries/edit/components/QueryResults/_styles.scss similarity index 100% rename from frontend/pages/queries/QueryPage/components/QueryResults/_styles.scss rename to frontend/pages/queries/edit/components/QueryResults/_styles.scss diff --git a/frontend/pages/queries/QueryPage/components/QueryResults/index.ts b/frontend/pages/queries/edit/components/QueryResults/index.ts similarity index 100% rename from frontend/pages/queries/QueryPage/components/QueryResults/index.ts rename to frontend/pages/queries/edit/components/QueryResults/index.ts diff --git a/frontend/pages/queries/edit/components/SaveChangesModal/SaveChangesModal.tsx b/frontend/pages/queries/edit/components/SaveChangesModal/SaveChangesModal.tsx new file mode 100644 index 0000000000..362af3918d --- /dev/null +++ b/frontend/pages/queries/edit/components/SaveChangesModal/SaveChangesModal.tsx @@ -0,0 +1,53 @@ +import React from "react"; + +import Button from "components/buttons/Button"; +import Modal from "components/Modal"; +import { ICreateQueryRequestBody } from "interfaces/schedulable_query"; + +const baseClass = "save-changes-modal"; + +export interface ISaveChangesModalProps { + isUpdating: boolean; + onSaveChanges: (formData: ICreateQueryRequestBody) => void; + toggleSaveChangesModal: () => void; + sqlUpdated?: boolean; +} + +const SaveChangesModal = ({ + isUpdating, + onSaveChanges, + toggleSaveChangesModal, + sqlUpdated = false, +}: ISaveChangesModalProps): JSX.Element => { + const warningText = () => { + if (sqlUpdated) { + return "Changing this query's SQL will delete its previous results, since the existing report does not reflect the updated query."; + } + return "The changes you are making to this query will delete its previous results."; + }; + + return ( + +
+

{warningText()}

+

You cannot undo this action.

+
+ + +
+
+
+ ); +}; + +export default SaveChangesModal; diff --git a/frontend/pages/queries/edit/components/SaveChangesModal/index.ts b/frontend/pages/queries/edit/components/SaveChangesModal/index.ts new file mode 100644 index 0000000000..15fa4a05cf --- /dev/null +++ b/frontend/pages/queries/edit/components/SaveChangesModal/index.ts @@ -0,0 +1 @@ +export { default } from "./SaveChangesModal"; diff --git a/frontend/pages/queries/QueryPage/components/SaveQueryModal/SaveQueryModal.tsx b/frontend/pages/queries/edit/components/SaveQueryModal/SaveQueryModal.tsx similarity index 51% rename from frontend/pages/queries/QueryPage/components/SaveQueryModal/SaveQueryModal.tsx rename to frontend/pages/queries/edit/components/SaveQueryModal/SaveQueryModal.tsx index f74a45f66c..a8cd8dc099 100644 --- a/frontend/pages/queries/QueryPage/components/SaveQueryModal/SaveQueryModal.tsx +++ b/frontend/pages/queries/edit/components/SaveQueryModal/SaveQueryModal.tsx @@ -141,116 +141,114 @@ const SaveQueryModal = ({ return ( - <> -
+ setName(value)} + value={name} + error={errors.name} + inputClassName={`${baseClass}__name`} + label="Name" + placeholder="What is your query called?" + autofocus + ignore1password + /> + setDescription(value)} + value={description} + inputClassName={`${baseClass}__description`} + label="Description" + type="textarea" + placeholder="What information does your query reveal? (optional)" + /> + { + setSelectedFrequency(value); + }} + placeholder={"Every hour"} + value={selectedFrequency} + label="Frequency" + wrapperClassName={`${baseClass}__form-field ${baseClass}__form-field--frequency`} + /> +

+ If automations are on, this is how often your query collects data. +

+ - setName(value)} - value={name} - error={errors.name} - inputClassName={`${baseClass}__name`} - label="Name" - placeholder="What is your query called?" - autofocus - ignore1password - /> - setDescription(value)} - value={description} - inputClassName={`${baseClass}__description`} - label="Description" - type="textarea" - placeholder="What information does your query reveal? (optional)" - /> - { - setSelectedFrequency(value); - }} - placeholder={"Every hour"} - value={selectedFrequency} - label="Frequency" - wrapperClassName={`${baseClass}__form-field ${baseClass}__form-field--frequency`} - /> -

- If automations are on, this is how often your query collects data. -

- +

+ Users with the Observer role will be able to run this query as a live + query. +

+ + {showAdvancedOptions && ( + <> + +

+ If automations are turned on, your query collects data on + compatible platforms. +
+ If you want more control, override platforms. +

+ + + + )} +
+ - -
- - + Save + + + +
); }; diff --git a/frontend/pages/queries/QueryPage/components/SaveQueryModal/_styles.scss b/frontend/pages/queries/edit/components/SaveQueryModal/_styles.scss similarity index 100% rename from frontend/pages/queries/QueryPage/components/SaveQueryModal/_styles.scss rename to frontend/pages/queries/edit/components/SaveQueryModal/_styles.scss diff --git a/frontend/pages/queries/QueryPage/components/SaveQueryModal/index.ts b/frontend/pages/queries/edit/components/SaveQueryModal/index.ts similarity index 100% rename from frontend/pages/queries/QueryPage/components/SaveQueryModal/index.ts rename to frontend/pages/queries/edit/components/SaveQueryModal/index.ts diff --git a/frontend/pages/queries/live/LiveQueryPage/LiveQueryPage.tsx b/frontend/pages/queries/live/LiveQueryPage/LiveQueryPage.tsx new file mode 100644 index 0000000000..c49d4c333b --- /dev/null +++ b/frontend/pages/queries/live/LiveQueryPage/LiveQueryPage.tsx @@ -0,0 +1,213 @@ +import React, { useState, useEffect, useContext, useCallback } from "react"; +import { useQuery } from "react-query"; +import { useErrorHandler } from "react-error-boundary"; +import { InjectedRouter, Params } from "react-router/lib/Router"; +import PATHS from "router/paths"; + +import { AppContext } from "context/app"; +import { QueryContext } from "context/query"; +import { LIVE_QUERY_STEPS, DEFAULT_QUERY } from "utilities/constants"; +import queryAPI from "services/entities/queries"; +import hostAPI from "services/entities/hosts"; +import statusAPI from "services/entities/status"; +import { IHost, IHostResponse } from "interfaces/host"; +import { ILabel } from "interfaces/label"; +import { ITeam } from "interfaces/team"; +import { + IGetQueryResponse, + ISchedulableQuery, +} from "interfaces/schedulable_query"; + +import MainContent from "components/MainContent"; +import SelectTargets from "components/LiveQuery/SelectTargets"; + +import RunQuery from "pages/queries/live/screens/RunQuery"; +import useTeamIdParam from "hooks/useTeamIdParam"; + +interface IRunQueryPageProps { + router: InjectedRouter; + params: Params; + location: { + pathname: string; + query: { host_ids: string; team_id?: string }; + search: string; + }; +} + +const baseClass = "run-query-page"; + +const RunQueryPage = ({ + router, + params: { id: paramsQueryId }, + location, +}: IRunQueryPageProps): JSX.Element => { + const queryId = paramsQueryId ? parseInt(paramsQueryId, 10) : null; + const { + currentTeamName: teamNameForQuery, + teamIdForApi: apiTeamIdForQuery, + } = useTeamIdParam({ + location, + router, + includeAllTeams: true, + includeNoTeam: false, + }); + + const handlePageError = useErrorHandler(); + const { + isGlobalAdmin, + isGlobalMaintainer, + isAnyTeamMaintainerOrTeamAdmin, + isObserverPlus, + isAnyTeamObserverPlus, + } = useContext(AppContext); + const { + selectedQueryTargets, + setSelectedQueryTargets, + setLastEditedQueryId, + setLastEditedQueryName, + setLastEditedQueryDescription, + setLastEditedQueryBody, + setLastEditedQueryObserverCanRun, + setLastEditedQueryFrequency, + setLastEditedQueryLoggingType, + setLastEditedQueryMinOsqueryVersion, + setLastEditedQueryPlatforms, + } = useContext(QueryContext); + + const [queryParamHostsAdded, setQueryParamHostsAdded] = useState(false); + const [step, setStep] = useState(LIVE_QUERY_STEPS[1]); + const [targetedHosts, setTargetedHosts] = useState([]); + const [targetedLabels, setTargetedLabels] = useState([]); + const [targetedTeams, setTargetedTeams] = useState([]); + const [targetsTotalCount, setTargetsTotalCount] = useState(0); + const [isLiveQueryRunnable, setIsLiveQueryRunnable] = useState(true); + + const TAGGED_TEMPLATES = { + queryByHostRoute: (hostId: number | undefined | null) => { + return `${hostId ? `?host_ids=${hostId}` : ""}`; + }, + }; + + // disabled on page load so we can control the number of renders + // else it will re-populate the context on occasion + const { data: storedQuery } = useQuery< + IGetQueryResponse, + Error, + ISchedulableQuery + >(["query", queryId], () => queryAPI.load(queryId as number), { + enabled: !!queryId, + refetchOnWindowFocus: false, + select: (data) => data.query, + onSuccess: (returnedQuery) => { + setLastEditedQueryId(returnedQuery.id); + setLastEditedQueryName(returnedQuery.name); + setLastEditedQueryDescription(returnedQuery.description); + setLastEditedQueryBody(returnedQuery.query); + setLastEditedQueryObserverCanRun(returnedQuery.observer_can_run); + setLastEditedQueryFrequency(returnedQuery.interval); + setLastEditedQueryPlatforms(returnedQuery.platform); + setLastEditedQueryLoggingType(returnedQuery.logging); + setLastEditedQueryMinOsqueryVersion(returnedQuery.min_osquery_version); + }, + onError: (error) => handlePageError(error), + }); + + useQuery( + "hostFromURL", + () => + hostAPI.loadHostDetails(parseInt(location.query.host_ids as string, 10)), + { + enabled: !!location.query.host_ids && !queryParamHostsAdded, + select: (data: IHostResponse) => data.host, + onSuccess: (host) => { + setTargetedHosts((prevHosts) => + prevHosts.filter((h) => h.id !== host.id).concat(host) + ); + const targets = selectedQueryTargets; + host.target_type = "hosts"; + targets.push(host); + setSelectedQueryTargets([...targets]); + if (!queryParamHostsAdded) { + setQueryParamHostsAdded(true); + } + router.replace(location.pathname); + }, + } + ); + + const detectIsFleetQueryRunnable = () => { + statusAPI.live_query().catch(() => { + setIsLiveQueryRunnable(false); + }); + }; + + useEffect(() => { + detectIsFleetQueryRunnable(); + if (!queryId) { + setLastEditedQueryId(DEFAULT_QUERY.id); + setLastEditedQueryName(DEFAULT_QUERY.name); + setLastEditedQueryDescription(DEFAULT_QUERY.description); + setLastEditedQueryBody(DEFAULT_QUERY.query); + setLastEditedQueryObserverCanRun(DEFAULT_QUERY.observer_can_run); + setLastEditedQueryFrequency(DEFAULT_QUERY.interval); + setLastEditedQueryLoggingType(DEFAULT_QUERY.logging); + setLastEditedQueryMinOsqueryVersion(DEFAULT_QUERY.min_osquery_version); + setLastEditedQueryPlatforms(DEFAULT_QUERY.platform); + } + }, [queryId]); + + // Updates title that shows up on browser tabs + useEffect(() => { + // e.g., Run live query | Discover TLS certificates | Fleet for osquery + document.title = `Run live query | ${storedQuery?.name} | Fleet for osquery`; + }, [location.pathname, storedQuery?.name]); + + const goToQueryEditor = useCallback( + () => queryId && router.push(PATHS.EDIT_QUERY(queryId)), + [] + ); + // const params = { id: paramsQueryId }; + + const renderScreen = () => { + const step1Props = { + baseClass, + queryId, + selectedTargets: selectedQueryTargets, + targetedHosts, + targetedLabels, + targetedTeams, + targetsTotalCount, + goToQueryEditor, + goToRunQuery: () => setStep(LIVE_QUERY_STEPS[2]), + setSelectedTargets: setSelectedQueryTargets, + setTargetedHosts, + setTargetedLabels, + setTargetedTeams, + setTargetsTotalCount, + }; + + const step2Props = { + queryId, + selectedTargets: selectedQueryTargets, + storedQuery, + setSelectedTargets: setSelectedQueryTargets, + goToQueryEditor, + targetsTotalCount, + }; + + switch (step) { + case LIVE_QUERY_STEPS[2]: + return ; + default: + return ; + } + }; + + return ( + +
{renderScreen()}
+
+ ); +}; + +export default RunQueryPage; diff --git a/frontend/pages/queries/QueryPage/_styles.scss b/frontend/pages/queries/live/LiveQueryPage/_styles.scss similarity index 69% rename from frontend/pages/queries/QueryPage/_styles.scss rename to frontend/pages/queries/live/LiveQueryPage/_styles.scss index 8e1198b7f8..1ec2385d09 100644 --- a/frontend/pages/queries/QueryPage/_styles.scss +++ b/frontend/pages/queries/live/LiveQueryPage/_styles.scss @@ -1,4 +1,4 @@ -.query-page { +.run-query-page { .body-wrap { min-width: 0; } @@ -9,61 +9,6 @@ min-height: 400px; } - &__warning { - padding: $pad-medium; - font-size: $x-small; - color: $core-fleet-black; - background-color: #fff0b9; - border: 1px solid #f2c94c; - border-radius: $border-radius; - - p { - margin: 0; - line-height: 20px; - } - } - - &__observer-query-view { - width: 90%; - max-width: 1060px; - margin: 0 auto; - color: $core-fleet-black; - - h1 { - font-size: $medium; - } - p { - font-size: $x-small; - } - } - - &__observer-query-details { - padding: 0 2rem; - - h1 { - margin: $pad-large 0; - font-size: $large; - } - - p { - margin-bottom: $pad-small; - } - - .sql-button { - color: $core-vibrant-blue; - font-weight: $bold; - font-size: $x-small; - } - } - - &__query-preview { - margin-top: 15px; - - .fleet-ace__label { - display: none; - } - } - .ace_content { min-height: 500px !important; } @@ -172,10 +117,4 @@ font-size: $x-small; } } - - .targets-input { - .input-icon-field__icon { - top: 34px; // Override styling to include label header - } - } } diff --git a/frontend/pages/queries/live/LiveQueryPage/index.ts b/frontend/pages/queries/live/LiveQueryPage/index.ts new file mode 100644 index 0000000000..354c0445d1 --- /dev/null +++ b/frontend/pages/queries/live/LiveQueryPage/index.ts @@ -0,0 +1 @@ +export { default } from "./LiveQueryPage"; diff --git a/frontend/pages/queries/QueryPage/screens/RunQuery.tsx b/frontend/pages/queries/live/screens/RunQuery.tsx similarity index 98% rename from frontend/pages/queries/QueryPage/screens/RunQuery.tsx rename to frontend/pages/queries/live/screens/RunQuery.tsx index dbceec8069..7715899b34 100644 --- a/frontend/pages/queries/QueryPage/screens/RunQuery.tsx +++ b/frontend/pages/queries/live/screens/RunQuery.tsx @@ -15,7 +15,7 @@ import { ICampaign, ICampaignState } from "interfaces/campaign"; import { IQuery } from "interfaces/query"; import { ITarget } from "interfaces/target"; -import QueryResults from "../components/QueryResults"; +import QueryResults from "../../edit/components/QueryResults"; interface IRunQueryProps { storedQuery: IQuery | undefined; diff --git a/frontend/router/index.tsx b/frontend/router/index.tsx index f314b5ecc8..07f1256436 100644 --- a/frontend/router/index.tsx +++ b/frontend/router/index.tsx @@ -36,7 +36,9 @@ import ManagePoliciesPage from "pages/policies/ManagePoliciesPage"; import NoAccessPage from "pages/NoAccessPage"; import PackComposerPage from "pages/packs/PackComposerPage"; import PolicyPage from "pages/policies/PolicyPage"; -import QueryPage from "pages/queries/QueryPage"; +import QueryDetailsPage from "pages/queries/details/QueryDetailsPage"; +import LiveQueryPage from "pages/queries/live/LiveQueryPage"; +import EditQueryPage from "pages/queries/edit/EditQueryPage"; import RegistrationPage from "pages/RegistrationPage"; import ResetPasswordPage from "pages/ResetPasswordPage"; import MDMAppleSSOPage from "pages/MDMAppleSSOPage"; @@ -220,9 +222,13 @@ const routes = ( - + + + + + + - diff --git a/frontend/router/paths.ts b/frontend/router/paths.ts index 834403705e..3190f09c45 100644 --- a/frontend/router/paths.ts +++ b/frontend/router/paths.ts @@ -53,6 +53,16 @@ export default { return `${URL_PREFIX}/labels/${labelId}`; }, EDIT_QUERY: (queryId: number, teamId?: number): string => { + return `${URL_PREFIX}/queries/${queryId}/edit${ + teamId ? `?team_id=${teamId}` : "" + }`; + }, + LIVE_QUERY: (queryId: number, teamId?: number): string => { + return `${URL_PREFIX}/queries/${queryId}/live${ + teamId ? `?team_id=${teamId}` : "" + }`; + }, + QUERY: (queryId: number, teamId?: number): string => { return `${URL_PREFIX}/queries/${queryId}${ teamId ? `?team_id=${teamId}` : "" }`; diff --git a/frontend/services/entities/queries.ts b/frontend/services/entities/queries.ts index 89765f6481..bfad2ff9ed 100644 --- a/frontend/services/entities/queries.ts +++ b/frontend/services/entities/queries.ts @@ -54,10 +54,10 @@ export default { queryId: number | null; selected: ISelectedTargets; }) => { - const { RUN_QUERY } = endpoints; + const { LIVE_QUERY } = endpoints; try { - const { campaign } = await sendRequest("POST", RUN_QUERY, { + const { campaign } = await sendRequest("POST", LIVE_QUERY, { query, query_id: queryId, selected, diff --git a/frontend/utilities/constants.ts b/frontend/utilities/constants.ts index 14530e240b..079e929753 100644 --- a/frontend/utilities/constants.ts +++ b/frontend/utilities/constants.ts @@ -96,12 +96,17 @@ export const MIN_OSQUERY_VERSION_OPTIONS = [ { label: "1.8.1 +", value: "1.8.1" }, ]; -export const QUERIES_PAGE_STEPS = { +export const LIVE_POLICY_STEPS = { 1: "EDITOR", 2: "TARGETS", 3: "RUN", }; +export const LIVE_QUERY_STEPS = { + 1: "TARGETS", + 2: "RUN", +}; + export const DEFAULT_QUERY: ISchedulableQuery = { description: "", name: "", diff --git a/frontend/utilities/endpoints.ts b/frontend/utilities/endpoints.ts index ce6d89b952..e1a3880b99 100644 --- a/frontend/utilities/endpoints.ts +++ b/frontend/utilities/endpoints.ts @@ -82,7 +82,7 @@ export default { PERFORM_REQUIRED_PASSWORD_RESET: `/${API_VERSION}/fleet/perform_required_password_reset`, QUERIES: `/${API_VERSION}/fleet/queries`, RESET_PASSWORD: `/${API_VERSION}/fleet/reset_password`, - RUN_QUERY: `/${API_VERSION}/fleet/queries/run`, + LIVE_QUERY: `/${API_VERSION}/fleet/queries/run`, SCHEDULE_QUERY: `/${API_VERSION}/fleet/packs/schedule`, SCHEDULED_QUERIES: (packId: number): string => { return `/${API_VERSION}/fleet/packs/${packId}/scheduled`; diff --git a/frontend/utilities/helpers.ts b/frontend/utilities/helpers.ts index 641b5cf734..c519b9a263 100644 --- a/frontend/utilities/helpers.ts +++ b/frontend/utilities/helpers.ts @@ -910,6 +910,12 @@ export const getSoftwareBundleTooltipMarkup = (bundle: string) => { `; }; +export const TAGGED_TEMPLATES = { + queryByHostRoute: (hostId: number | undefined | null) => { + return `${hostId ? `?host_ids=${hostId}` : ""}`; + }, +}; + export default { addGravatarUrlToResource, formatConfigDataForServer, @@ -945,4 +951,5 @@ export default { syntaxHighlight, normalizeEmptyValues, wrapFleetHelper, + TAGGED_TEMPLATES, }; From c63e87fe1772804fac02a523c0df7e559f452deb Mon Sep 17 00:00:00 2001 From: Tim Lee Date: Tue, 3 Oct 2023 11:26:44 -0700 Subject: [PATCH 02/41] 13485 create query_results table migration (#14205) --- .../20230927155121_CreateTableQueryReports.go | 35 +++++++ ...0927155121_CreateTableQueryReports_test.go | 91 +++++++++++++++++++ .../mysql/migrations/tables/migration_test.go | 60 ++++++++++++ server/datastore/mysql/schema.sql | 21 ++++- 4 files changed, 205 insertions(+), 2 deletions(-) create mode 100644 server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports.go create mode 100644 server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports_test.go diff --git a/server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports.go b/server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports.go new file mode 100644 index 0000000000..4949540d7a --- /dev/null +++ b/server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports.go @@ -0,0 +1,35 @@ +package tables + +import ( + "database/sql" + "fmt" +) + +func init() { + MigrationClient.AddMigration(Up_20230927155121, Down_20230927155121) +} + +func Up_20230927155121(tx *sql.Tx) error { + _, err := tx.Exec(` + CREATE TABLE query_results ( + id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + query_id INT(10) UNSIGNED NOT NULL, + host_id INT(10) UNSIGNED NOT NULL, + osquery_version VARCHAR(50), + error TEXT COLLATE utf8mb4_unicode_ci DEFAULT NULL, + last_fetched TIMESTAMP NOT NULL, + data JSON, + FOREIGN KEY (query_id) REFERENCES queries(id) ON DELETE CASCADE, + FOREIGN KEY (host_id) REFERENCES hosts(id) + ); + `) + if err != nil { + return fmt.Errorf("failed to create table query_results: %w", err) + } + + return nil +} + +func Down_20230927155121(tx *sql.Tx) error { + return nil +} diff --git a/server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports_test.go b/server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports_test.go new file mode 100644 index 0000000000..cbd11d474a --- /dev/null +++ b/server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports_test.go @@ -0,0 +1,91 @@ +package tables + +import ( + "encoding/json" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func TestUp_20230927155121(t *testing.T) { + db := applyUpToPrev(t) + + // Apply current migration. + applyNext(t, db) + + // Insert a record into query_results + insertStmt := `INSERT INTO query_results ( + query_id, host_id, osquery_version, error, last_fetched, data + ) VALUES (?, ?, ?, ?, ?, ?)` + + queryID := insertQuery(t, db) + hostID := insertHost(t, db) + osqueryVersion := "5.9.1" + lastFetched := time.Now().UTC() + + // Example JSON data for data field + osqueryData := map[string]string{ + "model": "USB Keyboard", + "vendor": "Apple Inc.", + } + jsonData, err := json.Marshal(osqueryData) + require.NoError(t, err) + + res, err := db.Exec(insertStmt, queryID, hostID, osqueryVersion, "", lastFetched, jsonData) + require.NoError(t, err) + + id, _ := res.LastInsertId() + + // Insert a sample error result containing a NULL data field + errorMessage := "Some error message" + _, err = db.Exec(insertStmt, queryID, hostID, osqueryVersion, errorMessage, lastFetched, nil) + require.NoError(t, err) + + type QueryResult struct { + ID uint `db:"id"` + QueryID uint `db:"query_id"` + HostID uint `db:"host_id"` + OsqueryVersion string `db:"osquery_version"` + Error string `db:"error"` + LastFetched time.Time `db:"last_fetched"` + OsqueryResultData *json.RawMessage `db:"data"` + } + + // Load the 1st result + var queryReport []QueryResult + selectStmt := ` + SELECT id, query_id, host_id, osquery_version, error, last_fetched, data + FROM query_results + WHERE query_id = ? AND host_id = ? + ORDER BY id ASC + ` + err = db.Select(&queryReport, selectStmt, queryID, hostID) + require.NoError(t, err) + + require.Equal(t, queryID, queryReport[0].QueryID) + require.Equal(t, hostID, queryReport[0].HostID) + require.Equal(t, osqueryVersion, queryReport[0].OsqueryVersion) + require.Empty(t, queryReport[0].Error) + require.True(t, lastFetched.Sub(queryReport[0].LastFetched) < time.Second) + require.JSONEq(t, string(jsonData), string(*queryReport[0].OsqueryResultData)) + + // Error results should be loaded as well + require.Equal(t, queryID, queryReport[1].QueryID) + require.Equal(t, hostID, queryReport[1].HostID) + require.Equal(t, osqueryVersion, queryReport[1].OsqueryVersion) + require.Equal(t, errorMessage, queryReport[1].Error) + require.True(t, lastFetched.Sub(queryReport[1].LastFetched) < time.Second) // allow a 1 sec difference to account for time to run the query + require.Empty(t, queryReport[1].OsqueryResultData) + + // Delete the query we just created to test the ON DELETE CASCADE + deleteQueryStmt := `DELETE FROM queries WHERE id = ?` + _, err = db.Exec(deleteQueryStmt, queryID) + require.NoError(t, err) + + // Verify that both query_result records were deleted + var count int + err = db.Get(&count, "SELECT COUNT(*) FROM query_results WHERE id = ?", id) + require.NoError(t, err) + require.Equal(t, 0, count) +} diff --git a/server/datastore/mysql/migrations/tables/migration_test.go b/server/datastore/mysql/migrations/tables/migration_test.go index 8de460812e..402a6d60f0 100644 --- a/server/datastore/mysql/migrations/tables/migration_test.go +++ b/server/datastore/mysql/migrations/tables/migration_test.go @@ -89,3 +89,63 @@ func applyNext(t *testing.T, db *sqlx.DB) { err := MigrationClient.UpByOne(db.DB, gooseNoDir) require.NoError(t, err) } + +func insertQuery(t *testing.T, db *sqlx.DB) uint { + // Insert a record into queries table + insertQueryStmt := ` + INSERT INTO queries ( + name, description, query, observer_can_run, platform, logging_type + ) VALUES (?, ?, ?, ?, ?, ?) + ` + + queryName := "Test Query" + queryDescription := "A test query for the test suite" + queryValue := "SELECT * FROM apps;" + observerCanRun := 0 + platform := "mac" // Just a placeholder, adjust as needed + loggingType := "snapshot" + + res, err := db.Exec(insertQueryStmt, queryName, queryDescription, queryValue, observerCanRun, platform, loggingType) + require.NoError(t, err) + + id, err := res.LastInsertId() + require.NoError(t, err) + + return uint(id) +} + +func insertHost(t *testing.T, db *sqlx.DB) uint { + // Insert a minimal record into hosts table + insertHostStmt := ` + INSERT INTO hosts ( + hostname, uuid, platform, osquery_version, os_version, build, platform_like, code_name, + cpu_type, cpu_subtype, cpu_brand, hardware_vendor, hardware_model, hardware_version, + hardware_serial, computer_name + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ` + + hostName := "Dummy Hostname" + hostUUID := "12345678-1234-1234-1234-123456789012" + hostPlatform := "windows" + osqueryVer := "5.9.1" + osVersion := "Windows 10" + buildVersion := "10.0.19042.1234" + platformLike := "windows" + codeName := "20H2" + cpuType := "x86_64" + cpuSubtype := "x86_64" + cpuBrand := "Intel" + hwVendor := "Dell Inc." + hwModel := "OptiPlex 7090" + hwVersion := "1.0" + hwSerial := "ABCDEFGHIJ" + computerName := "DESKTOP-TEST" + + res, err := db.Exec(insertHostStmt, hostName, hostUUID, hostPlatform, osqueryVer, osVersion, buildVersion, platformLike, codeName, cpuType, cpuSubtype, cpuBrand, hwVendor, hwModel, hwVersion, hwSerial, computerName) + require.NoError(t, err) + + id, err := res.LastInsertId() + require.NoError(t, err) + + return uint(id) +} diff --git a/server/datastore/mysql/schema.sql b/server/datastore/mysql/schema.sql index 93c1e2703d..3554079383 100644 --- a/server/datastore/mysql/schema.sql +++ b/server/datastore/mysql/schema.sql @@ -685,9 +685,9 @@ CREATE TABLE `migration_status_tables` ( `tstamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=209 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=210 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -INSERT INTO `migration_status_tables` VALUES (1,0,1,'2020-01-01 01:01:01'),(2,20161118193812,1,'2020-01-01 01:01:01'),(3,20161118211713,1,'2020-01-01 01:01:01'),(4,20161118212436,1,'2020-01-01 01:01:01'),(5,20161118212515,1,'2020-01-01 01:01:01'),(6,20161118212528,1,'2020-01-01 01:01:01'),(7,20161118212538,1,'2020-01-01 01:01:01'),(8,20161118212549,1,'2020-01-01 01:01:01'),(9,20161118212557,1,'2020-01-01 01:01:01'),(10,20161118212604,1,'2020-01-01 01:01:01'),(11,20161118212613,1,'2020-01-01 01:01:01'),(12,20161118212621,1,'2020-01-01 01:01:01'),(13,20161118212630,1,'2020-01-01 01:01:01'),(14,20161118212641,1,'2020-01-01 01:01:01'),(15,20161118212649,1,'2020-01-01 01:01:01'),(16,20161118212656,1,'2020-01-01 01:01:01'),(17,20161118212758,1,'2020-01-01 01:01:01'),(18,20161128234849,1,'2020-01-01 01:01:01'),(19,20161230162221,1,'2020-01-01 01:01:01'),(20,20170104113816,1,'2020-01-01 01:01:01'),(21,20170105151732,1,'2020-01-01 01:01:01'),(22,20170108191242,1,'2020-01-01 01:01:01'),(23,20170109094020,1,'2020-01-01 01:01:01'),(24,20170109130438,1,'2020-01-01 01:01:01'),(25,20170110202752,1,'2020-01-01 01:01:01'),(26,20170111133013,1,'2020-01-01 01:01:01'),(27,20170117025759,1,'2020-01-01 01:01:01'),(28,20170118191001,1,'2020-01-01 01:01:01'),(29,20170119234632,1,'2020-01-01 01:01:01'),(30,20170124230432,1,'2020-01-01 01:01:01'),(31,20170127014618,1,'2020-01-01 01:01:01'),(32,20170131232841,1,'2020-01-01 01:01:01'),(33,20170223094154,1,'2020-01-01 01:01:01'),(34,20170306075207,1,'2020-01-01 01:01:01'),(35,20170309100733,1,'2020-01-01 01:01:01'),(36,20170331111922,1,'2020-01-01 01:01:01'),(37,20170502143928,1,'2020-01-01 01:01:01'),(38,20170504130602,1,'2020-01-01 01:01:01'),(39,20170509132100,1,'2020-01-01 01:01:01'),(40,20170519105647,1,'2020-01-01 01:01:01'),(41,20170519105648,1,'2020-01-01 01:01:01'),(42,20170831234300,1,'2020-01-01 01:01:01'),(43,20170831234301,1,'2020-01-01 01:01:01'),(44,20170831234303,1,'2020-01-01 01:01:01'),(45,20171116163618,1,'2020-01-01 01:01:01'),(46,20171219164727,1,'2020-01-01 01:01:01'),(47,20180620164811,1,'2020-01-01 01:01:01'),(48,20180620175054,1,'2020-01-01 01:01:01'),(49,20180620175055,1,'2020-01-01 01:01:01'),(50,20191010101639,1,'2020-01-01 01:01:01'),(51,20191010155147,1,'2020-01-01 01:01:01'),(52,20191220130734,1,'2020-01-01 01:01:01'),(53,20200311140000,1,'2020-01-01 01:01:01'),(54,20200405120000,1,'2020-01-01 01:01:01'),(55,20200407120000,1,'2020-01-01 01:01:01'),(56,20200420120000,1,'2020-01-01 01:01:01'),(57,20200504120000,1,'2020-01-01 01:01:01'),(58,20200512120000,1,'2020-01-01 01:01:01'),(59,20200707120000,1,'2020-01-01 01:01:01'),(60,20201011162341,1,'2020-01-01 01:01:01'),(61,20201021104586,1,'2020-01-01 01:01:01'),(62,20201102112520,1,'2020-01-01 01:01:01'),(63,20201208121729,1,'2020-01-01 01:01:01'),(64,20201215091637,1,'2020-01-01 01:01:01'),(65,20210119174155,1,'2020-01-01 01:01:01'),(66,20210326182902,1,'2020-01-01 01:01:01'),(67,20210421112652,1,'2020-01-01 01:01:01'),(68,20210506095025,1,'2020-01-01 01:01:01'),(69,20210513115729,1,'2020-01-01 01:01:01'),(70,20210526113559,1,'2020-01-01 01:01:01'),(71,20210601000001,1,'2020-01-01 01:01:01'),(72,20210601000002,1,'2020-01-01 01:01:01'),(73,20210601000003,1,'2020-01-01 01:01:01'),(74,20210601000004,1,'2020-01-01 01:01:01'),(75,20210601000005,1,'2020-01-01 01:01:01'),(76,20210601000006,1,'2020-01-01 01:01:01'),(77,20210601000007,1,'2020-01-01 01:01:01'),(78,20210601000008,1,'2020-01-01 01:01:01'),(79,20210606151329,1,'2020-01-01 01:01:01'),(80,20210616163757,1,'2020-01-01 01:01:01'),(81,20210617174723,1,'2020-01-01 01:01:01'),(82,20210622160235,1,'2020-01-01 01:01:01'),(83,20210623100031,1,'2020-01-01 01:01:01'),(84,20210623133615,1,'2020-01-01 01:01:01'),(85,20210708143152,1,'2020-01-01 01:01:01'),(86,20210709124443,1,'2020-01-01 01:01:01'),(87,20210712155608,1,'2020-01-01 01:01:01'),(88,20210714102108,1,'2020-01-01 01:01:01'),(89,20210719153709,1,'2020-01-01 01:01:01'),(90,20210721171531,1,'2020-01-01 01:01:01'),(91,20210723135713,1,'2020-01-01 01:01:01'),(92,20210802135933,1,'2020-01-01 01:01:01'),(93,20210806112844,1,'2020-01-01 01:01:01'),(94,20210810095603,1,'2020-01-01 01:01:01'),(95,20210811150223,1,'2020-01-01 01:01:01'),(96,20210818151827,1,'2020-01-01 01:01:01'),(97,20210818151828,1,'2020-01-01 01:01:01'),(98,20210818182258,1,'2020-01-01 01:01:01'),(99,20210819131107,1,'2020-01-01 01:01:01'),(100,20210819143446,1,'2020-01-01 01:01:01'),(101,20210903132338,1,'2020-01-01 01:01:01'),(102,20210915144307,1,'2020-01-01 01:01:01'),(103,20210920155130,1,'2020-01-01 01:01:01'),(104,20210927143115,1,'2020-01-01 01:01:01'),(105,20210927143116,1,'2020-01-01 01:01:01'),(106,20211013133706,1,'2020-01-01 01:01:01'),(107,20211013133707,1,'2020-01-01 01:01:01'),(108,20211102135149,1,'2020-01-01 01:01:01'),(109,20211109121546,1,'2020-01-01 01:01:01'),(110,20211110163320,1,'2020-01-01 01:01:01'),(111,20211116184029,1,'2020-01-01 01:01:01'),(112,20211116184030,1,'2020-01-01 01:01:01'),(113,20211202092042,1,'2020-01-01 01:01:01'),(114,20211202181033,1,'2020-01-01 01:01:01'),(115,20211207161856,1,'2020-01-01 01:01:01'),(116,20211216131203,1,'2020-01-01 01:01:01'),(117,20211221110132,1,'2020-01-01 01:01:01'),(118,20220107155700,1,'2020-01-01 01:01:01'),(119,20220125105650,1,'2020-01-01 01:01:01'),(120,20220201084510,1,'2020-01-01 01:01:01'),(121,20220208144830,1,'2020-01-01 01:01:01'),(122,20220208144831,1,'2020-01-01 01:01:01'),(123,20220215152203,1,'2020-01-01 01:01:01'),(124,20220223113157,1,'2020-01-01 01:01:01'),(125,20220307104655,1,'2020-01-01 01:01:01'),(126,20220309133956,1,'2020-01-01 01:01:01'),(127,20220316155700,1,'2020-01-01 01:01:01'),(128,20220323152301,1,'2020-01-01 01:01:01'),(129,20220330100659,1,'2020-01-01 01:01:01'),(130,20220404091216,1,'2020-01-01 01:01:01'),(131,20220419140750,1,'2020-01-01 01:01:01'),(132,20220428140039,1,'2020-01-01 01:01:01'),(133,20220503134048,1,'2020-01-01 01:01:01'),(134,20220524102918,1,'2020-01-01 01:01:01'),(135,20220526123327,1,'2020-01-01 01:01:01'),(136,20220526123328,1,'2020-01-01 01:01:01'),(137,20220526123329,1,'2020-01-01 01:01:01'),(138,20220608113128,1,'2020-01-01 01:01:01'),(139,20220627104817,1,'2020-01-01 01:01:01'),(140,20220704101843,1,'2020-01-01 01:01:01'),(141,20220708095046,1,'2020-01-01 01:01:01'),(142,20220713091130,1,'2020-01-01 01:01:01'),(143,20220802135510,1,'2020-01-01 01:01:01'),(144,20220818101352,1,'2020-01-01 01:01:01'),(145,20220822161445,1,'2020-01-01 01:01:01'),(146,20220831100036,1,'2020-01-01 01:01:01'),(147,20220831100151,1,'2020-01-01 01:01:01'),(148,20220908181826,1,'2020-01-01 01:01:01'),(149,20220914154915,1,'2020-01-01 01:01:01'),(150,20220915165115,1,'2020-01-01 01:01:01'),(151,20220915165116,1,'2020-01-01 01:01:01'),(152,20220928100158,1,'2020-01-01 01:01:01'),(153,20221014084130,1,'2020-01-01 01:01:01'),(154,20221027085019,1,'2020-01-01 01:01:01'),(155,20221101103952,1,'2020-01-01 01:01:01'),(156,20221104144401,1,'2020-01-01 01:01:01'),(157,20221109100749,1,'2020-01-01 01:01:01'),(158,20221115104546,1,'2020-01-01 01:01:01'),(159,20221130114928,1,'2020-01-01 01:01:01'),(160,20221205112142,1,'2020-01-01 01:01:01'),(161,20221216115820,1,'2020-01-01 01:01:01'),(162,20221220195934,1,'2020-01-01 01:01:01'),(163,20221220195935,1,'2020-01-01 01:01:01'),(164,20221223174807,1,'2020-01-01 01:01:01'),(165,20221227163855,1,'2020-01-01 01:01:01'),(166,20221227163856,1,'2020-01-01 01:01:01'),(167,20230202224725,1,'2020-01-01 01:01:01'),(168,20230206163608,1,'2020-01-01 01:01:01'),(169,20230214131519,1,'2020-01-01 01:01:01'),(170,20230303135738,1,'2020-01-01 01:01:01'),(171,20230313135301,1,'2020-01-01 01:01:01'),(172,20230313141819,1,'2020-01-01 01:01:01'),(173,20230315104937,1,'2020-01-01 01:01:01'),(174,20230317173844,1,'2020-01-01 01:01:01'),(175,20230320133602,1,'2020-01-01 01:01:01'),(176,20230330100011,1,'2020-01-01 01:01:01'),(177,20230330134823,1,'2020-01-01 01:01:01'),(178,20230405232025,1,'2020-01-01 01:01:01'),(179,20230408084104,1,'2020-01-01 01:01:01'),(180,20230411102858,1,'2020-01-01 01:01:01'),(181,20230421155932,1,'2020-01-01 01:01:01'),(182,20230425082126,1,'2020-01-01 01:01:01'),(183,20230425105727,1,'2020-01-01 01:01:01'),(184,20230501154913,1,'2020-01-01 01:01:01'),(185,20230503101418,1,'2020-01-01 01:01:01'),(186,20230515144206,1,'2020-01-01 01:01:01'),(187,20230517140952,1,'2020-01-01 01:01:01'),(188,20230517152807,1,'2020-01-01 01:01:01'),(189,20230518114155,1,'2020-01-01 01:01:01'),(190,20230520153236,1,'2020-01-01 01:01:01'),(191,20230525151159,1,'2020-01-01 01:01:01'),(192,20230530122103,1,'2020-01-01 01:01:01'),(193,20230602111827,1,'2020-01-01 01:01:01'),(194,20230608103123,1,'2020-01-01 01:01:01'),(195,20230629140529,1,'2020-01-01 01:01:01'),(196,20230629140530,1,'2020-01-01 01:01:01'),(197,20230711144622,1,'2020-01-01 01:01:01'),(198,20230721135421,1,'2020-01-01 01:01:01'),(199,20230721161508,1,'2020-01-01 01:01:01'),(200,20230726115701,1,'2020-01-01 01:01:01'),(201,20230807100822,1,'2020-01-01 01:01:01'),(202,20230814150442,1,'2020-01-01 01:01:01'),(203,20230823122728,1,'2020-01-01 01:01:01'),(204,20230906152143,1,'2020-01-01 01:01:01'),(205,20230911163618,1,'2020-01-01 01:01:01'),(206,20230912101759,1,'2020-01-01 01:01:01'),(207,20230915101341,1,'2020-01-01 01:01:01'),(208,20230918132351,1,'2020-01-01 01:01:01'); +INSERT INTO `migration_status_tables` VALUES (1,0,1,'2020-01-01 01:01:01'),(2,20161118193812,1,'2020-01-01 01:01:01'),(3,20161118211713,1,'2020-01-01 01:01:01'),(4,20161118212436,1,'2020-01-01 01:01:01'),(5,20161118212515,1,'2020-01-01 01:01:01'),(6,20161118212528,1,'2020-01-01 01:01:01'),(7,20161118212538,1,'2020-01-01 01:01:01'),(8,20161118212549,1,'2020-01-01 01:01:01'),(9,20161118212557,1,'2020-01-01 01:01:01'),(10,20161118212604,1,'2020-01-01 01:01:01'),(11,20161118212613,1,'2020-01-01 01:01:01'),(12,20161118212621,1,'2020-01-01 01:01:01'),(13,20161118212630,1,'2020-01-01 01:01:01'),(14,20161118212641,1,'2020-01-01 01:01:01'),(15,20161118212649,1,'2020-01-01 01:01:01'),(16,20161118212656,1,'2020-01-01 01:01:01'),(17,20161118212758,1,'2020-01-01 01:01:01'),(18,20161128234849,1,'2020-01-01 01:01:01'),(19,20161230162221,1,'2020-01-01 01:01:01'),(20,20170104113816,1,'2020-01-01 01:01:01'),(21,20170105151732,1,'2020-01-01 01:01:01'),(22,20170108191242,1,'2020-01-01 01:01:01'),(23,20170109094020,1,'2020-01-01 01:01:01'),(24,20170109130438,1,'2020-01-01 01:01:01'),(25,20170110202752,1,'2020-01-01 01:01:01'),(26,20170111133013,1,'2020-01-01 01:01:01'),(27,20170117025759,1,'2020-01-01 01:01:01'),(28,20170118191001,1,'2020-01-01 01:01:01'),(29,20170119234632,1,'2020-01-01 01:01:01'),(30,20170124230432,1,'2020-01-01 01:01:01'),(31,20170127014618,1,'2020-01-01 01:01:01'),(32,20170131232841,1,'2020-01-01 01:01:01'),(33,20170223094154,1,'2020-01-01 01:01:01'),(34,20170306075207,1,'2020-01-01 01:01:01'),(35,20170309100733,1,'2020-01-01 01:01:01'),(36,20170331111922,1,'2020-01-01 01:01:01'),(37,20170502143928,1,'2020-01-01 01:01:01'),(38,20170504130602,1,'2020-01-01 01:01:01'),(39,20170509132100,1,'2020-01-01 01:01:01'),(40,20170519105647,1,'2020-01-01 01:01:01'),(41,20170519105648,1,'2020-01-01 01:01:01'),(42,20170831234300,1,'2020-01-01 01:01:01'),(43,20170831234301,1,'2020-01-01 01:01:01'),(44,20170831234303,1,'2020-01-01 01:01:01'),(45,20171116163618,1,'2020-01-01 01:01:01'),(46,20171219164727,1,'2020-01-01 01:01:01'),(47,20180620164811,1,'2020-01-01 01:01:01'),(48,20180620175054,1,'2020-01-01 01:01:01'),(49,20180620175055,1,'2020-01-01 01:01:01'),(50,20191010101639,1,'2020-01-01 01:01:01'),(51,20191010155147,1,'2020-01-01 01:01:01'),(52,20191220130734,1,'2020-01-01 01:01:01'),(53,20200311140000,1,'2020-01-01 01:01:01'),(54,20200405120000,1,'2020-01-01 01:01:01'),(55,20200407120000,1,'2020-01-01 01:01:01'),(56,20200420120000,1,'2020-01-01 01:01:01'),(57,20200504120000,1,'2020-01-01 01:01:01'),(58,20200512120000,1,'2020-01-01 01:01:01'),(59,20200707120000,1,'2020-01-01 01:01:01'),(60,20201011162341,1,'2020-01-01 01:01:01'),(61,20201021104586,1,'2020-01-01 01:01:01'),(62,20201102112520,1,'2020-01-01 01:01:01'),(63,20201208121729,1,'2020-01-01 01:01:01'),(64,20201215091637,1,'2020-01-01 01:01:01'),(65,20210119174155,1,'2020-01-01 01:01:01'),(66,20210326182902,1,'2020-01-01 01:01:01'),(67,20210421112652,1,'2020-01-01 01:01:01'),(68,20210506095025,1,'2020-01-01 01:01:01'),(69,20210513115729,1,'2020-01-01 01:01:01'),(70,20210526113559,1,'2020-01-01 01:01:01'),(71,20210601000001,1,'2020-01-01 01:01:01'),(72,20210601000002,1,'2020-01-01 01:01:01'),(73,20210601000003,1,'2020-01-01 01:01:01'),(74,20210601000004,1,'2020-01-01 01:01:01'),(75,20210601000005,1,'2020-01-01 01:01:01'),(76,20210601000006,1,'2020-01-01 01:01:01'),(77,20210601000007,1,'2020-01-01 01:01:01'),(78,20210601000008,1,'2020-01-01 01:01:01'),(79,20210606151329,1,'2020-01-01 01:01:01'),(80,20210616163757,1,'2020-01-01 01:01:01'),(81,20210617174723,1,'2020-01-01 01:01:01'),(82,20210622160235,1,'2020-01-01 01:01:01'),(83,20210623100031,1,'2020-01-01 01:01:01'),(84,20210623133615,1,'2020-01-01 01:01:01'),(85,20210708143152,1,'2020-01-01 01:01:01'),(86,20210709124443,1,'2020-01-01 01:01:01'),(87,20210712155608,1,'2020-01-01 01:01:01'),(88,20210714102108,1,'2020-01-01 01:01:01'),(89,20210719153709,1,'2020-01-01 01:01:01'),(90,20210721171531,1,'2020-01-01 01:01:01'),(91,20210723135713,1,'2020-01-01 01:01:01'),(92,20210802135933,1,'2020-01-01 01:01:01'),(93,20210806112844,1,'2020-01-01 01:01:01'),(94,20210810095603,1,'2020-01-01 01:01:01'),(95,20210811150223,1,'2020-01-01 01:01:01'),(96,20210818151827,1,'2020-01-01 01:01:01'),(97,20210818151828,1,'2020-01-01 01:01:01'),(98,20210818182258,1,'2020-01-01 01:01:01'),(99,20210819131107,1,'2020-01-01 01:01:01'),(100,20210819143446,1,'2020-01-01 01:01:01'),(101,20210903132338,1,'2020-01-01 01:01:01'),(102,20210915144307,1,'2020-01-01 01:01:01'),(103,20210920155130,1,'2020-01-01 01:01:01'),(104,20210927143115,1,'2020-01-01 01:01:01'),(105,20210927143116,1,'2020-01-01 01:01:01'),(106,20211013133706,1,'2020-01-01 01:01:01'),(107,20211013133707,1,'2020-01-01 01:01:01'),(108,20211102135149,1,'2020-01-01 01:01:01'),(109,20211109121546,1,'2020-01-01 01:01:01'),(110,20211110163320,1,'2020-01-01 01:01:01'),(111,20211116184029,1,'2020-01-01 01:01:01'),(112,20211116184030,1,'2020-01-01 01:01:01'),(113,20211202092042,1,'2020-01-01 01:01:01'),(114,20211202181033,1,'2020-01-01 01:01:01'),(115,20211207161856,1,'2020-01-01 01:01:01'),(116,20211216131203,1,'2020-01-01 01:01:01'),(117,20211221110132,1,'2020-01-01 01:01:01'),(118,20220107155700,1,'2020-01-01 01:01:01'),(119,20220125105650,1,'2020-01-01 01:01:01'),(120,20220201084510,1,'2020-01-01 01:01:01'),(121,20220208144830,1,'2020-01-01 01:01:01'),(122,20220208144831,1,'2020-01-01 01:01:01'),(123,20220215152203,1,'2020-01-01 01:01:01'),(124,20220223113157,1,'2020-01-01 01:01:01'),(125,20220307104655,1,'2020-01-01 01:01:01'),(126,20220309133956,1,'2020-01-01 01:01:01'),(127,20220316155700,1,'2020-01-01 01:01:01'),(128,20220323152301,1,'2020-01-01 01:01:01'),(129,20220330100659,1,'2020-01-01 01:01:01'),(130,20220404091216,1,'2020-01-01 01:01:01'),(131,20220419140750,1,'2020-01-01 01:01:01'),(132,20220428140039,1,'2020-01-01 01:01:01'),(133,20220503134048,1,'2020-01-01 01:01:01'),(134,20220524102918,1,'2020-01-01 01:01:01'),(135,20220526123327,1,'2020-01-01 01:01:01'),(136,20220526123328,1,'2020-01-01 01:01:01'),(137,20220526123329,1,'2020-01-01 01:01:01'),(138,20220608113128,1,'2020-01-01 01:01:01'),(139,20220627104817,1,'2020-01-01 01:01:01'),(140,20220704101843,1,'2020-01-01 01:01:01'),(141,20220708095046,1,'2020-01-01 01:01:01'),(142,20220713091130,1,'2020-01-01 01:01:01'),(143,20220802135510,1,'2020-01-01 01:01:01'),(144,20220818101352,1,'2020-01-01 01:01:01'),(145,20220822161445,1,'2020-01-01 01:01:01'),(146,20220831100036,1,'2020-01-01 01:01:01'),(147,20220831100151,1,'2020-01-01 01:01:01'),(148,20220908181826,1,'2020-01-01 01:01:01'),(149,20220914154915,1,'2020-01-01 01:01:01'),(150,20220915165115,1,'2020-01-01 01:01:01'),(151,20220915165116,1,'2020-01-01 01:01:01'),(152,20220928100158,1,'2020-01-01 01:01:01'),(153,20221014084130,1,'2020-01-01 01:01:01'),(154,20221027085019,1,'2020-01-01 01:01:01'),(155,20221101103952,1,'2020-01-01 01:01:01'),(156,20221104144401,1,'2020-01-01 01:01:01'),(157,20221109100749,1,'2020-01-01 01:01:01'),(158,20221115104546,1,'2020-01-01 01:01:01'),(159,20221130114928,1,'2020-01-01 01:01:01'),(160,20221205112142,1,'2020-01-01 01:01:01'),(161,20221216115820,1,'2020-01-01 01:01:01'),(162,20221220195934,1,'2020-01-01 01:01:01'),(163,20221220195935,1,'2020-01-01 01:01:01'),(164,20221223174807,1,'2020-01-01 01:01:01'),(165,20221227163855,1,'2020-01-01 01:01:01'),(166,20221227163856,1,'2020-01-01 01:01:01'),(167,20230202224725,1,'2020-01-01 01:01:01'),(168,20230206163608,1,'2020-01-01 01:01:01'),(169,20230214131519,1,'2020-01-01 01:01:01'),(170,20230303135738,1,'2020-01-01 01:01:01'),(171,20230313135301,1,'2020-01-01 01:01:01'),(172,20230313141819,1,'2020-01-01 01:01:01'),(173,20230315104937,1,'2020-01-01 01:01:01'),(174,20230317173844,1,'2020-01-01 01:01:01'),(175,20230320133602,1,'2020-01-01 01:01:01'),(176,20230330100011,1,'2020-01-01 01:01:01'),(177,20230330134823,1,'2020-01-01 01:01:01'),(178,20230405232025,1,'2020-01-01 01:01:01'),(179,20230408084104,1,'2020-01-01 01:01:01'),(180,20230411102858,1,'2020-01-01 01:01:01'),(181,20230421155932,1,'2020-01-01 01:01:01'),(182,20230425082126,1,'2020-01-01 01:01:01'),(183,20230425105727,1,'2020-01-01 01:01:01'),(184,20230501154913,1,'2020-01-01 01:01:01'),(185,20230503101418,1,'2020-01-01 01:01:01'),(186,20230515144206,1,'2020-01-01 01:01:01'),(187,20230517140952,1,'2020-01-01 01:01:01'),(188,20230517152807,1,'2020-01-01 01:01:01'),(189,20230518114155,1,'2020-01-01 01:01:01'),(190,20230520153236,1,'2020-01-01 01:01:01'),(191,20230525151159,1,'2020-01-01 01:01:01'),(192,20230530122103,1,'2020-01-01 01:01:01'),(193,20230602111827,1,'2020-01-01 01:01:01'),(194,20230608103123,1,'2020-01-01 01:01:01'),(195,20230629140529,1,'2020-01-01 01:01:01'),(196,20230629140530,1,'2020-01-01 01:01:01'),(197,20230711144622,1,'2020-01-01 01:01:01'),(198,20230721135421,1,'2020-01-01 01:01:01'),(199,20230721161508,1,'2020-01-01 01:01:01'),(200,20230726115701,1,'2020-01-01 01:01:01'),(201,20230807100822,1,'2020-01-01 01:01:01'),(202,20230814150442,1,'2020-01-01 01:01:01'),(203,20230823122728,1,'2020-01-01 01:01:01'),(204,20230906152143,1,'2020-01-01 01:01:01'),(205,20230911163618,1,'2020-01-01 01:01:01'),(206,20230912101759,1,'2020-01-01 01:01:01'),(207,20230915101341,1,'2020-01-01 01:01:01'),(208,20230918132351,1,'2020-01-01 01:01:01'),(209,20230927155121,1,'2020-01-01 01:01:01'); /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mobile_device_management_solutions` ( @@ -1060,6 +1060,23 @@ CREATE TABLE `queries` ( /*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; +CREATE TABLE `query_results` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `query_id` int(10) unsigned NOT NULL, + `host_id` int(10) unsigned NOT NULL, + `osquery_version` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `error` text COLLATE utf8mb4_unicode_ci, + `last_fetched` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `data` json DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `query_id` (`query_id`), + KEY `host_id` (`host_id`), + CONSTRAINT `query_results_ibfk_1` FOREIGN KEY (`query_id`) REFERENCES `queries` (`id`) ON DELETE CASCADE, + CONSTRAINT `query_results_ibfk_2` FOREIGN KEY (`host_id`) REFERENCES `hosts` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; CREATE TABLE `scep_certificates` ( `serial` bigint(20) NOT NULL, `name` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL, From fe0589c9e5109fdd65b56d79dd8330b0685f7d71 Mon Sep 17 00:00:00 2001 From: Jahziel Villasana-Espinoza Date: Tue, 3 Oct 2023 15:43:38 -0400 Subject: [PATCH 03/41] feat: discard data column for queries (#14269) Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements) - [x] Added/updated tests --- .../20231002120317_AddDiscardToQueries.go | 18 ++++++ ...20231002120317_AddDiscardToQueries_test.go | 60 +++++++++++++++++++ server/datastore/mysql/schema.sql | 5 +- server/fleet/queries.go | 2 + 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 server/datastore/mysql/migrations/tables/20231002120317_AddDiscardToQueries.go create mode 100644 server/datastore/mysql/migrations/tables/20231002120317_AddDiscardToQueries_test.go diff --git a/server/datastore/mysql/migrations/tables/20231002120317_AddDiscardToQueries.go b/server/datastore/mysql/migrations/tables/20231002120317_AddDiscardToQueries.go new file mode 100644 index 0000000000..69c5475046 --- /dev/null +++ b/server/datastore/mysql/migrations/tables/20231002120317_AddDiscardToQueries.go @@ -0,0 +1,18 @@ +package tables + +import ( + "database/sql" +) + +func init() { + MigrationClient.AddMigration(Up_20231002120317, Down_20231002120317) +} + +func Up_20231002120317(tx *sql.Tx) error { + _, err := tx.Exec(`ALTER TABLE queries ADD COLUMN discard_data TINYINT(1) NOT NULL DEFAULT FALSE;`) + return err +} + +func Down_20231002120317(tx *sql.Tx) error { + return nil +} diff --git a/server/datastore/mysql/migrations/tables/20231002120317_AddDiscardToQueries_test.go b/server/datastore/mysql/migrations/tables/20231002120317_AddDiscardToQueries_test.go new file mode 100644 index 0000000000..5d4018e2b4 --- /dev/null +++ b/server/datastore/mysql/migrations/tables/20231002120317_AddDiscardToQueries_test.go @@ -0,0 +1,60 @@ +package tables + +import ( + "testing" + + "github.com/fleetdm/fleet/v4/server/fleet" + "github.com/stretchr/testify/require" +) + +func TestUp_20231002120317(t *testing.T) { + db := applyUpToPrev(t) + applyNext(t, db) + + // + // Check data, insert new entries, e.g. to verify migration is safe. + // + insertStmt := `INSERT INTO queries ( + name, description, query, discard_data + ) VALUES (?, ?, ?, ?)` + + res, err := db.Exec(insertStmt, "test", "test description", "SELECT 1 from hosts", true) + require.NoError(t, err) + id, _ := res.LastInsertId() + require.NotNil(t, id) + require.Equal(t, int64(1), id) + + var query []fleet.Query + err = db.Select(&query, `SELECT + id, + name, + description, + query, + discard_data + FROM queries WHERE id = ?`, id) + require.NoError(t, err) + require.True(t, query[0].DiscardData) + + // Insert without discard_data, verify that default is correct + + insertStmt = `INSERT INTO queries ( + name, description, query + ) VALUES (?, ?, ?)` + + res, err = db.Exec(insertStmt, "test 2", "test description 2", "SELECT 1 from hosts") + require.NoError(t, err) + id, _ = res.LastInsertId() + require.NotNil(t, id) + require.Equal(t, int64(2), id) + + var queryNoDiscard []fleet.Query + err = db.Select(&queryNoDiscard, `SELECT + id, + name, + description, + query, + discard_data + FROM queries WHERE id = ?`, id) + require.NoError(t, err) + require.False(t, queryNoDiscard[0].DiscardData) +} diff --git a/server/datastore/mysql/schema.sql b/server/datastore/mysql/schema.sql index 3554079383..a56102adb7 100644 --- a/server/datastore/mysql/schema.sql +++ b/server/datastore/mysql/schema.sql @@ -685,9 +685,9 @@ CREATE TABLE `migration_status_tables` ( `tstamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=210 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=211 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -INSERT INTO `migration_status_tables` VALUES (1,0,1,'2020-01-01 01:01:01'),(2,20161118193812,1,'2020-01-01 01:01:01'),(3,20161118211713,1,'2020-01-01 01:01:01'),(4,20161118212436,1,'2020-01-01 01:01:01'),(5,20161118212515,1,'2020-01-01 01:01:01'),(6,20161118212528,1,'2020-01-01 01:01:01'),(7,20161118212538,1,'2020-01-01 01:01:01'),(8,20161118212549,1,'2020-01-01 01:01:01'),(9,20161118212557,1,'2020-01-01 01:01:01'),(10,20161118212604,1,'2020-01-01 01:01:01'),(11,20161118212613,1,'2020-01-01 01:01:01'),(12,20161118212621,1,'2020-01-01 01:01:01'),(13,20161118212630,1,'2020-01-01 01:01:01'),(14,20161118212641,1,'2020-01-01 01:01:01'),(15,20161118212649,1,'2020-01-01 01:01:01'),(16,20161118212656,1,'2020-01-01 01:01:01'),(17,20161118212758,1,'2020-01-01 01:01:01'),(18,20161128234849,1,'2020-01-01 01:01:01'),(19,20161230162221,1,'2020-01-01 01:01:01'),(20,20170104113816,1,'2020-01-01 01:01:01'),(21,20170105151732,1,'2020-01-01 01:01:01'),(22,20170108191242,1,'2020-01-01 01:01:01'),(23,20170109094020,1,'2020-01-01 01:01:01'),(24,20170109130438,1,'2020-01-01 01:01:01'),(25,20170110202752,1,'2020-01-01 01:01:01'),(26,20170111133013,1,'2020-01-01 01:01:01'),(27,20170117025759,1,'2020-01-01 01:01:01'),(28,20170118191001,1,'2020-01-01 01:01:01'),(29,20170119234632,1,'2020-01-01 01:01:01'),(30,20170124230432,1,'2020-01-01 01:01:01'),(31,20170127014618,1,'2020-01-01 01:01:01'),(32,20170131232841,1,'2020-01-01 01:01:01'),(33,20170223094154,1,'2020-01-01 01:01:01'),(34,20170306075207,1,'2020-01-01 01:01:01'),(35,20170309100733,1,'2020-01-01 01:01:01'),(36,20170331111922,1,'2020-01-01 01:01:01'),(37,20170502143928,1,'2020-01-01 01:01:01'),(38,20170504130602,1,'2020-01-01 01:01:01'),(39,20170509132100,1,'2020-01-01 01:01:01'),(40,20170519105647,1,'2020-01-01 01:01:01'),(41,20170519105648,1,'2020-01-01 01:01:01'),(42,20170831234300,1,'2020-01-01 01:01:01'),(43,20170831234301,1,'2020-01-01 01:01:01'),(44,20170831234303,1,'2020-01-01 01:01:01'),(45,20171116163618,1,'2020-01-01 01:01:01'),(46,20171219164727,1,'2020-01-01 01:01:01'),(47,20180620164811,1,'2020-01-01 01:01:01'),(48,20180620175054,1,'2020-01-01 01:01:01'),(49,20180620175055,1,'2020-01-01 01:01:01'),(50,20191010101639,1,'2020-01-01 01:01:01'),(51,20191010155147,1,'2020-01-01 01:01:01'),(52,20191220130734,1,'2020-01-01 01:01:01'),(53,20200311140000,1,'2020-01-01 01:01:01'),(54,20200405120000,1,'2020-01-01 01:01:01'),(55,20200407120000,1,'2020-01-01 01:01:01'),(56,20200420120000,1,'2020-01-01 01:01:01'),(57,20200504120000,1,'2020-01-01 01:01:01'),(58,20200512120000,1,'2020-01-01 01:01:01'),(59,20200707120000,1,'2020-01-01 01:01:01'),(60,20201011162341,1,'2020-01-01 01:01:01'),(61,20201021104586,1,'2020-01-01 01:01:01'),(62,20201102112520,1,'2020-01-01 01:01:01'),(63,20201208121729,1,'2020-01-01 01:01:01'),(64,20201215091637,1,'2020-01-01 01:01:01'),(65,20210119174155,1,'2020-01-01 01:01:01'),(66,20210326182902,1,'2020-01-01 01:01:01'),(67,20210421112652,1,'2020-01-01 01:01:01'),(68,20210506095025,1,'2020-01-01 01:01:01'),(69,20210513115729,1,'2020-01-01 01:01:01'),(70,20210526113559,1,'2020-01-01 01:01:01'),(71,20210601000001,1,'2020-01-01 01:01:01'),(72,20210601000002,1,'2020-01-01 01:01:01'),(73,20210601000003,1,'2020-01-01 01:01:01'),(74,20210601000004,1,'2020-01-01 01:01:01'),(75,20210601000005,1,'2020-01-01 01:01:01'),(76,20210601000006,1,'2020-01-01 01:01:01'),(77,20210601000007,1,'2020-01-01 01:01:01'),(78,20210601000008,1,'2020-01-01 01:01:01'),(79,20210606151329,1,'2020-01-01 01:01:01'),(80,20210616163757,1,'2020-01-01 01:01:01'),(81,20210617174723,1,'2020-01-01 01:01:01'),(82,20210622160235,1,'2020-01-01 01:01:01'),(83,20210623100031,1,'2020-01-01 01:01:01'),(84,20210623133615,1,'2020-01-01 01:01:01'),(85,20210708143152,1,'2020-01-01 01:01:01'),(86,20210709124443,1,'2020-01-01 01:01:01'),(87,20210712155608,1,'2020-01-01 01:01:01'),(88,20210714102108,1,'2020-01-01 01:01:01'),(89,20210719153709,1,'2020-01-01 01:01:01'),(90,20210721171531,1,'2020-01-01 01:01:01'),(91,20210723135713,1,'2020-01-01 01:01:01'),(92,20210802135933,1,'2020-01-01 01:01:01'),(93,20210806112844,1,'2020-01-01 01:01:01'),(94,20210810095603,1,'2020-01-01 01:01:01'),(95,20210811150223,1,'2020-01-01 01:01:01'),(96,20210818151827,1,'2020-01-01 01:01:01'),(97,20210818151828,1,'2020-01-01 01:01:01'),(98,20210818182258,1,'2020-01-01 01:01:01'),(99,20210819131107,1,'2020-01-01 01:01:01'),(100,20210819143446,1,'2020-01-01 01:01:01'),(101,20210903132338,1,'2020-01-01 01:01:01'),(102,20210915144307,1,'2020-01-01 01:01:01'),(103,20210920155130,1,'2020-01-01 01:01:01'),(104,20210927143115,1,'2020-01-01 01:01:01'),(105,20210927143116,1,'2020-01-01 01:01:01'),(106,20211013133706,1,'2020-01-01 01:01:01'),(107,20211013133707,1,'2020-01-01 01:01:01'),(108,20211102135149,1,'2020-01-01 01:01:01'),(109,20211109121546,1,'2020-01-01 01:01:01'),(110,20211110163320,1,'2020-01-01 01:01:01'),(111,20211116184029,1,'2020-01-01 01:01:01'),(112,20211116184030,1,'2020-01-01 01:01:01'),(113,20211202092042,1,'2020-01-01 01:01:01'),(114,20211202181033,1,'2020-01-01 01:01:01'),(115,20211207161856,1,'2020-01-01 01:01:01'),(116,20211216131203,1,'2020-01-01 01:01:01'),(117,20211221110132,1,'2020-01-01 01:01:01'),(118,20220107155700,1,'2020-01-01 01:01:01'),(119,20220125105650,1,'2020-01-01 01:01:01'),(120,20220201084510,1,'2020-01-01 01:01:01'),(121,20220208144830,1,'2020-01-01 01:01:01'),(122,20220208144831,1,'2020-01-01 01:01:01'),(123,20220215152203,1,'2020-01-01 01:01:01'),(124,20220223113157,1,'2020-01-01 01:01:01'),(125,20220307104655,1,'2020-01-01 01:01:01'),(126,20220309133956,1,'2020-01-01 01:01:01'),(127,20220316155700,1,'2020-01-01 01:01:01'),(128,20220323152301,1,'2020-01-01 01:01:01'),(129,20220330100659,1,'2020-01-01 01:01:01'),(130,20220404091216,1,'2020-01-01 01:01:01'),(131,20220419140750,1,'2020-01-01 01:01:01'),(132,20220428140039,1,'2020-01-01 01:01:01'),(133,20220503134048,1,'2020-01-01 01:01:01'),(134,20220524102918,1,'2020-01-01 01:01:01'),(135,20220526123327,1,'2020-01-01 01:01:01'),(136,20220526123328,1,'2020-01-01 01:01:01'),(137,20220526123329,1,'2020-01-01 01:01:01'),(138,20220608113128,1,'2020-01-01 01:01:01'),(139,20220627104817,1,'2020-01-01 01:01:01'),(140,20220704101843,1,'2020-01-01 01:01:01'),(141,20220708095046,1,'2020-01-01 01:01:01'),(142,20220713091130,1,'2020-01-01 01:01:01'),(143,20220802135510,1,'2020-01-01 01:01:01'),(144,20220818101352,1,'2020-01-01 01:01:01'),(145,20220822161445,1,'2020-01-01 01:01:01'),(146,20220831100036,1,'2020-01-01 01:01:01'),(147,20220831100151,1,'2020-01-01 01:01:01'),(148,20220908181826,1,'2020-01-01 01:01:01'),(149,20220914154915,1,'2020-01-01 01:01:01'),(150,20220915165115,1,'2020-01-01 01:01:01'),(151,20220915165116,1,'2020-01-01 01:01:01'),(152,20220928100158,1,'2020-01-01 01:01:01'),(153,20221014084130,1,'2020-01-01 01:01:01'),(154,20221027085019,1,'2020-01-01 01:01:01'),(155,20221101103952,1,'2020-01-01 01:01:01'),(156,20221104144401,1,'2020-01-01 01:01:01'),(157,20221109100749,1,'2020-01-01 01:01:01'),(158,20221115104546,1,'2020-01-01 01:01:01'),(159,20221130114928,1,'2020-01-01 01:01:01'),(160,20221205112142,1,'2020-01-01 01:01:01'),(161,20221216115820,1,'2020-01-01 01:01:01'),(162,20221220195934,1,'2020-01-01 01:01:01'),(163,20221220195935,1,'2020-01-01 01:01:01'),(164,20221223174807,1,'2020-01-01 01:01:01'),(165,20221227163855,1,'2020-01-01 01:01:01'),(166,20221227163856,1,'2020-01-01 01:01:01'),(167,20230202224725,1,'2020-01-01 01:01:01'),(168,20230206163608,1,'2020-01-01 01:01:01'),(169,20230214131519,1,'2020-01-01 01:01:01'),(170,20230303135738,1,'2020-01-01 01:01:01'),(171,20230313135301,1,'2020-01-01 01:01:01'),(172,20230313141819,1,'2020-01-01 01:01:01'),(173,20230315104937,1,'2020-01-01 01:01:01'),(174,20230317173844,1,'2020-01-01 01:01:01'),(175,20230320133602,1,'2020-01-01 01:01:01'),(176,20230330100011,1,'2020-01-01 01:01:01'),(177,20230330134823,1,'2020-01-01 01:01:01'),(178,20230405232025,1,'2020-01-01 01:01:01'),(179,20230408084104,1,'2020-01-01 01:01:01'),(180,20230411102858,1,'2020-01-01 01:01:01'),(181,20230421155932,1,'2020-01-01 01:01:01'),(182,20230425082126,1,'2020-01-01 01:01:01'),(183,20230425105727,1,'2020-01-01 01:01:01'),(184,20230501154913,1,'2020-01-01 01:01:01'),(185,20230503101418,1,'2020-01-01 01:01:01'),(186,20230515144206,1,'2020-01-01 01:01:01'),(187,20230517140952,1,'2020-01-01 01:01:01'),(188,20230517152807,1,'2020-01-01 01:01:01'),(189,20230518114155,1,'2020-01-01 01:01:01'),(190,20230520153236,1,'2020-01-01 01:01:01'),(191,20230525151159,1,'2020-01-01 01:01:01'),(192,20230530122103,1,'2020-01-01 01:01:01'),(193,20230602111827,1,'2020-01-01 01:01:01'),(194,20230608103123,1,'2020-01-01 01:01:01'),(195,20230629140529,1,'2020-01-01 01:01:01'),(196,20230629140530,1,'2020-01-01 01:01:01'),(197,20230711144622,1,'2020-01-01 01:01:01'),(198,20230721135421,1,'2020-01-01 01:01:01'),(199,20230721161508,1,'2020-01-01 01:01:01'),(200,20230726115701,1,'2020-01-01 01:01:01'),(201,20230807100822,1,'2020-01-01 01:01:01'),(202,20230814150442,1,'2020-01-01 01:01:01'),(203,20230823122728,1,'2020-01-01 01:01:01'),(204,20230906152143,1,'2020-01-01 01:01:01'),(205,20230911163618,1,'2020-01-01 01:01:01'),(206,20230912101759,1,'2020-01-01 01:01:01'),(207,20230915101341,1,'2020-01-01 01:01:01'),(208,20230918132351,1,'2020-01-01 01:01:01'),(209,20230927155121,1,'2020-01-01 01:01:01'); +INSERT INTO `migration_status_tables` VALUES (1,0,1,'2020-01-01 01:01:01'),(2,20161118193812,1,'2020-01-01 01:01:01'),(3,20161118211713,1,'2020-01-01 01:01:01'),(4,20161118212436,1,'2020-01-01 01:01:01'),(5,20161118212515,1,'2020-01-01 01:01:01'),(6,20161118212528,1,'2020-01-01 01:01:01'),(7,20161118212538,1,'2020-01-01 01:01:01'),(8,20161118212549,1,'2020-01-01 01:01:01'),(9,20161118212557,1,'2020-01-01 01:01:01'),(10,20161118212604,1,'2020-01-01 01:01:01'),(11,20161118212613,1,'2020-01-01 01:01:01'),(12,20161118212621,1,'2020-01-01 01:01:01'),(13,20161118212630,1,'2020-01-01 01:01:01'),(14,20161118212641,1,'2020-01-01 01:01:01'),(15,20161118212649,1,'2020-01-01 01:01:01'),(16,20161118212656,1,'2020-01-01 01:01:01'),(17,20161118212758,1,'2020-01-01 01:01:01'),(18,20161128234849,1,'2020-01-01 01:01:01'),(19,20161230162221,1,'2020-01-01 01:01:01'),(20,20170104113816,1,'2020-01-01 01:01:01'),(21,20170105151732,1,'2020-01-01 01:01:01'),(22,20170108191242,1,'2020-01-01 01:01:01'),(23,20170109094020,1,'2020-01-01 01:01:01'),(24,20170109130438,1,'2020-01-01 01:01:01'),(25,20170110202752,1,'2020-01-01 01:01:01'),(26,20170111133013,1,'2020-01-01 01:01:01'),(27,20170117025759,1,'2020-01-01 01:01:01'),(28,20170118191001,1,'2020-01-01 01:01:01'),(29,20170119234632,1,'2020-01-01 01:01:01'),(30,20170124230432,1,'2020-01-01 01:01:01'),(31,20170127014618,1,'2020-01-01 01:01:01'),(32,20170131232841,1,'2020-01-01 01:01:01'),(33,20170223094154,1,'2020-01-01 01:01:01'),(34,20170306075207,1,'2020-01-01 01:01:01'),(35,20170309100733,1,'2020-01-01 01:01:01'),(36,20170331111922,1,'2020-01-01 01:01:01'),(37,20170502143928,1,'2020-01-01 01:01:01'),(38,20170504130602,1,'2020-01-01 01:01:01'),(39,20170509132100,1,'2020-01-01 01:01:01'),(40,20170519105647,1,'2020-01-01 01:01:01'),(41,20170519105648,1,'2020-01-01 01:01:01'),(42,20170831234300,1,'2020-01-01 01:01:01'),(43,20170831234301,1,'2020-01-01 01:01:01'),(44,20170831234303,1,'2020-01-01 01:01:01'),(45,20171116163618,1,'2020-01-01 01:01:01'),(46,20171219164727,1,'2020-01-01 01:01:01'),(47,20180620164811,1,'2020-01-01 01:01:01'),(48,20180620175054,1,'2020-01-01 01:01:01'),(49,20180620175055,1,'2020-01-01 01:01:01'),(50,20191010101639,1,'2020-01-01 01:01:01'),(51,20191010155147,1,'2020-01-01 01:01:01'),(52,20191220130734,1,'2020-01-01 01:01:01'),(53,20200311140000,1,'2020-01-01 01:01:01'),(54,20200405120000,1,'2020-01-01 01:01:01'),(55,20200407120000,1,'2020-01-01 01:01:01'),(56,20200420120000,1,'2020-01-01 01:01:01'),(57,20200504120000,1,'2020-01-01 01:01:01'),(58,20200512120000,1,'2020-01-01 01:01:01'),(59,20200707120000,1,'2020-01-01 01:01:01'),(60,20201011162341,1,'2020-01-01 01:01:01'),(61,20201021104586,1,'2020-01-01 01:01:01'),(62,20201102112520,1,'2020-01-01 01:01:01'),(63,20201208121729,1,'2020-01-01 01:01:01'),(64,20201215091637,1,'2020-01-01 01:01:01'),(65,20210119174155,1,'2020-01-01 01:01:01'),(66,20210326182902,1,'2020-01-01 01:01:01'),(67,20210421112652,1,'2020-01-01 01:01:01'),(68,20210506095025,1,'2020-01-01 01:01:01'),(69,20210513115729,1,'2020-01-01 01:01:01'),(70,20210526113559,1,'2020-01-01 01:01:01'),(71,20210601000001,1,'2020-01-01 01:01:01'),(72,20210601000002,1,'2020-01-01 01:01:01'),(73,20210601000003,1,'2020-01-01 01:01:01'),(74,20210601000004,1,'2020-01-01 01:01:01'),(75,20210601000005,1,'2020-01-01 01:01:01'),(76,20210601000006,1,'2020-01-01 01:01:01'),(77,20210601000007,1,'2020-01-01 01:01:01'),(78,20210601000008,1,'2020-01-01 01:01:01'),(79,20210606151329,1,'2020-01-01 01:01:01'),(80,20210616163757,1,'2020-01-01 01:01:01'),(81,20210617174723,1,'2020-01-01 01:01:01'),(82,20210622160235,1,'2020-01-01 01:01:01'),(83,20210623100031,1,'2020-01-01 01:01:01'),(84,20210623133615,1,'2020-01-01 01:01:01'),(85,20210708143152,1,'2020-01-01 01:01:01'),(86,20210709124443,1,'2020-01-01 01:01:01'),(87,20210712155608,1,'2020-01-01 01:01:01'),(88,20210714102108,1,'2020-01-01 01:01:01'),(89,20210719153709,1,'2020-01-01 01:01:01'),(90,20210721171531,1,'2020-01-01 01:01:01'),(91,20210723135713,1,'2020-01-01 01:01:01'),(92,20210802135933,1,'2020-01-01 01:01:01'),(93,20210806112844,1,'2020-01-01 01:01:01'),(94,20210810095603,1,'2020-01-01 01:01:01'),(95,20210811150223,1,'2020-01-01 01:01:01'),(96,20210818151827,1,'2020-01-01 01:01:01'),(97,20210818151828,1,'2020-01-01 01:01:01'),(98,20210818182258,1,'2020-01-01 01:01:01'),(99,20210819131107,1,'2020-01-01 01:01:01'),(100,20210819143446,1,'2020-01-01 01:01:01'),(101,20210903132338,1,'2020-01-01 01:01:01'),(102,20210915144307,1,'2020-01-01 01:01:01'),(103,20210920155130,1,'2020-01-01 01:01:01'),(104,20210927143115,1,'2020-01-01 01:01:01'),(105,20210927143116,1,'2020-01-01 01:01:01'),(106,20211013133706,1,'2020-01-01 01:01:01'),(107,20211013133707,1,'2020-01-01 01:01:01'),(108,20211102135149,1,'2020-01-01 01:01:01'),(109,20211109121546,1,'2020-01-01 01:01:01'),(110,20211110163320,1,'2020-01-01 01:01:01'),(111,20211116184029,1,'2020-01-01 01:01:01'),(112,20211116184030,1,'2020-01-01 01:01:01'),(113,20211202092042,1,'2020-01-01 01:01:01'),(114,20211202181033,1,'2020-01-01 01:01:01'),(115,20211207161856,1,'2020-01-01 01:01:01'),(116,20211216131203,1,'2020-01-01 01:01:01'),(117,20211221110132,1,'2020-01-01 01:01:01'),(118,20220107155700,1,'2020-01-01 01:01:01'),(119,20220125105650,1,'2020-01-01 01:01:01'),(120,20220201084510,1,'2020-01-01 01:01:01'),(121,20220208144830,1,'2020-01-01 01:01:01'),(122,20220208144831,1,'2020-01-01 01:01:01'),(123,20220215152203,1,'2020-01-01 01:01:01'),(124,20220223113157,1,'2020-01-01 01:01:01'),(125,20220307104655,1,'2020-01-01 01:01:01'),(126,20220309133956,1,'2020-01-01 01:01:01'),(127,20220316155700,1,'2020-01-01 01:01:01'),(128,20220323152301,1,'2020-01-01 01:01:01'),(129,20220330100659,1,'2020-01-01 01:01:01'),(130,20220404091216,1,'2020-01-01 01:01:01'),(131,20220419140750,1,'2020-01-01 01:01:01'),(132,20220428140039,1,'2020-01-01 01:01:01'),(133,20220503134048,1,'2020-01-01 01:01:01'),(134,20220524102918,1,'2020-01-01 01:01:01'),(135,20220526123327,1,'2020-01-01 01:01:01'),(136,20220526123328,1,'2020-01-01 01:01:01'),(137,20220526123329,1,'2020-01-01 01:01:01'),(138,20220608113128,1,'2020-01-01 01:01:01'),(139,20220627104817,1,'2020-01-01 01:01:01'),(140,20220704101843,1,'2020-01-01 01:01:01'),(141,20220708095046,1,'2020-01-01 01:01:01'),(142,20220713091130,1,'2020-01-01 01:01:01'),(143,20220802135510,1,'2020-01-01 01:01:01'),(144,20220818101352,1,'2020-01-01 01:01:01'),(145,20220822161445,1,'2020-01-01 01:01:01'),(146,20220831100036,1,'2020-01-01 01:01:01'),(147,20220831100151,1,'2020-01-01 01:01:01'),(148,20220908181826,1,'2020-01-01 01:01:01'),(149,20220914154915,1,'2020-01-01 01:01:01'),(150,20220915165115,1,'2020-01-01 01:01:01'),(151,20220915165116,1,'2020-01-01 01:01:01'),(152,20220928100158,1,'2020-01-01 01:01:01'),(153,20221014084130,1,'2020-01-01 01:01:01'),(154,20221027085019,1,'2020-01-01 01:01:01'),(155,20221101103952,1,'2020-01-01 01:01:01'),(156,20221104144401,1,'2020-01-01 01:01:01'),(157,20221109100749,1,'2020-01-01 01:01:01'),(158,20221115104546,1,'2020-01-01 01:01:01'),(159,20221130114928,1,'2020-01-01 01:01:01'),(160,20221205112142,1,'2020-01-01 01:01:01'),(161,20221216115820,1,'2020-01-01 01:01:01'),(162,20221220195934,1,'2020-01-01 01:01:01'),(163,20221220195935,1,'2020-01-01 01:01:01'),(164,20221223174807,1,'2020-01-01 01:01:01'),(165,20221227163855,1,'2020-01-01 01:01:01'),(166,20221227163856,1,'2020-01-01 01:01:01'),(167,20230202224725,1,'2020-01-01 01:01:01'),(168,20230206163608,1,'2020-01-01 01:01:01'),(169,20230214131519,1,'2020-01-01 01:01:01'),(170,20230303135738,1,'2020-01-01 01:01:01'),(171,20230313135301,1,'2020-01-01 01:01:01'),(172,20230313141819,1,'2020-01-01 01:01:01'),(173,20230315104937,1,'2020-01-01 01:01:01'),(174,20230317173844,1,'2020-01-01 01:01:01'),(175,20230320133602,1,'2020-01-01 01:01:01'),(176,20230330100011,1,'2020-01-01 01:01:01'),(177,20230330134823,1,'2020-01-01 01:01:01'),(178,20230405232025,1,'2020-01-01 01:01:01'),(179,20230408084104,1,'2020-01-01 01:01:01'),(180,20230411102858,1,'2020-01-01 01:01:01'),(181,20230421155932,1,'2020-01-01 01:01:01'),(182,20230425082126,1,'2020-01-01 01:01:01'),(183,20230425105727,1,'2020-01-01 01:01:01'),(184,20230501154913,1,'2020-01-01 01:01:01'),(185,20230503101418,1,'2020-01-01 01:01:01'),(186,20230515144206,1,'2020-01-01 01:01:01'),(187,20230517140952,1,'2020-01-01 01:01:01'),(188,20230517152807,1,'2020-01-01 01:01:01'),(189,20230518114155,1,'2020-01-01 01:01:01'),(190,20230520153236,1,'2020-01-01 01:01:01'),(191,20230525151159,1,'2020-01-01 01:01:01'),(192,20230530122103,1,'2020-01-01 01:01:01'),(193,20230602111827,1,'2020-01-01 01:01:01'),(194,20230608103123,1,'2020-01-01 01:01:01'),(195,20230629140529,1,'2020-01-01 01:01:01'),(196,20230629140530,1,'2020-01-01 01:01:01'),(197,20230711144622,1,'2020-01-01 01:01:01'),(198,20230721135421,1,'2020-01-01 01:01:01'),(199,20230721161508,1,'2020-01-01 01:01:01'),(200,20230726115701,1,'2020-01-01 01:01:01'),(201,20230807100822,1,'2020-01-01 01:01:01'),(202,20230814150442,1,'2020-01-01 01:01:01'),(203,20230823122728,1,'2020-01-01 01:01:01'),(204,20230906152143,1,'2020-01-01 01:01:01'),(205,20230911163618,1,'2020-01-01 01:01:01'),(206,20230912101759,1,'2020-01-01 01:01:01'),(207,20230915101341,1,'2020-01-01 01:01:01'),(208,20230918132351,1,'2020-01-01 01:01:01'),(209,20230927155121,1,'2020-01-01 01:01:01'),(210,20231002120317,1,'2020-01-01 01:01:01'); /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mobile_device_management_solutions` ( @@ -1049,6 +1049,7 @@ CREATE TABLE `queries` ( `schedule_interval` int(10) unsigned NOT NULL DEFAULT '0', `automations_enabled` tinyint(1) unsigned NOT NULL DEFAULT '0', `logging_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'snapshot', + `discard_data` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `idx_team_id_name_unq` (`team_id_char`,`name`), UNIQUE KEY `idx_name_team_id_unq` (`name`,`team_id_char`), diff --git a/server/fleet/queries.go b/server/fleet/queries.go index 867680573a..ca3bb8876b 100644 --- a/server/fleet/queries.go +++ b/server/fleet/queries.go @@ -91,6 +91,8 @@ type Query struct { // // This field has null values if the query did not run as a schedule on any host. AggregatedStats `json:"stats"` + // DiscardData indicates if the scheduled query results should be discarded (true) or kept (false) in a query report. + DiscardData bool `json:"discard_data" db:"discard_data"` } var ( From be0ce917c113976f85e9ebae161b165cfb51cc73 Mon Sep 17 00:00:00 2001 From: Jacob Shandling <61553566+jacobshandling@users.noreply.github.com> Date: Wed, 4 Oct 2023 11:31:26 -0700 Subject: [PATCH 04/41] UI - Add global "Disable query reports" setting to advanced org settings (#14268) ## Addresses #13474 Screenshot 2023-10-03 at 11 38 12 AM - small alignment issues with tooltip-wrapped text should be fixed by upcoming TooltipWrapper refactor PR ## Checklist for submitter - [x] Manual QA for all new/changed functionality --------- Co-authored-by: Jacob Shandling --- frontend/__mocks__/configMock.ts | 1 + frontend/interfaces/config.ts | 1 + .../cards/Advanced/Advanced.tsx | 24 ++++++++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/frontend/__mocks__/configMock.ts b/frontend/__mocks__/configMock.ts index c51d2895d5..9f9e8f638c 100644 --- a/frontend/__mocks__/configMock.ts +++ b/frontend/__mocks__/configMock.ts @@ -12,6 +12,7 @@ const DEFAULT_CONFIG_MOCK: IConfig = { live_query_disabled: false, enable_analytics: true, deferred_save_host: false, + query_reports_disabled: false, }, smtp_settings: { enable_smtp: false, diff --git a/frontend/interfaces/config.ts b/frontend/interfaces/config.ts index c604629c0c..1d42508ee4 100644 --- a/frontend/interfaces/config.ts +++ b/frontend/interfaces/config.ts @@ -196,6 +196,7 @@ export interface IConfig { live_query_disabled: boolean; enable_analytics: boolean; deferred_save_host: boolean; + query_reports_disabled: boolean; }; smtp_settings: { enable_smtp: boolean; diff --git a/frontend/pages/admin/OrgSettingsPage/cards/Advanced/Advanced.tsx b/frontend/pages/admin/OrgSettingsPage/cards/Advanced/Advanced.tsx index 61da4d5b8d..62f6d4d4b5 100644 --- a/frontend/pages/admin/OrgSettingsPage/cards/Advanced/Advanced.tsx +++ b/frontend/pages/admin/OrgSettingsPage/cards/Advanced/Advanced.tsx @@ -18,7 +18,7 @@ const Advanced = ({ handleSubmit, isUpdatingSettings, }: IAppConfigFormProps): JSX.Element => { - const [formData, setFormData] = useState({ + const [formData, setFormData] = useState({ domain: appConfig.smtp_settings.domain || "", verifySSLCerts: appConfig.smtp_settings.verify_ssl_certs || false, enableStartTLS: appConfig.smtp_settings.enable_start_tls, @@ -26,6 +26,8 @@ const Advanced = ({ appConfig.host_expiry_settings.host_expiry_enabled || false, hostExpiryWindow: appConfig.host_expiry_settings.host_expiry_window || 0, disableLiveQuery: appConfig.server_settings.live_query_disabled || false, + disableQueryReports: + appConfig.server_settings.query_reports_disabled || false, }); const { @@ -35,6 +37,7 @@ const Advanced = ({ enableHostExpiry, hostExpiryWindow, disableLiveQuery, + disableQueryReports, } = formData; const [formErrors, setFormErrors] = useState({}); @@ -69,6 +72,7 @@ const Advanced = ({ server_url: appConfig.server_settings.server_url || "", live_query_disabled: disableLiveQuery, enable_analytics: appConfig.server_settings.enable_analytics, + query_reports_disabled: disableQueryReports, }, smtp_settings: { enable_smtp: appConfig.smtp_settings.enable_smtp || false, @@ -172,6 +176,24 @@ const Advanced = ({ > Disable live queries + Disabling query reports will decrease database usage,
\ + but will prevent you from accessing query results in
\ + Fleet and will delete existing reports. This can also be
\ + disabled on a per-query basis by enabling "Discard
\ + data". (Default: Off)

' + } + > + Disable query reports +
From 38af9678f46e6f293e91e45241f5c1c6cef850f8 Mon Sep 17 00:00:00 2001 From: Tim Lee Date: Wed, 4 Oct 2023 14:24:40 -0600 Subject: [PATCH 05/41] Backmerge from main (#14298) --- .github/workflows/build-orbit.yaml | 2 +- .../workflows/generate-desktop-targets.yml | 2 +- cmd/osquery-perf/agent.go | 5 + .../standard-query-library.yml | 22 ++ docs/Contributing/API-for-contributors.md | 6 +- docs/Deploy/Deploy-Fleet-on-CentOS.md | 9 +- docs/Deploy/Deploy-Fleet-on-Kubernetes.md | 26 +- docs/Get started/FAQ.md | 5 + docs/REST API/rest-api.md | 2 +- docs/Using Fleet/CIS-Benchmarks.md | 31 ++ docs/Using Fleet/MDM-macOS-setup.md | 230 ++++++------ docs/Using Fleet/Usage-statistics.md | 4 +- docs/Using Fleet/enroll-chromebooks.md | 1 - docs/Using Fleet/enroll-hosts.md | 35 +- docs/Using Fleet/fleetctl-CLI.md | 2 +- handbook/business-operations/README.md | 1 + handbook/ceo.md | 34 +- handbook/company/ceo.rituals.yml | 2 +- handbook/company/leadership.md | 8 +- handbook/company/open-positions.yml | 31 -- handbook/company/pricing-features-table.yml | 2 +- handbook/customers/README.md | 26 +- handbook/product/README.md | 27 +- orbit/CHANGELOG.md | 8 + orbit/changes/13715-bump-go-version | 1 - orbit/changes/13858-migration-tweaks | 1 - orbit/changes/issue-13635-retry-invalid-token | 1 - orbit/cmd/desktop/desktop.go | 5 +- orbit/cmd/orbit/orbit.go | 1 + .../20230927155121_CreateTableQueryReports.go | 35 -- ...0927155121_CreateTableQueryReports_test.go | 91 ----- .../mysql/migrations/tables/migration_test.go | 60 ---- server/datastore/mysql/schema.sql | 21 +- server/fleet/users.go | 2 +- server/service/device_client.go | 13 +- server/service/device_client_test.go | 2 +- server/service/users.go | 2 +- terraform/addons/saml-auth-proxy/outputs.tf | 4 + website/api/helpers/strings/to-html.js | 18 +- .../images/logo-atlassian-140x18@2x.png | Bin 0 -> 3289 bytes .../assets/images/logo-fastly-75x30@2x.png | Bin 0 -> 2830 bytes website/assets/images/logo-gusto-64x24@2x.png | Bin 0 -> 2649 bytes .../assets/images/logo-segment-112x24@2x.png | Bin 0 -> 4656 bytes .../images/logo-snowflake-117x28@2x.png | Bin 0 -> 5184 bytes website/assets/images/logo-uber-70x24@2x.png | Bin 0 -> 2455 bytes .../assets/images/logo-wayfair-110x24@2x.png | Bin 0 -> 4589 bytes website/assets/images/quote-icon-18x12@2x.png | Bin 0 -> 814 bytes ...estimonial-austin-anderson-1440x810@2x.jpg | Bin 0 -> 918249 bytes ...ideo-testimonial-nick-fohs-1440x810@2x.jpg | Bin 0 -> 915504 bytes website/assets/js/pages/homepage.page.js | 9 + .../js/pages/vulnerability-management.page.js | 7 + .../styles/pages/articles/basic-article.less | 12 +- website/assets/styles/pages/homepage.less | 326 ++++++++++++++---- .../assets/styles/pages/query-library.less | 8 + .../pages/vulnerability-management.less | 165 ++++++++- website/scripts/build-static-content.js | 25 +- .../views/pages/articles/basic-article.ejs | 2 +- website/views/pages/homepage.ejs | 88 ++++- website/views/pages/query-library.ejs | 3 + website/views/pages/transparency.ejs | 39 ++- .../views/pages/vulnerability-management.ejs | 16 + 61 files changed, 919 insertions(+), 559 deletions(-) delete mode 100644 orbit/changes/13715-bump-go-version delete mode 100644 orbit/changes/13858-migration-tweaks delete mode 100644 orbit/changes/issue-13635-retry-invalid-token delete mode 100644 server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports.go delete mode 100644 server/datastore/mysql/migrations/tables/20230927155121_CreateTableQueryReports_test.go create mode 100644 website/assets/images/logo-atlassian-140x18@2x.png create mode 100644 website/assets/images/logo-fastly-75x30@2x.png create mode 100644 website/assets/images/logo-gusto-64x24@2x.png create mode 100644 website/assets/images/logo-segment-112x24@2x.png create mode 100644 website/assets/images/logo-snowflake-117x28@2x.png create mode 100644 website/assets/images/logo-uber-70x24@2x.png create mode 100644 website/assets/images/logo-wayfair-110x24@2x.png create mode 100644 website/assets/images/quote-icon-18x12@2x.png create mode 100644 website/assets/images/video-testimonial-austin-anderson-1440x810@2x.jpg create mode 100644 website/assets/images/video-testimonial-nick-fohs-1440x810@2x.jpg diff --git a/.github/workflows/build-orbit.yaml b/.github/workflows/build-orbit.yaml index 8ad3432ad4..41ec1816c1 100644 --- a/.github/workflows/build-orbit.yaml +++ b/.github/workflows/build-orbit.yaml @@ -7,7 +7,7 @@ on: - 'orbit/**.go' env: - ORBIT_VERSION: 1.16.0 + ORBIT_VERSION: 1.17.0 # This allows a subsequently queued workflow run to interrupt previous runs concurrency: diff --git a/.github/workflows/generate-desktop-targets.yml b/.github/workflows/generate-desktop-targets.yml index 012df82902..05c91be3f3 100644 --- a/.github/workflows/generate-desktop-targets.yml +++ b/.github/workflows/generate-desktop-targets.yml @@ -24,7 +24,7 @@ defaults: shell: bash env: - FLEET_DESKTOP_VERSION: 1.16.0 + FLEET_DESKTOP_VERSION: 1.17.0 permissions: contents: read diff --git a/cmd/osquery-perf/agent.go b/cmd/osquery-perf/agent.go index 3507ae6e5b..19992886cf 100644 --- a/cmd/osquery-perf/agent.go +++ b/cmd/osquery-perf/agent.go @@ -551,6 +551,7 @@ func (a *agent) runOrbitLoop() { if err != nil { a.stats.IncrementOrbitErrors() log.Println("orbitClient.GetConfig: ", err) + continue } if len(cfg.Notifications.PendingScriptExecutionIDs) > 0 { // there are pending scripts to execute on this host, start a goroutine @@ -562,6 +563,7 @@ func (a *agent) runOrbitLoop() { if err := deviceClient.CheckToken(*a.deviceAuthToken); err != nil { a.stats.IncrementOrbitErrors() log.Println("deviceClient.CheckToken: ", err) + continue } } case <-orbitTokenRotationTicker: @@ -570,6 +572,7 @@ func (a *agent) runOrbitLoop() { if err := orbitClient.SetOrUpdateDeviceToken(*newToken); err != nil { a.stats.IncrementOrbitErrors() log.Println("orbitClient.SetOrUpdateDeviceToken: ", err) + continue } a.deviceAuthToken = newToken // fleet desktop performs a burst of check token requests after a token is rotated @@ -579,11 +582,13 @@ func (a *agent) runOrbitLoop() { if err := orbitClient.Ping(); err != nil { a.stats.IncrementOrbitErrors() log.Println("orbitClient.Ping: ", err) + continue } case <-fleetDesktopPolicyTicker: if _, err := deviceClient.DesktopSummary(*a.deviceAuthToken); err != nil { a.stats.IncrementDesktopErrors() log.Println("deviceClient.NumberOfFailingPolicies: ", err) + continue } } } diff --git a/docs/01-Using-Fleet/standard-query-library/standard-query-library.yml b/docs/01-Using-Fleet/standard-query-library/standard-query-library.yml index b06e54ffe5..d15e474222 100644 --- a/docs/01-Using-Fleet/standard-query-library/standard-query-library.yml +++ b/docs/01-Using-Fleet/standard-query-library/standard-query-library.yml @@ -1045,3 +1045,25 @@ spec: purpose: Informational tags: crowdstrike, plist, network, content filter contributors: zwass +--- +apiVersion: v1 +kind: query +spec: + name: Get a list of Visual Studio Code extensions + platform: darwin + description: Get a list of installed VS Code extensions. Requires (fleetd)[https://fleetdm.com/docs/using-fleet/fleetd]. + query: | + SELECT split(user_path, '/', 1) as username, + json_extract(value, '$.identifier.id') as id, + json_extract(value, '$.identifier.uuid') as uuid, + json_extract(value, '$.location.path') as path, + json_extract(value, '$.version') as version, + json_extract(value, '$.metadata.publisherDisplayName') as publisher_display_name + FROM ( + SELECT file_lines.path as user_path, value + FROM file_lines, json_each(line) + WHERE file_lines.path LIKE '/Users/%/.vscode/extensions/extensions.json' + ); + purpose: Informational + tags: inventory + contributors: lucasmrod,sharon-fdm,zwass diff --git a/docs/Contributing/API-for-contributors.md b/docs/Contributing/API-for-contributors.md index 73a7ccad11..7724b770b7 100644 --- a/docs/Contributing/API-for-contributors.md +++ b/docs/Contributing/API-for-contributors.md @@ -9,9 +9,11 @@ - [Downloadable installers](#downloadable-installers) - [Setup](#setup) -This document includes the Fleet API routes that are helpful when developing or contributing to Fleet. +This document includes the internal Fleet API routes that are helpful when developing or contributing to Fleet. -Unlike the [Fleet REST API documentation](https://fleetdm.com/docs/using-fleet/rest-api), only the Fleet UI, Fleet Desktop, and `fleetctl` clients use the API routes in this document: +These endpoints are used by the Fleet UI, Fleet Desktop, and `fleetctl` clients and will frequently change to reflect current functionality. + +If you are interested in gathering information from Fleet in a production environment, please see the [public Fleet REST API documentation](https://fleetdm.com/docs/using-fleet/rest-api). ## Packs diff --git a/docs/Deploy/Deploy-Fleet-on-CentOS.md b/docs/Deploy/Deploy-Fleet-on-CentOS.md index 9910b7d7a4..173617fd27 100644 --- a/docs/Deploy/Deploy-Fleet-on-CentOS.md +++ b/docs/Deploy/Deploy-Fleet-on-CentOS.md @@ -19,12 +19,15 @@ vagrant ssh ### Installing Fleet -To install Fleet, [download](https://github.com/fleetdm/fleet/releases), unzip, and move the latest Fleet binary to your desired install location. +To install Fleet, [download](https://github.com/fleetdm/fleet/releases) the file named `Source code +(zip)`, rename, unzip, and move the latest Fleet binary to your desired install location. For example, after downloading: ```sh -unzip fleet.zip 'linux/*' -d fleet -sudo cp fleet/linux/fleet* /usr/bin/ +mv .zip fleet.zip +unzip fleet.zip -d fleet +sudo cp fleet /usr/bin/ +sudo chmod u+x /usr/bin/fleet ``` ### Installing and configuring dependencies diff --git a/docs/Deploy/Deploy-Fleet-on-Kubernetes.md b/docs/Deploy/Deploy-Fleet-on-Kubernetes.md index 2314ac2ce4..5498218280 100644 --- a/docs/Deploy/Deploy-Fleet-on-Kubernetes.md +++ b/docs/Deploy/Deploy-Fleet-on-Kubernetes.md @@ -93,6 +93,8 @@ If you have not used Helm before, you must run the following to initialize your helm init ``` +> Note: The helm init command has been removed in Helm v3. It performed two primary functions. First, it installed Tiller which is no longer needed. Second, it set up directories and repositories where Helm configuration lived. This is now automated in Helm v3; if the directory is not present it will be created. + ### Deploying Fleet with Helm To configure preferences for Fleet for use in Helm, including secret names, MySQL and Redis hostnames, and TLS certificates, download the [values.yaml](https://raw.githubusercontent.com/fleetdm/fleet/main/charts/fleet/values.yaml) and change the settings to match your configuration. @@ -117,16 +119,24 @@ For the sake of this tutorial, we will again use Helm, this time to install MySQ The MySQL that we will use for this tutorial is not replicated and it is not Highly Available. If you're deploying Fleet on a Kubernetes managed by a cloud provider (GCP, Azure, AWS, etc), I suggest using their MySQL product if possible as running HA MySQL in Kubernetes can be difficult. To make this tutorial cloud provider agnostic however, we will use a non-replicated instance of MySQL. -To install MySQL from Helm, run the following command. Note that there are some options that are specified. These options basically just enumerate that: +To install MySQL from Helm, run the following command. Note that there are some options that need to be defined: - There should be a `fleet` database created - The default user's username should be `fleet` +Helm v2 ```sh helm install \ --name fleet-database \ --set mysqlUser=fleet,mysqlDatabase=fleet \ - stable/mysql + oci://registry-1.docker.io/bitnamicharts/mysql +``` + +Helm v3 +```sh +helm install fleet-database \ + --set mysqlUser=fleet,mysqlDatabase=fleet \ + oci://registry-1.docker.io/bitnamicharts/mysql ``` This helm package will create a Kubernetes `Service` which exposes the MySQL server to the rest of the cluster on the following DNS address: @@ -156,11 +166,19 @@ kubectl create -f ./docs/Using-Fleet/configuration-files/kubernetes/fleet-migrat #### Redis +Helm v2 ```sh helm install \ --name fleet-cache \ --set persistence.enabled=false \ - stable/redis + oci://registry-1.docker.io/bitnamicharts/redis +``` + +Helm v3 +```sh +helm install fleet-cache \ + --set persistence.enabled=false \ + oci://registry-1.docker.io/bitnamicharts/redis ``` This helm package will create a Kubernetes `Service` which exposes the Redis server to the rest of the cluster on the following DNS address: @@ -245,4 +263,4 @@ Once you have the public IP address for the load balancer, create an A record in - \ No newline at end of file + diff --git a/docs/Get started/FAQ.md b/docs/Get started/FAQ.md index 68be6059e9..5490690f1d 100644 --- a/docs/Get started/FAQ.md +++ b/docs/Get started/FAQ.md @@ -2,6 +2,11 @@ ## Using Fleet +### Can you host Fleet for me? + +Fleet offers managed cloud hosting for large deployments. Unfortunately, while organizations of all kinds use Fleet, from Fortune 500 companies to school districts to hobbyists, we are not currently able to provide hosting for deployments smaller than 1000 hosts. If you are comfortable doing so, you can still buy a license and host Fleet yourself. + + ### How can I switch to Fleet from Kolide Fleet? To migrate to Fleet from Kolide Fleet, please follow the steps outlined in the [Upgrading Fleet section](https://fleetdm.com/docs/deploying/upgrading-fleet) of the documentation. diff --git a/docs/REST API/rest-api.md b/docs/REST API/rest-api.md index 3d2b1cef6e..cb302c712e 100644 --- a/docs/REST API/rest-api.md +++ b/docs/REST API/rest-api.md @@ -1829,7 +1829,7 @@ the `software` table. | page | integer | query | Page number of the results to fetch. | | per_page | integer | query | Results per page. | | order_key | string | query | What to order results by. Can be any column in the hosts table. | -| after | string | query | The value to get results after. This needs `order_key` defined, as that's the column that would be used. | +| after | string | query | The value to get results after. This needs `order_key` defined, as that's the column that would be used. **Note:** Use `page` instead of `after`. | | order_direction | string | query | **Requires `order_key`**. The direction of the order given the order key. Options include `asc` and `desc`. Default is `asc`. | | status | string | query | Indicates the status of the hosts to return. Can either be `new`, `online`, `offline`, `mia` or `missing`. | | query | string | query | Search query keywords. Searchable fields include `hostname`, `machine_serial`, `uuid`, `ipv4` and the hosts' email addresses (only searched if the query looks like an email address, i.e. contains an `@`, no space, etc.). | diff --git a/docs/Using Fleet/CIS-Benchmarks.md b/docs/Using Fleet/CIS-Benchmarks.md index 500f0b9843..12ecfd59f0 100644 --- a/docs/Using Fleet/CIS-Benchmarks.md +++ b/docs/Using Fleet/CIS-Benchmarks.md @@ -12,6 +12,37 @@ Fleet has implemented native support for CIS Benchmarks for the following platfo [Where possible](#limitations), each CIS Benchmark is implemented with a [policy query](./REST-API.md#policies) in Fleet. +These benchmarks are intended to gauge your organization's security posture, rather than the current state of a given host. A host may fail a CIS Benchmark policy despite having the correct settings enabled if there is not a specific policy in place to enforce that setting. For example, this is the query for **CIS - Ensure FileVault Is Enabled (MDM Required)**: + +```sql +SELECT 1 WHERE + EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.MCX' AND + name='dontAllowFDEDisable' AND + (value = 1 OR value = 'true') AND + username = '' + ) + AND NOT EXISTS ( + SELECT 1 FROM managed_policies WHERE + domain='com.apple.MCX' AND + name='dontAllowFDEDisable' AND + (value != 1 AND value != 'true') + ) + AND EXISTS ( + SELECT 1 FROM disk_encryption WHERE + user_uuid IS NOT "" AND + filevault_status = 'on' + ); +``` + +Two things are being evaluated in this policy: + +1. Is FileVault currently enabled? +2. Is there a profile in place that prevents FileVault from being disabled? + +If either of these conditions fails, the host is considered to be failing the policy. + ## Requirements Following are the requirements to use the CIS Benchmarks in Fleet: diff --git a/docs/Using Fleet/MDM-macOS-setup.md b/docs/Using Fleet/MDM-macOS-setup.md index 55fe98e886..c526212cd1 100644 --- a/docs/Using Fleet/MDM-macOS-setup.md +++ b/docs/Using Fleet/MDM-macOS-setup.md @@ -32,24 +32,24 @@ Fleet UI: 2. Under **End user authentication**, enter your IdP credentials and select **Save**. -> If you've already configured [single sign-on (SSO) for logging in to Fleet](https://fleetdm.com/docs/configuration/fleet-server-configuration#okta-idp-configuration), you'll need to create a separate app in your IdP so your end users can't log in to Fleet. In this separate app, use "https://fleetserver.com/api/v1/fleet/mdm/sso/callback" for the SSO URL. + > If you've already configured [single sign-on (SSO) for logging in to Fleet](https://fleetdm.com/docs/configuration/fleet-server-configuration#okta-idp-configuration), you'll need to create a separate app in your IdP so your end users can't log in to Fleet. In this separate app, use "https://fleetserver.com/api/v1/fleet/mdm/sso/callback" for the SSO URL. fleetctl CLI: 1. Create `fleet-config.yaml` file or add to your existing `config` YAML file: -```yaml -apiVersion: v1 -kind: config -spec: - mdm: - end_user_authentication: - identity_provider_name: "Okta" - entity_id: "https://fleetserver.com" - issuer_url: "https://okta-instance.okta.com/84598y345hjdsshsfg/sso/saml/metadata" - metadata_url: "https://okta-instance.okta.com/84598y345hjdsshsfg/sso/saml/metadata" - ... -``` + ```yaml + apiVersion: v1 + kind: config + spec: + mdm: + end_user_authentication: + identity_provider_name: "Okta" + entity_id: "https://fleetserver.com" + issuer_url: "https://okta-instance.okta.com/84598y345hjdsshsfg/sso/saml/metadata" + metadata_url: "https://okta-instance.okta.com/84598y345hjdsshsfg/sso/saml/metadata" + ... + ``` 2. Fill in the relevant information from your IdP under the `mdm.end_user_authentication` key. @@ -63,7 +63,7 @@ spec: 2. Under **End user license agreement (EULA)**, select **Upload** and choose your EULA. -> Uploading a EULA is optional. If you don't upload a EULA, the end user will skip this step and continue to the next step of the new Mac setup experience after they authenticate with your IdP. + > Uploading a EULA is optional. If you don't upload a EULA, the end user will skip this step and continue to the next step of the new Mac setup experience after they authenticate with your IdP. ### Step 3: enable end user authentication @@ -85,33 +85,33 @@ fleetctl CLI: 2. Create a `workstations-canary-config.yaml` file: -```yaml -apiVersion: v1 -kind: team -spec: - team: - name: Workstations (canary) - mdm: - macos_setup: - enable_end_user_authentication: true - ... -``` + ```yaml + apiVersion: v1 + kind: team + spec: + team: + name: Workstations (canary) + mdm: + macos_setup: + enable_end_user_authentication: true + ... + ``` -Learn more about team configurations options [here](./configuration-files/README.md#teams). + Learn more about team configurations options [here](./configuration-files/README.md#teams). -If you want to enable authentication on hosts that automatically enroll to "No team," we'll need to create an `fleet-config.yaml` file: + If you want to enable authentication on hosts that automatically enroll to "No team," we'll need to create an `fleet-config.yaml` file: -```yaml -apiVersion: v1 -kind: config -spec: - mdm: - macos_setup: - enable_end_user_authentication: true - ... -``` + ```yaml + apiVersion: v1 + kind: config + spec: + mdm: + macos_setup: + enable_end_user_authentication: true + ... + ``` -Learn more about "No team" configuration options [here](./configuration-files/README.md#organization-settings). + Learn more about "No team" configuration options [here](./configuration-files/README.md#organization-settings). 3. Add an `mdm.macos_setup.enable_end_user_authentication` key to your YAML document. This key accepts a boolean value. @@ -119,9 +119,9 @@ Learn more about "No team" configuration options [here](./configuration-files/RE 5. Confirm that end user authentication is enabled by running the `fleetctl get teams --name=Workstations --yaml` command. -If you enabled authentication on "No team," run `fleetctl get config`. + If you enabled authentication on "No team," run `fleetctl get config`. -You should see a `true` value for `mdm.macos_setup.enable_end_user_authentication`. + You should see a `true` value for `mdm.macos_setup.enable_end_user_authentication`. ## Bootstrap package @@ -156,20 +156,20 @@ Apple requires that your package is a distribution package. Verify that the pack 1. Run the following commands to expand you package and look at the files in the expanded folder: -```bash -$ pkgutil --expand package.pkg expanded-package -$ ls expanded-package -``` + ```bash + $ pkgutil --expand package.pkg expanded-package + $ ls expanded-package + ``` -If your package is a distribution package should see a `Distribution` file. + If your package is a distribution package should see a `Distribution` file. 2. If you don't see a `Distribution` file, run the following command to convert your package into a distribution package. -```bash -$ productbuild --package package.pkg distrbution-package.pkg -``` + ```bash + $ productbuild --package package.pkg distrbution-package.pkg + ``` -Make sure your package is a `.pkg` file. + Make sure your package is a `.pkg` file. ### Step 2: sign the package @@ -178,25 +178,25 @@ To sign the package we need a valid Developer ID Installer certificate: 1. Login to your [Apple Developer account](https://developer.apple.com/account). 2. Follow Apple's instructions to create a Developer ID Installer certificate [here](https://developer.apple.com/help/account/create-certificates/create-developer-id-certificates). -> During step 3 in Apple's instructions, make sure you choose "Developer ID Installer." You'll need this kind of certificate to sign the package. + > During step 3 in Apple's instructions, make sure you choose "Developer ID Installer." You'll need this kind of certificate to sign the package. -Confirm that certificate is installed on your Mac by opening the **Keychain Access** application. You should see your certificate in the **Certificates** tab. + Confirm that certificate is installed on your Mac by opening the **Keychain Access** application. You should see your certificate in the **Certificates** tab. 3. Run the following command in the **Terminal** application to sign your package with your Developer ID certificate: -```bash -$ productsign --sign "Developer ID Installer: Your name (Serial number)" /path/to/package.pkg /path/to/signed-package.pkg -``` + ```bash + $ productsign --sign "Developer ID Installer: Your name (Serial number)" /path/to/package.pkg /path/to/signed-package.pkg + ``` -You might be prompted to enter the password for your local account. + You might be prompted to enter the password for your local account. -Confirm that your package is signed by running the following command: + Confirm that your package is signed by running the following command: -```bash -$ pkgutil --check-signature /path/to/signed-package.pkg -``` + ```bash + $ pkgutil --check-signature /path/to/signed-package.pkg + ``` -In the output you should see that package has a "signed" status. + In the output you should see that package has a "signed" status. ### Step 3: upload the package to Fleet @@ -212,42 +212,42 @@ fleetctl CLI: 1. Upload the package to a storage location (ex. S3 or GitHub). During step 4, Fleet will retrieve the package from this storage location and host it for deployment. -> The URL must be accessible by the computer that uploads the package to Fleet. -> * This could be your local computer or the computer that runs your CI/CD workflow. + > The URL must be accessible by the computer that uploads the package to Fleet. + > * This could be your local computer or the computer that runs your CI/CD workflow. 2. Choose which team you want to add the bootstrap package to. -In this example, we'll add a bootstrap package to the "Workstations (canary)" team so that the package only gets installed on hosts that automatically enroll to this team. + In this example, we'll add a bootstrap package to the "Workstations (canary)" team so that the package only gets installed on hosts that automatically enroll to this team. 3. Create a `workstations-canary-config.yaml` file: -```yaml -apiVersion: v1 -kind: team -spec: - team: - name: Workstations (canary) - mdm: - macos_setup: - bootstrap_package: https://github.com/organinzation/repository/bootstrap-package.pkg - ... -``` + ```yaml + apiVersion: v1 + kind: team + spec: + team: + name: Workstations (canary) + mdm: + macos_setup: + bootstrap_package: https://github.com/organinzation/repository/bootstrap-package.pkg + ... + ``` -Learn more about team configurations options [here](./configuration-files/README.md#teams). + Learn more about team configurations options [here](./configuration-files/README.md#teams). -If you want to install the package on hosts that automatically enroll to "No team," we'll need to create an `fleet-config.yaml` file: + If you want to install the package on hosts that automatically enroll to "No team," we'll need to create an `fleet-config.yaml` file: -```yaml -apiVersion: v1 -kind: config -spec: - mdm: - macos_setup: - bootstrap_package: https://github.com/organinzation/repository/bootstrap-package.pkg - ... -``` + ```yaml + apiVersion: v1 + kind: config + spec: + mdm: + macos_setup: + bootstrap_package: https://github.com/organinzation/repository/bootstrap-package.pkg + ... + ``` -Learn more about "No team" configuration options [here](./configuration-files/README.md#organization-settings). + Learn more about "No team" configuration options [here](./configuration-files/README.md#organization-settings). 3. Add an `mdm.macos_setup.bootstrap_package` key to your YAML document. This key accepts the URL for the storage location of the bootstrap package. @@ -255,9 +255,9 @@ Learn more about "No team" configuration options [here](./configuration-files/RE 5. Confirm that your bootstrap package was uploaded to Fleet by running the `fleetctl get teams --name=Workstations --yaml` command. -If you uploaded the package to "No team," run `fleetctl get config`. + If you uploaded the package to "No team," run `fleetctl get config`. -You should see the URL for your bootstrap package as the value for `mdm.macos_setup.bootstrap_package`. + You should see the URL for your bootstrap package as the value for `mdm.macos_setup.bootstrap_package`. ## macOS Setup Assistant @@ -273,7 +273,7 @@ To customize the macOS Setup Assistant, we will do the following steps: ### Step 1: create an automatic enrollment profile -1. Download Fleet's example automatic enrollment profile by navigating to the example [here on GitHub](https://github.com/fleetdm/fleet/blob/main/mdm_profiles/setup_assistant.json) and clicking the download icon. +1. Download Fleet's example automatic enrollment profile by navigating to the example [here on GitHub](https://github.com/fleetdm/fleet/blob/main/mdm_profiles/automatic_enrollment.json) and clicking the download icon. 2. Open the automatic enrollment profile and replace the `profile_name` key with your organization's name. @@ -281,45 +281,45 @@ To customize the macOS Setup Assistant, we will do the following steps: 4. In your automatic enrollment profile, edit the `skip_setup_items` array so that it includes the panes you want to hide. -> You can modify properties other than `skip_setup_items`. These are documented by Apple [here](https://developer.apple.com/documentation/devicemanagement/profile). + > You can modify properties other than `skip_setup_items`. These are documented by Apple [here](https://developer.apple.com/documentation/devicemanagement/profile). ### Step 2: upload the profile to Fleet 1. Choose which team you want to add the automatic enrollment profile to. -In this example, let's assume you have a "Workstations" team as your [default team](./MDM-setup.md#step-6-optional-set-the-default-team-for-hosts-enrolled-via-abm) in Fleet and you want to test your profile before it's used in production. + In this example, let's assume you have a "Workstations" team as your [default team](./MDM-setup.md#step-6-optional-set-the-default-team-for-hosts-enrolled-via-abm) in Fleet and you want to test your profile before it's used in production. -To do this, we'll create a new "Workstations (canary)" team and add the automatic enrollment profile to it. Only hosts that automatically enroll to this team will see the custom macOS Setup Assistant. + To do this, we'll create a new "Workstations (canary)" team and add the automatic enrollment profile to it. Only hosts that automatically enroll to this team will see the custom macOS Setup Assistant. 2. Create a `workstations-canary-config.yaml` file: -```yaml -apiVersion: v1 -kind: team -spec: - team: - name: Workstations (canary) - mdm: - macos_setup: - macos_setup_assistant: ./path/to/automatic_enrollment_profile.json - ... -``` + ```yaml + apiVersion: v1 + kind: team + spec: + team: + name: Workstations (canary) + mdm: + macos_setup: + macos_setup_assistant: ./path/to/automatic_enrollment_profile.json + ... + ``` -Learn more about team configurations options [here](./configuration-files/README.md#teams). + Learn more about team configurations options [here](./configuration-files/README.md#teams). -If you want to customize the macOS Setup Assistant for hosts that automatically enroll to "No team," we'll need to create a `fleet-config.yaml` file: + If you want to customize the macOS Setup Assistant for hosts that automatically enroll to "No team," we'll need to create a `fleet-config.yaml` file: -```yaml -apiVersion: v1 -kind: config -spec: - mdm: - macos_setup: - macos_setup_assistant: ./path/to/automatic_enrollment_profile.json - ... -``` + ```yaml + apiVersion: v1 + kind: config + spec: + mdm: + macos_setup: + macos_setup_assistant: ./path/to/automatic_enrollment_profile.json + ... + ``` -Learn more about configuration options for hosts that aren't assigned to a team [here](./configuration-files/README.md#organization-settings). + Learn more about configuration options for hosts that aren't assigned to a team [here](./configuration-files/README.md#organization-settings). 3. Add an `mdm.macos_setup.macos_setup_assistant` key to your YAML document. This key accepts a path to your automatic enrollment profile. @@ -333,7 +333,7 @@ Testing requires a test Mac that is present in your Apple Business Manager (ABM) 2. In Fleet, navigate to the Hosts page and find your Mac. Make sure that the host's **MDM status** is set to "Pending." -> New Macs purchased through Apple Business Manager appear in Fleet with MDM status set to "Pending." Learn more about these hosts [here](./MDM-setup.md#pending-hosts). + > New Macs purchased through Apple Business Manager appear in Fleet with MDM status set to "Pending." Learn more about these hosts [here](./MDM-setup.md#pending-hosts). 3. Transfer this host to the "Workstations (canary)" team by selecting the checkbox to the left of the host and selecting **Transfer** at the top of the table. In the modal, choose the Workstations (canary) team and select **Transfer**. diff --git a/docs/Using Fleet/Usage-statistics.md b/docs/Using Fleet/Usage-statistics.md index 197318904e..30a0e3f492 100644 --- a/docs/Using Fleet/Usage-statistics.md +++ b/docs/Using Fleet/Usage-statistics.md @@ -126,6 +126,8 @@ To disable usage statistics: 3. Uncheck the "Enable usage statistics" checkbox and then select "Update settings." +Usage statistics can also be disabled via [configuration files](https://fleetdm.com/docs/configuration/configuration-files#server-settings-enable-analytics). + - \ No newline at end of file + diff --git a/docs/Using Fleet/enroll-chromebooks.md b/docs/Using Fleet/enroll-chromebooks.md index aa33a3993f..c00ec23aaa 100644 --- a/docs/Using Fleet/enroll-chromebooks.md +++ b/docs/Using Fleet/enroll-chromebooks.md @@ -23,7 +23,6 @@ By default, the hostname for a Chromebook host will be blank. The hostname can b ## Debugging ChromeOS To learn how to debug the Fleetd Chrome extension, visit [here](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Testing-and-local-development.md#fleetd-chrome-extension). - diff --git a/docs/Using Fleet/enroll-hosts.md b/docs/Using Fleet/enroll-hosts.md index 6d012a9545..8b2127cf18 100644 --- a/docs/Using Fleet/enroll-hosts.md +++ b/docs/Using Fleet/enroll-hosts.md @@ -314,9 +314,27 @@ expiration setting. To configure this setting, in the Fleet UI, head to **Settin > The fleetd Chrome browser extension is supported on ChromeOS operating systems that are managed using [Google Admin](https://admin.google.com). It is not intended for non-ChromeOS hosts with the Chrome browser installed. +### Overview +Google Admin uses organizational units (OUs) to organize devices and users. + +One limitation in Google Admin is that extensions can only be configured at the user level, meaning that a user with a MacBook running Chrome, for example, will also get the fleetd Chrome extension. + +When deployed on OSs other than ChromeOS, the fleetd Chrome extension will not perform any operation and will not appear in the Chrome toolbar. +However, it will appear in the "Manage Extensions" page of Chrome. +Fleet admins who are comfortable with this situation can skip step 2 below. + +To install the fleetd Chrome extension on Google Admin, there are two steps: +1. Create an OU for all users who have Chromebooks and force-install the fleetd Chrome extension for those users +2. Create an OU for all non-Chromebook devices and block the fleetd Chrome extension on this OU + +> More complex setups may be necessary, depending on the organization's needs, but the basic principle remains the same. + +### Step 1: OU for Chromebook users +Create an [organizational unit](https://support.google.com/a/answer/182537?hl=en) where the extension should be installed. [Add all the relevant users](https://support.google.com/a/answer/182449?hl=en) to this OU. + Visit the Google Admin console. In the navigation menu, visit Devices > Chrome > Apps & Extensions > Users & browsers. -Select the relevant organizational unit, users, or group where you want the fleetd Chrome extension to be installed. +Select the relevant OU where you want the fleetd Chrome extension to be installed. > Currently, the Chrome extension can only be installed across the entire organization. The work to enable installation for sub-groups is tracked in https://github.com/fleetdm/fleet/issues/13353. @@ -330,6 +348,21 @@ Under "Installation Policy", select "Force install". Under "Update URL", select > For the fleetd Chrome extension to have full access to Chrome data, it must be force-installed by enterprise policy as per above +### Step 2: OU to block non-Chromebook devices +Create an [organizational unit](https://support.google.com/a/answer/182537?hl=en) to house devices where the extension should not be installed. [Add all the relevant devices](https://support.google.com/chrome/a/answer/2978876?hl=en) to this OU. + +In the Google Admin console, in the navigation menu, visit Devices > Chrome > Managed Browsers. + +Select the relevant OU where you want the fleetd Chrome extension to be blocked. + +In the bottom right, click the yellow "+" button and select "Add Chrome app or extension by ID." + +Visit your Fleet instance and select Hosts > Add Hosts and select ChromeOS in the popup modal. + +Enter the "Extension ID" and "Installation URL" using the data provided in the modal. + +Under "Installation Policy", select "Block". + ## Grant full disk access to osquery on macOS macOS does not allow applications to access all system files by default. If you are using MDM, which is required to deploy these profiles, you diff --git a/docs/Using Fleet/fleetctl-CLI.md b/docs/Using Fleet/fleetctl-CLI.md index 474218d6a3..bf173307dd 100644 --- a/docs/Using Fleet/fleetctl-CLI.md +++ b/docs/Using Fleet/fleetctl-CLI.md @@ -202,7 +202,7 @@ An API-only user does not have access to the Fleet UI. Instead, it's only purpos To create your new API-only user, run `fleetctl user create` and pass values for `--name`, `--email`, and `--password`, and include the `--api-only` flag: ```sh -fleetctl user create --name "API User" --email api@example.com --password temp!pass --api-only +fleetctl user create --name "API User" --email api@example.com --password temp@pass123 --api-only ``` ### Creating an API-only user diff --git a/handbook/business-operations/README.md b/handbook/business-operations/README.md index dc5a65260f..5c6f8c710e 100644 --- a/handbook/business-operations/README.md +++ b/handbook/business-operations/README.md @@ -217,6 +217,7 @@ The following table lists this department's rituals, frequency, and Directly Res | Vanta check | Monthly | Look for any new actions in Vanta due in the upcoming months and create issues to ensure they're done on time. | Nathan Holliday | | Investor reporting | Quarterly | Provide updated metrics for CRV in Chronograph. | Nathanael Holliday | | Applicant forwarding | Daily | Whenever an application notification arrives in the BizOps slack channel, forward this notification to the hiring channel for that position. | Joanne Stableford | +| KPI roundup + weekly update | Weekly | Update KPI spreadsheet with BizOps KPI data by 5pm US central time every Friday. At 5pm check other department KPIs to make sure they have been updated, and if not, notify DRIs and the apprentice to the CEO which KPIs have not been updated. | Nathanael Holliday | Fdr$VXr1_6-5cwXzh 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

nfR#IYVs${K}TTRYcHawhQIa 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ǽ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

9qCL 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

oX)u@U-{Cw=vw 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 literal 0 HcmV?d00001 diff --git a/website/assets/images/video-testimonial-nick-fohs-1440x810@2x.jpg b/website/assets/images/video-testimonial-nick-fohs-1440x810@2x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7330ccd13a2a7b71ee48b50a0303655ad7ec904 GIT binary patch literal 915504 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

K^CHE+3zvo9}xN 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≧Ho{EuU`nquG6n#+^(;5m9f?{r?% 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�k1-UO<2v{*}|m>>L{vsC*J5(ibT5r#+HY+ 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

vzn{gY-4-Feg9(gowTJk%U_k{hK znJ*5?ma#L!1t`efa6CCYPNG@KC~e)}A3{dcPgOp->yk`X;NY`~CJ{iTr2c1JlJ$2g zLM2q2gM&Z=C4GSjo<^k2n2BUG9_jcIrO%<}ScBa&sY4Sl{h4u8FUiK_PK90dcb<{t zN`SV5E$i{3mr;Yuf>tGo%nYMmJ8A{)QKvJ<8y&oB6=sZ_?;$ZPF84zeW6k@j+XCE5 zzy576>t(Az*C%x@AR#>l!`IkuVf|?D&5vrJg_p-(tMBt~a>H7~e>V_d5D zaGL$988sHVnG{sZmwfywZ-;yn$H@32kh8&)YW(_*0-OiN3NY`JJnzkWusEND zd`vOFBTD?+UU|YFU>c-yLtpIpsB?kP)G03Y}2#r@i&Q!JN!yz;Q8sJhq{w58TW%MXcF|JaS4L{w2y9r!Mq*lb4((mk2irN_c7HM(FAmdd^Y6o_vRng zxPX}!rf55*a*Own8Fno}*wuQvSWhH2*Q`HhXq{VxVL;gUMe_kaiuYAMa6U4IXhMnr z-D<6=JPYtA>R*2-$=@Un9O5 z{te29Ph$i9xLLgj9OD~CAHNQ-?jBzk z!ueuMv8{B@sS5mhPUj=W=bZqJe}7&&hB3tu&#hbhd;0%Be?I-30XE*G_0#|Pl6Ni( z?0)S3c3qegz-eg#wFHi~e=&YC$x{Ed{4WZeCTXL~R zyfkQ`XNi7zN+C!6p*Qmuc(HxxoSUwrdh3i~eKRX*>jcTE?K$roTx_8#f7~{5SZ`Bw zgT=AkH)s{xP1_H$-oTLGsl6M(HaO=GN8f22vZ(?490AYa{dx`7ER!P?(zbLp(8>l=` zFLaH35!>Ud+x-t)xl58FYau{2N|NJ?za-KhR!J=WRe2Zn4$<*`lWqo*j|UZb9=OkE zuVbsCqcTzLf)UP|T~L+a$E$3aUu3sU9M@Gl2s7rdR8Pi^2@eehZpd9wamQh2Zw$nh(T8o7pdT?zy_d4*81Yu{^{0vD+PCr<79uVY@Qh zqb&WSYQ#u)=e9RWC*G+3+Jfx-*buzU?8k)f8_xn{x=3nC*Rrqe04d$K>aQswJ95l6 z{ghXmeOiD3RtAo6lbq1?+Q=6#SlW$bd#P*1-|Pra!FD;%5R%NBPx5x9Tz*!iBM^aA z-nlG)CDIqqDHhN%+cGg{tT#w$X%u?MEjL$i-S=HYwxNvMU!a^?CRZqZ_QFS@gm&@L zWsDGq&}0iCi=IB3S}1?&z@o~4q1N!z?d@-kJ?2GFi0SvdKd?4-5iWc*a9aC>=ONoH zTz%g(pN~Jf`dt0-N+%o%tdU(>PxeO1u*}B58Q%21)^d>Ux3aPIOH#9u_<%}mkDtD+ zpRR?i8@O@^0wc*yYBh{(8J(zQu4}&pLf?1Pl!N3NUOhMqPpl8*30P%x!NA;dyNed+ACfPpO@}j-zc_7^0=P^`nz>1@eUSk-KiBMofSA$*qt*|zdARY$RP zQlx(Pp;{cguLH~@yP13c!-i!X!oZqH_*R;|h0PYcGe^fN0Gmm;Ar&i-p2tP>S&;d( zTglfIh^=9;g|2qH?&0iR7>@N1H@nzxa3QOS270b?m6?WyPObMp_*m703W{5I-{!g8 zt$^$kF@W#y2F~HU!^LIRZDh^%*_`6nkTi~-lsym1%izNstb3tGE8HZy$wB|LLk^)( zu#%3LlImu*^KNe2#JRUnfBeyyKq3>Ke0>Z-Y27%D3h7gBrYSPpVXZ80KEqa)6GqPr zn=}K&AXSzWw$-!gXTQ1Z9unRkVDIkI@)BBd69hNs9MI7J+-*{~7vyEX>n#$GJ+c?* zmu_W-iXJ+&F_Y^9(jK2ZY9YP!0o_a1*3YCD_z{`RNQX?TQUI~>aA-23DG&O_ z80&IxI%hOVZgTrCdT<_8WI9^UGsAzk+O>WmA)vC;d*T=HAZZ6e*L!*^)8#MRM6EE+ zf@R=gyF};Ha|fE9X#e~7?Aw;;#HO}HQ@e2+SfQX^R?#b^yYj#!XrG1Y2$?|5bD!D6 z6n2WuptZh@%!-_=L8ga?inh7q8mo6eX7Y0I?riij@Dl_LsV8Ixc9r9eCZB2mwkKn( zhjqjGI4+6NjaVbd4-CS@oaO&6@e#gqLiH^anAxr<`qVo=SD zSw_#$-M~)O$ynnY7aHs?xUZ{N_E)G^+`2@^DM^43M9jPLyYn>(9u;74&@%7js#L1_ zPn4ije~1zhvAPdK6@h$rRx)5p6DWOz*^&ykbxE-g7Qi8n(HFOL*|#wB1Mx4h@U|b1 z7AW`2jc(B9U1t^YTVv~1SbFvfo+MzH$w*V1oK6*vl1z?Lp=V!f#G1eHyd4;E_C!BA zWpv^ZK{&_rVwPZK5{-VyC&L{K8R#qQKlOHqa1Ur3ThQZ6`S1Tnq4R$QS^m#namFpP zu#JHthq&b~_gq`Bc)1x%`#da-%FUqkEnQb>FJWK4)>%PksujHZEDc(4=-)oh(hIZw zxFaj&2+qCU4`q9!t1M53o2j*&&>an*3i!xWNowzwdLLE3mWDCGHh#MVu4w?i=FK1Y zP57x>>n$xx!WF$el^2WWrO2_;${@iulO3CJEx%KEsGGTU&+~Cq?Ff-jc+kGa*GwOE-9pPfE(k&g!~?7u zIc5CR23YjXA9?(`Wbz>UIOEW-`la;v1xaZlvT39EBm3psM`D_PgMHY#Y|0Ef71uT8O{6OHGbD7d9F^tondfs%KIip;hMDP z$LHIVgfpO|H-5OOlCS$OD6lZg=l4-2acEeGv|GaJDtT6p=@qfC1rDgKvz}p<^W@@* z%1@H%Uy@Rpa!OKn?t8xmy%n#Ac-4SM3u_*4 z)06!63@o-Fqzz0kn9X9hZ9aVIR^k(2DSLo zpR)^FJm#_21Z%E3yV;2uWk#cN1xdoHYd}?TUHB8vSs`3Uxcrl8H;Nktb>dOoEIb&Hvssu%YodC3%cGdzOA(M# zj@`v7Q;FO(5{JcM*mq8}HFOi=l zAv!V(6m0mG?*rx1p?SzJXW@9X!Wc{T?1bIQzdoM;m(ojV%peZT827FM!W}gSa1Iu| zZ^rdfi{ma=?_kpmD|^q%_vP|?YhKf-5`NHAWgf6Ewy`}>8TIQfkZ4)SxzQE&>*HgR zA;+yTA==agtd`tHTP>}bW_dI9@=C>$*tMkU*nF6J9`YE?6Jh!)^cTw*rPc6pCL{gl zX_=!RmTY#aX_65q8pxCfUny7nSigo@4%3u}~xyHRFbR|}(^DbheT@8d z#d9|EM)_lh9CM0qQV?$m8q6Aar}>>cr`UMU;j3&B-s3y88DKl|DeV~X4<3A5=u%=$ zd*x}{^S#>prm@JiZ0pG>>pR%uTz3*6Fr|DaGnj`B!mQXH*sk7y&5o9MGTR?F_aAk} zqz{xw0&~bG8(nW3)e4jvZr#!I#`1vL9{B&y|2aobjhgnOxxz*y}%I{c58 z{{^p7&G`thgQH)73KBUb)S?zEUW~jC-wR!*!?2WPSV{Eb=0~X^ZE#`ex`+DT#mPUs z@UP^4EO_~le)ydlaX+NN%BU@%!`8Aoo0NoyR*_R2`nUS>ncUkw?%zDLDyGCXJ#BDF z5Lm2~-UydI>khRy{5%^-fQYBOn>@Aj0TYby@Y5 zk^VeC{$i2HLV=8DQbJ9Ef23ao5GM_kof;w@jeM@1AjZLV;InI={Zv6YhtJu~crKFPo*&0+#^N-rYRYFtS*C zOTCFWY_6pG+rK7h0%nU`mXbSa`dMwXb?x+GKC2&=?$!HhSyHQnyM&MhnGh~5*LOoE zTVYaW!oiezt^azNH1Ojf$23y|Oj#(MeqRVXkNw*F?*;adzPj}yct^w?l>l(O4G*B1 zs;zsC3>|bqxV3@;Me8e7b97WKX*kFUh@-O5YPb|`H=)+$Tbo*d`*;>-Kj&2NgXFdC zdiAw{s{s(~?SmKIvo};nt~MOJX9Grf;E`PLfn0re=MU}qEE)^mm?RyWJ~?$g3pNSt z*FMi?iR#OboE_yo?=|#PAX-@+%k$Z`lpYXrRL41UCw52h${ZJBjkL`Shj_y0Y*4hI zJ8$XkLfH;byztpE4%(mep9Z{#l-&VSOFh9HYsD>5sH0jfm>nhCyPCVNp>VH7%CR(s zzpOht-~XU_&jh9UV|7FMrGt}`Ffdl{gWB5MQXjBtlIxu?pv=@A0RA0a~EZ9 zf+AJosB4W5ImfQ!yZ?!(c=Cc7kB7Ye>?O@*u@b88 zkkx#Ndlic-3^<=kj&~|e?N->z2r2K`govF8ic!HDxo!#mpfn*-q@}=qOSo%?e1JnX zonuW66l`^}o(aBHyF2(TDtQ85cc8={|3)bF?N8rH*oxWk)UcLe+9Z#Hb0L2Xh@D)% z+tqvCd22O{URsrcqGh8mmV>>3QxHhfP38pTC(OpXUo%L1mza)7`!#*yxr^j=!dJ!p z!IPjdpyoT@NhM^W3?qB*tqSXV&bHcTGb0sk9kd%vPm^utzIaXRX_@t~j{YR79ODH} zrvSMzChWttgCX|$tA9c+nFFheroQriLH9V40QkLAdp{^Ih`0K4lAX#Fmb~;v))r(_ z5&+GnOjy`usKZ?1DUZq zYt8I9b5s2)=gdn2WlfCD_PK=Ej7g|R1}?`G*9)2i(nRp}Uy0vVT@oq<+WT)*oEV4p zvs@dAY&KztjYn6Ngf@y)yu0Giy+qoF7jFk2anoU4-T8o&-~Wa_$pr1iv%tOVFmd7M zfys9=*iQP!2lUZVQaXv6<1IpeDj;2I+U-qp3=F82E#tg>J^Heu1z;%(*ZQx&MTHG&qj75{(qL43C z%AG?T2fjKT@U#0rQ7>{+w2?0_l?TK>gPZlbo8MQ2jQt>+%R}n31}Ruj8avzuyUI2y zzZmS9K;KuEYZO4w2O1@A&kPz4*;!D zDO*O$6+>+qjNWPJbI8-*_kS9Akyj6Ucg0-2{=jTyD@sjb@9$TsBa8^$8wXxnD$ubp zr6&ONqtRd@%n3Y*lMLR#&3SQ26SfaDEl;k@IR)w*6pjXVbh1fvrjKJV`NZubZAGoI zD}x`7_+?)HX>*PSG~RQ>0tNu#iP2YI`-T6(A_trmkk&;Gdx^?hM@rk^yHk&&1rA3>%T< zT-GlxR#WzxH}S#`YshoCj~0sb2U znI8eI$RMSkkK2reS?0atyr6h4(Dy>l$GAC{qr{WRwLy-G1|ABqdUeBr5}Oe}M{72^3q*KCB!^@7}_Ut+KU#ds6x1hY0qH!vgfku9_q! z77NBZomqg=gx_eR&qz1=0%lWBa>6b7TcxNDtnzIwk08b7&RMNY^3hU${s8K^H4;VZ z4)y%X7Hg}kwlG7>{Dy<(KWyn96SX{el#@yo{p5;RPxaUD0P;DYB!KI9&uda=h$6X` zvT+<`J|F?UK%t&R8SB{v{WFhX`i{?*ukkxr>tADuTQJ@}(U#qcrfAXW>`(0sf2(qv z7tqIUTp@|?V+TP%X>0y&Cj`S%`;Oj8iu#A`aArb<_q zOgpu^NwcKS*WcUevQcX-ZU&h?l$CrSr<%AVlmXGIy)Q00-?<84y3T1+R0$~!+X1f+ zEP;yd;V&d#_S$pEv2xDb5vl|!N<(Xd{=UDwaq7cYX4gAs#yGHk`3*{>}We7VwQ6Ew;kh7J*7zeU52Yx4V~KK1}75_Wo*%o2RLo#wMXs z3?*u_qZY9+sO%XYm>)LkPd}6s*mA{o=7_;5PjvO3BeRb~JZU*IDqfP;8^q#p$aM)# zt4+3@8+-F7!9*SpUgk8dVgcr|&r21H({+C8{%2v&l0_xhScBPFKG;zHmg;xt&D;wS zC401mCUR$1&0qAlsDwVlIQbY|fvR5eiO}TYe9o}H+poR%h`{|lORDYzfv0j0XsMU7wXpr4 z!94%-n9LsAo$NKpE>MX3LaYHgt0hngXmWY=Lba1Nh%~Kp>hIw(46o0#JZ``mM?x>( z?KcDU_f7E;pR4rtmzByaGp0W_(vS9}tZVBz)q17Xh!*rW7w>i@((d>-`EHl_k<)Z? zEK;-cV|}wn!6s-Kd7qtrpD3fd3NWv&ts?nS`&?i%b}Gf=prH5c%z{?$Xyu?w`XQ%Q z2J=X$%ab>I+76(GJr^**$0J!%)bVsbwjnKHIIrl&UOv#r?CtsD?hhV?{>b=*cL0uP zopSZH?rZmbP-OhwTPPc>*o^BDo-*;YN}A8hjg!}7OBy*_0EZ^8Lm7+1o3*_DWhlu?-(1&ZkooVaS8)xMoAP8y6`8Y?U+4@H*n_bQx5sbx6 zZZWG%mHc;P78>lW$9f4o;X#$(lPrpGFK4zG1~T%;_V`cYW=#$vchAf5z$ln?7zlFN z&_cd1LeRGuX1X6g7t;9~XNJ$(h#myAv_iO@*DV(p;Q#t*@Tx%qc-qxzy11lFSG4C& zW7(T={SFM4fSfg+|9V=?U$nf7^sV=>>m<-pFc0CTASuk?0%X`SDoOeIeI3gfaP=9K z^xpnC-VG{sLn(Ymx@P^+@!!VlzgrxMy%1+xGrk!01B^Z~x?3uo+ggzn+PchWdwd4> zl(NCo?)`&{_U*@ypdsr7ndsOP87wkwE4iontI{I(Z2QFnkCi0hrLI ziW-xJ9T#Y)EgTzO=ca*yL1rO6t^cAYh{jc@_usyCSc3L`f8N*5d{O(du8|Di!mM{= zs4E__ex)ZKMAcBTI0a~zJa;v1l;3<*O*}L;+cmoe%KR;$OH=$~cr@+HGb-de@jcG6 z22PO8&|jF9z+gJq)k9L+i4=&v*>Lyf7jivu9P&H=mg$c&*C1^3D&~lJoUUZo7K`ho z(+YcQ8$A+dtU9uaBW%;QCeJWG#kMO95or0%PAOsE&cUovON*B#7y>5z6|uAE*Oh)s zN+Qs=LUSD#mW5Gget{xotMTtUtUA3=VgoGBwt92v>Z#?YY#GA=f|B?Ifn{&1(!AwY zA$@juM|P4Cr_Reb8!ZFP5K-dVYF)caJO7+U;n)a@HIiZpfH~w_$1Xf_)!$9W7;Y z({HGPwGW?N&4X&V^-m>~%Zj9((4v#3b*kK0vQO`Ruz0o1CYF-nwXU4sRb?&)0*B98 zp%A%^x5bT?0=AEUEv}P=n)w5>r%!)xO7Yi8%a6$j;-e0#kEVk|Q_PaAnJWwy0>K^Z zSXi;H=3hT{aJsfn>PC=cjfZ^NF>TsDdnO}n3am>?8$&=&u(}#VJ>n{9LAsv%)!qHU zRjg#AXO10hSQIOz-gRuZ9lF8#S=hDXQy;)>B`SW3ZBO35N71toWyV?1*P)+*(WFjY@^#?ZZ7fuy*I1wM|}jY1hCEVw#}G)aMD zt^Z*Q-HzOOzTIP7R{hqp)b{3Z$lmI-=Ne4-hhOO8+;}rOj60&hPYwJbIT0kC%rWNO z0i?lztB4Gry5E5b)L35}1dDVAMgte4@(Yk~BBOF5$uf>s*i%e3DRX0ty!SY9hN}Jd zotf=r6g|MJ3{2fz&3h-&+>4)_Z?_nlaR+cSL8j)(x&H^GbXt+`V{6F5f8j*=a@?}J z4&Ide?Eit3*i<{+cJrSbyvI9XhQ-^#sc|7cCY;d+Qh(aI;Gopu9JX;AGIJt?^wG^^nAg%Y%z%jfbZ(I zQoL)D_4qSD$1~M`Ba9G?-=k-SK!JP;=7?OIH*#Jc8}{mLB>59-I0nteHga0P$UE)# z78cE2N+1FN1B$_TtBs8YT8Ymg=C!10k1^hYW22#lTYM^S!3NytQ5(cqgdu;OIJ~M{ zdEMhGW6>YFMJ#25gy|sY~ zYf0=6qI_8ZXLV^oOP~@yJC8{ChfSMT24sKIR6$lYZt_Bu8B2Ow1i{bqmH7rV=Wr{y zPH>wLNsJ2S$;1akRru`>P`BHE-Ua9Bwk-loMVa@pjtX0yfDAM6=__?7h!TJe+nX2H zAHDldHu5TCXob$X3Bv7hV2+?Ol62$=!i>%n*^{9&lbzHzM9IL0ahK)@)MnB;;ml-? zLBlBIea0*fx)-!0p(UM%L4k7+)!0l}beN`zK4@29x|%82i|qqurTNih)v;0OA>})j;>Kd(@%_p5%8I;OA0SAzWmYfMb5HE znDTCAJBz!b9V}=5T>#CP3SXFD3@t-z0b^kCxpfp;g^+D)dv|^+lw_1#V>%9M(Ej*f zeGfMy)^Hsuh;JD8Evzpl*M{k$-{|qHGy9o(H~4=}p^J!tTn4dvj;Y}Lq_6OO@yM*0 z8Y2qZ{8^~6yTGfUk5$Qvpv8)4+c@+xSAI|L0~_aJ zfBr)6+zZs&A%m$A4@A=#gIo9BhPZ2VyL9-v+q>s#BAt*LSVVb=qyhwECpz2>J2?%N zHEjiCB~rQ~(WY*wTwHyKaf%c<|J=Ocv+~o|dAu*~`7iSL8K>BY@0|Y`)VgIsFudWL zZ`bYmGta{>rx-5_Be|JBt=IeVp-+5|gt*0fQ;4|d>t;b{gV~4t`jZeEbPnNU)c)Sy z4ds8>4&MET?c`m3)Xv;?XSTHN>esjM0^@(!4wF{|VAZ(08*mSzeQM`+thwevkzWTJ zv46I}&HYaPORp7jEpTxpASl54`JhSx%(mfCh5Vm{J+C+(X*8__t+c<$32^fFq`v?q z?rrR4xiXyH&)+Jp#LjrLEEEKF5s1k=1B97k}`G_Kn}=QU)(GXRxab8_a9rUT;HxPNs0gXp>}dMm7-L5 z(bh|{bTSr+eM30Z9TBIeBKzZ~VS>uXLf4<_j}F$>w4)W@Hr|g+0>}q^fh48e|A>~D zB$Twz=Cbq4-bJ)=aglPRGt0p`Y`al|%bfC=3vungSmt5<{ z#`dyu>FQz?ULZ@5D?8bD5|_v0B&JGL!YWKeZ=57tX3m*B!Cwf}Z(ugeiFf%xr2sde za(~FaL8Rg7CqIYmjlDzK=Av@vWvzULYHxuJi8y}5k4wd93@o@n-T+(m$D7P~$3LJj zIPX6Kuz}kyvV>fTKi)z$VM|J4X@}rNSrxQ`lbu_@2J9;ju|TF0H*@a33KrQb7IqWe zP3J7y0ZQt*uXVn?LZ1cUhZS(HRI2cMERM>|2YP1!^sy)|bgEv%q2Yx2mz-rnxK5^c zZ`1X4sfL61In*5X>hat-v&6W+r)vM1YzF=11Gwr29;*=<+X&SA#eN^M*p+Rd0in|g zaxwos_PVUUEZ3X8+}4=6-S2u8sv1@uKV77}p$0F6k>7&=Xe00ECl*x$yhm7jfl3fm zb!7OUz(jPlIv|D&xZOgma1+-qjC{+eMtALPIKHv*!L~q*aO$%j@o#hg_C(^#5A_ys zmJ{~5V_$c%p)KG1VA4DtdoS4q_u>gryFYg%N362TRXeM*Z|&vbgi0(LZtD-RO7^4p*A) zSm<88D)}=-V4osI*QaX!rnrk;FtCRT`nVeWOV?puXheYe(0o9MqG5Q_flwSm`$3 z_x45bag!OxF$O(-VEuCF6L3*LJCXM=or@ahItmiT*LcNSW zCFEnBan?~sPKCVBr#C0j}rZvYo_Ty_3A+E zX?72JD2OTPyE6ox2h`67A=$Ol6Uy7>1A1GWd<|FllJbloEkxn7ge2NyFVo&x{})6; z9rFeY56NI1ten0yd6?jnPpe$q|6sO={Hum>N7n zPP5M|FsRVfc{ux{891?z#=Xe~>t$Ow@#(o^V;x`PU3&i72|f9T4V~5Y^x;KHCk)vO zMtcl^wkXy*>pazrOvgqdWtX9GQJvF**aU|n8aw2Kn_yuX8;ifF%$5~V&R-HP>ny#$ zSrisJp&{~5Q>R=9lBtmX=BtfZ<g_rPzc#~~e2X20JIWS_? znN!R?Mu=00c21YAZetgr{=mT=S2wkG<4|+N$qsJUKDKzavus6vGyiYHX8&IR8Cpnt zDU2;KT)pjNUot;AN2g!Y44q=SEDLC-;JJRNkC^i6-Hx_hH6g8xvwyiI_FPRetiTG4 zBWH974vrRVFx6ZGKD_|E{)Aky)ilKKNTnc{2Yn6 zC6=}UpN%%3^4tP|LbM@|g`$i8SaWEg5Q}vOwZ2}l;C<6&u0v=`bPT^{v#KNj>^{i- zbjvv-hri30Qyw<<__<--r~_ZF$PhtN%C?EvGxz%aSH6qs9?vma_}MXPq443N`uL17 z+2zhRwP)|$Zs(j!H=aEs00xH&Vp^@_)Z4mV$T|$X)jjfhFYyDd{jq^VM~a(^D$sNi zMBJ??kJ*2pOG}tA3t@9mUTTMofXE4>lK3Go>XWi9tj)B*rZz#Z27YpQL%aHS-MQlx z*L#L$e0uZ9ND6})Ir&5;0Ewsna$Z-v#3N_EDKY$zO$ny&-&cm}!5i#83BSIT+{7P_ z8&ldSa;#g7=mowD@iir4zL#!vT00Bf_QL0mC5^i$CAz;+wO!lQRY@~xl&{FI78)aO z{CqQVGm6`M@xGpLq4~(5+yyX!Cs?z_a@>Kp4RT`_e#P2;Ru+i9M=Ly!u=0kABx;m_ z&CZ42C)8Jj{uEw3_`4ChyDHK8k$2cTO^69qo2i7*W()y`$?1vZw%?H0(N}0HIitT* zQRGAtk^;m-x9ufgy`E*>c{HAptB+Afg2H4DwZ3gD{BAr@OJ7gge(Da{jf!18V$pf@ z^}bL3-A%-zT#tlWY?4i6-}T7U^_Pe|$Vx(S$cD3J5G?R%7KSNbi2r8T#Qg%|%depQ z5r|7?LKYc*`Fl^WCS%hg)}lcV7f!KBantjMu>Da7pubVif1*0^Midjlj)(2p$BW*d z=O=c~TJdfuiAjzbR#_6xm2>|!<3T0Y+`Btef?MyJOao0yTt|g2>H6qO#RQ6M{-)mz z2md$YALLNYK_%AoX&imS2WP#&hVT?9;Q_;uywP!UdA`-&{qs0uGBgpB z6vn{X@5%U)meZ%L0$j&{L|8P*_t{ekWd2JpR7``94OsvqX@NBd-)Pazzu*&3n`F-v!!-lQ}rj zu+eh8904RbEdo>NRg}k2G@oMO<;T*!hNW#X+VI&Nu~ThmaCKJb$0H_FLiWAIA#ihu zuAqmyrZPHlZ`fSLc;Z|NLlY)U638=3i&(C*i(1HSWprBm)U3DcFVOdF5H$V^_-eN+ z1iU_9Q~~XF!&hH5)qZt~r9`3nb5l!B?3bV-s%*nx?|AuNlMp_{ol@dDRC`_ zC3abfn{4iVt^6@U^IG_B_F*X8rHOf~@&8B=Gl$W8^ zuJ;X>1RfD!XE}dAz6**HzR@F|-UT^*;4?ohC0GdHw^q&n@EoRBn^;{0F~!vn_A4E` zbNEJW9J=V7O*5dD5Gz1dL$U8~D6n9DcccHNTYBkTBw&eaWE=WNR;9YIl{KsENgAfU zk^{`6WcU(vuT>+$8+F@DH|e-A<$mh0rFPrTVsE7_HOhltbuE4)E2J3fGY>r+-`;t3wF(`@28Q0)$zO4ie+m*GNS zOkW-os5jdMs582C{GAnmNyJ8bf{rFtfFdhU5ahG^%G@6yW42N@*muxb5_RMzZ}1s9 z{5!tFdvZGf*ONkFdENBq?ai^o5^B;=+qeQ|>v>YZQJKT;weFqkKw+Q8LmW@+X9#pZ zcJ{dQO=%ne8|tN43v8VbuIDyI<%{YoAh^WcyLvqcDnHv3TL+TDsAz{I3rwThG(L^* zjfV$T2(Eis+Nqp4Vw0T0t8_i*zVk6U8~|}&Loi9g4ten zI1p2Bx~K)t7XLa;JL`SS6&L|X#l)=H*Y62h{BxPJ%~Kc{7O)2 zpXJp#_wAJ3pZ@2g`qTbBRw|)oYR#^9<1| zHR-Nklzl39#CA@9{h93XM@EbQJ6D9I?sOEYmaoHIUx=ajdXKr%%f;3OcCgA0hGjrd z86P#t0hXTrKWxx`MU?Z-I9W8J4zQOY<8bC-_2(5jf`8 zeh=V5+*4-Xlgld<>3WZ)b}OJ;x++8@g*@}z{Nt3w>?%{aCu%ky_-^%%T4f&OC8w5Y7d-< zxi4Hm#|b7)lWY3UAhumxlfEf8Z@4A@x>WmlzWiN7jh>GqVvqhCtlkrN=8mDvyC+Y= z!xP?!fAjeA>ok|?74gH@CUR0pkMHci@M3E3GSKqr9a}zhv_9}cT;X93Rz_21S!dC*2tjH8aOAq!%QTWj9@ z297RjecEiVA4jRM4|@sf1vsWY)m`q!n9=gPIVD$EFFO0B5BfIT8+exW*z4qr@HE8^ zeRW)tC{eNfDwn`0g{Tj5cX;K4#fYTXxmZ@1*M3WRtuso@f^k_cCxLb=S1$wS6f#r+ zl}d~_@FuN&FZFNO^Wm6#yWe%$u=tNPGoR7V%}jfdw?iM|r3B=C zeN;vbW!b}81gC0NT9(3O!3nLY$6tqsduvVNei2_+qzKaf+|_w?xs82rlxVbq{I*Iy z*_ai4sZ2P)iob+tJvi?sJMI3P$GZorQH@TK-pF@RH#OaNGA)Q?&XVSiHtE^wHT}Oh zd-HH8-!OiZR9a-(B!#KS`bD*6F@qU1(|LS<=lst3o$FlZI@kH9#yd0byzlcq&;8u@=l%$cVS z|1fLy*Ej1b$nNgR|eCTQJ z>qh~seEq=BwojKgmz);vK3sKbfvUC-jzb5M+a(^f(Q55w13hN}<$d`Q8l$-zY*6 z=trs20pCd(gSBidTbIJT@jWl9zu?E?(2PyOX0AySu1FyMEgrtPcJtOtOHKa*;32y* zm+=w##Zkb%niYPyoh=8t_vnHn`v8=S`=3Yj0>UO=;AmL-@xGh45C4k2F+LJzVBqvU zh4uw=;X>>tbD=CfC3|#2Qtk5%#Z1hS^+{~KEJEo?@7psERB3B)j~&k5x=XrZ&$XNZ zqvK|(#@250vtEtCn*ARYZUitZu01||qZyFJZLA*-civH7g${g{8V@hIdFSThgb!n6 z+nBS^r6cknFMQ`eTAhtKj{A!c4^QC>h%T5*(avX5@|Q0;ywi+j|0kteS-U5Yu_JbJ z=j|nv06|XR&oL$vC^5XqbE!^ynA8iNkkpc=?Y=De8BK_Z#Qa0a*k_C8jv|t6YsPo( z&uBeEZt6=9Wm%FMUYsb)@B;wxqH0?EzuvWxWh*%Yh0{q5CnOfLPI8PkNe?d&tEyw8(Kq`YuI+jXTKy z`?P)BCbe)Aut8Ggdm;6rj@sdpNXX`d+2yAWFbKYoS`-{?Qq6<~*fwl1hNbWIT9?zl zrr#!IIl~&S_xu3*_>(oBu*3b={3)PsL$ltuKQC`GrF*L4f3co+-TT;aq<6VQN6G4s zKkG94+Q4Fx-QvJIBsXo4#yTqP*L~%=5I4OQItZoVnCCHSgdK9c)a*h-{}lb}Z0m!4h?^VDA;KB4WTNs#Gmp93j0 zw*A5k_i0|@aF@ihgWh`;gQ35;zDz~EkiKak1H&_;3eT^Af~tA*fPhw?=1sLBE6}8A zV{x)J_fqOZ*E6*)0#83k$!X~<60iW_sr-h=GC4F+?TGW#o|BSRhvN=dEHw`ioFQKq}7}al86njIs?{=2iv*q(b z#m{voS~~zg5`o&JTi!MQYOhMX>(D9QGhT(r*HYha_m~^FJhWo9>uHz$$2XY!?;l}2 zq?V-hc|`*k^&;EvZpNNF2?S3%0H zE0r(Ls`AyvY9N8bl>8kKa_I|ENibu?#M1HKtAlz%&1yXch0-Dc21<}b#10TpyY)&^ zYu)u`r%ZEvfkWrTr{B#;L;Zeb=^9T}g4rBu0HfJy zP_-%ba6qNvZ0n03?b^v1Y5p=!@}5~J{7AXLBl#>81jAv%FV5J#%@yfMUeP%=7BEw2 z#qp{@LEn(0q%kb3rH{+$|4BCS{|(8J;B1b9V(u!tBSSu}8mdF`-Jf`TkHB@udEPU* zTGMY_zEbqh&e=U=w0fxy^}sPl-v^0$Eq0aCX3#FB&!PdTGPt^TJ^pbd(wYrna#16u z#B!8}zMZJp7s^jH2W0`SSzwPVBHtMpqr!A$5_>A5Z$LU=7;l4nv?68qt884c;C$6X zEA6mC8UsX9KY{ch8`r(^YG4%!ZW9eO;{IZ*c>nk3P z0~_%>1Vul8_1yFMtbi=mAIasfD2eWD%J~f687eEJpfW1?Z3euOE%ZFmq&8CY%>_}p z0wm{n0SepT@}D^7{<*}tV0eK~kMo5$Jh8PLi-Y8QaO?CN$h`=^!}sXdT8;8-&k0m4 z!o#pVkufo%=w65-cM$rnrs{Syifl|*-l-j2Q(v@jUIXb5NH$Y`u3V^_<0zR8NRwJi zHA4MMrp3M#m8TvLqkpanI#y$9pi=<-p%RQ?n5gtUQamvnb2`dSAa_iaFo1%Zn?E&=`~O6bNzTsB;%*-jj3mc z#m{0+CyIfEG%}~sYXVUN82tTr7R>g%R3`8PqxV&I>6vrv)6ajTRH||?Lh=y-^NVCUd@!vC(V`wo<&+#b>S&69X4N( zu!GMgCQRrJ(Fbah;YTJDwaD+yhPEX8{Kwby2_YwT3=3~Zn@XN8CDvBkgbS$xv(T=k zvX-+rQ0N*wj_68$%$Js_B0 zIGM*4`v<6}2l86Q`|k;BP$jL1gscUcD!TIO=PgS$0F>iE!iN%i;Nk6rd zeCp6~S6BlTztdlnHRqtFbf07FeJO{k2>HJ9ql8riqOULUq3j%ub<9!(IOk1&YJySM z^#6M~`zM7ftC=u>7LN;`Xu$Qxz~$Q6hmIV2s8f{WKFHYZ0rbo(qro`DdP(%PM_VjZ z(~DyfdrYSz99N-0DqLcp{S4PQ!^{>{`Z4f~`3vCVu%SbMq`uNkACUdx&3$$MQ*i`n9J3%ZW8%<-d!#|8;l?92zt-UFxV+TY-PJ4?=!u6QX zig|U^rqkXR$h!L;`hHnESK_(l>xcD>1a-EZaIy=2<4W-xS9jZ3i$0tq>bPsD)v#jC z-Ox^$N)X_9I_3Cy8SyJ`;Y9MPS;;~7ofMVps6u>oL%T|KAB>=Pg0X;M8zqhY)%D;_ za$tZL?3atlkrsWWPifmY2$|%~>+x%*mGiC9{Uf|+5l6l=F&)21r(*9h2{SdRa*eSk zua68MepoXlX4y3KM~d1UdMKLuj(H>@=rp0v+xZHZ!qD|xfNH2r;X3dv`vhbYEFcBe z6zstB{@Vv66T?33MQ0!F&TmQSZw;O^TPK)9DQhaMbyQQVBWdTNw&=^>a(buMiRO4_ zAYf($RqfpUd2->Wjgd(+ygAsK9XtnJKM0;emccf=fkHSj=(2S>NNt#LGyuZn#5EP^ zlKtt&JP)W0Zg8#7SgyJK<=E~*h0E#(L#IsfIfEdyij6o268S04s-W);t|>*d4p$AU z`omHNw5vZhF1XDVITnTZ2cBR{oWOOXX|In~O@;&D#^Wt7vgt~JlPFK4w?*|Bz`l$9vvLflp_Y7aUvFkbi-(W0Lp=5KI z-1lnS!OB(0ue`krMO5eonQ=350gpnClDqE)XVOJ>;K-03KXH~*MEsaDssjFob`hGg zKQ)f)XO(xWoTCs;G003dA-o7x9wqc*S1He*4%soAi*;lLwX(}l!6DFDSN+|? z&)aSv88@bm|K%7Rs7ip)-tCgt#X-&d;fJE!TDrJn!?Z zN?Zq`Ch+p$=re)f!*Z~bH*pWq0u`KF&akz_*!IW)=|mq_!OeOj7D3!&RJ`qImsRHu zh+B@}Tv;wY*VJBporm{=Qd7YVJz@9!nJ@~veaFT2?zYwufhcPtN}FVz&2D{gq4GyU zf6dg%S6RUu1gK%JIbTVv%WFx)9xWv@sFXsxGmq?u7d_|I-TIKK>nnPqk0%fUcOiLc zot-x8hkjH)#meeG?fL3~_6tYa>A_n#_wDl=zfX?#DtPbgdYTZ|udmq6I_K8O9-KsB z?e6x!Ln9iK1qNTY1%lj)p^J*72ALHSKJ+1`nhT1#9-Z_)J$Sa?ID;$7;Uh>kd{s8* z!|a3)h1q$Jf+2u!lnCPp6Fzr{0B}rCz{GC0QvjPisY)Loq87J;+8iB;qB-x)iw$Dz z6S4E?Cy)Me#H6JF*CAH#^#YT$^JNwh_>UQPXT4uk_VrntFX=)rX$f?{fK%@_fGV zzlSG&69Y9iDaXFrgy0$F;6E)i%^s+?2f~&*uJ%9MLJh|yb-Fa&zVz=?V#-MTGbAHK z^gAQuD^;1aM}y4(FP$fX$RLD#{U17cu9T5H>VOgSOyMf11isu_%AM;w(qkI}) z$_q&v5^nHknz$sJ(gQLJ!!@4-d?f0NdY6AL&)|y5guyq{C>u3yF0Eb|U&RN6h19FQ615&#J#MQ3svjf~G*EUe&x8yyrInjI z-Tt);IBVkxdV>b^g!DImzcJT&F0r8q(4^;s*kTEh9z`1#6_4FWPbBWX^!|Y*JW~yS zkmhf)c#rP(*Z`*;p)r@zY4Y23*tEicrg<)5Zg=@4_g%FMpwVFFG&(SYQdE$6q}857 zSdB@RdY4QW*zD@~%keMIE_9IT+W3Wj)^U`Lp1B?t|2jAp^su?7c6O556{{d4`%F72 zI>Fsd<6zu!$HbJ~22(BDS-G!d0FtvdkOozHQw#|@YW_|f^h%U>JLU99o8r^$ zZ{Z)@ySB*G8EW>suTHIxHXSKbU^8nilwPUo7&5w&?Sls;a4ZS-_n#U00LdTfk5T@& zlgupoU}*Y{KwqODvgax!8z-I_8+vJ=1Jrd;>IlMz4$YakUk{G5>q@eP*cedx(dDGEP; z{=E&%RPhAnrmhZO>EZL9#>Y^I&?DdUtI4-=rtGI*oVDSKapF{oMGZ2YI7=F1SWe6r zPozs<7z*jMLBKFI##>kCdY-uhIN+KCyalgJvknH%fV@B21pvLYOMw9NCEYK`_yh=3 zAlbRL9k8+IK&#BU^(m*Y`!@(TSTKpI^_|n}0g|UlWGtK9&SG1KW+c z)%|}(49?%Z_M7nrhT&F*zhkU+{x~Zb^YZ0^4jMF*fAgsJkNN#;=n?eH=BeGcQz-ey zTs-@b3^Ma_Wzn;P8X>k?C;%8?LhNK%uXaQ9ic=4uAMOJBbGTr~Kf6b_POZ?7e5$M8 z*WF)PW*2i%mAZEqR^tQ)j`nB|z}i0FZ~aDJC(tkVnc(l|i|B!>*TfN$CR?t%?DXXt z*b7kIzE^8fqf0p~8(d&^VRG3U~t) zvSyL?=q{xzdswNrw!ytX(Dqh0?Ff<-h6g-E4D26z!KCI|n6MD`o5{$b@_BS!|$07d6!jE-;w zG+YB^Kob9Ho4Ej{l}-Q87VG-~g4@*mE?Huv zfV2IDEv6)}b%=p84ff-ms}dFL^rKjikGqv1=pE^Y8p&C>A7d5;AziPFz|v2(OLl_M z0&I$n>$N#XkC}?XnIJP|HE^tgo4}wc&H$9H#0YN`u#*+aDRg4 za{^KJ%@eaWcJ(s9UkUF=&F_ zJ#Y<#j?(gjs<7}|neiW^!yS)~)U3Y!g!Ld-6ICD5_BgLv(%kjkC0im6c(J&EOJ|-4 ze+6=8H{aeMjx^sYJSzZ(^V&7nz0FSHlJhe)Aru}1Ix|cso=da?I5KQ-J$oUt;!A^r zbz=LB*><|~L_!K8_1}a8(s0HjR{-^Lv{h@Ea2ulDSYrVQilr#pJK(SB1DnR-Y=gNt z27{1|L38JDNza$Tx`n;X$+imboxNd;?^T>ZJ9VMgE;>3Hn;qah1Ym;t_AfvHn4`|| zC3UZ@!Twh>i8@CP-T>9=I#b>;oKOs>&)o}xVLIZTb=>t_(7{lhLmWZ}IFt(2Rwiz9 z33v|XWFP#G0Q-OMEdF03hX4D))#i=Q5iM*)BEKc&$f#aqZ$TRn$DBdHcj*k2)J*aD z7OLda2L0?sdr4EpURY*;?}b6F?;1d?A&eP|g>CGnL;Uv1HQm$PA=q$;^A0Nj2%*{ZZU}|sE zsjZLq+UvHg7Nqvx`zexo%?}l{Jzth#G6q!sNIBM%HEhz4323T2vYg&U1pV3KOQOh@=rBWzttGk9D4 zH7RQ3fy~UFM_Pa?xUPXZy2P{7Nz$g}*;S~#0**WcKt~hQp$*-^6jIWSYOc#4cmt7s zEU6^l`dGc>`{HciBXM2Yoj(2WYUj1Gj-O>}ELUqMY=SS!f zOO5}f!9mmq(M$GAK+FaThlgz6mj0$ARmfe`E1ij9Y0uR1VO?=4fuJ>obOhum&lWV< zv-eyk_4C+dn&5#kY{mqN##%D{MkK^9nqsQDeZLx`+egrfRb31g?~-{Xg`O74dlhu^ zqPJcf&V10XLEeU(coa(0d^j>RyLGYB9}DK;ezH=gR_WE<6NGUnsnUt2;9XS+7x`o? zpQur`^Z4D-v3$bQ+6oO*^H3eF4FfZRo}-1#(`REDGhNRhsv>-fCS>E(*sm;5azd_| zuZ>y~3f0^zrDqK1nN@Ya9qRj2sYXDz(;X`B^pSj(f|Up;vMqq*9#~q6$4IGzE?pkj z35!IJq$O_A6ZEJfrlaj+0U#g4f{SbzR~$Ei)$g^ULVhqY@U=#3?Yuakz%`^Y*IDSA z0XiTe%zDMt;v?!c1kJ@K@~?}pyDyhk4fIKxDOIRGivNi z<1-h3wnKd-A3sB)dut!o?ID@RT+->X1!iSxh)s|jFeR8oBwOT1z0Huk0E)dwHu^)v zcmatSU7JySg-jq2(LPUJ8dZ0 zN*N-9U8$ClyxQxvw0yGB5sRbG$K{&=+2QaZ`D1v&-IxG2YIgX#1~A!#X=VTI6JCM7T402Zj9(uTJkL&*k{wLr zH2YS>E6drYog6iSQ@k!D)M+V7qLxT$;ZDIEOPj^sX|lLSs!4&k@5{LnCcQ+$gx$ng zO5+jl`?gt060#lmT`sl82fAB$50@s>3P*D(zl4Et7@3K`weI**Ryi=;mttTM$JK^B z(K!`H)I7B^P?$MEUA*Q&f$22}1Ra0$NN~eCR_V(R`KaKbcDMNguUf5cQDti%ZQ@Sg z`T(O%bvDxu>LYk?F|=JIv3**7z6PI@dt;041BR`dvDPenW^k%9Itqb1q@ahj{hqPs zo~XG|CI75dR@wsc$F%`>OzEVBNuJ-?87Rx8&CEF~{2%RNHaAm+8ngc9=2TGbIBcFMKvlq#Ot=J;%A1Y3)4tNhFR$-3&|*@Faa`Puq(Z9@YmARJd*}YvSMy| z=)F=#=&?S1jUUrq5NPRFn^tls1_KtTAn9 zy2arBUWbO9V3}S{DyfPNew<)~gu)^-u}_IPSXWMwXF?DdR{7U;T>JV$(6_6Y!J)>D z2Nmx5i~ew>P#v?33_lOlW{l#4R^h0fZePFB@4sW4q2or=4)0}@ozh6Ky7*@{NY5eQ z7{E<-G_2aYAGAb^8v~#=f`RvE`z2EsmmRrUtS1WH6(Qs-GMwC<<>?HWhw zol9|qyW(G#a{23MNA_#d@}i#LI#LZp((-W~XmWQd@8RuM$>m$$#G=34?3^#VB70rz zP^Z#872wn#3k-Z^S_e`LpKN(tP^mt}1M7`vM)?JGy4>FxAb4c)0qH9>2ZlTmz}eRy)J=5fXEEUGYsUJ0n@jVjjQmjuGMl^Tt^cm*4$67o znA|QU6D7BJ_hUe%qGZ7~3P!&6ZU|=gd!IY8Iznw`+lUSAQu0bgIm2z)V8&3?z*4rW z-w&bP4h&h;2su6EFQ4V8vC5?Nb*FFX_L-YJju2s|USKDA$&o1{yCx5Us}$0=4EjPv zen!A(ovQDuvRq>wGIBuL9w@lm4`&5Y0v(05G((3 zOiQW&eyMitE?WXCzKqT#v238*D=08r?i1RzMBDFu{k!5$q`cdx|2{1x%WS6+h``mB zx7;!wI12fFjld4TE>hS@z#HRLduL_KTBwHEW2D*7TTm+re>pakN_$40JjJf*?hS7~ z3V#T<2Jk{~xSdr<-u`%%6;DmJ=TJ?VL|}iW z1cH%p?93i|`X^oqLH`3`(GlxlAcmXC__|&20dA&(SQKn73bFT{cYFHzr44^MVwwAN zcSW71VkcVLSqfl~GOTOC)d%~6`rwWl?qy8g_(_YiF{`*b0BxNkzs{i%=B;2AvPs}f zsO=RnaT?577w(Z3H$}ijc?|SL>GGd#UmdLa15YuIYp9c51C+j(epdWHT&=~UWWL|i zs?uLShRKscJ4R8|FCl#v!EU{Hy-tq2H=OlsARgCr zb;@qJ4E2^MK}YK+Q{>>tkRB*&J**V; z_dvM#5vlwH1hwbR)Hs4pyY-i&8vVzhozeGc#&+9}_HgppH$he^Z0!};3~dUZXu4MY zsXHmhZOsh^$6gqBiT&Ne+$XyC^Sx4Mt6lo5$>WtE#>&+n+hxG?Vy=6*!9DaE5%|rWRMFir$aA4><82?

D`ZW)-?t*Tk+H`p!&i2@0gSJD04mEQ)+N>(m*6nU> z+{#n55Bp^WiqK8HvK!PZZJK^Kc5`sg#VV4)Tg0$n@EvY^hz5Et1h`6A3I_PC44Rge zWBUV*ba|WDEo-{(C)7Ohw7OG>AJa09^%1@UWxpDhD_YWb2+9o7A2R?15-@XYD8x19 zEe1V4_D^n3zdjJ(e;-FHAub@3(kzAVS)82sjn`G-@iZhU%}&mFIVX(O@kAc*5jcII z&;B;QZrZ+uxO0gX^v~CU z-sJ;0vFVaf!^|5ANbM{jr%-D_=wpTK=x<2jTdv+oEi`R^dN_#2B~k>E7L_|#kp1as%t-!)m+jnua9D$iZ|ZKA&@X!lxlQ6oe)S{md+GF4yw*qDN zb@`bE^;kpH$c(8m_0q1qR>Yh>tp@4igc>E5a?ioxz)JjpAjsb%A)jD5 z+V_&+ya2<~K}i16NBPXfua8gw=LL)q@BJnw+Q8`o6v~$ck!!O0gUDX7s`8RnQPjE$`z04z^*Q)qNYh zh9FG+o6AKXl<@QH;jk1JSK>(GlZlppD}MD z#m>dxNRfK#2P$p${m|V$JzR&F-N#DRG6U>U=U=Qw=#y9$Xo)qf@0;JCqh)vG%7@-y z7|RzsM+Q6Le)j#XkD!y`{KYKGp1QpgEdVGHtthZ+{l+mCwP@wWMid=rc@f{Mop@+Y^sp{ZGwU<|g3NCwal!kP8lGE7`p9eQmco3Z z08NeUi(X{e;9#jKngB?p(L<9JH`dTyk%;vWWGGrX1NwkO$#w|D-5R`MRyTzGC(L6S z5XS`M>p_6_Y_HsIcrtOEQA2<%3W&i!#G;T&o6N&5YuHI=t5a1Q>@db{koeiLd)`b{ zo)PcD*Ly$a2kKZhW0|lW&-`9j{47ZJTN&v!{rrvhFgy)S<+Z6dlo1g)+_}Yav2xV| zt`>HwdBjq<5b*mM4%?eN{N^C1N9zqtzNHYU~sa21x0*}|NTQxW}DO29*`9QRR;^? zpMO$Cpadp3^u_xlN^u+rbLdw9>_WAs>*$5X-r(vL{c;Mkc?=oc(kU)Hi6$up!Y*vR z>J)<;nq;8|PG#=$i==y0+UGi4Un|Q!*4PfBXQcV-IuruC;H2wCj6i`YPG8igZBqCB zwm=zT1O5ha zLPjawI-LJVD5s!sHJ*#fI)oXC#ZzeFj0xs@R&L1Eqi?yJuXdb$ zD7FiA=J{uL!<9*+*X}Kp`(@j>W@c8wbR~kIyYRfU(u)8uLr7;Nl9|Px?gT)9yN0fg z3pfv1=ix!$vWVmt$rO8rEQz#@*j27nRg!Zq-(>R2F5RLE?J$dT3%i(I6F)M_R@#7S zB*4T0<^h~7XMcr)DM2KFjc?2y9|Z{*HKQB@TgF@Yv)sx(a>J3&>fh|o@KHw72+XJ& zXjh+qYFi*=b5X}j8>r}=m%nhL-O31WruJ_M9&nu~r`IS{#Vxn!bP*9vZy@_>GjO^? z<*Jvlk;7+6UW>>2;(Y(3zqGO?{S0%2Q%BTpUyP4cSY><4V>LHVI@Bs}HTtxhdA$Cu zur+qz;9+TIq-khXVhkWRhUVL;dn~{*xg?B;EaFD?kylfpFN0YUoK76s+|nmPvlMmC zT{?NVCIMTTUluB2P{CMS8^yi;=iQfU$jmYv46v1)HLc%+CBsSI1BKUilBaDqD z>C;%3==}myQ+=ihakp>Z-tXndblRu>|5^G?Xf#Cm_71v>@_31@Yt8Yo0+b*AK6eeQ z7bCGFMAAUbT-idurR%J}mFvl_A+8t@IrV;Ld}G%MuL|?F6QBnxPq=>?&2e*#a*TPg z$$|lxOnqXjNUsxRizh(CQw|3l`>;PjFF4Sr)G9qI{OoVkgTkuk5&s6bHNO&{#ls(i z$I169F~l)g9hE{CK2fr8@`J!P==T671V`U0^(&!iT;!|76$?M|%BYvJ9Nf0p;2MdAWE`~(WTz!ze?S^FPgvbQXV#Dvp_}6ZeL}CY1I=hzE;Yyg zRIl+Ztpq&XuaF$HB`WxEmo$dC(SBFleZ_YNByt2_$Mdz6ywvx*Ts@lw7_bx#=b=p| z{9(V(TYkGM9Y5n4C^RXn@+2aFXy|XS5Ga;JbO^W9dI1D8G2Ztxwb2 z0#WGA$krcKn;_rp7 z{n6EYTSQ0$01YhJ-+sT7i}KI6`=*>Q07gTP>ZuUd({Z-d86rEMH9#%|O$*6NZ)bUm zp{6?R1SfVqImZllEz1`yM*^*kd}hqJ`&&rh4ePni3*LA*yWX;*tb1uY7$Ux5pD=C| zcK$_)J{-Fk*{|QVDQ50gO2l_D=)(6uO>*n2k+_+(d~u~Y_JCS?&zOi%h?T%8b!IxD92~&Y;$3J7n`%kv;c5PXsn<} zvz|(WUJe0f#meISp8JYW=Wm4{cF=cT<;sS*2?AKgiuA3(8x4Xu3{G)=?UYTn^P#8S zSq&u2VZrjE(zPloUNK?iR)iY4bDJ@o4|4k^Qkx()g~df*@N9KIWX;%(;Won$b=5tZ z%Lrt@{AxtIJjCRM+~&FUD&e3BWR77G_W($!|Mo2{l)04IvP}g}2PQ_nQV!rw0XNL0 z6L@(+!^O-u!6>uDAqOeCxZu{z$T!uAF%+nowOCq9q1QSl0z;MMyyPf}V8)niQIGw4 z)V7M=tG88QWNf0DYOTLrxI`VZoPoJcZC6iQ@ZRQctm*Yc<43}`PtGzbgr^s;$seOJ zi$A7WA=!D}Hra&F5Hoy%bU{b8E^bHE_*wZE(q_)NwlhzL=XljfReyBz!OBc9<3m5@ z%4|eiwYlY$c72J8r?HdqcUD+_O1Hd@leSenm&4P&z2sM6CeKTqweIIhPWC`Om@+%a_iyc_tmd* zQ|lb0LN|wU$Kgjs#qQ&bA!;hN`-Tf`xAJc&Ms*Cu@N@9^t}(oA@9vRCZ1G3WEa#0kg!f;vvNl=Oky21xh5$2A ze@@yR65B21u>eqm5XUCmSMC6wWo>rmdJt^7D+^)VZoYM}?Z zaPqm@apNY;#wO4dCw@GGb#Qi$XJC}B2^70<(N*UNM}`knm-&g)Y2Quu_8*pu zW7%!us(7j0v;QjS%*n=wm(@T02ZPmfS6FT#wL!;O zIVXkmn$*?=4^)L~JGupxweg}v7(-d+F2;r1?%U{6)RB-Y3uCiq-pb7CKfkUKYubJ= z9jVxXF*E=;e<-elfitcfl*_gJ_Fh1@&F?rIbh0THE=)D$849%alK&#v?nz)WhQ;u* zpWhcF?_O9{j3H)PGP$}jCMH`Az{*ZNwp}=k@62G>ebF2a2#HXPO0fiH zY@OGI)ci0u`8nPYc^0r{f!5`f)gW2HDOre3KQKrgU+Wr(1n+YmhnUOHqy=2Iu6)YJ zq)Vcjgx-sLkd3ZMcoU}|0VOI=k3X7s7YQ4V_5rw5^85|e6|WO20S!2_$y2x7l`oIm+zV zQ-DUNztitKDkn?X?LY6dL1Nuw7A?5)Nk0YO>wZi18E2RHvR6Q$&lW5;s$1yB3tI!y;~IM(^GiXs{^j_9vcJv(i#`Yhm_--@jS-$t+(6CW z7?V<24@oANG&ygJsPA|D%zjxZHn6$dH~8lbT|qEMN6585zG%W1KUBC@aecxOM+Qst_7Q0g~6}uFihyq@6|#v|cyd z#nrzV(+uW7bTK30z*ooO*3_r+pW?Fe5ThI7qL2;?J~sbet%0K-pAp)B6Ghrd79D(y z_ppoIWCvPi{h~e(_?3@BBq%rxer(C$jfm_41BD2n-gAlU_Xw5&h51g;v5}=A&3^r_ z9&_1AX?eyr6}iL)LS(>1CzrL_*wP#04v7lR+EH>A?FhNjKz*wA!+?n3=3pV%>@H>a zYuHtJ^?Xw`4FI1%H#&LntJIyc3?Eo(HfYU&814~je#RXiLyQG*)8}95I^{1&THKo@ zSz!8gZrj^Uen}&&NkLC8->KCFoAqzy#AT$C-IGmy^iqjl7O3ZxSVj8y@5W|*_anKo z;4}5DH8yL>f%R7PS6fj=r=4+Ym(jA|{pcWQ`eA zHBy6Kc)T53%-SDY393o${Y)1rEF-m6{TqIhO%7iIlY`~_uB4sFNDpqC9lW%x;B@rM zd^C4J0P9E3xdU^g?V~-M{;Z4BdB0R1ISCQ{P9Grp3GVitqq8sK>p8LLX<0?XISFF5 z`^TAC8k1XMJ{jCx&Upo^TvzRG!~NIA5lsmbO~B#1bjrf3zU}HWXH0+e&4pigc1JcA z0#s96lkPExYe&~V!-5_?K6^Z%)%DP(^Ul7kUXnpJng5)7i+5gkj*tnL;JWS<&*SeC zT{1D3-kBW!t>v@aJE7%j;1ayMZU!ReE!~%6fduZLhs?DodmdE$8sfcUkj(SDE(yP= z4}x)}5%m$+f?enr1dq1NBJy{BZF;4Hk4YXW8|0HSLj*ErPvxs;&HQGI=Npzg4k1m- zc)sNR6B_rzJL?dM$*!c2C>~HZw=%%kGQY6!I+_abS-D@3QnvyBTVpgt24%C3Ewud8e-WmCHrh?cjM zO!=C4yT4*gQ(#?>vFWg@=cR8h7-COB5?UPvJ&g_8l1(z@*#EXmB}_`M!@f;G;2hDd@;sLqeYIfHEWeKLp=xe!EcEP&~=6MoTv1(kxznw-a z#bw$9bUCF%cTlv2v)#$FRZ#eP_Ng+H0Dt**8kIc0PAy2eQ{~kFCy}L~Gnd{Z#sv4On^xOY-$~*OqvdwLb&45pezWT@IHLvWJK`X% zzb7bVEkwxT^CU8E3wf|Y?2mbdwQuGf8)u-hi!ZvxGdE3|p!M}GA1gth2*A;l-J)SY zHKiqL_%BDd?F#vNeaQM=6>-8vQSY1itPqg}0WQ|etq3+MU8-slW(D?4F3QQcm;a~c z69B@^i1RH%s3RU8sUT&6ZSlRtEeq$E4uu)T-^3*LIs>14D%#C?@!qDHHf}~AUbp!e zEG2mb*-2iQHaC6y;~KzNzCppIo3v$69=B#KO&dKsOMQVLMzL zxp@E9lc9_mfi>!i?eXyp~P`7`rsih7EVpG@N`SgWjII znQ-8@8{RSBdBb34Y|nd;DjIR#K3zX% zO+Btcv&siBjSM>mEr>*8H9kha5o>;tS^(0^SB|h!bK$Z1XGepV=pvc7^`Y+;Hg z&kJNQT&zazo?%HKm3G1TzL)M23=L(M_dSf3w^fvHHd}sxpAmJ! zv2TkNZQhJEn8&(s$p3FsuNMYKxBjTvpdz!X>ZE2(b=ZJl)gO9k#wN z)3CN98VDzQ1~H>(qyiM?>US`9I$P-B(0k}~t-w2FngojMzb$-f+HC3y4og3pdhV_G z=?27bb0%V_Ji$w?ouor=n8s(o>KV}We2T8`Z?@>P33tz^e<9YRTP=keuj%EvT{lQO zm9XZ4qxNNrUZAb8gCz}|v(-e=03+W2HOkCqTY7`z#c{-Tfe1$ zAgI{6dMWmr7<-&4spmQ84z`Az<|UQ$nKeSH^IxOFk|(zSSM5|{wRa+(K*4|%P5BL* z1Yh=DH}|u-mn^#k*EK>AK?mqQE;GY4>DjyE9YN(QJK1=*evb>D zDIOiJj%Rxu2IZ4NC?%1<$fo+z2sy2eqnQOSr%Py;Hjz}8vvNUOnboqE{q_%VfrdW{ zSuRgMM!XGv1}6X;YKX7cjjYmxf0dPQ3#l|@pyIycig|!Nc?K_}f!!Hn&1o3G$>pI6 z>wTe^*(n+lGO8u9uP!WOi+z{#Fc)`d-&Xb^fDImg8HL>K<4T-e9IWTKg%IJ&KaWi9 zc9@B}paK$B(6|IH}X}&kS`q(b!Gb)Al*%%f-Z%~J}TO9m6-uC@j z7@d=S-RhPr&bGv|zFKc|M)SXK+K3P-N?{0p@N9TYRbHO$JXV!412dV)E=}IgKs73v z8UdYE!PkY;d=?k;1-R=_Z$58Xxhb0x2aid&U1?fS$a|>)t~Ok_V}uV)qiF3mJ&>=e zzd7xoGyZ}LmV(>dZvD5&xvG1)@QpJD1zl?YV*T4g=kB^bt<>KLTQpL3#+tSU@-z0o zr>{;RQPFmtYaloQwUp{b)9PT?bJu1uw}6;q_+&r_(?!bcH`}pL|2V-G>WU+;LkoYu zcCT4$M;QKSYR@$(A4HHVP^3PpjQp)PkQpW}`H6%IT}Y~K@-Igrs2GlRjQV^A?=kTC zcnE+(^hcD8fc@^S$+taJ@ZiQZ9&fzM(#>9TEDqEJ#v=QJbd2L(UgtUT;_Su?PN7g> zn1{bUPVH1@Vo?+T0~^nDb=YQbXgfSb&Y(Bx8>_076h+@b#5xK~_HJ6c;=e*uWq2F5 zNOc*brj|YZ%MyBaHruhvPo+k#2Rcs7ueyIAiGVvb>-fu|_rx3|BT6G+-e;QNIeY7V zAmU7eqvmI6+?SBkFA>t> zsaXplECtb~??=|{doIolmX^GpdvJJH*jcN6&F|$wcxmA9prx8L4uvM-bD#3=hZ z_K|JugRzgnjG6h|XW#pNp5ysFf8BpLjxom^j%!@kd7kh0>-}27QWe1e(ml0J#dit6 zB@d?I9hs$yW1FnfWmHD-`}nvuj}AXTJ2O?%<~EB~rZOCWj5!;(p>z7vgCngtaNT9v znX$k2h0a!V3gEwR!}XYOoLc@sJXOi!--wyqMcF5pAKGY)oSU0Hll9LTaa%fNb#R(` zZ2M5?W?ZdM3f+!zEjw*A`R6tT8 zwB-mE>Bp-!%&iHr?x29PUvO`8bDqE{cyJ?+vmYwX+@s7P%ei6;asq#$)J|lNv&_Kc zwl1_9)hM__&}m?Uso`>lQwJ2n;SA=9+}Ts?LCQSvjl8&@b)7qbsJ5sgv6me7qGNQE zQ%=i{N6lAQvw8#Y_%A1NFfI-Yae;axj~6PxE&7Q>Ow;TR-;S&LkIje3pcdQfb#3Q9 zOD!f$&-trIY&1;VyW;4r#D+;EqyXHuwZA$?zfOUnhku5|B&}F;?ID~iV|+h3{}#sK zY4kX=O2Rq_p2|*x0E?x-JOBY4v@pM%Yo;XV)QBO!>sb^ zz9)@hFNAozZB=&FQdCXCCxD8BT#XZY@6T(wwyRQ?4EoO^+$oihe@pOu$qp@_!l)JV zT0=>7ADL<>bJ%?wEMjYGo1$#-&@w-bl=d#8Al21g0vI~$;oz0F97lZ_tp{SmK!j`0 zV{Hd4DD=EdcvqhKdE(*biyC>WM zo|frZByB4>(Js9A51y7C(i=q~VkjfP&eWg2qwZ1tsp`3}7%Pps)HeZvM&yIgGYyfu z_;N3EI*y|5{%d#=k-?swj{EMaWA)*?I3LYv7nyC@4PXx2my5ow)b!ZW3NGO#wUZ|! z=)r-2W z^yOIczdq}7#5yF0`h9K`Fd&=5yGH)UDmXcCFX4}iI+&0Q@vDve??o?1r2^K$bnAhv z`3L@JhGF$>K3uuDql#mCT4Q{Vzsb2rzY8w?shCkOcN-epl!;&I>^sx|iZlzX-(O86 zqF-7*-OGs0hVj;lH@u?7BfO+{iEvC%;*^Xu8qe4_z5l$3Wp_fy2WK;)DlvOxyY|CE z_)CLYH%eMC1Vj7Xt?|$z&C9{ui40~`p6V@oPWzh6HLAlU#Th?D)0Kdvj!N&HDI(H) zw+bHDjlq_7e?vxddTzl`xy@H^p4Cu(;m*GPiEF!X1udB^0_ZZ34PsNBXj3mt>~zzS z$9iJIo9j$uszbFY6-(VxO&$sK2A=!Hlvj{u8D(l)UjQPY>-!m7CXf=b@<4c95d6 zGFIkrMdACpDiJZe8s1X0*1gBJolq$p>&P)Faex`;<>XVDnw^IAz+OY(c|G;79x*5x zLj_A-#D0ef{Zp~u3x$2QBDNmN0+x!MEdci^s8XDA*pu1RUM<-~)Xlt08LgU~YJHSCaLlm8(*NZmMQqF7h8+U{8%4Mt-PLiI#&v!i~0Hc zZCdmX6YsoFC97V$UgNLF>%RDKgHlBGaZkt zQ{=Mi<^eggz_YuA#)2$5iVkNA%d-ky&2z4!p#8B5?~@b4@aii2XbY(!k<@D{SeutlyXFKF-$tOuRrY(&FyV?AaZ}aFES5%h+D6tL`)H*IOGox$b8V?$_%p zHUNxsuxxg4=-Jp9qRMYfh4<}nh_}O!*h&1FX48N;@&oGnVu&08QH3(bxHOc>N&I2w zt>@X7mkF)4?0cH;38&MJF@phAs!C+-<;|fwpm|0sU}yd`+>2$yCje!Bw-CDg?bCcO z-2;n0@9jEK`wNMswm0|^b^#~*v}CX+>}n(H!1ZbrAAl(%rn%-@l9 z|9F_3hhufOvL4;}UYjr8yv%JV0^Ot$UXZdTYUXO6lXn_j)A6Vdv}m5@ko-DW;L+hi-~HL8#S@swd=j2$kE>wOV_k z&$9S<%|qsF-nRU+sy9WO$`qKGQ62pRPcdVM;bBe3jN}x!53830mh1Oz{g>|z^kR!Hn#C` z7&ufeT*g{4G#Vuy>FFUzgi%g^K&qqEd%D&+#|o%P!NN*k%oKYBzod zFQb&D=0yJAzHTzu3_qDA0_x!vjYqL%m}V-g%$v&OKM4Rzp8Jz-DL(0%<-s|s5SxeV zJj?TMIhFO@5FnuF)XbgRXu~_N;6m(hN|ry`Mo;kWm0pXyZMq@YYVFF=u-@%*vm;zp zD*(|}4^>0K$?JkDzV5d~bLtMRwP{FTYQgj)g#G!7zS~mT$acDNwC$*?LuQrQfeJAh zWsXNqr$kSJTr2s?=MI`Dp_6iLC=%^wLEtPk8?phtcOKWIT`eX^kA80^_#!2aH&^Pk<$eUR7|{?c%}`hu%l8qbneS0LLp zrPb~Ow8R@kn_xzL8J!CiGqFe*bBm#2vLIp8OfvvPbyimp4rtdKrUl+*ERN9!9)ol- zb9qHW;7<7o`CY+HY^rH}KF=~yaTOonXH#UU>=!vDPdsP###%tuHM&Efq)O78sZA#( z6W6J%PdMzB`h&fQ{inabHQsP-DK<`Wm;5Yr=sz}B$`U;pn4tb|O5WLz95ejd@)`CY z+f5$GYwM&|2Bm2F=ZcLQK5&C;bta;TCsewSOSt|5bO7hT zlx-%Q{Hs^;M^fiq%d{Y5Z+S=6!|-O!A_QQIva7mMW)HuPFw4-O53CLD~E;OyGkkReL4Cwl6$5SGf7UgU`HE zF~B+HmU9-r>K0t>-zqmym>U3tv-sz(-Amx8l#|*T2`zkWUd+0?4T%^2Z6(-yZRCNQ zp<2RMzIiuz=kSlx(H7a%1PmeLbn1jsv#At3scT^e)AUFi#;cn; zJCgUf*g!>)#et)a*Tr+>HteSROQ!#nd~o7G&GtU7>xZzOl7Lz%m~Z%qn;Z^>m;MAVf7tHZ^}}XvNJN%zBgEi%La?k=b$ z(&(RIII1xMlR-<}ES>c|rs@X&OV?4_X;Dv=@G4271T73-3X==bTe5k+fphw&zfK{MG09%ZlA3fy(Kt(Z6AxaDjMW@yb zA_zHPdpqut=<|k$3Jt^2mdvkGanwD|eU|t|U(bgXYCLL=S`yx8$}2TEpR_adWLf^m z^4^LSNB)rlQAuUAbzQFid9#+PXKh?*YHHG!>nJJmw!r-k(}UaJ&9lW*AXUOOeeSb@ zM`D(*@kxK>3LXV~-D7E7Iv-c;u2QdSwf=kb$`f5Q)F)r%Zh6fnC#gs^Il5fJB@x2E z(>@KqT~MGMNW3mb0zL zG)PDp3GI&???Dk}_)h*$XvW))F^6{LI%_-v`B`VJ>gWqWg8!c}(jm70e+4txy8nOQ zUOoT7a$EDG9~*2 z{X@}9s`^bEIi3nNpK~4D+33|3-TtZ>qnDh|b&xyo&6!hC*hREX3KZHf#ej3}B^kXq z>-?9xYNn$=pzrsz!QwHJd;M(5IrA% zsxA$Ofe+4lUE*X(;~|N(-Q3S8Yy-)wcooR!&VnW(cqr@7DQ<2MAPck=pmIQ(@|D?5A*B3g z8=Ew*V%!u>*ea*{XsrKnq{d`%*G!%viad8W_lyx<57#yvg9Z#oBup#|72m_ndb72t zB@~l_-Yn`LApwL8+dEf$`Mw9mPJ9prvO1|sLS^IlLE%Hyao&n}m(3yrnB2n7;+wFK zR0V^3)l*ci9C6?+Egw)Z*aL@?4ZGK<3L{PRZ>V(t$C6gDr&HRcg3qYpgVJP*^;rX5wj5j-}=?Ud~cZE zDvrE$UG@78-7UPw3!Hupm;0)9*F#etI-GjW-@(y7ajX4?+Xr~pvI2=& z=-E1L{s-*bfuw+|YS2zPY{2^b#<$5Qt+H2quKpekZ`LuJ|Z`dyCHx-@m*`%_e$c41e+MzbZcqd#1B@?_I%@`fj}o={vat+JR#`j1xRkPx*5L!P)^c zizCt6-8MUEVF9*3FUG*dM?Wr>uQ=cg{Ga}{=2m3IqZy}-RxnA!Bf%jY7#E##L8|zu z#hQvB-*eNA20AzOTS)n>RPRL6e0{5(?cwK~YS0^mN5ViFwE>sq{V+*PBfgzn8diz% zkMwFS_qul^?W`y-jygCrXd)Gb{+BJzTRdQ3W2?34#$PMW48RU_?Ll^e_CjlH zLpp8*Gc6n08yW;rt;JCD$&{Om0mUk3y8YF$d5i_t0P56>AxW>p@woXJm#l1Sma`K$(jO`!Vnv;~k0VbZT*#ue`0dk-VK?;9+8xI34*7_$KBSh`Y4X4J@Fa z&hV#fc|>2gt?c3qj@Ep7YuqD+a)(`vntt$qe8hib#XHCDoN5LRC(GAlW^vtTuj}6X zH}z*fA$QG*BAPGlk9(Z1!Bl^jNK1O?c2(?_)=YF%+|97uh3ZwCb0sfTxlwH(R+%cD zx^sgh1Sp;lbJ|+Es$zqbcD9QM3|@I;>In(|bm`V*Q0Y<0uW&wn0y=3JLRTN!R&p9z9;beMuP!Q_`XH@Du9 zX*!?k?fHL05ODHn2{66~k9|+Udneo$h*Iuzc}px0%{cz)x0{O7XwX^}8&48fmZ<_5 zbY}YwGyuXEf*4{bUNpPih%4byesr z$ef!|=jbAflrv=zYoOh+CpGb?EV0GUN z0QnyD{FQpZ5bUdew$+CP;cF0MtJwX&w_Z~PQRW@5JIr)V8njmN)8Tmf!^)GksO;7gko zUF6@#k&=C6JQ*L3%&zr$!hhB$2NLHrYMG#3JTJNb`A6c4sRsq}ndLb{r9~{KX*1{T zg-^a)Ij1IzUe@$BjK^WgRm0pneU5W2g}tX_$TYCgSBKNlu{6u7IEyJTNv&dK=OptCmHZzlu?+ee@6N4pTzK1z(;B-6jWO$N~W}vqB{y??e{ypM; zCxG<;Lg|%~mU`rk1V|#ZB|GUH8ryFM#K}Y=v68m_1VJB17=v1ol36iyfuA|E!@4|+ z#+sY*i<;F3c8;4jRn-TBxY&U0UMUWR(Rlm1tYZI^iv9QQ#e|v5-rH z3nnrG^AXE_gLz93a>-o%rFw`%%;Pz3*agx*${^KLS79w}?Tk5;U=#Z5m&`5xrS-ib z0NgFVd`Lm!I#R50?hLqI+Uz%eOOr4I5dMg$1pkMpfq{@kv)?bVHXV;Iyz zG0QMJin=yTs<8HU=DI_p03$sw1~oRtM9Xo-)7k`B?0Du zClzo#h6_KR>A^h{j#Y_}3ei6a<)OVmwPtzUlUV0@iVaj>2V~d@cqngv2tU9vvtbN} z%ffoO{ZSRb@YJkz6?hDw_XfB8n2kI7ETgM?&v>Ux(DXT!^{Y8+Opvm4;3?jE0gK$# zy$7fk%r*5t&vgum)wdMP>? zYRL6?&rm37i$>SP5TNOKbM+ave}&2kf09IDPqTi=HtDkDW!_a%S$8`H>}|(vx~VA6 z@xKYozf&nuQDgGxi}5-~0ALk;cBVs1AowD`crKJgH*l@U6EaMXpTNmpvK=L2DEZN& zi*KrGkh?@$dLm2Q{a0 ze3G7@>HYJnH>@}(i5T~4gu@V2Hf*HoKQ=g{<=x$-{;#En+yCeQ#bM0&n}>)vt-5Gq z_gXEezc7VR?kf;_!ZbS1X(#~ge<<9cz1-G0X9?SYh{AJ>SUkMV$?N;YAH4-FLh55) zlz8OQOx81YlWc9Twi;Ik0^>F&VnZr=YUs5Sq}ycj+}`hPRSabqccc4ffyZUxUx^GT zHDjmRE6YU}xlUn~spXGu>wW!1;uq(vx2`zw*uw8s54|s{(%g4Fqwvb9=AU<4R0yfp zPr>b~=ZD^VjkKjrj@uosFE_sS@b4(zxi#M8Ja~i)kPiYPoQq{51_u3-|D>HYa75h% zmqL-yu&Ui&L598K(P6DakBQ%Z9T%);1Wy-!M61??oy^4qPf^X}5KZeF% zRf|5vKPRFlJ&Y!ISr*2;9hHVLAitClE@Vba_R37qd|;uOi6~a*_K4CG0$dyfwq zoE&Mble<6EhUSo4v+L+^SKg8xr2F@Co7`8*ah(qg`TcFWWB;7fGpD&9vwT?QEjQ41 zG6NR|y_-LuWS?Dn5cI86+p%GagB7@B#U&y3M(1si^s2_8v-cHMH#LLf>u$W#P);}D zia`(X(JhL$FS$9I_#{8bJ$otZU(n?wm@;fD?Sd_`_F3T{d%+aa=F%M;dta_;!w&0t zkld$89*3h~Byh$q&aSIz>NKW5UnTAzneobdfq^dcp$D>KSV&LhnQ))o7<+Qf({u0q z{k+;U2YtX_+~X4V+B|))1SL7MWb@oF05jO2&Pi@KB&r6>_IQ|dsEqmg&dW$I zIgbnT&p$riR?1BBITO^D8T)F%>QCdNzA46_$HlFmNlCKsR8W*QvT8sEv2Qy}nX-?e zapFJ^)}}g_{T)MnN~k2U?)lC#W*PPqs7Ec23At&m|NP~#dSp6k~3c zVd5JI*PFPen&>RmA`iL3$S!TWaV7loKv{5U=23!7XczbG(?YSa+|wyB47&etU#wP( z+u*8a?O?gl^@fwJZ_$X2d=lbKwZJ%-3!W=S9o4D4ofy|T7vBiGc+meuA&<+v!5oIl z^f@O1%~{{OEZ(F7jX?6%sb7M=P7pNvRZ(-mq=(PzrALn+t2}X@cA|M{cZ80eNr=CU z{z&Ef8P-uAJ#*(P=ebwHpO5>y9%ApnOTPWpu;1SHS|}Kt3q_(5s4vw|5(DQi+-!NE z4RF7Kk^<7d!;ec;728yQ@n?u_Shv9b_op^RlD5eD%z3a3T*wP=kfi}}T9525>IL!|z=eu$n5qqfRg-4WY_%6^7Z~$y==yM#3kW>>o zDqzrd3+e3Jtr4+Wk`LHgpaw&@#Ys>I1oCjA1bCDiye&rX33vGBH~jqv!>+F~k)amj z?!?=EEa-3)?#?{i7R(+V`_=}>EWzA|B(|lcE_=e-ZH_ccU`4YlKb>S(qYMy7 z6Gc&O?fULaV$65Zs9smV>;YAZsy?u7YMA>>cgefkXZ+!e$=EsTVd+}ed>5WC~ghHF?;bpzbePdt}6DA@#YoKr& z%4_PYxSJjF21-k`gKDU`~T@f=?1a#u)Uw*;JSO8#6-p)HZl!ezVFU*60L z#n`L9rbyC=6uI0P>bp~ z;=$fwC+p>>eLo_|MM-^wh8oY39W|RIgCyiohPxgtFWVq9?mKI zO!x=%=tmVZ&a?+ID0PeuUr@+bXQa(rYGx9fY^>r`f1LHZ*!rgXa}dg8>GIQ=0n_UW zsFrN)@+}BFanW=QSvFHxucdOx>|}zHYFc(FYEC|rPdjpU(LR|X`TgZxpdC060sZ75 zN#3mH&{5Na10=8bU8O{6+yEN6%`SLbIt9!h4#?0B+Ft_;s^>L5?f+9h>)}lZD zS1*FFX7hwwX*XvtQMj#w2e|iMl|PxzmV%*x^OYx>=?~fl)tMks4%MS<-i>JFpCEyO z;Qs>({y%}?|MRy4Sbb{x2}j5;6yD*{@aN=YR)xwj?>2ox4ges@#eNYQ#6}~^Ffnf% z+Q`2M3}_=F7b!-^dO-hD;#hS@u~MmZ@GHJJTt; z^y8W$7PHNS_gkH3G(Im;aX;`5%H!AJFY@bo*-PsJkJIzYqymqfrf zsap)5v|m1Xi*Xt^v=tQuE?k)e4Q?7Z3EaD_qTPSeP+A)gb-C$V+qwreXSk0jwF=-L zp)m9M;pIhn3&XX35Z%4&JrDI=s&7w8qAtda4Tvxcw3>k1`Cs`!dneD0GpuLl-^nP> zg1Q+R<@^oAX0|2ZDXdB+oP84#k#=u0>~-2-$R}{4Og0F}FqMAN87Ck4x#~k7#dE4x z`^znW{Ilf*?two#I6$14ossjHb5g->&|?5X64`F<+6UX~2C3AZ#ZmT7-j+9X^=-Qn z6+)t?awOq~XlbM=BKMf4!||BbnBKHK;h(at;6zq)cu{s6RPJxVWS%Yhn62PpOCRBa zbDS=ER-;Q9QK-D);m32I+<aUwn)Cf}V`K+mjx3*o({M(F58g zF}GF@>l4$eb_*?yca)d9i-;M+MT;M7+@?JFR}E%?4Dv+0F38Y9I5^2Y3O92DIf|d{ zD|UG77jPWmRcMb`Uoa1evR`3*jMr61pxYM93~Wq4&FrN4oX_5CXqtO#T zA3R(Z6VsWzOCThlOj z2Ia|C_RcLYIi#Kb%Mq)hfk>VP<9#(bt@%8I1?x)XLRKOS!)VUZ-PK)zKmOyc#dl%yWvG5jBa66_RMkPA>Xt{Ul4O(SJl)e0zT z*PZj!5Q7yf+im4|nDtk}_fS>ecCZ&44pK0bR+`+o6>R^X>`!a%F!dAw9Q6N)BhV?3 zk{84ggOum0EY$R4Dy#Tt1VAfp{GQq`sC@isO>A3fRuO1Lb(fq;fj4BpF$NkIpFapr z)w{X;w!wPbZ-dX?fU(V`IH`v*s7ghPekU83D)oqjslbRSY?#ljrFRlv4#?R(gD5=x z<%yqVbiYn2y9G>Mr#!o-d@thHLdS)?s6fad{^DwJC!_7As=^H)o%%caIKfaqzhPs6 z37wGDoM{?FXHT|4J9p$y^V_HF7f2T%jRQ2#Wk-A-4k1g(e9&jA{-IZ0iw((+>dkE# z=yeuo^*ckP=KVc-#DZQ)UG_U0_q{D9s!>?YcM8d|RdniMc8-^_Nd;yBNwEH~DJ zsiMp+3rdK3JX=eHX*2RsvaQtI6cypYS?4hqitO$Iw=`MHRWT}&P7{9YMvMLO8vzb4 z)Sr@+I63#9H^(#^_#vb-;kxZ+miq;3UMA8(=Z@ipSOLS!G9as|#UK$ORYmsPFnad@ zws+J!rqLwlAsMxlx|5&~vxOcYjMlztAsaR~50$Ta^uMlv9Vp=t3{(a;cB6RI&5^}U z8A;w>egkjeIjfzyM9@8682&@+&1+8tmIhSi77&HVX8AyWz-VUhGjox$h(f}xi1rFz zSLp?}$Q%d?O_?kYCoBXMOP%v4gR=u$#W3E(%tWN>u4VZ?iHxm1V4>JEyBvsWRg)+_ z_99?Xf;W>;y%n0}4on;LG$1WCOId=Jv~f*;qIL2Y_i@g)_HBSsKznMRiN%)88t0Gs z(FO1q#NW9^gQi`mIPkAosaLnD3@b*p9pEIWhKs(6%YJ=bxbKoL+9EdF*KKNS^BIN=c_ShuxJE%<}c%fvPb`BDH zwY($Z;reA@cdQSOp)nT+k~jyJ=;2Bb%w%xViR+V}Y0!eqYew25w-s^#84w^QWJdGq z$q+MO=aD6T4AqG3weCCKS_QI#zRi&CqTRr@5OR*&^O~H1j`_#r8*qhBb{pURIM4Rg zBI6T9mtW4hKXxMs>ebDMu&Oe{K-WA00p@f= zYk-RY%X1x=m9HzM2?p{E;@;xQQxp)Os1XnfHFE7yJ1v@|hx(JJlCpmI>ll3>-M4<6 z;omEjfexH{dHsFx52{EOg(dfo;YK!8n#yzuL3AU-GFmqc?X7<$R$d<#j&C69Rb-p(ji2l+^c;Ucv^yCkXYl?wUX&|FU z`ZVKVFJax1eNSp{u;WPW==6$HZv^YCcM#)doA@HMC9%}%;|}t^dw^D-H0u}gA?ts} zO7@=DQGdF6YXZ~#wjm5-p)@Vaw1SFJ8vUg zbNJGJ17)*mBaX6z+XX6#^IsZkWE~{ZGiNHp*ad3!@w=uB2bw8BDkfj3TfEigNLUHw;fpVSi#Lcq%V66I>Ytm z;G3|Lp;^b;_*BD*8)g3j*q|sNI*2lrSTWBU(maU?w-yH9G9AhuL+>x0 zY}Hj(Sn^OuMbw}D*yi5=xUMfm>Xgq{u}~Yp3Eq@!#|((JvEHkjUOFrF)A~i^+8;E+ zgY~9J-r_*U9Lrk?yJw;N6j;AxlKUKhe&;CzcK`%^WarJS;x>t!c?(D_wO}$BqCOz< zuc%nzKtM#w=tS6$E!MB?>kl_$$I8c82a%9w!&TS{LX%Qr#(4HX$g&N}3y@m_FN0-> zDIfq(oz~n8z4gFFj9)YpiSx@D(*)Q&D}P^*H{ewz8&5_10O3EjpP6H@s`~tWnch9Z zYsGyVmKbW&DAjD20Xq-I)gbGJ2N7j50&Ff@p&y|8@=^}KG1Y4zV~choZub81?>EQh zcG^G-B2t)dq^H8VveBrc*NGtazDAvm{37AHr^u3GbyPb?w>`U3w8g5Bcd8d{mpEA| z^U3sW8av3kh7!mgHFC)hfsSn|p`~6D|5dE;VcK0KFq|dH_Z^MVFWtxMy*JlBRk);b zAWY4ndS)^V8#X}S5^wDSiF=mv4y{>mlP8aZ*rSmcro+;_onCXBkxlm1`M~#`5`vH# z#e8_YgQIYi7((Byq*{txwS&-`KF*uZ*2cDRSH9lr0*PaC=aj%~Q z%LxM$X^{38aB)-jQEb;p566FOD=iuADrujs6V&h3&4AtN4d~MUSi}S(zTS7+;qzqG z3d>nfA~tmSMJGo@#b!CSa)F@^-sHV6Yun3PM5w-&t(DUVU6(SuweaJ!g&kHWEkYx+ ztoM6aj7{~2<0&5aoJyT9%@iradftZ?C`2ClylL1?>#LZKM`sKkK-;k9De39O&iR_C zWLB9|-~61W7YJ?3bAQ>_ z^u&i%%bR+))slr`I+&vRCCE_1_6M=Sk!$Trt6(`Fm29S>q3r@&4%okFypO@bYUHlg^Qkb&z^*h z^3RGEEA`0IJacy{K<&wm>>}5XeOLAXl#hgG?vFLyZJ4|f1eb6t<`y3OYp90 z-0C`mtoQ1?a^9{gyvh2|lK?{K#9<}X<91uD6l3wT9z72&UI8hU(#}5%dW;5fw8uxl@q-t z`S~V5K`>QKoxj%Z{NPPdroMVk65`NR;>5LIu>Q)(VqY)UE%T9&$3mxOIm-fKO&l{i zAC9&-i4SgL5ACI`Kd7ttqCUx zd&x>DoOL+B`%HJQTQ@&?$&V;!FJ~tQ2CIw6xoZJAbA0 z_)8_9wZB7Q0h@y?4AXC~%Nm}kcSNMDWZCc9zd`pH@mqOS!e!4pM#X+REshHX^EVaN zZZfuI5=3i)=^^b@xkH~`(320e{Rle>|G{t&S$Qs3kI6o9_Nl3No9gCRjwLEe z!O{0E=MI(0wP*1Eb*T)!r%mb)68+!cJctT41SGI?>UVi_nAM`pLJF|tKJ zYsVX?vs`Ewo4e}Sf3yUCy2`RpS?tdlk8Y>=0+oa1W8pfTxPXp^Eg4jikq-}fQ{%?^ z`M+0$MTJg}vF&ftkjC{O82LXo6ZPkN`EN9`5jvYK9Pj8zMarMwr%^GgCjvc$oE9H}Bf%@m7IDFqOAcERE6670+&Eukj1do1| za6M)w$%*$|*M+CtcV=_)AgrJEQcb8KbSlcxMd(94Wck#QurD`Y7ov!M7s)i_n;CQ? zB9Xes&Y-;sZauA=I}t3s09#GVsZ@iRE1>#W#atYLGvc1}lmxXp)cG5qd}NDM@07>} zUr|)6?ols8AqqI|zsWp$yUQc35i*RKle#pVva2qZS~x8wq17286xX9-hryNu=-GUc zi&_L&gf<(OSz*&lAx)=RE>{FWWZg-hSsQ>AwY{CgbPD7GWg3BoDHplDXX=z^IWhk0 z4lQI%1)WaHF$eS=R3dd3l1Qzb3qWi_GzNZM+B)p#SL<0is9jRlu=`~8~kL+?$Sb^+ICDt)EK zDRY6uhcahj((SiaUH-Al-bT22!#3UFWERM_B-7Vc6xYdPs6CG>4?_=9X#L=?QIv0j zdtse*#M$CRTPtO06uqZjlbkDo$cvMol<^o4Wzc=7-vRp<`^jDO)C_|{0k=?cC>S_= zvhKFywpl1bMv9B6z(jO49nuna{TAWHon45ehTA`U8~`rSU;eacHn)okfHhCb87_6J zt*&_on#Sx$KR4Ld>8vt$)ED>f#!qBsxq?u5LY8OCc~nv)@mjB0I|vj+@A?hLm@uNR z$JVlHQv-{ia4PS%4(HX?aqDzHv8Y^hY^@Rxm=(Tm1VW89pSX7{kKuZAt_DOai`18? z)DpLDCCDbw0iZ1-es4k(ew_kBHf#(Lrx=GBnR|o&mzkDx2}GWY9j_%LTl;U)eW}RX!rGqPI$Lw z%c374y@YD0$~LA}V6uj#$irGpLytsQ?##N1&=~pU6|I)y{*GXSBT#KfQXh%J&SDkS zAyQn|O(XqT7&Jel3ETVk0oj9MGo#RSY*o)OW~ch7QUHau%dr8fi!k|s(2a1=`2=+5 zIyk?0DS201Nto^qCOE3bqZ3eU%rDanyp=<)`!WA*^1U@flSTK$%7(;?baaEiNuN_J z!8%7?eodRb$IoT}T%OTd0&)1=78v_PsrBJ+xW(z*{P7P~w~B0Et0fTtp1y23>e4oO zvJNMD`^j6{N08)!-zrQsslbgJO=B6SZ<~r|07ERyyxy6t1&Jq~ESy0-Pq`DA2u=0c zc+-Pnm8&!^+6a=TTm<+lzml(kWU!2Aw4vW;EY>iMv|gF>Y*!DQbIO5`uwc7L%a$cB zbgcF=PsnIpdn@369Pd;nggV_Nnb%f6z(*1GS?-bG<4oFuE)}HFrvSyA_y| zcB_bt%T-c$UpZMX$yh$o$Wb%vVN2~O!0!y@o z%J(WMTOmENO*NZllhW5zqgCwE4zI568T#FRc6D3TWInsLO3{X*fI|-H$4C1%7cBZg zLp;+9V>@a;^M0C8BohXasg7EmhVkojfgCxG2|K)(?wwI&TZIEk6T|VYa1VOsTnhWI z7(xzegG|>4ZRFW4HI@6DeB}MQm2($70lM4kbS9fP6rDygi}`$_DJ~7e!u2GMJ8?0+ zw`eKN3%RE+6LDg|$ahw^*_`BcyKJCyfT9qfRA~0A4SOlBHq%Cpe!#a7)3yeT|3nEk z^%edabE~Uu5Q04B()eGaid27=g(F>PU|h+&Q^*6|QyQziUM*7yR&jyfNmb^9S-j=; z!u!?o7^qnwB8Tc;B2fh-T!D^`6P6ekuj(PQvDHY(IyVj@7l)(quA1y8B+IsmNA4Eg zoZmZ11}i=uY^kB?LHEWfmFk1w$a|h?zTP!0xp27a2#`}*ScmA;hp!vgdSze zj_~$U=_aykZpKZosO7u3hbSwa(*%aWkJxJO|` z{J|=5VLe4=;POo-5+tlb%m7L<-Sg0@`ig4w8|VNQN=m-L+R8L%dNJ^6zl_~`t_c60 zvKjB|*cbG7y6N$0Aj94$ZV=+vFTGXrH4kU_H0Horn@Enm=j9JGf^*j?swBklX`X$& z^<-%G3d9=%zim2k4n8Z;D4vr|3yb}je^IcY%`wpCFW@*kXG1%Kde zH4#EXnx#R^*}l3OAv+F{uzoD2Qp5P(=tx`jMjKis^Pszu7zJnst|?lrdtNxnb z=OuFqcmti(h!ixtaKNlVQ9$TFHURX4$aZ@zezOS1-0ji+v|*`BE!xezzS&#W4z!T@i%sw>=Bxg%_rT zhCjX27Et;Nrh5xs6(;)?Ap)x0d+X*!T3&MAD_+C5-#Z-&gyKo2{KSj}(}K=GCnm~V zcux2a_3?sQwD!4M9NQ^;k%?Zz@ zh1c$!GDcLqH74s-9!C6QlS-XGjsA*gLuqWEAWz5pw zUQR6?r$j$+{3ek^o~NjuFQ2Sg%Ij&ra)cDV{Qk9TM;5WT`5sAZI1!BZBPYLGe55a+ ze`N{Q9(RWcEW8_h{Xkpo)%D?1|06uZ^r?`Zpd0B2Db)01U(XFt(>b2gkvV`QrQM>| zbCrGS_|f}1x<}bSaX4$Pkteiu4r0E@V=o1KNfsop{y#6|%H<+2tNDGz6rDY%kUOlz zpPM`|Cp4Mmx8RR6Slj=RE(v}P1o0Wz!g9;_B;k1(%My}*LPfKV-6^?VE0Ud8nf>jj zt8$JbF-xu4V|{|rkz}(-uUo;@%84>P{#lJ@JLb$X_0*@$`%sJJ|q+| zA(XWu`;vV(q*B6=kZp#-BwMmfh*4t5GWN-qG8kjB&sfIHe4clo=X;*>eSUxZ&T&ph zICIb3@B6h}uj_SPX<=U(B4LPO=Q%~V#nJ~Y@>)st{Xm4BAV(S>FIwhT{A67a9iJ?*HVU-*q`qDWQ8lW!RzF zo-IV*gFaW8{_wO>U1#G9OM`uTZWL>rZp9l#L8RA3TLrcWs6gAG@W>zJ{cB^m<{ieC zEMe9(TWHf6Bu`HBEsYPBo<5B9Nop8ZEg9zYB~nCnnHAlSaNQGuO`eiEPQEcy29zF= zcm|!{ZBO_T^~#yXT==(V(q>anLtefj9lsvaj6g>cGTsL&l?aF%%sYSUvY?`bJD}oxf?m|CdPb?eT>O zGp|)LD^%0-&x|W?rSnHnT`R@}T?eG&Y22{`pBwWQB8sK9yO(#MCdH{GSE>G&zNB1% zwq$I={#=`(vy@rRJu9-c1T_5<+n0SZTZO-TH}-*V0po`B0-{~*Se`x|q15{^YZEKs zip~Kw4LQ?&gTI^(Ugwhol9a{&dshKJ6%TgO z73KKitjO#-Uef?Pvcw>4hAlRs6*@UmSB`?47{ws|;4j@bbB8@;i0{O{Brtou$G+hP z&}65esVz?*q}u4u`$!rz{w!!!W$R0d*j)^Le^80EmiKV?|Kfq00@5{*5ovmt4`|-!NUVgVoBlf_x&3Sti zBD)?6o`eXVe-K#gfg{@&5?5WAEDs9%J_7cg5cRkxnLK$?MVw{wwI8gZ&6EV1`K^|H z5t&!`Dl1IhU;<1&;C4n!y&~IVG&M|};8B&LFm- zO`_JbimNI>rL(XFO?TU;d~3St^?S@fE9z`)Mn^7Tlf>-lV}w(s|` zgRh_5Ip07Yj`4|*=l?P3UF~+g%BrXnrrC$j3yCT?TK;#m+S@OZ|4Fn?Bn^M1yMdone$sj=SYu>?7mYC^46l?P4{X(NMr(Jkujlxn3GUPSy^%e?Lv} z*2(1c^sn7`1hLe6s3scb? zwBqw!JHsh#AlGo^XU*0N$w5`&=;$coQbk3WnQ?3Xk z|Ayijx41mdr<_R7Pn}`o)=zMx1jIt9{fKOw|9}e}LS6|`n{!7QYXi_hg2f8~g1a8_ zM>Xm66I+wCeN%zEaXd=Z^qNfPCxef*8UMI+lg!zij-7%7=o#kLiL6z|3O}Z(sRhUL zfV#;th2--^-Qtvzl9kM$P=U!b_z)kvFWDZLF#*dJSF+%X_z5i7Fon`LVf+Z+RWUEY zEs@?EDsP_`3tP4$ z-x=v`j{rP#Bk5yQ4Z@DL6!Yl0?_79LK|Vh*$q)vonweccbQ+8>;p>IjL?RR470z7b zVpNY*W-NK&=&p|0_lhqTa-FOIpsK#jX^c3LJ^**SBhF273>X))nqh1ltLR)l0EgNg zM7_7(Yp1e20CJ-Kw*|Unrq}oW&!qpt@uis7OxRjmpypPEg2mPRV|ol=@zHUZ1_+a1 z5<#s#hFpj?+q=EAeZ}c$%X5v1v4n)-3U~TD#zz>Ko3-$_v+QJXb&B=@z-MQMz+|8B z_1B|o+?~tbuj0DTgQbVh`rYZUdOAH}H)>#uiL2IIacwO>E69<`-EbXD^JxmWa!%b+ zR^}~lC+(WYfA**4ygMS~{up1=wQOAd9y*Ty`(j=48{&|*hTA7&G2U~o5yF;Te>egRR3`>iP1ILp{z(gM z?nblq!Rk@)3 zk9E<+Sy%XJ+csE7hcrtWD8B=zNOYW-t0fqF+|taDx`fWJ6(n==rkU~Zuw1{U&-7yIRAoet(~&1xkx11cyuU3l>;I4 zHelCAFD`ONfQKi2#^jwJS#;K4u%-CYTg~}EO}dbd1{C95VsA2rWpWOcoL}~*K+o@x zIJX}lP^Z?`&za)EIz0Xa1G0|ah9~EjC$3~<8;BE|Nv#IK6C2t;81tWk z=qwn|prJ@vY@%|I`W(1T>BIGc*XwqZy`N20Qm8X64hq39=iK(UrP`vME4_vqzIN@s zmI@5$xOQwrL)gTcd%e5DtvX7y-6*}_Y&u#$w>`bVQ+1{!$tT%-RUeo~&0QMw=xU9P z3^2_GW9&DTl${sdRNKEl2O1?Sl|a<4MBMr$8Ahd%DQvZ3>$H;vojT2^7_YdOkqmYs z6WG(W;)=jf?KDa*JsH>g;SNf@FdY+Tc7%tF@)8ngT!#A^R2SKpK8Yrgptl+M>ywq7<|G;6OOLsoz5s)(5eRV)2gqxVV1?&@OG5nrnZN(*JB`S} z$x$AAL0O>;jDO+VtrNP^tgtI}yLSXAc+d$L{EZBc(9w0yS)SolgVlz=G!IIy`mO%= z7SgNJYmrfLge|(o42IodAEiFNT$lM1l>GN!X_9ecpXcG=J~;!(JD4a3Gx~D)L%Uj? z>!ti1UM~*nKjnler(`$SZ0%i%8zv@2Gk6-WxY#&@v1)0g=FP>E}*FO#EKc&uk` zzR|^X(*AviO0`OWejDqKqj9Ijo!3UP-8u+<1Oh>h3&weoYe*vf!jNrAsW!XbGX+p+?~f25k;ok% zzI|K76)q_@{~Vf>u?%nwV(SksQar5%s^`Zm7uKC(;VX1pL7+g^KL_baQ&25|!chLvVydcXjjG6Ju<5>b$>v zYe7R+VLWg0JofQ`CB_vlfpUmX4%Cs$E_>~%1>Syj`p{30t2ZA_ee#g($T~Q8Dvg{Ox;!k&`;Nd#yOeg zos~MqEt%f6RfZxvcseRk*K~r6ckW1c-hU`5+y+ITZCnbzf-&u30KEIx7tyu&vstos z=hY`74oxMXPEqbU53FEJG$Ww*cih|7Cn@WgtW!Li5SpM8m5i@j^g`VuSGJ}@Np4OjRDr4NoI@v&n--gT-qg$yz*Ccv+a>E zI-s@H5p?O1=WicgZ4HI(7H$@(hu;}(Z8Mh{qKQGnmw!~6bNPiQvT4zThr=Krk+1js)u;o%A1inmQ=C|$)W))i*| z2jR;_lAIFti^FzMm6w$m`p-?6_)ha*8?^=(Pgrbg7np> zkK8-RlW&cCZOcQ!_yJt9ZrDgw^wiwrpjSccNSkzf2|>A%VIpphZ7dMm_KcIcCSR2g zt2X#vCjV<@45K;?A0Zlbx(LO|T%|d$@sNd~DXQM$bV--y_@T_c*Y-k2vMHRZc zuo#Ik-Yh&U6YF1nf+N7(C}t7lgE3(|k+!PGe`p&HBPT^NlQF;q;>kVI#0Mzxx1KHd zLrJyk-|S!LJ#mS*&}m(-?2-p6jb>NV{-uw%8FD&?g@pizJZFwhxiUO>xEw5U7YS)I zpk!-tumjWPl$^|l{;{tfXs$kc6E*VpTE)-zH&l;%3mTi)x?lZir`YLGpFa5Mvvw*j zaThw262*h}Ee-#$^7ZkBC&2`T$<*(m7yuu?87a*L4|vW>>!F?O08h2gQK=>RTm%YW zs0?QSCyZ!O?%13F-8%z59atIYpYg%eVkaKHWZ*MwhBp(2L4nPq$kuxchOuV|4-(4e$c51A6DbPY!nO7%)$!F}Ples;`NsTwl>X;5 zNY@s$5(uM>;L|guYNlfNF+%TA9alwO&krNvYZZ~gHqTm2j7?oe5t%n147c>VWtZKh zCA?C`|MpsCIg}ixx}EhHzmKQrMZqiyTLSFWjj~rwimGb=*5}gC3~C+;8m_t>kzr%(tI0dLBGweiC5G;b9C5>~Eb*At+&PgGiBmjsnoMY?ZPh%K`&GH}&XiFk~Xx{$^em}{16nC6)# zj)FSr<={^a!VUu6`7r=2%2smIW5NB251hRt>y*R9!8$+4x8Mi>5@b6+M?9>GU4Z@ z#G6*`9%cVsp)namYg*$FWn4gROPtF+C?5-yN5Iii)Cy*2GmrTe(>grG%>=(s@&lb( zIT{!wbR9an3ujX*$hBGk7OmdRuiv}}8zAOy|3hjNvM~!0RaN0G0IJAYw49D6WU z2G?2evuZiegDeGs5h#Z3Iq%#$10hg0XsoKKhTm3WLD!X9dg!GL=OhfXyK4AzWze;T zQ`Pb5IQl|z5Ft_t=rAa{6T5n{44##QYSr#rxoVH`3VYDJ;+|7Ogrfh!LCnNnFa$fD zCdjSR;UYEN_j@|!;B&BtW2-uwV~ZfhK1()U;NEzjn*4s16|7n)-RB&{k}s8QwjTi{ zP9jseD0F6VgOdgDy)dhx@6AqQy4QD5LGO>Vdk~u6n$0MK5~1hrvd9@&5Y?OHIp6p~ zPH<)4za*OxGJfndFW#in7qfW<jI*|C6BE+ z;_Y)mZ5{tH-enCoE2XBPcJcI1+nx2nk;Fda@A`Y@c$mixNt8kJQ!O~2$5KaN=Hx= z*rSgsYJ#FQBjpQBFJ?HO`tf%S{Tx?!)0SU4Gw`#V-tJElYz(EgE+}u+&IgV zLf+vxk@{0IK7nATr{B_o(Ele30KB;oPa$VC<_7lN;!Ja8X|O!@eajb%Tt|Yr*`e$E zT}mL_6nAmqfe_2HB^$HLA$GGr9BMwr4pst+V7xLU zmmLz|Gf^!$jbu_`?UN&5YKpkUYwzus!-`m)L~b(UG=&t>?!8iH@a4N;cKaZH-_v9q zGTJD~fDMfUQVEZwH_yPEu8Z#gWoa&r)!Rx=nqf5U7@0b9qaZKiE5V0xiy7zR)z=>tCO!7#04w)i5tF5b(De9${l
Q=B`3is=O@6`fptJVOs|1`4Mw3OG+Vs#Kq_$aui8aJ?HM2Z^FWnvGo>HR~GAp z5&RQ>-Cy93o#|Je(dPLz3m_V5*-rCb%+A?~$@Ynk5t+%py41iEM|PcXDIB}8uu;N% z^(=2kXF=KY*<`3{YS8e|2jzuV_FS})&GIN*o#~4k?e6htf9KdtD@;#Sg)KXWp7^)t zKIZHC;dbJsnu8%SA~#8K9NiQ))b5A9J%c72i&LV`As!%VXI{{vln#3e+%>7PlNs62 zeDhZPRP`>s>d`;B0bAVQ_$oL41)nRq8;n^BSH41EbopdnR0-SzY@fbiX23MnHP}>fx-U+aS=Tz zwXXIQ{6~fR^SSs`%rMS*bAVkZz&dPL(I=SUR`lb|Z|iTbU^*Zksd%|o=$j|)ak-$i#pP~GCyhK~Y ziQ{pIN*!R=ajaRg;2VTPD);cKPi)-P7gBW9-rn-Ei$YLmD%(&pTmgHr>fGG#t?e>* z%b%5Ee-0@S$Tuo^nEO3B#N5X|MzN?1qHnHP-Xk|GIT^}3q_~U1TW(vkjea2+bh#UW zv8&pk_B~&oE`F3~UaHf6WDdQVVP+VCaQs%`Qw@l9nTB0P5O;}uFa@L}pG4|bV2ys| zg=)_OA)@N@*eAY4vk#UwX2>(G1jbV2LgJY>a`BX1cThsuH+dFk(+IiWXRW7EH~`JM zW9;r;Opba_0}nootR|OB-9hWT>>P(}y4jR?o`t3dM!ApG-Om2!P?6X>TeE5(>(5w$ znGH*2OFUq$-i(@CsJmUKEi(QjBWwnMf+5x0(f$3C`Zpo%*gaU{?pB|yC6->z)L0np zokOAXz^hR5LVt-HS@L8MKf;Ed8#v9#i`Dj${hhCDud?otnfkxGq@ETCVDGIzr6vHB zR&#MH%uy$d4P1u1wfn&5QgtqAdP~@0K6C8=iO4BV&AnYe31~*dsVJf7Am3n6)B%r!2>%$j zgUyb~2^TcTV%wnZ66qV#MIK7>m9GarDKdAmMqHKKgx?(HQ|a^kOKTwCq@G9Nz&I_2 zToLa7hmHC0NqW4b-K8Lh6B8{)uP9IevWwML>crY9#$o-PL)tG7JLs7+uN(||90ROa zH)Nv}Xj*41?rO1h`0owk+?y|)$r^J4;P{1X6!$LGbbPV}fZ$!j6Vk+uz0_BGTmCgU zZ?ohzQiu2%nTs$^D#JRE^7g(+l0yA%J}wpEzU6qXgi0!;-&P2yLDe)o>Gg6@ws9fUX7bS}q>L5JXlg#EYZpQrmc`7&+4M z0gMh(c4QTs)lC{ko4os^NEVK|sKbbf(Twq^DYgb}VyYLV6DD$DPgMUdxGFavd>{!2 z?F9gIcJd*y6?J-<#e8c#vB>VOa*zAk@}1AEpe3!|5DWGM z09=y!j~kLYo}HTBjkS@nhPFOXJ2RD2jn?^d>uk81;L!o{XQ9%4wd;7yW?^cK&$Y;Z zbV@-RL=%F4L1y1SE~WH6UQ1k5x$Nj%{OZjC8zCwF%?`+A&=aPe#_O0tw2wTJfw-iChLCe^jlarc z--vHMf8>7w#tj9_|G^hKbI0gIr~Q<5#1G*qw(XT(zhr#A)v$S|wn-T0dEino<4i5v+6{6j zgBGHBnWlbcUizS?mJri0gB^FQ*L)Tk2XCY&Cen9G4{`?8g-Hb=Hzzl{-e>hLB0E5r z>Aess;)s_zo!X4xA(a8hD$=1lQXwk8wNf}bO*4V{KD8<7HccD$eE|37>X{V{5();C z#hXfdM^DL9{>e8~f8O9Vg}+wm>TZ)_??-tHj`n)pnt>a{kA!g5&y4tXtxhr-w@?@^ zFY_xl09r~#e-C^&FZLTz*G{XvN7tT6^I{-O86*9OQ~eve4__>Uo(X>vOW#c^Dg~5Z zYHVT+6V|Ho=|^AkzJQFs2*o-NgO|pG4Q!><&e7wcp-OvqVU?F0wLo)GO*QD%wj$Mr z1RXP)zol|O3cIKCbva=%@|Gu0Y$D<}`lvzRy_fwC7Y#LBhJnc(xca9zK79!W$)&QD zw5pWo1RY%Usa$XoPXB0n^a)uf@_52z(u>L%6Dve^*UA?w1SZ_3i?q-s#RcI*{rnF^ zjIn+Ludfk}OsAt?1g6~R75(z553ez|Cx$?I`Sg3GfQAoTl#AJVKDJEwfnMx)ETS_5 zX>)Imp_5u1p5ilLVji`LUT2nHiNXDLaQK%YVf5`x`1g;{p8X`E0&-v|WmqL27;p9Y zvn34h+E?(B{A^!7|lGMEIV43gd&yJ+4_iK|IPfQXZ(106-M8LBkd9J$NJ zxEF{2iMC~@A9q(@MQLWFfrj7Y6jS4MxqaCjPPqPa#Rb<_R^Q0DnACvDfekY)XM@xd zdn_vkbPZ1K3%_bfIhfIN0?Gmry~^ zSAJ{{(B62{y>qoc_CT)S`6auNMVax9PMH+vS{Sca>7sSBG{@2%5e6pVu}!-YMMXQ8 z|Gd8PItYJH1^*f3zygnkf#qisV>&8EYf{^MoZs3amw{mclO<;ts#T3-D6xml3F_r{Qi}S!% zfvoktl&h(F%ex2^U6EzpHE2FF`XxnH;d_Es#1h*hytt~ri^&SUnrX^T zL2Qs5mnsDr1tYT+4X5elUY7?xya0}?b@?u6JHlL$?%RrczXg7kS}eK9#*C>xcyjL^ zm}yYKMayS-clA@f!5(U<&&0P&pJ$7N%qCc|%jS4^eCia5NnTst9UCFe23QxouKqb8 z@QH?p4mDHs)@nkmQ7yeGR?bNHVL!yVe;b)oZs7M zgCJaa!pBsw;=Z0hZt;DE?}Y~TMP;a&a8jdqK+81#;I7a7a6OP&#cv&0j1hezrsNFXq2CY7cQ4w%CkX=XL>j;+V(wIehQn#ND zO27G)07hu0XnoHAxg8=yHpz_CKg9l4Qicv!54~{yFu0x zOWp^>ng{#$4)s%VbA6}MdXb;!#MaC&DO>jk_AB71>pIo#PHHH^kGo>aMh^F|r=j!s zYKl$f-+s;4fM-ZGSnT7T{r&9Mxl11BE+Vi*7+8teLCq3&fFNnu6a zp|Ad>x|~|czxeg^I>9HHa(gk<18gjAQm(!}g}a@S_I zQ%W5ou;Wf?d*AY+%&b<>Bd&`_lfe__)3da_2V1amwdR&Ym+;NYT^^6w+ApJ=PH&?c z_M{xxHXV7>BlNXX88DAt+K$f9)V3~5dZuk6hw>}xZcY?PPcolulJMeQN-k9=l;+d| z@eqCo8fF;^I#s?ft9F1|g`BsKkdmJ7yM_sB6+$Tf!WAO#pI*!d=(xj19^5AM>a)Bv zFYn93f_80G^1O|lN0}|b3W{&;@Mly5Pn`pkU~N98a{JWTK`GeRe`Z+#$vR$yMW>e? zc>MR0)j!_(RBStAH}_+>?{gt5!X7SDK5-O83}Crb0)2|y=8FUa$ekd=J{u8O{5$Ta z_Q}%D4v44nxfi5-aer9;Ky+*5^vSOm6~fkqJgjE zCc)$Firlih@rHfY@;;6YYYTWjY8*c-OrrI5-jx#gFYtnGl*-_*5|@)%*O^TS`jTJh zhcI`;lg;>nU~vW?jIc9^_&ja_XIy*wCg!g@NMF@Nm_C>5l?rn=l45~*$D6>&L(|p zuzgu_BzaV&7VxEC$Gj9efR;#xnP9N#)9|8=Fytc}#5S~=WQsE=+#y*)9B&|3v75!; zx1CDv^dHovU!kykf~|njZQ;<=ZdbryHf6*zo4yb=9tl?RBq_*)&8h+bMMSlX1Xv7_ z>*^G!zh4|r4FtkL=hGcl*VI&ru!s5-%H77hlMEK$-Dva0ddXvtJOPiT`g^V#WM7LH z>HJUHsAv|?!TqV>?0R6dc$mS&9j~cNxxCL9L(=PZH5-SBg~IG0MHi%B9e@$2df=Wj zCVP9b4rq{o*~x55!iKUt)`zwXl>dGKxpXLzshmG%j+f&nfrM0+;VGi;j6u^E?mYXZ zXJm`6rViBv`b+?iU8?2wII{?BdawiN6}#zJxoc@Pys5Ox%CC2IOX^=2?dLN#_rBi! zb_I>@VIO*6idGZ0FCETzNAY?tJ9{IX-U2TIcvh^;hnGwxN$AK(>S79)59iYF{*0!**tFUmYZc$P2qX|j4WjT zCHX57j;SSg;YPGGr-O?wUw%uZvkf(7_uKkPH34n6$DZS1w51^Iqx6i_M72e$P^??D z?!#xEW|QU0QW`oJ^{W_Ou=tIW5w8ozUOc}PA^u_N6nH|9oRe+}RlN`*pLb|~jn+Ob zR}!s4`sovTX7zMz>EQRedc=!i=~Q}2XE$6daE1Hy-rgAER>}M}FG;G-xhy+uR>5c| zL;Fca{+}s21BkDUUJzHUM6|OZF@Z5S=mu=?n2|MnJjyeA=P^my*Hdc_)$D$puk0i3--;Wg@*Ghxg%zad!W0t8N(wpz$Xl zIe0sW^&^Z1_xcHlu&sQT7=unRDpXss(3gtu*YTt-9Ei?d48NeR4!AP(R6uV&EvLHo zb#fTRu}lLSNF4faBkn9)brZz4FhIkJzH}fn3$+saheBcS<>-Ey8{#Z_c|GHq(V0PI!8biCX82~qn+U3 zTp~fE$=LI8GE-jninLznen*p$ohh2Jnz0o}Uigo<^#o)PbyS8YnSfshLdNGK6u(R6 z{1V06WMD^Y7wP?3;LzctuquSyF>rZoJx{&k+9b>_gS=jRfc3F+KnGS>n(Q5|G|cP^ zkKJIa_M2A^Og9KgO9kmQM~dig1^kuaWyI>xrEI4>4)bO8Gi5?W`ll)2lmU z|M+>-kH{X}+?l!wOu?9`Ove;AqT-f|-_~zL3m)V3UiYqa z{S$)VQxVxKfy%j*{MYY%xv0Q?L8tbQ`^(gn%JJ)|R4EntGY)e{)xS!xsILM7rh}Q6 z2LdxWB2@XNfBLKR1$ z$;`%L=2iMW#WZ2%cuj#&plGV5R zN@a0b;?nz>FRlQYT>6IOACOC(uI@fgiB2*H#5?c>QD<0Gr}e3?OI-^LFlAs71MW&6 zisGdnC?oxYKt*i=gW~77+YojCfh4^ft`ooU@*e(>@b*+(OynSd0NXis{J|-D-nD&7 zvR}u!Xj^wA799t@=&&;_)fhN@^pKP*+D>7UlfX2bC1@I3$iJ3OK4$EXL6D8pgzN<0 z*Dj^;E@#L+f(IJG3IzAQ$Ih}l8fp!7(V;DnCn#2602>|&E7{=O+M2u-QSo3G$*Ads zV*n6>-0|PJ_b>f1lb)K^XsqTVGOk8)$QTNd#8p;29Uj#BcFJ;?+|YGNt#^b~wS(@B z81n-!z2L$&JXp4mQF$gvinejGqLOa z(B3-O|3;)OZ!isyq2e}^$V>PQS%))nH^}*HRbD@LRCeyj z-q^F6Z24w4uFm3cVQI##H0$q%@*Wm@_Scs#d4G_<79o^;&C-v`!0zT{9aj$_=OgDG zU%x}N?OtdX$%x!05>|D{Un>_hIWvYCMCV$p;c(gdPDMyw^b7zDieq@)F{{@eI_!(v z;4U%1j04!%U}62vBz9E?Kjrbwpf^UNUvqt^(&}&YmgMnuZwwvVn@cp?__^;59;-tQ z$M-N+!tW#-Z6Vh1aIR0uu6zl|cIxg>esmoZezsK7@fQ+@-pxCzYVqi5{N0U7*JSAz zP1EU)+PthGos0h+r(+*CfpI`>a-7cikI^0OW(DmJ+=Y!th(B9mDbF=%Jo}sH1DjuKYJ-g2_Enzci9sGoznqU5! zCT=sj5}O#UzH{8&vqt*y_>T`MUnO<(6H<37D!wFVI@(kRQT_Ruq61^|?Vr)(@apgpj+qg}Q&Zcf zh8YlmLoG8aqBYiGrbA36mw+hoCj0N@l4;hrfBQ?v6V=r##MInto@FlkinEPLVat*v zd*7=Xzz0I$VgFz<^E)6e00hQP!I$4JtBYB`&j0*jZp4YM@7#XHs5uLl0U(9%e(1e( zjz#MOBbXD=_ECi$w4D@7YQb^6yDX z1;%{8+6X89rjR6XL@R|=$d8O+9FBOh*u@2qM2gS>kLHf?`^~UFG|Q(e5Eoswb2Q$5 ztwxN^dpe*A3>!r`@Mxtub+}3G^Hfc9%p|Dgx9qq5FXLZcAVnO(KbD~JYliqnB600q zS-wB;iSAT6;!+hflu#JYUL`U;{)={g!G*`b%03ub&Mb5ZKjYUO$=hpA)3+Kq$Zusv zqj7y4(xYBiyh_$!Sd4hn&y=Z3iXDyNz3Z~^WCKR{?ZJ_foF5FVN)8>(pi#h_Km_tC zPKd=l7AI1G;9n~|Y!L!=rd*{`*lr=0W1mi3`!6?=6HY6Ap1pXDh0r`gVjJ2@Vk;GY zVXpa)c$D_Je5^a-H{Y)U6jVgh;7}6?m=Qz%51+07MWg)xe&&7x!Xh(sondV#Yt~th z$pEo`?NjMFakD&21H}jmbGIl@zr-(B;>DlF@3vV($5SxXk$oVL59_|%zw(v^lLUAG z=T2U?{XI9iE7F!x0(aoJOk`aT818{!`)&o7C?V@9csc{6{e{`L)JpGGpfma3y|cIr zeYj)#-RH8KWvul|BtRm@-e=)M)O!C*x@KJYHW81z=GgH}Ie9ON6`R>{i|#o*=}%>g zGHQN0jH^h?L`uAUzL?UIIb-m2l&Op5K64^Q?;mdDo72aQ}Hii9eSwT(b&_ppMMbcBPvd9XkK$>li81S>E<&~B$!`%z%_Pq~osB0mG@VJv;ZP;jL zZH5^17NoZ4RjLVMCG+1t1uKjLb2;dTM!y7X4|y9J7Ok?=w(hz0UeVR2P3T;0KFjls zrh@klxD7)(THkdqqQ5u%IhQ#e`aAGZAdDY$cO$YuF3k#M5fy~cY*xFm5zEM})$UQv zPu6nXXQXRv$*21^;ZO^rn!u=8v&Q8`J-YfZXU@;KQJXw`qIVT2@I)iuMT=s3d@=7c z?H}!*qb+Jey(Z+%6aq7vWy2pEzcLU#rq?B`0W1JU`kN3$1oZ*o=~TpEX#h4k^sjC~ znK&p9evoVGdc@OpE}~j-*EDXDx=odgl7Eu?Ac%C$%8WHIPXM7kvwNXX)jzg3+8?Jd|*?#JF7 za+=#{%>hA6n_gKr3`a9LJvzzm4}bT(?6iJ%Y$~XYy5b$2nc5V*x{WIT-6^X5=>fxSzmmCXQ6TQM^xQi0iEp`6KUhZ=qoMXn!X?4i;SGi}nv8IlPn)G)qW8nV7 z8^-=FK3C$OH^Z!&|AJg;8Ng3s3&+N~A6v=z!I%om*Lib`_-7x0RWLX#jlIE)-6_PI zw_IQ0)5ddV5g5b7jmjZiuNH4?HCRm8`x~noZL=QHn!CDP5wx)H(!YYXKPtHVIzUbp zfjnkKbYi)aeDkYV7f_Q^uSJh~j<59V-gx7BEJ8bU)xJXqnoho*OWcsZA$d}JY-yVB zhU(TpVQ)nDN_b^f5ByCd*x%ZH?dpPRoNc&qH&bXb@Nzd~i&l~2Y0t#-WCa`hzo~on z-{b%(<$BX56+mIh($7b!7^!lLg@9ECI$#_A7PFk8U3kJ-4J*;|{`B$b&(=4E`(1@d z8|2)f!;HUYVM>x50jmHgu7tQ}uNoB^-#pl7c`xDSzCb3g6^c^T5(s7qN8AZenho zJwRFP8NUI*Gc28HcHY-YE*wz}`#j+u#TU2O~Ot0QZ?V=PKEFb|QMCdRqNqrk~} z4@iDjL1XW{w$M@a{&q^0v7|OAm{NibTu{X!HN%tMsfDrh&oq~RbAw^!;MEvdaY)mZ zWIqLI1F?RLWI^AO4qpt8ph%XYL^yBg_V4(vzw*7Tr4L{fxqVl#!-W{c$XvnxRX~>K zT=Cz}bjFU%zA)>4@KwLtWrW{~!qN$UVa^b<22#ayQBN_?eUpmc>It`zvDIpMkzye- zs==2T$yRZldPeGGbtY95#5%`*Tm6{_go!_2+hZX-wxF)3hc*dev4zSLQ4(mU5nxR} z?);BzF7*r5YfMT~VtMiNOAl|zi+*xQ`ySLqpp`znpw%?IcJ7q#IFfA1Mj&@ZfxU&Z zmcWhR8%sA%tQJ|dH!oHh@nEfCmN2l5VeN2b1X+%oXY!od@0uLY33hUhhx(?f``R`W z8AQfI!QX3qI<-mt3qUEYVGw-mPB(`nI5{TQw<{i=NBu2%hBKX+GjGU#c)z@7fa^A>lD%A8&V7Rqjw?5%x#rd8)VdF6!pP84? zo4o;lVRAn}pV-d8ZJP;2tG8&^Br|vvmB2c<(RW>OJ;(;$fhIBHpj$mZyuSO+MqJ>e zF^C%aR}tYc_FX>{4UwDxAS1mSs?Ii_4YphKz`whuyw}Q3pp!Q+T^%5f|7qP=@)S4% zY;WS;rT@#pe8y8jo{L{1Twp7yT#C+13xlQ0V9FrY;K9wP`41#|u!p*x{kNH&aIW4l zQGorXm_&4LCEc2@73Y2L6bg=IVu@SG*DwX#k4q;Q!NnoxHg`|-+PC`UEXSkC%XU(G zxGyiRGJg7JtTF+e5goRj(bXJl_}oS7nYkVtm!ev*?P@Lvhj(FXV&qNp$JijZo&MSS z+L`h3-xHF^1&QP_d;L~P;w>`Wp_*YJ)rlv=WQ(^H^P!jM8oZ{(Xai<>CLkxYI+u|} zaMLj4Mp+C1AE%9Hoh9dCFN&jqeI9cn+drLZ#o~X-bkI|o+ky>YQ}H2+Xvujc@wE() zEj3`3aGQ|8X6F@M%@ObcuE2q_(m+>KwdIG~A?#++VV3Peu!t?=D|?OYeXWU!EbIX; zTR;F`gMWOMv||Ns!TVj**RpE--gib7OvPYwjokui#C(sAlP_4guK==9MvpLeQSl8o z)q5{jyk`Gi2G)KH%So?J1a)(&IV{=`85>%n_MtNT)y_ZA>i-57j1@Z>V-o}68G2-B6 z?v15aE*iDm6`kmcJh0WqjvmY3JMi{gU6HfgRC(xDx!J|$P2Gn(MFOYD4JS}h%+503 zqNk3*?0RD)jP?O6iar`)2@6qgcKB($H@qEPmMH}Zg!}0%Wo~JE(JR0}oX7v7<;4JY zO!?bUbAa!XFgO zi~k2AP|YF9z1CHkX?mB-M4ReQ$+5khm-$ToLxE$x_JvS~rK_=&UdM@((n&N~>y>Ch zm#ohkcfIG_U%S$)GPUU1vVX`YYk@9Oa*S8ij4eYf@JYr4!CT=h*_mEX9mR_^Ft~|r zOb=`jW!|{0_NNLbIdVD>LZvVlBU>N|k|VLf6?+$tAT4$W-N)nVAh-6#!A&5JDHH~B zy^z!8zy3}8>T0t55;2&1=-BUzhVfnM3<1E>YcsM)h$oQr1YE>DAcY51T#|vWgd(>C zFyHDaE95cL5QdOvv|~W^VG_!2ig&E~5kG*&>8e|@sla0^$6If6Zsa3NJ(@Y* zxGe=B!5qZ;G}rWJNGyeo8_S*Iy(20lE&P=Ua|WWCHnsD_3(CVl|CbSP^-|?pZBhKl zrww)8x9>?n54osb^y&Y@*qcB@{f2*_Bb64BsK_#viU$1SsTFcD(g3h7QyjunVs)5r6#!|(XA zj^IdnG6>Qj8D@=hg1P{8*tRG)#-lCFb*ZDSe~mT(rIrd^GMnUXF+1Kc<8|&2Rw%9+vuMTP_;YfG zP)v(oK#qKBf2-b99jv<~zH}SOdC9Y#K`K%a8ip0OR36VWO9X-LPI*a~>|-_l5TC&d zwSUA#hfGkb-OgMGPbmopJA)AX>&WF}N7`Fu3}MApFy8LEz~6dhwfboNgzL3G?!Tnd zFo^_Ojf99KMcf=V@LL?<&81+v}LngIkqG=-(IsP#xrM znGqnJJvBM$_C)EL=E42>EmlU=;tPPBFCE#eO)q%u@BhT4qvM*=PA_yhM}`<__Mv|G ziF3t)-sHA*I0d^WbLE^M`c%e*P5I?7K2Bsh4;-$B=>j=|OSTEzv zf@dtZ`~d4c-=|Y!M5gmQ9=+!fVR9OW*k{_s^qSbCe3cUj(t`NMTeCv%kvxoFC!WT> zqUegrWwdZ_IN)%^`yCVOfM9N@=7zdhh8NyPS$C!BOm8fQEPBcwj9HGwz0;-xh)qi5 zi=1u7t7LXYn#$jtuFb90ps%UA&b!vbeZG=ope&M_X;k*8a>e^BZ#!Jd=CXG}Kv_)z z2oKh&rt1zFGjrBDw^jlJVw!*N;-EH%sxNA^0xc~@G$}@Ylvek|)%|f#8N8Ump7X;h z@T9cf?514!UWo66j=Ei3RJXSqqQ0C(NLPQoDOKMT&>nqv0d-vHxf%zk9Y>0$ZPvg) zE|e(cY;1%md+cHEIa{U|{=OkSSP~$Lse$#5B!sUq{b%y$hr4;<({R?b{FO=#bMdJJ zxkhS%ad1(fg{+a)aPWfRv;3E5MX;yK9()TNcJ=nPv9%!KT}-hH&pY+Ox(5Owj->ZN zBI++oK3uB-g}S2}t{q=p0wV6#ig*UBW-5!iC!pPK^q&HL32KJs;iuo}@wv+EJBO zajh*Dn7H`#mhreiqbug(Lw>vFgvA44GaC+RN`7QkZHR91xilM)P^n;SpPo6h^Xd=e zbQ?F7w06G=#M#+r2IvAiSTR}6TW{!d*a2DlDZMqIPtsW#JT_(&gfaln(aK71L0Vha z!QB(?YK~9DA|E&%NVzxzY;SO8xpEaLO2^e6ZNth04X!#)3odH=&+Z=*D^f<9w8wt+ zT4Hb~sb2`d+YcyAL?#;6zT~;Ezje3ZWpE$Y6f22KV)`lNY3?|v+EeVY%cwQYt%fBx zIpY$O#T(-_vk!zmgfw%g(!K8~R)8$8*MT#k@~=fT{x_@zE@a$zM0I7F|4H6V#4Z>=MG*y9B~-r}--xbfofyQRuM}Ll&{CoyPN%5)V{kP|{eOsH&yg1gho8F1HD7sN&l} zsol6aMgh;e%yU(3J%?|2@AX~gi*QpE%Mw^y)98%7$AexLENNtYfJ~zrU>7tvrFCDh z%sZCOJ8>lFF6(M3!5RyykkQt(L=ekv>u}3oT8C~bpG@E|(>wC%WkBYcKMz+zKAdpZ zk?lbp^P`YuOr^ifV{#6^x$}3<^3cK9h)|Jl-W{ylp*%f$O}%`O{-I!Ph|RkQWGrqV zcEJ#_E`7Ck&Y-*V7gy#(jr$S0d7qn}{L_nn2-mLoQVxptix->oFTS1RlkfXFxe)s^ zj;s(ZItfM;GW%}HZZPuLK+^EPp_%{tgY11t4<{&V8t0M+PwEaiVUQ=B3(9=cf|r^F z4-0Xd-N*eEzZ=zcxA9XeZlW*I3V%EQ4DAFIQ;s+?OUKk&4ObL7^5C(gOv(!AA6GPp z1jJa=BzIo3*moltC`sQ9~kvzyA> z!8P6!TZO0mMt|mtNJ*(=ck4E(7z7@TW+&unk^V@0qbNCP`XC6Cc8G||n_mxlwnOGc zY(&%w^qg^2noyE>y^m=6+*Eh8x6qd`{Ca!Ahs1HbO4e`=^F_>)J!ije-Lc$f!823p zD9ttEJry9$bcBg{pFPJMh?6S34BP2wn#a0GyXWTuE${uF>}LAmf}A^{y2@=aM-K5n zU?0Td5XFUOhXst15)F#u*T>bfydIe+-M>xcJhFz-v|t9JpAp9@AFVM+67!wosQTDC zsEgByJI)=>S)G%%%ycQV5>q8a-ZpALANT=ZEZI`~B6^CiU5K%VUlI?3tu6$~iICgU zeD2Jwl4D^3N(%2V4p+_WPVcV-Ua6mdvz|IP*tF~bDlJwnid>mF)LhD$a-y(a2Noc`f ztQ?K?VetAVUjRnLb^Qy82@wl+vduVSw>ofZ%5BQPyAA0G=2R+`oQ~dFWcrmD%q@qX zpu`(($vGx)4N~X7)8j^7{`E~Qp^R>plnmZD`(#K=P$y6XH<(FGD{_^>^OH(`r%@}$ z+EtmWd6oGDBN^=#;{nW{xFx6eLAy+e*j4A^L9K$CErFYDYR#|k2%uDnC+CoX19rwy z81VjK=wC}YRr}!6ORpP281lNf^mUKk>czC!)S!SPm6gd>%dd1DCjCqSq=J_4VEU?D z9o*heAuc_!4zM!saer1MYP2}#3*Fm}POgq!F`YoA0WXEkPhQqv-+DozlVTYBCOw4D zOHjh!PbCA|n5Yw$%;BV{$deF6#sk%fGf%d@q-f2A2nQT?jT*B3*+ugOHhDbz?+lEa7nQEB3~p^iTf1^Y`^_8!VV1!7!NI zkbK6m9>tescN9h6D{sXWlXTiWqnC7QS9Y3oL=jE8(45B#f8+VpR*+@RKl-lO){kdj zT#jp2NRd>@Z}n4nSTTM*d)3oKd?sYZFVfM$^*$=zUGe#pC&pztp}Z&0Y+{itKX4v0 zPsy7knwNvL0rEq%@o;YYiurKLf?_C;7=I2+nZE}Q5|$_aHLE(|&TTAbOXXViNqJOT zHQuZmo0Rk`IHLk_BeC6&TIl=^OSt{v2j=enNM%FDk>qsb3Ckzvonq@@cREd-Kh{$F zGBl~8;C>jSruKS}%5_4Qzpj+AYJ^Yc6T=eYwsL=`b|~c#@`uLq_!U>= z=;q=sfz+>G&;{O~E0c_0K8FaXXOO<~lz)q37qGj0Ip_r=zBypNWs^AmqD6T@)Jt$x z8HKUWK0S2@h$ZuuU)tf;F)l>-c@C_-o>;kGn;=v!D&J?H zg^1eg*ovE1_%%uJD^Psw{OS1^>xQd8*HqkrvZ=-8>dnfi7aF?>cNcfvdqYy!Sl))( zJF2P{x;88Os1)8-H1+XWxZg?c$qNPsVTJGDvIKDjPZ9w{onatl>1ZA|E*)1vwPe`7@1{AG$)o-Tl4L`7Ts`m0_r;-S_i z$`y<#dH>a-$DXGWMcxYrtFk3^ZSb)J(+DLfW>Ntt8_sp~bEyFNYZ=0WYdW%(K#pqB zbyL8JL6N5+;#K?C1^B+Fm_z3JXr6s33$RyT}kYvSY<8#p&o1MtrZH9Tm1 z@jk2zyK7aVB%yfUJOOpUdyhOsX_eMWnxn49uZ*94vq3$2`*Vjx;;`0r{45Sm{-v%N zjOgmyIC!JuyZkeO2%B&`+(cI?)ZTMr!h%Aecy}sYfVlS7>!qJqx~kPo=_HNMgEcU4DLZrEv<1H9!6Q?n(r-eXP7M%UID^SF6mE z1uL|>_f|F1Go(7(c>8UEPAvsFon|N;WW5~*lfuXLb3pp#kPz7@DHdxi>p3r zqv2+&SCxu@=s}(H1g?We^`2VfHc|J+AOrsg7($&f!gFlq&WR#4sj!C zhXnoiakEj27;@U@Leeg(Ni<$hR|HQp?-;X7F%0VZwWB1g5ASVSgge;2D=b3#m{n3I z$!-rqvFe}`nbQ&Ivx?+k6 zFp|+)gbOEFzQE9c)DwYRu%w%H#Qq!&dfw&UEqL6w{M8?tDvU3=0KnU-+?%;y z*17Zm;e1eX8<>%N`^x*|MC(JvbCVywrm9aW%KeTCl$I)1@Q!_o7NL>stWadu{IGa-z6) z8Bi9bwCA?>)Xku7scSUCT?sKlyEN$kZ60N)Z;6(?Zak*PoGIB^vpWXQbbsNz6*1U8 zRO7i==^p9rIZ*M|&tEnVizCn>k=SvdtZp)HSV9{A?x z!wqXGD&Ox>e?bF%;AVNH?}ZNNs5pVb1Y1qry9-yg-$tpgOau%!s`{+O-B|)Ij{Lh< zNlw$PM=x*+GJto=hwu_j}-|d{}9h`!Y=D-cq zS+4t^URZDfSlK&iuwcy($^*!EfsW~UO9Sc!L#!tmjFd_C{x@nUWgE(VXi7J18k%z^ z_#?+hR2}Tjwf*a&&Pqzl!Yc>Pq^NPv-VkR)J5~NYhBFVBvQJ=a`wpuAUw`u^ra_9f z5)=U*iZnj-q*4*aM0MqyJ;42AT{WD(MK^qN6YUy(c68MQA-&+Wl$)wLp&8 z(e@oi9((SO!P{%?ZQRemEI$h7sUaNviH(mftX*sqj4_}6^3!Q)nImp%hat{>V0GD5 zIec)^kR(Y(8)PlpPT=j`!Me@Esb;loLhRIAV$WvibL(Wp^vGR z?U!`>aF~ml$SceTS)78?FP4D^WaFbs9qioK|Tk|nHghe9gUM|3BJ*6 z;#!@(9}6krX7Ioe4@)<2BiXebsgUVR*^!&)F-ZEk{69AUI#= z@}^QVm0g0xa$9!3UvvBP`72A)s{R1ugywl)^|D%IB;(esrf5paPcln3)I#Gma8SET`)Brn1QCcj$CNl-SgWBY@pONWfYa*FD2+!m(|7JSH z3k~zG$Y`iAd9Q!F^7C<+Y}>{IF|=AE5pIanU?B3r(Yb%`g~i+EGjbZoUQUED*9YU# z6Yy%FL7aOWgm5hy4P>+uZce7S4+gLN-4o96s|0(p0@Sp{RypuB8&S99GFDsGSr^bo zsAAYVVPE#{4PPsa=<_!CT~r(;lQXonXMKTHjU8;)b(kG}OR{uChx9{P5g+R11(*V? zwlj-9>1Wm!n?@<)0oim~7=7+3_t+!${mc;l?8?lj&!$JgrNhV$$ndKR`vZTFWmGJo%>N>#)M{p51B*N0@g-R z?z4>~(HZh`p@mV}xu%b&Lis=WZ0r$KM=&ydD`piDFN!~rNzrXhYx0zmq)QE!`ilH8 z)>q35gzM5&PIn>RJ}=;*Kp!lLDdF0n?^ntiZgB{f?8R!rtn;$p^4u@S%`cds7rCD6 zs%=Z=9&g_+uyRobcd$5K@9q~K!WPr@YZ~iYKtS5sRTWCG@2d0o{VqxAVKL8x&yh|v zg1JMv?R@7l%&Q-$#OGIr^OAME790u6^{20|_N zteOp+N*5*uzsC20{?WGFFJCk3-BDVM&PD4D0EHrkd+m;hzB5NUh>jjx`JtNs`_dHk z+*z!B{nH<(3a`4S${pF6MF;P(%8p_s0YHN@;5+tO)d%aNpkI_iwK&K{jc2Ai%*2m$OE3O4^bpW?8iCgjQKUuUSe)wK6 zs|h~HQK>#%R|#K2Rz0l%8CP*C4gdQ@V9}M}Zf>cbb*v`|!z$MbTQjZ!ufONe~ta#@qH zPZl;?%EN`bA4?5uD_`snl@m&&e5*6AwZw$*Rj>7V`isl*tAdGxp17wrW5uLx2|XQU zpZpK$H;k_eCHA`X+#Q!43vRi=^YR9)<6G{`?1_6XGd2ICL_}uMp^F-POZ%8NnaBPa z)ax;otQFb}DZ>N>FF9V05HIB=7=}0sMiy^>QK7-A*f?_7P^MRuV0YO3*KdX;JloB@ zy~Z9B?3`X0&n9Rj8%G`qd(ZPy8*=&o9*4OWD8!WAGd>&x^WS8>Ol0bVWsrLLu+}9- zeg;hTwnA+CSH!^>Gx3;GDDr4ReZ+y5ZJ1E>;iROnH%$VvcHXSi3D;Cwc+p52w9U)D<4hu4>vq$jP*q8)<2diSH~Qcyu2#{ zs!N%(lZ{;|^Ad;e#et3!uFy;0CHU~U+?hDw3>e(8nU233(sSv(;~L=1)y9!#V&Ml$ zpYDivIW5HXgZWTJ5p#ifFv)OX1=cIlTxeJqrwR8EU9}Ty{Ty`DuG7k0a9Q}~-vjye z-HK6Cj+8V|kPJ*HiC?%T7`hDGDalT{DkNL^iqGFZENhx5Mk zQrI~L#puIrw?OWC?j6AnbwFlM`yk%acA1$FOnOW^m`@Bw%D9XkgN73eS0Wz zYz9m8VxN6_5-8_!z$m?p7IsqH^ZO4rD-S%wSo2xg| z{?XgU3v+c!J1F0(-CtW=b)0hMnYdyBQLn-S*RJ@bM^{yR_iKbIK6?s?q%!3!n4-N& zuz>Af{>Jxswwqt-+)%?=^AfhM&@SwZS-R@CoY`yNK>3?cclVAtS5j93 zeWxq)jrI?|3y=SV@wkH+Zub$X@mOg89li62GyM%->BJt`Un7RAUPH|r+50%&+apW# zrkHq@f(xD0Ki>NMsw#xrhOWOwN|_&aw7>Xu&2BvK`*S?z0o@<=PQEA5nBcH1C%m4Y zpZYi|^(}9^`yXx)P0mRhG}pQ@L!hF6Ji==@2aa0=MCS<)QSh`KtT#vGUwWtY)_2yg zXg$wRhglyg%g6Tgag{M_8fnwAICcAQS?k(Zl89aQQ08;n(9Eo+}5`UU?xe?`9mYNy z2U3_rTI}cbJi~^r0HWqTB|CFSYKG2;GppQOJs-yoVT&(|K3-`R^w*Ge!6&&!!}bBv z4|a#$t`=nlq^z>T4QD;W@W!ZKzSwBzDGvbq9~`S3+~kSC(iZGN zD>cLZsk`0D8gj8HrY~mETjx)zM)foDp5^z^HpAd4nbCJ)q6Z53YtmA(Vji3d{I*z~ z?!Rii-3V@Sz5%`D12bsVw(^ba!5vW=;U9TKe6s~DLp!7DAn#1|h7}Vjq+n0aaQkLZ zDICChS@}+7H6Y+?1un(oii*j5o6+w1mw86sgEXI_ujXsuZqU9xx!8FZ5PEL492#_6 zk6#oL-E?HH4f5&TBiof&S~9smv|25>Z_tV0$qXK5PJ@J|pGG-@B&wQFDzWT#~fVspLMrh1Awxf3)?)&?x2`7xl+eZTYOvx|oU_+iNUZMm=Y^`tndrSx0h@ykLNQBkLoV&B>?pgz zT2d@Wr{vt`-?ezt`os*~m`F5f77i_wIi=7x&2d6(2?(}QclrMA|6g;|iJ|@Cxs;Ye z@r9wO*Sj+r^B6Mdx)g=4E|0NA0DNa%Fzin?=>5+yeWNP(qr=?aL7j^_YjtI(mXnV;tXyta+J}R?M&3 z7-~{7QK8-wrz0?gS&u*c=T_QLp-x2YmX(>VMV59|*()&4PD9c2o}HGI*@JE#H(4R| zuH%{8L8jH7UvfaiGGr#;$iGkG>m2jC-T(ZYAh0u-&R93p zKZicfL0==vMq!0-*`5cx%!?lDniAmdG~XPn#jxG;^bnjcHqT(UhSo zzs<^0f&zY6e`7sLrk2itV;RR%BY0PNF?&af0-qsEW^iD5CA>TB0;`Xsn6^~)6`ApT z0;M%vCUp*4@{iGt_Ill7K-_WipNzth6$Jm$kPFobRxCm$I;WCnSlkRHp&DD+D;l=T z!m!>uA4e)`=<(#q&rd+vV95vl6?NOZ-5Mx5JIe%7iZoQSi`Z;phFreo02M`3MF{l1o6r+m zI)dqoy?OIF<^@-3IHsR9`wG5qiJ_{-Z51iUZgf@G-Ml$l^=7NFS1bO05suJ~+k*xM z-@bX6jU)fdqI(u0e~{?M)2$5gB>qubC0dlHd?Zkpu9RSD&pWo4c`B|e?&sDkTgVg0 ztOlJ;m~w-1W}L~xm>1weN(qj_YfPWhc9<@*Znsx3*^X}wMRG--hDW_yv+f)@HO6Rv z^UHh2^s-=ae7g7X2k-TucSu=QNd?x+-AnQw!8=ZJUSD|8FpM=dOC5L>#l7mjNbCX# z-jeq58`r@y%m32<>s6t6uYZklkl<%?M+$7tHZi(XeMSmzJ-$O?g5F^2fQ?;BBe1%q zv67lDKk2RhX|)rr%mP*rtIlk-ioyj~B{ACCSIz9BkV#9CqFCAzHtEw|jB>&r5|tX| z?GZmnDV+0pQ2{&Jjj7$^=bhmB6gNjz^XATxkuDa1S~Zpu=6Z=e-?m)K?jv zk1cT(C8u#1p3nFN`fosm>tN;)eI->iwjOc?Jh;O4#qs&`r)*~xmy3eEHO`n`4_FOJ zWgLRo#15$(l2FI7vNg`m4-TOY#G_M5f4yTU!##d7l?3(F%;V13KT1Ejv3zWf2V)#! zm53}<21IP4u7RCrFK$)*z_;=Eht1F;U3D}jZ+;~7dXcn&?4uS8s(Av|OYb}E_N!^$ zS!tQEqsWle;7>Vw$ze$pJp(6Czh%=eI_?D8PjR%}Y;x5J(tp*{N0IRD&l|OnMhZ0P zZ1Ctw^ijMJ5GsMhA64oAAZPzr*mb`ZIF$932N=!NA9r{kw9MBd{O*nPEzd*@;%69W z?Aq&mRT{6OrEUs-(+%`isjB+y%BTj zeM#@^a0zf#q*GvL)#Yb|ty-+>-^zN{n2#Ev7BTa&;=sKT69p?{C0r}dwa}>j`~(2= za@=q-#zlr1k^|auh)wuw=?@VSDo~Q0d0P3{P4y^dvS>6s8ZE>t{+Kmf*)9tEIaQzv zZ^1RwON#qg6xgF;0cZ77n+?%#C7PFYPbxy#KRyszh=VWVPd5(%Y7{k}&c1bSP=ACW zD_!yScx}r7#|8h#AB2`Mt5*-N(@=!S83P+=JdI5B3lG{`L>sytA4D&B_Rhx+~jB9>3U z+R2R(V+J=R;>8O6&Gzn!m0WkgD`08-U2|u}(C}ql2mW=YmN&8w9MCr3C#TCesI?My zJr~}62{C6!XGA<5pLX13a5r!4i6f%#%3QQbK}_G8nvX$ODXkHS6E8#lDz(Dvbjh^e zy{GMZ{XKd0rSDG^2!Tm=HKfS`$EVK0o|alUC-mpI+AVI9DenDrBi+733F`r86Z#2$g6Mts9cMLDPmaKDz{e-|nn!9FNJgICg+ zSA)knnUZflIz-)@UldlyEZ0K;ned)~LoZ?@TDlJ81s~s_7j*?ofu5uY<}H-UeCjl1 z8)?i(fepmjp^BO(fY^9?@s&7Wr@~{Ad(anfH<|7~r#d%e1Yj)OK)#wr_O*i82C5kg z*PSOH6SZ(qwpSQs{nJ3p{xO+(&9UnS=O+sP=@iK!+x8{j<8=$1yFz~Rv;lqU_4G9+ z3Nff;5UHBbg3cz4U{<{E=(Q(JMKxW*Aam%S_@k5IgI(P@l8XG7mideFo)!ftM(=o&$-C8O8?%m=;0nexP*?bNKsD{UK4+6PP6~Z&OEE?0+_MF2ICwT7#Ldbn4Cv z7ko`uwSJ%I?|K{m5y-L^uH$ka{xJ(eA)fb(i_HMnvydx&%{#ZtqSbdPIlmS>gj5>x zPj+3?%lQ~a#e*X>sprj{pCzmQnkSMFRVeT48nyJ#Yvl|QTCcH9*Ly9x$HQ=+rEC7& zh)@X>_G<;Fk8f>6mM>f{>~^2)Bv zi~Ue){=M>hc(z>bwCTQ0{3-{$Eq`J|W$tyNfdO+_+w->`V@$Q;QP!K@yW|c19H0W4 z@%(4K8ev=NK1m1uvD9Jn8==LG>g+ezzpEmpVrCiI4nNu!KoMp|l>MkkJIg6womjGr zmf4z0s=Fnds_{@TW-;KrL-kUrGYSz!xhHYe8WbMQl$8)8M!??d>$OAHlKFl|FU_h$ z1l${k?(Go!t(}>2+nC>o=r6-X>ts=(bpbJ@RW*>!6XZcp8#fnAH>UyJ%c96G>tDSo zqNiHIKSA+;nx}2jfz0}Kh>HdSoQer0Z<4|NgIiDu%>H*pd)k&Ao%Nz`{{#vG5!`huw z-Dl4umr3_-T)-uw@=d<=Z=S5;+$e${S#BOqS5jIgCLm@1}V3qtxsP%FSG-? zXqKjvQR|i<{G{fezYz>ydJ6gbdnUUW=<ocXOt3$9^7nJxl1M$_Ws zg)(3~jQs4Uf1-<2SU#MwKpOJhN5>e)`9g^9|LC3k{~s)5(>T?pLDEk*byIL+0!M9I zHwb#tTpl@!Os>RI_iTxOa@%I|D9iCAlgrrn^@pU1WKgw&W5i-}alk_Z|E@ETXj^LC zfW^ITu^-=A4c48Vdgx})emwqVos39E)h>}R{llsM;n%eyP$tEL8{Awh_;G+QQ13ij z2T*;ZhX~iZs5^c6s;fmpa0Set`4K{k>snP~TSwt1*uzgvEbcP#SvsBz4O4O6oBnSv z)@hZA*0x~i(K%?vB$sZC19F~yx++Vz{jr~Uqu=ln?4g7UF z8-Sy_lNBK_pXbiG9T}&YH|_47j<^$s$L?8Nn$Z%A^s>I3x$z^5#YP`+_Qg@R<>;k< za6Ae3MK6rM#cVR26^TKpR1fZ_B&M&@3EjI-rY&VNuv@bu|7iehT~8Kao}Fig=%$d) zJ?^`v@yvUhOrn7G7a~8XoBrl!!^Gd?dIXzBvbG~>w3>to^vES#55_Ug*8@$P$L&4b zWOjk4HUDtkg`!nig_h@~*~yL9bgqx~+@!Ym4i;Pc3w;OE^b3Kl|3ZE;-HEY#ZzzK4 zGZUnZ+hE6$%wP{{U*IgZSD$EaqAc&5>bzZquE~Oi6|jc;YZ)d&zf8+`0pl!Uyl>E$ z3M1j6aB`~@`)bNS7oEInl|FYR>!#-!xd|x@^Kf#;t&(?lPZ>B|0Cpuk3kp?_bj@n3 ziMv6&dCs|>%^ZO$g}kSrp;piDT(Z%q+v%kkp(J9TOfMxg5`ktRcZ8~-@7(a4kI^67 zjO1ACYA}1re=yX^`TVei6Fkng6261(br`IWV-l%d735ZHjKDWTcw zY-UN!7D1vdF+N9?uNZU>y2je-8z(ftkFEDL7&N`F{y$C1iDitcp=mHK18Z52 z6ltP1af2Z6;MQ=Ey`w^L|4rC?yHD7KKc?g_7a&q#6*F zU~*eFI|+MuHz9)OWztPcqZp2@c3AydERvPFV8HC?#A@0DY*?7tKM)`;%vsI$*_Sw2=Z--L|C4Oz-A4tN!lMOVUR> zIyNlhBz_=wN-Q)~Dt+;L!_txIrvE}RI=ytp!23{7`sOhF$!iAW7w_Z4qle<-cHwi3 zR)_{Fk~ycJB;29~9|2TFnfBplufE83&1|yD`gvImTM2%kOKK7?3{g{NL5GYFRcTJ4 zN9EZ{jzdDBcSbO9bcDB*j%LSSekv7L=;C+}%%~ptTe^NoY-RgCg&hbLyz2nX1Xu75 zV)X#7%?Ma}f6_?+yrFVkHAB{R?fU>|26w?If{?FYgZ4JwQ5OBNVtKi=4JCmXSy~<8 zmD-@0kQukZv{UjfBag2|bO(>T4 z;j*A(G8;Je^0TLO&y^O)nsZ!0vQVs|I<8Q!Y$BA4WNrU7YC$=nYd3(Rv=UOU#+DYRLxnDwxifbDfop4f^|Zv&1H_wqKt+GpPbjlYry)FpR<% z7&mFjjYALxy1Gj;V@Ej{E;H2X{v!o3`|2v*djvJ3+?_a&E=HqCTYu4& z#9JaAvz2*lJ1#wp6_CHAp%wmjb~NSr`47)$j9?O`2`QatVwT|TE%LU0( zav*6O{xo2r@cpg9)kfMow_}AN!3TP=E4C3jKpAY?Rml>_oDpW7TUr3?&b+>K{o<2j zn)Br%!@v=Bw&dOOCb($H8Xcuq%hj ze*TmmjLU@*QU_d593Ss0dwJK8stUbBy{bRv;$w!&qU8gY2fM{HlrL__h5Gb`Bz;|C z0!I3(ZiU%ko$eQg70WG?Ucl)q5$vsI9x3$oyCQFfzyG*p+Lq;ipwWR4KVDTZvg3&y zOV6u7`r?|aJqlmNPlU&#BV$;nm#)3YR`JH+D!XS}=Y~F02y}+LDyA)jtEPX_J1Qz_ktF-Ip`?DY^eOC>ia&Oh z9||7$^q`U)6jzV|%B3-%i-&sjMOP-2Hy3(ht0|iXSwnMD@&6Ane0#0wYcCYanC-;t*zjGDQ5tZ~0S!KW}*NFEp zLWg!=G<*WfHF$;i{1m7ZLa8t_fVBOet#f5>4IU5mndL3OL>94$*eG#x!FBPC+w*Hj;(Pdj-)v&nc7@y1& zM{cvNt1XHU?;Bb`}?c_%-f zXyk3$h(66|aE!Mtxu*vZJ{YUUa|S_TbOM|Q-72|OI2UY-q3tTt=WrPw6Z93g%GD6r zfVNH*+#BS#Yu#G5M&60>`$gfxI68$JO9ckhG~WHEqj;=qXFl3(6tqrtgjcBF3vmFy zOFxSs2`cm(Ja+#bl)b_|=KfFIZ%pL5+oxgWZe6@>hY1}yZ}vXpYUw3~aU^V`h)SI1 z=1e53DZu|o)+JH)@CsNlje(cBl5M>j0%l!*0wwD25x;l2q(Ym&bF2r&Vh}mf@V^d$ zbFF(5izt%!!aa5QR?n}2S1)-54pfRdx82*t3!{4Fy)J+(qygxLpM4{xAbDirRQ8>& zjIWwXbZ#sM&7>m_-~*3~yS)xUwgVK`J{iycZCexHB1rVXbr8KCJ3eBg3J~vqr-e9F zR?_&w7eUbc_WQZ@OUDoN5 zgv(Slt$BO|Ih=}suKy~Z@CA+2(vNuC`q5rT@Iwx1f0ckC?=}YA@yjx67W)cXTL(s# zXcptz(sO(jT>A47Py`$(X%&EU<0K4?iA9uFWY6wTX|q~yTsu`k82=aIFFBcrR|~G+ zLlIV>gvl3cxqBiuuN@?mKRm*epK zCfD`-Q}9(3;ym-%6XQUsIQMXd`2MTgPlS(igS1+K%z$7;uX1qUyjcOCjaGu0oGPgm z?#<6RVAdL5gvv#Kq50yuk)$&A_-dRN{8wTxzYu_Co5080`$()LnV?cF_36_|Q(|a$@JYB!lv4-CM3timAA-@ z!k0*T9KhWQZ3Ya2K(3CFjA@hqQoLA^hH=`{YPR(AoDdEb4n@}+1;UmmrfYr!05Wxp zzoy6cGA^HFte3nhYRfjU2?2S&1POa zjp$I1sH|nIu^zoX4&)BzrP=@K)PGEjZD=T$$|&1hoj`s(hmR^_O7mWx>eMRZCEtks z*!zO@0ihM}u&xpzv*$hE8$DCTdOH{7nsqq)Xh2sU?frIE^-8b`ODX>u5R4h`1Zg?R zVY~Nt+}gyq83Y__J-syHc_=;`(2*Ge%TR2N)2%FGGw0eSi<{1>tm=J$XXq#Vd23Lb+t6X6uMw5+cP58t2%8{AKCD&E^o167vu_J=}!Lb}0 z>_r=%UxA?4(0N4qgm{*LAEUvZQudU@K9 zKlPxCF8X^W`diPq9-Pf zmcAt@Zzzf#O3%kv;TI_pz1A6OWvHyJXo_4t6w(*VD12*R~9Z&g!=EX1Awvgk-UT~|^K7NyRJN)5)G-Pfg zTqKo`O$s8u5VoOlCSC_7gu?WMUWy6cc!bKia<{@^<%Vb?_BSj^-c2|q%Z^24z&>U= zf+2YJW9*4wVm&5C$oRnjPF?v9CAY^3>ygrtm0iR!Qc24eEx`dqBqLOgBQcx! zyy~4)NCv8yw62cXjEfRwcIiIXIParA<+nJ)Gs(IN>Nz% zI}7*PNg3(GfE&F-`GQ_wF$qP)7`{*&9<2*1;$pKsG5K627?wpTvO46yimVF65*BF~ zmjKH(vC3C+5$e|eLM~_B#y_*K2|I(-!tahU5+=OG34s>u-Fq0j$Y>nWg|V` ze)-w60dQ)mooIdIfN_^__tiNnm7{~IS_-t&IHp3mpw z@pwKSw@Xb^4?c7q<@MR74f;6qx)rWesqHgQ2%M4p2(t9rPrqulNnFP;pkzkZL(;FR zF0S{MNd||ta!9~i3kjA9uRs+V-l3nx!DClv6Fy(hSNjRk7F3&Zu4(;ztGQh8;y0!W ztJKMOI(SY~mlMkgobYD?%EDw=_#xUG=uutFA&fo^A87yd%dK*v^f6F{-#p0+ru*NCmd zXzsD(U+EP>?*z5`C6J znG?6&171P|U%G@r=k*y(cv)9%aKux`!N%ARHiiOh76LmL(z`x&FZqzc-TU0AJ62%K z0;%9?Fm~Z|1($y^$vAsxO?m_w#Ddm5ROL|*!UVuweZKFqT>HOIjL~{J7i1sqha!LR zpF%VVpSAmCIk7W@)b%~nq*@p_kZXo{91{3dUb6WHLlOkgIGq`_qMbZd!5f;*$e@BP zt?4;Qf0n*T2S&qHD= zLf9>y9S@F6`TVObvq=@Gj!+NsoX%L0*MT%Iuk?=`sD7YUed5>9b249RxFo^iT#9om zDDUMJbM`Cu*O3-hqaqlspK0+`bFkMv#j?0bTBy}2T25a&IBGYJdAS>@&L+XxQ*108 z95>8$u*#=bAif9U*K4hW>xb#)CVcLq-r6FrpBeTo!PZlH8HRoH%=WI*rx%*Qo z{k!nYSs1}mYRs{Y#kPI7{&wF`3CM%mKDraX_e1mP(1zisw@uPpEd@~}bbv}M8n?5c z^l@70ZI^Xy5q^l0{0o~Ts!`o9gYl`VduPSDz_~Y0N+2Z4hjo&(sx2oT*ijXb`b z?6;bER2YTV0d^R;uL}dHWIBVWoH=?^Xn`oPS#o3RbN|pL3n$im=yGZpD-0EJ^DiqV zqT|R?!kw$&*T`37i3N$f0mtw=y&#k}9E0slPnJ+Tnwx?*V$V$a#$qB= zK@IFBF5FF+O&Mx<7 zC9g^!IBxZjz+QGv>IOmlPQbNybK22}h=X3oueEAb3f&!)^#;nJUS->3!0qB7srmF?%V`-E3Y5AWnYbt_`DO6xz)X#yM8Y9X z?5y2@Vt1Sf^3;b132Y7s+<%a}gCcE4tpG|Xn8@-!1KOO0hkFc` zXLk~usd-&QFOAUSr$vFk4{TaF`b}`zeJ`Hmb>1sH{w$=;_o7olyjKlx4Z-e=FD*Rc za0YxTaoR2sFz|}kE8Ah6vtJ5){F4#e@y)JWrxChH;`F`MKKg#MQG8V3Lh|x2zMnNM z1s!_7AG37weVFILAdLKRQ4XaNu+ynpC)ja2x_@B%yAaX}nx%%O`o1)gG)E4!o8Gnu zC}Gr3g&_*2qixOs8Am(v6=BB;=&y^r08T01t+P&gWZHmzkgnMm)b&UJTk|LTZl!-r zICKs)S7a`kTFwi9XT;BiZky~Q9Y57vxyQ-QmwnS)_;rVO1d()aA3-+Tl3o6R_NVo% z!prnhkXGl@)W{Z6jv&fAmgoBQ-_LT;+k5@v;U#qa5H%}_-q$R|mhgkL?)gfYASUlt zA?S6LypZ+?i6M17jdj9&*8x*#{C^S4p-QP90TeCy&AaWLtR~ce14f+AYR9(dcMZh;WUCv6*%=)7JI|-ixK9Qf8 zQBH*w4?}NaGpw$^t$@da=kakn9>W=b+6ElNhJIh)<;{FQ)X0-$8k$3@3jm>Dn}$_L zIe&#NrG|?Yae?N04mvcjYVwMjZxyr!4$R=2!_zXF2w1_&`0y+au}vu}kn!2O=nvnL zZk;W5PRJ!C)%)5Mj;rNX0Zf@Q{ML1sn-c8jczju$A`xJWE6PzGqtnvQOyCSF^=7a4 zUv0Ukb4Xd(xtl`5kR1vorNxS5!07!$OKETL!>;KSgy_94_*CF>_wz3cIUh#08hQ`D zdA2@S%XgXypC)piERzoXz}EZ9pru(>@5@FVZ{_uCyj?X!@AR43wKOk!Ke?!nRfqln zJz6i}Rl3v@m+1dZGjL4}<~4u$PU@%K(|0FA;Ci`x_>J3_DpMCEZ(bJoWdB=KW1AI0 z9&X=UOHZE!&a6vNv23UEzqyeBhjq-b*bZuT5UB26U%L<-&*3NUzsgeDsfm=k6aPB2 zAvxvGw0WJeL&EF@h#M>{^3D>`A~k+KRcY02*ifl$HpqGD%X|F8cUTPLRPpy(4sINr zbUL9}W)heiIIqf&BNd(30}#$1jFaDho-oJCJXwY?FunPz5D;#RmcsYfgrf%wGRIhK z_2gpNCBA!izTMWd?w`qV7XKS_A?hooQzi)K+?9S&s&PnQr)}aBY0cGw{Rr6y4363l z1?<2iZL|!WJK;PR1lMnlgw+IW;Kv?lJ{oH zg(Vy?OCF4paLfQ;-9t6)S@8dnhA4SQb)OuDqiO3b*dm)mJv#@r2@)yTr4CTN!94D< z*JZy1M0lP1me2s@1^W%i_j7?HMl!I;)aB{cWt6wwBIgcMp61 zR*KbOEGg~PahH9uoNR?;bAorkw?5Z6C7O}|D292XshjirEHpC|k`!f|U(R!6)i^Bl zktYjE{_6OoRfJaLvJ?5@Wz2>KlDY&mGMVib#b3P+b87tu>7x|+lZQtwN28|xgQRF* zZI@2v#Cu+Gg0-h$AX$<2@TrqJfueJ&>ny%md?9}7v`9yT9Zi&f;QL=tlez&2PAS_L z`bVYgq7z3uKKQ({`H)fzxcQp~a$Zj`L*Jox%`V$+1li`X=;U#wlof5Z~5e0Wp${mDmh#C34Rw){kv~f|4Wn6o z#mlj`zrIUB0avC2t^RZASCIABcx(k2k}Mpn656r9 zDjv@~UyXwloKq8_NmNPzz)p5)(TgpL^GhkjMw<_~R{OO6c&eH|73q?&g^Nd zf9^`_uMPhjZ5po|+-Y#~LV#o6y3YT4$xqquM%{y}_y7hTs8&^Q0% z__54J1@duTz#zu~0fK#UCv=oJEt7^UShfasqYD+bjWf;~1w;*vDEGemtVYAxPSUS| zuc#Tgv^&q-eYPe#&s(GwFF`LYZo0Fp^2xbp3fq(^5)QLP2=B=Yfj(gzWu~OvRkq$8 zygVKC2A?6=B2-u5);E~kPIuhUX5QIz-Z0kL2(0j|Di+e;J|G4XQ@oD{P-kM8$oEJG zaIj$&#*f&VUcj-LKG8z!{Nble-j`~XlURT!d$Q9bxDtM+>R^1%?c>?>W~EuXP(>$SV43nyYK zHEbQp)Qc5Ko;w>Ks#RM%plkrQ9` zxR1UPt|ec-My~)r0Mg#+{!KR5Ud_m0Gz{%RL1uhO(Wotx(C#b|20)7xihkvcO>_Pe zWl50;*f;6V$0nd^4*Y=gax{F3u_l5zq)Nfq9gm7V)`gNbC{lHGa9thl-|j~X+nNmxB4 z+b)LEv2%VDJt<1TGU0kv0%2pf>wv`(Zz~eWV+{&tk}Do8C1dBAUQVJ2?qA*$BbVzK00R5qM{}L#L!|1Z3LFsHc4^2Xootn z+P%q7!DBa799`bzNR36G7v@n{Z0H5tF-B{zQxQb@R#M#pZX}qQ1z_KH?|q zk(Xt+)XyX6WKbKTe9x9GzX^2%L2CP!K)1v=8j|~V0PRo23VfA0teHlmo4W-l^@7I1 zA(p*G1!ZW#iYRuZbT1}6eZVhTu>J9G?2sf84#N|{;C`XzFEc)N;nBBP&DrwcPU9oq zrYSqIV_nj@4Ut=U*Tq%;>3HF!c$rQEvkpcSRw0d0!<5q>UTYiC__~T7;(Kuw!pG(S z*s?dw$zOB}Kxas;FddgI|0gQ?^2_sihi>*!0Z(smX~kMBq5pl2{TRK*4lrwa7!;j_ONuC@z$bK#jPg_TPKD@r|`oF_(zW-PFjgL)Tj^OCb zip*U+5L^o-(70}8K5CVemo`FlvO@d7%50gAj`s2BZT58rpwIf**aJaG-Tyci9sqys z|9v0!|9yehFXycOPrK6Y=lAPL_&sxXid26?7OPUdLB&)q=~oH^gy4~BDU~|@Tae|zDUpnIEQfcAQwvmz%0~f? zMdgjDcQ|wU&5dfXEgsQFgtN*~135deaELfG zE2RO>cdAIP_O`p@sKA|@1$POz4fEKZgtBryWx&}}?U&g7=hjz61*i)HIO+tAaG=BB zg)RdxbEPRm8<*SfH^`+}Jat~N*5AwQ^Jobsl&eR0U?knNYjzKBP*PD7*64{XnvhwZeL?RB5|+yboWB1ucy))~3UgBk zgRfVldXjMZL0=MEHIO=YkYe!x7f?eKLDA$>IFp7@-X(pOqwG@Jit`9v3;hcF_@mxY zZhxA29rUZs63ZaJ;xne_FKc%^ zU|(r$gLh?p`;YsfeTihANet0lfNO@wnU0zNH zFT2kp2Mde!$Ba+9X%5D#hh$xSIq?c~c=Qs%s{zXhrP`;`ZFs5OVi_QLco<@LYElu^ z5hq@;BAdRo`L_m?Y&@9}ohw`aX;WDnL!!S%x9G6%TfJFdkO>?~E4@A|f;8$EuK*ls z;$5e|hY(JtGk+(#Y|{BGSY?mb>1Q`=Anc(*vkaDHjnLo!Aii@Cq_LrY-UYr!dEKxW z0B(btc2<{rB8@5g^h_1?nLomNu7~8((w1})i5&Xu(LhIYS3ibZ2Tt!(y_2_^`E&| zj$O4EvT$I(w6Ml3Rx;u@&IQrOpvPo+0olZO8^Yml2` zo2<8N{|m$7C25~!&!h9sYx9fk7c9cxlu4~M2!cMMefvtYJOseyUd|WjpUeoM>Y=ZA z6RQGO5PO!nM_sgT;>!QR9s1j(&z{KH*>5?kT>$gQN6 zwjxq0V=Up5HAht(ZQjwd{+w=INbl_)Hj;^wtc847JbIWBu+9pz@LcfGZP9#CjQpX1 zLSOr=Algu@a3g@mD*T-OO_AsAZ!ksF5kM^<0#dIsI%g&tJ>jc>XtZ%=vy}RYXW?D z`GQ(nB*%;{Ml4Hd*}Lk>)mDKy7oaS7&kFFFQz-5AzIFG3p(@Lsm6^x0j@VQgxf}i~ z$O%=y74gJ>FVd22g~hg)dFj=svGF6?%{PA?SF<2+!$NyqKTSXj969ms*uOg5yT-WC zB$r2ihM>uLNhtH{cQ$of;(ewi?lC(5StVQW%I8A@r&_4uyQSb{|3njICcEQ;*G{-3 zJjbA5l9x|>U$YsBQKcxBKW;7DkL0lBQFzAm7|%XmaWLb7!ZtvE;JF?=*zW3!Pfnz< z^gaCTVTLb>p`_29Q{{0l!Nh6zXfYvzy&VjRh5r+TaQ0r*t$@-?v1uy;O6l)cn%GmQ zA3CnIx1N|nfp6jO^F8%~eRAW&lu|#Az4GuYfN3sYcXs*#3@P8=q zK}-qE#vaC-z%W-3{{_?@m&NG06+5iDg1PmV_7B1NfKMrVM;>A%o4g~mj-naipiQtb z#&q04TGI+7f&RgLHe=cTh3g0UC#L>w+uZ8gHd}5zk!m zi_R)nI>a=2PBeLUyEGI@FL?!0Qt(gaBIEKGL%kNXa_hKvO9In$cO39Tk9o~1`d*s; z4t*;81fKhF*`slGCsH5#RfNfj^(3X+BiZ&rJ!2#uzA|?1zVpyV@eY2d!-3e+pVSfE z9hqZcvA{z8SlR9VA|^G=yS;krwA`@PYXkfMVFh2tWBB{5aA;IYW~5)k*Hr-Ndisu! z@=+Xz{6R@P9xS7y@YagpoQ$o46GO>ysnGAsAu2%C{@V8Do;PPzFx~pP$j9grl+Q=| z30wOMXYR8*_vMorbnCnt@0`#z+{x$~3i?H$+F6c+TSlU+-~P+DLlsdkmtM%?Q%KNL zIjtIU;GuJ)ouw>3daSzjgMk-Yuq9G~zA&>qy^a=X*g3<3XG<>RRI%!WZ+Bmi=*k#Lb&V7QUXa*|+2fb%55_QdEjvp=1zBPHDvD|0?rH zmHq^;)5>8qd{bMc`I@ArrhZ=z-%<0Q7_mj}!F_4T034Zq6(2VC-r2h_7D6z|kwMzf zJE|;_r5h(nOtA6XY%y7dY1-Y9b=GK}dM=P;2#(yD#&78e_tdZwyN&sShbGPI&AAg$ z{#FB-mgLdVY~}4);RLY2+-1DRNX~C^u2H))I0;}25k7v`H{40+bpJcAsC$||>Q-SP z$@dgmHLcFTprwtAZ(84|eQ5g1TPwz+FjnT@w)?Pu8S}W(rN}P9*WxjrJ;+>r1&Q=K zE#?7ZrB8g_gLEXgiIuB&i#~7(P3|ydOIe1?X&*=3q-R}eGP-*Ie>}tTxcrQ9c##IW zTb9a!=<$ORS2*FTk$kJ8D+lkjbC|9ii%@m1#72;v5eMTO^sTDmrwn^6J4ODG5Kn!8#wNG5T!-={v3rw6K z#S5pMTB*ws`=$qk-Y9hWgN^i0n%x}chCKHDbU`~$HZKji066i}Oq z5^IGf^RXFBMWcOKm5_&XNtuje%8V#?2~{y@QUts?eeylm1aCKZpo<1kc~&h{XzuMO zd6*$dAN`Qs;da5f?N$9cZ1*8rGIQ31jGJMrX+Wk+mruSFZ#~Km6@M7B8FCgLLw_4o zzD>lEv#z-8C_X;kW+|&VAcMK;&=_~~U`e?=W(alg5Kujm=}XQg;x@@ULKbnc`psdFpn+uL@w!43%8`b#2$}i}VCLZL7vA*G_vSTMLd$>~T zenu&P-{(Yy7D~g@pgwzHXxr0`RePmQUQd;qR}%MVz6+7UK_c$oS&ceKG97TB5lWj9 zO;uS#QI#5%2|h_JjoQKw;Xb4>Mcekx6O5td$ZOfty9C>o%r-sI(rZD-uNk3`EvxJL z==;pbAhXGsN16B1r9b*|8dwRxqbzWp|IWYbxB-qR12 zBd<@*nb%&_?ZlJk1TcZ)Aiv*o<( z^5{SfIcF{cwzx#X{1rl9Wc8_pK1EN%ZWg)DOr|ZR3DDUA=yOHLgJn29nGkOAkr3ox zsSWD7*xr^cAtH zQAdvpC)?%ZMEDw%I4%MFV=7D}7OMn0QU!NAC*Pc;{~0VABXgCGhVY-&Nk{{JhRO#G z)U^7$j}=`Iy!-sxk=czxrl)+umM?Ls`-ung2MgcAE%i}NjS2&G=@|{_cuh*Pkwni@ z|D7{=G|SQf0gZ%u3^R z7hnEw$5)BMbo%DaA9t1IFo6-2+wkcGT=>a|#W_RG<&T+HWQ=9h1flQr z%@dQ~b;*gY*5eJr+@c@XH@%2yw!k|0MMy0R8vGLb(n){nqb30D1g-6OANg zt-b(Z2i;<^PkX#}v#eMb+_hXZ*-$jl!XRu`Ui|awTny~~X++1iZ15(cD^6o#D0Ks= zi&uKivjt7f3G?t?s9bXx={+>v2|@Cn|15hx55VE6h1M6ZtFa zihNQFV}H{vF%Wv(pAWKQgb6#Na`Emblu8 z9CECos7Dz7RENLR)CdbIQ7@f20+kQ|Q6eCwyi5sZRa9~~trFzUjGZMI^xW=O4}ZDV zdQIa7Ye&P4L0wI($?&gA5_&fXP#rm1?01oG!n<0HMVL&{1StN+>ycPJ5sKps`JzLZXoL0kp#SN>WQ=5m74|1SJ*Uyf?9|pnj8Q4dH`i;mP-uv%9O^+mg?Z zBby5=CpQ#5RKQpt)1?D^*X-8)Qorb z?4qi8FjF{JPLIhki%dB*nw{1Hcv#;fx-h24BB6a)H#;xHmj&yu(M3RB4mgTbj%7a?B~xYH)-p#XZ}S^z1stJ9v~fg&@Ay@WV|X!^+|rAC zoizSW5kK_FtApaYwSt*WToshBni1EUOoOYEvMhkyau!5cFiB0I;86IygY-w6h1Um+xQKkyTIFgdn;e0F*7W z+`TWdZ{-_`cidK-W0l7=DVe7l`+vyQ2xVy>{)hY0k_vC{FybC}3b#ZO>EHMtE3SzG ze-E?0NF~hWHSgjPq~n~tiT2W-g_#5X2@_3aUZ{B8L~0N&q3h1E@E`TQrCC`+C8*5v zF(C)O`uN|ls2;Qn;9D=oeq&V#5^*$!$D(LEy*t>sx3F>|%K)Yxz}fVp(@6ysyG%XD z&J*8VM5$d1R3OD5xH0b*R(wYzSPc>yX)8PH;PL;`x@(wMS}6U}M3H7OnBh|C06n*&K(@b15(O%7)(aKcmG?$G(h~A zffe>c6MLwqmp+)KHQ*SDmUY+9$u$RqE^rAWgx~W?*%qir$SR@m3Mv-0qoteb$4ctB zZ!E$Z(WKJ@T%Kh5wp-VOuR$j3u7HaP*Wb*TSp`Is*4Wv$ctMxZpc8LChB@PD0;juY z-ou4AT&Oty%AnAOmX|w!MBDKT64G_!5MkD7qpJe_-@9XV2(#91 zbXMG{_!e#{7?E4Ib@69&*5_?dbaxQ4~UILCgSdG9riA8QFgZT30I5Dwg7H(d<{2l$w^C_OD zS@2ZZSWK>8cx;PYo{!N84Jhk)HE6<1U8S(zMtQX;@BR^U8HinP+ig~e*P5Q-O5)K! z{Hk*A_>HC1Lm{GXJG>Ki?yKd=7<4x4D+AP4!#?E{5wnr6^uTl>;tMPd)xMHck+>tq^ zkB>FL%^yMaXy%F#OgGE&A5fKT4ek>9r)$1JWAy!Bp8Gvp{L-s?KzMNs=p^&rmDK_` zWVn&S*}i@3c@!-YxuD{dr}ZG@@#?ME%Hzd+ud7~^^hO5^NjZ!8OeYigkSWQInf7sf zGL2Dbj6;&=qP1!FTw(4!Rz?-?XU}BHbMKO~j`g_mv9sVt2&c4HZMg;TOuEI&zs76u z*~s%$#Kvx(+ii?SiGg1*0o!oN<51|k=$Y&Z;nJ^XXm^FBBvfH_(StSfLaf+N`^YKW z>Ip4W_t-?sqRP4UDhT8R3n&}Z<2azN=t~>8S)RDk5!)k5N0D-~$2;=( zRq?M6r5lY|R@A?8c|IdyEhuzTf-;j{sf?Jo_^??nI;T$|Eb7q?JcI9Wy5$L!YDu#5 zjk<{6*%1(o)IFc#ply+PKy}`2ox~CSgN<5l$ElWHN*(ie1*0zZy#Uc>_R}s9ik5l_ zO53xb8#i8xeJT$UH}_b%2)b|J;WNvLY*GTR1!{k!dVG_X8!Qlp!c) z>9*qazWaVA9+@L=zNLai$C;?_D|dCe%~^PM@Q`Or!D4wN1%7G^_f}Ha>f$^dT9LPq z@DA((6xq?U!ql3!dn=zpBt@gUitJhwoGCN0bh93)B%8JcgF^ztzrLt+n+VaU~-NW#KfySO!Hy4(i7J0rrypPq6 zyi|6l&k$pPt|g`^!S`s$Vpd>*7a}vpwJd}B^_{z+a2n&bkapoL5iIA+S(r^an=fBV&mt;5AY~ZX0co4#_QP35p`tBwEXzrqa;i7 zUmZ=&A*A8K(`q)}ph2<`+=mk!uZQlwc-vx32PQ-%hPBvS$VAaR0FmN(!rXUO{ z(5Mo{L`|=N^PdTkS)V3SFx2!3Y&|UFjlj)C%*G$3ml4nfSvPNVFxu5hz{PX9P{yU4 zDxLn(ZQNaX_x!g8!zb{cb;Yeg;3(#o{uky@j>5d%D`^73Z5Iry8-1f-_){!VYR?%g zDX%~9pQ}pT1mjZUc<;qJmy>>cJftzoy8YX~C3IFw50}bnStdR|*k<<@+ohN&Q-2f; zi3O)vL+D!vv~S;8D|@ZkwnmBTn;klwYtT8bfxMMUx!(po!?e`xSBQQvCE9bD0e>Cw z@G7aW^?|pZIcbJ$gL_WtKIg?}cV9DN{2xe3MNAg=7=1`2_931RwLG4B9Spy6mxL98 zcfl{ymWMSuEAZIr-a?mIFSLgTnf>m&H#v`?eM6MuB;It4PkJ){iHi^M&?U4|xKkgc zE?cAXw@V3o4l-yd1*F!&Iz(g~?l8gVZW#UQJA&TNc)wTh(e|E0TlX6sH_gzwO~5l) z<8RuoX`WpYJx7De(}7*aB2m7y#vz+_%23NNA4=N#^cLE(_-p10xR~~x+0rRp2!y}g z!2NwFBE$IuE&_>NI=iImlrsbuv*-0zU2I*atr(NsL?Bzy$Kbq%r4p& z2_UZq6*A~)3V?RNDmI`~Re}>$BHecPZJ-GWe_^~d(C8+f7gQtU{VNvQ$1{(tg1eOZ z>A)$iBP813rZrgO1rmen?P}+MaG!jS=o>wLT6mX^q<)6{sLx5;N?VZ+raR+$(G$4I zxkG#(?(yYR`46Gn5>5FZg)fW=P7F=fX!-+m06G2p>C>}es&@HvyjT+qoJ5XyOm7Yx ze0oz<uC;0b9DHNrpjXfjyY{x?|4G~B^7T;POn{X;yLMT&mvgL4n-#V?wb#mhX z`#GXN0Hqw~I8NT;)FWW=(}SP`dwQV2E-gV$6Dabe&hgnLuM6*UL4rnGSn!VfJ%Pi$ zXD&}TzI~Onso#<|)Ix|e4S8uQFh_;Vj-kf8jYpP4O`^U@CKlSA&caAit5}0 zF6?03n)S-^6OY>ewZpYXzq(@H95y09bmEdo4wb86 zn-$jMI>JdUC#?>mgG37+pPrK`P5qqP<_`?qK${Kx)686l59DUt=ekk{0WU>6bb6z+ z98b|Ab-VR5?*ETO+%)MBzsA@ai4p%#Je8T&M`{F=MCVi2c<$n6PE+5}M9|xUO-Bh} zD4M(P>^XFD&(Qk$5pnMO=Z<$apH=7wfd((3#EkgZPxQo}^?l4;C>c7$Tt~KN*|H*U z8ID80EIiX}l(KsNJ=#Z5==~Rt4vmw(x|29?;dnUL{6@

rG?WADL0u_e+RmJgDr-#*d1yU-`zjtrx4G+ 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' + '$3'); // « Based on the github-flavored markdown's language annotation, (e.g. ```js```) add a temporary marker to code blocks that can be parsed post-md-compilation when this is HTML. Note: This is an HTML comment because it is easy to over-match and "accidentally" add it underneath each code block as well (being an HTML comment ensures it doesn't show up or break anything). For more information, see https://github.com/uncletammy/doc-templater/blob/2969726b598b39aa78648c5379e4d9503b65685e/lib/compile-markdown-tree-from-remote-git-repo.js#L198-L202 mdString = mdString.replace(/(\n+])\n+(>)/g, '$1$2'); // « Removes any newlines that might exist before the closing `>` when the compontent is added to markdown files. + // [?] Looking for code that used to be here related to syntax highlighting? Please see https://github.com/fleetdm/fleet/pull/14124/files -mikermcneil, 2023-09-25 let htmlString = await sails.helpers.strings.toHtml(mdString); - htmlString = (// « Add the appropriate class to the `` based on the temporary "LANG" markers that were just added above - htmlString - .replace(// Interpret `js` as `javascript` - // $1 $2 $3 $4 - /(]*)(>\s*)(\<!-- __LANG=\%js\%__ --\>)\s*/gm, - '$1 class="javascript"$2$3' - ) - .replace(// Interpret `sh` and `bash` as `bash` - // $1 $2 $3 $4 - /(]*)(>\s*)(\<!-- __LANG=\%(bash|sh)\%__ --\>)\s*/gm, - '$1 class="bash"$2$3' - ) - .replace(// When unspecified, default to `text` - // $1 $2 $3 $4 - /(]*)(>\s*)(\<!-- __LANG=\%\%__ --\>)\s*/gm, - '$1 class="nohighlight"$2$3' - ) - .replace(// Finally, nab the rest, leaving the code language as-is. - // $1 $2 $3 $4 $5 $6 - /(]*)(>\s*)(\<!-- __LANG=\%)([^%]+)(\%__ --\>)\s*/gm, - '$1 class="$5"$2$3' - ) - ); // Throw an error if the compiled Markdown contains nested codeblocks (nested codeblocks meaning 3 backtick codeblocks nested inside a 4 backtick codeblock, or vice versa). Note: We're checking this after the markdown has been compiled because backticks (`) within codeblocks will be replaced with HTML entities (`) and nested triple backticks can be easy to overmatch. if(htmlString.match(/(`){3,4}[\s\S]+(`){3}/g)){ throw new Error('The compiled markdown has a codeblock (\`\`\`) nested inside of another codeblock (\`\`\`\`) at '+pageSourcePath+'. To resolve this error, remove the codeblock nested inside another codeblock from this file.'); diff --git a/website/views/pages/articles/basic-article.ejs b/website/views/pages/articles/basic-article.ejs index 646efdd21d..26afa77e55 100644 --- a/website/views/pages/articles/basic-article.ejs +++ b/website/views/pages/articles/basic-article.ejs @@ -13,7 +13,7 @@

diff --git a/website/views/pages/homepage.ejs b/website/views/pages/homepage.ejs index 9e7ace33e2..f4f196b6c5 100644 --- a/website/views/pages/homepage.ejs +++ b/website/views/pages/homepage.ejs @@ -6,9 +6,9 @@
<%/* Hero text */%>
-

Open-source device management

-

Lighter than air

-

Lightweight management for laptops and servers.
Designed for APIs, GitOps, webhooks, YAML, and humans.

+

For teams with thousands of computers

+

Untangle your endpoints

+

Replace the sprawl you inherited with open-source code that works the way you want.

Try it out Talk to an expert @@ -19,22 +19,71 @@
<%/* Row of logos */%> -
-
- Snowflake logo - Wayfair logo - Uber logo +
+ <%/* >991px logos all on one row */%> +
+ Snowflake logo + Wayfair logo + Uber logo + Fastly logo + Atlassian logo + Gusto logo + Segment logo
-
- Atlassian logo - Segment logo + <%/* >576px logos - two rows */%> +
+ Snowflake logo + Wayfair logo + Uber logo + Fastly logo
-
- Uber logo + +
+ Atlassian logo + Gusto logo + Segment logo +
+ + <%/* <576px logos - three rows */%> +
+ Snowflake logo + Wayfair logo +
+
+ Uber logo + Fastly logo + Atlassian logo +
+
+ Gusto logo + Segment logo
<%/* Homepage content */%>
+ <%/* Testimonial videos */%> +
+
+
+ an opening quotation mark +

We can build it exactly the way we want it. Which is just not possible on other platforms.

+

Austin Anderson

+

Cybersecurity team senior manager

+
+
+
+
+
+
+ an opening quotation mark +

Context is king for device data, and Fleet provides a way to surface that information to our other teams and partners.

+

Nick Fohs

+

Systems and infrastructure manager

+
+
+
+
+
<%/* Device management block */%>
@@ -86,7 +135,7 @@ <%/* Supported platforms */%>
-

Supported platforms

+

An open API for every endpoint

Linux @@ -175,7 +224,7 @@
-

Open through and through

+

Open by design

Fleet is dedicated to flexibility, accessibility, and clarity. We think everyone can contribute and that tools should be as easy as possible for everyone to understand.

@@ -185,7 +234,7 @@
transparency
Scope transparency
-

Fleet champions a user-first transparency model with its open-source software, allowing users to see what's being monitored and how. Read more on Fleet’s transparency page.

+

Let end users see the source code for exactly how they are being monitored, and set clear expectations about what is and isn’t acceptable use of work computers.

@@ -267,5 +316,12 @@ A glass city floating on top of fluffy white clouds A glass city floating on top of fluffy white clouds
+ + + + + + +
<%- /* Expose locals as `window.SAILS_LOCALS` :: */ exposeLocalsToBrowser() %> diff --git a/website/views/pages/query-library.ejs b/website/views/pages/query-library.ejs index de224facc1..235ef9de7f 100644 --- a/website/views/pages/query-library.ejs +++ b/website/views/pages/query-library.ejs @@ -139,6 +139,9 @@
+
+

There are no results that match your filters. Everyone can contribute.

+
diff --git a/website/views/pages/transparency.ejs b/website/views/pages/transparency.ejs index b7676c7c04..4c8d5d00ab 100644 --- a/website/views/pages/transparency.ejs +++ b/website/views/pages/transparency.ejs @@ -56,73 +56,82 @@

- User account logins + Shell scripts

- Fleet can see details about the user accounts associated with your device, including which accounts have logged in recently. This is useful for IT and security teams to identify logins from suspicious accounts. + Fleet can run any shell script on your device remotely. This is useful for IT teams to help you troubleshoot remotely if you run into any issues with your device.

- Device health & performance + User account logins

- Fleet can see details about your device’s hardware. E.g., what processor is used, how much memory is installed, storage capacity, battery health, etc. This allows IT teams to preemptively address device health problems, which can mitigate data loss and reduce disruption to your workflow caused by IT related issues. + Fleet can see details about the user accounts associated with your device, including which accounts have logged in recently. This is useful for IT and security teams to identify logins from suspicious accounts.

- Installed software packages + Device health & performance

- Fleet can access a detailed list of the software installed on your device. With this information, IT teams can better manage software update schedules, and reduce disruption to your workflow. Security teams can also use this data to determine if any of your software has been compromised, by referencing your software’s version number against known vulnerable software databases. + Fleet can see details about your device’s hardware. E.g., what processor is used, how much memory is installed, storage capacity, battery health, etc. This allows IT teams to preemptively address device health problems, which can mitigate data loss and reduce disruption to your workflow caused by IT related issues.

- Running processes + Installed software packages

- Fleet can access a list of processes running on your device. These are processes you interact with graphically i.e., opened software; and processes that are running tasks in the background, such as sending data over network connections, running backups, or scheduled auto-updates. IT and security teams can use osquery to view this list in order to detect suspicious activity that may be a threat to your system. + Fleet can access a detailed list of the software installed on your device. With this information, IT teams can better manage software update schedules, and reduce disruption to your workflow. Security teams can also use this data to determine if any of your software has been compromised, by referencing your software’s version number against known vulnerable software databases.

- Security configurations + Running processes

- Fleet can see information about the status of firewalls and other security software installed on your device. + Fleet can access a list of processes running on your device. These are processes you interact with graphically i.e., opened software; and processes that are running tasks in the background, such as sending data over network connections, running backups, or scheduled auto-updates. IT and security teams can use osquery to view this list in order to detect suspicious activity that may be a threat to your system.

- Connected hardware devices + Security configurations

- Fleet can see information about connected hardware devices. This is typically limited to only the type of hardware connected, and not specific details about the device. E.g., connected smartphones, USB devices, network devices, audio/visual hardware. + Fleet can see information about the status of firewalls and other security software installed on your device.

- Device location + Connected hardware devices

- Fleet uses IP geolocation to provide an approximate location of your device. Accuracy of IP geolocation services vary depending on where you are, but can typically be pinpointed within the nearest state or city. Organizations typically use this feature to track stolen or misplaced devices, and in some cases to ensure the safety of employees. + Fleet can see information about connected hardware devices. This is typically limited to only the type of hardware connected, and not specific details about the device. E.g., connected smartphones, USB devices, network devices, audio/visual hardware.

- File contents + Device location

+ Fleet uses IP geolocation to provide an approximate location of your device. Accuracy of IP geolocation services vary depending on where you are, but can typically be pinpointed within the nearest state or city. Organizations typically use this feature to track stolen or misplaced devices, and in some cases to ensure the safety of employees. +

+
+
+

+ File contents + +

+

In the case of a cyber attack, it is possible with Fleet to gain read access to files on your system. This is not a feature designed for privacy invasion, but rather a means for security teams to locate files on your device that may have been created or affected by a malicious virus.

Additionally, Fleet can be configured to store disk encryption keys that can be used to recover encrypted data from a macOS device.

diff --git a/website/views/pages/vulnerability-management.ejs b/website/views/pages/vulnerability-management.ejs index d0f8147918..5aba345921 100644 --- a/website/views/pages/vulnerability-management.ejs +++ b/website/views/pages/vulnerability-management.ejs @@ -60,6 +60,19 @@
+
+
+
+ an opening quotation mark +

We can build it exactly the way we want it. Which is just not possible on other platforms.

+

Austin Anderson

+

Cybersecurity team senior manager

+
+
+
+
+
+
Try Fleet today Talk to an expert @@ -95,5 +108,8 @@ A glass city floating on top of fluffy white clouds A glass city floating on top of fluffy white clouds
+ + +
<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %> From 5ed443590e2bb935e3ee450df034740eff067c92 Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Wed, 4 Oct 2023 14:35:18 -0700 Subject: [PATCH 06/41] Fleet UI: Surface delete previous results modals (#14257) --- .../QueryDetailsPage/QueryDetailsPage.tsx | 4 +- .../edit/EditQueryPage/EditQueryPage.tsx | 7 ++- .../components/QueryForm/QueryForm.tests.tsx | 2 + .../edit/components/QueryForm/QueryForm.tsx | 47 ++++++++++++++----- .../SaveChangesModal/SaveChangesModal.tsx | 2 +- 5 files changed, 46 insertions(+), 16 deletions(-) diff --git a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx index be52bd6ad3..17c46c3ade 100644 --- a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx +++ b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useEffect } from "react"; +import React, { useContext } from "react"; import { useQuery } from "react-query"; import { InjectedRouter, Params } from "react-router/lib/Router"; import { useErrorHandler } from "react-error-boundary"; @@ -112,7 +112,7 @@ const QueryDetailsPage = ({ ); const isLoading = isStoredQueryLoading; // TODO: Add || isCachedResultsLoading for new API response - const isApiError = storedQueryError || true; // TODO: Add || isCachedResultsError for new API response + const isApiError = storedQueryError || false; // TODO: Add || isCachedResultsError for new API response const renderHeader = () => { const canEditQuery = diff --git a/frontend/pages/queries/edit/EditQueryPage/EditQueryPage.tsx b/frontend/pages/queries/edit/EditQueryPage/EditQueryPage.tsx index e9aa57dce9..59b14feb72 100644 --- a/frontend/pages/queries/edit/EditQueryPage/EditQueryPage.tsx +++ b/frontend/pages/queries/edit/EditQueryPage/EditQueryPage.tsx @@ -100,13 +100,14 @@ const EditQueryPage = ({ const [showOpenSchemaActionText, setShowOpenSchemaActionText] = useState( false ); + const [showSaveChangesModal, setShowSaveChangesModal] = useState(false); // disabled on page load so we can control the number of renders // else it will re-populate the context on occasion const { isLoading: isStoredQueryLoading, data: storedQuery, - error: storedQueryError, + refetch: refetchStoredQuery, } = useQuery( ["query", queryId], () => queryAPI.load(queryId as number), @@ -215,6 +216,7 @@ const EditQueryPage = ({ try { await queryAPI.update(queryId, updatedQuery); renderFlash("success", "Query updated!"); + refetchStoredQuery(); // Required to compare recently saved query to a subsequent save to the query } catch (updateError: any) { console.error(updateError); if (updateError.data.errors[0].reason.includes("Duplicate")) { @@ -228,6 +230,7 @@ const EditQueryPage = ({ } setIsQueryUpdating(false); + setShowSaveChangesModal(false); // Closes conditionally opened modal when discarding previous results return false; }; @@ -304,6 +307,8 @@ const EditQueryPage = ({ isQuerySaving={isQuerySaving} isQueryUpdating={isQueryUpdating} hostId={parseInt(location.query.host_ids as string, 10)} + showSaveChangesModal={showSaveChangesModal} + setShowSaveChangesModal={setShowSaveChangesModal} />
diff --git a/frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx b/frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx index bb5286895f..f3655dd3f9 100644 --- a/frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx +++ b/frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx @@ -72,6 +72,8 @@ describe("QueryForm - component", () => { onOpenSchemaSidebar={jest.fn()} renderLiveQueryWarning={jest.fn()} backendValidators={{}} + showSaveChangesModal={false} + setShowSaveChangesModal={jest.fn()} /> ); diff --git a/frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx b/frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx index a704ee2ef8..f5d269b1d2 100644 --- a/frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx +++ b/frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx @@ -73,6 +73,8 @@ interface IQueryFormProps { renderLiveQueryWarning: () => JSX.Element | null; backendValidators: { [key: string]: string }; hostId?: number; + showSaveChangesModal: boolean; + setShowSaveChangesModal: (bool: boolean) => void; } const validateQuerySQL = (query: string) => { @@ -120,6 +122,8 @@ const QueryForm = ({ renderLiveQueryWarning, backendValidators, hostId, + showSaveChangesModal, + setShowSaveChangesModal, }: IQueryFormProps): JSX.Element => { // Note: The QueryContext values should always be used for any mutable query data such as query name // The storedQuery prop should only be used to access immutable metadata such as author id @@ -158,7 +162,6 @@ const QueryForm = ({ const savedQueryMode = !!queryIdForEdit; const [errors, setErrors] = useState<{ [key: string]: any }>({}); // string | null | undefined or boolean | undefined const [showSaveQueryModal, setShowSaveQueryModal] = useState(false); - const [showSaveChangesModal, setShowSaveChangesModal] = useState(false); // #7766 implementation const [showQueryEditor, setShowQueryEditor] = useState( isObserverPlus || isAnyTeamObserverPlus || false ); @@ -211,7 +214,6 @@ const QueryForm = ({ setShowSaveQueryModal(!showSaveQueryModal); }; - // #7766 implementation const toggleSaveChangesModal = () => { setShowSaveChangesModal(!showSaveChangesModal); }; @@ -411,12 +413,6 @@ const QueryForm = ({ logging: lastEditedQueryLoggingType, }); } - - // #7766 implementation - // savedQueryMode - // ? setShowSaveChangesModal(true) - // : setShowSaveQueryModal(true); - // TODO: onUpdate for saveChangesModal } }; @@ -609,6 +605,26 @@ const QueryForm = ({ const hasSavePermissions = isGlobalAdmin || isGlobalMaintainer; + const hasSqlChange = storedQuery && lastEditedQueryBody !== storedQuery.query; + const hasSnapshotChange = + storedQuery && + lastEditedQueryLoggingType !== "snapshot" && + storedQuery.logging === "snapshot"; + // Use commented out logic when discard data checkbox is implemented #13470 + const hasEnabledDiscardData = false; + // const hasEnabledDiscardData = + // storedQuery && lastEditedDiscardData && !storedQuery.discardData; + + const confirmChanges = (): boolean => { + // Confirm changes if the query has been edited, removed snapshot logging, or enabled discard data + return hasSqlChange || hasSnapshotChange || hasEnabledDiscardData; + }; + + const confirmSqlChange = (): boolean => { + // Confirm sql changes message if sql changed but snapshot and enabling discard data has not + return !!hasSqlChange && !hasSnapshotChange && !hasEnabledDiscardData; + }; + // Global admin, any maintainer, any observer+ on new query const renderEditableQueryForm = () => { // Save disabled for team maintainer/admins viewing global queries @@ -640,7 +656,9 @@ const QueryForm = ({ onLoad={onLoad} wrapperClassName={`${baseClass}__text-editor-wrapper`} onChange={onChangeQuery} - handleSubmit={promptSaveQuery} + handleSubmit={ + confirmChanges() ? toggleSaveChangesModal : promptSaveQuery + } wrapEnabled focus={!savedQueryMode} /> @@ -743,7 +761,11 @@ const QueryForm = ({ + + + + + ); +}; + +export default ConfirmSaveChangesModal; diff --git a/frontend/pages/queries/edit/components/ConfirmSaveChangesModal/index.ts b/frontend/pages/queries/edit/components/ConfirmSaveChangesModal/index.ts new file mode 100644 index 0000000000..c8c31da396 --- /dev/null +++ b/frontend/pages/queries/edit/components/ConfirmSaveChangesModal/index.ts @@ -0,0 +1 @@ +export { default } from "./ConfirmSaveChangesModal"; diff --git a/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.stories.tsx b/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.stories.tsx new file mode 100644 index 0000000000..7a3b738ff1 --- /dev/null +++ b/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.stories.tsx @@ -0,0 +1,14 @@ +import { Meta, StoryObj } from "@storybook/react"; + +import DiscardDataOption from "./DiscardDataOption"; + +const meta: Meta = { + title: "Components/DiscardDataOption", + component: DiscardDataOption, +}; + +export default meta; + +type Story = StoryObj; + +export const Basic: Story = {}; diff --git a/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tests.tsx b/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tests.tsx new file mode 100644 index 0000000000..011e23d502 --- /dev/null +++ b/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tests.tsx @@ -0,0 +1,86 @@ +import React from "react"; + +import { fireEvent, render, screen } from "@testing-library/react"; + +import DiscardDataOption from "./DiscardDataOption"; + +describe("DiscardDataOption component", () => { + const selectedLoggingType = "snapshot"; + const [discardData, setDiscardData] = [false, jest.fn()]; + + it("Renders normal help text when the global option is not disabled", () => { + render( + + ); + + expect(screen.getByText(/Discard data/)).toBeInTheDocument(); + expect(screen.getByText(/Data will still be sent/)).toBeInTheDocument(); + }); + + it('Renders the "disabled" help text with tooltip when the global option is disabled', async () => { + render( + + ); + + expect(screen.getByText(/Discard data/)).toBeInTheDocument(); + expect(screen.getByText(/This setting is ignored/)).toBeInTheDocument(); + + await fireEvent.mouseOver(screen.getByText(/globally disabled/)); + + expect(screen.getByText(/A Fleet administrator/)).toBeInTheDocument(); + }); + + it('Restores normal help text when disabled and then "Edit anyway" is clicked', async () => { + render( + + ); + + // disabled + expect(screen.getByText(/Discard data/)).toBeInTheDocument(); + expect(screen.getByText(/This setting is ignored/)).toBeInTheDocument(); + + // enable + await fireEvent.click(screen.getByText(/Edit anyway/)); + + // normal text + expect(screen.getByText(/Data will still be sent/)).toBeInTheDocument(); + }); + it('Renders the info banner when "Differential" logging option is selected', () => { + render( + + ); + + expect( + screen.getByText( + /setting is ignored when differential logging is enabled. This/ + ) + ).toBeInTheDocument(); + }); + it('Renders the info banner when "Differential (ignore removals)" logging option is selected', () => { + render( + + ); + expect( + screen.getByText( + /setting is ignored when differential logging is enabled. This/ + ) + ).toBeInTheDocument(); + }); +}); diff --git a/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tsx b/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tsx new file mode 100644 index 0000000000..aef48c79b6 --- /dev/null +++ b/frontend/pages/queries/edit/components/DiscardDataOption/DiscardDataOption.tsx @@ -0,0 +1,103 @@ +import Checkbox from "components/forms/fields/Checkbox"; +import Icon from "components/Icon"; +import InfoBanner from "components/InfoBanner"; +import TooltipWrapper from "components/TooltipWrapper"; +import { QueryLoggingOption } from "interfaces/schedulable_query"; +import React, { useState } from "react"; +import { Link } from "react-router"; + +const baseClass = "discard-data-option"; + +interface IDiscardDataOptionProps { + queryReportsDisabled: boolean; + selectedLoggingType: QueryLoggingOption; + discardData: boolean; + setDiscardData: (value: boolean) => void; + breakHelpText?: boolean; +} + +const DiscardDataOption = ({ + queryReportsDisabled, + selectedLoggingType, + discardData, + setDiscardData, + breakHelpText = false, +}: IDiscardDataOptionProps) => { + const [forceEditDiscardData, setForceEditDiscardData] = useState(false); + const disable = queryReportsDisabled && !forceEditDiscardData; + + const renderHelpText = () => ( +
+ {disable ? ( + <> + This setting is ignored because query reports in Fleet have been{" "} + \ + Organization settings > Advanced options > Disable query reports." + } + position="bottom" + > + {"globally disabled."} + {" "} + { + e.preventDefault(); + setForceEditDiscardData(true); + }} + className={`${baseClass}__edit-anyway`} + > + <> + Edit anyway + + + + + ) : ( + <> + The most recent results for each host will not be available in Fleet. + {breakHelpText ?
: " "} + Data will still be sent to your log destination if + automations + {" "} + are on. + + )} +
+ ); + return ( +
+ {["differential", "differential_ignore_removals"].includes( + selectedLoggingType + ) && ( + + <> + The Discard data setting is ignored when differential logging + is enabled. This
+ query's results will not be saved in Fleet. + +
+ )} + + Discard data + + {renderHelpText()} +
+ ); +}; + +export default DiscardDataOption; diff --git a/frontend/pages/queries/edit/components/DiscardDataOption/_styles.scss b/frontend/pages/queries/edit/components/DiscardDataOption/_styles.scss new file mode 100644 index 0000000000..c938b58069 --- /dev/null +++ b/frontend/pages/queries/edit/components/DiscardDataOption/_styles.scss @@ -0,0 +1,20 @@ +.discard-data-option { + .info-banner { + margin-bottom: 1.5rem; + &__info { + line-height: 21px; + } + } + + &__disabled-discard-data-checkbox { + @include disabled; + } + + &__edit-anyway { + display: inline-flex; + align-items: center; + cursor: pointer; + font-weight: inherit; + font-size: inherit; + } +} diff --git a/frontend/pages/queries/edit/components/DiscardDataOption/index.ts b/frontend/pages/queries/edit/components/DiscardDataOption/index.ts new file mode 100644 index 0000000000..71d3111a3b --- /dev/null +++ b/frontend/pages/queries/edit/components/DiscardDataOption/index.ts @@ -0,0 +1 @@ +export { default } from "./DiscardDataOption"; diff --git a/frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx b/frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tests.tsx similarity index 92% rename from frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx rename to frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tests.tsx index f3655dd3f9..a203afbf96 100644 --- a/frontend/pages/queries/edit/components/QueryForm/QueryForm.tests.tsx +++ b/frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tests.tsx @@ -5,7 +5,7 @@ import { createCustomRenderer } from "test/test-utils"; import createMockQuery from "__mocks__/queryMock"; import createMockUser from "__mocks__/userMock"; -import QueryForm from "./QueryForm"; +import EditQueryForm from "./EditQueryForm"; const mockQuery = createMockQuery(); const mockRouter = { @@ -20,7 +20,7 @@ const mockRouter = { createPath: jest.fn(), }; -describe("QueryForm - component", () => { +describe("EditQueryForm - component", () => { it("disables save button for missing query name", async () => { const render = createCustomRenderer({ context: { @@ -56,7 +56,7 @@ describe("QueryForm - component", () => { }); render( - { onOpenSchemaSidebar={jest.fn()} renderLiveQueryWarning={jest.fn()} backendValidators={{}} - showSaveChangesModal={false} - setShowSaveChangesModal={jest.fn()} + showConfirmSaveChangesModal={false} + setShowConfirmSaveChangesModal={jest.fn()} /> ); diff --git a/frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx b/frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tsx similarity index 89% rename from frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx rename to frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tsx index 02a8d0d4ac..ce2a027e32 100644 --- a/frontend/pages/queries/edit/components/QueryForm/QueryForm.tsx +++ b/frontend/pages/queries/edit/components/EditQueryForm/EditQueryForm.tsx @@ -34,7 +34,6 @@ import { QueryLoggingOption, } from "interfaces/schedulable_query"; import { SelectedPlatformString } from "interfaces/platform"; -import { IConfig } from "interfaces/config"; import queryAPI from "services/entities/queries"; import { IAceEditor } from "react-ace/lib/types"; @@ -53,11 +52,12 @@ import Spinner from "components/Spinner"; import Icon from "components/Icon/Icon"; import AutoSizeInputField from "components/forms/fields/AutoSizeInputField"; import SaveQueryModal from "../SaveQueryModal"; -import SaveChangesModal from "../SaveChangesModal"; +import ConfirmSaveChangesModal from "../ConfirmSaveChangesModal"; +import DiscardDataOption from "../DiscardDataOption"; -const baseClass = "query-form"; +const baseClass = "edit-query-form"; -interface IQueryFormProps { +interface IEditQueryFormProps { router: InjectedRouter; queryIdForEdit: number | null; apiTeamIdForQuery?: number; @@ -74,10 +74,9 @@ interface IQueryFormProps { renderLiveQueryWarning: () => JSX.Element | null; backendValidators: { [key: string]: string }; hostId?: number; - appConfig?: IConfig; - isLoadingAppConfig?: boolean; - showSaveChangesModal: boolean; - setShowSaveChangesModal: (bool: boolean) => void; + queryReportsDisabled?: boolean; + showConfirmSaveChangesModal: boolean; + setShowConfirmSaveChangesModal: (bool: boolean) => void; } const validateQuerySQL = (query: string) => { @@ -108,7 +107,7 @@ const customFrequencyOptions = (frequency: number) => { return FREQUENCY_DROPDOWN_OPTIONS; }; -const QueryForm = ({ +const EditQueryForm = ({ router, queryIdForEdit, apiTeamIdForQuery, @@ -125,11 +124,10 @@ const QueryForm = ({ renderLiveQueryWarning, backendValidators, hostId, - appConfig, - isLoadingAppConfig, - showSaveChangesModal, - setShowSaveChangesModal, -}: IQueryFormProps): JSX.Element => { + queryReportsDisabled, + showConfirmSaveChangesModal, + setShowConfirmSaveChangesModal, +}: IEditQueryFormProps): JSX.Element => { // Note: The QueryContext values should always be used for any mutable query data such as query name // The storedQuery prop should only be used to access immutable metadata such as author id const { @@ -142,6 +140,7 @@ const QueryForm = ({ lastEditedQueryPlatforms, lastEditedQueryMinOsqueryVersion, lastEditedQueryLoggingType, + lastEditedQueryDiscardData, setLastEditedQueryName, setLastEditedQueryDescription, setLastEditedQueryBody, @@ -150,6 +149,7 @@ const QueryForm = ({ setLastEditedQueryPlatforms, setLastEditedQueryMinOsqueryVersion, setLastEditedQueryLoggingType, + setLastEditedQueryDiscardData, } = useContext(QueryContext); const { @@ -183,9 +183,7 @@ const QueryForm = ({ const { setCompatiblePlatforms } = platformCompatibility; const debounceSQL = useDebouncedCallback((sql: string) => { - let valid = true; - const { valid: isValidated, errors: newErrors } = validateQuerySQL(sql); - valid = isValidated; + const { errors: newErrors } = validateQuerySQL(sql); setErrors({ ...newErrors, @@ -208,19 +206,12 @@ const QueryForm = ({ } }, [lastEditedQueryFrequency, isInitialFrequency]); - const hasTeamMaintainerPermissions = savedQueryMode - ? isAnyTeamMaintainerOrTeamAdmin && - storedQuery && - currentUser && - storedQuery.author_id === currentUser.id - : isAnyTeamMaintainerOrTeamAdmin; - const toggleSaveQueryModal = () => { setShowSaveQueryModal(!showSaveQueryModal); }; - const toggleSaveChangesModal = () => { - setShowSaveChangesModal(!showSaveChangesModal); + const toggleConfirmSaveChangesModal = () => { + setShowConfirmSaveChangesModal(!showConfirmSaveChangesModal); }; const onLoad = (editor: IAceEditor) => { @@ -416,6 +407,7 @@ const QueryForm = ({ platform: lastEditedQueryPlatforms, min_osquery_version: lastEditedQueryMinOsqueryVersion, logging: lastEditedQueryLoggingType, + discard_data: lastEditedQueryDiscardData, }); } } @@ -609,25 +601,27 @@ const QueryForm = ({ const hasSavePermissions = isGlobalAdmin || isGlobalMaintainer; - const hasSqlChange = storedQuery && lastEditedQueryBody !== storedQuery.query; - const hasSnapshotChange = + const currentlySavingQueryResults = storedQuery && - lastEditedQueryLoggingType !== "snapshot" && - storedQuery.logging === "snapshot"; - // Use commented out logic when discard data checkbox is implemented #13470 - const hasEnabledDiscardData = false; - // const hasEnabledDiscardData = - // storedQuery && lastEditedDiscardData && !storedQuery.discardData; + !storedQuery.discard_data && + !["differential", "differential_ignore_removals"].includes( + storedQuery.logging + ); + const changedSQL = storedQuery && lastEditedQueryBody !== storedQuery.query; + const changedLoggingToDifferential = [ + "differential", + "differential_ignore_removals", + ].includes(lastEditedQueryLoggingType); - const confirmChanges = (): boolean => { - // Confirm changes if the query has been edited, removed snapshot logging, or enabled discard data - return hasSqlChange || hasSnapshotChange || hasEnabledDiscardData; - }; + const enabledDiscardData = + storedQuery && lastEditedQueryDiscardData && !storedQuery.discard_data; - const confirmSqlChange = (): boolean => { - // Confirm sql changes message if sql changed but snapshot and enabling discard data has not - return !!hasSqlChange && !hasSnapshotChange && !hasEnabledDiscardData; - }; + const confirmChanges = + currentlySavingQueryResults && + (changedSQL || changedLoggingToDifferential || enabledDiscardData); + + const showChangedSQLCopy = + changedSQL && !changedLoggingToDifferential && !enabledDiscardData; // Global admin, any maintainer, any observer+ on new query const renderEditableQueryForm = () => { @@ -661,7 +655,7 @@ const QueryForm = ({ wrapperClassName={`${baseClass}__text-editor-wrapper`} onChange={onChangeQuery} handleSubmit={ - confirmChanges() ? toggleSaveChangesModal : promptSaveQuery + confirmChanges ? toggleConfirmSaveChangesModal : promptSaveQuery } wrapEnabled focus={!savedQueryMode} @@ -679,10 +673,11 @@ const QueryForm = ({ placeholder={"Every day"} value={lastEditedQueryFrequency} label={"Frequency"} - wrapperClassName={`${baseClass}__form-field ${baseClass}__form-field--frequency`} + wrapperClassName={`${baseClass}__form-field form-field--frequency`} /> - If automations are on, this is how often your query collects - data. +
+ This is how often your query collects data. +
setLastEditedQueryObserverCanRun(value) } - wrapperClassName={`${baseClass}__query-observer-can-run-wrapper`} + wrapperClassName={"observer-can-run-wrapper"} > Observers can run -

+

Users with the observer role will be able to run this query on hosts where they have access. -

+
+
+ By default, your query collects data on all compatible + platforms. +
+ {queryReportsDisabled !== undefined && ( + + )} )} @@ -755,7 +762,7 @@ const QueryForm = ({ Save as new )} -
+
)} - {showSaveChangesModal && ( - )} @@ -854,4 +860,4 @@ const QueryForm = ({ return renderEditableQueryForm(); }; -export default QueryForm; +export default EditQueryForm; diff --git a/frontend/pages/queries/edit/components/QueryForm/_styles.scss b/frontend/pages/queries/edit/components/EditQueryForm/_styles.scss similarity index 88% rename from frontend/pages/queries/edit/components/QueryForm/_styles.scss rename to frontend/pages/queries/edit/components/EditQueryForm/_styles.scss index bc63146bac..f2ee6ab788 100644 --- a/frontend/pages/queries/edit/components/QueryForm/_styles.scss +++ b/frontend/pages/queries/edit/components/EditQueryForm/_styles.scss @@ -1,4 +1,4 @@ -.query-form { +.edit-query-form { &__wrapper { position: relative; font-size: $x-small; @@ -46,7 +46,7 @@ .query-name-wrapper { display: flex; - &:not(.query-form--editing) { + &:not(.edit-query-form--editing) { textarea:hover { cursor: pointer; color: $core-vibrant-blue; @@ -57,7 +57,7 @@ top: 13px; margin-left: 0; } - .query-form__query-name, + .edit-query-form__query-name, .input-sizer::after { font-size: $large; } @@ -70,7 +70,7 @@ .query-description-wrapper { display: flex; padding-top: $pad-small; - &:not(.query-form--editing) { + &:not(.edit-query-form--editing) { textarea:hover { cursor: pointer; color: $core-vibrant-blue; @@ -161,26 +161,6 @@ } } - &__advanced-options { - margin-top: $pad-medium; - } - - &__query-observer-can-run-wrapper { - margin: 0; - margin-top: $pad-large; - font-weight: $bold !important; // override checkbox default - - & + p { - margin: 0; - margin-top: $pad-small; - } - - .fleet-checkbox { - display: flex; - align-items: center; - } - } - &__button-wrap { margin: 0; margin-top: $pad-large; diff --git a/frontend/pages/queries/edit/components/EditQueryForm/index.ts b/frontend/pages/queries/edit/components/EditQueryForm/index.ts new file mode 100644 index 0000000000..a657cb4f46 --- /dev/null +++ b/frontend/pages/queries/edit/components/EditQueryForm/index.ts @@ -0,0 +1 @@ +export { default } from "./EditQueryForm"; diff --git a/frontend/pages/queries/edit/components/QueryForm/index.ts b/frontend/pages/queries/edit/components/QueryForm/index.ts deleted file mode 100644 index 6bc72d25d4..0000000000 --- a/frontend/pages/queries/edit/components/QueryForm/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./QueryForm"; diff --git a/frontend/pages/queries/edit/components/SaveChangesModal/SaveChangesModal.tsx b/frontend/pages/queries/edit/components/SaveChangesModal/SaveChangesModal.tsx deleted file mode 100644 index aa3601e903..0000000000 --- a/frontend/pages/queries/edit/components/SaveChangesModal/SaveChangesModal.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from "react"; - -import Button from "components/buttons/Button"; -import Modal from "components/Modal"; -import { ICreateQueryRequestBody } from "interfaces/schedulable_query"; - -const baseClass = "save-changes-modal"; - -export interface ISaveChangesModalProps { - isUpdating: boolean; - onSaveChanges: (evt: React.MouseEvent) => void; - toggleSaveChangesModal: () => void; - sqlUpdated?: boolean; -} - -const SaveChangesModal = ({ - isUpdating, - onSaveChanges, - toggleSaveChangesModal, - sqlUpdated = false, -}: ISaveChangesModalProps): JSX.Element => { - const warningText = () => { - if (sqlUpdated) { - return "Changing this query's SQL will delete its previous results, since the existing report does not reflect the updated query."; - } - return "The changes you are making to this query will delete its previous results."; - }; - - return ( - -
-

{warningText()}

-

You cannot undo this action.

-
- - -
-
-
- ); -}; - -export default SaveChangesModal; diff --git a/frontend/pages/queries/edit/components/SaveChangesModal/index.ts b/frontend/pages/queries/edit/components/SaveChangesModal/index.ts deleted file mode 100644 index 15fa4a05cf..0000000000 --- a/frontend/pages/queries/edit/components/SaveChangesModal/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./SaveChangesModal"; diff --git a/frontend/pages/queries/edit/components/SaveQueryModal/SaveQueryModal.tsx b/frontend/pages/queries/edit/components/SaveQueryModal/SaveQueryModal.tsx index c2e3126448..f7b3a341ee 100644 --- a/frontend/pages/queries/edit/components/SaveQueryModal/SaveQueryModal.tsx +++ b/frontend/pages/queries/edit/components/SaveQueryModal/SaveQueryModal.tsx @@ -23,11 +23,7 @@ import { ISchedulableQuery, QueryLoggingOption, } from "interfaces/schedulable_query"; -import TooltipWrapper from "components/TooltipWrapper"; -import { Link } from "react-router"; -import Icon from "components/Icon"; -import { IConfig } from "interfaces/config"; -import InfoBanner from "components/InfoBanner"; +import DiscardDataOption from "../DiscardDataOption"; const baseClass = "save-query-modal"; export interface ISaveQueryModalProps { @@ -38,8 +34,7 @@ export interface ISaveQueryModalProps { toggleSaveQueryModal: () => void; backendValidators: { [key: string]: string }; existingQuery?: ISchedulableQuery; - appConfig?: IConfig; - isLoadingAppConfig?: boolean; + queryReportsDisabled?: boolean; } const validateQueryName = (name: string) => { @@ -61,8 +56,7 @@ const SaveQueryModal = ({ toggleSaveQueryModal, backendValidators, existingQuery, - appConfig, - isLoadingAppConfig, + queryReportsDisabled, }: ISaveQueryModalProps): JSX.Element => { const [name, setName] = useState(""); const [description, setDescription] = useState(""); @@ -87,15 +81,11 @@ const SaveQueryModal = ({ backendValidators ); const [showAdvancedOptions, setShowAdvancedOptions] = useState(false); - const [forceEditDiscardData, setForceEditDiscardData] = useState(false); const toggleAdvancedOptions = () => { setShowAdvancedOptions(!showAdvancedOptions); }; - const query_reports_disabled = - appConfig?.server_settings?.query_reports_disabled; - useDeepEffect(() => { if (name) { setErrors({}); @@ -154,76 +144,6 @@ const SaveQueryModal = ({ [setSelectedPlatformOptions] ); - const renderDiscardDataOption = () => { - const disable = query_reports_disabled && !forceEditDiscardData; - return ( - <> - {["differential", "differential_ignore_removals"].includes( - selectedLoggingType - ) && ( - - <> - The Discard data setting is ignored when differential - logging is enabled. This
- query's results will not be saved in Fleet. - -
- )} - - Discard data - -
- {disable ? ( - <> - This setting is ignored because query reports in Fleet have been{" "} - \ - Organization settings > Advanced options > Disable query reports." - } - position="bottom" - > - <>globally disabled. - {" "} - { - setForceEditDiscardData(true); - }} - className={`${baseClass}__edit-anyway`} - > - <> - Edit anyway - - - - - ) : ( - <> - The most recent results for each host will not be available in - Fleet. -
- Data will still be sent to your log destination if{" "} - automations are on. - - )} -
- - ); - }; return (
This is how often your query collects data. @@ -269,7 +189,7 @@ const SaveQueryModal = ({ name="observerCanRun" onChange={setObserverCanRun} value={observerCanRun} - wrapperClassName={`${baseClass}__observer-can-run-wrapper`} + wrapperClassName={"observer-can-run-wrapper"} > Observers can run @@ -279,7 +199,7 @@ const SaveQueryModal = ({
By default, your query collects data on all compatible platforms. @@ -315,7 +235,17 @@ const SaveQueryModal = ({ label="Logging" wrapperClassName={`${baseClass}__form-field ${baseClass}__form-field--logging`} /> - {!isLoadingAppConfig && renderDiscardDataOption()} + {queryReportsDisabled !== undefined && ( + + )} )}
diff --git a/frontend/pages/queries/edit/components/SaveQueryModal/_styles.scss b/frontend/pages/queries/edit/components/SaveQueryModal/_styles.scss deleted file mode 100644 index f1df24381f..0000000000 --- a/frontend/pages/queries/edit/components/SaveQueryModal/_styles.scss +++ /dev/null @@ -1,51 +0,0 @@ -.save-query-modal { - .fleet-checkbox { - display: flex; - align-items: center; - } - - .help-text { - margin-top: $pad-small; - margin-bottom: $pad-large; - font-weight: $regular; - font-size: 0.75rem; - color: $ui-fleet-black-75; - } - - &__form-field { - &--frequency { - margin-bottom: 0; - } - &--platform { - margin-bottom: 0; - margin-top: $pad-large; - } - } - - &__observer-can-run-wrapper { - margin-bottom: 0; - } - - &__advanced-options-toggle { - font-weight: $xbold; - } - - .info-banner { - margin-bottom: 1.5rem; - &__info { - line-height: 21px; - } - } - - &__disabled-discard-data-checkbox { - @include disabled; - } - - &__edit-anyway { - display: inline-flex; - align-items: center; - cursor: pointer; - font-weight: inherit; - font-size: inherit; - } -} diff --git a/frontend/pages/queries/edit/EditQueryPage/index.ts b/frontend/pages/queries/edit/index.ts similarity index 100% rename from frontend/pages/queries/edit/EditQueryPage/index.ts rename to frontend/pages/queries/edit/index.ts From a85f399cac364c2708d7a910c67ea9ea71e095c6 Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Mon, 9 Oct 2023 13:38:34 -0700 Subject: [PATCH 14/41] Fleet UI: Query report (table, buttons, api calls, etc) (#14325) ## Issue Cerra #13472 ## Description - Surface query report on the `/queries/{id}` route - Include table buttons to show query and export query - Include results count - Clientside sorting and filtering for columns - Add mock data to frontend integration mocks and to API mocks for concurrent development - 331 + 351 + 2 = 684 lines of code is just mocking data and not actual changes - If modifying sorting/filter, modify the exported results sorting/filter as well - Last fetched column is sentence cased, sortable by chronological order and not alpha order of the readable string (e.g., "a year ago" should be sorted _after_ "over 1 month ago" if sorted most recent to oldest even though a comes before o in the alphabet) ## Screen recordings (Uses mock data) https://github.com/fleetdm/fleet/assets/71795832/22766f2b-3387-4a95-b505-b530dda582fa https://github.com/fleetdm/fleet/assets/71795832/5c2cd8cc-d00e-4ead-b111-e3b33cb7c955 # Checklist for submitter If some of the following don't apply, delete the relevant line. - TODO for QA: Added/updated E2E tests (consider testing some of the features mentioned in the description) - [x] Manual QA for all new/changed functionality --- frontend/__mocks__/queryReportMock.ts | 331 +++++++++++++++++ frontend/interfaces/query_report.ts | 12 + .../QueryDetailsPage/QueryDetailsPage.tsx | 62 +++- .../QueryDetailsPageConfig.tsx | 13 + .../details/QueryDetailsPage/_styles.scss | 4 + .../CachedDetails/CachedDetails.tsx | 14 - .../details/components/CachedDetails/index.ts | 1 - .../components/NoResults/NoResults.tsx | 19 +- .../components/QueryReport/QueryReport.tsx | 142 +++++++ .../QueryReport/QueryReportTableConfig.tsx | 93 +++++ .../components/QueryReport/_styles.scss | 14 + .../details/components/QueryReport/index.ts | 1 + frontend/services/entities/query_report.ts | 50 +++ .../services/mock_service/mocks/config.ts | 2 + .../services/mock_service/mocks/responses.ts | 351 ++++++++++++++++++ frontend/utilities/generate_csv/index.ts | 6 +- 16 files changed, 1075 insertions(+), 40 deletions(-) create mode 100644 frontend/__mocks__/queryReportMock.ts create mode 100644 frontend/interfaces/query_report.ts create mode 100644 frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPageConfig.tsx delete mode 100644 frontend/pages/queries/details/components/CachedDetails/CachedDetails.tsx delete mode 100644 frontend/pages/queries/details/components/CachedDetails/index.ts create mode 100644 frontend/pages/queries/details/components/QueryReport/QueryReport.tsx create mode 100644 frontend/pages/queries/details/components/QueryReport/QueryReportTableConfig.tsx create mode 100644 frontend/pages/queries/details/components/QueryReport/_styles.scss create mode 100644 frontend/pages/queries/details/components/QueryReport/index.ts create mode 100644 frontend/services/entities/query_report.ts diff --git a/frontend/__mocks__/queryReportMock.ts b/frontend/__mocks__/queryReportMock.ts new file mode 100644 index 0000000000..eb538473d9 --- /dev/null +++ b/frontend/__mocks__/queryReportMock.ts @@ -0,0 +1,331 @@ +import { IQueryReport } from "interfaces/query_report"; + +const DEFAULT_QUERY_REPORT_MOCK: IQueryReport = { + query_id: 31, + results: [ + { + host_id: 1, + host_name: "foo", + last_fetched: "2021-01-19T17:08:31Z", + columns: { + model: "Razer Viper", + vendor: "Razer", + model_id: "0078", + }, + }, + { + host_id: 1, + host_name: "foo", + last_fetched: "2021-01-19T17:08:31Z", + columns: { + model: "USB Keyboard", + vendor: "VIA Labs, Inc.", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB Reciever", + vendor: "Logitech", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB Keyboard", + vendor: "Logitech", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "YubiKey OTP+FIDO+CCID", + vendor: "Yubico", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Lenovo USB Optical Mouse", + vendor: "PixArt", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Lenovo Traditional USB Keyboard", + vendor: "Lenovo", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Display Audio", + vendor: "Bose", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB-C Digital AV Multiport Adapter", + vendor: "Apple, Inc.", + model_id: "1460", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB Reciever", + vendor: "Logitech", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB-C Digital AV Multiport Adapter", + vendor: "Apple Inc.", + model_id: "1460", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB Reciever", + vendor: "Logitech", + }, + }, + { + host_id: 3, + host_name: "zoo", + last_fetched: "2022-04-09T17:20:00Z", + columns: { + model: "Logitech Webcam C925e", + model_id: "085b", + }, + }, + { + host_id: 3, + host_name: "zoo", + last_fetched: "2022-04-09T17:20:00Z", + columns: { + model: "Display Audio", + vendor: "Apple Inc.", + }, + }, + { + host_id: 3, + host_name: "zoo", + last_fetched: "2022-04-09T17:20:00Z", + columns: { + model: "Ambient Light Sensor", + vendor: "Apple Inc.", + }, + }, + { + host_id: 3, + host_name: "zoo", + last_fetched: "2022-04-09T17:20:00Z", + columns: { + model: "DELL Laser Mouse", + model_id: "4d51", + }, + }, + { + host_id: 7, + host_name: "Rachel's Magnificent Testing Computer of All Computers", + last_fetched: "2023-09-21T19:03:30Z", + columns: { + model: "AppleUSBVHCIBCE Root Hub Simulation", + vendor: "Apple Inc.", + }, + }, + { + host_id: 7, + host_name: "Rachel's Magnificent Testing Computer of All Computers", + last_fetched: "2023-09-21T19:03:30Z", + columns: { + model: "QuickFire Rapid keyboard", + vendor: "CM Storm", + model_id: "0004", + }, + }, + { + host_id: 7, + host_name: "Rachel's Magnificent Testing Computer of All Computers", + last_fetched: "2023-09-21T19:03:30Z", + columns: { + model: "Lenovo USB Optical Mouse", + vendor: "Lenovo", + }, + }, + { + host_id: 7, + host_name: "Rachel's Magnificent Testing Computer of All Computers", + last_fetched: "2023-09-21T19:03:30Z", + columns: { + model: "YubiKey FIDO+CCID", + vendor: "Yubico", + }, + }, + { + host_id: 4, + host_name: "car", + last_fetched: "2023-01-14T12:40:30Z", + columns: { + model: "USB2.0 Hub", + vendor: "Apple Inc.", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "FaceTime HD Camera (Display)", + vendor: "Apple Inc.", + model_id: "1112", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Apple Internal Keyboard / Trackpad", + model_id: "027e", + vendor: "Apple Inc.", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Apple Thunderbolt Display", + vendor: "Apple Inc.", + model_id: "9227", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "AppleUSBXHCI Root Hub Simulation", + vendor: "Apple Inc.", + model_id: "8007", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Apple T2 Controller", + vendor: "Apple Inc.", + model_id: "8233", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "4-Port USB 2.0 Hub", + vendor: "Generic", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "USB 10_100_1000 LAN", + vendor: "Realtek", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "Display Audio", + vendor: "Apple Inc.", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "USB Mouse", + vendor: "Razor", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "USB Audio", + vendor: "Apple, Inc.", + }, + }, + { + host_id: 6, + host_name: "moo", + last_fetched: "2023-09-20T07:02:34Z", + columns: { + model: "Display Audio", + vendor: "Apple Inc.", + }, + }, + { + host_id: 6, + host_name: "moo", + last_fetched: "2023-09-20T07:02:34Z", + columns: { + model: "USB Reciever", + vendor: "Logitech", + }, + }, + { + host_id: 6, + host_name: "moo", + last_fetched: "2023-09-20T07:02:34Z", + columns: { + model: "LG Monitor Controls", + vendor: "LG Electronics Inc.", + model_id: "9a39", + }, + }, + ], +}; + +const createMockQueryReport = ( + overrides?: Partial +): IQueryReport => { + return { ...DEFAULT_QUERY_REPORT_MOCK, ...overrides }; +}; + +export default createMockQueryReport; diff --git a/frontend/interfaces/query_report.ts b/frontend/interfaces/query_report.ts new file mode 100644 index 0000000000..9310fcc4e8 --- /dev/null +++ b/frontend/interfaces/query_report.ts @@ -0,0 +1,12 @@ +export interface IQueryReportResultRow { + host_id: number; + host_name: string; + last_fetched: string; + columns: any; +} + +// Query report +export interface IQueryReport { + query_id: number; + results: IQueryReportResultRow[]; +} diff --git a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx index 17c46c3ade..6c52aaeda8 100644 --- a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx +++ b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx @@ -1,4 +1,4 @@ -import React, { useContext } from "react"; +import React, { useContext, useState } from "react"; import { useQuery } from "react-query"; import { InjectedRouter, Params } from "react-router/lib/Router"; import { useErrorHandler } from "react-error-boundary"; @@ -12,8 +12,10 @@ import { IGetQueryResponse, ISchedulableQuery, } from "interfaces/schedulable_query"; +import { IQueryReport } from "interfaces/query_report"; import queryAPI from "services/entities/queries"; +import queryReportAPI, { ISortOption } from "services/entities/query_report"; import Spinner from "components/Spinner/Spinner"; import Button from "components/buttons/Button"; @@ -23,15 +25,20 @@ import TooltipWrapper from "components/TooltipWrapper/TooltipWrapper"; import QueryAutomationsStatusIndicator from "pages/queries/ManageQueriesPage/components/QueryAutomationsStatusIndicator/QueryAutomationsStatusIndicator"; import DataError from "components/DataError/DataError"; import LogDestinationIndicator from "components/LogDestinationIndicator/LogDestinationIndicator"; -import CachedDetails from "../components/CachedDetails/CachedDetails"; +import QueryReport from "../components/QueryReport/QueryReport"; import NoResults from "../components/NoResults/NoResults"; +import { + DEFAULT_SORT_HEADER, + DEFAULT_SORT_DIRECTION, +} from "./QueryDetailsPageConfig"; + interface IQueryDetailsPageProps { router: InjectedRouter; // v3 params: Params; location: { pathname: string; - query: { team_id?: string }; + query: { team_id?: string; order_key?: string; order_direction?: string }; search: string; }; } @@ -43,7 +50,20 @@ const QueryDetailsPage = ({ params: { id: paramsQueryId }, location, }: IQueryDetailsPageProps): JSX.Element => { - const queryId = paramsQueryId ? parseInt(paramsQueryId, 10) : null; + const queryId = parseInt(paramsQueryId, 10); + const queryParams = location.query; + + // Functions to avoid race conditions + const initialSortBy: ISortOption[] = (() => { + return [ + { + key: queryParams?.order_key ?? DEFAULT_SORT_HEADER, + direction: queryParams?.order_direction ?? DEFAULT_SORT_DIRECTION, + }, + ]; + })(); + + const [sortBy, setSortBy] = useState(initialSortBy); const { currentTeamName: teamNameForQuery, @@ -91,7 +111,7 @@ const QueryDetailsPage = ({ error: storedQueryError, } = useQuery( ["query", queryId], - () => queryAPI.load(queryId as number), + () => queryAPI.load(queryId), { enabled: !!queryId, refetchOnWindowFocus: false, @@ -111,8 +131,26 @@ const QueryDetailsPage = ({ } ); - const isLoading = isStoredQueryLoading; // TODO: Add || isCachedResultsLoading for new API response - const isApiError = storedQueryError || false; // TODO: Add || isCachedResultsError for new API response + const { + isLoading: isQueryReportLoading, + data: queryReport, + error: queryReportError, + } = useQuery( + [], + () => + queryReportAPI.load({ + sortBy, + id: queryId, + }), + { + enabled: !!queryId, + refetchOnWindowFocus: false, + onError: (error) => handlePageError(error), + } + ); + + const isLoading = isStoredQueryLoading || isQueryReportLoading; + const isApiError = storedQueryError || queryReportError; const renderHeader = () => { const canEditQuery = @@ -172,7 +210,9 @@ const QueryDetailsPage = ({ {!isLoading && !isApiError && (
- + on, data is sent according to a query’s frequency.`} + > Automations: ); } - return ; // TODO: Everything related to new APIs including surfacing errorsOnly + return ; // TODO: Everything related to new APIs including surfacing errorsOnly }; return ( diff --git a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPageConfig.tsx b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPageConfig.tsx new file mode 100644 index 0000000000..10cc329d00 --- /dev/null +++ b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPageConfig.tsx @@ -0,0 +1,13 @@ +// TODO +export const QUERY_DETAILS_PAGE_FILTER_KEYS = ["model", "vendor"] as const; + +// TODO: refactor to use this type as the location.query prop of the page +export type QueryDetailsPageQueryParams = Record< + | "order_key" + | "order_direction" + | typeof QUERY_DETAILS_PAGE_FILTER_KEYS[number], + string +>; + +export const DEFAULT_SORT_HEADER = "host_name"; +export const DEFAULT_SORT_DIRECTION = "asc"; diff --git a/frontend/pages/queries/details/QueryDetailsPage/_styles.scss b/frontend/pages/queries/details/QueryDetailsPage/_styles.scss index 9b0a5a0a25..a48b335706 100644 --- a/frontend/pages/queries/details/QueryDetailsPage/_styles.scss +++ b/frontend/pages/queries/details/QueryDetailsPage/_styles.scss @@ -39,6 +39,10 @@ &__log-destination { display: flex; gap: $pad-small; + + .component__tooltip-wrapper__element { + font-weight: $bold; + } } .empty-table__inner { diff --git a/frontend/pages/queries/details/components/CachedDetails/CachedDetails.tsx b/frontend/pages/queries/details/components/CachedDetails/CachedDetails.tsx deleted file mode 100644 index ab5255e3f0..0000000000 --- a/frontend/pages/queries/details/components/CachedDetails/CachedDetails.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; - -// TODO: This whole section -// interface ICachedDetailsProps { -// -// } - -const baseClass = "cached-details"; - -const CachedDetails = (): JSX.Element => { - return
TODO
; -}; - -export default CachedDetails; diff --git a/frontend/pages/queries/details/components/CachedDetails/index.ts b/frontend/pages/queries/details/components/CachedDetails/index.ts deleted file mode 100644 index b50b73552b..0000000000 --- a/frontend/pages/queries/details/components/CachedDetails/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./CachedDetails"; diff --git a/frontend/pages/queries/details/components/NoResults/NoResults.tsx b/frontend/pages/queries/details/components/NoResults/NoResults.tsx index 7897facb23..1657923339 100644 --- a/frontend/pages/queries/details/components/NoResults/NoResults.tsx +++ b/frontend/pages/queries/details/components/NoResults/NoResults.tsx @@ -14,7 +14,6 @@ interface INoResultsProps { disabledCachingGlobally: boolean; discardDataEnabled: boolean; loggingSnapshot: boolean; - errorsOnly: boolean; } const baseClass = "no-results"; @@ -26,7 +25,6 @@ const NoResults = ({ disabledCachingGlobally, discardDataEnabled, loggingSnapshot, - errorsOnly, }: INoResultsProps): JSX.Element => { // Returns how many seconds it takes to expect a cached update const secondsCheckbackTime = () => { @@ -92,14 +90,15 @@ const NoResults = ({ ); } - if (errorsOnly) { - return ( - <> - This query had trouble collecting data on some hosts. Check out the{" "} - Errors tab to see why. - - ); - } + // No errors will be reported in V1 + // if (errorsOnly) { + // return ( + // <> + // This query had trouble collecting data on some hosts. Check out the{" "} + // Errors tab to see why. + // + // ); + // } return "This query has returned no data so far."; }; diff --git a/frontend/pages/queries/details/components/QueryReport/QueryReport.tsx b/frontend/pages/queries/details/components/QueryReport/QueryReport.tsx new file mode 100644 index 0000000000..4456fe402c --- /dev/null +++ b/frontend/pages/queries/details/components/QueryReport/QueryReport.tsx @@ -0,0 +1,142 @@ +import React, { useState, useContext, useEffect } from "react"; + +import { Row, Column } from "react-table"; +import FileSaver from "file-saver"; +import { QueryContext } from "context/query"; + +import { + generateCSVFilename, + generateCSVQueryResults, +} from "utilities/generate_csv"; +import { IQueryReport, IQueryReportResultRow } from "interfaces/query_report"; + +import Button from "components/buttons/Button"; +import Icon from "components/Icon/Icon"; +import TableContainer from "components/TableContainer"; +import ShowQueryModal from "components/modals/ShowQueryModal"; + +import generateResultsTableHeaders from "./QueryReportTableConfig"; + +interface IQueryReportProps { + queryReport?: IQueryReport; +} + +const baseClass = "query-report"; +const CSV_TITLE = "Query"; + +const tableResults = (results: IQueryReportResultRow[]) => { + return results.map((result: IQueryReportResultRow) => { + const hostInfoColumns = { + host_display_name: result.host_name, + last_fetched: result.last_fetched, + }; + + // hostInfoColumns displays the host metadata that is returned with every query + // result.columns are the variable columns returned by the API that differ per query + return { ...hostInfoColumns, ...result.columns }; + }); +}; + +const QueryReport = ({ queryReport }: IQueryReportProps): JSX.Element => { + const { lastEditedQueryName, lastEditedQueryBody } = useContext(QueryContext); + + const [showQueryModal, setShowQueryModal] = useState(false); + const [filteredResults, setFilteredResults] = useState( + tableResults(queryReport?.results || []) + ); + const [tableHeaders, setTableHeaders] = useState([]); + + useEffect(() => { + if (queryReport && queryReport.results && queryReport.results.length > 0) { + const generatedTableHeaders = generateResultsTableHeaders( + tableResults(queryReport.results) + ); + // Update tableHeaders if new headers are found + if (generatedTableHeaders !== tableHeaders) { + setTableHeaders(generatedTableHeaders); + } + } + }, [queryReport]); // Cannot use tableHeaders as it will cause infinite loop with setTableHeaders + + const onExportQueryResults = (evt: React.MouseEvent) => { + evt.preventDefault(); + FileSaver.saveAs( + generateCSVQueryResults( + filteredResults, + generateCSVFilename( + `${lastEditedQueryName || CSV_TITLE} - Query Report` + ), + tableHeaders + ) + ); + }; + + const onShowQueryModal = () => { + setShowQueryModal(!showQueryModal); + }; + + const renderNoResults = () => { + return

TODO

; + }; + + const renderTableButtons = () => { + return ( +
+ + +
+ ); + }; + + const renderTable = () => { + return ( +
+ renderTableButtons()} + setExportRows={setFilteredResults} + /> +
+ ); + }; + + return ( +
+ {renderTable()} + {showQueryModal && ( + + )} +
+ ); +}; + +export default QueryReport; diff --git a/frontend/pages/queries/details/components/QueryReport/QueryReportTableConfig.tsx b/frontend/pages/queries/details/components/QueryReport/QueryReportTableConfig.tsx new file mode 100644 index 0000000000..1babdb0969 --- /dev/null +++ b/frontend/pages/queries/details/components/QueryReport/QueryReportTableConfig.tsx @@ -0,0 +1,93 @@ +/* eslint-disable react/prop-types */ +// disable this rule as it was throwing an error in Header and Cell component +// definitions for the selection row for some reason when we dont really need it. +import React from "react"; + +import { + CellProps, + Column, + ColumnInstance, + ColumnInterface, + HeaderProps, + TableInstance, +} from "react-table"; + +import DefaultColumnFilter from "components/TableContainer/DataTable/DefaultColumnFilter"; +import HeaderCell from "components/TableContainer/DataTable/HeaderCell/HeaderCell"; + +import { humanHostLastSeen } from "utilities/helpers"; + +type IHeaderProps = HeaderProps & { + column: ColumnInstance & IDataColumn; +}; + +type ICellProps = CellProps; + +interface IDataColumn extends ColumnInterface { + title?: string; + accessor: string; +} + +const _unshiftHostname = (headers: IDataColumn[]) => { + const newHeaders = [...headers]; + const displayNameIndex = headers.findIndex( + (h) => h.id === "host_display_name" + ); + if (displayNameIndex >= 0) { + // remove hostname header from headers + const [displayNameHeader] = newHeaders.splice(displayNameIndex, 1); + // reformat title and insert at start of headers array + newHeaders.unshift({ ...displayNameHeader, title: "Host" }); + } + // TODO: Remove after v5 when host_hostname is removed rom API response. + const hostNameIndex = headers.findIndex((h) => h.id === "host_hostname"); + if (hostNameIndex >= 0) { + newHeaders.splice(hostNameIndex, 1); + } + // end remove + return newHeaders; +}; + +const generateResultsTableHeaders = (results: any[]): Column[] => { + /* Results include an array of objects, each representing a table row + Each key value pair in an object represents a column name and value + To create headers, use JS set to create an array of all unique column names */ + const uniqueColumnNames = Array.from( + results.reduce( + (s, o) => Object.keys(o).reduce((t, k) => t.add(k), s), + new Set() // Set prevents listing duplicate headers + ) + ); + + const headers = uniqueColumnNames.map((key) => { + return { + id: key as string, + title: key as string, + Header: (headerProps: IHeaderProps) => ( + + ), + accessor: key as string, + Cell: (cellProps: ICellProps) => { + // Filters chronologically by date, but UI displays readable last fetched + if (cellProps.column.id === "last_fetched") { + return humanHostLastSeen(cellProps?.cell?.value); + } + return cellProps?.cell?.value || null; + }, + Filter: DefaultColumnFilter, + filterType: "text", + disableSortBy: false, + }; + }); + return _unshiftHostname(headers); +}; + +export default generateResultsTableHeaders; diff --git a/frontend/pages/queries/details/components/QueryReport/_styles.scss b/frontend/pages/queries/details/components/QueryReport/_styles.scss new file mode 100644 index 0000000000..6ca33cb40b --- /dev/null +++ b/frontend/pages/queries/details/components/QueryReport/_styles.scss @@ -0,0 +1,14 @@ +.query-report { + &__wrapper { + margin-top: $pad-large; + + .host_id__header { + width: 95px; // Min width for 6 digits host IDs + } + } + + &__results-cta { + display: flex; + gap: $pad-medium; + } +} diff --git a/frontend/pages/queries/details/components/QueryReport/index.ts b/frontend/pages/queries/details/components/QueryReport/index.ts new file mode 100644 index 0000000000..7e9fe702db --- /dev/null +++ b/frontend/pages/queries/details/components/QueryReport/index.ts @@ -0,0 +1 @@ +export { default } from "./QueryReport"; diff --git a/frontend/services/entities/query_report.ts b/frontend/services/entities/query_report.ts new file mode 100644 index 0000000000..9dbf13834e --- /dev/null +++ b/frontend/services/entities/query_report.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ +// import sendRequest from "services"; +import endpoints from "utilities/endpoints"; + +import { buildQueryStringFromParams } from "utilities/url"; + +// Mock API requests to be used in developing FE for #7766 in parallel with BE development +import { sendRequest } from "services/mock_service/service/service"; + +export interface ISortOption { + key: string; + direction: string; +} + +export interface ILoadQueryReportOptions { + id: number; + sortBy: ISortOption[]; +} + +const getSortParams = (sortOptions?: ISortOption[]) => { + if (sortOptions === undefined || sortOptions.length === 0) { + return {}; + } + + const sortItem = sortOptions[0]; + return { + order_key: sortItem.key, + order_direction: sortItem.direction, + }; +}; + +export default { + load: ({ id, sortBy }: ILoadQueryReportOptions) => { + const sortParams = getSortParams(sortBy); + + const { QUERIES } = endpoints; + + const queryParams = { + order_key: sortParams.order_key, + order_direction: sortParams.order_direction, + }; + + const queryString = buildQueryStringFromParams(queryParams); + + // const endpoint = `${QUERIES}/${id}/report`; + const endpoint = `${QUERIES}/113/report`; + const path = `${endpoint}?${queryString}`; + return sendRequest("GET", path); + }, +}; diff --git a/frontend/services/mock_service/mocks/config.ts b/frontend/services/mock_service/mocks/config.ts index 50ebcbf1f9..5fd108c994 100644 --- a/frontend/services/mock_service/mocks/config.ts +++ b/frontend/services/mock_service/mocks/config.ts @@ -33,6 +33,8 @@ const REQUEST_RESPONSE_MAPPINGS: IResponses = { "queries/7": RESPONSES.globalQuery6, "queries/8": RESPONSES.teamQuery2, "queries?team_id=13": RESPONSES.teamQueries, + "queries/113/report?order_key=host_name&order_direction=asc": + RESPONSES.queryReport, }, POST: { // request body is ISelectedTargets diff --git a/frontend/services/mock_service/mocks/responses.ts b/frontend/services/mock_service/mocks/responses.ts index d20d275f8f..860259f8c4 100644 --- a/frontend/services/mock_service/mocks/responses.ts +++ b/frontend/services/mock_service/mocks/responses.ts @@ -598,6 +598,356 @@ const teamQueries = { ], }; +const queryReport = { + query_id: 31, + results: [ + { + host_id: 1, + host_name: "foo", + last_fetched: "2021-01-19T17:08:31Z", + columns: { + model: "Razer Viper", + vendor: "Razer", + model_id: "0078", + }, + }, + { + host_id: 1, + host_name: "foo", + last_fetched: "2021-01-19T17:08:31Z", + columns: { + model: "USB Keyboard", + vendor: "VIA Labs, Inc.", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB Reciever", + vendor: "Logitech", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB Keyboard", + vendor: "Logitech", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "YubiKey OTP+FIDO+CCID", + vendor: "Yubico", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Lenovo USB Optical Mouse", + vendor: "PixArt", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Lenovo Traditional USB Keyboard", + vendor: "Lenovo", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Display Audio", + vendor: "Bose", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB-C Digital AV Multiport Adapter", + vendor: "Apple, Inc.", + model_id: "1460", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB Reciever", + vendor: "Logitech", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB-C Digital AV Multiport Adapter", + vendor: "Apple Inc.", + model_id: "1460", + }, + }, + { + host_id: 2, + host_name: "bar", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "USB Reciever", + vendor: "Logitech", + }, + }, + { + host_id: 3, + host_name: "zoo", + last_fetched: "2022-04-09T17:20:00Z", + columns: { + model: "Logitech Webcam C925e", + model_id: "085b", + }, + }, + { + host_id: 3, + host_name: "zoo", + last_fetched: "2022-04-09T17:20:00Z", + columns: { + model: "Display Audio", + vendor: "Apple Inc.", + }, + }, + { + host_id: 3, + host_name: "zoo", + last_fetched: "2022-04-09T17:20:00Z", + columns: { + model: "Ambient Light Sensor", + vendor: "Apple Inc.", + }, + }, + { + host_id: 3, + host_name: "zoo", + last_fetched: "2022-04-09T17:20:00Z", + columns: { + model: "DELL Laser Mouse", + model_id: "4d51", + }, + }, + { + host_id: 7, + host_name: "Rachel's Magnificent Testing Computer of All Computers", + last_fetched: "2023-09-21T19:03:30Z", + columns: { + model: "AppleUSBVHCIBCE Root Hub Simulation", + vendor: "Apple Inc.", + }, + }, + { + host_id: 7, + host_name: "Rachel's Magnificent Testing Computer of All Computers", + last_fetched: "2023-09-21T19:03:30Z", + columns: { + model: "QuickFire Rapid keyboard", + vendor: "CM Storm", + model_id: "0004", + }, + }, + { + host_id: 7, + host_name: "Rachel's Magnificent Testing Computer of All Computers", + last_fetched: "2023-09-21T19:03:30Z", + columns: { + model: "Lenovo USB Optical Mouse", + vendor: "Lenovo", + }, + }, + { + host_id: 7, + host_name: "Rachel's Magnificent Testing Computer of All Computers", + last_fetched: "2023-09-21T19:03:30Z", + columns: { + model: "YubiKey FIDO+CCID", + vendor: "Yubico", + }, + }, + { + host_id: 4, + host_name: "car", + last_fetched: "2023-01-14T12:40:30Z", + columns: { + model: "USB2.0 Hub", + vendor: "Apple Inc.", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "FaceTime HD Camera (Display)", + vendor: "Apple Inc.", + model_id: "1112", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Apple Internal Keyboard / Trackpad", + model_id: "027e", + vendor: "Apple Inc.", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Apple Thunderbolt Display", + vendor: "Apple Inc.", + model_id: "9227", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "AppleUSBXHCI Root Hub Simulation", + vendor: "Apple Inc.", + model_id: "8007", + }, + }, + { + host_id: 8, + host_name: "apple man", + last_fetched: "2021-01-19T17:20:00Z", + columns: { + model: "Apple T2 Controller", + vendor: "Apple Inc.", + model_id: "8233", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "4-Port USB 2.0 Hub", + vendor: "Generic", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "USB 10_100_1000 LAN", + vendor: "Realtek", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "Display Audio", + vendor: "Apple Inc.", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "USB Mouse", + vendor: "Razor", + }, + }, + { + host_id: 5, + host_name: "choo", + last_fetched: "2023-09-03T03:40:30Z", + columns: { + model: "USB Audio", + vendor: "Apple, Inc.", + }, + }, + { + host_id: 6, + host_name: "moo", + last_fetched: "2023-09-20T07:02:34Z", + columns: { + model: "Display Audio", + vendor: "Apple Inc.", + }, + }, + { + host_id: 6, + host_name: "moo", + last_fetched: "2023-09-20T07:02:34Z", + columns: { + model: "USB Reciever", + vendor: "Logitech", + }, + }, + { + host_id: 6, + host_name: "moo", + last_fetched: "2023-09-20T07:02:34Z", + columns: { + model: "LG Monitor Controls", + vendor: "LG Electronics Inc.", + model_id: "9a39", + }, + }, + { + host_id: 9, + host_name: "moo moo", + last_fetched: "2023-09-28T02:02:34Z", + columns: { + model: "Display Audio", + vendor: "Apple Inc.", + }, + }, + { + host_id: 9, + host_name: "moo moo", + last_fetched: "2023-09-28T02:02:34Z", + columns: { + model: "USB Reciever", + vendor: "Logitech", + }, + }, + { + host_id: 9, + host_name: "moo moo", + last_fetched: "2023-09-28T02:02:34Z", + columns: { + model: "LG Monitor Controls", + vendor: "LG Electronics Inc.", + model_id: "9a39", + }, + }, + ], +}; + const globalQuery1 = { query: globalQueries.queries[0] }; const globalQuery2 = { query: globalQueries.queries[1] }; const globalQuery3 = { query: globalQueries.queries[2] }; @@ -611,6 +961,7 @@ export default { count, hosts, labels, + queryReport, globalQueries, globalQuery1, globalQuery2, diff --git a/frontend/utilities/generate_csv/index.ts b/frontend/utilities/generate_csv/index.ts index 8ee514ef93..501441a887 100644 --- a/frontend/utilities/generate_csv/index.ts +++ b/frontend/utilities/generate_csv/index.ts @@ -14,7 +14,7 @@ export const generateCSVFilename = (descriptor: string) => { return `${descriptor} (${format(new Date(), "MM-dd-yy hh-mm-ss")}).csv`; }; -// Query results and query errors +// Live query results, live query errors, and query report export const generateCSVQueryResults = ( rows: Row[], filename: string, @@ -35,7 +35,7 @@ export const generateCSVQueryResults = ( ); }; -// Policy results only +// Live policy results only export const generateCSVPolicyResults = ( rows: { host: string; status: string }[], filename: string @@ -45,7 +45,7 @@ export const generateCSVPolicyResults = ( }); }; -// Policy errors only +// Live policy errors only export const generateCSVPolicyErrors = ( rows: ICampaignError[], filename: string From eb327faabfe31ac74c48a9b126e7577f7a39e029 Mon Sep 17 00:00:00 2001 From: Jacob Shandling <61553566+jacobshandling@users.noreply.github.com> Date: Mon, 9 Oct 2023 14:28:35 -0700 Subject: [PATCH 15/41] maintenance merge of `main` into feature branch (#14393) maintenance merge of `main` into feature branch --- .github/workflows/build-orbit.yaml | 6 + CHANGELOG.md | 6 + CODEOWNERS | 1 - articles/fleet-4.37.0.md | 5 +- ...troducing-cross-platform-script-execution} | 0 changes/12927-disk-encryption-settings | 1 + changes/12932-bitlocker-api-updates | 4 + changes/12933-bitlocker-host-details-api | 1 + changes/bug-13894-failing-policies-styling | 1 + ...953-changes-to-controls-page-for-bitlocker | 1 + changes/issue-13954-orbit-disk-encryption-key | 1 + ...e-14007-support-get-windows-encryption-key | 1 + charts/fleet/Chart.yaml | 2 +- charts/fleet/values.yaml | 2 +- cmd/fleet/cron.go | 3 +- cmd/fleetctl/apply_test.go | 16 +- cmd/fleetctl/get.go | 17 +- cmd/fleetctl/get_test.go | 13 +- .../expectedGetConfigAppConfigJson.json | 4 +- .../expectedGetConfigAppConfigYaml.yml | 2 +- ...ectedGetConfigIncludeServerConfigJson.json | 4 +- ...pectedGetConfigIncludeServerConfigYaml.yml | 2 +- .../testdata/expectedGetTeamsJson.json | 8 +- .../testdata/expectedGetTeamsYaml.yml | 4 +- .../macosSetupExpectedAppConfigEmpty.yml | 2 +- .../macosSetupExpectedAppConfigSet.yml | 2 +- .../macosSetupExpectedTeam1And2Empty.yml | 4 +- .../macosSetupExpectedTeam1And2Set.yml | 4 +- .../testdata/macosSetupExpectedTeam1Empty.yml | 2 +- .../configuration-files/README.md | 4 +- docs/Contributing/API-for-contributors.md | 44 +- docs/Contributing/FAQ.md | 1 + docs/Get started/anatomy.md | 2 +- docs/REST API/rest-api.md | 90 +-- docs/Using Fleet/CIS-Benchmarks.md | 120 +--- docs/Using Fleet/manage-access.md | 2 +- ee/server/service/mdm.go | 56 +- ee/server/service/teams.go | 58 +- frontend/__mocks__/configMock.ts | 1 + frontend/__mocks__/hostMock.ts | 13 +- frontend/__mocks__/mdmMock.ts | 5 + frontend/components/InfoBanner/InfoBanner.tsx | 10 + frontend/components/InfoBanner/_styles.scss | 18 + .../StatusIndicatorWithIcon.tsx | 10 +- .../StatusIndicatorWithIcon/_styles.scss | 7 + frontend/interfaces/config.ts | 90 +-- frontend/interfaces/host.ts | 24 +- frontend/interfaces/mdm.ts | 24 +- frontend/interfaces/team.ts | 1 + .../pages/LoginSuccessfulPage/_styles.scss | 2 +- .../AggregateMacSettingsIndicators.tsx | 99 --- .../AggregateMacSettingsIndicators/index.ts | 1 - .../OSSettings/OSSettings.tsx | 15 +- .../ProfileStatusAggregate.tsx | 95 +++ .../ProfileStatusAggregateOptions.ts | 43 ++ .../_styles.scss | 14 +- .../ProfileStatusAggregate/index.ts | 1 + .../cards/DiskEncryption/DiskEncryption.tsx | 21 +- .../cards/DiskEncryption/_styles.scss | 1 + .../DiskEncryptionTable.tsx | 29 +- .../DiskEncryptionTableConfig.tsx | 111 +++- .../DiskEncryptionTable/_styles.scss | 3 - .../TurnOnMdmMessage/TurnOnMdmMessage.tsx | 2 +- .../hosts/ManageHostsPage/HostsPageConfig.tsx | 3 +- .../hosts/ManageHostsPage/ManageHostsPage.tsx | 13 +- .../CustomLabelGroupHeading/_styles.scss | 4 +- .../DiskEncryptionStatusFilter.tsx | 6 +- .../components/FilterPill/_styles.scss | 2 +- .../HostsFilterBlock/HostsFilterBlock.tsx | 17 +- .../details/DeviceUserPage/DeviceUserPage.tsx | 2 + .../HostDetailsPage/HostDetailsPage.tsx | 18 +- .../DiskEncryptionKeyModal.tsx | 38 +- .../modals/OSPolicyModal/_styles.scss | 2 +- .../details/MacSettingsIndicator/index.ts | 1 - .../MacSettingsModal/MacSettingsModal.tsx | 20 +- .../MacSettingStatusCell.tsx | 70 +- .../MacSettingsTableConfig.tsx | 40 +- .../ProfileStatusIndicator.tests.tsx} | 13 +- .../ProfileStatusIndicator.tsx} | 10 +- .../_styles.scss | 2 +- .../details/ProfileStatusIndicator/index.ts | 1 + .../details/cards/HostSummary/HostSummary.tsx | 44 +- .../MacSettingsIndicator.tsx | 16 +- .../PolicyFailingCount/PolicyFailingCount.tsx | 7 +- .../PolicyFailingCount/_styles.scss | 23 +- .../hosts/details/cards/Policies/_styles.scss | 4 - .../SoftwareVulnCount/SoftwareVulnCount.tsx | 11 +- .../Software/SoftwareVulnCount/_styles.scss | 22 +- .../hosts/details/cards/Software/_styles.scss | 3 + frontend/pages/hosts/details/helpers.ts | 33 + .../policies/ManagePoliciesPage/_styles.scss | 2 +- .../components/AddPolicyModal/_styles.scss | 2 +- .../ManageAutomationsModal/_styles.scss | 2 +- .../pages/policies/PolicyPage/_styles.scss | 2 +- .../PolicyQueriesErrorsTable/_styles.scss | 2 +- .../PolicyQueriesTable/_styles.scss | 2 +- .../ManageAutomationsModal/_styles.scss | 2 +- .../ManageAutomationsModal/_styles.scss | 2 +- frontend/services/entities/host_count.ts | 4 +- frontend/services/entities/hosts.ts | 11 +- frontend/services/entities/mdm.ts | 91 ++- frontend/styles/var/_global.scss | 1 + frontend/utilities/endpoints.ts | 2 +- frontend/utilities/url/index.ts | 12 +- go.mod | 1 + go.sum | 2 + handbook/business-operations/README.md | 1 + handbook/ceo.md | 2 +- handbook/company/open-positions.yml | 19 + handbook/company/pricing-features-table.yml | 321 ++++++---- handbook/company/why-this-way.md | 2 +- handbook/engineering/Load-testing.md | 2 +- handbook/engineering/README.md | 11 + handbook/engineering/scaling-fleet.md | 2 +- handbook/marketing/README.md | 31 +- handbook/marketing/marketing.rituals.yml | 21 + handbook/product/README.md | 4 +- .../dogfood/terraform/aws/variables.tf | 2 +- .../dogfood/terraform/gcp/variables.tf | 2 +- .../loadtesting/terraform/readme.md | 2 +- .../sandbox/JITProvisioner/jitprovisioner.tf | 2 +- .../lambda/deploy_terraform/main.tf | 2 +- .../changes/12842-orbit-bitlocker-management | 1 + orbit/cmd/orbit/orbit.go | 2 + orbit/pkg/bitlocker/bitlocker_management.go | 17 + .../bitlocker_management_notwindows.go | 19 + .../bitlocker/bitlocker_management_windows.go | 573 +++++++++++++++++ orbit/pkg/update/execwinapi_stub.go | 4 + orbit/pkg/update/execwinapi_windows.go | 14 + orbit/pkg/update/notifications.go | 117 ++++ orbit/pkg/update/notifications_test.go | 64 ++ pkg/optjson/optjson.go | 39 ++ pkg/optjson/optjson_test.go | 81 +++ pkg/rawjson/rawjson.go | 55 ++ pkg/rawjson/rawjson_test.go | 104 +++ server/datastore/mysql/app_configs.go | 15 + server/datastore/mysql/app_configs_test.go | 48 +- server/datastore/mysql/apple_mdm.go | 26 +- server/datastore/mysql/apple_mdm_test.go | 259 ++++---- server/datastore/mysql/hosts.go | 208 +++++- server/datastore/mysql/hosts_test.go | 201 ++++-- server/datastore/mysql/labels.go | 26 +- server/datastore/mysql/labels_test.go | 116 +++- server/datastore/mysql/microsoft_mdm.go | 234 ++++++- server/datastore/mysql/microsoft_mdm_test.go | 389 +++++++++++ ...0230918221115_MoveDiskEncryptionSetting.go | 32 + ...18221115_MoveDiskEncryptionSetting_test.go | 67 ++ server/datastore/mysql/schema.sql | 6 +- server/fleet/app.go | 116 +++- server/fleet/app_test.go | 152 +++++ server/fleet/datastore.go | 22 +- server/fleet/hosts.go | 70 +- server/fleet/hosts_test.go | 51 ++ server/fleet/mdm.go | 13 + server/fleet/orbit.go | 10 + server/fleet/service.go | 16 + server/fleet/teams.go | 20 +- server/fleet/windows_mdm.go | 16 + server/mdm/apple/cert.go | 17 - server/mdm/mdm.go | 25 + .../mdm/{apple/cert_test.go => mdm_test.go} | 2 +- server/mdm/microsoft/microsoft_mdm.go | 17 +- server/mock/datastore_mock.go | 62 +- server/service/appconfig.go | 78 ++- server/service/appconfig_test.go | 25 +- server/service/apple_mdm.go | 8 +- server/service/apple_mdm_test.go | 8 +- server/service/handler.go | 13 +- server/service/hosts.go | 87 ++- server/service/hosts_test.go | 170 ++++- server/service/integration_core_test.go | 23 +- server/service/integration_enterprise_test.go | 8 +- server/service/integration_mdm_test.go | 604 ++++++++++++++++-- server/service/mdm.go | 58 ++ server/service/mdm_test.go | 215 ++++++- server/service/microsoft_mdm.go | 32 +- .../middleware/mdmconfigured/mdmconfigured.go | 12 + .../mdmconfigured/mdmconfigured_test.go | 54 ++ server/service/orbit.go | 93 +++ server/service/orbit_client.go | 15 + server/service/osquery_utils/queries.go | 8 +- server/service/osquery_utils/queries_test.go | 2 +- server/service/testing_utils.go | 4 +- server/service/transport.go | 32 +- terraform/byo-vpc/byo-db/byo-ecs/variables.tf | 2 +- terraform/byo-vpc/byo-db/variables.tf | 2 +- terraform/byo-vpc/example/main.tf | 2 +- terraform/byo-vpc/variables.tf | 2 +- terraform/variables.tf | 2 +- tools/fleetctl-npm/package.json | 2 +- website/api/controllers/view-integrations.js | 27 + .../webhooks/receive-from-stripe.js | 12 +- ...ice-management-transparency-438x373@2x.png | Bin 0 -> 154237 bytes .../icon-checkmark-circle-green-16x16@2x.png | Bin 0 -> 797 bytes website/assets/images/icon-idp-22x28@2x.png | Bin 0 -> 1121 bytes .../assets/images/icon-rest-api-35x28@2x.png | Bin 0 -> 1394 bytes .../assets/images/icon-webhooks-30x28@2x.png | Bin 0 -> 2404 bytes .../logo-active-directory-169x28@2x.png | Bin 0 -> 5327 bytes .../assets/images/logo-ansible-147x28@2x.png | Bin 0 -> 3435 bytes website/assets/images/logo-aws-46x28@2x.png | Bin 0 -> 2898 bytes .../assets/images/logo-azure-169x28@2x.png | Bin 0 -> 7166 bytes website/assets/images/logo-chef-169x28@2x.png | Bin 0 -> 6354 bytes .../assets/images/logo-deloitte-166x36@2x.png | Bin 0 -> 3992 bytes .../assets/images/logo-elastic-82x28@2x.png | Bin 0 -> 3751 bytes .../assets/images/logo-github-89x28@2x.png | Bin 0 -> 2011 bytes .../assets/images/logo-gitlab-124x28@2x.png | Bin 0 -> 4117 bytes .../logo-google-chronicle-128x28@2x.png | Bin 0 -> 5801 bytes .../images/logo-google-cloud-174x28@2x.png | Bin 0 -> 23926 bytes website/assets/images/logo-jira-185x28@2x.png | Bin 0 -> 5649 bytes .../assets/images/logo-munki-101x28@2x.png | Bin 0 -> 4003 bytes website/assets/images/logo-okta-85x28@2x.png | Bin 0 -> 3936 bytes .../assets/images/logo-puppet-79x28@2x.png | Bin 0 -> 2025 bytes .../images/logo-snowflake-color-117x28@2x.png | Bin 0 -> 4934 bytes .../assets/images/logo-splunk-95x28@2x.png | Bin 0 -> 2707 bytes website/assets/images/logo-tines-90x28@2x.png | Bin 0 -> 2119 bytes .../components/scrollable-tweets.component.js | 25 +- .../assets/js/pages/entrance/signup.page.js | 3 +- website/assets/js/pages/integrations.page.js | 25 + website/assets/js/pages/pricing.page.js | 2 +- website/assets/styles/importer.less | 1 + website/assets/styles/layout.less | 15 +- website/assets/styles/pages/compliance.less | 1 + .../styles/pages/customers/new-license.less | 3 + website/assets/styles/pages/fleet-mdm.less | 113 +++- .../styles/pages/handbook/basic-handbook.less | 44 ++ website/assets/styles/pages/homepage.less | 1 + website/assets/styles/pages/integrations.less | 166 +++++ .../styles/pages/osquery-management.less | 1 + website/assets/styles/pages/pricing.less | 84 ++- .../pages/vulnerability-management.less | 1 + website/config/policies.js | 1 + website/config/routes.js | 9 + website/scripts/build-static-content.js | 28 +- website/views/emails/email-mdm-video.ejs | 2 +- website/views/layouts/layout-customer.ejs | 39 +- website/views/layouts/layout-landing.ejs | 348 ---------- website/views/layouts/layout-sandbox.ejs | 238 +++---- website/views/layouts/layout.ejs | 238 +++---- website/views/pages/customers/new-license.ejs | 4 +- website/views/pages/entrance/signup.ejs | 2 +- website/views/pages/fleet-mdm.ejs | 31 +- website/views/pages/integrations.ejs | 303 +++++++++ website/views/pages/pricing.ejs | 124 +--- website/views/pages/try-fleet/register.ejs | 2 +- .../views/pages/try-fleet/sandbox-login.ejs | 2 +- 245 files changed, 6876 insertions(+), 2033 deletions(-) rename articles/{introducing-cross-platform-script-execution.md => introducing-cross-platform-script-execution} (100%) create mode 100644 changes/12927-disk-encryption-settings create mode 100644 changes/12932-bitlocker-api-updates create mode 100644 changes/12933-bitlocker-host-details-api create mode 100644 changes/bug-13894-failing-policies-styling create mode 100644 changes/issue-13953-changes-to-controls-page-for-bitlocker create mode 100644 changes/issue-13954-orbit-disk-encryption-key create mode 100644 changes/issue-14007-support-get-windows-encryption-key delete mode 100644 frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/AggregateMacSettingsIndicators.tsx delete mode 100644 frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/index.ts create mode 100644 frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/ProfileStatusAggregate.tsx create mode 100644 frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/ProfileStatusAggregateOptions.ts rename frontend/pages/ManageControlsPage/OSSettings/{AggregateMacSettingsIndicators => ProfileStatusAggregate}/_styles.scss (73%) create mode 100644 frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/index.ts delete mode 100644 frontend/pages/hosts/details/MacSettingsIndicator/index.ts rename frontend/pages/hosts/details/{MacSettingsIndicator/MacSettingsIndicator.tests.tsx => ProfileStatusIndicator/ProfileStatusIndicator.tests.tsx} (87%) rename frontend/pages/hosts/details/{MacSettingsIndicator/MacSettingsIndicator.tsx => ProfileStatusIndicator/ProfileStatusIndicator.tsx} (92%) rename frontend/pages/hosts/details/{MacSettingsIndicator => ProfileStatusIndicator}/_styles.scss (88%) create mode 100644 frontend/pages/hosts/details/ProfileStatusIndicator/index.ts create mode 100644 frontend/pages/hosts/details/helpers.ts create mode 100644 orbit/changes/12842-orbit-bitlocker-management create mode 100644 orbit/pkg/bitlocker/bitlocker_management.go create mode 100644 orbit/pkg/bitlocker/bitlocker_management_notwindows.go create mode 100644 orbit/pkg/bitlocker/bitlocker_management_windows.go create mode 100644 pkg/rawjson/rawjson.go create mode 100644 pkg/rawjson/rawjson_test.go create mode 100644 server/datastore/mysql/migrations/tables/20230918221115_MoveDiskEncryptionSetting.go create mode 100644 server/datastore/mysql/migrations/tables/20230918221115_MoveDiskEncryptionSetting_test.go create mode 100644 server/fleet/windows_mdm.go create mode 100644 server/mdm/mdm.go rename server/mdm/{apple/cert_test.go => mdm_test.go} (99%) create mode 100644 website/api/controllers/view-integrations.js create mode 100644 website/assets/images/device-management-transparency-438x373@2x.png create mode 100644 website/assets/images/icon-checkmark-circle-green-16x16@2x.png create mode 100644 website/assets/images/icon-idp-22x28@2x.png create mode 100644 website/assets/images/icon-rest-api-35x28@2x.png create mode 100644 website/assets/images/icon-webhooks-30x28@2x.png create mode 100644 website/assets/images/logo-active-directory-169x28@2x.png create mode 100644 website/assets/images/logo-ansible-147x28@2x.png create mode 100644 website/assets/images/logo-aws-46x28@2x.png create mode 100644 website/assets/images/logo-azure-169x28@2x.png create mode 100644 website/assets/images/logo-chef-169x28@2x.png create mode 100644 website/assets/images/logo-deloitte-166x36@2x.png create mode 100644 website/assets/images/logo-elastic-82x28@2x.png create mode 100644 website/assets/images/logo-github-89x28@2x.png create mode 100644 website/assets/images/logo-gitlab-124x28@2x.png create mode 100644 website/assets/images/logo-google-chronicle-128x28@2x.png create mode 100644 website/assets/images/logo-google-cloud-174x28@2x.png create mode 100644 website/assets/images/logo-jira-185x28@2x.png create mode 100644 website/assets/images/logo-munki-101x28@2x.png create mode 100644 website/assets/images/logo-okta-85x28@2x.png create mode 100644 website/assets/images/logo-puppet-79x28@2x.png create mode 100644 website/assets/images/logo-snowflake-color-117x28@2x.png create mode 100644 website/assets/images/logo-splunk-95x28@2x.png create mode 100644 website/assets/images/logo-tines-90x28@2x.png create mode 100644 website/assets/js/pages/integrations.page.js create mode 100644 website/assets/styles/pages/integrations.less delete mode 100644 website/views/layouts/layout-landing.ejs create mode 100644 website/views/pages/integrations.ejs diff --git a/.github/workflows/build-orbit.yaml b/.github/workflows/build-orbit.yaml index 41ec1816c1..229b6612b7 100644 --- a/.github/workflows/build-orbit.yaml +++ b/.github/workflows/build-orbit.yaml @@ -2,9 +2,15 @@ name: Build, Sign and Notarize Orbit for macOS on: workflow_dispatch: # allow manual action + push: + paths: + # The workflow can be triggered by modifying ORBIT_VERSION env. + - '.github/workflows/build-orbit.yaml' pull_request: paths: - 'orbit/**.go' + # The workflow can be triggered by modifying ORBIT_VERSION env. + - '.github/workflows/build-orbit.yaml' env: ORBIT_VERSION: 1.17.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 56c28a4c98..c18bd7fe75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## Fleet 4.38.1 (Oct 5, 2023) + +### Bug Fixes + +* Fixed a bug that would cause live queries to stall if a detail query override was set for a team. + ## Fleet 4.38.0 (Sep 25, 2023) ### Changes diff --git a/CODEOWNERS b/CODEOWNERS index 4a7bc630f4..b952d8777f 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -72,7 +72,6 @@ go.mod @fleetdm/go # # (see website/config/custom.js for DRIs of other paths not listed here) ############################################################################################## -/website/views/pages/pricing.ejs @mikermcneil # « CEO is DRI for pricing /handbook/company/pricing-features-table.yml @mikermcneil # « CEO is current DRI for features table ############################################################################################## diff --git a/articles/fleet-4.37.0.md b/articles/fleet-4.37.0.md index 0f4cf5ed80..f3a2c7c37b 100644 --- a/articles/fleet-4.37.0.md +++ b/articles/fleet-4.37.0.md @@ -1,4 +1,4 @@ -# Fleet 4.37.0 | Remote script execution & Puppet support. +# Fleet 4.37.0 | Puppet support. ![Fleet 4.37.0](../website/assets/images/articles/fleet-4.37.0-1600x900@2x.png) @@ -13,11 +13,12 @@ For upgrade instructions, see our [upgrade guide](https://fleetdm.com/docs/deplo * Puppet support * Web user interface improvements + ### Vulnerability dashboard diff --git a/articles/introducing-cross-platform-script-execution.md b/articles/introducing-cross-platform-script-execution similarity index 100% rename from articles/introducing-cross-platform-script-execution.md rename to articles/introducing-cross-platform-script-execution diff --git a/changes/12927-disk-encryption-settings b/changes/12927-disk-encryption-settings new file mode 100644 index 0000000000..a9464b7d5b --- /dev/null +++ b/changes/12927-disk-encryption-settings @@ -0,0 +1 @@ +* Deprecate `mdm.macos_settings.enable_disk_encryption` in favor of `mdm.enable_disk_encryption` diff --git a/changes/12932-bitlocker-api-updates b/changes/12932-bitlocker-api-updates new file mode 100644 index 0000000000..0ce9b45e8a --- /dev/null +++ b/changes/12932-bitlocker-api-updates @@ -0,0 +1,4 @@ +- Added `GET /mdm/disk_encryption/summary` endpoint to get the disk encryption summary for macOS and + Windows devices. +- Added `os_settings` and `os_settings_disk_encryption` filters to `GET /hosts`, `GET /hosts/count`, + `GET /api/v1/fleet/labels/{id}/hosts` endpoints to filter hosts by OS settings. diff --git a/changes/12933-bitlocker-host-details-api b/changes/12933-bitlocker-host-details-api new file mode 100644 index 0000000000..ccb11df8b7 --- /dev/null +++ b/changes/12933-bitlocker-host-details-api @@ -0,0 +1 @@ +- Added `mdm.os_settings` to `GET /api/v1/hosts/{id}` response. diff --git a/changes/bug-13894-failing-policies-styling b/changes/bug-13894-failing-policies-styling new file mode 100644 index 0000000000..5bd83a7b09 --- /dev/null +++ b/changes/bug-13894-failing-policies-styling @@ -0,0 +1 @@ +* Fix styling for host details/device user failing policies call out \ No newline at end of file diff --git a/changes/issue-13953-changes-to-controls-page-for-bitlocker b/changes/issue-13953-changes-to-controls-page-for-bitlocker new file mode 100644 index 0000000000..728d93122e --- /dev/null +++ b/changes/issue-13953-changes-to-controls-page-for-bitlocker @@ -0,0 +1 @@ +- change Controls/Disk Encryption and host details page to include windows bitlocker information. diff --git a/changes/issue-13954-orbit-disk-encryption-key b/changes/issue-13954-orbit-disk-encryption-key new file mode 100644 index 0000000000..82767942ec --- /dev/null +++ b/changes/issue-13954-orbit-disk-encryption-key @@ -0,0 +1 @@ +* Added the `POST /api/fleet/orbit/disk_encryption_key` endpoint for Windows hosts to report the bitlocker encryption key. diff --git a/changes/issue-14007-support-get-windows-encryption-key b/changes/issue-14007-support-get-windows-encryption-key new file mode 100644 index 0000000000..0705f8e974 --- /dev/null +++ b/changes/issue-14007-support-get-windows-encryption-key @@ -0,0 +1 @@ +* Added support to return the decrypted disk encryption key of a Windows host. diff --git a/charts/fleet/Chart.yaml b/charts/fleet/Chart.yaml index e9d974fbcb..655c606998 100644 --- a/charts/fleet/Chart.yaml +++ b/charts/fleet/Chart.yaml @@ -8,4 +8,4 @@ version: v5.0.1 home: https://github.com/fleetdm/fleet sources: - https://github.com/fleetdm/fleet.git -appVersion: v4.38.0 +appVersion: v4.38.1 diff --git a/charts/fleet/values.yaml b/charts/fleet/values.yaml index d9394eea34..4c01fb7ab5 100644 --- a/charts/fleet/values.yaml +++ b/charts/fleet/values.yaml @@ -2,7 +2,7 @@ # All settings related to how Fleet is deployed in Kubernetes hostName: fleet.localhost replicas: 3 # The number of Fleet instances to deploy -imageTag: v4.38.0 # Version of Fleet to deploy +imageTag: v4.38.1 # Version of Fleet to deploy podAnnotations: {} # Additional annotations to add to the Fleet pod serviceAccountAnnotations: {} # Additional annotations to add to the Fleet service account resources: diff --git a/cmd/fleet/cron.go b/cmd/fleet/cron.go index 4835eb3e19..50120b0434 100644 --- a/cmd/fleet/cron.go +++ b/cmd/fleet/cron.go @@ -18,6 +18,7 @@ import ( "github.com/fleetdm/fleet/v4/server/contexts/license" "github.com/fleetdm/fleet/v4/server/datastore/mysql" "github.com/fleetdm/fleet/v4/server/fleet" + "github.com/fleetdm/fleet/v4/server/mdm" apple_mdm "github.com/fleetdm/fleet/v4/server/mdm/apple" "github.com/fleetdm/fleet/v4/server/policies" "github.com/fleetdm/fleet/v4/server/ptr" @@ -838,7 +839,7 @@ func verifyDiskEncryptionKeys( if key.UpdatedAt.After(latest) { latest = key.UpdatedAt } - if _, err := apple_mdm.DecryptBase64CMS(key.Base64Encrypted, cert.Leaf, cert.PrivateKey); err != nil { + if _, err := mdm.DecryptBase64CMS(key.Base64Encrypted, cert.Leaf, cert.PrivateKey); err != nil { undecryptable = append(undecryptable, key.HostID) continue } diff --git a/cmd/fleetctl/apply_test.go b/cmd/fleetctl/apply_test.go index 395fe0a6cd..8110239cac 100644 --- a/cmd/fleetctl/apply_test.go +++ b/cmd/fleetctl/apply_test.go @@ -1044,13 +1044,13 @@ spec: foo: qux name: Team1 mdm: + enable_disk_encryption: false macos_updates: minimum_version: 10.10.10 deadline: 1992-03-01 macos_settings: custom_settings: - %s - enable_disk_encryption: false secrets: - secret: BBB `, mobileConfigPath)) @@ -1062,9 +1062,9 @@ spec: require.Equal(t, "[+] applied 1 teams\n", runAppForTest(t, []string{"apply", "-f", name})) assert.JSONEq(t, string(json.RawMessage(`{"config":{"views":{"foo":"qux"}}}`)), string(*savedTeam.Config.AgentOptions)) assert.Equal(t, fleet.TeamMDM{ + EnableDiskEncryption: false, MacOSSettings: fleet.MacOSSettings{ - CustomSettings: []string{mobileConfigPath}, - EnableDiskEncryption: false, + CustomSettings: []string{mobileConfigPath}, }, MacOSUpdates: fleet.MacOSUpdates{ MinimumVersion: optjson.SetString("10.10.10"), @@ -1097,9 +1097,9 @@ spec: require.True(t, ds.NewJobFuncInvoked) // all left untouched, only setup assistant added assert.Equal(t, fleet.TeamMDM{ + EnableDiskEncryption: false, MacOSSettings: fleet.MacOSSettings{ - CustomSettings: []string{mobileConfigPath}, - EnableDiskEncryption: false, + CustomSettings: []string{mobileConfigPath}, }, MacOSUpdates: fleet.MacOSUpdates{ MinimumVersion: optjson.SetString("10.10.10"), @@ -1129,9 +1129,9 @@ spec: require.Equal(t, "[+] applied 1 teams\n", runAppForTest(t, []string{"apply", "-f", name})) // all left untouched, only bootstrap package added assert.Equal(t, fleet.TeamMDM{ + EnableDiskEncryption: false, MacOSSettings: fleet.MacOSSettings{ - CustomSettings: []string{mobileConfigPath}, - EnableDiskEncryption: false, + CustomSettings: []string{mobileConfigPath}, }, MacOSUpdates: fleet.MacOSUpdates{ MinimumVersion: optjson.SetString("10.10.10"), @@ -2886,7 +2886,7 @@ spec: macos_settings: enable_disk_encryption: true `, - wantErr: `Couldn't update macos_settings because MDM features aren't turned on in Fleet.`, + wantErr: `Couldn't edit enable_disk_encryption. Neither macOS MDM nor Windows is turned on`, }, { desc: "app config macos_settings.enable_disk_encryption false", diff --git a/cmd/fleetctl/get.go b/cmd/fleetctl/get.go index 3136dfd5b6..baa6cf5c61 100644 --- a/cmd/fleetctl/get.go +++ b/cmd/fleetctl/get.go @@ -13,6 +13,7 @@ import ( "time" "github.com/fatih/color" + "github.com/fleetdm/fleet/v4/pkg/rawjson" "github.com/fleetdm/fleet/v4/pkg/secure" kithttp "github.com/go-kit/kit/transport/http" "gopkg.in/guregu/null.v3" @@ -167,12 +168,15 @@ func (eacp enrichedAppConfigPresenter) MarshalJSON() ([]byte, error) { *fleet.VulnerabilitiesConfig } - return json.Marshal(&struct { - fleet.EnrichedAppConfig + enrichedJSON, err := json.Marshal(fleet.EnrichedAppConfig(eacp)) + if err != nil { + return nil, err + } + + extraFieldsJSON, err := json.Marshal(&struct { UpdateInterval UpdateIntervalConfigPresenter `json:"update_interval,omitempty"` Vulnerabilities VulnerabilitiesConfigPresenter `json:"vulnerabilities,omitempty"` }{ - EnrichedAppConfig: fleet.EnrichedAppConfig(eacp), UpdateInterval: UpdateIntervalConfigPresenter{ eacp.UpdateInterval.OSQueryDetail.String(), eacp.UpdateInterval.OSQueryPolicy.String(), @@ -184,6 +188,13 @@ func (eacp enrichedAppConfigPresenter) MarshalJSON() ([]byte, error) { eacp.Vulnerabilities, }, }) + if err != nil { + return nil, err + } + + // we need to marshal and combine both groups separately because + // enrichedAppConfig has a custom marshaler. + return rawjson.CombineRoots(enrichedJSON, extraFieldsJSON) } func printConfig(c *cli.Context, config interface{}) error { diff --git a/cmd/fleetctl/get_test.go b/cmd/fleetctl/get_test.go index a57d06413b..1872649874 100644 --- a/cmd/fleetctl/get_test.go +++ b/cmd/fleetctl/get_test.go @@ -7,7 +7,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -168,15 +167,15 @@ func TestGetTeams(t *testing.T) { }, nil } - b, err := ioutil.ReadFile(filepath.Join("testdata", "expectedGetTeamsText.txt")) + b, err := os.ReadFile(filepath.Join("testdata", "expectedGetTeamsText.txt")) require.NoError(t, err) expectedText := string(b) - b, err = ioutil.ReadFile(filepath.Join("testdata", "expectedGetTeamsYaml.yml")) + b, err = os.ReadFile(filepath.Join("testdata", "expectedGetTeamsYaml.yml")) require.NoError(t, err) expectedYaml := string(b) - b, err = ioutil.ReadFile(filepath.Join("testdata", "expectedGetTeamsJson.json")) + b, err = os.ReadFile(filepath.Join("testdata", "expectedGetTeamsJson.json")) require.NoError(t, err) // must read each JSON value separately and compact it var buf bytes.Buffer @@ -206,8 +205,8 @@ func TestGetTeams(t *testing.T) { errBuffer.Reset() actualJSON, err := runWithErrWriter([]string{"get", "teams", "--json"}, &errBuffer) require.NoError(t, err) - require.Equal(t, expectedJson, actualJSON.String()) require.Equal(t, errBuffer.String() == expiredBanner.String(), tt.shouldHaveExpiredBanner) + require.Equal(t, expectedJson, actualJSON.String()) errBuffer.Reset() actualYaml, err := runWithErrWriter([]string{"get", "teams", "--yaml"}, &errBuffer) @@ -433,7 +432,7 @@ func TestGetHosts(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - expected, err := ioutil.ReadFile(filepath.Join("testdata", tt.goldenFile)) + expected, err := os.ReadFile(filepath.Join("testdata", tt.goldenFile)) require.NoError(t, err) expectedResults := tt.scanner(string(expected)) actualResult := tt.scanner(runAppForTest(t, tt.args)) @@ -536,7 +535,7 @@ func TestGetHostsMDM(t *testing.T) { } if tt.goldenFile != "" { - expected, err := ioutil.ReadFile(filepath.Join("testdata", tt.goldenFile)) + expected, err := os.ReadFile(filepath.Join("testdata", tt.goldenFile)) require.NoError(t, err) if ext := filepath.Ext(tt.goldenFile); ext == ".json" { // the output of --json is not a json array, but a list of diff --git a/cmd/fleetctl/testdata/expectedGetConfigAppConfigJson.json b/cmd/fleetctl/testdata/expectedGetConfigAppConfigJson.json index e6ae712e28..2f0c98c740 100644 --- a/cmd/fleetctl/testdata/expectedGetConfigAppConfigJson.json +++ b/cmd/fleetctl/testdata/expectedGetConfigAppConfigJson.json @@ -85,6 +85,7 @@ "enabled_and_configured": false, "apple_bm_default_team": "", "windows_enabled_and_configured": false, + "enable_disk_encryption": false, "macos_updates": { "minimum_version": null, "deadline": null @@ -95,8 +96,7 @@ "webhook_url": "" }, "macos_settings": { - "custom_settings": null, - "enable_disk_encryption": false + "custom_settings": null }, "macos_setup": { "bootstrap_package": null, diff --git a/cmd/fleetctl/testdata/expectedGetConfigAppConfigYaml.yml b/cmd/fleetctl/testdata/expectedGetConfigAppConfigYaml.yml index 1c0d778685..e7a5843214 100644 --- a/cmd/fleetctl/testdata/expectedGetConfigAppConfigYaml.yml +++ b/cmd/fleetctl/testdata/expectedGetConfigAppConfigYaml.yml @@ -19,6 +19,7 @@ spec: enabled_and_configured: false apple_bm_default_team: "" windows_enabled_and_configured: false + enable_disk_encryption: false macos_migration: enable: false mode: "" @@ -28,7 +29,6 @@ spec: deadline: null macos_settings: custom_settings: - enable_disk_encryption: false macos_setup: bootstrap_package: enable_end_user_authentication: false diff --git a/cmd/fleetctl/testdata/expectedGetConfigIncludeServerConfigJson.json b/cmd/fleetctl/testdata/expectedGetConfigIncludeServerConfigJson.json index 2030db5afe..94c6e70a77 100644 --- a/cmd/fleetctl/testdata/expectedGetConfigIncludeServerConfigJson.json +++ b/cmd/fleetctl/testdata/expectedGetConfigIncludeServerConfigJson.json @@ -43,6 +43,7 @@ "apple_bm_enabled_and_configured": false, "enabled_and_configured": false, "windows_enabled_and_configured": false, + "enable_disk_encryption": false, "macos_updates": { "minimum_version": null, "deadline": null @@ -53,8 +54,7 @@ "webhook_url": "" }, "macos_settings": { - "custom_settings": null, - "enable_disk_encryption": false + "custom_settings": null }, "macos_setup": { "bootstrap_package": null, diff --git a/cmd/fleetctl/testdata/expectedGetConfigIncludeServerConfigYaml.yml b/cmd/fleetctl/testdata/expectedGetConfigIncludeServerConfigYaml.yml index 9d3bf00ace..1b03fe13d3 100644 --- a/cmd/fleetctl/testdata/expectedGetConfigIncludeServerConfigYaml.yml +++ b/cmd/fleetctl/testdata/expectedGetConfigIncludeServerConfigYaml.yml @@ -19,6 +19,7 @@ spec: apple_bm_terms_expired: false enabled_and_configured: false windows_enabled_and_configured: false + enable_disk_encryption: false macos_migration: enable: false mode: "" @@ -28,7 +29,6 @@ spec: deadline: null macos_settings: custom_settings: - enable_disk_encryption: false macos_setup: bootstrap_package: enable_end_user_authentication: false diff --git a/cmd/fleetctl/testdata/expectedGetTeamsJson.json b/cmd/fleetctl/testdata/expectedGetTeamsJson.json index 19152a690c..6a99943e94 100644 --- a/cmd/fleetctl/testdata/expectedGetTeamsJson.json +++ b/cmd/fleetctl/testdata/expectedGetTeamsJson.json @@ -24,13 +24,13 @@ "enable_software_inventory": true }, "mdm": { + "enable_disk_encryption": false, "macos_updates": { "minimum_version": null, "deadline": null }, "macos_settings": { - "custom_settings": null, - "enable_disk_encryption": false + "custom_settings": null }, "macos_setup": { "bootstrap_package": null, @@ -84,13 +84,13 @@ } }, "mdm": { + "enable_disk_encryption": false, "macos_updates": { "minimum_version": "12.3.1", "deadline": "2021-12-14" }, "macos_settings": { - "custom_settings": null, - "enable_disk_encryption": false + "custom_settings": null }, "macos_setup": { "bootstrap_package": null, diff --git a/cmd/fleetctl/testdata/expectedGetTeamsYaml.yml b/cmd/fleetctl/testdata/expectedGetTeamsYaml.yml index 2b571ae8b5..a6905cf569 100644 --- a/cmd/fleetctl/testdata/expectedGetTeamsYaml.yml +++ b/cmd/fleetctl/testdata/expectedGetTeamsYaml.yml @@ -7,12 +7,12 @@ spec: enable_host_users: true enable_software_inventory: true mdm: + enable_disk_encryption: false macos_updates: minimum_version: null deadline: null macos_settings: custom_settings: - enable_disk_encryption: false macos_setup: bootstrap_package: enable_end_user_authentication: false @@ -36,12 +36,12 @@ spec: enable_host_users: false enable_software_inventory: false mdm: + enable_disk_encryption: false macos_updates: minimum_version: "12.3.1" deadline: "2021-12-14" macos_settings: custom_settings: - enable_disk_encryption: false macos_setup: bootstrap_package: enable_end_user_authentication: false diff --git a/cmd/fleetctl/testdata/macosSetupExpectedAppConfigEmpty.yml b/cmd/fleetctl/testdata/macosSetupExpectedAppConfigEmpty.yml index 4fc311a8dd..d641e98b0a 100644 --- a/cmd/fleetctl/testdata/macosSetupExpectedAppConfigEmpty.yml +++ b/cmd/fleetctl/testdata/macosSetupExpectedAppConfigEmpty.yml @@ -19,13 +19,13 @@ spec: apple_bm_terms_expired: false enabled_and_configured: true windows_enabled_and_configured: false + enable_disk_encryption: false macos_migration: enable: false mode: "" webhook_url: "" macos_settings: custom_settings: null - enable_disk_encryption: false macos_setup: bootstrap_package: null enable_end_user_authentication: false diff --git a/cmd/fleetctl/testdata/macosSetupExpectedAppConfigSet.yml b/cmd/fleetctl/testdata/macosSetupExpectedAppConfigSet.yml index 72b5d2c599..433d80c586 100644 --- a/cmd/fleetctl/testdata/macosSetupExpectedAppConfigSet.yml +++ b/cmd/fleetctl/testdata/macosSetupExpectedAppConfigSet.yml @@ -19,13 +19,13 @@ spec: apple_bm_terms_expired: false enabled_and_configured: true windows_enabled_and_configured: false + enable_disk_encryption: false macos_migration: enable: false mode: "" webhook_url: "" macos_settings: custom_settings: null - enable_disk_encryption: false macos_setup: bootstrap_package: %s enable_end_user_authentication: false diff --git a/cmd/fleetctl/testdata/macosSetupExpectedTeam1And2Empty.yml b/cmd/fleetctl/testdata/macosSetupExpectedTeam1And2Empty.yml index 346bbc2eb7..a3668e64b3 100644 --- a/cmd/fleetctl/testdata/macosSetupExpectedTeam1And2Empty.yml +++ b/cmd/fleetctl/testdata/macosSetupExpectedTeam1And2Empty.yml @@ -7,9 +7,9 @@ spec: enable_host_users: true enable_software_inventory: true mdm: + enable_disk_encryption: false macos_settings: custom_settings: null - enable_disk_encryption: false macos_setup: bootstrap_package: null enable_end_user_authentication: false @@ -27,9 +27,9 @@ spec: enable_host_users: true enable_software_inventory: true mdm: + enable_disk_encryption: false macos_settings: custom_settings: null - enable_disk_encryption: false macos_setup: bootstrap_package: null macos_setup_assistant: null diff --git a/cmd/fleetctl/testdata/macosSetupExpectedTeam1And2Set.yml b/cmd/fleetctl/testdata/macosSetupExpectedTeam1And2Set.yml index 45f1733019..95e49d0321 100644 --- a/cmd/fleetctl/testdata/macosSetupExpectedTeam1And2Set.yml +++ b/cmd/fleetctl/testdata/macosSetupExpectedTeam1And2Set.yml @@ -7,9 +7,9 @@ spec: enable_host_users: true enable_software_inventory: true mdm: + enable_disk_encryption: false macos_settings: custom_settings: null - enable_disk_encryption: false macos_setup: bootstrap_package: %s enable_end_user_authentication: false @@ -27,9 +27,9 @@ spec: enable_host_users: false enable_software_inventory: false mdm: + enable_disk_encryption: false macos_settings: custom_settings: null - enable_disk_encryption: false macos_setup: bootstrap_package: %s macos_setup_assistant: %s diff --git a/cmd/fleetctl/testdata/macosSetupExpectedTeam1Empty.yml b/cmd/fleetctl/testdata/macosSetupExpectedTeam1Empty.yml index 21d9b9d8db..8ad10fc6c5 100644 --- a/cmd/fleetctl/testdata/macosSetupExpectedTeam1Empty.yml +++ b/cmd/fleetctl/testdata/macosSetupExpectedTeam1Empty.yml @@ -7,9 +7,9 @@ spec: enable_host_users: false enable_software_inventory: false mdm: + enable_disk_encryption: false macos_settings: custom_settings: null - enable_disk_encryption: false macos_setup: bootstrap_package: null enable_end_user_authentication: false diff --git a/docs/Configuration/configuration-files/README.md b/docs/Configuration/configuration-files/README.md index 9cc12b3321..8b8f34b8cf 100644 --- a/docs/Configuration/configuration-files/README.md +++ b/docs/Configuration/configuration-files/README.md @@ -529,8 +529,10 @@ Use with caution as this may break Fleet ingestion of hosts data. ```yaml features: detail_query_overrides: - # null allows to disable the "users" query from running on hosts. + # null disables the "users" query from running on hosts. users: null + # "" disables the "disk_encryption_linux" query from running on hosts. + disk_encryption_linux: "" # this replaces the hardcoded "mdm" detail query. mdm: "SELECT enrolled, server_url, installed_from_dep, payload_identifier FROM mdm;" ``` diff --git a/docs/Contributing/API-for-contributors.md b/docs/Contributing/API-for-contributors.md index 7724b770b7..ddefdb2e9a 100644 --- a/docs/Contributing/API-for-contributors.md +++ b/docs/Contributing/API-for-contributors.md @@ -533,6 +533,7 @@ The MDM endpoints exist to support the related command-line interface sub-comman - [Complete SSO during DEP enrollment](#complete-sso-during-dep-enrollment) - [Preassign profiles to devices](#preassign-profiles-to-devices) - [Match preassigned profiles](#match-preassigned-profiles) +- [Get FileVault statistics](#get-filevault-statistics) ### Generate Apple DEP Key Pair @@ -701,6 +702,44 @@ This endpoint stores a profile to be assigned to a host at some point in the fut `Status: 204` +### Get FileVault statistics + +_Available in Fleet Premium_ + +Get aggregate status counts of disk encryption enforced on macOS hosts. + +The summary can optionally be filtered by team id. + +`GET /api/v1/fleet/mdm/apple/filevault/summary` + +#### Parameters + +| Name | Type | In | Description | +| ------------------------- | ------ | ----- | ------------------------------------------------------------------------- | +| team_id | string | query | _Available in Fleet Premium_ The team id to filter the summary. | + +#### Example + +Get aggregate status counts of Apple disk encryption profiles applying to macOS hosts enrolled to Fleet's MDM that are not assigned to any team. + +`GET /api/v1/fleet/mdm/apple/filevault/summary` + +##### Default response + +`Status: 200` + +```json +{ + "verified": 123, + "verifying": 123, + "action_required": 123, + "enforcing": 123, + "failed": 123, + "removing_enforcement": 123 +} +``` + + ### Match preassigned profiles _Available in Fleet Premium_ @@ -2291,7 +2330,9 @@ Gets all information required by Fleet Desktop, this includes things like the nu { "failing_policies_count": 3, "notifications": { - "needs_mdm_migration": true + "needs_mdm_migration": true, + "renew_enrollment_profile": false, + "enforce_bitlocker_encryption": false, }, "config": { "org_info": { @@ -2313,6 +2354,7 @@ In regards to the `notifications` key: - `needs_mdm_migration` means that the device fits all the requirements to allow the user to initiate an MDM migration to Fleet. - `renew_enrollment_profile` means that the device is currently unmanaged from MDM but should be DEP enrolled into Fleet. +- `enforce_bitlocker_encryption` applies only to Windows devices and means that it should encrypt the disk and report the encryption key back to Fleet. #### Get device's policies diff --git a/docs/Contributing/FAQ.md b/docs/Contributing/FAQ.md index 3d3f69c92b..c7522aa537 100644 --- a/docs/Contributing/FAQ.md +++ b/docs/Contributing/FAQ.md @@ -93,6 +93,7 @@ If you also have Fleetd running on hosts, it will need access to these API endpo * `/api/fleet/orbit/ping` * `/api/fleet/orbit/scripts/request` * `/api/fleet/orbit/scripts/result` +* `/api/fleet/orbit/disk_encryption_key` * `/api/osquery/log` diff --git a/docs/Get started/anatomy.md b/docs/Get started/anatomy.md index 757c9614a1..7bc314d245 100644 --- a/docs/Get started/anatomy.md +++ b/docs/Get started/anatomy.md @@ -12,7 +12,7 @@ Fleetctl (pronouced “fleet control”) is a CLI (command line interface) tool ## Fleetd -Fleetd is a bundle of agents provided by Fleet to gather information about your devices. Fleetd includes [osquery](https://www.osquery.io/), Orbit, and Fleet Desktop. [Docs](https://fleetdm.com/docs/using-fleet/fleet-ui). +Fleetd is a bundle of agents provided by Fleet to gather information about your devices. Fleetd includes [osquery](https://www.osquery.io/), Orbit, and Fleet Desktop. [Docs](https://fleetdm.com/docs/using-fleet/fleetd). ## Osquery Osquery is an open-source tool for gathering information about the state of any device that the osquery agent has been installed on. [Learn more](https://www.osquery.io/). diff --git a/docs/REST API/rest-api.md b/docs/REST API/rest-api.md index a40f5daa39..753288389a 100644 --- a/docs/REST API/rest-api.md +++ b/docs/REST API/rest-api.md @@ -1829,14 +1829,14 @@ the `software` table. | page | integer | query | Page number of the results to fetch. | | per_page | integer | query | Results per page. | | order_key | string | query | What to order results by. Can be any column in the hosts table. | -| after | string | query | The value to get results after. This needs `order_key` defined, as that's the column that would be used. **Note:** Use `page` instead of `after`. | -| order_direction | string | query | **Requires `order_key`**. The direction of the order given the order key. Options include `asc` and `desc`. Default is `asc`. | -| status | string | query | Indicates the status of the hosts to return. Can either be `new`, `online`, `offline`, `mia` or `missing`. | -| query | string | query | Search query keywords. Searchable fields include `hostname`, `machine_serial`, `uuid`, `ipv4` and the hosts' email addresses (only searched if the query looks like an email address, i.e. contains an `@`, no space, etc.). | -| additional_info_filters | string | query | A comma-delimited list of fields to include in each host's additional information object. See [Fleet Configuration Options](https://fleetdm.com/docs/using-fleet/fleetctl-cli#fleet-configuration-options) for an example configuration with hosts' additional information. Use `*` to get all stored fields. | +| after | string | query | The value to get results after. This needs `order_key` defined, as that's the column that would be used. **Note:** Use `page` instead of `after` | +| order_direction | string | query | **Requires `order_key`**. The direction of the order given the order key. Options include 'asc' and 'desc'. Default is 'asc'. | +| status | string | query | Indicates the status of the hosts to return. Can either be 'new', 'online', 'offline', 'mia' or 'missing'. | +| query | string | query | Search query keywords. Searchable fields include `hostname`, `machine_serial`, `uuid`, `ipv4` and the hosts' email addresses (only searched if the query looks like an email address, i.e. contains an '@', no space, etc.). | +| additional_info_filters | string | query | A comma-delimited list of fields to include in each host's additional information object. See [Fleet Configuration Options](https://fleetdm.com/docs/using-fleet/fleetctl-cli#fleet-configuration-options) for an example configuration with hosts' additional information. Use '*' to get all stored fields. | | team_id | integer | query | _Available in Fleet Premium_ Filters the hosts to only include hosts in the specified team. | | policy_id | integer | query | The ID of the policy to filter hosts by. | -| policy_response | string | query | Valid options are `passing` or `failing`. `policy_id` must also be specified with `policy_response`. | +| policy_response | string | query | Valid options are 'passing' or 'failing'. `policy_id` must also be specified with `policy_response`. | | software_id | integer | query | The ID of the software to filter hosts by. | | os_id | integer | query | The ID of the operating system to filter hosts by. | | os_name | string | query | The name of the operating system to filter hosts by. `os_version` must also be specified with `os_name` | @@ -1849,8 +1849,11 @@ the `software` table. | munki_issue_id | integer | query | The ID of the _munki issue_ (a Munki-reported error or warning message) to filter hosts by (that is, filter hosts that are affected by that corresponding error or warning message). | | low_disk_space | integer | query | _Available in Fleet Premium_ Filters the hosts to only include hosts with less GB of disk space available than this value. Must be a number between 1-100. | | disable_failing_policies| boolean | query | If "true", hosts will return failing policies as 0 regardless of whether there are any that failed for the host. This is meant to be used when increased performance is needed in exchange for the extra information. | -| macos_settings_disk_encryption | string | query | Filters the hosts by the status of the macOS disk encryption MDM profile on the host. Can be one of `verified`, `verifying`, `action_required`, `enforcing`, `failed`, or `removing_enforcement`. | -| bootstrap_package | string | query | _Available in Fleet Premium_ Filters the hosts by the status of the MDM bootstrap package on the host. Can be one of `installed`, `pending`, or `failed`. | +| macos_settings_disk_encryption | string | query | Filters the hosts by the status of the macOS disk encryption MDM profile on the host. Can be one of 'verified', 'verifying', 'action_required', 'enforcing', 'failed', or 'removing_enforcement'. | +| bootstrap_package | string | query | _Available in Fleet Premium_ Filters the hosts by the status of the MDM bootstrap package on the host. Can be one of 'installed', 'pending', or 'failed'. | +| os_settings | string | query | Filters the hosts by the status of the operating system settings applied to the hosts. Can be one of 'verified', 'verifying', 'pending', or 'failed'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | +| os_settings_disk_encryption | string | query | Filters the hosts by the status of the disk encryption setting applied to the hosts. Can be one of 'verified', 'verifying', 'action_required', 'enforcing', 'failed', or 'removing_enforcement'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | + If `additional_info_filters` is not specified, no `additional` information will be returned. @@ -1858,9 +1861,9 @@ If `software_id` is specified, an additional top-level key `"software"` is retur If `mdm_id` is specified, an additional top-level key `"mobile_device_management_solution"` is returned with the information corresponding to the `mdm_id`. -If `mdm_id`, `mdm_name` or `mdm_enrollment_status` is specified, then Windows Servers are excluded from the results. +If `mdm_id`, `mdm_name`, `mdm_enrollment_status`, `os_settings`, or `os_settings_disk_encryption` is specified, then Windows Servers are excluded from the results. -If `munki_issue_id` is specified, an additional top-level key `"munki_issue"` is returned with the information corresponding to the `munki_issue_id`. +If `munki_issue_id` is specified, an additional top-level key `munki_issue` is returned with the information corresponding to the `munki_issue_id`. If `after` is being used with `created_at` or `updated_at`, the table must be specified in `order_key`. Those columns become `h.created_at` and `h.updated_at`. @@ -1988,13 +1991,13 @@ Response payload with the `munki_issue_id` filter provided: | Name | Type | In | Description | | ----------------------- | ------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | order_key | string | query | What to order results by. Can be any column in the hosts table. | -| order_direction | string | query | **Requires `order_key`**. The direction of the order given the order key. Options include `asc` and `desc`. Default is `asc`. | +| order_direction | string | query | **Requires `order_key`**. The direction of the order given the order key. Options include 'asc' and 'desc'. Default is 'asc'. | | after | string | query | The value to get results after. This needs `order_key` defined, as that's the column that would be used. | -| status | string | query | Indicates the status of the hosts to return. Can either be `new`, `online`, `offline`, `mia` or `missing`. | -| query | string | query | Search query keywords. Searchable fields include `hostname`, `machine_serial`, `uuid`, `ipv4` and the hosts' email addresses (only searched if the query looks like an email address, i.e. contains an `@`, no space, etc.). | +| status | string | query | Indicates the status of the hosts to return. Can either be 'new', 'online', 'offline', 'mia' or 'missing'. | +| query | string | query | Search query keywords. Searchable fields include `hostname`, `machine_serial`, `uuid`, `ipv4` and the hosts' email addresses (only searched if the query looks like an email address, i.e. contains an '@', no space, etc.). | | team_id | integer | query | _Available in Fleet Premium_ Filters the hosts to only include hosts in the specified team. | | policy_id | integer | query | The ID of the policy to filter hosts by. | -| policy_response | string | query | Valid options are `passing` or `failing`. `policy_id` must also be specified with `policy_response`. | +| policy_response | string | query | Valid options are 'passing' or 'failing'. `policy_id` must also be specified with `policy_response`. | | software_id | integer | query | The ID of the software to filter hosts by. | | os_id | integer | query | The ID of the operating system to filter hosts by. | | os_name | string | query | The name of the operating system to filter hosts by. `os_version` must also be specified with `os_name` | @@ -2006,8 +2009,10 @@ Response payload with the `munki_issue_id` filter provided: | macos_settings | string | query | Filters the hosts by the status of the _mobile device management_ (MDM) profiles applied to hosts. Can be one of 'verified', 'verifying', 'pending', or 'failed'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | | munki_issue_id | integer | query | The ID of the _munki issue_ (a Munki-reported error or warning message) to filter hosts by (that is, filter hosts that are affected by that corresponding error or warning message). | | low_disk_space | integer | query | _Available in Fleet Premium_ Filters the hosts to only include hosts with less GB of disk space available than this value. Must be a number between 1-100. | -| macos_settings_disk_encryption | string | query | Filters the hosts by the status of the macOS disk encryption MDM profile on the host. Can be one of `verified`, `verifying`, `action_required`, `enforcing`, `failed`, or `removing_enforcement`. | -| bootstrap_package | string | query | _Available in Fleet Premium_ Filters the hosts by the status of the MDM bootstrap package on the host. Can be one of `installed`, `pending`, or `failed`. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | +| macos_settings_disk_encryption | string | query | Filters the hosts by the status of the macOS disk encryption MDM profile on the host. Can be one of 'verified', 'verifying', 'action_required', 'enforcing', 'failed', or 'removing_enforcement'. | +| bootstrap_package | string | query | _Available in Fleet Premium_ Filters the hosts by the status of the MDM bootstrap package on the host. Can be one of 'installed', 'pending', or 'failed'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | +| os_settings | string | query | Filters the hosts by the status of the operating system settings applied to the hosts. Can be one of 'verified', 'verifying', 'pending', or 'failed'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | +| os_settings_disk_encryption | string | query | Filters the hosts by the status of the disk encryption setting applied to the hosts. Can be one of 'verified', 'verifying', 'action_required', 'enforcing', 'failed', or 'removing_enforcement'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | If `additional_info_filters` is not specified, no `additional` information will be returned. @@ -2555,6 +2560,9 @@ Returns the information of the host specified using the `uuid`, `osquery_host_id "bootstrap_package_status": "installed", "detail": "" }, + "os_settings": { + "disk_encryption": null + }, "profiles": [ { "profile_id": 999, @@ -2743,6 +2751,9 @@ This is the API route used by the **My device** page in Fleet desktop to display "detail": "", "bootstrap_package_name": "test.pkg" }, + "os_settings": { + "disk_encryption": null + }, "profiles": [ { "profile_id": 999, @@ -3291,12 +3302,12 @@ requested by a web browser. | format | string | query | **Required**, must be "csv" (only supported format for now). | | columns | string | query | Comma-delimited list of columns to include in the report (returns all columns if none is specified). | | order_key | string | query | What to order results by. Can be any column in the hosts table. | -| order_direction | string | query | **Requires `order_key`**. The direction of the order given the order key. Options include `asc` and `desc`. Default is `asc`. | -| status | string | query | Indicates the status of the hosts to return. Can either be `new`, `online`, `offline`, `mia` or `missing`. | +| order_direction | string | query | **Requires `order_key`**. The direction of the order given the order key. Options include 'asc' and 'desc'. Default is 'asc'. | +| status | string | query | Indicates the status of the hosts to return. Can either be 'new', 'online', 'offline', 'mia' or 'missing'. | | query | string | query | Search query keywords. Searchable fields include `hostname`, `machine_serial`, `uuid`, `ipv4` and the hosts' email addresses (only searched if the query looks like an email address, i.e. contains an `@`, no space, etc.). | | team_id | integer | query | _Available in Fleet Premium_ Filters the hosts to only include hosts in the specified team. | | policy_id | integer | query | The ID of the policy to filter hosts by. | -| policy_response | string | query | Valid options are `passing` or `failing`. `policy_id` must also be specified with `policy_response`. **Note: If `policy_id` is specified _without_ including `policy_response`, this will also return hosts where the policy is not configured to run or failed to run.** | +| policy_response | string | query | Valid options are 'passing' or 'failing'. `policy_id` must also be specified with `policy_response`. **Note: If `policy_id` is specified _without_ including `policy_response`, this will also return hosts where the policy is not configured to run or failed to run.** | | software_id | integer | query | The ID of the software to filter hosts by. | | os_id | integer | query | The ID of the operating system to filter hosts by. | | os_name | string | query | The name of the operating system to filter hosts by. `os_version` must also be specified with `os_name` | @@ -3308,7 +3319,7 @@ requested by a web browser. | munki_issue_id | integer | query | The ID of the _munki issue_ (a Munki-reported error or warning message) to filter hosts by (that is, filter hosts that are affected by that corresponding error or warning message). | | low_disk_space | integer | query | _Available in Fleet Premium_ Filters the hosts to only include hosts with less GB of disk space available than this value. Must be a number between 1-100. | | label_id | integer | query | A valid label ID. Can only be used in combination with `order_key`, `order_direction`, `status`, `query` and `team_id`. | -| bootstrap_package | string | query | _Available in Fleet Premium_ Filters the hosts by the status of the MDM bootstrap package on the host. Can be one of `installed`, `pending`, or `failed`. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | +| bootstrap_package | string | query | _Available in Fleet Premium_ Filters the hosts by the status of the MDM bootstrap package on the host. Can be one of 'installed', 'pending', or 'failed'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | | disable_failing_policies | boolean | query | If `true`, hosts will return failing policies as 0 (returned as the `issues` column) regardless of whether there are any that failed for the host. This is meant to be used when increased performance is needed in exchange for the extra information. | If `mdm_id`, `mdm_name` or `mdm_enrollment_status` is specified, then Windows Servers are excluded from the results. @@ -3330,7 +3341,7 @@ created_at,updated_at,id,detail_updated_at,label_updated_at,policy_updated_at,la ### Get host's disk encryption key -Requires the [macadmins osquery extension](https://github.com/macadmins/osquery-extension) which comes bundled +For macOS, requires the [macadmins osquery extension](https://github.com/macadmins/osquery-extension) which comes bundled in [Fleet's osquery installers](https://fleetdm.com/docs/using-fleet/adding-hosts#osquery-installer). Requires Fleet's MDM properly [enabled and configured](https://fleetdm.com/docs/using-fleet/mdm-macos-setup). @@ -3724,9 +3735,9 @@ Returns a list of the hosts that belong to the specified label. | page | integer | query | Page number of the results to fetch. | | per_page | integer | query | Results per page. | | order_key | string | query | What to order results by. Can be any column in the hosts table. | -| order_direction | string | query | **Requires `order_key`**. The direction of the order given the order key. Options include `asc` and `desc`. Default is `asc`. | +| order_direction | string | query | **Requires `order_key`**. The direction of the order given the order key. Options include 'asc' and 'desc'. Default is 'asc'. | | after | string | query | The value to get results after. This needs `order_key` defined, as that's the column that would be used. | -| status | string | query | Indicates the status of the hosts to return. Can either be `new`, `online`, `offline`, `mia` or `missing`. | +| status | string | query | Indicates the status of the hosts to return. Can either be 'new', 'online', 'offline', 'mia' or 'missing'. | | query | string | query | Search query keywords. Searchable fields include `hostname`, `machine_serial`, `uuid`, and `ipv4`. | | team_id | integer | query | _Available in Fleet Premium_ Filters the hosts to only include hosts in the specified team. | | disable_failing_policies | boolean | query | If "true", hosts will return failing policies as 0 regardless of whether there are any that failed for the host. This is meant to be used when increased performance is needed in exchange for the extra information. | @@ -3735,10 +3746,12 @@ Returns a list of the hosts that belong to the specified label. | mdm_enrollment_status | string | query | The _mobile device management_ (MDM) enrollment status to filter hosts by. Can be one of 'manual', 'automatic', 'enrolled', 'pending', or 'unenrolled'. | | macos_settings | string | query | Filters the hosts by the status of the _mobile device management_ (MDM) profiles applied to hosts. Can be one of 'verified', 'verifying', 'pending', or 'failed'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | | low_disk_space | integer | query | _Available in Fleet Premium_ Filters the hosts to only include hosts with less GB of disk space available than this value. Must be a number between 1-100. | -| macos_settings_disk_encryption | string | query | Filters the hosts by the status of the macOS disk encryption MDM profile on the host. Can be one of `verified`, `verifying`, `action_required`, `enforcing`, `failed`, or `removing_enforcement`. | -| bootstrap_package | string | query | _Available in Fleet Premium_ Filters the hosts by the status of the MDM bootstrap package on the host. Can be one of `installed`, `pending`, or `failed`. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | +| macos_settings_disk_encryption | string | query | Filters the hosts by the status of the macOS disk encryption MDM profile on the host. Can be one of 'verified', 'verifying', 'action_required', 'enforcing', 'failed', or 'removing_enforcement'. | +| bootstrap_package | string | query | _Available in Fleet Premium_ Filters the hosts by the status of the MDM bootstrap package on the host. Can be one of 'installed', 'pending', or 'failed'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | +| os_settings | string | query | Filters the hosts by the status of the operating system settings applied to the hosts. Can be one of 'verified', 'verifying', 'pending', or 'failed'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | +| os_settings_disk_encryption | string | query | Filters the hosts by the status of the disk encryption setting applied to the hosts. Can be one of 'verified', 'verifying', 'action_required', 'enforcing', 'failed', or 'removing_enforcement'. **Note: If this filter is used in Fleet Premium without a team id filter, the results include only hosts that are not assigned to any team.** | -If `mdm_id`, `mdm_name` or `mdm_enrollment_status` is specified, then Windows Servers are excluded from the results. +If `mdm_id`, `mdm_name`, `mdm_enrollment_status`, `os_settings`, or `os_settings_disk_encryption` is specified, then Windows Servers are excluded from the results. #### Example @@ -4090,23 +4103,23 @@ _Available in Fleet Premium_ _Available in Fleet Premium_ -Get aggregate status counts of disk encryption enforced on hosts. +Get aggregate status counts of disk encryption enforced on macOS and Windows hosts. The summary can optionally be filtered by team id. -`GET /api/v1/fleet/mdm/apple/filevault/summary` +`GET /api/v1/fleet/mdm/disk_encryption/summary` #### Parameters | Name | Type | In | Description | | ------------------------- | ------ | ----- | ------------------------------------------------------------------------- | -| team_id | string | query | _Available in Fleet Premium_ The team id to filter the summary. | +| team_id | string | query | _Available in Fleet Premium_ The team id to filter the summary. | #### Example -Get aggregate status counts of Apple disk encryption profiles applying to macOS hosts enrolled to Fleet's MDM that are not assigned to any team. +Get aggregate disk encryption status counts of macOS and Windows hosts enrolled to Fleet's MDM that are not assigned to any team. -`GET /api/v1/fleet/mdm/apple/filevault/summary` +`GET /api/v1/fleet/mdm/disk_encryption/summary` ##### Default response @@ -4114,12 +4127,12 @@ Get aggregate status counts of Apple disk encryption profiles applying to macOS ```json { - "verified": 123, - "verifying": 123, - "action_required": 123, - "enforcing": 123, - "failed": 123, - "removing_enforcement": 123 + "verified": {"macos": 123, "windows": 123}, + "verifying": {"macos": 123, "windows": 0}, + "action_required": {"macos": 123, "windows": 0}, + "enforcing": {"macos": 123, "windows": 123}, + "failed": {"macos": 123, "windows": 123}, + "removing_enforcement": {"macos": 123, "windows": 0}, } ``` @@ -6600,7 +6613,8 @@ Deletes the session specified by ID. When the user associated with the session n "epss_probability": 0.01537, "cisa_known_exploit": false, "cve_published": "2022-01-01 12:32:00", - "cve_description": "In the GNU C Library (aka glibc or libc6) before 2.28, parse_reg_exp in posix/regcomp.c misparses alternatives, which allows attackers to cause a denial of service (assertion failure and application exit) or trigger an incorrect result by attempting a regular-expression match." + "cve_description": "In the GNU C Library (aka glibc or libc6) before 2.28, parse_reg_exp in posix/regcomp.c misparses alternatives, which allows attackers to cause a denial of service (assertion failure and application exit) or trigger an incorrect result by attempting a regular-expression match.", + "resolved_in_version": "2.28" } ], "hosts_count": 1 diff --git a/docs/Using Fleet/CIS-Benchmarks.md b/docs/Using Fleet/CIS-Benchmarks.md index 5d92bc4607..632caf0ae6 100644 --- a/docs/Using Fleet/CIS-Benchmarks.md +++ b/docs/Using Fleet/CIS-Benchmarks.md @@ -170,127 +170,11 @@ The following CIS benchmark checks cannot be automated and must be addressed man Fleet's policies have been written against v1.12.0 of the benchmark. You can refer to the [CIS website](https://www.cisecurity.org/cis-benchmarks) for full details about this version. -### Checks that require a Group Policy Template +### Checks that require a Group Policy template -38 items require Group Policy Template in place in order to audit them. +Several items require Group Policy templates in place in order to audit them. These items are tagged with the label `CIS_group_policy_template_required` in the YAML file, and details about the required Group Policy templates can be found in each item's `resolution`. -``` -18.3.1 CIS - Ensure 'Apply UAC restrictions to local accounts on network logons' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Apply UAC restrictions to local accounts on network logons' - -18.3.2 CIS - Ensure 'Configure SMB v1 client driver' is set to 'Enabled: Disable driver (recommended)' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Configure SMB v1 client driver' - -18.3.3 CIS - Ensure 'Configure SMB v1 server' is set to 'Disabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Configure SMB v1 server' - -18.3.4 CIS - Ensure 'Enable Structured Exception Handling Overwrite Protection (SEHOP)' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Enable Structured Exception Handling Overwrite Protection (SEHOP)' - -18.3.5 CIS - Ensure 'Limits print driver installation to Administrators' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\Limits print driver installation to Administrators' - -18.3.6 CIS - Ensure 'NetBT NodeType configuration' is set to 'Enabled: P-node (recommended)' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\NetBT NodeType configuration' - -18.3.7 CIS - Ensure 'WDigest Authentication' is set to 'Disabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MS Security Guide\WDigest Authentication (disabling may require KB2871997)' - -18.4.1 CIS - Ensure 'MSS: (AutoAdminLogon) Enable Automatic Logon (not recommended)' is set to 'Disabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (AutoAdminLogon) Enable Automatic Logon (not recommended)' - -18.4.2 CIS - Ensure 'MSS: (DisableIPSourceRouting IPv6) IP source routing protection level (protects against packet spoofing)' is set to 'Enabled: Highest protection, source routing is completely disabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (DisableIPSourceRouting IPv6) IP source routing protection level (protects against packet spoofing)' - -18.4.3 CIS - Ensure 'MSS: (DisableIPSourceRouting) IP source routing protection level (protects against packet spoofing)' is set to 'Enabled: Highest protection, source routing is completely disabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (DisableIPSourceRouting) IP source routing protection level (protects against packet spoofing)' - -18.4.4 CIS - Ensure 'MSS: (DisableSavePassword) Prevent the dial-up password from being saved' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS:(DisableSavePassword) Prevent the dial-up password from being saved' - -18.4.5 CIS - Ensure 'MSS: (EnableICMPRedirect) Allow ICMP redirects to override OSPF generated routes' is set to 'Disabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (EnableICMPRedirect) Allow ICMP redirects to override OSPF generated routes' - -18.4.6 CIS - Ensure 'MSS: (KeepAliveTime) How often keep-alive packets are sent in milliseconds' is set to 'Enabled: 300,000 or 5 minutes' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (KeepAliveTime) How often keep-alive packets are sent in milliseconds' - -18.4.7 CIS - Ensure 'MSS: (NoNameReleaseOnDemand) Allow the computer to ignore NetBIOS name release requests except from WINS servers' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (NoNameReleaseOnDemand) Allow the computer to ignore NetBIOS name release requests except from WINS servers' - -18.4.8 CIS - Ensure 'MSS: (PerformRouterDiscovery) Allow IRDP to detect and configure Default Gateway addresses (could lead to DoS)' is set to 'Disabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (PerformRouterDiscovery) Allow IRDP to detect and configure Default Gateway addresses (could lead to DoS)' - -18.4.9 CIS - Ensure 'MSS: (SafeDllSearchMode) Enable Safe DLL search mode (recommended)' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (SafeDllSearchMode) Enable Safe DLL search mode (recommended)' - -18.4.10 CIS - Ensure 'MSS: (ScreenSaverGracePeriod) The time in seconds before the screen saver grace period expires (0 recommended)' is set to 'Enabled: 5 or fewer seconds' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (ScreenSaverGracePeriod) The time in seconds before the screen saver grace period expires (0 recommended)' - -18.4.11 CIS - Ensure 'MSS: (TcpMaxDataRetransmissions IPv6) How many times unacknowledged data is retransmitted' is set to 'Enabled: 3' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS:(TcpMaxDataRetransmissions IPv6) How many times unacknowledged data is retransmitted' - -18.4.12 CIS - Ensure 'MSS: (TcpMaxDataRetransmissions) How many times unacknowledged data is retransmitted' is set to 'Enabled: 3' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS:(TcpMaxDataRetransmissions) How many times unacknowledged data is retransmitted' - -18.4.13 CIS - Ensure 'MSS: (WarningLevel) Percentage threshold for the security event log at which the system will generate a warning' is set to 'Enabled: 90% or less' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\MSS (Legacy)\MSS: (WarningLevel) Percentage threshold for the security event log at which the system will generate a warning' - -18.8.21.2 CIS - Ensure 'Configure registry policy processing: Do not apply during periodic background processing' is set to 'Enabled: FALSE' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Group Policy\Configure registry policy processing' - -18.8.22.1.1 CIS - Ensure 'Turn off access to the Store' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off access to the Store' - -18.8.22.1.2 CIS - Ensure 'Turn off downloading of print drivers over HTTP' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off downloading of print drivers over HTTP' - -18.8.22.1.3 CIS - Ensure 'Turn off handwriting personalization data sharing' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off handwriting personalization data sharing' - -18.8.22.1.4 CIS - Ensure 'Turn off handwriting recognition error reporting' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off handwriting recognition error reporting' - -18.8.22.1.5 CIS - Ensure 'Turn off Internet Connection Wizard if URL connection is referring to Microsoft.com' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Internet Connection Wizard if URL connection is referring to Microsoft.com' - -18.8.22.1.6 CIS - Ensure 'Turn off Internet download for Web publishing and online ordering wizards' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Internet download for Web publishing and online ordering wizards' - -18.8.22.1.7 CIS - Ensure 'Turn off printing over HTTP' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off printing over HTTP' - -18.8.22.1.8 CIS - Ensure 'Turn off Registration if URL connection is referring to Microsoft.com' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Registration if URL connection is referring to Microsoft.com' - -18.8.22.1.9 CIS - Ensure 'Turn off Search Companion content file updates' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Search Companion content file updates' - -18.8.22.1.10 CIS - Ensure 'Turn off the "Order Prints" picture task' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the "Order Prints" picture task' - -18.8.22.1.11 CIS - Ensure 'Turn off the "Publish to Web" task for files and folders' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the "Publish to Web" task for files and folders' - -18.8.22.1.12 CIS - Ensure 'Turn off the Windows Messenger Customer Experience Improvement Program' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off the Windows Messenger Customer Experience Improvement Program' - -18.8.22.1.13 CIS - Ensure 'Turn off Windows Customer Experience Improvement Program' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Windows Customer Experience Improvement Program' - -18.8.22.1.14 CIS - Ensure 'Turn off Windows Error Reporting' is set to 'Enabled' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Internet Communication Management\Internet Communication settings\Turn off Windows Error Reporting' - -18.8.25.1 CIS - Ensure 'Support device authentication using certificate' is set to 'Enabled: Automatic' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Kerberos\Support device authentication using certificate' - -18.8.26.1 CIS - Ensure 'Enumeration policy for external devices incompatible with Kernel DMA Protection' is set to 'Enabled: Block All' -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Kernel DMA Protection\Enumeration policy for external devices incompatible with Kernel DMA Protection' - -18.8.27.1 CIS - Ensure 'Disallow copying of user input methods to the system account for sign-in' is set to 'Enabled' (Automated) -Requires this GPO in place: 'Computer Configuration\Policies\Administrative Templates\System\Locale Services\Disallow copying of user input methods to the system account for sign-in' -``` - ## Performance testing In August 2023, we completed scale testing on 10k Windows hosts and 70k macOS hosts. Ultimately, we validated both server and host performance at that scale. diff --git a/docs/Using Fleet/manage-access.md b/docs/Using Fleet/manage-access.md index 48c1a21526..90774c86e1 100644 --- a/docs/Using Fleet/manage-access.md +++ b/docs/Using Fleet/manage-access.md @@ -75,7 +75,7 @@ GitOps is an API-only and write-only role that can be used on CI/CD pipelines. | View Apple mobile device management (MDM) certificate information | | | | ✅ | | | View Apple business manager (BM) information | | | | ✅ | | | Generate Apple mobile device management (MDM) certificate signing request (CSR) | | | | ✅ | | -| View disk encryption key for macOS hosts | ✅ | ✅ | ✅ | ✅ | | +| View disk encryption key for macOS and Windows hosts | ✅ | ✅ | ✅ | ✅ | | | Create edit and delete configuration profiles for macOS hosts | | | ✅ | ✅ | ✅ | | Execute MDM commands on macOS and Windows hosts*** | | | ✅ | ✅ | | | View results of MDM commands executed on macOS and Windows hosts*** | ✅ | ✅ | ✅ | ✅ | | diff --git a/ee/server/service/mdm.go b/ee/server/service/mdm.go index afd304a6c8..37cf537218 100644 --- a/ee/server/service/mdm.go +++ b/ee/server/service/mdm.go @@ -15,6 +15,7 @@ import ( "strings" "github.com/fleetdm/fleet/v4/pkg/file" + "github.com/fleetdm/fleet/v4/pkg/optjson" "github.com/fleetdm/fleet/v4/server/authz" "github.com/fleetdm/fleet/v4/server/contexts/ctxdb" "github.com/fleetdm/fleet/v4/server/contexts/ctxerr" @@ -890,12 +891,7 @@ func (svc *Service) getOrCreatePreassignTeam(ctx context.Context, groups []strin } payload.MDM = &fleet.TeamPayloadMDM{ - MacOSSettings: &fleet.MacOSSettings{ - // teams created by the match endpoint have disk encryption - // enabled by default. - // TODO: maybe make this configurable? - EnableDiskEncryption: true, - }, + EnableDiskEncryption: optjson.SetBool(true), MacOSSetup: &fleet.MacOSSetup{ MacOSSetupAssistant: ac.MDM.MacOSSetup.MacOSSetupAssistant, // NOTE: BootstrapPackage is currently ignored by svc.ModifyTeam and gets set @@ -968,3 +964,51 @@ func teamNameFromPreassignGroups(groups []string) string { return strings.Join(groups, " - ") } + +func (svc *Service) GetMDMDiskEncryptionSummary(ctx context.Context, teamID *uint) (*fleet.MDMDiskEncryptionSummary, error) { + // TODO: Consider adding a new generic OSSetting type or Windows-specific type for authz checks + // like this. + if err := svc.authz.Authorize(ctx, fleet.MDMAppleConfigProfile{TeamID: teamID}, fleet.ActionRead); err != nil { + return nil, ctxerr.Wrap(ctx, err) + } + var macOS fleet.MDMAppleFileVaultSummary + if m, err := svc.ds.GetMDMAppleFileVaultSummary(ctx, teamID); err != nil { + return nil, ctxerr.Wrap(ctx, err, "getting filevault summary") + } else if m != nil { + macOS = *m + } + + var windows fleet.MDMWindowsBitLockerSummary + if w, err := svc.ds.GetMDMWindowsBitLockerSummary(ctx, teamID); err != nil { + return nil, ctxerr.Wrap(ctx, err, "getting bitlocker summary") + } else if w != nil { + windows = *w + } + + return &fleet.MDMDiskEncryptionSummary{ + Verified: fleet.MDMPlatformsCounts{ + MacOS: macOS.Verified, + Windows: windows.Verified, + }, + Verifying: fleet.MDMPlatformsCounts{ + MacOS: macOS.Verifying, + Windows: windows.Verifying, + }, + ActionRequired: fleet.MDMPlatformsCounts{ + MacOS: macOS.ActionRequired, + Windows: windows.ActionRequired, + }, + Enforcing: fleet.MDMPlatformsCounts{ + MacOS: macOS.Enforcing, + Windows: windows.Enforcing, + }, + Failed: fleet.MDMPlatformsCounts{ + MacOS: macOS.Failed, + Windows: windows.Failed, + }, + RemovingEnforcement: fleet.MDMPlatformsCounts{ + MacOS: macOS.RemovingEnforcement, + Windows: windows.RemovingEnforcement, + }, + }, nil +} diff --git a/ee/server/service/teams.go b/ee/server/service/teams.go index 33a777323f..529408de47 100644 --- a/ee/server/service/teams.go +++ b/ee/server/service/teams.go @@ -150,13 +150,13 @@ func (svc *Service) ModifyTeam(ctx context.Context, teamID uint, payload fleet.T } } - if payload.MDM.MacOSSettings != nil { - if !appCfg.MDM.EnabledAndConfigured && payload.MDM.MacOSSettings.EnableDiskEncryption { + if payload.MDM.EnableDiskEncryption.Valid { + macOSDiskEncryptionUpdated = team.Config.MDM.EnableDiskEncryption != payload.MDM.EnableDiskEncryption.Value + if macOSDiskEncryptionUpdated && !appCfg.MDM.EnabledAndConfigured { return nil, fleet.NewInvalidArgumentError("macos_settings.enable_disk_encryption", `Couldn't update macos_settings because MDM features aren't turned on in Fleet. Use fleetctl generate mdm-apple and then fleet serve with mdm configuration to turn on MDM features.`) } - macOSDiskEncryptionUpdated = team.Config.MDM.MacOSSettings.EnableDiskEncryption != payload.MDM.MacOSSettings.EnableDiskEncryption - team.Config.MDM.MacOSSettings.EnableDiskEncryption = payload.MDM.MacOSSettings.EnableDiskEncryption + team.Config.MDM.EnableDiskEncryption = payload.MDM.EnableDiskEncryption.Value } if payload.MDM.MacOSSetup != nil { @@ -225,7 +225,7 @@ func (svc *Service) ModifyTeam(ctx context.Context, teamID uint, payload fleet.T } if macOSDiskEncryptionUpdated { var act fleet.ActivityDetails - if team.Config.MDM.MacOSSettings.EnableDiskEncryption { + if team.Config.MDM.EnableDiskEncryption { act = fleet.ActivityTypeEnabledMacosDiskEncryption{TeamID: &team.ID, TeamName: &team.Name} if err := svc.MDMAppleEnableFileVaultAndEscrow(ctx, &team.ID); err != nil { return nil, ctxerr.Wrap(ctx, err, "enable team filevault and escrow") @@ -802,6 +802,17 @@ func (svc *Service) createTeamFromSpec( `Couldn't update macos_setup because MDM features aren't turned on in Fleet. Use fleetctl generate mdm-apple and then fleet serve with mdm configuration to turn on MDM features.`)) } } + enableDiskEncryption := spec.MDM.EnableDiskEncryption.Value + if !spec.MDM.EnableDiskEncryption.Valid { + if de := macOSSettings.DeprecatedEnableDiskEncryption; de != nil { + enableDiskEncryption = *de + } + } + + if enableDiskEncryption && !defaults.MDM.AtLeastOnePlatformEnabledAndConfigured() { + return nil, ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("mdm", + `Couldn't edit enable_disk_encryption. Neither macOS MDM nor Windows is turned on. Visit https://fleetdm.com/docs/using-fleet to learn how to turn on MDM.`)) + } if dryRun { return &fleet.Team{Name: spec.Name}, nil @@ -813,9 +824,10 @@ func (svc *Service) createTeamFromSpec( AgentOptions: agentOptions, Features: features, MDM: fleet.TeamMDM{ - MacOSUpdates: spec.MDM.MacOSUpdates, - MacOSSettings: macOSSettings, - MacOSSetup: macOSSetup, + EnableDiskEncryption: enableDiskEncryption, + MacOSUpdates: spec.MDM.MacOSUpdates, + MacOSSettings: macOSSettings, + MacOSSetup: macOSSetup, }, }, Secrets: secrets, @@ -824,7 +836,7 @@ func (svc *Service) createTeamFromSpec( return nil, err } - if macOSSettings.EnableDiskEncryption { + if enableDiskEncryption && defaults.MDM.EnabledAndConfigured { if err := svc.MDMAppleEnableFileVaultAndEscrow(ctx, &tm.ID); err != nil { return nil, ctxerr.Wrap(ctx, err, "enable team filevault and escrow") } @@ -871,11 +883,23 @@ func (svc *Service) editTeamFromSpec( team.Config.MDM.MacOSUpdates = spec.MDM.MacOSUpdates } - oldMacOSDiskEncryption := team.Config.MDM.MacOSSettings.EnableDiskEncryption + oldMacOSDiskEncryption := team.Config.MDM.EnableDiskEncryption if err := svc.applyTeamMacOSSettings(ctx, spec, &team.Config.MDM.MacOSSettings); err != nil { return err } - newMacOSDiskEncryption := team.Config.MDM.MacOSSettings.EnableDiskEncryption + + // 1. if the spec has the new setting, use that + // 2. else if the spec has the deprecated setting, use that + // 3. otherwise, leave the setting untouched + if spec.MDM.EnableDiskEncryption.Valid { + team.Config.MDM.EnableDiskEncryption = spec.MDM.EnableDiskEncryption.Value + } else if de := team.Config.MDM.MacOSSettings.DeprecatedEnableDiskEncryption; de != nil { + team.Config.MDM.EnableDiskEncryption = *de + } + if team.Config.MDM.EnableDiskEncryption && !appCfg.MDM.AtLeastOnePlatformEnabledAndConfigured() { + return ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("mdm", + `Couldn't edit enable_disk_encryption. Neither macOS MDM nor Windows is turned on. Visit https://fleetdm.com/docs/using-fleet to learn how to turn on MDM.`)) + } oldMacOSSetup := team.Config.MDM.MacOSSetup if spec.MDM.MacOSSetup.MacOSSetupAssistant.Set || spec.MDM.MacOSSetup.BootstrapPackage.Set { @@ -925,9 +949,9 @@ func (svc *Service) editTeamFromSpec( return err } } - if oldMacOSDiskEncryption != newMacOSDiskEncryption { + if appCfg.MDM.EnabledAndConfigured && oldMacOSDiskEncryption != team.Config.MDM.EnableDiskEncryption { var act fleet.ActivityDetails - if team.Config.MDM.MacOSSettings.EnableDiskEncryption { + if team.Config.MDM.EnableDiskEncryption { act = fleet.ActivityTypeEnabledMacosDiskEncryption{TeamID: &team.ID, TeamName: &team.Name} if err := svc.MDMAppleEnableFileVaultAndEscrow(ctx, &team.ID); err != nil { return ctxerr.Wrap(ctx, err, "enable team filevault and escrow") @@ -982,7 +1006,7 @@ func (svc *Service) applyTeamMacOSSettings(ctx context.Context, spec *fleet.Team } if (setFields["custom_settings"] && len(applyUpon.CustomSettings) > 0) || - (setFields["enable_disk_encryption"] && applyUpon.EnableDiskEncryption) { + (setFields["enable_disk_encryption"] && *applyUpon.DeprecatedEnableDiskEncryption) { field := "custom_settings" if !setFields["custom_settings"] { field = "enable_disk_encryption" @@ -1016,8 +1040,8 @@ func unmarshalWithGlobalDefaults(b *json.RawMessage) (fleet.Features, error) { func (svc *Service) updateTeamMDMAppleSettings(ctx context.Context, tm *fleet.Team, payload fleet.MDMAppleSettingsPayload) error { var didUpdate, didUpdateMacOSDiskEncryption bool if payload.EnableDiskEncryption != nil { - if tm.Config.MDM.MacOSSettings.EnableDiskEncryption != *payload.EnableDiskEncryption { - tm.Config.MDM.MacOSSettings.EnableDiskEncryption = *payload.EnableDiskEncryption + if tm.Config.MDM.EnableDiskEncryption != *payload.EnableDiskEncryption { + tm.Config.MDM.EnableDiskEncryption = *payload.EnableDiskEncryption didUpdate = true didUpdateMacOSDiskEncryption = true } @@ -1029,7 +1053,7 @@ func (svc *Service) updateTeamMDMAppleSettings(ctx context.Context, tm *fleet.Te } if didUpdateMacOSDiskEncryption { var act fleet.ActivityDetails - if tm.Config.MDM.MacOSSettings.EnableDiskEncryption { + if tm.Config.MDM.EnableDiskEncryption { act = fleet.ActivityTypeEnabledMacosDiskEncryption{TeamID: &tm.ID, TeamName: &tm.Name} if err := svc.MDMAppleEnableFileVaultAndEscrow(ctx, &tm.ID); err != nil { return ctxerr.Wrap(ctx, err, "enable team filevault and escrow") diff --git a/frontend/__mocks__/configMock.ts b/frontend/__mocks__/configMock.ts index 9f9e8f638c..7b5131a2da 100644 --- a/frontend/__mocks__/configMock.ts +++ b/frontend/__mocks__/configMock.ts @@ -126,6 +126,7 @@ const DEFAULT_CONFIG_MOCK: IConfig = { }, fleet_desktop: { transparency_url: "https://fleetdm.com/transparency" }, mdm: { + enable_disk_encryption: false, windows_enabled_and_configured: true, apple_bm_default_team: "Apples", apple_bm_enabled_and_configured: true, diff --git a/frontend/__mocks__/hostMock.ts b/frontend/__mocks__/hostMock.ts index c2e0993649..6834d0c703 100644 --- a/frontend/__mocks__/hostMock.ts +++ b/frontend/__mocks__/hostMock.ts @@ -1,7 +1,7 @@ import { IHost } from "interfaces/host"; -import { IHostMacMdmProfile } from "interfaces/mdm"; +import { IHostMdmProfile } from "interfaces/mdm"; -const DEFAULT_HOST_PROFILE_MOCK: IHostMacMdmProfile = { +const DEFAULT_HOST_PROFILE_MOCK: IHostMdmProfile = { profile_id: 1, name: "Test Profile", operation_type: "install", @@ -10,8 +10,8 @@ const DEFAULT_HOST_PROFILE_MOCK: IHostMacMdmProfile = { }; export const createMockHostMacMdmProfile = ( - overrides?: Partial -): IHostMacMdmProfile => { + overrides?: Partial +): IHostMdmProfile => { return { ...DEFAULT_HOST_PROFILE_MOCK, ...overrides }; }; @@ -53,6 +53,11 @@ const DEFAULT_HOST_MOCK: IHost = { enrollment_status: "Off", server_url: "https://www.example.com/1", profiles: [], + os_settings: { + disk_encryption: { + status: null, + }, + }, macos_settings: { disk_encryption: null, action_required: null, diff --git a/frontend/__mocks__/mdmMock.ts b/frontend/__mocks__/mdmMock.ts index c0584bf66a..5ffebcdbc3 100644 --- a/frontend/__mocks__/mdmMock.ts +++ b/frontend/__mocks__/mdmMock.ts @@ -36,6 +36,11 @@ const DEFAULT_HOST_MDM_DATA: IHostMdmData = { name: "MDM Solution", id: 1, profiles: [], + os_settings: { + disk_encryption: { + status: "verified", + }, + }, macos_settings: { disk_encryption: null, action_required: null, diff --git a/frontend/components/InfoBanner/InfoBanner.tsx b/frontend/components/InfoBanner/InfoBanner.tsx index f1af1558b5..1e02b38b6e 100644 --- a/frontend/components/InfoBanner/InfoBanner.tsx +++ b/frontend/components/InfoBanner/InfoBanner.tsx @@ -3,6 +3,7 @@ import classNames from "classnames"; import Icon from "components/Icon"; import Button from "components/buttons/Button"; +import { IconNames } from "components/icons"; const baseClass = "info-banner"; @@ -11,28 +12,36 @@ export interface IInfoBannerProps { className?: string; /** default light purple */ color?: "purple" | "purple-bold-border" | "yellow" | "grey"; + /** default 4px */ + borderRadius?: "large" | "xlarge"; pageLevel?: boolean; /** cta and link are mutually exclusive */ cta?: JSX.Element; /** closable and link are mutually exclusive */ closable?: boolean; link?: string; + icon?: IconNames; } const InfoBanner = ({ children, className, color = "purple", + borderRadius, pageLevel, cta, closable, link, + icon, }: IInfoBannerProps): JSX.Element => { const wrapperClasses = classNames( baseClass, `${baseClass}__${color}`, { + [`${baseClass}__${color}`]: !!color, + [`${baseClass}__border-radius-${borderRadius}`]: !!borderRadius, [`${baseClass}__page-banner`]: !!pageLevel, + [`${baseClass}__icon`]: !!icon, }, className ); @@ -42,6 +51,7 @@ const InfoBanner = ({ const content = ( <>
{children}
+ {(cta || closable) && (
{cta} diff --git a/frontend/components/InfoBanner/_styles.scss b/frontend/components/InfoBanner/_styles.scss index f5977b57f5..81635a1062 100644 --- a/frontend/components/InfoBanner/_styles.scss +++ b/frontend/components/InfoBanner/_styles.scss @@ -34,6 +34,20 @@ width: auto; } + &__border-radius-large { + border-radius: $border-radius-large; + } + + &__border-radius-xlarge { + border-radius: $border-radius-xlarge; + } + + &__info { + display: flex; + flex-direction: column; + gap: $pad-small; + } + &__cta { display: flex; align-items: center; @@ -59,4 +73,8 @@ } } } + + p { + margin: 0; + } } diff --git a/frontend/components/StatusIndicatorWithIcon/StatusIndicatorWithIcon.tsx b/frontend/components/StatusIndicatorWithIcon/StatusIndicatorWithIcon.tsx index e510748a7a..95ae8d5659 100644 --- a/frontend/components/StatusIndicatorWithIcon/StatusIndicatorWithIcon.tsx +++ b/frontend/components/StatusIndicatorWithIcon/StatusIndicatorWithIcon.tsx @@ -23,7 +23,10 @@ interface IStatusIndicatorWithIconProps { tooltipText: string | JSX.Element; position?: "top" | "bottom"; }; + layout?: "horizontal" | "vertical"; className?: string; + /** Classname to add to the value text */ + valueClassName?: string; } const statusIconNameMapping: Record = { @@ -38,13 +41,18 @@ const StatusIndicatorWithIcon = ({ status, value, tooltip, + layout = "horizontal", className, + valueClassName, }: IStatusIndicatorWithIconProps) => { const classNames = classnames(baseClass, className); const id = `status-${uniqueId()}`; + const valueClasses = classnames(`${baseClass}__value`, valueClassName, { + [`${baseClass}__value-vertical`]: layout === "vertical", + }); const valueContent = ( - + {value} diff --git a/frontend/components/StatusIndicatorWithIcon/_styles.scss b/frontend/components/StatusIndicatorWithIcon/_styles.scss index 6dea8de697..12d60c0f2d 100644 --- a/frontend/components/StatusIndicatorWithIcon/_styles.scss +++ b/frontend/components/StatusIndicatorWithIcon/_styles.scss @@ -1,4 +1,5 @@ .status-indicator-with-icon { + // default layout is horizontal &__value { display: inline-flex; align-items: center; @@ -8,4 +9,10 @@ margin-right: $pad-xsmall; } } + + // overrides for different layout + &__value-vertical { + flex-direction: column; + gap: $pad-xsmall; + } } diff --git a/frontend/interfaces/config.ts b/frontend/interfaces/config.ts index 1d42508ee4..cf15ccca64 100644 --- a/frontend/interfaces/config.ts +++ b/frontend/interfaces/config.ts @@ -1,95 +1,11 @@ /* Config interface is a flattened version of the fleet/config API response */ - import { IWebhookHostStatus, IWebhookFailingPolicies, IWebhookSoftwareVulnerabilities, } from "interfaces/webhook"; -import PropTypes from "prop-types"; import { IIntegrations } from "./integration"; -export default PropTypes.shape({ - org_name: PropTypes.string, - org_logo_url: PropTypes.string, - contact_url: PropTypes.string, - server_url: PropTypes.string, - live_query_disabled: PropTypes.bool, - enable_analytics: PropTypes.bool, - enable_smtp: PropTypes.bool, - configured: PropTypes.bool, - sender_address: PropTypes.string, - server: PropTypes.string, - port: PropTypes.number, - authentication_type: PropTypes.string, - user_name: PropTypes.string, - password: PropTypes.string, - enable_ssl_tls: PropTypes.bool, - authentication_method: PropTypes.string, - domain: PropTypes.string, - verify_sll_certs: PropTypes.bool, - enable_start_tls: PropTypes.bool, - entity_id: PropTypes.string, - idp_image_url: PropTypes.string, - metadata: PropTypes.string, - metadata_url: PropTypes.string, - idp_name: PropTypes.string, - enable_sso: PropTypes.bool, - enable_sso_idp_login: PropTypes.bool, - enable_jit_provisioning: PropTypes.bool, - host_expiry_enabled: PropTypes.bool, - host_expiry_window: PropTypes.number, - agent_options: PropTypes.string, - tier: PropTypes.string, - organization: PropTypes.string, - device_count: PropTypes.number, - expiration: PropTypes.string, - mdm: PropTypes.shape({ - enabled_and_configured: PropTypes.bool, - apple_bm_terms_expired: PropTypes.bool, - apple_bm_enabled_and_configured: PropTypes.bool, - windows_enabled_and_configured: PropTypes.bool, - macos_updates: PropTypes.shape({ - minimum_version: PropTypes.string, - deadline: PropTypes.string, - }), - }), - note: PropTypes.string, - // vulnerability_settings: PropTypes.any, TODO - enable_host_status_webhook: PropTypes.bool, - destination_url: PropTypes.string, - host_percentage: PropTypes.number, - days_count: PropTypes.number, - logging: PropTypes.shape({ - debug: PropTypes.bool, - json: PropTypes.bool, - result: PropTypes.shape({ - plugin: PropTypes.string, - config: PropTypes.shape({ - status_log_file: PropTypes.string, - result_log_file: PropTypes.string, - enable_log_rotation: PropTypes.bool, - enable_log_compression: PropTypes.bool, - }), - }), - status: PropTypes.shape({ - plugin: PropTypes.string, - config: PropTypes.shape({ - status_log_file: PropTypes.string, - result_log_file: PropTypes.string, - enable_log_rotation: PropTypes.bool, - enable_log_compression: PropTypes.bool, - }), - }), - }), - email: PropTypes.shape({ - backend: PropTypes.string, - config: PropTypes.shape({ - region: PropTypes.string, - source_arn: PropTypes.string, - }), - }), -}); - export interface ILicense { tier: string; device_count: number; @@ -113,6 +29,7 @@ export interface IMacOsMigrationSettings { } export interface IMdmConfig { + enable_disk_encryption: boolean; enabled_and_configured: boolean; apple_bm_default_team?: string; apple_bm_terms_expired: boolean; @@ -286,7 +203,10 @@ export interface IConfig { }; }; mdm: IMdmConfig; - mdm_enabled?: boolean; // TODO: remove when windows MDM is released. Only used for windows MDM dev currently. + /** This is the flag that determines if the windwos mdm feature flag is enabled. + TODO: WINDOWS FEATURE FLAG: remove when windows MDM is released. Only used for windows MDM dev currently. + */ + mdm_enabled?: boolean; } export interface IWebhookSettings { diff --git a/frontend/interfaces/host.ts b/frontend/interfaces/host.ts index 1927351b7d..ebfde247f4 100644 --- a/frontend/interfaces/host.ts +++ b/frontend/interfaces/host.ts @@ -8,9 +8,10 @@ import hostQueryResult from "./campaign"; import queryStatsInterface, { IQueryStats } from "./query_stats"; import { ILicense, IDeviceGlobalConfig } from "./config"; import { - IHostMacMdmProfile, + IHostMdmProfile, MdmEnrollmentStatus, BootstrapPackageStatus, + DiskEncryptionStatus, } from "./mdm"; export default PropTypes.shape({ @@ -90,18 +91,16 @@ export interface IMunkiData { version: string; } -type MacDiskEncryptionState = - | "applied" - | "action_required" - | "enforcing" - | "failed" - | "removing_enforcement" - | null; - type MacDiskEncryptionActionRequired = "log_out" | "rotate_key" | null; +export interface IOSSettings { + disk_encryption: { + status: DiskEncryptionStatus | null; + }; +} + interface IMdmMacOsSettings { - disk_encryption: MacDiskEncryptionState | null; + disk_encryption: DiskEncryptionStatus | null; action_required: MacDiskEncryptionActionRequired | null; } @@ -117,7 +116,8 @@ export interface IHostMdmData { name?: string; server_url: string | null; id?: number; - profiles: IHostMacMdmProfile[] | null; + profiles: IHostMdmProfile[] | null; + os_settings?: IOSSettings; macos_settings?: IMdmMacOsSettings; macos_setup?: IMdmMacOsSetup; } @@ -210,7 +210,7 @@ export interface IHost { osquery_version: string; os_version: string; build: string; - platform_like: string; + platform_like: string; // TODO: replace with more specific union type code_name: string; uptime: number; memory: number; diff --git a/frontend/interfaces/mdm.ts b/frontend/interfaces/mdm.ts index 25f0f0d7ec..1120e1ab62 100644 --- a/frontend/interfaces/mdm.ts +++ b/frontend/interfaces/mdm.ts @@ -22,8 +22,6 @@ export const MDM_ENROLLMENT_STATUS = { export type MdmEnrollmentStatus = keyof typeof MDM_ENROLLMENT_STATUS; -export type ProfileSummaryResponse = Record; - export interface IMdmStatusCardData { status: MdmEnrollmentStatus; hosts: number; @@ -74,16 +72,15 @@ export type MdmProfileStatus = "verified" | "verifying" | "pending" | "failed"; export type MacMdmProfileOperationType = "remove" | "install"; -export interface IHostMacMdmProfile { +export interface IHostMdmProfile { profile_id: number; name: string; - // identifier?: string; // TODO: add when API is updated to return this - operation_type: MacMdmProfileOperationType; + operation_type: MacMdmProfileOperationType | null; status: MdmProfileStatus; detail: string; } -export type FileVaultProfileStatus = +export type DiskEncryptionStatus = | "verified" | "verifying" | "action_required" @@ -91,9 +88,18 @@ export type FileVaultProfileStatus = | "failed" | "removing_enforcement"; -// // TODO: update when list profiles API returns identifier -// export const FLEET_FILEVAULT_PROFILE_IDENTIFIER = -// "com.fleetdm.fleet.mdm.filevault"; +/** Currently windows disk enxryption status will only be one of these four +values. In the future we may add more. */ +export type IWindowsDiskEncryptionStatus = Extract< + DiskEncryptionStatus, + "verified" | "verifying" | "enforcing" | "failed" +>; + +export const isWindowsDiskEncryptionStatus = ( + status: DiskEncryptionStatus +): status is IWindowsDiskEncryptionStatus => { + return !["action_required", "removing_enforcement"].includes(status); +}; export const FLEET_FILEVAULT_PROFILE_DISPLAY_NAME = "Disk encryption"; diff --git a/frontend/interfaces/team.ts b/frontend/interfaces/team.ts index 3c06c11c36..4487dba48d 100644 --- a/frontend/interfaces/team.ts +++ b/frontend/interfaces/team.ts @@ -44,6 +44,7 @@ export interface ITeam extends ITeamSummary { secrets?: IEnrollSecret[]; role?: UserRole; // role value is included when the team is in the context of a user mdm?: { + enable_disk_encryption: boolean; macos_updates: { minimum_version: string; deadline: string; diff --git a/frontend/pages/LoginSuccessfulPage/_styles.scss b/frontend/pages/LoginSuccessfulPage/_styles.scss index 07e1429fa7..b3b962d3c9 100644 --- a/frontend/pages/LoginSuccessfulPage/_styles.scss +++ b/frontend/pages/LoginSuccessfulPage/_styles.scss @@ -3,7 +3,7 @@ margin-top: 20px; padding: $pad-xxlarge; text-align: center; - border-radius: 10px; + border-radius: $border-radius-xlarge; z-index: 0; align-self: center; transform: translateY(80px); diff --git a/frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/AggregateMacSettingsIndicators.tsx b/frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/AggregateMacSettingsIndicators.tsx deleted file mode 100644 index 7c4b490601..0000000000 --- a/frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/AggregateMacSettingsIndicators.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import React from "react"; - -import paths from "router/paths"; -import { buildQueryStringFromParams } from "utilities/url"; -import { MdmProfileStatus, ProfileSummaryResponse } from "interfaces/mdm"; -import MacSettingsIndicator from "pages/hosts/details/MacSettingsIndicator"; - -import { IconNames } from "components/icons"; -import Spinner from "components/Spinner"; - -const baseClass = "aggregate-mac-settings-indicators"; - -interface IAggregateDisplayOption { - value: MdmProfileStatus; - text: string; - iconName: IconNames; - tooltipText: string; -} - -const AGGREGATE_STATUS_DISPLAY_OPTIONS: IAggregateDisplayOption[] = [ - { - value: "verified", - text: "Verified", - iconName: "success", - tooltipText: - "These hosts installed all configuration profiles. Fleet verified with osquery.", - }, - { - value: "verifying", - text: "Verifying", - iconName: "success-partial", - tooltipText: - "These hosts acknowledged all MDM commands to install configuration profiles. " + - "Fleet is verifying the profiles are installed with osquery.", - }, - { - value: "pending", - text: "Pending", - iconName: "pending-partial", - tooltipText: - "These hosts will receive MDM commands to install configuration profiles when the hosts come online.", - }, - { - value: "failed", - text: "Failed", - iconName: "error", - tooltipText: - "These hosts failed to install configuration profiles. Click on a host to view error(s).", - }, -]; - -interface AggregateMacSettingsIndicatorsProps { - isLoading: boolean; - teamId: number; - aggregateProfileStatusData?: ProfileSummaryResponse; -} - -const AggregateMacSettingsIndicators = ({ - isLoading, - teamId, - aggregateProfileStatusData, -}: AggregateMacSettingsIndicatorsProps) => { - const indicators = AGGREGATE_STATUS_DISPLAY_OPTIONS.map((status) => { - if (!aggregateProfileStatusData) return null; - - const { value, text, iconName, tooltipText } = status; - const count = aggregateProfileStatusData[value]; - - return ( - - ); - }); - - if (isLoading) { - return ( -
- -
- ); - } - - return
{indicators}
; -}; - -export default AggregateMacSettingsIndicators; diff --git a/frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/index.ts b/frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/index.ts deleted file mode 100644 index 1032f0ac50..0000000000 --- a/frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./AggregateMacSettingsIndicators"; diff --git a/frontend/pages/ManageControlsPage/OSSettings/OSSettings.tsx b/frontend/pages/ManageControlsPage/OSSettings/OSSettings.tsx index dddbffc048..9eb28475ba 100644 --- a/frontend/pages/ManageControlsPage/OSSettings/OSSettings.tsx +++ b/frontend/pages/ManageControlsPage/OSSettings/OSSettings.tsx @@ -4,12 +4,11 @@ import { useQuery } from "react-query"; import { AppContext } from "context/app"; import SideNav from "pages/admin/components/SideNav"; -import { ProfileSummaryResponse } from "interfaces/mdm"; import { API_NO_TEAM_ID, APP_CONTEXT_NO_TEAM_ID } from "interfaces/team"; import mdmAPI from "services/entities/mdm"; import OS_SETTINGS_NAV_ITEMS from "./OSSettingsNavItems"; -import AggregateMacSettingsIndicators from "./AggregateMacSettingsIndicators"; +import ProfileStatusAggregate from "./ProfileStatusAggregate"; import TurnOnMdmMessage from "../components/TurnOnMdmMessage"; const baseClass = "os-settings"; @@ -40,9 +39,10 @@ const OSSettings = ({ data: aggregateProfileStatusData, refetch: refetchAggregateProfileStatus, isLoading: isLoadingAggregateProfileStatus, - } = useQuery( + } = useQuery( ["aggregateProfileStatuses", teamId], - () => mdmAPI.getAggregateProfileStatuses(teamId), + () => + mdmAPI.getAggregateProfileStatuses(teamId, config?.mdm_enabled ?? false), { refetchOnWindowFocus: false, retry: false, @@ -50,7 +50,10 @@ const OSSettings = ({ ); // MDM is not on so show messaging for user to enable it. - if (!config?.mdm.enabled_and_configured) { + if ( + !config?.mdm.enabled_and_configured && + !config?.mdm.windows_enabled_and_configured + ) { return ; } @@ -67,7 +70,7 @@ const OSSettings = ({

Remotely enforce settings on macOS hosts assigned to this team.

- { + const generateFilterHostsByStatusLink = () => { + return `${paths.MANAGE_HOSTS}?${buildQueryStringFromParams({ + team_id: teamId, + macos_settings: statusValue, + })}`; + }; + + return ( + + ); +}; + +interface ProfileStatusAggregateProps { + isLoading: boolean; + teamId: number; + aggregateProfileStatusData?: ProfileStatusSummaryResponse; +} + +const ProfileStatusAggregate = ({ + isLoading, + teamId, + aggregateProfileStatusData, +}: ProfileStatusAggregateProps) => { + if (!aggregateProfileStatusData) return null; + + if (isLoading) { + return ( +
+ +
+ ); + } + + const indicators = AGGREGATE_STATUS_DISPLAY_OPTIONS.map((status) => { + const { value, text, iconName, tooltipText } = status; + const count = aggregateProfileStatusData[value]; + + return ( + + ); + }); + + return
{indicators}
; +}; + +export default ProfileStatusAggregate; diff --git a/frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/ProfileStatusAggregateOptions.ts b/frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/ProfileStatusAggregateOptions.ts new file mode 100644 index 0000000000..8dbe94abf8 --- /dev/null +++ b/frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/ProfileStatusAggregateOptions.ts @@ -0,0 +1,43 @@ +import { MdmProfileStatus } from "interfaces/mdm"; +import { IndicatorStatus } from "components/StatusIndicatorWithIcon/StatusIndicatorWithIcon"; + +interface IAggregateDisplayOption { + value: MdmProfileStatus; + text: string; + iconName: IndicatorStatus; + tooltipText: string; +} + +const AGGREGATE_STATUS_DISPLAY_OPTIONS: IAggregateDisplayOption[] = [ + { + value: "verified", + text: "Verified", + iconName: "success", + tooltipText: + "These hosts applied all OS settings. Fleet verified with osquery.", + }, + { + value: "verifying", + text: "Verifying", + iconName: "successPartial", + tooltipText: + "These hosts acknowledged all MDM commands to apply OS settings. " + + "Fleet is verifying the OS settings are applied with osquery.", + }, + { + value: "pending", + text: "Pending", + iconName: "pendingPartial", + tooltipText: + "These hosts will receive MDM command to apply OS settings when the host come online.", + }, + { + value: "failed", + text: "Failed", + iconName: "error", + tooltipText: + "These host failed to apply the latest OS settings. Click on a host to view error(s).", + }, +]; + +export default AGGREGATE_STATUS_DISPLAY_OPTIONS; diff --git a/frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/_styles.scss b/frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/_styles.scss similarity index 73% rename from frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/_styles.scss rename to frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/_styles.scss index 7665954493..89744cf6cc 100644 --- a/frontend/pages/ManageControlsPage/OSSettings/AggregateMacSettingsIndicators/_styles.scss +++ b/frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/_styles.scss @@ -1,16 +1,16 @@ -.aggregate-mac-settings-indicators { +.profile-status-aggregate { display: flex; height: 94px; border-top: 1px solid #e2e4ea; border-bottom: 1px solid #e2e4ea; border-left: 1px solid #e2e4ea; - border-radius: 6px; + border-radius: $border-radius-large; &__loading-spinner { margin: auto; } - .aggregate-mac-settings-indicator { + &__profile-status-count { flex-grow: 1; display: flex; @@ -29,13 +29,17 @@ font-weight: $regular; } - .settings-indicator { + .profile-status-indicator { flex-direction: column; } } - .aggregate-mac-settings-indicator:last-child { + &__profile-status-count:last-child { border-top-right-radius: 6px; border-bottom-right-radius: 6px; } + + &__status-indicator-value { + font-weight: $bold; + } } diff --git a/frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/index.ts b/frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/index.ts new file mode 100644 index 0000000000..a29bd5e10d --- /dev/null +++ b/frontend/pages/ManageControlsPage/OSSettings/ProfileStatusAggregate/index.ts @@ -0,0 +1 @@ +export { default } from "./ProfileStatusAggregate"; diff --git a/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/DiskEncryption.tsx b/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/DiskEncryption.tsx index 6edd4f35f5..c8cd1d2bc3 100644 --- a/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/DiskEncryption.tsx +++ b/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/DiskEncryption.tsx @@ -31,7 +31,7 @@ const DiskEncryption = ({ const defaultShowDiskEncryption = currentTeamId ? false - : config?.mdm.macos_settings.enable_disk_encryption ?? false; + : config?.mdm.enable_disk_encryption ?? false; const [isLoadingTeam, setIsLoadingTeam] = useState(true); @@ -67,8 +67,7 @@ const DiskEncryption = ({ enabled: currentTeamId !== 0, select: (res) => res.team, onSuccess: (res) => { - const enableDiskEncryption = - res.mdm?.macos_settings.enable_disk_encryption ?? false; + const enableDiskEncryption = res.mdm?.enable_disk_encryption ?? false; setDiskEncryptionEnabled(enableDiskEncryption); setShowAggregate(enableDiskEncryption); setIsLoadingTeam(false); @@ -100,6 +99,19 @@ const DiskEncryption = ({ setIsLoadingTeam(false); } + const createDescriptionText = () => { + // table is showing disk encryption status. + if (showAggregate) { + return "If turned on, hosts' disk encryption keys will be stored in Fleet. "; + } + + const isWindowsFeatureFlagEnabled = config?.mdm_enabled ?? false; + const dynamicText = isWindowsFeatureFlagEnabled + ? " and “BitLocker” on Windows" + : ""; + return `Also known as “FileVault” on macOS${dynamicText}. If turned on, hosts' disk encryption keys will be stored in Fleet. `; + }; + return (

Disk encryption

@@ -124,8 +136,7 @@ const DiskEncryption = ({ On

- Apple calls this “FileVault.” If turned on, hosts' disk - encryption keys will be stored in Fleet.{" "} + {createDescriptionText()} { + const { config } = useContext(AppContext); + const { data: diskEncryptionStatusData, error: diskEncryptionStatusError, - } = useQuery( + } = useQuery( ["disk-encryption-summary", currentTeamId], - () => mdmAPI.getDiskEncryptionAggregate(currentTeamId), + () => mdmAPI.getDiskEncryptionSummary(currentTeamId), { refetchOnWindowFocus: false, retry: false, } ); - const tableHeaders = generateTableHeaders(); - - const tableData = generateTableData(diskEncryptionStatusData, currentTeamId); + // TODO: WINDOWS FEATURE FLAG: remove this when windows feature flag is removed. + // this is used to conditianlly show "View all hosts" link in table cells. + const windowsFeatureFlagEnabled = config?.mdm_enabled ?? false; + const tableHeaders = generateTableHeaders(windowsFeatureFlagEnabled); + const tableData = generateTableData( + windowsFeatureFlagEnabled, + diskEncryptionStatusData, + currentTeamId + ); if (diskEncryptionStatusError) { return ; @@ -53,8 +59,7 @@ const DiskEncryptionTable = ({ currentTeamId }: IDiskEncryptionTableProps) => { isLoading={false} showMarkAllPages={false} isAllPagesSelected={false} - defaultSortHeader={DEFAULT_SORT_HEADER} - defaultSortDirection={DEFAULT_SORT_DIRECTION} + manualSortBy disableTableHeader disablePagination disableCount diff --git a/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/DiskEncryptionTableConfig.tsx b/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/DiskEncryptionTableConfig.tsx index 068459d69c..9a5b7baf5d 100644 --- a/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/DiskEncryptionTableConfig.tsx +++ b/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/DiskEncryptionTableConfig.tsx @@ -1,7 +1,11 @@ import React from "react"; -import { FileVaultProfileStatus } from "interfaces/mdm"; -import { IFileVaultSummaryResponse } from "services/entities/mdm"; +import { DiskEncryptionStatus } from "interfaces/mdm"; +import { + IDiskEncryptionStatusAggregate, + IDiskEncryptionSummaryResponse, +} from "services/entities/mdm"; +import { DISK_ENCRYPTION_QUERY_PARAM_NAME } from "services/entities/hosts"; import TextCell from "components/TableContainer/DataTable/TextCell"; import HeaderCell from "components/TableContainer/DataTable/HeaderCell"; @@ -12,7 +16,7 @@ import { IndicatorStatus } from "components/StatusIndicatorWithIcon/StatusIndica interface IStatusCellValue { displayName: string; statusName: IndicatorStatus; - value: FileVaultProfileStatus; + value: DiskEncryptionStatus; tooltip?: string | JSX.Element; } @@ -28,6 +32,7 @@ interface ICellProps { }; row: { original: { + includeWindows: boolean; status: IStatusCellValue; teamId: number; }; @@ -72,15 +77,53 @@ const defaultTableHeaders: IDataColumn[] = [ }, }, { - title: "Hosts", + title: "macOS hosts", Header: (cellProps: IHeaderProps) => ( ), - accessor: "hosts", + disableSortBy: true, + accessor: "macosHosts", + Cell: ({ + cell: { value: aggregateCount }, + row: { original }, + }: ICellProps) => { + return ( +

+ <>{val}} /> + {/* TODO: WINDOWS FEATURE FLAG: remove this conditional when windows mdm + is released. the view all UI will show in the windows column when we + release the feature. */} + {!original.includeWindows && ( + + )} +
+ ); + }, + }, +]; + +const windowsTableHeader: IDataColumn[] = [ + { + title: "Windows hosts", + Header: (cellProps: IHeaderProps) => ( + + ), + disableSortBy: true, + accessor: "windowsHosts", Cell: ({ cell: { value: aggregateCount }, row: { original }, @@ -91,7 +134,7 @@ const defaultTableHeaders: IDataColumn[] = [ @@ -101,15 +144,17 @@ const defaultTableHeaders: IDataColumn[] = [ }, ]; -type StatusNames = keyof IFileVaultSummaryResponse; - -type StatusEntry = [StatusNames, number]; - -export const generateTableHeaders = (): IDataColumn[] => { +// TODO: WINDOWS FEATURE FLAG: return all headers when windows feature flag is removed. +export const generateTableHeaders = ( + includeWindows: boolean +): IDataColumn[] => { + return includeWindows + ? [...defaultTableHeaders, ...windowsTableHeader] + : defaultTableHeaders; return defaultTableHeaders; }; -const STATUS_CELL_VALUES: Record = { +const STATUS_CELL_VALUES: Record = { verified: { displayName: "Verified", statusName: "success", @@ -122,8 +167,8 @@ const STATUS_CELL_VALUES: Record = { statusName: "successPartial", value: "verifying", tooltip: - "These hosts acknowledged the MDM command to install disk encryption profile. " + - "Fleet is verifying with osquery and retrieving the disk encryption key. This may take up to one hour.", + "These hosts acknowledged the MDM command to turn on disk encryption. Fleet is verifying with " + + "osquery and retrieving the disk encryption key. This may take up to one hour.", }, action_required: { displayName: "Action required (pending)", @@ -141,7 +186,7 @@ const STATUS_CELL_VALUES: Record = { statusName: "pendingPartial", value: "enforcing", tooltip: - "These hosts will receive the MDM command to install the disk encryption profile when the hosts come online.", + "These hosts will receive the MDM command to turn on disk encryption when the hosts come online.", }, failed: { displayName: "Failed", @@ -153,21 +198,41 @@ const STATUS_CELL_VALUES: Record = { statusName: "pendingPartial", value: "removing_enforcement", tooltip: - "These hosts will receive the MDM command to remove the disk encryption profile when the hosts come online.", + "These hosts will receive the MDM command to turn off disk encryption when the hosts come online.", }, }; +type StatusEntry = [DiskEncryptionStatus, IDiskEncryptionStatusAggregate]; + +// Order of the status column. We want the order to always be the same. +const STATUS_ORDER = [ + "verified", + "verifying", + "failed", + "action_required", + "enforcing", + "removing_enforcement", +] as const; + export const generateTableData = ( - data?: IFileVaultSummaryResponse, + // TODO: WINDOWS FEATURE FLAG: remove includeWindows when windows feature flag is removed. + // This is used to conditionally show "View all hosts" link in table cells. + includeWindows: boolean, + data?: IDiskEncryptionSummaryResponse, currentTeamId?: number ) => { if (!data) return []; - const entries = Object.entries(data) as StatusEntry[]; - return entries.map(([status, numHosts]) => ({ - // eslint-disable-next-line object-shorthand + const rowFromStatusEntry = ( + status: DiskEncryptionStatus, + statusAggregate: IDiskEncryptionStatusAggregate + ) => ({ + includeWindows, status: STATUS_CELL_VALUES[status], - hosts: numHosts, + macosHosts: statusAggregate.macos, + windowsHosts: statusAggregate.windows, teamId: currentTeamId, - })); + }); + + return STATUS_ORDER.map((status) => rowFromStatusEntry(status, data[status])); }; diff --git a/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/_styles.scss b/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/_styles.scss index ee3e1c025e..c2e35efe6b 100644 --- a/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/_styles.scss +++ b/frontend/pages/ManageControlsPage/OSSettings/cards/DiskEncryption/components/DiskEncryptionTable/_styles.scss @@ -1,7 +1,4 @@ .disk-encryption-table { - padding: $pad-xxlarge; - border: 1px solid $ui-fleet-black-10; - border-radius: $border-radius; margin-bottom: $pad-xxlarge; .data-table-block .data-table tbody td .w250 { diff --git a/frontend/pages/ManageControlsPage/components/TurnOnMdmMessage/TurnOnMdmMessage.tsx b/frontend/pages/ManageControlsPage/components/TurnOnMdmMessage/TurnOnMdmMessage.tsx index 545887a8f5..ce052c31e1 100644 --- a/frontend/pages/ManageControlsPage/components/TurnOnMdmMessage/TurnOnMdmMessage.tsx +++ b/frontend/pages/ManageControlsPage/components/TurnOnMdmMessage/TurnOnMdmMessage.tsx @@ -30,7 +30,7 @@ const TurnOnMdmMessage = ({ router }: ITurnOnMdmMessageProps) => { return ( diff --git a/frontend/pages/hosts/ManageHostsPage/HostsPageConfig.tsx b/frontend/pages/hosts/ManageHostsPage/HostsPageConfig.tsx index 2fbaac795a..b4102d321e 100644 --- a/frontend/pages/hosts/ManageHostsPage/HostsPageConfig.tsx +++ b/frontend/pages/hosts/ManageHostsPage/HostsPageConfig.tsx @@ -1,6 +1,7 @@ import React from "react"; import Icon from "components/Icon"; +import { DISK_ENCRYPTION_QUERY_PARAM_NAME } from "services/entities/hosts"; export const MANAGE_HOSTS_PAGE_FILTER_KEYS = [ "query", @@ -17,7 +18,7 @@ export const MANAGE_HOSTS_PAGE_FILTER_KEYS = [ "os_version", "munki_issue_id", "low_disk_space", - "macos_settings_disk_encryption", + DISK_ENCRYPTION_QUERY_PARAM_NAME, "bootstrap_package", ] as const; diff --git a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx index ab6a3b4deb..6eedf30627 100644 --- a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx +++ b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx @@ -18,6 +18,7 @@ import labelsAPI, { ILabelsResponse } from "services/entities/labels"; import teamsAPI, { ILoadTeamsResponse } from "services/entities/teams"; import globalPoliciesAPI from "services/entities/global_policies"; import hostsAPI, { + DISK_ENCRYPTION_QUERY_PARAM_NAME, ILoadHostsQueryKey, ILoadHostsResponse, ISortOption, @@ -49,7 +50,7 @@ import { IOperatingSystemVersion } from "interfaces/operating_system"; import { IPolicy, IStoredPolicyResponse } from "interfaces/policy"; import { ITeam } from "interfaces/team"; import { IEmptyTableProps } from "interfaces/empty_table"; -import { FileVaultProfileStatus, BootstrapPackageStatus } from "interfaces/mdm"; +import { DiskEncryptionStatus, BootstrapPackageStatus } from "interfaces/mdm"; import sortUtils from "utilities/sort"; import { @@ -232,8 +233,8 @@ const ManageHostsPage = ({ ? parseInt(queryParams.low_disk_space, 10) : undefined; const missingHosts = queryParams?.status === "missing"; - const diskEncryptionStatus: FileVaultProfileStatus | undefined = - queryParams?.macos_settings_disk_encryption; + const diskEncryptionStatus: DiskEncryptionStatus | undefined = + queryParams?.[DISK_ENCRYPTION_QUERY_PARAM_NAME]; const bootstrapPackageStatus: BootstrapPackageStatus | undefined = queryParams?.bootstrap_package; @@ -558,7 +559,7 @@ const ManageHostsPage = ({ }; const handleChangeDiskEncryptionStatusFilter = ( - newStatus: FileVaultProfileStatus + newStatus: DiskEncryptionStatus ) => { handleResetPageIndex(); @@ -569,7 +570,7 @@ const ManageHostsPage = ({ routeParams, queryParams: { ...queryParams, - macos_settings_disk_encryption: newStatus, + [DISK_ENCRYPTION_QUERY_PARAM_NAME]: newStatus, page: 0, // resets page index }, }) @@ -768,7 +769,7 @@ const ManageHostsPage = ({ newQueryParams.os_version = osVersion; } else if (diskEncryptionStatus && isPremiumTier) { // Premium feature only - newQueryParams.macos_settings_disk_encryption = diskEncryptionStatus; + newQueryParams[DISK_ENCRYPTION_QUERY_PARAM_NAME] = diskEncryptionStatus; } else if (bootstrapPackageStatus && isPremiumTier) { newQueryParams.bootstrap_package = bootstrapPackageStatus; } diff --git a/frontend/pages/hosts/ManageHostsPage/components/CustomLabelGroupHeading/_styles.scss b/frontend/pages/hosts/ManageHostsPage/components/CustomLabelGroupHeading/_styles.scss index 38a1599708..d4cb6bed09 100644 --- a/frontend/pages/hosts/ManageHostsPage/components/CustomLabelGroupHeading/_styles.scss +++ b/frontend/pages/hosts/ManageHostsPage/components/CustomLabelGroupHeading/_styles.scss @@ -33,7 +33,7 @@ line-height: 1.5; background-color: $ui-light-grey; border: solid 1px $ui-fleet-black-10; - border-radius: 4px; + border-radius: $border-radius; font-size: $small; padding: 9.5px 12px 9.5px 36px; color: $core-fleet-blue; @@ -70,7 +70,7 @@ color: $core-vibrant-red; border: 1px solid $core-vibrant-red; box-sizing: border-box; - border-radius: 4px; + border-radius: $border-radius; &:focus { border-color: $ui-error; diff --git a/frontend/pages/hosts/ManageHostsPage/components/DiskEncryptionStatusFilter/DiskEncryptionStatusFilter.tsx b/frontend/pages/hosts/ManageHostsPage/components/DiskEncryptionStatusFilter/DiskEncryptionStatusFilter.tsx index 2405fd6d15..4e49123919 100644 --- a/frontend/pages/hosts/ManageHostsPage/components/DiskEncryptionStatusFilter/DiskEncryptionStatusFilter.tsx +++ b/frontend/pages/hosts/ManageHostsPage/components/DiskEncryptionStatusFilter/DiskEncryptionStatusFilter.tsx @@ -4,7 +4,7 @@ import { IDropdownOption } from "interfaces/dropdownOption"; // @ts-ignore import Dropdown from "components/forms/fields/Dropdown"; -import { FileVaultProfileStatus } from "interfaces/mdm"; +import { DiskEncryptionStatus } from "interfaces/mdm"; const baseClass = "disk-encryption-status-filter"; @@ -42,8 +42,8 @@ const DISK_ENCRYPTION_STATUS_OPTIONS: IDropdownOption[] = [ ]; interface IDiskEncryptionStatusFilterProps { - diskEncryptionStatus: FileVaultProfileStatus; - onChange: (value: FileVaultProfileStatus) => void; + diskEncryptionStatus: DiskEncryptionStatus; + onChange: (value: DiskEncryptionStatus) => void; } const DiskEncryptionStatusFilter = ({ diff --git a/frontend/pages/hosts/ManageHostsPage/components/FilterPill/_styles.scss b/frontend/pages/hosts/ManageHostsPage/components/FilterPill/_styles.scss index a7badf53a1..8f4a9c76a3 100644 --- a/frontend/pages/hosts/ManageHostsPage/components/FilterPill/_styles.scss +++ b/frontend/pages/hosts/ManageHostsPage/components/FilterPill/_styles.scss @@ -4,7 +4,7 @@ align-items: center; padding: 6px 12px; border: 1px solid $ui-fleet-black-25; - border-radius: 4px; + border-radius: $border-radius; box-shadow: none; color: $core-fleet-black; font-size: $xx-small; diff --git a/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx b/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx index 0e64c52c74..1ff7287cb3 100644 --- a/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx +++ b/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx @@ -7,7 +7,7 @@ import { IOperatingSystemVersion, } from "interfaces/operating_system"; import { - FileVaultProfileStatus, + DiskEncryptionStatus, BootstrapPackageStatus, IMdmSolution, MDM_ENROLLMENT_STATUS, @@ -15,7 +15,10 @@ import { import { IMunkiIssuesAggregate } from "interfaces/macadmins"; import { ISoftware } from "interfaces/software"; import { IPolicy } from "interfaces/policy"; -import { MacSettingsStatusQueryParam } from "services/entities/hosts"; +import { + DISK_ENCRYPTION_QUERY_PARAM_NAME, + MacSettingsStatusQueryParam, +} from "services/entities/hosts"; import { PLATFORM_LABEL_DISPLAY_NAMES, @@ -60,7 +63,7 @@ interface IHostsFilterBlockProps { osVersions?: IOperatingSystemVersion[]; softwareDetails: ISoftware | null; mdmSolutionDetails: IMdmSolution | null; - diskEncryptionStatus?: FileVaultProfileStatus; + diskEncryptionStatus?: DiskEncryptionStatus; bootstrapPackageStatus?: BootstrapPackageStatus; }; selectedLabel?: ILabel; @@ -68,9 +71,7 @@ interface IHostsFilterBlockProps { handleClearRouteParam: () => void; handleClearFilter: (omitParams: string[]) => void; onChangePoliciesFilter: (response: PolicyResponse) => void; - onChangeDiskEncryptionStatusFilter: ( - response: FileVaultProfileStatus - ) => void; + onChangeDiskEncryptionStatusFilter: (response: DiskEncryptionStatus) => void; onChangeBootstrapPackageStatusFilter: ( response: BootstrapPackageStatus ) => void; @@ -376,8 +377,8 @@ const HostsFilterBlock = ({ onChange={onChangeDiskEncryptionStatusFilter} /> handleClearFilter(["macos_settings_disk_encryption"])} + label="OS settings: Disk encryption" + onClear={() => handleClearFilter([DISK_ENCRYPTION_QUERY_PARAM_NAME])} /> ); diff --git a/frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx b/frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx index 285c0f8908..d5550026d5 100644 --- a/frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx +++ b/frontend/pages/hosts/details/DeviceUserPage/DeviceUserPage.tsx @@ -417,6 +417,7 @@ const DeviceUserPage = ({ showRefetchSpinner={showRefetchSpinner} onRefetchHost={onRefetchHost} renderActionButtons={renderActionButtons} + osSettings={host?.mdm.os_settings} deviceUser /> @@ -489,6 +490,7 @@ const DeviceUserPage = ({ )} {showMacSettingsModal && ( diff --git a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx index 0493579f5e..48212d6a10 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx @@ -72,6 +72,7 @@ import HostActionDropdown from "./HostActionsDropdown/HostActionsDropdown"; import MacSettingsModal from "../MacSettingsModal"; import BootstrapPackageModal from "./modals/BootstrapPackageModal"; import SelectQueryModal from "./modals/SelectQueryModal"; +import { isSupportedPlatform } from "./modals/DiskEncryptionKeyModal/DiskEncryptionKeyModal"; const baseClass = "host-details"; @@ -725,6 +726,7 @@ const HostDetailsPage = ({ showRefetchSpinner={showRefetchSpinner} onRefetchHost={onRefetchHost} renderActionButtons={renderActionButtons} + osSettings={host?.mdm.os_settings} /> @@ -857,12 +860,15 @@ const HostDetailsPage = ({ {showUnenrollMdmModal && !!host && ( )} - {showDiskEncryptionModal && host && ( - setShowDiskEncryptionModal(false)} - /> - )} + {showDiskEncryptionModal && + host && + isSupportedPlatform(host.platform) && ( + setShowDiskEncryptionModal(false)} + /> + )} {showBootstrapPackageModal && bootstrapPackageData.details && bootstrapPackageData.name && ( diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/DiskEncryptionKeyModal/DiskEncryptionKeyModal.tsx b/frontend/pages/hosts/details/HostDetailsPage/modals/DiskEncryptionKeyModal/DiskEncryptionKeyModal.tsx index 8acdc6622e..1046822673 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/modals/DiskEncryptionKeyModal/DiskEncryptionKeyModal.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/DiskEncryptionKeyModal/DiskEncryptionKeyModal.tsx @@ -9,15 +9,32 @@ import CustomLink from "components/CustomLink"; import Button from "components/buttons/Button"; import InputFieldHiddenContent from "components/forms/fields/InputFieldHiddenContent"; import DataError from "components/DataError"; +import { SupportedPlatform } from "interfaces/platform"; const baseClass = "disk-encryption-key-modal"; +// currently these are the only supported platforms for the disk encryption +// key modal. +export type ModalSupportedPlatform = Extract< + SupportedPlatform, + "darwin" | "windows" +>; + +// Checks to see if the platform is supported by the modal. +export const isSupportedPlatform = ( + platform: string +): platform is ModalSupportedPlatform => { + return ["darwin", "windows"].includes(platform); +}; + interface IDiskEncryptionKeyModal { + platform: ModalSupportedPlatform; hostId: number; onCancel: () => void; } const DiskEncryptionKeyModal = ({ + platform, hostId, onCancel, }: IDiskEncryptionKeyModal) => { @@ -33,6 +50,18 @@ const DiskEncryptionKeyModal = ({ select: (data) => data.encryption_key.key, }); + const isMacOS = platform === "darwin"; + const descriptionText = isMacOS + ? "The disk encryption key refers to the FileVault recovery key for macOS." + : "The disk encryption key refers to the BitLocker recovery key for Windows."; + + const recoveryText = isMacOS + ? "Use this key to log in to the host if you forgot the password." + : "Use this key to unlock the encrypted drive."; + const recoveryUrl = isMacOS + ? "https://fleetdm.com/docs/using-fleet/mdm-disk-encryption#reset-a-macos-hosts-password-using-the-disk-encryption-key" + : "https://fleetdm.com/docs/using-fleet/mdm-disk-encryption#unlock-a-windows-hosts-drive-using-the-disk-encryption-key"; + return ( {encryptionKeyError ? ( @@ -40,15 +69,12 @@ const DiskEncryptionKeyModal = ({ ) : ( <> +

{descriptionText}

- The disk encryption key refers to the FileVault recovery key for - macOS. -

-

- Use this key to log in to the host if you forgot the password.{" "} + {recoveryText}{" "}

diff --git a/frontend/pages/hosts/details/HostDetailsPage/modals/OSPolicyModal/_styles.scss b/frontend/pages/hosts/details/HostDetailsPage/modals/OSPolicyModal/_styles.scss index 7f2f5f1ff1..c0b6053f30 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/modals/OSPolicyModal/_styles.scss +++ b/frontend/pages/hosts/details/HostDetailsPage/modals/OSPolicyModal/_styles.scss @@ -42,7 +42,7 @@ &__copy-message { background-color: $ui-light-grey; border: solid 1px #e2e4ea; - border-radius: 10px; + border-radius: $border-radius-xlarge; padding: 2px 6px; } } diff --git a/frontend/pages/hosts/details/MacSettingsIndicator/index.ts b/frontend/pages/hosts/details/MacSettingsIndicator/index.ts deleted file mode 100644 index 47e9752064..0000000000 --- a/frontend/pages/hosts/details/MacSettingsIndicator/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./MacSettingsIndicator"; diff --git a/frontend/pages/hosts/details/MacSettingsModal/MacSettingsModal.tsx b/frontend/pages/hosts/details/MacSettingsModal/MacSettingsModal.tsx index a055bae715..eab9e92bbb 100644 --- a/frontend/pages/hosts/details/MacSettingsModal/MacSettingsModal.tsx +++ b/frontend/pages/hosts/details/MacSettingsModal/MacSettingsModal.tsx @@ -7,20 +7,28 @@ import MacSettingsTable from "./MacSettingsTable"; import { generateTableData } from "./MacSettingsTable/MacSettingsTableConfig"; interface IMacSettingsModalProps { - hostMDMData?: Pick; + platform?: string; + hostMDMData?: IHostMdmData; onClose: () => void; } const baseClass = "mac-settings-modal"; -const MacSettingsModal = ({ hostMDMData, onClose }: IMacSettingsModalProps) => { - const memoizedTableData = useMemo(() => generateTableData(hostMDMData), [ - hostMDMData, - ]); +const MacSettingsModal = ({ + platform, + hostMDMData, + onClose, +}: IMacSettingsModalProps) => { + const memoizedTableData = useMemo( + () => generateTableData(hostMDMData, platform), + [hostMDMData, platform] + ); + + if (!platform) return null; return ( innerProps.isDiskEncryptionProfile - ? "The host will receive the MDM command to install the disk encryption profile when the " + - "host comes online." + ? "The hosts will receive the MDM command to turn on disk encryption " + + "when the hosts come online." : "The host will receive the MDM command to install the configuration profile when the " + "host comes online.", }, @@ -56,8 +59,8 @@ const PROFILE_DISPLAY_CONFIG: ProfileDisplayConfig = { iconName: "success", tooltip: (innerProps) => innerProps.isDiskEncryptionProfile - ? "The host turned disk encryption on and " + - "sent their key to Fleet. Fleet verified with osquery." + ? "The host turned disk encryption on and sent the key to Fleet. " + + "Fleet verified with osquery." : "The host installed the configuration profile. Fleet verified with osquery.", }, verifying: { @@ -65,8 +68,9 @@ const PROFILE_DISPLAY_CONFIG: ProfileDisplayConfig = { iconName: "success-partial", tooltip: (innerProps) => innerProps.isDiskEncryptionProfile - ? "The host acknowledged the MDM command to install disk encryption profile. Fleet is " + - "verifying with osquery and retrieving the disk encryption key. This may take up to one hour." + ? "The host acknowledged the MDM command to turn on disk encryption. " + + "Fleet is verifying with osquery and retrieving the disk encryption key. " + + "This may take up to one hour." : "The host acknowledged the MDM command to install the configuration profile. Fleet is " + "verifying with osquery.", }, @@ -98,9 +102,41 @@ const PROFILE_DISPLAY_CONFIG: ProfileDisplayConfig = { }, }; +type WindowsDiskEncryptionDisplayConfig = Omit< + OperationTypeOption, + "action_required" +>; + +const WINDOWS_DISK_ENCRYPTION_DISPLAY_CONFIG: WindowsDiskEncryptionDisplayConfig = { + verified: { + statusText: "Verified", + iconName: "success", + tooltip: () => + "The host turned disk encryption on and sent the key to Fleet. Fleet verified with osquery.", + }, + verifying: { + statusText: "Verifying", + iconName: "success-partial", + tooltip: () => + "The host acknowledged the MDM command to turn on disk encryption. Fleet is verifying with osquery and retrieving " + + "the disk encryption key. This may take up to one hour.", + }, + pending: { + statusText: "Enforcing (pending)", + iconName: "pending-partial", + tooltip: () => + "The host will receive the MDM command to turn on disk encryption when the host comes online.", + }, + failed: { + statusText: "Failed", + iconName: "error", + tooltip: null, + }, +}; + interface IMacSettingStatusCellProps { status: MacSettingsTableStatusValue; - operationType: MacMdmProfileOperationType; + operationType: MacMdmProfileOperationType | null; profileName: string; } @@ -108,8 +144,18 @@ const MacSettingStatusCell = ({ status, operationType, profileName = "", -}: IMacSettingStatusCellProps): JSX.Element => { - const diplayOption = PROFILE_DISPLAY_CONFIG[operationType]?.[status]; +}: IMacSettingStatusCellProps) => { + let displayOption: ProfileDisplayOption = null; + + // windows hosts do not have an operation type at the moment and their display options are + // different than mac hosts. + if (!operationType && isMdmProfileStatus(status)) { + displayOption = WINDOWS_DISK_ENCRYPTION_DISPLAY_CONFIG[status]; + } + + if (operationType) { + displayOption = PROFILE_DISPLAY_CONFIG[operationType]?.[status]; + } const isDeviceUser = window.location.pathname .toLowerCase() @@ -118,8 +164,8 @@ const MacSettingStatusCell = ({ const isDiskEncryptionProfile = profileName === FLEET_FILEVAULT_PROFILE_DISPLAY_NAME; - if (diplayOption) { - const { statusText, iconName, tooltip } = diplayOption; + if (displayOption) { + const { statusText, iconName, tooltip } = displayOption; const tooltipId = uniqueId(); return ( diff --git a/frontend/pages/hosts/details/MacSettingsModal/MacSettingsTable/MacSettingsTableConfig.tsx b/frontend/pages/hosts/details/MacSettingsModal/MacSettingsTable/MacSettingsTableConfig.tsx index 39bd021222..7b2364af25 100644 --- a/frontend/pages/hosts/details/MacSettingsModal/MacSettingsTable/MacSettingsTableConfig.tsx +++ b/frontend/pages/hosts/details/MacSettingsModal/MacSettingsTable/MacSettingsTableConfig.tsx @@ -5,20 +5,27 @@ import { IHostMdmData } from "interfaces/host"; import { FLEET_FILEVAULT_PROFILE_DISPLAY_NAME, // FLEET_FILEVAULT_PROFILE_IDENTIFIER, - IHostMacMdmProfile, + IHostMdmProfile, MdmProfileStatus, + isWindowsDiskEncryptionStatus, } from "interfaces/mdm"; import { DEFAULT_EMPTY_CELL_VALUE } from "utilities/constants"; import TruncatedTextCell from "components/TableContainer/DataTable/TruncatedTextCell"; import MacSettingStatusCell from "./MacSettingStatusCell"; +import { generateWinDiskEncryptionProfile } from "../../helpers"; -export interface IMacSettingsTableRow - extends Omit { +export interface IMacSettingsTableRow extends Omit { status: MacSettingsTableStatusValue; } export type MacSettingsTableStatusValue = MdmProfileStatus | "action_required"; +export const isMdmProfileStatus = ( + status: string +): status is MdmProfileStatus => { + return status !== "action_required"; +}; + interface IHeaderProps { column: { title: string; @@ -92,20 +99,41 @@ const tableHeaders: IDataColumn[] = [ ]; export const generateTableData = ( - hostMDMData?: Pick + hostMDMData?: IHostMdmData, + platform?: string ) => { + if (!platform) return []; + let rows: IMacSettingsTableRow[] = []; if (!hostMDMData) { return rows; } + if ( + platform === "windows" && + hostMDMData.os_settings?.disk_encryption.status && + isWindowsDiskEncryptionStatus( + hostMDMData.os_settings.disk_encryption.status + ) + ) { + rows.push( + generateWinDiskEncryptionProfile( + hostMDMData.os_settings.disk_encryption.status + ) + ); + return rows; + } + const { profiles, macos_settings } = hostMDMData; + if (!profiles) { return rows; } - rows = profiles; - if (macos_settings?.disk_encryption === "action_required") { + if ( + platform === "darwin" && + macos_settings?.disk_encryption === "action_required" + ) { rows = profiles.map((p) => { // TODO: this is a brittle check for the filevault profile // it would be better to match on the identifier but it is not diff --git a/frontend/pages/hosts/details/MacSettingsIndicator/MacSettingsIndicator.tests.tsx b/frontend/pages/hosts/details/ProfileStatusIndicator/ProfileStatusIndicator.tests.tsx similarity index 87% rename from frontend/pages/hosts/details/MacSettingsIndicator/MacSettingsIndicator.tests.tsx rename to frontend/pages/hosts/details/ProfileStatusIndicator/ProfileStatusIndicator.tests.tsx index a71467903c..73044dd218 100644 --- a/frontend/pages/hosts/details/MacSettingsIndicator/MacSettingsIndicator.tests.tsx +++ b/frontend/pages/hosts/details/ProfileStatusIndicator/ProfileStatusIndicator.tests.tsx @@ -1,12 +1,15 @@ import React from "react"; import { fireEvent, render, screen } from "@testing-library/react"; -import MacSettingsIndicator from "./MacSettingsIndicator"; +import ProfileStatusIndicator from "./ProfileStatusIndicator"; -describe("MacSettingsIndicator", () => { +describe("ProfileStatusIndicator component", () => { it("Renders the text and icon", () => { const indicatorText = "test text"; render( - + ); const renderedIndicatorText = screen.getByText(indicatorText); const renderedIcon = screen.getByTestId("success-icon"); @@ -19,7 +22,7 @@ describe("MacSettingsIndicator", () => { const indicatorText = "test text"; const tooltipText = "test tooltip text"; render( - { document.body.appendChild(newDiv); }; render( - { diff --git a/frontend/pages/hosts/details/MacSettingsIndicator/MacSettingsIndicator.tsx b/frontend/pages/hosts/details/ProfileStatusIndicator/ProfileStatusIndicator.tsx similarity index 92% rename from frontend/pages/hosts/details/MacSettingsIndicator/MacSettingsIndicator.tsx rename to frontend/pages/hosts/details/ProfileStatusIndicator/ProfileStatusIndicator.tsx index 473745ee33..f3bbe6cd02 100644 --- a/frontend/pages/hosts/details/MacSettingsIndicator/MacSettingsIndicator.tsx +++ b/frontend/pages/hosts/details/ProfileStatusIndicator/ProfileStatusIndicator.tsx @@ -4,9 +4,9 @@ import { IconNames } from "components/icons"; import Icon from "components/Icon"; import Button from "components/buttons/Button"; -const baseClass = "settings-indicator"; +const baseClass = "profile-status-indicator"; -export interface IMacSettingsIndicator { +export interface IProfileStatusIndicatorProps { indicatorText: string; iconName: IconNames; onClick?: () => void; @@ -16,12 +16,12 @@ export interface IMacSettingsIndicator { }; } -const MacSettingsIndicator = ({ +const ProfileStatusIndicator = ({ indicatorText, iconName, onClick, tooltip, -}: IMacSettingsIndicator): JSX.Element => { +}: IProfileStatusIndicatorProps) => { const getIndicatorTextWrapped = () => { if (onClick && tooltip?.tooltipText) { return ( @@ -103,4 +103,4 @@ const MacSettingsIndicator = ({ ); }; -export default MacSettingsIndicator; +export default ProfileStatusIndicator; diff --git a/frontend/pages/hosts/details/MacSettingsIndicator/_styles.scss b/frontend/pages/hosts/details/ProfileStatusIndicator/_styles.scss similarity index 88% rename from frontend/pages/hosts/details/MacSettingsIndicator/_styles.scss rename to frontend/pages/hosts/details/ProfileStatusIndicator/_styles.scss index fce8265c95..a7ed40ad91 100644 --- a/frontend/pages/hosts/details/MacSettingsIndicator/_styles.scss +++ b/frontend/pages/hosts/details/ProfileStatusIndicator/_styles.scss @@ -1,4 +1,4 @@ -.settings-indicator { +.profile-status-indicator { display: flex; gap: 4px; diff --git a/frontend/pages/hosts/details/ProfileStatusIndicator/index.ts b/frontend/pages/hosts/details/ProfileStatusIndicator/index.ts new file mode 100644 index 0000000000..99de4100ca --- /dev/null +++ b/frontend/pages/hosts/details/ProfileStatusIndicator/index.ts @@ -0,0 +1 @@ +export { default } from "./ProfileStatusIndicator"; diff --git a/frontend/pages/hosts/details/cards/HostSummary/HostSummary.tsx b/frontend/pages/hosts/details/cards/HostSummary/HostSummary.tsx index f18194844c..45be0eaba5 100644 --- a/frontend/pages/hosts/details/cards/HostSummary/HostSummary.tsx +++ b/frontend/pages/hosts/details/cards/HostSummary/HostSummary.tsx @@ -1,7 +1,12 @@ import React from "react"; - import ReactTooltip from "react-tooltip"; -import { IHostMacMdmProfile, BootstrapPackageStatus } from "interfaces/mdm"; + +import { + IHostMdmProfile, + BootstrapPackageStatus, + isWindowsDiskEncryptionStatus, +} from "interfaces/mdm"; +import { IOSSettings } from "interfaces/host"; import getHostStatusTooltipText from "pages/hosts/helpers"; import TooltipWrapper from "components/TooltipWrapper"; @@ -9,6 +14,7 @@ import Button from "components/buttons/Button"; import Icon from "components/Icon/Icon"; import DiskSpaceGraph from "components/DiskSpaceGraph"; import HumanTimeDiffWithDateTip from "components/HumanTimeDiffWithDateTip"; +import PremiumFeatureIconWithTooltip from "components/PremiumFeatureIconWithTooltip"; import { getHostDiskEncryptionTooltipMessage, humanHostMemory, @@ -16,10 +22,11 @@ import { } from "utilities/helpers"; import { DEFAULT_EMPTY_CELL_VALUE } from "utilities/constants"; import StatusIndicator from "components/StatusIndicator"; -import PremiumFeatureIconWithTooltip from "components/PremiumFeatureIconWithTooltip"; + import MacSettingsIndicator from "./MacSettingsIndicator"; import HostSummaryIndicator from "./HostSummaryIndicator"; import BootstrapPackageIndicator from "./BootstrapPackageIndicator/BootstrapPackageIndicator"; +import { generateWinDiskEncryptionProfile } from "../../helpers"; const baseClass = "host-summary"; @@ -38,7 +45,7 @@ interface IHostSummaryProps { toggleOSPolicyModal?: () => void; toggleMacSettingsModal?: () => void; toggleBootstrapPackageModal?: () => void; - hostMdmProfiles?: IHostMacMdmProfile[]; + hostMdmProfiles?: IHostMdmProfile[]; mdmName?: string; showRefetchSpinner: boolean; onRefetchHost: ( @@ -46,6 +53,7 @@ interface IHostSummaryProps { ) => void; renderActionButtons: () => JSX.Element | null; deviceUser?: boolean; + osSettings?: IOSSettings; } const HostSummary = ({ @@ -64,8 +72,9 @@ const HostSummary = ({ onRefetchHost, renderActionButtons, deviceUser, + osSettings, }: IHostSummaryProps): JSX.Element => { - const { status, id, platform } = titleData; + const { status, platform } = titleData; const renderRefetch = () => { const isOnline = titleData.status === "online"; @@ -179,6 +188,22 @@ const HostSummary = ({ }; const renderSummary = () => { + // for windows hosts we have to manually add a profile for disk encryption + // as this is not currently included in the `profiles` value from the API + // response for windows hosts. + if ( + platform === "windows" && + osSettings?.disk_encryption?.status && + isWindowsDiskEncryptionStatus(osSettings.disk_encryption.status) + ) { + const winDiskEncryptionProfile: IHostMdmProfile = generateWinDiskEncryptionProfile( + osSettings.disk_encryption.status + ); + hostMdmProfiles = hostMdmProfiles + ? [...hostMdmProfiles, winDiskEncryptionProfile] + : [winDiskEncryptionProfile]; + } + return (
@@ -198,12 +223,15 @@ const HostSummary = ({ {isPremiumTier && renderHostTeam()} - {platform === "darwin" && + {/* Rendering of OS Settings data */} + {(platform === "darwin" || platform === "windows") && isPremiumTier && - mdmName === "Fleet" && // show if 1 - host is enrolled in Fleet MDM, and + // TODO: API INTEGRATION: change this when we figure out why the API is + // returning "Fleet" or "FleetDM" for the MDM name. + mdmName?.includes("Fleet") && // show if 1 - host is enrolled in Fleet MDM, and hostMdmProfiles && hostMdmProfiles.length > 0 && ( // 2 - host has at least one setting (profile) enforced - + { const statuses = hostMacSettings.map((setting) => setting.status); if (statuses.includes("failed")) { @@ -68,7 +68,7 @@ const getMacProfileStatus = ( }; interface IMacSettingsIndicatorProps { - profiles: IHostMacMdmProfile[]; + profiles: IHostMdmProfile[]; onClick?: () => void; } const MacSettingsIndicator = ({ diff --git a/frontend/pages/hosts/details/cards/Policies/HostPoliciesTable/PolicyFailingCount/PolicyFailingCount.tsx b/frontend/pages/hosts/details/cards/Policies/HostPoliciesTable/PolicyFailingCount/PolicyFailingCount.tsx index ecb1f1b7c5..24a184a0d1 100644 --- a/frontend/pages/hosts/details/cards/Policies/HostPoliciesTable/PolicyFailingCount/PolicyFailingCount.tsx +++ b/frontend/pages/hosts/details/cards/Policies/HostPoliciesTable/PolicyFailingCount/PolicyFailingCount.tsx @@ -2,6 +2,7 @@ import { IHostPolicy } from "interfaces/policy"; import React from "react"; import Icon from "components/Icon/Icon"; +import InfoBanner from "components/InfoBanner"; const baseClass = "policy-failing-count"; @@ -18,7 +19,7 @@ const PolicyFailingCount = ({ }, 0); return failCount ? ( -
+
This device is failing @@ -27,10 +28,10 @@ const PolicyFailingCount = ({

Click a policy below to see if there are steps you can take to resolve the issue - {failCount > 1 ? "s" : ""}.{" "} + {failCount > 1 ? "s" : ""}. {deviceUser && " Once resolved, click “Refetch” above to confirm."}

-
+
) : null; }; diff --git a/frontend/pages/hosts/details/cards/Policies/HostPoliciesTable/PolicyFailingCount/_styles.scss b/frontend/pages/hosts/details/cards/Policies/HostPoliciesTable/PolicyFailingCount/_styles.scss index f3543ccc47..36ac989fdb 100644 --- a/frontend/pages/hosts/details/cards/Policies/HostPoliciesTable/PolicyFailingCount/_styles.scss +++ b/frontend/pages/hosts/details/cards/Policies/HostPoliciesTable/PolicyFailingCount/_styles.scss @@ -1,24 +1,11 @@ .policy-failing-count { - font-size: $x-small; - background-color: $ui-off-white; - border: solid 1px $ui-fleet-black-50; - box-sizing: border-box; - border-radius: 10px; - overflow: auto; - margin-bottom: $pad-large; - padding: $pad-large; - padding-bottom: $pad-small; - - p { - padding-left: $pad-large; - margin-top: $pad-medium; - margin-bottom: $pad-medium; - } - &__count { display: flex; - align-content: center; - align-items: center; font-weight: $bold; + gap: $pad-small; + } + + p { + margin-left: $pad-large; // Align second line with first line and not with icon } } diff --git a/frontend/pages/hosts/details/cards/Policies/_styles.scss b/frontend/pages/hosts/details/cards/Policies/_styles.scss index 01a500f359..eb7e5d8f6a 100644 --- a/frontend/pages/hosts/details/cards/Policies/_styles.scss +++ b/frontend/pages/hosts/details/cards/Policies/_styles.scss @@ -1,10 +1,6 @@ .section--policies { .info-banner { margin-bottom: 1rem; - p { - font-size: 0.875rem; - margin: 0; - } } .table-container__header { display: none; diff --git a/frontend/pages/hosts/details/cards/Software/SoftwareVulnCount/SoftwareVulnCount.tsx b/frontend/pages/hosts/details/cards/Software/SoftwareVulnCount/SoftwareVulnCount.tsx index 4b398201f4..83dd3936d2 100644 --- a/frontend/pages/hosts/details/cards/Software/SoftwareVulnCount/SoftwareVulnCount.tsx +++ b/frontend/pages/hosts/details/cards/Software/SoftwareVulnCount/SoftwareVulnCount.tsx @@ -2,6 +2,7 @@ import React from "react"; import { ISoftware } from "interfaces/software"; import Icon from "components/Icon/Icon"; +import InfoBanner from "components/InfoBanner"; const baseClass = "software-vuln-count"; @@ -18,14 +19,20 @@ const SoftwareVulnCount = ({ return software.vulnerabilities?.length ? sum + 1 : sum; }, 0); return vulnCount ? ( -
+
{vulnCount === 1 ? "1 software item with vulnerabilities detected" : `${vulnCount} software items with vulnerabilities detected`}
-
+ {!deviceUser && ( +

+ Click a vulnerable item below to see the associated Common + Vulnerabilites and Exposures (CVEs). +

+ )} + ) : ( <> ); diff --git a/frontend/pages/hosts/details/cards/Software/SoftwareVulnCount/_styles.scss b/frontend/pages/hosts/details/cards/Software/SoftwareVulnCount/_styles.scss index 9562f27e07..654886d39f 100644 --- a/frontend/pages/hosts/details/cards/Software/SoftwareVulnCount/_styles.scss +++ b/frontend/pages/hosts/details/cards/Software/SoftwareVulnCount/_styles.scss @@ -1,25 +1,11 @@ .software-vuln-count { - font-size: $x-small; - background-color: $ui-off-white; - border: solid 1px $ui-fleet-black-50; - box-sizing: border-box; - border-radius: 10px; - overflow: auto; - margin-bottom: $pad-large; - padding: $pad-large; - - p { - padding-left: $pad-large; - margin-top: $pad-medium; - margin-bottom: 0; - } - &__count { display: flex; - align-content: center; - align-items: center; - font-size: $x-small; font-weight: $bold; gap: $pad-small; } + + p { + margin-left: $pad-large; // Align second line with first line and not with icon + } } diff --git a/frontend/pages/hosts/details/cards/Software/_styles.scss b/frontend/pages/hosts/details/cards/Software/_styles.scss index e1dc55e7c4..ceaae0b407 100644 --- a/frontend/pages/hosts/details/cards/Software/_styles.scss +++ b/frontend/pages/hosts/details/cards/Software/_styles.scss @@ -1,4 +1,7 @@ .section--software { + .info-banner { + margin-bottom: 1rem; + } .text-muted { color: $ui-fleet-black-50; } diff --git a/frontend/pages/hosts/details/helpers.ts b/frontend/pages/hosts/details/helpers.ts new file mode 100644 index 0000000000..2c1283be18 --- /dev/null +++ b/frontend/pages/hosts/details/helpers.ts @@ -0,0 +1,33 @@ +/** Helpers used across the host details and my device pages and components. */ + +import { + IHostMdmProfile, + IWindowsDiskEncryptionStatus, + MdmProfileStatus, +} from "interfaces/mdm"; + +const convertWinDiskEncryptionStatusToProfileStatus = ( + diskEncryptionStatus: IWindowsDiskEncryptionStatus +): MdmProfileStatus => { + return diskEncryptionStatus === "enforcing" + ? "pending" + : diskEncryptionStatus; +}; + +/** + * Manually generates a profile for the windows disk encryption status. We need + * this as we don't have a windows disk encryption profile in the `profiles` + * attribute coming back from the GET /hosts/:id API response. + */ +// eslint-disable-next-line import/prefer-default-export +export const generateWinDiskEncryptionProfile = ( + diskEncryptionStatus: IWindowsDiskEncryptionStatus +): IHostMdmProfile => { + return { + profile_id: 0, // This s the only type of profile that can have this number + name: "Disk Encryption", + status: convertWinDiskEncryptionStatusToProfileStatus(diskEncryptionStatus), + detail: "", + operation_type: null, + }; +}; diff --git a/frontend/pages/policies/ManagePoliciesPage/_styles.scss b/frontend/pages/policies/ManagePoliciesPage/_styles.scss index d8e20f56b2..bf18675d94 100644 --- a/frontend/pages/policies/ManagePoliciesPage/_styles.scss +++ b/frontend/pages/policies/ManagePoliciesPage/_styles.scss @@ -101,7 +101,7 @@ align-items: center; padding-left: $pad-medium; padding-right: $pad-medium; - border-radius: 4px; + border-radius: $border-radius; font-size: $x-small; font-family: "Inter", sans-serif; font-weight: $bold; diff --git a/frontend/pages/policies/ManagePoliciesPage/components/AddPolicyModal/_styles.scss b/frontend/pages/policies/ManagePoliciesPage/components/AddPolicyModal/_styles.scss index be5cf1dbb7..376aacc859 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/AddPolicyModal/_styles.scss +++ b/frontend/pages/policies/ManagePoliciesPage/components/AddPolicyModal/_styles.scss @@ -25,7 +25,7 @@ font-size: $x-small; font-weight: $bold; padding: 2px 4px; - border-radius: 4px; + border-radius: $border-radius; margin-left: 0.5rem; position: relative; top: -2px; diff --git a/frontend/pages/policies/ManagePoliciesPage/components/ManageAutomationsModal/_styles.scss b/frontend/pages/policies/ManagePoliciesPage/components/ManageAutomationsModal/_styles.scss index ec85f7f7a9..467d05f39e 100644 --- a/frontend/pages/policies/ManagePoliciesPage/components/ManageAutomationsModal/_styles.scss +++ b/frontend/pages/policies/ManagePoliciesPage/components/ManageAutomationsModal/_styles.scss @@ -4,7 +4,7 @@ background-color: $ui-off-white; color: $core-fleet-blue; border: 1px solid $ui-fleet-black-10; - border-radius: 4px; + border-radius: $border-radius; padding: 7px $pad-medium; margin: $pad-large 0 0 44px; } diff --git a/frontend/pages/policies/PolicyPage/_styles.scss b/frontend/pages/policies/PolicyPage/_styles.scss index 1eb28ded67..f069352178 100644 --- a/frontend/pages/policies/PolicyPage/_styles.scss +++ b/frontend/pages/policies/PolicyPage/_styles.scss @@ -59,7 +59,7 @@ background-color: $core-white; border: none; box-shadow: inset 0 0 0 1px $ui-fleet-black-25; - border-radius: 6px; + border-radius: $border-radius-large; cursor: pointer; display: flex; align-items: center; diff --git a/frontend/pages/policies/PolicyPage/components/PolicyQueriesErrorsTable/_styles.scss b/frontend/pages/policies/PolicyPage/components/PolicyQueriesErrorsTable/_styles.scss index 4e110ad1dd..24618c22f9 100644 --- a/frontend/pages/policies/PolicyPage/components/PolicyQueriesErrorsTable/_styles.scss +++ b/frontend/pages/policies/PolicyPage/components/PolicyQueriesErrorsTable/_styles.scss @@ -3,7 +3,7 @@ &__wrapper { border: 1px solid $ui-fleet-black-10; - border-radius: 4px; + border-radius: $border-radius; overflow: hidden; margin-top: $pad-medium; } diff --git a/frontend/pages/policies/PolicyPage/components/PolicyQueriesTable/_styles.scss b/frontend/pages/policies/PolicyPage/components/PolicyQueriesTable/_styles.scss index d0d5d05d28..65fa20a8a5 100644 --- a/frontend/pages/policies/PolicyPage/components/PolicyQueriesTable/_styles.scss +++ b/frontend/pages/policies/PolicyPage/components/PolicyQueriesTable/_styles.scss @@ -3,7 +3,7 @@ &__wrapper { border: 1px solid $ui-fleet-black-10; - border-radius: 4px; + border-radius: $border-radius; overflow: hidden; margin-top: $pad-medium; } diff --git a/frontend/pages/queries/ManageQueriesPage/components/ManageAutomationsModal/_styles.scss b/frontend/pages/queries/ManageQueriesPage/components/ManageAutomationsModal/_styles.scss index a0e403d935..4acc671a11 100644 --- a/frontend/pages/queries/ManageQueriesPage/components/ManageAutomationsModal/_styles.scss +++ b/frontend/pages/queries/ManageQueriesPage/components/ManageAutomationsModal/_styles.scss @@ -11,7 +11,7 @@ flex-direction: column; align-items: flex-start; align-self: stretch; - border-radius: 4px; + border-radius: $border-radius; border: 1px solid $ui-fleet-black-10; } diff --git a/frontend/pages/software/ManageSoftwarePage/components/ManageAutomationsModal/_styles.scss b/frontend/pages/software/ManageSoftwarePage/components/ManageAutomationsModal/_styles.scss index 5bb83b84f0..2f6297388a 100644 --- a/frontend/pages/software/ManageSoftwarePage/components/ManageAutomationsModal/_styles.scss +++ b/frontend/pages/software/ManageSoftwarePage/components/ManageAutomationsModal/_styles.scss @@ -4,7 +4,7 @@ background-color: $ui-off-white; color: $core-fleet-blue; border: 1px solid $ui-fleet-black-10; - border-radius: 4px; + border-radius: $border-radius; padding: 7px $pad-medium; margin: $pad-large 0 0 44px; } diff --git a/frontend/services/entities/host_count.ts b/frontend/services/entities/host_count.ts index 9e4bba000b..5511dcfc10 100644 --- a/frontend/services/entities/host_count.ts +++ b/frontend/services/entities/host_count.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import sendRequest from "services"; import endpoints from "utilities/endpoints"; -import { FileVaultProfileStatus, BootstrapPackageStatus } from "interfaces/mdm"; +import { DiskEncryptionStatus, BootstrapPackageStatus } from "interfaces/mdm"; import { HostStatus } from "interfaces/host"; import { buildQueryStringFromParams, @@ -43,7 +43,7 @@ export interface IHostCountLoadOptions { osId?: number; osName?: string; osVersion?: string; - diskEncryptionStatus?: FileVaultProfileStatus; + diskEncryptionStatus?: DiskEncryptionStatus; bootstrapPackageStatus?: BootstrapPackageStatus; } diff --git a/frontend/services/entities/hosts.ts b/frontend/services/entities/hosts.ts index b8abf7061b..e4d95353d5 100644 --- a/frontend/services/entities/hosts.ts +++ b/frontend/services/entities/hosts.ts @@ -11,7 +11,7 @@ import { import { SelectedPlatform } from "interfaces/platform"; import { ISoftware } from "interfaces/software"; import { - FileVaultProfileStatus, + DiskEncryptionStatus, BootstrapPackageStatus, IMdmSolution, } from "interfaces/mdm"; @@ -29,6 +29,11 @@ export interface ILoadHostsResponse { mobile_device_management_solution: IMdmSolution; } +// the source of truth for the filter option names. +// there are used on many other pages but we define them here. +// TODO: add other filter options here. +export const DISK_ENCRYPTION_QUERY_PARAM_NAME = "os_settings_disk_encryption"; + export interface ILoadHostsQueryKey extends ILoadHostsOptions { scope: "hosts"; } @@ -57,7 +62,7 @@ export interface ILoadHostsOptions { device_mapping?: boolean; columns?: string; visibleColumns?: string; - diskEncryptionStatus?: FileVaultProfileStatus; + diskEncryptionStatus?: DiskEncryptionStatus; bootstrapPackageStatus?: BootstrapPackageStatus; } @@ -83,7 +88,7 @@ export interface IExportHostsOptions { device_mapping?: boolean; columns?: string; visibleColumns?: string; - diskEncryptionStatus?: FileVaultProfileStatus; + diskEncryptionStatus?: DiskEncryptionStatus; } export interface IActionByFilter { diff --git a/frontend/services/entities/mdm.ts b/frontend/services/entities/mdm.ts index 55416203dc..41301f3d3b 100644 --- a/frontend/services/entities/mdm.ts +++ b/frontend/services/entities/mdm.ts @@ -1,19 +1,61 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { FileVaultProfileStatus } from "interfaces/mdm"; +import { DiskEncryptionStatus, MdmProfileStatus } from "interfaces/mdm"; import { APP_CONTEXT_NO_TEAM_ID } from "interfaces/team"; import sendRequest from "services"; import endpoints from "utilities/endpoints"; import { buildQueryStringFromParams } from "utilities/url"; -export type IFileVaultSummaryResponse = Record; - export interface IEulaMetadataResponse { name: string; token: string; created_at: string; } -export default { +export type ProfileStatusSummaryResponse = Record; + +export interface IDiskEncryptionStatusAggregate { + macos: number; + windows: number; +} + +export type IDiskEncryptionSummaryResponse = Record< + DiskEncryptionStatus, + IDiskEncryptionStatusAggregate +>; + +// This function combines the profile status summary and the disk encryption summary +// to generate the aggregate profile status summary. We are doing this as a temporary +// solution until we have the API that will return the aggregate profile status summary +// from one call. +// TODO: API INTEGRATION: remove when API is implemented that returns windows +// data in the aggregate profile status summary. +const generateCombinedProfileStatusSummary = ( + profileStatuses: ProfileStatusSummaryResponse, + diskEncryptionSummary: IDiskEncryptionSummaryResponse +): ProfileStatusSummaryResponse => { + const { verified, verifying, failed, pending } = profileStatuses; + const { + verified: verifiedDiskEncryption, + verifying: verifyingDiskEncryption, + failed: failedDiskEncryption, + action_required: actionRequiredDiskEncryption, + enforcing: enforcingDiskEncryption, + removing_enforcement: removingEnforcementDiskEncryption, + } = diskEncryptionSummary; + + return { + verified: verified + verifiedDiskEncryption.windows, + verifying: verifying + verifyingDiskEncryption.windows, + failed: failed + failedDiskEncryption.windows, + pending: + pending + + actionRequiredDiskEncryption.windows + + enforcingDiskEncryption.windows + + removingEnforcementDiskEncryption.windows, + }; +}; + +const mdmService = { downloadDeviceUserEnrollmentProfile: (token: string) => { const { DEVICE_USER_MDM_ENROLLMENT_PROFILE } = endpoints; return sendRequest("GET", DEVICE_USER_MDM_ENROLLMENT_PROFILE(token)); @@ -72,24 +114,51 @@ export default { return sendRequest("DELETE", MDM_PROFILE(profileId)); }, - getAggregateProfileStatuses: (teamId = APP_CONTEXT_NO_TEAM_ID) => { + // TODO: API INTEGRATION: we need to rework this when we create API call that + // will return the aggregate statuses for windows included in the response. + // Currently to get windows data included we will need to make a separate call. + // We will likely change this to go back to single "getProfileStatusSummary" API call. + getAggregateProfileStatuses: async ( + teamId = APP_CONTEXT_NO_TEAM_ID, + // TODO: WINDOWS FEATURE FLAG: remove when we windows feature is released. + includeWindows: boolean + ) => { + // if we are not including windows we can just call the existing profile summary API + if (!includeWindows) { + return mdmService.getProfileStatusSummary(teamId); + } + + // otherwise we have to make two calls and combine the results. + return mdmService + .getAggregateProfileStatusesWithWindows(teamId) + .then((res) => generateCombinedProfileStatusSummary(...res)); + }, + + getAggregateProfileStatusesWithWindows: async (teamId: number) => { + return Promise.all([ + mdmService.getProfileStatusSummary(teamId), + mdmService.getDiskEncryptionSummary(teamId), + ]); + }, + + getProfileStatusSummary: (teamId = APP_CONTEXT_NO_TEAM_ID) => { const path = `${ endpoints.MDM_PROFILES_AGGREGATE_STATUSES }?${buildQueryStringFromParams({ team_id: teamId })}`; - return sendRequest("GET", path); }, - getDiskEncryptionAggregate: (teamId?: number) => { - let { MDM_APPLE_DISK_ENCRYPTION_AGGREGATE: path } = endpoints; + getDiskEncryptionSummary: (teamId?: number) => { + let { MDM_DISK_ENCRYPTION_SUMMARY: path } = endpoints; if (teamId) { path = `${path}?${buildQueryStringFromParams({ team_id: teamId })}`; } - return sendRequest("GET", path); }, + // TODO: API INTEGRATION: change when API is implemented that works for windows + // disk encryption too. updateAppleMdmSettings: (enableDiskEncryption: boolean, teamId?: number) => { const { MDM_UPDATE_APPLE_SETTINGS: teamsEndpoint, @@ -98,7 +167,9 @@ export default { if (teamId === 0) { return sendRequest("PATCH", noTeamsEndpoint, { mdm: { + // TODO: API INTEGRATION: remove macos_settings when API change is merged in. macos_settings: { enable_disk_encryption: enableDiskEncryption }, + // enable_disk_encryption: enableDiskEncryption, }, }); } @@ -179,3 +250,5 @@ export default { }); }, }; + +export default mdmService; diff --git a/frontend/styles/var/_global.scss b/frontend/styles/var/_global.scss index 0c772c21e8..7876654c4c 100644 --- a/frontend/styles/var/_global.scss +++ b/frontend/styles/var/_global.scss @@ -1,2 +1,3 @@ $border-radius: 4px; $border-radius-large: 6px; +$border-radius-xlarge: 10px; diff --git a/frontend/utilities/endpoints.ts b/frontend/utilities/endpoints.ts index e1a3880b99..c78504a634 100644 --- a/frontend/utilities/endpoints.ts +++ b/frontend/utilities/endpoints.ts @@ -51,7 +51,7 @@ export default { MDM_PROFILE: (id: number) => `/${API_VERSION}/fleet/mdm/apple/profiles/${id}`, MDM_UPDATE_APPLE_SETTINGS: `/${API_VERSION}/fleet/mdm/apple/settings`, MDM_PROFILES_AGGREGATE_STATUSES: `/${API_VERSION}/fleet/mdm/apple/profiles/summary`, - MDM_APPLE_DISK_ENCRYPTION_AGGREGATE: `/${API_VERSION}/fleet/mdm/apple/filevault/summary`, + MDM_DISK_ENCRYPTION_SUMMARY: `/${API_VERSION}/fleet/mdm/disk_encryption/summary`, MDM_APPLE_SSO: `/${API_VERSION}/fleet/mdm/sso`, MDM_APPLE_ENROLLMENT_PROFILE: (token: string, ref?: string) => { const query = new URLSearchParams({ token }); diff --git a/frontend/utilities/url/index.ts b/frontend/utilities/url/index.ts index c535c80131..d6eb7b6c89 100644 --- a/frontend/utilities/url/index.ts +++ b/frontend/utilities/url/index.ts @@ -1,6 +1,10 @@ -import { FileVaultProfileStatus, BootstrapPackageStatus } from "interfaces/mdm"; import { isEmpty, reduce, omitBy, Dictionary } from "lodash"; -import { MacSettingsStatusQueryParam } from "services/entities/hosts"; + +import { DiskEncryptionStatus, BootstrapPackageStatus } from "interfaces/mdm"; +import { + DISK_ENCRYPTION_QUERY_PARAM_NAME, + MacSettingsStatusQueryParam, +} from "services/entities/hosts"; type QueryValues = string | number | boolean | undefined | null; export type QueryParams = Record; @@ -24,7 +28,7 @@ interface IMutuallyExclusiveHostParams { osId?: number; osName?: string; osVersion?: string; - diskEncryptionStatus?: FileVaultProfileStatus; + diskEncryptionStatus?: DiskEncryptionStatus; bootstrapPackageStatus?: BootstrapPackageStatus; } @@ -123,7 +127,7 @@ export const reconcileMutuallyExclusiveHostParams = ({ case !!lowDiskSpaceHosts: return { low_disk_space: lowDiskSpaceHosts }; case !!diskEncryptionStatus: - return { macos_settings_disk_encryption: diskEncryptionStatus }; + return { [DISK_ENCRYPTION_QUERY_PARAM_NAME]: diskEncryptionStatus }; case !!bootstrapPackageStatus: return { bootstrap_package: bootstrapPackageStatus }; default: diff --git a/go.mod b/go.mod index 7913243bd9..48a36f9559 100644 --- a/go.mod +++ b/go.mod @@ -272,6 +272,7 @@ require ( github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/scjalliance/comshim v0.0.0-20230315213746-5e51f40bd3b9 // indirect github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect github.com/slack-go/slack v0.9.4 // indirect diff --git a/go.sum b/go.sum index ca02b6bc31..9c99a41dc3 100644 --- a/go.sum +++ b/go.sum @@ -1080,6 +1080,8 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/scjalliance/comshim v0.0.0-20190308082608-cf06d2532c4e/go.mod h1:9Tc1SKnfACJb9N7cw2eyuI6xzy845G7uZONBsi5uPEA= +github.com/scjalliance/comshim v0.0.0-20230315213746-5e51f40bd3b9 h1:rc/CcqLH3lh8n+csdOuDfP+NuykE0U6AeYSJJHKDgSg= +github.com/scjalliance/comshim v0.0.0-20230315213746-5e51f40bd3b9/go.mod h1:a/83NAfUXvEuLpmxDssAXxgUgrEy12MId3Wd7OTs76s= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sebdah/goldie v1.0.0 h1:9GNhIat69MSlz/ndaBg48vl9dF5fI+NBB6kfOxgfkMc= github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= diff --git a/handbook/business-operations/README.md b/handbook/business-operations/README.md index 5c6f8c710e..17a9a35690 100644 --- a/handbook/business-operations/README.md +++ b/handbook/business-operations/README.md @@ -35,6 +35,7 @@ Certain new team members, especially in go-to-market (GTM) roles, will need paid | 🐋 SC | ✅ | ✅ | ❌ | ❌ | ✅ | 🫧 SDR | ✅ | ✅ | ✅ | ❌ | ❌ | ⚗️ PM | ❌ | ❌ | ❌ | ✅ | ✅ +| ⚗️ PD | ❌ | ❌ | ❌ | ✅ | ✅ | 🔦 CEO | ✅ | ✅ | ✅ | ✅ | ✅ | Other roles | ❌ | ❌ | ❌ | ❌ | ❌ diff --git a/handbook/ceo.md b/handbook/ceo.md index 864baefee6..e74b1e3aa9 100644 --- a/handbook/ceo.md +++ b/handbook/ceo.md @@ -17,7 +17,7 @@ The CEO is the [directly responsible individual](https://fleetdm.com/handbook/co - Please use issue comments and GitHub mentions to communicate follow-ups or answer questions related to your request. - Any Fleet team member can view the [🐈‍⬛#g-ceo kanban board](https://app.zenhub.com/workspaces/-g-ceo-645b0eab68a4d40c0795ff61/board?sprints=none) (confidential) for this team, including pending tasks and requests. - **Do not add events to the CEO's calendar.** events added directly to the CEO's calendar will be declined and removed. Even if the CEO asks you to set up a meeting or add him to a call, please [get scheduling help from the Apprentice](#schedule-time-with-the-ceo). -- **For personal or extremely urgent requests** that cannot wait one business day, send a Slack direct message (DM) to `@mikermcneil` right away. +- **For personal or extremely urgent requests** that cannot wait one business day, send a Slack direct message (DM) to `@mikermcneil` right away 🎵 - If you mention the CEO or reply from within a Slack thread, he [will not read your message](#why-not-mention-the-ceo-in-slack-threads). - **If you're a hiring manager**, you can [schedule a CEO interview](https://github.com/fleetdm/confidential/issues/new?assignees=sampfluger88&labels=%23g-ceo&projects=&template=&title=CEO%20interview%3a%20%7BCANDIDATE_NAME%7D&body=-%20[%20]%20I%20followed%20all%20the%20steps%20in%20https%3A%2F%2Ffleetdm.com%2Fhandbook%2Fcompany%2Fleadership%23hiring-a-new-team-member%20before%20submitting%20this%20issue.) - **If you're in Business Operations**, you can [request warehoused equipment be shipped from Fleet IT](#request-equipment-from-fleet-it). diff --git a/handbook/company/open-positions.yml b/handbook/company/open-positions.yml index 233d074e7d..5aaa55deae 100644 --- a/handbook/company/open-positions.yml +++ b/handbook/company/open-positions.yml @@ -220,6 +220,25 @@ - ➕ Bonus: Experienced with Go. - 💭 3-5 years' of experience in cloud infrastructure (AWS/GCP/Azure). - 🦉 Proficient in infrastructure as code and container deployments. +- jobTitle: ⚗️ Product Manager, Security + department: Product + hiringManagerName: Mo Zhu + hiringManagerLinkedInUrl: linkedin.com/in/mo-zhu + hiringManagerGithubUsername: zhumo + responsibilities: | + - 🤝 Deeply understand customer needs and workflows through direct conversations + - 🛣️ Use gained customer understanding to inform product direction and strategy + - 💬 Translate between technical and business needs, orally and in writing + - 📝 Write user stories and requirements to guide design and engineering + - 🛫 Oversee product development lifecycle from concept to release to documentation and support + - 🎁 Develop go-to-market strategies and launch plans for new cybersecurity products, including pricing, positioning, and messaging. + - 🔎 Conduct competitive product analysis + - 👯 Communicate and build strong relationships with cross-functional teams and stakeholders + experience: | + - ⚗️ 2+ years experience as a product manager at a software technology firm + - ⚙️ 2+ years experience as a technical contributor at a software technology firm + - 🏃 Ability to work in a fast-paced startup environment + - 🔒 Bonus: experience in cybersecurity # Note: commenting out this open position because the page link did not exist in the current version of the company handbook page. (2023-08-31) # - jobTitle: 🐋 Solutions Consultant diff --git a/handbook/company/pricing-features-table.yml b/handbook/company/pricing-features-table.yml index 775b50b171..ad63dd38a3 100644 --- a/handbook/company/pricing-features-table.yml +++ b/handbook/company/pricing-features-table.yml @@ -1,193 +1,268 @@ +- categoryName: Other + features: + - industryName: File integrity monitoring (FIM) # Short industry phrase + friendlyName: Detect changes to critical files # Short, Fleet one-liner for the feature, written in the imperative mood. (If easy to do, base this off of the words that an actual customer is saying.) + description: Specify files to monitor for changes or deletions, then log those events to your SIEM or data lake, including key information such as filepath and checksum. # Clear Mr. Rogers description + documentationUrl: https://fleetdm.com/guides/osquery-evented-tables-overview#file-integrity-monitoring-fim # URL of the single-best page within the docs which serves as a "jumping-off point" for this feature. + screenshotSrc: "" # A screenshot of the single, best, simplifying, obvious example + tier: Free # Either "Free" or "Premium" + usualDepartment: Security # or omit if there isn't a particular departmental leaning we've noticed + productCategories: [Endpoint operations] # or omit if this isn't associated with a single product category + dri: mikermcneil #GitHub user name + demos: + - description: A top gaming company needed a way to monitor critical files on production Debian servers. + quote: The FIM features are kind of a top priority. + moreInfoUrl: https://docs.google.com/document/d/1pE9U-1E4YDiy6h4TorszrTOiFAauFiORikSUFUqW7Pk/edit + cues: + - description: Monitor critical files on production Debian servers + - description: Detect illicit activity + moreInfoUrl: https://www.beyondtrust.com/resources/glossary/file-integrity-monitoring + - description: Pinpoint unintended changes + moreInfoUrl: https://www.beyondtrust.com/resources/glossary/file-integrity-monitoring + - description: Verify update status and monitoring system health + moreInfoUrl: https://www.beyondtrust.com/resources/glossary/file-integrity-monitoring + - description: Meet compliance mandates + moreInfoUrl: https://www.beyondtrust.com/resources/glossary/file-integrity-monitoring + - industryName: Human-endpoint mapping + friendlyName: See who logs in on every computer + description: Identify who logs in to any system, including login history and current sessions. Look up any host by the email address of the person using it. + documentationUrl: "" # todo + screenshotSrc: "" + tier: Free + productCategories: [Endpoint operations] + dri: mikermcneil + demos: + - description: Security engineers at a top gaming company wanted to get demographics off their macOS, Windows, and Linux machines about who the user is and who's logged in. + moreInfoUrl: https://docs.google.com/document/d/1qFYtMoKh3zyERLhbErJOEOo2me6Bc7KOOkjKn482Sqc/edit + cues: + - description: Human-to-device mapping + - description: Look up computer by ActiveDirectory account + - description: Find device by Google Chrome user + - description: Check user login history + moreInfoUrl: https://www.lepide.com/how-to/audit-who-logged-into-a-computer-and-when.html#:~:text=To%20find%20out%20the%20details,logs%20in%20%E2%80%9CWindows%20Logs%E2%80%9D. + - description: See currently logged in users + moreInfoUrl: https://www.top-password.com/blog/see-currently-logged-in-users-in-windows/ + - description: Get demographics off of our machines about who the user is and who's logged in + moreInfoUrl: https://docs.google.com/document/d/1qFYtMoKh3zyERLhbErJOEOo2me6Bc7KOOkjKn482Sqc/edit + - description: See what servers someone is logged-in on + moreInfoUrl: https://community.spiceworks.com/topic/138171-is-there-a-way-to-see-what-servers-someone-is-logged-in-on + - industryName: REST API + friendlyName: Automate any feature + description: "" + documentationUrl: https://fleetdm.com/docs/rest-api/rest-api + screenshotSrc: "" + tier: Free + dri: rachaelshaw + - industryName: Command line tool (CLI) + tier: Free - categoryName: Device management features: - - name: User-initiated enrollment of macOS computers + - industryName: User-initiated enrollment of macOS computers tier: Free - comingSoon: false - - name: Remotely enforce macOS settings + usualDepartment: IT + productCategories: [Device management] + - industryName: Remotely enforce macOS settings tier: Free - comingSoon: false - - name: Low-level macOS MDM commands (e.g. remote restart) + usualDepartment: IT + productCategories: [Device management] + - industryName: Low-level macOS MDM commands (e.g. remote restart) tier: Free - comingSoon: false - - name: Native macOS update reminders + usualDepartment: IT + productCategories: [Device management] + - industryName: Native macOS update reminders tier: Free - comingSoon: false - - name: Zero-touch setup for macOS computers + usualDepartment: IT + productCategories: [Device management] + - industryName: Zero-touch setup for macOS computers tier: Premium - comingSoon: false - - name: Safely execute custom scripts (macOS, Windows, and Linux) + usualDepartment: IT + productCategories: [Device management] + - industryName: Safely execute custom scripts (macOS, Windows, and Linux) tier: Premium - comingSoon: false - - name: End-user macOS update reminders (via Nudge) + productCategories: [Device management, Endpoint operations] + - industryName: End-user macOS update reminders (via Nudge) tier: Premium - comingSoon: false - - name: Encrypt macOS hard disks with FileVault + usualDepartment: IT + productCategories: [Device management] + - industryName: Encrypt macOS hard disks with FileVault tier: Premium - comingSoon: false - - name: Manage queued MDM commands on macOS + usualDepartment: IT + productCategories: [Device management] + - industryName: Manage queued MDM commands on macOS tier: Premium - comingSoon: true - - name: Remotely lock and wipe macOS computers + comingSoonOn: 2023-12-31 + usualDepartment: IT + productCategories: [Device management] + - industryName: Remotely lock and wipe macOS computers tier: Premium - comingSoon: false - - name: Update apps on macOS computers + usualDepartment: IT + productCategories: [Device management] + - industryName: Update apps on macOS computers tier: Premium - comingSoon: true - - name: Puppet integration # « Map macOS settings to computers with Puppet module + comingSoonOn: 2024-03-31 + usualDepartment: IT + productCategories: [Device management] + - industryName: Puppet integration + friendlyName: Map macOS settings to computers with Puppet module tier: Premium - comingSoon: false - - name: Interactive MDM migration # « end-user initiated MDM migration, with interactive UI + usualDepartment: IT + productCategories: [Device management] + - industryName: Interactive MDM migration # « end-user initiated MDM migration, with interactive UI tier: Premium - comingSoon: false + usualDepartment: IT + productCategories: [Device management] - categoryName: Support features: - - name: Public issue tracker (GitHub) + - industryName: Public issue tracker (GitHub) tier: Free - comingSoon: false - - name: Community Slack channel + - industryName: Community Slack channel tier: Free - comingSoon: false - - name: Unlimited email support (confidential) + - industryName: Unlimited email support (confidential) tier: Premium - comingSoon: false - - name: Phone and video call support + - industryName: Phone and video call support tier: Premium - comingSoon: false - categoryName: Inventory management features: - - name: Secure REST API + - industryName: Device inventory dashboard tier: Free - comingSoon: false - - name: Command line tool (CLI) + - industryName: Browse installed software packages tier: Free - comingSoon: false - - name: Realtime device inventory dashboard + - industryName: Search devices by IP, serial, hostname, UUID tier: Free - comingSoon: false - - name: Browse installed software packages - tier: Free - comingSoon: false - - name: Search devices by IP, serial, hostname, UUID - tier: Free - comingSoon: false - - name: Target and configure specific groups of devices + - industryName: Target and configure specific groups of devices tier: Premium - comingSoon: false - - name: Aggregate insights for groups of devices + - industryName: Generate reports for groups of devices tier: Premium - comingSoon: false - categoryName: Collaboration features: - - name: Shareable device health reports + - industryName: Shareable device health reports tier: Free - comingSoon: false - - name: Versionable queries and config (GitOps) + - industryName: Versionable queries and config (GitOps) tier: Free - comingSoon: false - - name: Human-to-device mapping + demos: + - description: A top financial services company needed to set up rolling deployments for changes to osquery agents running on their production servers. + moreInfoUrl: https://docs.google.com/document/d/1UdzZMyBLbs9SUXfSXN2x2wZQCbjZZUetYlNWH6-ryqQ/edit#heading=h.2lh6ehprpvl6 + - industryName: Scope transparency tier: Free - comingSoon: false - - name: Scope transparency - tier: Free - comingSoon: false + moreInfoUrl: https://fleetdm.com/transparency - categoryName: Security and compliance features: - - name: Single sign on (SSO, SAML) + - industryName: Single sign on (SSO, SAML) tier: Free - comingSoon: false - - name: Report on disk encryption status (FileVault) + - industryName: Disk encryption + friendlyName: Ensure hard disks are encrypted + description: Encrypt hard disks of macOS and Windows computers, manage escrowed encryption keys, and report on disk encryption status (FileVault, BitLocker). tier: Free - comingSoon: false - - name: Audit queries and user activities + cues: + - description: Report on disk encryption status + - description: Encrypt hard disks on macOS with FileVault + - description: Escrow FileVault keys on macOS + - description: Encrypt hard disks on Windows with BitLocker + - industryName: Audit queries and user activities tier: Free - comingSoon: false - - name: Grant API-only access + usualDepartment: Security + - industryName: Grant API-only access tier: Free - comingSoon: false - - name: Role-based access control - tier: Free - comingSoon: false - - name: Ship logs to Splunk, Snowflake, and more - tier: Free - comingSoon: false - - name: Programmable audit log + - industryName: Programmable audit log tier: Premium - comingSoon: false - - name: Just-in-time (JIT) provisioning + usualDepartment: Security + cues: + - description: Export activity of Fleet admins to your SIEM or data lake + - industryName: Just-in-time (JIT) provisioning tier: Premium - comingSoon: false - - name: Automated user role sync via Okta, AD, or any IDP + - industryName: Automated user role sync via Okta, AD, or any IDP tier: Premium - comingSoon: false - - name: Vanta integration + cue: + - description: Automatically set admin access to Fleet based on your IDP + - industryName: Vanta integration tier: Premium - comingSoon: false - - name: Trigger a workflow based on a failing policy + - industryName: Trigger a workflow based on a failing policy tier: Premium - comingSoon: true - - name: Granular role-based access control + - industryName: Role-based access control tier: Premium - comingSoon: false - categoryName: Monitoring features: - - name: Schedule and automate custom queries + - industryName: Schedule and automate custom queries tier: Free - comingSoon: false - - name: Detect vulnerable software + usualDepartment: Security + cues: + - description: Ship logs to Splunk, Snowflake, and more + - description: Export the data to other systems + moreInfoUrl: https://docs.google.com/document/d/1pE9U-1E4YDiy6h4TorszrTOiFAauFiORikSUFUqW7Pk/edit + - description: Export data to a third-party SIEM tool + moreInfoUrl: https://www.websense.com/content/support/library/web/hosted/admin_guide/siem_integration_explain.aspx + - industryName: Detect vulnerable software tier: Free - comingSoon: false - - name: Query performance monitoring + usualDepartment: Security + productCategories: [Vulnerability management] + demos: + - description: A top gaming company wanted to replace Qualys for infrastructure vulnerability detection. + quote: So we have some stuff today through Qualys, but it's just not very good. A lot of it is...it's just really noisy. I'm trying to find out specifically, actually what packages are installed where, and then the ability to live query them. + moreInfoUrl: https://docs.google.com/document/d/1JWtRsW1FUTCkZEESJj9-CvXjLXK4219by-C6vvVVyBY/edit + - industryName: Query performance monitoring tier: Free - comingSoon: false - - name: Standard query and policy library + demos: + - description: A top software company needed to understand the performance impact of osquery queries before running them on all of their production Linux servers. + moreInfoUrl: https://docs.google.com/document/d/1WzMc8GJCRU6tTBb6gLsSTzFysqtXO8CtP2sXMPKgYSk/edit?disco=AAAA6xuVxGg + - description: A top software company wanted to detect regressions when adding/changing queries and fail builds if queries were too expensive. + moreInfoUrl: https://docs.google.com/document/d/1WzMc8GJCRU6tTBb6gLsSTzFysqtXO8CtP2sXMPKgYSk/edit?disco=AAAA6xuVxGg + - industryName: Device trust tier: Free - comingSoon: false - - name: Policy and vulnerability automations (webhook, Zendesk, JIRA, ServiceNow*) + cue: + - description: Standard query and policy library + - description: Beyondcorp + - description: Zero trust + - description: Conditional access + - industryName: Policy and vulnerability automations (webhook, Zendesk, JIRA, ServiceNow*) tier: Free - comingSoon: false - - name: Detect and surface issues with devices (policies) + - industryName: Detect and surface issues with devices (policies) tier: Free - comingSoon: false - - name: Mark policies as critical + - industryName: Mark policies as critical tier: Premium - comingSoon: false - - name: Vulnerability scores (EPSS and CVSS) + - industryName: Vulnerability scores (EPSS and CVSS) tier: Premium - comingSoon: false - - name: CISA known exploited vulnerabilities + usualDepartment: Security + productCategories: [Vulnerability management] + - industryName: CISA known exploited vulnerabilities tier: Premium - comingSoon: false - - name: End-user self-service + usualDepartment: Security + productCategories: [Vulnerability management] + - industryName: End-user self-service tier: Premium - comingSoon: false + usualDepartment: IT + productCategories: [Device management, Endpoint operations] - categoryName: Data outputs features: - - name: Flexible log destinations (AWS Kinesis, Lambda, GCP, Kafka) + - industryName: Flexible log destinations (AWS Kinesis, Lambda, GCP, Kafka) tier: Free - comingSoon: false - - name: File carving (AWS S3) + usualDepartment: Security + productCategories: [Endpoint operations] + - industryName: File carving (AWS S3) tier: Free - comingSoon: false + usualDepartment: Security + productCategories: [Endpoint operations] - categoryName: Deployment features: - - name: Self-hosted + - industryName: Self-hosted tier: Free - comingSoon: false - - name: Deployment tools (Helm, Terraform) + cues: + - description: Self-managed + - description: Host it yourself + - industryName: Deployment tools (Terraform, Helm) tier: Free - comingSoon: false - - name: Configure osquery startup flags remotely + - industryName: Configure osquery startup flags remotely tier: Free - comingSoon: false - - name: Auto-update osquery agents + usualDepartment: Security + productCategories: [Endpoint operations] + - industryName: Auto-update osquery agents tier: Free - comingSoon: false - - name: Self-managed auto-update registry + productCategories: [Endpoint operations] + - industryName: Self-managed auto-update registry tier: Premium - comingSoon: false - - name: Manage osquery extensions remotely + usualDepartment: Security + productCategories: [Endpoint operations] + - industryName: Manage osquery extensions remotely tier: Premium - comingSoon: false - - name: Managed Cloud + productCategories: [Endpoint operations] + - industryName: Managed Cloud tier: Premium - comingSoon: false diff --git a/handbook/company/why-this-way.md b/handbook/company/why-this-way.md index 962c707227..071ea4a7c4 100644 --- a/handbook/company/why-this-way.md +++ b/handbook/company/why-this-way.md @@ -13,7 +13,7 @@ Fleet's source code, website, documentation, company handbook, and internal tool Meanwhile, the [company behind Fleet](https://twitter.com/fleetctl) is built on the [open-core](https://www.heavybit.com/library/video/commercial-open-source-business-strategies) business model. Openness is one of our core [values](https://fleetdm.com/handbook/company#values), and everything we do is [public by default](https://handbook.gitlab.com/handbook/values/#public-by-default). Even the [company handbook](https://fleetdm.com/handbook) is open to the world. -Is open-source collaboration _really_ worth all that? Is it any good? +Is open-source collaboration _all that_? Is it any good? Here are some of the reasons we build in the open: diff --git a/handbook/engineering/Load-testing.md b/handbook/engineering/Load-testing.md index bcdab25be4..ac93f16565 100644 --- a/handbook/engineering/Load-testing.md +++ b/handbook/engineering/Load-testing.md @@ -58,7 +58,7 @@ After the hosts have been enrolled, you can add `-only_already_enrolled` to make ## Infrastructure setup -The deployment of Fleet was done through the loadtesting [terraform maintained in the repo](https://github.com/fleetdm/fleet/tree/main/tools/loadtesting/terraform) with the following command: +The deployment of Fleet was done through the loadtesting [terraform maintained in the repo](https://github.com/fleetdm/fleet/tree/main/infrastructure/loadtesting/terraform) with the following command: ```bash terraform apply -var tag= diff --git a/handbook/engineering/README.md b/handbook/engineering/README.md index df35137430..975185961c 100644 --- a/handbook/engineering/README.md +++ b/handbook/engineering/README.md @@ -632,6 +632,17 @@ If the bug does not meet the criteria of a critical bug, the EM will determine i When fixing the bug, if the proposed solution requires changes that would affect the user experience (UI, API, or CLI), notify the EM and PM to align on the acceptability of the change. +Engineering teams coordinate on bug fixes with the product team during the joint sprint kick-off review. If one team is at capacity and a bug needs attention, another team can step in to assist by following these steps: + +For MDM support on CX bugs: +- Remove the `#g-cx` label and add `#g-mdm` label. +- Add `~assisting g-cx` to clarify the bug’s origin. + +For CX support on MDM bugs: +- Remove the `#g-mdm` label and add `#g-cx` label. +- Add `~assisting g-mdm` to clarify the bug’s origin. + + Fleet [always prioritizes bugs](https://fleetdm.com/handbook/product#prioritizing-improvements) into a release within six weeks. If a bug is not prioritized in the current release, and it is not prioritized in the next release, it is removed from the "Sprint backlog" and placed back in the "Product drafting" column with the `:product` label. Product will determine if the bug should be closed as accepted behavior, or if further drafting is necessary. #### Awaiting QA diff --git a/handbook/engineering/scaling-fleet.md b/handbook/engineering/scaling-fleet.md index 125e2f95f8..0738737028 100644 --- a/handbook/engineering/scaling-fleet.md +++ b/handbook/engineering/scaling-fleet.md @@ -69,7 +69,7 @@ However, this database feature doesn’t come without a cost. The one to focus o The TLDR is: understand very well how a table will be used. If we do bulk inserts/updates, InnoDB might lock more than you anticipate and cause issues. This is not an argument to not do bulk inserts/updates, but to be very careful when you add a foreign key. -In particular, host_id is a foreign key we’ve been skipping in all the new additional host data tables, which is not something that comes for free, as with that, [we have to keep the data consistent by hand with cleanups](https://github.com/fleetdm/fleet/blob/main/server/datastore/mysql/hosts.go#L309-L309). +In particular, host_id is a foreign key we’ve been skipping in all the new additional host data tables, which is not something that comes for free, as with that, [we have to keep the data consistent by hand with cleanups](https://github.com/fleetdm/fleet/blob/71a237042a9c39a45bc8f9c76465e5ff6039eba9/server/datastore/mysql/hosts.go#L444). ### In this section diff --git a/handbook/marketing/README.md b/handbook/marketing/README.md index faac5f7210..84fcd33b61 100644 --- a/handbook/marketing/README.md +++ b/handbook/marketing/README.md @@ -36,7 +36,7 @@ Fleet's community programs are rooted in several areas; created to nurture commu ### Social media Fleet's largest asset is our user community, the people actually using Fleet. Public conversations on social media create valuable opportunities for contributors to answer technical questions and collect feedback. -Fleet [does not self-promote](https://www.audible.com/pd/The-Impact-Equation-Audiobook/B00AR1VFBU). (Great brands are [magnanimous](https://en.wikipedia.org/wiki/Magnanimity).) +Fleet [does not self-promote](https://www.audible.com/pd/The-Impact-Equation-Audiobook/B00AR1VFBU). (Great brands are [magnanimous](https://en.wikipedia.org/wiki/Magnanimity).) In fact, conversations are already happening in our social spaces that open up opportunities for Fleet to [engage with the community](https://fleetdm.com/handbook/marketing#engage-with-the-community). Here are some topics for social media posts: - Fleet the product @@ -47,11 +47,13 @@ Here are some topics for social media posts: - Industry news about device management - Upcoming events, interviews, and podcasts - ### Ads Fleet uses advertising to spread awareness through a broader audience and foster greater engagement within user communities. The more people actively using Fleet, or contributing, the better Fleet will be. +### Events +It's important for Fleet to engage at events. This provides an opportunity to directly engage with potential users and contributors, build relationships, gather feedback, and create a stronger sense of community and trust. + ## Responsibilities ### Optimize ads through experimentation @@ -116,6 +118,31 @@ Any changes to the current running ads visible to a user, including designs, key 2. Compare existing ads against the newly proposed ad within the corresponding ad platform. ([Google Ads](https://ads.google.com/home/), [LinkedIn Campaign Manager](https://www.linkedin.com/campaignmanager/), etc.) 3. If your change is approved, Field Marketer makes changes and creates a calendar reminder to check performance two weeks from the date changes were made. + +### Engage with the community +Public conversations on social media create valuable opportunities for contributors to answer technical questions and collect feedback. + +Here are some links that filter relevant conversations on each platform: +- [LinkedIn](https://www.linkedin.com/search/results/content/?datePosted=%22past-week%22&keywords=osquery%20OR%20%22fleet%20device%20management%22%20OR%20%22fleetdm%22%20OR%20%22github.com%2Ffleetdm%2Ffleet%22%20OR%20%22fleetdm.com%22&origin=FACETED_SEARCH&sid=oxR) +- [Twitter](https://twitter.com/search?q=%22osquery%22%20OR%20%22github.com%2Fosquery%2Fosquery%22%20OR%20%22github.com%2Ffleetdm%2Ffleet%22%20OR%20%22github.com%2Fkolide%2Ffleet%22%20OR%20%22fleetdm%22%20OR%20%22fleet%20device%20management%22%20OR%20%22nanomdm%22%20OR%20%22micromdm%22%20OR%20%22swiftDialog%22&src=typed_query&f=live) + +1. Find conversations that are relevant to Fleet on both LinkedIn and Twitter +2. Reply to threads looking for solutions Fleet can solve with helpful information. If additional information is needed, find help in [#help-engineering](https://fleetdm.slack.com/archives/C019WG4GH0A) for accurate information. +3. Leave a like on threads and posts that are interesting, cool, celebratory, funny, etc. within our communities. +4. If a post is helpful to our audience, reshare it. + +### Book an event +For an event to be considered, booked, and scheduled, we follow the event issue template. + +1. Create a [new GitHub issue for the #g-marketing board](https://fleetdm.com/handbook/marketing#contact-us) and select the "Event-preparation" template.. +2. Drag the issue into the "🗓 Ideas for future events" column. + +Once approval has been received, move the event into the "🗓 Planned events" column. + +### Review ongoing events +Check the "🗓 Planned events" column in [#g-marketing board](https://app.zenhub.com/workspaces/g-marketing-64e6c8e2d35c7f001a457b7f/board) and continue to work through steps in each event's issue. + + ## Rituals diff --git a/handbook/marketing/marketing.rituals.yml b/handbook/marketing/marketing.rituals.yml index 7c43d7e48f..2cb4d35329 100644 --- a/handbook/marketing/marketing.rituals.yml +++ b/handbook/marketing/marketing.rituals.yml @@ -21,3 +21,24 @@ description: "Complete draft orders." # example of a longer thing: description: "[Prioritizing next sprint](https://fleetdm.com/handbook/company/communication)" moreInfoUrl: "https://fleetdm.com/handbook/marketing#process-pending-swag-requests-from-the-website" #URL used to highlight "description:" test in table dri: "drewbakerfdm" # DRI for ritual (assignee if autoIssue) (TODO display GitHub proflie pic instead of name or title) +- + task: "Engage with the community" + startedOn: "2023-09-20" + frequency: "Daily" + description: "Find relevant conversations with the community and contribute" + moreInfoUrl: "https://fleetdm.com/handbook/marketing#engage-with-the-community" + dri: "drewbakerfdm" +- + task: "Review ongoing events" + startedOn: "2023-10-02" + frequency: "Daily" + description: "Check 🗓️ Planned events and complete steps in each issue" + moreInfoUrl: "https://fleetdm.com/handbook/marketing#review-ongoing-events" + dri: "drewbakerfdm" +- + task: "Book an event" + startedOn: "2023-10-02" + frequency: "Weekly" + description: "Populate 🗓️ Ideas for future events" + moreInfoUrl: "https://fleetdm.com/handbook/marketing#book-an-event" + dri: "drewbakerfdm" diff --git a/handbook/product/README.md b/handbook/product/README.md index 4471388fe0..30eaf80477 100644 --- a/handbook/product/README.md +++ b/handbook/product/README.md @@ -77,9 +77,9 @@ For external contributors: please consider opening an issue with reference scree Once the draft has been approved, it moves to the "Settled" column on the drafting board. -Before assigning an engineering manager for [estimation](https://fleetdm.com/handbook/engineering#sprint-ceremonies), the product team should ensure the product section of the user story [checklist](https://github.com/fleetdm/fleet/issues/new?assignees=&labels=story&projects=&template=story.md&title=) is complete. +Before assigning an engineering manager to [estimate](https://fleetdm.com/handbook/engineering#sprint-ceremonies) a user story, the product designer ensures the product section of the user story [checklist](https://github.com/fleetdm/fleet/issues/new?assignees=&labels=story&projects=&template=story.md&title=) is complete. -> The story's designer is responsible for ensuring the checklist has been completed, the requirements section is consistent with the Figma, and the group engineering manager has been assigned. +Once a bug has gone through design and is considered "Settled", the designer removes the `:product` label and moves the issue to the 'To be scheduled' column on the "Bugs" board. The product manager then prioritizes the bug into the "Sprint backlog" and assigns the group engineering manager. Learn https://fleetdm.com/handbook/company/development-groups#making-changes diff --git a/infrastructure/dogfood/terraform/aws/variables.tf b/infrastructure/dogfood/terraform/aws/variables.tf index 615976ac2e..09388cd560 100644 --- a/infrastructure/dogfood/terraform/aws/variables.tf +++ b/infrastructure/dogfood/terraform/aws/variables.tf @@ -56,7 +56,7 @@ variable "database_name" { variable "fleet_image" { description = "the name of the container image to run" - default = "fleetdm/fleet:v4.38.0" + default = "fleetdm/fleet:v4.38.1" } variable "software_inventory" { diff --git a/infrastructure/dogfood/terraform/gcp/variables.tf b/infrastructure/dogfood/terraform/gcp/variables.tf index 9306fe0904..7523062127 100644 --- a/infrastructure/dogfood/terraform/gcp/variables.tf +++ b/infrastructure/dogfood/terraform/gcp/variables.tf @@ -68,5 +68,5 @@ variable "redis_mem" { } variable "image" { - default = "fleet:v4.38.0" + default = "fleet:v4.38.1" } diff --git a/infrastructure/loadtesting/terraform/readme.md b/infrastructure/loadtesting/terraform/readme.md index bf25be2b06..e46cd0be42 100644 --- a/infrastructure/loadtesting/terraform/readme.md +++ b/infrastructure/loadtesting/terraform/readme.md @@ -1,7 +1,7 @@ ## Terraform for Loadtesting Environment The interface into this code is designed to be minimal. -If you require changes beyond whats described here, contact @zwinnerman-fleetdm. +If you require changes beyond whats described here, contact #g-infra. ### Deploying your code to the loadtesting environment diff --git a/infrastructure/sandbox/JITProvisioner/jitprovisioner.tf b/infrastructure/sandbox/JITProvisioner/jitprovisioner.tf index 71842e3cd5..fe78454409 100644 --- a/infrastructure/sandbox/JITProvisioner/jitprovisioner.tf +++ b/infrastructure/sandbox/JITProvisioner/jitprovisioner.tf @@ -206,7 +206,7 @@ resource "random_uuid" "jitprovisioner" { # Use the local to make the trigger work. locals { - fleet_tag = "v4.38.0" + fleet_tag = "v4.38.1" } resource "null_resource" "standard-query-library" { diff --git a/infrastructure/sandbox/PreProvisioner/lambda/deploy_terraform/main.tf b/infrastructure/sandbox/PreProvisioner/lambda/deploy_terraform/main.tf index d56cbdbb94..458d6677cc 100644 --- a/infrastructure/sandbox/PreProvisioner/lambda/deploy_terraform/main.tf +++ b/infrastructure/sandbox/PreProvisioner/lambda/deploy_terraform/main.tf @@ -165,7 +165,7 @@ resource "helm_release" "main" { set { name = "imageTag" - value = "v4.38.0" + value = "v4.38.1" } set { diff --git a/orbit/changes/12842-orbit-bitlocker-management b/orbit/changes/12842-orbit-bitlocker-management new file mode 100644 index 0000000000..97d7e6fe1e --- /dev/null +++ b/orbit/changes/12842-orbit-bitlocker-management @@ -0,0 +1 @@ +* Adding support to manage Bitlocker operations through Orbit notifications diff --git a/orbit/cmd/orbit/orbit.go b/orbit/cmd/orbit/orbit.go index 3b91e700f9..3e9f56df12 100644 --- a/orbit/cmd/orbit/orbit.go +++ b/orbit/cmd/orbit/orbit.go @@ -622,6 +622,7 @@ func main() { const ( renewEnrollmentProfileCommandFrequency = time.Hour windowsMDMEnrollmentCommandFrequency = time.Hour + windowsMDMBitlockerCommandFrequency = time.Hour ) configFetcher := update.ApplyRenewEnrollmentProfileConfigFetcherMiddleware(orbitClient, renewEnrollmentProfileCommandFrequency, fleetURL) configFetcher = update.ApplyRunScriptsConfigFetcherMiddleware(configFetcher, c.Bool("enable-scripts"), orbitClient) @@ -638,6 +639,7 @@ func main() { configFetcher = update.ApplySwiftDialogDownloaderMiddleware(configFetcher, updateRunner) case "windows": configFetcher = update.ApplyWindowsMDMEnrollmentFetcherMiddleware(configFetcher, windowsMDMEnrollmentCommandFrequency, orbitHostInfo.HardwareUUID, orbitClient) + configFetcher = update.ApplyWindowsMDMBitlockerFetcherMiddleware(configFetcher, windowsMDMBitlockerCommandFrequency, orbitClient) } const orbitFlagsUpdateInterval = 30 * time.Second diff --git a/orbit/pkg/bitlocker/bitlocker_management.go b/orbit/pkg/bitlocker/bitlocker_management.go new file mode 100644 index 0000000000..e210568927 --- /dev/null +++ b/orbit/pkg/bitlocker/bitlocker_management.go @@ -0,0 +1,17 @@ +package bitlocker + +// Encryption Status +type EncryptionStatus struct { + ProtectionStatusDesc string + ConversionStatusDesc string + EncryptionPercentage string + EncryptionFlags string + WipingStatusDesc string + WipingPercentage string +} + +// Volume Encryption Status +type VolumeStatus struct { + DriveVolume string + Status *EncryptionStatus +} diff --git a/orbit/pkg/bitlocker/bitlocker_management_notwindows.go b/orbit/pkg/bitlocker/bitlocker_management_notwindows.go new file mode 100644 index 0000000000..4263ba270e --- /dev/null +++ b/orbit/pkg/bitlocker/bitlocker_management_notwindows.go @@ -0,0 +1,19 @@ +//go:build !windows + +package bitlocker + +func GetRecoveryKeys(targetVolume string) (map[string]string, error) { + return nil, nil +} + +func EncryptVolume(targetVolume string) (string, error) { + return "", nil +} + +func DecryptVolume(targetVolume string) error { + return nil +} + +func GetEncryptionStatus() ([]VolumeStatus, error) { + return nil, nil +} diff --git a/orbit/pkg/bitlocker/bitlocker_management_windows.go b/orbit/pkg/bitlocker/bitlocker_management_windows.go new file mode 100644 index 0000000000..4d9bb36838 --- /dev/null +++ b/orbit/pkg/bitlocker/bitlocker_management_windows.go @@ -0,0 +1,573 @@ +//go:build windows + +package bitlocker + +import ( + "fmt" + "syscall" + + "github.com/go-ole/go-ole" + "github.com/go-ole/go-ole/oleutil" + "github.com/scjalliance/comshim" +) + +// Encryption Methods +// https://docs.microsoft.com/en-us/windows/win32/secprov/getencryptionmethod-win32-encryptablevolume +type EncryptionMethod int32 + +const ( + None EncryptionMethod = iota + AES128WithDiffuser + AES256WithDiffuser + AES128 + AES256 + HardwareEncryption + XtsAES128 + XtsAES256 +) + +// Encryption Flags +// https://docs.microsoft.com/en-us/windows/win32/secprov/encrypt-win32-encryptablevolume +type EncryptionFlag int32 + +const ( + EncryptDataOnly EncryptionFlag = 0x00000001 + EncryptDemandWipe EncryptionFlag = 0x00000002 + EncryptSynchronous EncryptionFlag = 0x00010000 + + // Error Codes + ERROR_IO_DEVICE int32 = -2147023779 + FVE_E_EDRIVE_INCOMPATIBLE_VOLUME int32 = -2144272206 + FVE_E_NO_TPM_WITH_PASSPHRASE int32 = -2144272212 + FVE_E_PASSPHRASE_TOO_LONG int32 = -2144272214 + FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED int32 = -2144272278 + FVE_E_NOT_DECRYPTED int32 = -2144272327 + FVE_E_INVALID_PASSWORD_FORMAT int32 = -2144272331 + FVE_E_BOOTABLE_CDDVD int32 = -2144272336 + FVE_E_PROTECTOR_EXISTS int32 = -2144272335 +) + +// DiscoveryVolumeType specifies the type of discovery volume to be used by Prepare. +// https://docs.microsoft.com/en-us/windows/win32/secprov/preparevolume-win32-encryptablevolume +type DiscoveryVolumeType string + +const ( + // VolumeTypeNone indicates no discovery volume. This value creates a native BitLocker volume. + VolumeTypeNone DiscoveryVolumeType = "" + // VolumeTypeDefault indicates the default behavior. + VolumeTypeDefault DiscoveryVolumeType = "" + // VolumeTypeFAT32 creates a FAT32 discovery volume. + VolumeTypeFAT32 DiscoveryVolumeType = "FAT32" +) + +// ForceEncryptionType specifies the encryption type to be used when calling Prepare on the volume. +// https://docs.microsoft.com/en-us/windows/win32/secprov/preparevolume-win32-encryptablevolume +type ForceEncryptionType int32 + +const ( + // EncryptionTypeUnspecified indicates that the encryption type is not specified. + EncryptionTypeUnspecified ForceEncryptionType = 0 + // EncryptionTypeSoftware specifies software encryption. + EncryptionTypeSoftware ForceEncryptionType = 1 + // EncryptionTypeHardware specifies hardware encryption. + EncryptionTypeHardware ForceEncryptionType = 2 +) + +func encryptErrHandler(val int32) error { + switch val { + case ERROR_IO_DEVICE: + return fmt.Errorf("an I/O error has occurred during encryption; the device may need to be reset") + case FVE_E_EDRIVE_INCOMPATIBLE_VOLUME: + return fmt.Errorf("the drive specified does not support hardware-based encryption") + case FVE_E_NO_TPM_WITH_PASSPHRASE: + return fmt.Errorf("a TPM key protector cannot be added because a password protector exists on the drive") + case FVE_E_PASSPHRASE_TOO_LONG: + return fmt.Errorf("the passphrase cannot exceed 256 characters") + case FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED: + return fmt.Errorf("group Policy settings do not permit the creation of a password") + case FVE_E_NOT_DECRYPTED: + return fmt.Errorf("the drive must be fully decrypted to complete this operation") + case FVE_E_INVALID_PASSWORD_FORMAT: + return fmt.Errorf("the format of the recovery password provided is invalid") + case FVE_E_BOOTABLE_CDDVD: + return fmt.Errorf("bitLocker Drive Encryption detected bootable media (CD or DVD) in the computer") + case FVE_E_PROTECTOR_EXISTS: + return fmt.Errorf("key protector cannot be added; only one key protector of this type is allowed for this drive") + default: + return fmt.Errorf("error code returned during encryption: %d", val) + } +} + +///////////////////////////////////////////////////// +// Volume represents a Bitlocker encryptable volume +///////////////////////////////////////////////////// + +type Volume struct { + letter string + handle *ole.IDispatch + wmiIntf *ole.IDispatch + wmiSvc *ole.IDispatch +} + +// bitlockerClose frees all resources associated with a volume. +func (v *Volume) bitlockerClose() { + if v.handle != nil { + v.handle.Release() + } + + if v.wmiIntf != nil { + v.wmiIntf.Release() + } + + if v.wmiSvc != nil { + v.wmiSvc.Release() + } + + comshim.Done() +} + +// encrypt encrypts the volume +// Example: vol.encrypt(bitlocker.XtsAES256, bitlocker.EncryptDataOnly) +// https://docs.microsoft.com/en-us/windows/win32/secprov/encrypt-win32-encryptablevolume +func (v *Volume) encrypt(method EncryptionMethod, flags EncryptionFlag) error { + resultRaw, err := oleutil.CallMethod(v.handle, "Encrypt", int32(method), int32(flags)) + if err != nil { + return fmt.Errorf("encrypt(%s): %w", v.letter, err) + } else if val, ok := resultRaw.Value().(int32); val != 0 || !ok { + return fmt.Errorf("encrypt(%s): %w", v.letter, encryptErrHandler(val)) + } + + return nil +} + +// decrypt encrypts the volume +// Example: vol.decrypt() +// https://learn.microsoft.com/en-us/windows/win32/secprov/decrypt-win32-encryptablevolume +func (v *Volume) decrypt() error { + resultRaw, err := oleutil.CallMethod(v.handle, "Decrypt") + if err != nil { + return fmt.Errorf("decrypt(%s): %w", v.letter, err) + } else if val, ok := resultRaw.Value().(int32); val != 0 || !ok { + return fmt.Errorf("decrypt(%s): %w", v.letter, encryptErrHandler(val)) + } + + return nil +} + +// prepareVolume prepares a new Bitlocker Volume. This should be called BEFORE any key protectors are added. +// Example: vol.prepareVolume(bitlocker.VolumeTypeDefault, bitlocker.EncryptionTypeHardware) +// https://docs.microsoft.com/en-us/windows/win32/secprov/preparevolume-win32-encryptablevolume +func (v *Volume) prepareVolume(volType DiscoveryVolumeType, encType ForceEncryptionType) error { + resultRaw, err := oleutil.CallMethod(v.handle, "PrepareVolume", string(volType), int32(encType)) + if err != nil { + return fmt.Errorf("prepareVolume(%s): %w", v.letter, err) + } else if val, ok := resultRaw.Value().(int32); val != 0 || !ok { + return fmt.Errorf("prepareVolume(%s): %w", v.letter, encryptErrHandler(val)) + } + return nil +} + +// protectWithNumericalPassword adds a numerical password key protector. +// Leave password as a blank string to have one auto-generated by Windows +// https://docs.microsoft.com/en-us/windows/win32/secprov/protectkeywithnumericalpassword-win32-encryptablevolume +func (v *Volume) protectWithNumericalPassword() (string, error) { + var volumeKeyProtectorID ole.VARIANT + ole.VariantInit(&volumeKeyProtectorID) + var resultRaw *ole.VARIANT + var err error + + resultRaw, err = oleutil.CallMethod(v.handle, "ProtectKeyWithNumericalPassword", nil, nil, &volumeKeyProtectorID) + if err != nil { + return "", fmt.Errorf("ProtectKeyWithNumericalPassword(%s): %w", v.letter, err) + } else if val, ok := resultRaw.Value().(int32); val != 0 || !ok { + return "", fmt.Errorf("ProtectKeyWithNumericalPassword(%s): %w", v.letter, encryptErrHandler(val)) + } + + var recoveryKey ole.VARIANT + ole.VariantInit(&recoveryKey) + resultRaw, err = oleutil.CallMethod(v.handle, "GetKeyProtectorNumericalPassword", volumeKeyProtectorID.ToString(), &recoveryKey) + + if err != nil { + return "", fmt.Errorf("GetKeyProtectorNumericalPassword(%s): %w", v.letter, err) + } else if val, ok := resultRaw.Value().(int32); val != 0 || !ok { + return "", fmt.Errorf("GetKeyProtectorNumericalPassword(%s): %w", v.letter, encryptErrHandler(val)) + } + + return recoveryKey.ToString(), nil +} + +// protectWithPassphrase adds a passphrase key protector +// https://docs.microsoft.com/en-us/windows/win32/secprov/protectkeywithpassphrase-win32-encryptablevolume +func (v *Volume) protectWithPassphrase(passphrase string) (string, error) { + var volumeKeyProtectorID ole.VARIANT + ole.VariantInit(&volumeKeyProtectorID) + + resultRaw, err := oleutil.CallMethod(v.handle, "ProtectKeyWithPassphrase", nil, passphrase, &volumeKeyProtectorID) + if err != nil { + return "", fmt.Errorf("protectWithPassphrase(%s): %w", v.letter, err) + } else if val, ok := resultRaw.Value().(int32); val != 0 || !ok { + return "", fmt.Errorf("protectWithPassphrase(%s): %w", v.letter, encryptErrHandler(val)) + } + + return volumeKeyProtectorID.ToString(), nil +} + +// protectWithTPM adds the TPM key protector +// https://docs.microsoft.com/en-us/windows/win32/secprov/protectkeywithtpm-win32-encryptablevolume +func (v *Volume) protectWithTPM(platformValidationProfile *[]uint8) error { + var volumeKeyProtectorID ole.VARIANT + ole.VariantInit(&volumeKeyProtectorID) + var resultRaw *ole.VARIANT + var err error + + if platformValidationProfile == nil { + resultRaw, err = oleutil.CallMethod(v.handle, "ProtectKeyWithTPM", nil, nil, &volumeKeyProtectorID) + } else { + resultRaw, err = oleutil.CallMethod(v.handle, "ProtectKeyWithTPM", nil, *platformValidationProfile, &volumeKeyProtectorID) + } + if err != nil { + return fmt.Errorf("protectKeyWithTPM(%s): %w", v.letter, err) + } else if val, ok := resultRaw.Value().(int32); val != 0 || !ok { + return fmt.Errorf("protectKeyWithTPM(%s): %w", v.letter, encryptErrHandler(val)) + } + + return nil +} + +// getBitlockerStatus returns the current status of the volume +// https://learn.microsoft.com/en-us/windows/win32/secprov/getprotectionstatus-win32-encryptablevolume +func (v *Volume) getBitlockerStatus() (*EncryptionStatus, error) { + var ( + conversionStatus int32 + encryptionPercentage int32 + encryptionFlags int32 + wipingStatus int32 + wipingPercentage int32 + precisionFactor int32 = 4 + protectionStatus int32 + ) + + resultRaw, err := oleutil.CallMethod(v.handle, "GetConversionStatus", &conversionStatus, &encryptionPercentage, &encryptionFlags, &wipingStatus, &wipingPercentage, precisionFactor) + if err != nil { + return nil, fmt.Errorf("GetConversionStatus(%s): %w", v.letter, err) + } else if val, ok := resultRaw.Value().(int32); val != 0 || !ok { + return nil, fmt.Errorf("GetConversionStatus(%s): %w", v.letter, encryptErrHandler(val)) + } + + resultRaw, err = oleutil.CallMethod(v.handle, "GetProtectionStatus", &protectionStatus) + if err != nil { + return nil, fmt.Errorf("GetProtectionStatus(%s): %w", v.letter, err) + } else if val, ok := resultRaw.Value().(int32); val != 0 || !ok { + return nil, fmt.Errorf("GetProtectionStatus(%s): %w", v.letter, encryptErrHandler(val)) + } + + // Creating the encryption status struct + encStatus := &EncryptionStatus{ + ProtectionStatusDesc: getProtectionStatusDescription(fmt.Sprintf("%d", protectionStatus)), + ConversionStatusDesc: getConversionStatusDescription(fmt.Sprintf("%d", conversionStatus)), + EncryptionPercentage: intToPercentage(encryptionPercentage), + EncryptionFlags: fmt.Sprintf("%d", encryptionFlags), + WipingStatusDesc: getWipingStatusDescription(fmt.Sprintf("%d", wipingStatus)), + WipingPercentage: intToPercentage(wipingPercentage), + } + + return encStatus, nil +} + +// getProtectorsKeys returns the recovery keys for the volume +// https://learn.microsoft.com/en-us/windows/win32/secprov/getkeyprotectornumericalpassword-win32-encryptablevolume +func (v *Volume) getProtectorsKeys() (map[string]string, error) { + keys, err := getKeyProtectors(v.handle) + if err != nil { + return nil, fmt.Errorf("getKeyProtectors: %w", err) + } + + recoveryKeys := make(map[string]string) + for _, k := range keys { + var recoveryKey ole.VARIANT + ole.VariantInit(&recoveryKey) + recoveryKeyResultRaw, err := oleutil.CallMethod(v.handle, "GetKeyProtectorNumericalPassword", k, &recoveryKey) + if err != nil { + continue // No recovery key for this protector + } else if val, ok := recoveryKeyResultRaw.Value().(int32); val != 0 || !ok { + continue // No recovery key for this protector + } + recoveryKeys[k] = recoveryKey.ToString() + } + + return recoveryKeys, nil +} + +///////////////////////////////////////////////////// +// Helper functions +///////////////////////////////////////////////////// + +// bitlockerConnect connects to an encryptable volume in order to manage it. +func bitlockerConnect(driveLetter string) (Volume, error) { + comshim.Add(1) + v := Volume{letter: driveLetter} + + unknown, err := oleutil.CreateObject("WbemScripting.SWbemLocator") + if err != nil { + comshim.Done() + return v, fmt.Errorf("createObject: %w", err) + } + defer unknown.Release() + + v.wmiIntf, err = unknown.QueryInterface(ole.IID_IDispatch) + if err != nil { + comshim.Done() + return v, fmt.Errorf("queryInterface: %w", err) + } + serviceRaw, err := oleutil.CallMethod(v.wmiIntf, "ConnectServer", nil, `\\.\ROOT\CIMV2\Security\MicrosoftVolumeEncryption`) + if err != nil { + v.bitlockerClose() + return v, fmt.Errorf("connectServer: %w", err) + } + v.wmiSvc = serviceRaw.ToIDispatch() + + raw, err := oleutil.CallMethod(v.wmiSvc, "ExecQuery", "SELECT * FROM Win32_EncryptableVolume WHERE DriveLetter = '"+driveLetter+"'") + if err != nil { + v.bitlockerClose() + return v, fmt.Errorf("execQuery: %w", err) + } + result := raw.ToIDispatch() + defer result.Release() + + itemRaw, err := oleutil.CallMethod(result, "ItemIndex", 0) + if err != nil { + v.bitlockerClose() + return v, fmt.Errorf("failed to fetch result row while processing BitLocker info: %w", err) + } + v.handle = itemRaw.ToIDispatch() + + return v, nil +} + +// getConversionStatusDescription returns the current status of the volume +// https://learn.microsoft.com/en-us/windows/win32/secprov/getconversionstatus-win32-encryptablevolume +func getConversionStatusDescription(input string) string { + switch input { + case "0": + return "FullyDecrypted" + case "1": + return "FullyEncrypted" + case "2": + return "EncryptionInProgress" + case "3": + return "DecryptionInProgress" + case "4": + return "EncryptionPaused" + case "5": + return "DecryptionPaused" + } + + return "Status " + input +} + +// getWipingStatusDescription returns the current wiping status of the volume +// https://learn.microsoft.com/en-us/windows/win32/secprov/getconversionstatus-win32-encryptablevolume +func getWipingStatusDescription(input string) string { + switch input { + case "0": + return "FreeSpaceNotWiped" + case "1": + return "FreeSpaceWiped" + case "2": + return "FreeSpaceWipingInProgress" + case "3": + return "FreeSpaceWipingPaused" + } + + return "Status " + input +} + +// getProtectionStatusDescription returns the current protection status of the volume +// https://learn.microsoft.com/en-us/windows/win32/secprov/getprotectionstatus-win32-encryptablevolume +func getProtectionStatusDescription(input string) string { + switch input { + case "0": + return "Unprotected" + case "1": + return "Protected" + case "2": + return "Unknown" + } + + return "Status " + input +} + +// intToPercentage converts an int to a percentage string +func intToPercentage(num int32) string { + percentage := float64(num) / 10000.0 + return fmt.Sprintf("%.2f%%", percentage) +} + +// getKeyProtectors returns the key protectors for the volume +// https://learn.microsoft.com/en-us/windows/win32/secprov/getkeyprotectors-win32-encryptablevolume +func getKeyProtectors(item *ole.IDispatch) ([]string, error) { + kp := []string{} + var keyProtectorResults ole.VARIANT + ole.VariantInit(&keyProtectorResults) + + keyIDResultRaw, err := oleutil.CallMethod(item, "GetKeyProtectors", 3, &keyProtectorResults) + if err != nil { + return nil, fmt.Errorf("unable to get Key Protectors while getting BitLocker info. %s", err.Error()) + } else if val, ok := keyIDResultRaw.Value().(int32); val != 0 || !ok { + return nil, fmt.Errorf("unable to get Key Protectors while getting BitLocker info. Return code %d", val) + } + + keyProtectorValues := keyProtectorResults.ToArray().ToValueArray() + for _, keyIDItemRaw := range keyProtectorValues { + keyIDItem, ok := keyIDItemRaw.(string) + if !ok { + return nil, fmt.Errorf("keyProtectorID wasn't a string") + } + kp = append(kp, keyIDItem) + } + + return kp, nil +} + +// bitsToDrives converts a bit map to a list of drives +func bitsToDrives(bitMap uint32) (drives []string) { + availableDrives := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} + + for i := range availableDrives { + if bitMap&1 == 1 { + drives = append(drives, availableDrives[i]+":") + } + bitMap >>= 1 + } + + return +} + +func getLogicalVolumes() ([]string, error) { + kernel32, err := syscall.LoadLibrary("kernel32.dll") + if err != nil { + return nil, fmt.Errorf("failed to load kernel32.dll: %v", err) + } + defer syscall.FreeLibrary(kernel32) + + getLogicalDrivesHandle, err := syscall.GetProcAddress(kernel32, "GetLogicalDrives") + if err != nil { + return nil, fmt.Errorf("failed to get procedure address: %v", err) + } + + ret, _, callErr := syscall.SyscallN(uintptr(getLogicalDrivesHandle), 0, 0, 0, 0) + if callErr != 0 { + return nil, fmt.Errorf("syscall to GetLogicalDrives failed: %v", callErr) + } + + return bitsToDrives(uint32(ret)), nil +} + +func getBitlockerStatus(targetVolume string) (*EncryptionStatus, error) { + // Connect to the volume + vol, err := bitlockerConnect(targetVolume) + if err != nil { + return nil, fmt.Errorf("there was an error connecting to the volume - error: %v", err) + } + defer vol.bitlockerClose() + + // Get volume status + status, err := vol.getBitlockerStatus() + if err != nil { + return nil, fmt.Errorf("there was an error starting decryption - error: %v", err) + } + + return status, nil +} + +///////////////////////////////////////////////////// +// Bitlocker Management interface implementation +///////////////////////////////////////////////////// + +func GetRecoveryKeys(targetVolume string) (map[string]string, error) { + // Connect to the volume + vol, err := bitlockerConnect(targetVolume) + if err != nil { + return nil, fmt.Errorf("there was an error connecting to the volume - error: %v", err) + } + defer vol.bitlockerClose() + + // Get recovery keys + keys, err := vol.getProtectorsKeys() + if err != nil { + return nil, fmt.Errorf("there was an error retreving protection keys: %v", err) + } + + return keys, nil +} + +func EncryptVolume(targetVolume string) (string, error) { + // Connect to the volume + vol, err := bitlockerConnect(targetVolume) + if err != nil { + return "", fmt.Errorf("there was an error connecting to the volume - error: %v", err) + } + defer vol.bitlockerClose() + + // Prepare for encryption + if err := vol.prepareVolume(VolumeTypeDefault, EncryptionTypeSoftware); err != nil { + return "", fmt.Errorf("there was an error preparing the volume for encryption - error: %v", err) + } + + // Add a recovery protector + recoveryKey, err := vol.protectWithNumericalPassword() + if err != nil { + return "", fmt.Errorf("there was an error adding a recovery protector - error: %v", err) + } + + // Protect with TPM + if err := vol.protectWithTPM(nil); err != nil { + return "", fmt.Errorf("there was an error protecting with TPM - error: %v", err) + } + + // Start encryption + if err := vol.encrypt(XtsAES256, EncryptDataOnly); err != nil { + return "", fmt.Errorf("there was an error starting encryption - error: %v", err) + } + + return recoveryKey, nil +} + +func DecryptVolume(targetVolume string) error { + // Connect to the volume + vol, err := bitlockerConnect(targetVolume) + if err != nil { + return fmt.Errorf("there was an error connecting to the volume - error: %v", err) + } + defer vol.bitlockerClose() + + // Start decryption + if err := vol.decrypt(); err != nil { + return fmt.Errorf("there was an error starting decryption - error: %v", err) + } + + return nil +} + +func GetEncryptionStatus() ([]VolumeStatus, error) { + drives, err := getLogicalVolumes() + if err != nil { + return nil, fmt.Errorf("logical volumen enumeration %v", err) + } + + // iterate drives + var volumeStatus []VolumeStatus + for _, drive := range drives { + status, err := getBitlockerStatus(drive) + if err == nil { + // Skipping errors on purpose + driveStatus := VolumeStatus{ + DriveVolume: drive, + Status: status, + } + volumeStatus = append(volumeStatus, driveStatus) + } + } + + return volumeStatus, nil +} diff --git a/orbit/pkg/update/execwinapi_stub.go b/orbit/pkg/update/execwinapi_stub.go index e4957bc2cd..50d6a9a414 100644 --- a/orbit/pkg/update/execwinapi_stub.go +++ b/orbit/pkg/update/execwinapi_stub.go @@ -9,3 +9,7 @@ func RunWindowsMDMEnrollment(args WindowsMDMEnrollmentArgs) error { func RunWindowsMDMUnenrollment(args WindowsMDMEnrollmentArgs) error { return nil } + +func IsRunningOnWindowsServer() (bool, error) { + return false, nil +} diff --git a/orbit/pkg/update/execwinapi_windows.go b/orbit/pkg/update/execwinapi_windows.go index ca28089dab..3c0988a0fc 100644 --- a/orbit/pkg/update/execwinapi_windows.go +++ b/orbit/pkg/update/execwinapi_windows.go @@ -174,3 +174,17 @@ func generateWindowsMDMAccessTokenPayload(args WindowsMDMEnrollmentArgs) ([]byte pld.Payload.OrbitNodeKey = args.OrbitNodeKey return json.Marshal(pld) } + +// IsRunningOnWindowsServer determines if the process is running on a Windows server. Exported so it can be used across packages. +func IsRunningOnWindowsServer() (bool, error) { + installType, err := readInstallationType() + if err != nil { + return false, err + } + + if strings.ToLower(installType) == "server" { + return true, nil + } + + return false, nil +} diff --git a/orbit/pkg/update/notifications.go b/orbit/pkg/update/notifications.go index 18076ba922..e07c6648cc 100644 --- a/orbit/pkg/update/notifications.go +++ b/orbit/pkg/update/notifications.go @@ -7,6 +7,7 @@ import ( "sync/atomic" "time" + "github.com/fleetdm/fleet/v4/orbit/pkg/bitlocker" "github.com/fleetdm/fleet/v4/orbit/pkg/profiles" "github.com/fleetdm/fleet/v4/orbit/pkg/scripts" "github.com/fleetdm/fleet/v4/server/fleet" @@ -397,3 +398,119 @@ func (h *runScriptsConfigFetcher) GetConfig() (*fleet.OrbitConfig, error) { } return cfg, err } + +type DiskEncryptionKeySetter interface { + SetOrUpdateDiskEncryptionKey(diskEncryptionStatus fleet.OrbitHostDiskEncryptionKeyPayload) error +} + +type execEncryptVolumeFunc func(string) (string, error) + +type windowsMDMBitlockerConfigFetcher struct { + // Fetcher is the OrbitConfigFetcher that will be wrapped. It is responsible + // for actually returning the orbit configuration or an error. + Fetcher OrbitConfigFetcher + + // Frequency is the minimum amount of time that must pass between two + // executions of the windows MDM enrollment attempt. + Frequency time.Duration + + // Bitlocker Operation Results + EncryptionResult DiskEncryptionKeySetter + + // tracks last time the enrollment command was executed + lastEnrollRun time.Time + + // ensures only one script execution runs at a time + mu sync.Mutex + + // for tests, to be able to mock API commands. If nil, will use + // EncryptVolume + execEncryptVolumeFn execEncryptVolumeFunc +} + +func ApplyWindowsMDMBitlockerFetcherMiddleware( + fetcher OrbitConfigFetcher, + frequency time.Duration, + encryptionResult DiskEncryptionKeySetter, +) OrbitConfigFetcher { + return &windowsMDMBitlockerConfigFetcher{ + Fetcher: fetcher, + Frequency: frequency, + EncryptionResult: encryptionResult, + } +} + +// GetConfig calls the wrapped Fetcher's GetConfig method, and if the fleet +// server set the "EnforceBitLockerEncryption" flag to true, executes the command +// to attempt BitlockerEncryption (or not, if the device is a Windows Server). +func (w *windowsMDMBitlockerConfigFetcher) GetConfig() (*fleet.OrbitConfig, error) { + cfg, err := w.Fetcher.GetConfig() + if err == nil && cfg.Notifications.EnforceBitLockerEncryption { + if w.mu.TryLock() { + defer w.mu.Unlock() + + w.attemptBitlockerEncryption(cfg.Notifications) + } + } + + return cfg, err +} + +func (w *windowsMDMBitlockerConfigFetcher) attemptBitlockerEncryption(notifs fleet.OrbitConfigNotifications) { + // do not trigger Bitlocker encryption if running on a Windwos server + isWindowsServer, err := IsRunningOnWindowsServer() + if err != nil { + log.Error().Err(err).Msg("checking if the host is a Windows server") + return + } + + if isWindowsServer { + log.Debug().Msg("device is a Windows Server, encryption is not going to be performed") + return + } + + if time.Since(w.lastEnrollRun) <= w.Frequency { + log.Debug().Msg("skipped encryption process, last run was too recent") + return + } + + // Performing Bitlocker encryption operation against C: volume + + // We are supporting only C: volume for now + targetVolume := "C:" + + // Performing actual encryption + + // Getting Bitlocker encryption mock operation function if any + fn := w.execEncryptVolumeFn + if fn == nil { + // Otherwise, using the real one + fn = bitlocker.EncryptVolume + } + recoveryKey, err := fn(targetVolume) + + // Getting Bitlocker encryption operation error message if any + bitlockerError := "" + if err != nil { + bitlockerError = err.Error() + } + + // Update Fleet Server with encryption result + payload := fleet.OrbitHostDiskEncryptionKeyPayload{ + EncryptionKey: []byte(recoveryKey), + ClientError: bitlockerError, + } + + if err != nil { + log.Error().Err(err).Msg("failed to encrypt the volume") + return + } + + err = w.EncryptionResult.SetOrUpdateDiskEncryptionKey(payload) + if err != nil { + log.Error().Err(err).Msg("failed to send encryption result to Fleet Server") + return + } + + w.lastEnrollRun = time.Now() +} diff --git a/orbit/pkg/update/notifications_test.go b/orbit/pkg/update/notifications_test.go index c4512b12f2..901dcd5276 100644 --- a/orbit/pkg/update/notifications_test.go +++ b/orbit/pkg/update/notifications_test.go @@ -573,3 +573,67 @@ func TestRunScripts(t *testing.T) { require.Contains(t, logBuf.String(), "running scripts [c] succeeded") }) } + +type mockDiskEncryptionKeySetter struct{} + +func (m mockDiskEncryptionKeySetter) SetOrUpdateDiskEncryptionKey(diskEncryptionStatus fleet.OrbitHostDiskEncryptionKeyPayload) error { + return nil +} + +func TestBitlockerOperations(t *testing.T) { + var logBuf bytes.Buffer + + oldLog := log.Logger + log.Logger = log.Output(&logBuf) + t.Cleanup(func() { log.Logger = oldLog }) + + var ( + shouldEncrypt = true + shouldReturnError = false + ) + + fetcher := &dummyConfigFetcher{ + cfg: &fleet.OrbitConfig{ + Notifications: fleet.OrbitConfigNotifications{ + EnforceBitLockerEncryption: shouldEncrypt, + }, + }, + } + + enrollFetcher := &windowsMDMBitlockerConfigFetcher{ + Fetcher: fetcher, + Frequency: time.Hour, // doesn't matter for this test + EncryptionResult: mockDiskEncryptionKeySetter{}, + execEncryptVolumeFn: func(string) (string, error) { + if shouldReturnError { + return "", errors.New("error") + } + + return "123456", nil + }, + } + + t.Run("bitlocker encryption is performed", func(t *testing.T) { + shouldEncrypt = true + shouldReturnError = false + cfg, err := enrollFetcher.GetConfig() + require.NoError(t, err) // the dummy fetcher never returns an error + require.Equal(t, fetcher.cfg, cfg) // the bitlocker wrapper properly returns the expected config + }) + + t.Run("bitlocker encryption is not performed", func(t *testing.T) { + shouldEncrypt = false + shouldReturnError = false + cfg, err := enrollFetcher.GetConfig() + require.NoError(t, err) // the dummy fetcher never returns an error + require.Equal(t, fetcher.cfg, cfg) // the bitlocker wrapper properly returns the expected config + }) + + t.Run("bitlocker encryption returns an error", func(t *testing.T) { + shouldEncrypt = true + shouldReturnError = true + cfg, err := enrollFetcher.GetConfig() + require.NoError(t, err) // the dummy fetcher never returns an error + require.Equal(t, fetcher.cfg, cfg) // the bitlocker wrapper properly returns the expected config + }) +} diff --git a/pkg/optjson/optjson.go b/pkg/optjson/optjson.go index ec045070c9..a665b3bb52 100644 --- a/pkg/optjson/optjson.go +++ b/pkg/optjson/optjson.go @@ -53,3 +53,42 @@ func (s *String) UnmarshalJSON(data []byte) error { s.Valid = true return nil } + +// Bool represents an optional boolean value. +type Bool struct { + Set bool + Valid bool + Value bool +} + +func SetBool(b bool) Bool { + return Bool{Set: true, Valid: true, Value: b} +} + +func (b Bool) MarshalJSON() ([]byte, error) { + if !b.Valid { + return []byte("null"), nil + } + return json.Marshal(b.Value) +} + +func (b *Bool) UnmarshalJSON(data []byte) error { + // If this method was called, the value was set. + b.Set = true + b.Valid = false + + if bytes.Equal(data, []byte("null")) { + // The key was set to null, blank the value + b.Value = false + return nil + } + + // The key isn't set to null + var v bool + if err := json.Unmarshal(data, &v); err != nil { + return err + } + b.Value = v + b.Valid = true + return nil +} diff --git a/pkg/optjson/optjson_test.go b/pkg/optjson/optjson_test.go index 868963d4a0..264834a637 100644 --- a/pkg/optjson/optjson_test.go +++ b/pkg/optjson/optjson_test.go @@ -88,3 +88,84 @@ func TestString(t *testing.T) { } }) } + +func TestBool(t *testing.T) { + t.Run("plain string", func(t *testing.T) { + cases := []struct { + data string + wantErr string + wantRes Bool + marshalAs string + }{ + {`true`, "", Bool{Set: true, Valid: true, Value: true}, `true`}, + {`null`, "", Bool{Set: true, Valid: false, Value: false}, `null`}, + {`123`, "cannot unmarshal number into Go value of type bool", Bool{Set: true, Valid: false, Value: false}, `null`}, + {`{"v": "foo"}`, "cannot unmarshal object into Go value of type bool", Bool{Set: true, Valid: false, Value: false}, `null`}, + } + + for _, c := range cases { + t.Run(c.data, func(t *testing.T) { + var s Bool + err := json.Unmarshal([]byte(c.data), &s) + + if c.wantErr != "" { + require.Error(t, err) + require.ErrorContains(t, err, c.wantErr) + } else { + require.NoError(t, err) + } + require.Equal(t, c.wantRes, s) + + b, err := json.Marshal(s) + require.NoError(t, err) + require.Equal(t, c.marshalAs, string(b)) + }) + } + }) + + t.Run("struct", func(t *testing.T) { + type N struct { + B2 Bool `json:"b2"` + } + type T struct { + I int `json:"i"` + B Bool `json:"b"` + N N `json:"n"` + } + + cases := []struct { + data string + wantErr string + wantRes T + marshalAs string + }{ + {`{}`, "", T{}, `{"i": 0, "b": null, "n": {"b2": null}}`}, + {`{"x": "nope"}`, "", T{}, `{"i": 0, "b": null, "n": {"b2": null}}`}, + {`{"i": 1, "b": true}`, "", T{I: 1, B: Bool{Set: true, Valid: true, Value: true}}, `{"i": 1, "b": true, "n": {"b2": null}}`}, + {`{"i": 1, "b": null, "n": {}}`, "", T{I: 1, B: Bool{Set: true, Valid: false, Value: false}}, `{"i": 1, "b": null, "n": {"b2": null}}`}, + {`{"i": 1, "b": false, "n": {"b2": true}}`, "", T{I: 1, B: Bool{Set: true, Valid: true, Value: false}, N: N{B2: Bool{Set: true, Valid: true, Value: true}}}, `{"i": 1, "b": false, "n": {"b2": true}}`}, + {`{"i": 1, "b": true, "n": {"b2": null}}`, "", T{I: 1, B: Bool{Set: true, Valid: true, Value: true}, N: N{B2: Bool{Set: true, Valid: false, Value: false}}}, `{"i": 1, "b": true, "n": {"b2": null}}`}, + {`{"i": 1, "b": ""}`, "cannot unmarshal string into Go struct", T{I: 1, B: Bool{Set: true, Valid: false, Value: false}}, `{"i": 1, "b": null, "n": {"b2": null}}`}, + {`{"i": 1, "n": {"b2": 123}}`, "cannot unmarshal number into Go struct", T{I: 1, N: N{B2: Bool{Set: true, Valid: false, Value: false}}}, `{"i": 1, "b": null, "n": {"b2": null}}`}, + } + + for _, c := range cases { + t.Run(c.data, func(t *testing.T) { + var tt T + err := json.Unmarshal([]byte(c.data), &tt) + + if c.wantErr != "" { + require.Error(t, err) + require.ErrorContains(t, err, c.wantErr) + } else { + require.NoError(t, err) + } + require.Equal(t, c.wantRes, tt) + + b, err := json.Marshal(tt) + require.NoError(t, err) + require.JSONEq(t, c.marshalAs, string(b)) + }) + } + }) +} diff --git a/pkg/rawjson/rawjson.go b/pkg/rawjson/rawjson.go new file mode 100644 index 0000000000..d6bb2189a8 --- /dev/null +++ b/pkg/rawjson/rawjson.go @@ -0,0 +1,55 @@ +package rawjson + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" +) + +// CombineRoots "concatenates" two JSON objects into a single object. +// +// By virtue of its implementation it: +// +// - Doesn't take into account nested keys +// - Assumes the JSON string is well formed and was marshaled by the standard +// library +func CombineRoots(a, b json.RawMessage) (json.RawMessage, error) { + if err := validate(a); err != nil { + return nil, fmt.Errorf("validating first object: %w", err) + } + + if err := validate(b); err != nil { + return nil, fmt.Errorf("validating second object: %w", err) + } + + emptyObject := []byte{'{', '}'} + if bytes.Equal(a, emptyObject) { + return b, nil + } + if bytes.Equal(b, emptyObject) { + return a, nil + } + + // remove '}' from the first object and add a trailing ',' + combined := append(a[:len(a)-1], ',') + // remove '{' from the second object and combine the two + combined = append(combined, b[1:]...) + return combined, nil +} + +func validate(j json.RawMessage) error { + if len(j) < 2 { + return errors.New("incomplete json object") + } + + if j[0] != '{' || j[len(j)-1] != '}' { + return errors.New("json object must be surrounded by '{' and '}'") + } + + if len(j) > 2 && j[len(j)-2] == ',' { + return errors.New("trailing comma at the end of the object") + } + + return nil +} diff --git a/pkg/rawjson/rawjson_test.go b/pkg/rawjson/rawjson_test.go new file mode 100644 index 0000000000..03b38a3dfa --- /dev/null +++ b/pkg/rawjson/rawjson_test.go @@ -0,0 +1,104 @@ +package rawjson + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestCombineRoots(t *testing.T) { + tests := []struct { + name string + a json.RawMessage + b json.RawMessage + want json.RawMessage + wantErr string + }{ + { + name: "both empty", + a: []byte("{}"), + b: []byte("{}"), + want: []byte("{}"), + }, + { + name: "first incomplete", + a: []byte("{"), + b: []byte("{}"), + wantErr: "incomplete json object", + }, + { + name: "second incomplete", + a: []byte("{}"), + b: []byte("{"), + wantErr: "incomplete json object", + }, + { + name: "first empty array", + a: []byte{}, + b: []byte("{}"), + wantErr: "incomplete json object", + }, + { + name: "second empty array", + a: []byte("{}"), + b: []byte{}, + wantErr: "incomplete json object", + }, + { + name: "first empty", + a: []byte("{}"), + b: []byte(`{"key":"value"}`), + want: []byte(`{"key":"value"}`), + }, + { + name: "second empty", + a: []byte(`{"key":"value"}`), + b: []byte("{}"), + want: []byte(`{"key":"value"}`), + }, + { + name: "both with data", + a: []byte(`{"key1":"value1"}`), + b: []byte(`{"key2":"value2"}`), + want: []byte(`{"key1":"value1","key2":"value2"}`), + }, + { + name: "first incomplete", + a: []byte(`{"key1":"value1"`), + b: []byte(`{"key2":"value2"}`), + wantErr: "json object must be surrounded by '{' and '}'", + }, + { + name: "second incomplete", + a: []byte(`{"key2":"value2"}`), + b: []byte(`{"key1":"value1"`), + wantErr: "json object must be surrounded by '{' and '}'", + }, + { + name: "first trailing comma", + a: []byte(`{"key1":"value1",}`), + b: []byte(`{"key2":"value2"}`), + wantErr: "trailing comma at the end of the object", + }, + { + name: "second trailing comma", + a: []byte(`{"key1":"value1"}`), + b: []byte(`{"key2":"value2",}`), + wantErr: "trailing comma at the end of the object", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := CombineRoots(tt.a, tt.b) + if tt.wantErr != "" { + require.ErrorContains(t, err, tt.wantErr) + require.Nil(t, got) + } else { + require.NoError(t, err) + require.Equal(t, tt.want, got) + } + }) + } +} diff --git a/server/datastore/mysql/app_configs.go b/server/datastore/mysql/app_configs.go index 0da61f93a3..c14340fa12 100644 --- a/server/datastore/mysql/app_configs.go +++ b/server/datastore/mysql/app_configs.go @@ -213,3 +213,18 @@ func (ds *Datastore) AggregateEnrollSecretPerTeam(ctx context.Context) ([]*fleet } return secrets, nil } + +func (ds *Datastore) getConfigEnableDiskEncryption(ctx context.Context, teamID *uint) (bool, error) { + if teamID != nil && *teamID > 0 { + tc, err := ds.TeamMDMConfig(ctx, *teamID) + if err != nil { + return false, err + } + return tc.EnableDiskEncryption, nil + } + ac, err := ds.AppConfig(ctx) + if err != nil { + return false, err + } + return ac.MDM.EnableDiskEncryption.Value, nil +} diff --git a/server/datastore/mysql/app_configs_test.go b/server/datastore/mysql/app_configs_test.go index 1580d40f25..66c14b157b 100644 --- a/server/datastore/mysql/app_configs_test.go +++ b/server/datastore/mysql/app_configs_test.go @@ -7,6 +7,7 @@ import ( "testing" "time" + "github.com/fleetdm/fleet/v4/pkg/optjson" "github.com/fleetdm/fleet/v4/server/ptr" "github.com/fleetdm/fleet/v4/server/fleet" @@ -30,6 +31,7 @@ func TestAppConfig(t *testing.T) { {"AggregateEnrollSecretPerTeam", testAggregateEnrollSecretPerTeam}, {"Defaults", testAppConfigDefaults}, {"Backwards Compatibility", testAppConfigBackwardsCompatibility}, + {"GetConfigEnableDiskEncryption", testGetConfigEnableDiskEncryption}, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { @@ -309,7 +311,6 @@ func testAppConfigEnrollSecretRoundtrip(t *testing.T, ds *Datastore) { secrets, err = ds.GetEnrollSecrets(context.Background(), nil) require.NoError(t, err) require.Len(t, secrets, 2) - } func testAppConfigEnrollSecretUniqueness(t *testing.T, ds *Datastore) { @@ -431,3 +432,48 @@ func testAggregateEnrollSecretPerTeam(t *testing.T, ds *Datastore) { {TeamID: ptr.Uint(3), Secret: "team_3_secret_1"}, }, agg) } + +func testGetConfigEnableDiskEncryption(t *testing.T, ds *Datastore) { + ctx := context.Background() + defer TruncateTables(t, ds) + + ac, err := ds.AppConfig(ctx) + require.NoError(t, err) + require.False(t, ac.MDM.EnableDiskEncryption.Value) + + enabled, err := ds.getConfigEnableDiskEncryption(ctx, nil) + require.NoError(t, err) + require.False(t, enabled) + + // Enable disk encryption for no team + ac.MDM.EnableDiskEncryption = optjson.SetBool(true) + err = ds.SaveAppConfig(ctx, ac) + require.NoError(t, err) + ac, err = ds.AppConfig(ctx) + require.NoError(t, err) + require.True(t, ac.MDM.EnableDiskEncryption.Value) + + enabled, err = ds.getConfigEnableDiskEncryption(ctx, nil) + require.NoError(t, err) + require.True(t, enabled) + + // Create team + team1, err := ds.NewTeam(ctx, &fleet.Team{Name: "team1"}) + require.NoError(t, err) + + tm, err := ds.Team(ctx, team1.ID) + require.NoError(t, err) + require.NotNil(t, tm) + require.False(t, tm.Config.MDM.EnableDiskEncryption) + + enabled, err = ds.getConfigEnableDiskEncryption(ctx, &team1.ID) + require.NoError(t, err) + require.False(t, enabled) + + // Enable disk encryption for the team + tm.Config.MDM.EnableDiskEncryption = true + tm, err = ds.SaveTeam(ctx, tm) + require.NoError(t, err) + require.NotNil(t, tm) + require.True(t, tm.Config.MDM.EnableDiskEncryption) +} diff --git a/server/datastore/mysql/apple_mdm.go b/server/datastore/mysql/apple_mdm.go index cb1133ac61..1e95d96f14 100644 --- a/server/datastore/mysql/apple_mdm.go +++ b/server/datastore/mysql/apple_mdm.go @@ -2082,7 +2082,7 @@ func (ds *Datastore) GetMDMIdPAccount(ctx context.Context, uuid string) (*fleet. return &acct, nil } -func subqueryDiskEncryptionVerifying() (string, []interface{}) { +func subqueryFileVaultVerifying() (string, []interface{}) { sql := ` SELECT 1 FROM host_mdm_apple_profiles hmap @@ -2100,7 +2100,7 @@ func subqueryDiskEncryptionVerifying() (string, []interface{}) { return sql, args } -func subqueryDiskEncryptionVerified() (string, []interface{}) { +func subqueryFileVaultVerified() (string, []interface{}) { sql := ` SELECT 1 FROM host_mdm_apple_profiles hmap @@ -2118,7 +2118,7 @@ func subqueryDiskEncryptionVerified() (string, []interface{}) { return sql, args } -func subqueryDiskEncryptionActionRequired() (string, []interface{}) { +func subqueryFileVaultActionRequired() (string, []interface{}) { sql := ` SELECT 1 FROM host_mdm_apple_profiles hmap @@ -2138,7 +2138,7 @@ func subqueryDiskEncryptionActionRequired() (string, []interface{}) { return sql, args } -func subqueryDiskEncryptionEnforcing() (string, []interface{}) { +func subqueryFileVaultEnforcing() (string, []interface{}) { sql := ` SELECT 1 FROM host_mdm_apple_profiles hmap @@ -2168,7 +2168,7 @@ func subqueryDiskEncryptionEnforcing() (string, []interface{}) { return sql, args } -func subqueryDiskEncryptionFailed() (string, []interface{}) { +func subqueryFileVaultFailed() (string, []interface{}) { sql := ` SELECT 1 FROM host_mdm_apple_profiles hmap @@ -2180,7 +2180,7 @@ func subqueryDiskEncryptionFailed() (string, []interface{}) { return sql, args } -func subqueryDiskEncryptionRemovingEnforcement() (string, []interface{}) { +func subqueryFileVaultRemovingEnforcement() (string, []interface{}) { sql := ` SELECT 1 FROM host_mdm_apple_profiles hmap @@ -2224,20 +2224,20 @@ FROM hosts h LEFT JOIN host_disk_encryption_keys hdek ON h.id = hdek.host_id WHERE - %s` + h.platform = 'darwin' AND %s` var args []interface{} - subqueryVerified, subqueryVerifiedArgs := subqueryDiskEncryptionVerified() + subqueryVerified, subqueryVerifiedArgs := subqueryFileVaultVerified() args = append(args, subqueryVerifiedArgs...) - subqueryVerifying, subqueryVerifyingArgs := subqueryDiskEncryptionVerifying() + subqueryVerifying, subqueryVerifyingArgs := subqueryFileVaultVerifying() args = append(args, subqueryVerifyingArgs...) - subqueryActionRequired, subqueryActionRequiredArgs := subqueryDiskEncryptionActionRequired() + subqueryActionRequired, subqueryActionRequiredArgs := subqueryFileVaultActionRequired() args = append(args, subqueryActionRequiredArgs...) - subqueryEnforcing, subqueryEnforcingArgs := subqueryDiskEncryptionEnforcing() + subqueryEnforcing, subqueryEnforcingArgs := subqueryFileVaultEnforcing() args = append(args, subqueryEnforcingArgs...) - subqueryFailed, subqueryFailedArgs := subqueryDiskEncryptionFailed() + subqueryFailed, subqueryFailedArgs := subqueryFileVaultFailed() args = append(args, subqueryFailedArgs...) - subqueryRemovingEnforcement, subqueryRemovingEnforcementArgs := subqueryDiskEncryptionRemovingEnforcement() + subqueryRemovingEnforcement, subqueryRemovingEnforcementArgs := subqueryFileVaultRemovingEnforcement() args = append(args, subqueryRemovingEnforcementArgs...) teamFilter := "h.team_id IS NULL" diff --git a/server/datastore/mysql/apple_mdm_test.go b/server/datastore/mysql/apple_mdm_test.go index 3c9173b63e..2d5977334b 100644 --- a/server/datastore/mysql/apple_mdm_test.go +++ b/server/datastore/mysql/apple_mdm_test.go @@ -782,7 +782,7 @@ func testUpdateHostTablesOnMDMUnenroll(t *testing.T, ds *Datastore) { var hostID uint err = sqlx.GetContext(context.Background(), ds.reader(context.Background()), &hostID, `SELECT id FROM hosts WHERE uuid = ?`, testUUID) require.NoError(t, err) - err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, hostID, "asdf") + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, hostID, "asdf", "", nil) require.NoError(t, err) key, err := ds.GetHostDiskEncryptionKey(ctx, hostID) @@ -1474,7 +1474,7 @@ func upsertHostCPs( func testAggregateMacOSSettingsStatusWithFileVault(t *testing.T, ds *Datastore) { ctx := context.Background() - checkListHosts := func(status fleet.MacOSSettingsStatus, teamID *uint, expected []*fleet.Host) bool { + checkListHosts := func(status fleet.OSSettingsStatus, teamID *uint, expected []*fleet.Host) bool { expectedIDs := []uint{} for _, h := range expected { expectedIDs = append(expectedIDs, h.ID) @@ -1556,7 +1556,7 @@ func testAggregateMacOSSettingsStatusWithFileVault(t *testing.T, ds *Datastore) require.Equal(t, uint(0), res.Verifying) require.Equal(t, uint(0), res.Verified) - err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, hosts[0].ID, "foo") + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, hosts[0].ID, "foo", "", nil) require.NoError(t, err) res, err = ds.GetMDMAppleHostsProfilesSummary(ctx, nil) require.NoError(t, err) @@ -1596,7 +1596,7 @@ func testAggregateMacOSSettingsStatusWithFileVault(t *testing.T, ds *Datastore) require.Equal(t, uint(0), res.Verifying) require.Equal(t, uint(1), res.Verified) // hosts[0] now has filevault fully enforced and verified - err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, hosts[1].ID, "bar") + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, hosts[1].ID, "bar", "", nil) require.NoError(t, err) err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{hosts[1].ID}, false, time.Now().Add(1*time.Hour)) require.NoError(t, err) @@ -1619,10 +1619,10 @@ func testAggregateMacOSSettingsStatusWithFileVault(t *testing.T, ds *Datastore) require.Equal(t, uint(1), res.Verified) // check that list hosts by status matches summary - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, hosts[2:])) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, hosts[1:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, hosts[0:1])) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, hosts[2:])) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, hosts[1:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, hosts[0:1])) // create a team team, err := ds.NewTeam(ctx, &fleet.Team{Name: "test"}) @@ -1662,7 +1662,7 @@ func testAggregateMacOSSettingsStatusWithFileVault(t *testing.T, ds *Datastore) require.Equal(t, uint(0), res.Verifying) require.Equal(t, uint(0), res.Verified) - err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, hosts[9].ID, "baz") + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, hosts[9].ID, "baz", "", nil) require.NoError(t, err) err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{hosts[9].ID}, true, time.Now().Add(1*time.Hour)) require.NoError(t, err) @@ -1675,10 +1675,10 @@ func testAggregateMacOSSettingsStatusWithFileVault(t *testing.T, ds *Datastore) require.Equal(t, uint(0), res.Verified) // check that list hosts by status matches summary - require.True(t, checkListHosts(fleet.MacOSSettingsPending, &team.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, &team.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, &team.ID, hosts[9:10])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, &team.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, &team.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsFailed, &team.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, &team.ID, hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsVerified, &team.ID, []*fleet.Host{})) upsertHostCPs(hosts[9:10], append(teamCPs, fvTeam), fleet.MDMAppleOperationTypeInstall, &fleet.MDMAppleDeliveryVerified, ctx, ds, t) res, err = ds.GetMDMAppleHostsProfilesSummary(ctx, &team.ID) @@ -1701,10 +1701,10 @@ func testAggregateMacOSSettingsStatusWithFileVault(t *testing.T, ds *Datastore) require.Equal(t, uint(0), res.Verified) // check that list hosts by status matches summary - require.True(t, checkListHosts(fleet.MacOSSettingsPending, &team.ID, hosts[9:10])) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, &team.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, &team.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, &team.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, &team.ID, hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsFailed, &team.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, &team.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, &team.ID, []*fleet.Host{})) // set decryptable back to true for hosts[9] err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{hosts[9].ID}, true, time.Now().Add(1*time.Hour)) @@ -1718,21 +1718,22 @@ func testAggregateMacOSSettingsStatusWithFileVault(t *testing.T, ds *Datastore) require.Equal(t, uint(1), res.Verified) // hosts[9] goes back to verified // check that list hosts by status matches summary - require.True(t, checkListHosts(fleet.MacOSSettingsPending, &team.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, &team.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, &team.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, &team.ID, hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsPending, &team.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsFailed, &team.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, &team.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, &team.ID, hosts[9:10])) } func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { ctx := context.Background() - checkListHosts := func(status fleet.MacOSSettingsStatus, teamID *uint, expected []*fleet.Host) bool { + checkFilterHostsByMacOSSettings := func(status fleet.OSSettingsStatus, teamID *uint, expected []*fleet.Host) bool { expectedIDs := []uint{} for _, h := range expected { expectedIDs = append(expectedIDs, h.ID) } + // check that list hosts by macos settings status matches summary gotHosts, err := ds.ListHosts(ctx, fleet.TeamFilter{User: &fleet.User{GlobalRole: ptr.String("admin")}}, fleet.HostListOptions{MacOSSettingsFilter: status, TeamFilter: teamID}) gotIDs := []uint{} for _, h := range gotHosts { @@ -1742,6 +1743,26 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { return assert.NoError(t, err) && assert.Len(t, gotHosts, len(expected)) && assert.ElementsMatch(t, expectedIDs, gotIDs) } + // check that list hosts by os settings status matches summary + checkFilterHostsByOSSettings := func(status fleet.OSSettingsStatus, teamID *uint, expected []*fleet.Host) bool { + expectedIDs := []uint{} + for _, h := range expected { + expectedIDs = append(expectedIDs, h.ID) + } + + gotHosts, err := ds.ListHosts(ctx, fleet.TeamFilter{User: &fleet.User{GlobalRole: ptr.String("admin")}}, fleet.HostListOptions{OSSettingsFilter: status, TeamFilter: teamID}) + gotIDs := []uint{} + for _, h := range gotHosts { + gotIDs = append(gotIDs, h.ID) + } + + return assert.NoError(t, err) && assert.Len(t, gotHosts, len(expected)) && assert.ElementsMatch(t, expectedIDs, gotIDs) + } + + checkListHosts := func(status fleet.OSSettingsStatus, teamID *uint, expected []*fleet.Host) bool { + return checkFilterHostsByMacOSSettings(status, teamID, expected) && checkFilterHostsByOSSettings(status, teamID, expected) + } + var hosts []*fleet.Host for i := 0; i < 10; i++ { h := test.NewHost(t, ds, fmt.Sprintf("foo.local.%d", i), "1.1.1.1", @@ -1766,14 +1787,14 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(0), res.Failed) require.Equal(t, uint(0), res.Verifying) require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, hosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, ptr.Uint(0), hosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, hosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, ptr.Uint(0), hosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) // all hosts pending install of all profiles upsertHostCPs(hosts, noTeamCPs, fleet.MDMAppleOperationTypeInstall, &fleet.MDMAppleDeliveryPending, ctx, ds, t) @@ -1784,14 +1805,14 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(0), res.Failed) require.Equal(t, uint(0), res.Verifying) require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, hosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, ptr.Uint(0), hosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, hosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, ptr.Uint(0), hosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) // hosts[0] and hosts[1] failed one profile upsertHostCPs(hosts[0:2], noTeamCPs[0:1], fleet.MDMAppleOperationTypeInstall, &fleet.MDMAppleDeliveryFailed, ctx, ds, t) @@ -1810,14 +1831,14 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(2), res.Failed) // only count one failure per host (hosts[0] failed two profiles but only counts once) require.Equal(t, uint(0), res.Verifying) require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, hosts[2:])) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, ptr.Uint(0), hosts[2:])) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, ptr.Uint(0), hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, hosts[2:])) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, ptr.Uint(0), hosts[2:])) + require.True(t, checkListHosts(fleet.OSSettingsFailed, ptr.Uint(0), hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) // hosts[0:3] installed a third profile upsertHostCPs(hosts[0:3], noTeamCPs[2:3], fleet.MDMAppleOperationTypeInstall, &fleet.MDMAppleDeliveryVerifying, ctx, ds, t) @@ -1828,14 +1849,14 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(2), res.Failed) // no change require.Equal(t, uint(0), res.Verifying) // no change, host must apply all profiles count as latest require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, hosts[2:])) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, ptr.Uint(0), hosts[2:])) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, ptr.Uint(0), hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, hosts[2:])) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, ptr.Uint(0), hosts[2:])) + require.True(t, checkListHosts(fleet.OSSettingsFailed, ptr.Uint(0), hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) // hosts[6] deletes all its profiles tx, err := ds.writer(ctx).BeginTxx(ctx, nil) @@ -1850,14 +1871,14 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(2), res.Failed) // no change require.Equal(t, uint(0), res.Verifying) // no change, host must apply all profiles count as latest require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, ptr.Uint(0), pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, ptr.Uint(0), hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, ptr.Uint(0), pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, ptr.Uint(0), hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) // hosts[9] installed all profiles but one is with status nil (pending) upsertHostCPs(hosts[9:10], noTeamCPs[:9], fleet.MDMAppleOperationTypeInstall, &fleet.MDMAppleDeliveryVerifying, ctx, ds, t) @@ -1870,14 +1891,14 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(2), res.Failed) // no change require.Equal(t, uint(0), res.Verifying) // no change, host must apply all profiles count as latest require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, ptr.Uint(0), pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, ptr.Uint(0), hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, ptr.Uint(0), pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, ptr.Uint(0), hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) // hosts[9] installed all profiles upsertHostCPs(hosts[9:10], noTeamCPs, fleet.MDMAppleOperationTypeInstall, &fleet.MDMAppleDeliveryVerifying, ctx, ds, t) @@ -1889,14 +1910,14 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(2), res.Failed) // no change require.Equal(t, uint(1), res.Verifying) // add one host that has installed all profiles require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, hosts[9:10])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, ptr.Uint(0), pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, ptr.Uint(0), hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, ptr.Uint(0), hosts[9:10])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, ptr.Uint(0), pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, ptr.Uint(0), hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, ptr.Uint(0), hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) // create a team tm, err := ds.NewTeam(ctx, &fleet.Team{Name: "rocket"}) @@ -1908,10 +1929,10 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(0), res.Failed) // no profiles yet require.Equal(t, uint(0), res.Verifying) // no profiles yet require.Equal(t, uint(0), res.Verified) // no profiles yet - require.True(t, checkListHosts(fleet.MacOSSettingsPending, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsFailed, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, &tm.ID, []*fleet.Host{})) // transfer hosts[9] to new team err = ds.AddHostsToTeam(ctx, &tm.ID, []uint{hosts[9].ID}) @@ -1926,14 +1947,14 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(len(hosts)-4), res.Pending) // hosts[9] is still not pending, transferred to team require.Equal(t, uint(2), res.Failed) // no change require.Equal(t, uint(0), res.Verifying) // hosts[9] was transferred so this is now zero - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, ptr.Uint(0), pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, ptr.Uint(0), hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, ptr.Uint(0), pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, ptr.Uint(0), hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) res, err = ds.GetMDMAppleHostsProfilesSummary(ctx, &tm.ID) // get summary for new team require.NoError(t, err) @@ -1942,10 +1963,10 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(0), res.Failed) require.Equal(t, uint(0), res.Verifying) require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, &tm.ID, hosts[9:10])) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, &tm.ID, hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsFailed, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, &tm.ID, []*fleet.Host{})) // create somes config profiles for the new team var teamCPs []*fleet.MDMAppleConfigProfile @@ -1964,10 +1985,10 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(0), res.Failed) require.Equal(t, uint(0), res.Verifying) require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, &tm.ID, hosts[9:10])) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, &tm.ID, hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsFailed, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, &tm.ID, []*fleet.Host{})) // hosts[9] successfully removed old profiles upsertHostCPs(hosts[9:10], noTeamCPs, fleet.MDMAppleOperationTypeRemove, &fleet.MDMAppleDeliveryVerifying, ctx, ds, t) @@ -1978,10 +1999,10 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(0), res.Failed) require.Equal(t, uint(1), res.Verifying) // hosts[9] is verifying all new profiles require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, &tm.ID, hosts[9:10])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsFailed, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, &tm.ID, hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsVerified, &tm.ID, []*fleet.Host{})) // verify one profile on hosts[9] upsertHostCPs(hosts[9:10], teamCPs[0:1], fleet.MDMAppleOperationTypeInstall, &fleet.MDMAppleDeliveryVerified, ctx, ds, t) @@ -1992,10 +2013,10 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(0), res.Failed) require.Equal(t, uint(1), res.Verifying) // hosts[9] is still verifying other profiles require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, &tm.ID, hosts[9:10])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsFailed, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, &tm.ID, hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsVerified, &tm.ID, []*fleet.Host{})) // verify the other profiles on hosts[9] upsertHostCPs(hosts[9:10], teamCPs[1:], fleet.MDMAppleOperationTypeInstall, &fleet.MDMAppleDeliveryVerified, ctx, ds, t) @@ -2006,10 +2027,10 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(0), res.Failed) require.Equal(t, uint(0), res.Verifying) require.Equal(t, uint(1), res.Verified) // hosts[9] is all verified - require.True(t, checkListHosts(fleet.MacOSSettingsPending, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, &tm.ID, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, &tm.ID, hosts[9:10])) + require.True(t, checkListHosts(fleet.OSSettingsPending, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsFailed, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, &tm.ID, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, &tm.ID, hosts[9:10])) // confirm no changes in summary for profiles with no team res, err = ds.GetMDMAppleHostsProfilesSummary(ctx, ptr.Uint(0)) // team id zero represents no team @@ -2020,14 +2041,14 @@ func testMDMAppleHostsProfilesStatus(t *testing.T, ds *Datastore) { require.Equal(t, uint(2), res.Failed) // two failed hosts require.Equal(t, uint(0), res.Verifying) // hosts[9] transferred to new team so is not counted under no team require.Equal(t, uint(0), res.Verified) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, nil, pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, nil, hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, nil, []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsPending, ptr.Uint(0), pendingHosts)) - require.True(t, checkListHosts(fleet.MacOSSettingsFailed, ptr.Uint(0), hosts[0:2])) - require.True(t, checkListHosts(fleet.MacOSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) - require.True(t, checkListHosts(fleet.MacOSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, nil, pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, nil, hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, nil, []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsPending, ptr.Uint(0), pendingHosts)) + require.True(t, checkListHosts(fleet.OSSettingsFailed, ptr.Uint(0), hosts[0:2])) + require.True(t, checkListHosts(fleet.OSSettingsVerifying, ptr.Uint(0), []*fleet.Host{})) + require.True(t, checkListHosts(fleet.OSSettingsVerified, ptr.Uint(0), []*fleet.Host{})) } func testMDMAppleIdPAccount(t *testing.T, ds *Datastore) { @@ -2166,7 +2187,7 @@ func testDeleteMDMAppleProfilesForHost(t *testing.T, ds *Datastore) { } func createDiskEncryptionRecord(ctx context.Context, ds *Datastore, t *testing.T, hostId uint, key string, decryptable bool, threshold time.Time) { - err := ds.SetOrUpdateHostDiskEncryptionKey(ctx, hostId, key) + err := ds.SetOrUpdateHostDiskEncryptionKey(ctx, hostId, key, "", nil) require.NoError(t, err) err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{hostId}, decryptable, threshold) require.NoError(t, err) diff --git a/server/datastore/mysql/hosts.go b/server/datastore/mysql/hosts.go index 10124e68e0..0ad9c6e005 100644 --- a/server/datastore/mysql/hosts.go +++ b/server/datastore/mysql/hosts.go @@ -887,7 +887,11 @@ func (ds *Datastore) ListHosts(ctx context.Context, filter fleet.TeamFilter, opt } leftJoinFailingPolicies := !useHostPaginationOptim - sql, params = ds.applyHostFilters(opt, sql, filter, params, leftJoinFailingPolicies) + + sql, params, err := ds.applyHostFilters(ctx, opt, sql, filter, params, leftJoinFailingPolicies) + if err != nil { + return nil, ctxerr.Wrap(ctx, err, "list hosts: apply host filters") + } hosts := []*fleet.Host{} if err := sqlx.SelectContext(ctx, ds.reader(ctx), &hosts, sql, params...); err != nil { @@ -906,7 +910,7 @@ func (ds *Datastore) ListHosts(ctx context.Context, filter fleet.TeamFilter, opt } // TODO(Sarah): Do we need to reconcile mutually exclusive filters? -func (ds *Datastore) applyHostFilters(opt fleet.HostListOptions, sql string, filter fleet.TeamFilter, params []interface{}, leftJoinFailingPolicies bool) (string, []interface{}) { +func (ds *Datastore) applyHostFilters(ctx context.Context, opt fleet.HostListOptions, sql string, filter fleet.TeamFilter, params []interface{}, leftJoinFailingPolicies bool) (string, []interface{}, error) { opt.OrderKey = defaultHostColumnTableAlias(opt.OrderKey) deviceMappingJoin := `LEFT JOIN ( @@ -1004,12 +1008,20 @@ func (ds *Datastore) applyHostFilters(opt fleet.HostListOptions, sql string, fil sql, params = filterHostsByMDM(sql, opt, params) sql, params = filterHostsByMacOSSettingsStatus(sql, opt, params) sql, params = filterHostsByMacOSDiskEncryptionStatus(sql, opt, params) + if enableDiskEncryption, err := ds.getConfigEnableDiskEncryption(ctx, opt.TeamFilter); err != nil { + return "", nil, err + } else if opt.OSSettingsFilter.IsValid() { + sql, params = ds.filterHostsByOSSettingsStatus(sql, opt, params, enableDiskEncryption) + } else if opt.OSSettingsDiskEncryptionFilter.IsValid() { + sql, params = ds.filterHostsByOSSettingsDiskEncryptionStatus(sql, opt, params, enableDiskEncryption) + } + sql, params = filterHostsByMDMBootstrapPackageStatus(sql, opt, params) sql, params = filterHostsByOS(sql, opt, params) sql, params, _ = hostSearchLike(sql, params, opt.MatchQuery, hostSearchColumns...) sql, params = appendListOptionsWithCursorToSQL(sql, params, &opt.ListOptions) - return sql, params + return sql, params, nil } func filterHostsByTeam(sql string, opt fleet.HostListOptions, params []interface{}) (string, []interface{}) { @@ -1115,13 +1127,13 @@ func filterHostsByMacOSSettingsStatus(sql string, opt fleet.HostListOptions, par var subquery string var subqueryParams []interface{} switch opt.MacOSSettingsFilter { - case fleet.MacOSSettingsFailed: + case fleet.OSSettingsFailed: subquery, subqueryParams = subqueryHostsMacOSSettingsStatusFailing() - case fleet.MacOSSettingsPending: + case fleet.OSSettingsPending: subquery, subqueryParams = subqueryHostsMacOSSettingsStatusPending() - case fleet.MacOSSettingsVerifying: + case fleet.OSSettingsVerifying: subquery, subqueryParams = subqueryHostsMacOSSetttingsStatusVerifying() - case fleet.MacOSSettingsVerified: + case fleet.OSSettingsVerified: subquery, subqueryParams = subqueryHostsMacOSSetttingsStatusVerified() } if subquery != "" { @@ -1140,22 +1152,131 @@ func filterHostsByMacOSDiskEncryptionStatus(sql string, opt fleet.HostListOption var subqueryParams []interface{} switch opt.MacOSSettingsDiskEncryptionFilter { case fleet.DiskEncryptionVerified: - subquery, subqueryParams = subqueryDiskEncryptionVerified() + subquery, subqueryParams = subqueryFileVaultVerified() case fleet.DiskEncryptionVerifying: - subquery, subqueryParams = subqueryDiskEncryptionVerifying() + subquery, subqueryParams = subqueryFileVaultVerifying() case fleet.DiskEncryptionActionRequired: - subquery, subqueryParams = subqueryDiskEncryptionActionRequired() + subquery, subqueryParams = subqueryFileVaultActionRequired() case fleet.DiskEncryptionEnforcing: - subquery, subqueryParams = subqueryDiskEncryptionEnforcing() + subquery, subqueryParams = subqueryFileVaultEnforcing() case fleet.DiskEncryptionFailed: - subquery, subqueryParams = subqueryDiskEncryptionFailed() + subquery, subqueryParams = subqueryFileVaultFailed() case fleet.DiskEncryptionRemovingEnforcement: - subquery, subqueryParams = subqueryDiskEncryptionRemovingEnforcement() + subquery, subqueryParams = subqueryFileVaultRemovingEnforcement() } return sql + fmt.Sprintf(` AND EXISTS (%s)`, subquery), append(params, subqueryParams...) } +func (ds *Datastore) filterHostsByOSSettingsStatus(sql string, opt fleet.HostListOptions, params []interface{}, isDiskEncryptionEnabled bool) (string, []interface{}) { + if !opt.OSSettingsFilter.IsValid() { + return sql, params + } + + sqlFmt := ` AND h.platform IN('windows', 'darwin')` + if opt.TeamFilter == nil { + // macOS settings filter is not compatible with the "all teams" option so append the "no + // team" filter here (note that filterHostsByTeam applies the "no team" filter if TeamFilter == 0) + sqlFmt += ` AND h.team_id IS NULL` + } + sqlFmt += ` AND ((h.platform = 'windows' AND (%s)) OR (h.platform = 'darwin' AND (%s)))` + + var subqueryMacOS string + var subqueryParams []interface{} + whereWindows := "FALSE" + whereMacOS := "FALSE" + + switch opt.OSSettingsFilter { + case fleet.OSSettingsFailed: + subqueryMacOS, subqueryParams = subqueryHostsMacOSSettingsStatusFailing() + if isDiskEncryptionEnabled { + whereWindows = ds.whereBitLockerStatus(fleet.DiskEncryptionFailed) + } + case fleet.OSSettingsPending: + subqueryMacOS, subqueryParams = subqueryHostsMacOSSettingsStatusPending() + if isDiskEncryptionEnabled { + whereWindows = ds.whereBitLockerStatus(fleet.DiskEncryptionEnforcing) + } + case fleet.OSSettingsVerifying: + subqueryMacOS, subqueryParams = subqueryHostsMacOSSetttingsStatusVerifying() + if isDiskEncryptionEnabled { + whereWindows = ds.whereBitLockerStatus(fleet.DiskEncryptionVerifying) + } + case fleet.OSSettingsVerified: + subqueryMacOS, subqueryParams = subqueryHostsMacOSSetttingsStatusVerified() + if isDiskEncryptionEnabled { + whereWindows = ds.whereBitLockerStatus(fleet.DiskEncryptionVerified) + } + } + + if subqueryMacOS != "" { + whereMacOS = "EXISTS (" + subqueryMacOS + ")" + } + + return sql + fmt.Sprintf(sqlFmt, whereWindows, whereMacOS), append(params, subqueryParams...) +} + +func (ds *Datastore) filterHostsByOSSettingsDiskEncryptionStatus(sql string, opt fleet.HostListOptions, params []interface{}, enableDiskEncryption bool) (string, []interface{}) { + if !opt.OSSettingsDiskEncryptionFilter.IsValid() { + return sql, params + } + + sqlFmt := " AND h.platform IN('windows', 'darwin')" + // TODO: Should we add no team filter here? It isn't included for the FileVault filter but is + // for the general macOS settings filter. + if opt.TeamFilter == nil { + // macOS settings filter is not compatible with the "all teams" option so append the "no + // team" filter here (note that filterHostsByTeam applies the "no team" filter if TeamFilter == 0) + sqlFmt += ` AND h.team_id IS NULL` + } + sqlFmt += ` AND ((h.platform = 'windows' AND %s) OR (h.platform = 'darwin' AND %s))` + + var subqueryMacOS string + var subqueryParams []interface{} + whereWindows := "FALSE" + whereMacOS := "FALSE" + + switch opt.OSSettingsDiskEncryptionFilter { + case fleet.DiskEncryptionVerified: + if enableDiskEncryption { + whereWindows = ds.whereBitLockerStatus(fleet.DiskEncryptionVerified) + } + subqueryMacOS, subqueryParams = subqueryFileVaultVerified() + + case fleet.DiskEncryptionVerifying: + if enableDiskEncryption { + whereWindows = ds.whereBitLockerStatus(fleet.DiskEncryptionVerifying) + } + subqueryMacOS, subqueryParams = subqueryFileVaultVerifying() + + case fleet.DiskEncryptionActionRequired: + // Windows hosts cannot be action required status in the current implementation. + subqueryMacOS, subqueryParams = subqueryFileVaultActionRequired() + + case fleet.DiskEncryptionEnforcing: + if enableDiskEncryption { + whereWindows = ds.whereBitLockerStatus(fleet.DiskEncryptionEnforcing) + } + subqueryMacOS, subqueryParams = subqueryFileVaultEnforcing() + + case fleet.DiskEncryptionFailed: + if enableDiskEncryption { + whereWindows = ds.whereBitLockerStatus(fleet.DiskEncryptionFailed) + } + subqueryMacOS, subqueryParams = subqueryFileVaultFailed() + + case fleet.DiskEncryptionRemovingEnforcement: + // Windows hosts cannot be removing enforcement status in the current implementation. + subqueryMacOS, subqueryParams = subqueryFileVaultRemovingEnforcement() + } + + if subqueryMacOS != "" { + whereMacOS = "EXISTS (" + subqueryMacOS + ")" + } + + return sql + fmt.Sprintf(sqlFmt, whereWindows, whereMacOS), append(params, subqueryParams...) +} + func filterHostsByMDMBootstrapPackageStatus(sql string, opt fleet.HostListOptions, params []interface{}) (string, []interface{}) { if opt.MDMBootstrapPackageFilter == nil || !opt.MDMBootstrapPackageFilter.IsValid() { return sql, params @@ -1210,7 +1331,11 @@ func (ds *Datastore) CountHosts(ctx context.Context, filter fleet.TeamFilter, op leftJoinFailingPolicies := false var params []interface{} - sql, params = ds.applyHostFilters(opt, sql, filter, params, leftJoinFailingPolicies) + + sql, params, err := ds.applyHostFilters(ctx, opt, sql, filter, params, leftJoinFailingPolicies) + if err != nil { + return 0, ctxerr.Wrap(ctx, err, "count hosts: apply host filters") + } var count int if err := sqlx.GetContext(ctx, ds.reader(ctx), &count, sql, params...); err != nil { @@ -1742,13 +1867,14 @@ func (ds *Datastore) LoadHostByNodeKey(ctx context.Context, nodeKey string) (*fl type hostWithMDMInfo struct { fleet.Host - HostID *uint `db:"host_id"` - Enrolled *bool `db:"enrolled"` - ServerURL *string `db:"server_url"` - InstalledFromDep *bool `db:"installed_from_dep"` - IsServer *bool `db:"is_server"` - MDMID *uint `db:"mdm_id"` - Name *string `db:"name"` + HostID *uint `db:"host_id"` + Enrolled *bool `db:"enrolled"` + ServerURL *string `db:"server_url"` + InstalledFromDep *bool `db:"installed_from_dep"` + IsServer *bool `db:"is_server"` + MDMID *uint `db:"mdm_id"` + Name *string `db:"name"` + EncryptionKeyAvailable *bool `db:"encryption_key_available"` } // LoadHostByOrbitNodeKey loads the whole host identified by the node key. @@ -1804,7 +1930,9 @@ func (ds *Datastore) LoadHostByOrbitNodeKey(ctx context.Context, nodeKey string) COALESCE(hm.is_server, false) AS is_server, COALESCE(mdms.name, ?) AS name, COALESCE(hdek.reset_requested, false) AS disk_encryption_reset_requested, + COALESCE(hdek.decryptable, false) as encryption_key_available, IF(hdep.host_id AND ISNULL(hdep.deleted_at), true, false) AS dep_assigned_to_fleet, + hd.encrypted as disk_encryption_enabled, t.name as team_name FROM hosts h @@ -1824,6 +1952,10 @@ func (ds *Datastore) LoadHostByOrbitNodeKey(ctx context.Context, nodeKey string) host_disk_encryption_keys hdek ON hdek.host_id = h.id + LEFT OUTER JOIN + host_disks hd + ON + hd.host_id = h.id LEFT OUTER JOIN teams t ON @@ -1846,6 +1978,10 @@ func (ds *Datastore) LoadHostByOrbitNodeKey(ctx context.Context, nodeKey string) MDMID: hostWithMDM.MDMID, Name: *hostWithMDM.Name, } + + host.MDM = fleet.MDMHostData{ + EncryptionKeyAvailable: *hostWithMDM.EncryptionKeyAvailable, + } } return &host, nil case errors.Is(err, sql.ErrNoRows): @@ -3013,19 +3149,30 @@ func (ds *Datastore) SetOrUpdateHostDisksEncryption(ctx context.Context, hostID ) } -func (ds *Datastore) SetOrUpdateHostDiskEncryptionKey(ctx context.Context, hostID uint, encryptedBase64Key string) error { +func (ds *Datastore) SetOrUpdateHostDiskEncryptionKey(ctx context.Context, hostID uint, encryptedBase64Key, clientError string, decryptable *bool) error { _, err := ds.writer(ctx).ExecContext(ctx, ` - INSERT INTO host_disk_encryption_keys (host_id, base64_encrypted) - VALUES (?, ?) - ON DUPLICATE KEY UPDATE - /* if the key has changed, NULLify this value so it can be calculated again */ - decryptable = IF(base64_encrypted = VALUES(base64_encrypted), decryptable, NULL), - base64_encrypted = VALUES(base64_encrypted) - `, hostID, encryptedBase64Key) +INSERT INTO host_disk_encryption_keys + (host_id, base64_encrypted, client_error, decryptable) +VALUES + (?, ?, ?, ?) +ON DUPLICATE KEY UPDATE + /* if the key has changed, set decrypted to its initial value so it can be calculated again if necessary (if null) */ + decryptable = IF(base64_encrypted = VALUES(base64_encrypted), decryptable, VALUES(decryptable)), + base64_encrypted = VALUES(base64_encrypted), + client_error = VALUES(client_error) +`, hostID, encryptedBase64Key, clientError, decryptable) return err } func (ds *Datastore) GetUnverifiedDiskEncryptionKeys(ctx context.Context) ([]fleet.HostDiskEncryptionKey, error) { + // NOTE(mna): currently we only verify encryption keys for macOS, + // Windows/bitlocker uses a different approach where orbit sends the + // encryption key and we encrypt it server-side with the WSTEP certificate, + // so it is always decryptable once received. + // + // To avoid sending Windows-related keys to verify as part of this call, we + // only return rows that have a non-empty encryption key (for Windows, the + // key is blanked if an error occurred trying to retrieve it on the host). var keys []fleet.HostDiskEncryptionKey err := sqlx.SelectContext(ctx, ds.reader(ctx), &keys, ` SELECT @@ -3035,7 +3182,8 @@ func (ds *Datastore) GetUnverifiedDiskEncryptionKeys(ctx context.Context) ([]fle FROM host_disk_encryption_keys WHERE - decryptable IS NULL + decryptable IS NULL AND + base64_encrypted != '' `) return keys, err } diff --git a/server/datastore/mysql/hosts_test.go b/server/datastore/mysql/hosts_test.go index 58367713b1..0a89f4f32e 100644 --- a/server/datastore/mysql/hosts_test.go +++ b/server/datastore/mysql/hosts_test.go @@ -21,6 +21,7 @@ import ( "github.com/fleetdm/fleet/v4/server" "github.com/fleetdm/fleet/v4/server/config" "github.com/fleetdm/fleet/v4/server/fleet" + "github.com/fleetdm/fleet/v4/server/mdm/apple/mobileconfig" "github.com/fleetdm/fleet/v4/server/ptr" "github.com/fleetdm/fleet/v4/server/test" "github.com/google/uuid" @@ -111,7 +112,7 @@ func TestHosts(t *testing.T) { {"HostsListBySoftwareChangedAt", testHostsListBySoftwareChangedAt}, {"HostsListByOperatingSystemID", testHostsListByOperatingSystemID}, {"HostsListByOSNameAndVersion", testHostsListByOSNameAndVersion}, - {"HostsListByDiskEncryptionStatus", testHostsListDiskEncryptionStatus}, + {"HostsListByDiskEncryptionStatus", testHostsListMacOSSettingsDiskEncryptionStatus}, {"HostsListFailingPolicies", printReadsInTest(testHostsListFailingPolicies)}, {"HostsExpiration", testHostsExpiration}, {"HostsAllPackStats", testHostsAllPackStats}, @@ -722,8 +723,13 @@ func testHostListOptionsTeamFilter(t *testing.T, ds *Datastore) { var hosts []*fleet.Host for i := 0; i < 10; i++ { + var opts []test.NewHostOption + switch i { + case 5, 6: + opts = append(opts, test.WithPlatform("windows")) + } h := test.NewHost(t, ds, fmt.Sprintf("foo.local.%d", i), "1.1.1.1", - fmt.Sprintf("%d", i), fmt.Sprintf("%d", i), time.Now()) + fmt.Sprintf("%d", i), fmt.Sprintf("%d", i), time.Now(), opts...) hosts = append(hosts, h) } userFilter := fleet.TeamFilter{User: test.UserAdmin} @@ -763,12 +769,12 @@ func testHostListOptionsTeamFilter(t *testing.T, ds *Datastore) { Checksum: []byte("csum"), }, })) - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team1.ID, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // hosts[0] - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team2.ID, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // wrong team + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team1.ID, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // hosts[0] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team2.ID, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // wrong team // macos settings filter does not support "all teams" so teamIDFilterNil acts the same as teamIDFilterZero - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterZero, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // no team - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterNil, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // no team - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // no team + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterZero, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // no team + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterNil, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // no team + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // no team require.NoError(t, ds.BulkUpsertMDMAppleHostProfiles(context.Background(), []*fleet.MDMAppleBulkUpsertHostProfilePayload{ { @@ -781,12 +787,39 @@ func testHostListOptionsTeamFilter(t *testing.T, ds *Datastore) { Checksum: []byte("csum"), }, })) - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team1.ID, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // hosts[0] - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team2.ID, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // wrong team + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team1.ID, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // hosts[0] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team2.ID, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // wrong team // macos settings filter does not support "all teams" so both teamIDFilterNil acts the same as teamIDFilterZero - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterZero, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // hosts[9] - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterNil, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // hosts[9] - listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // hosts[9] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterZero, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // hosts[9] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterNil, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // hosts[9] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // hosts[9] + + // test team filter in combination with os settings filter + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team1.ID, OSSettingsFilter: fleet.OSSettingsVerifying}, 1) // hosts[0] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team2.ID, OSSettingsFilter: fleet.OSSettingsVerifying}, 0) // wrong team + // os settings filter does not support "all teams" so teamIDFilterNil acts the same as teamIDFilterZero + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterZero, OSSettingsFilter: fleet.OSSettingsVerifying}, 1) // hosts[9] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterNil, OSSettingsFilter: fleet.OSSettingsVerifying}, 1) // hosts[9] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{OSSettingsFilter: fleet.OSSettingsVerifying}, 1) + + // test team filter in combination with os settings disk encryptionfilter + require.NoError(t, ds.BulkUpsertMDMAppleHostProfiles(context.Background(), []*fleet.MDMAppleBulkUpsertHostProfilePayload{ + { + ProfileID: 1, + ProfileIdentifier: mobileconfig.FleetFileVaultPayloadIdentifier, + HostUUID: hosts[8].UUID, // hosts[8] is assgined to no team + CommandUUID: "command-uuid-3", + OperationType: fleet.MDMAppleOperationTypeInstall, + Status: &fleet.MDMAppleDeliveryPending, + Checksum: []byte("disk-encryption-csum"), + }, + })) + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team1.ID, OSSettingsDiskEncryptionFilter: fleet.DiskEncryptionEnforcing}, 0) // hosts[0] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: &team2.ID, OSSettingsDiskEncryptionFilter: fleet.DiskEncryptionEnforcing}, 0) // wrong team + // os settings filter does not support "all teams" so teamIDFilterNil acts the same as teamIDFilterZero + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterZero, OSSettingsDiskEncryptionFilter: fleet.DiskEncryptionEnforcing}, 1) // hosts[8] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{TeamFilter: teamIDFilterNil, OSSettingsDiskEncryptionFilter: fleet.DiskEncryptionEnforcing}, 1) // hosts[8] + listHostsCheckCount(t, ds, userFilter, fleet.HostListOptions{OSSettingsDiskEncryptionFilter: fleet.DiskEncryptionEnforcing}, 1) // hosts[8] } func testHostsListFilterAdditional(t *testing.T, ds *Datastore) { @@ -2920,7 +2953,7 @@ func testHostsListByOSNameAndVersion(t *testing.T, ds *Datastore) { } } -func testHostsListDiskEncryptionStatus(t *testing.T, ds *Datastore) { +func testHostsListMacOSSettingsDiskEncryptionStatus(t *testing.T, ds *Datastore) { ctx := context.Background() // seed hosts @@ -5740,7 +5773,7 @@ func testHostsDeleteHosts(t *testing.T, ds *Datastore) { err = ds.SetOrUpdateHostOrbitInfo(context.Background(), host.ID, "1.1.0") require.NoError(t, err) // set an encryption key - err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host.ID, "TESTKEY") + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host.ID, "TESTKEY", "", nil) require.NoError(t, err) // set an mdm profile prof, err := ds.NewMDMAppleConfigProfile(context.Background(), *configProfileForTest(t, "N1", "I1", "U1")) @@ -6586,23 +6619,26 @@ func testHostsLoadHostByOrbitNodeKey(t *testing.T, ds *Datastore) { require.NoError(t, err) require.Equal(t, hFleet.ID, loadFleet.ID) require.False(t, loadFleet.MDMInfo.IsServer) + + // fill in disk encryption information + require.NoError(t, ds.SetOrUpdateHostDisksEncryption(context.Background(), hFleet.ID, true)) + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, hFleet.ID, "test-key", "", nil) + require.NoError(t, err) + err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{hFleet.ID}, true, time.Now()) + require.NoError(t, err) + loadFleet, err = ds.LoadHostByOrbitNodeKey(ctx, *hFleet.OrbitNodeKey) + require.NoError(t, err) + require.True(t, loadFleet.MDM.EncryptionKeyAvailable) + require.NoError(t, err) + require.NotNil(t, loadFleet.DiskEncryptionEnabled) + require.True(t, *loadFleet.DiskEncryptionEnabled) } -func checkEncryptionKeyStatus(t *testing.T, ds *Datastore, hostID uint, expected *bool) { - ExecAdhocSQL(t, ds, func(tx sqlx.ExtContext) error { - var actual *bool - - row := tx.QueryRowxContext( - context.Background(), - "SELECT decryptable FROM host_disk_encryption_keys WHERE host_id = ?", - hostID, - ) - - err := row.Scan(&actual) - require.NoError(t, err) - require.Equal(t, expected, actual) - return nil - }) +func checkEncryptionKeyStatus(t *testing.T, ds *Datastore, hostID uint, expectedKey string, expectedDecryptable *bool) { + got, err := ds.GetHostDiskEncryptionKey(context.Background(), hostID) + require.NoError(t, err) + require.Equal(t, expectedKey, got.Base64Encrypted) + require.Equal(t, expectedDecryptable, got.Decryptable) } func testHostsSetOrUpdateHostDisksEncryptionKey(t *testing.T, ds *Datastore) { @@ -6632,49 +6668,81 @@ func testHostsSetOrUpdateHostDisksEncryptionKey(t *testing.T, ds *Datastore) { PrimaryMac: "30-65-EC-6F-C4-59", }) require.NoError(t, err) - - err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host.ID, "AAA") + host3, err := ds.NewHost(context.Background(), &fleet.Host{ + DetailUpdatedAt: time.Now(), + LabelUpdatedAt: time.Now(), + PolicyUpdatedAt: time.Now(), + SeenTime: time.Now(), + NodeKey: ptr.String("3"), + UUID: "3", + OsqueryHostID: ptr.String("3"), + Hostname: "foo.local3", + PrimaryIP: "192.168.1.3", + PrimaryMac: "30-65-EC-6F-C4-60", + }) require.NoError(t, err) - err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host2.ID, "BBB") + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host.ID, "AAA", "", nil) require.NoError(t, err) - checkEncryptionKey := func(hostID uint, expected string) { - actual, err := ds.GetHostDiskEncryptionKey(context.Background(), hostID) - require.NoError(t, err) - require.Equal(t, expected, actual.Base64Encrypted) - } + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host2.ID, "BBB", "", nil) + require.NoError(t, err) h, err := ds.Host(context.Background(), host.ID) require.NoError(t, err) - checkEncryptionKey(h.ID, "AAA") + checkEncryptionKeyStatus(t, ds, h.ID, "AAA", nil) h, err = ds.Host(context.Background(), host2.ID) require.NoError(t, err) - checkEncryptionKey(h.ID, "BBB") + checkEncryptionKeyStatus(t, ds, h.ID, "BBB", nil) - err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host2.ID, "CCC") + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host2.ID, "CCC", "", nil) require.NoError(t, err) h, err = ds.Host(context.Background(), host2.ID) require.NoError(t, err) - checkEncryptionKey(h.ID, "CCC") + checkEncryptionKeyStatus(t, ds, h.ID, "CCC", nil) // setting the encryption key to an existing value doesn't change its // encryption status err = ds.SetHostsDiskEncryptionKeyStatus(context.Background(), []uint{host.ID}, true, time.Now().Add(time.Hour)) require.NoError(t, err) - checkEncryptionKeyStatus(t, ds, host.ID, ptr.Bool(true)) + checkEncryptionKeyStatus(t, ds, host.ID, "AAA", ptr.Bool(true)) // same key doesn't change encryption status - err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host.ID, "AAA") + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host.ID, "AAA", "", nil) require.NoError(t, err) - checkEncryptionKeyStatus(t, ds, host.ID, ptr.Bool(true)) + checkEncryptionKeyStatus(t, ds, host.ID, "AAA", ptr.Bool(true)) // different key resets encryption status - err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host.ID, "XZY") + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host.ID, "XZY", "", nil) require.NoError(t, err) - checkEncryptionKeyStatus(t, ds, host.ID, nil) + checkEncryptionKeyStatus(t, ds, host.ID, "XZY", nil) + + // set the key with an initial decrypted status of true + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host3.ID, "abc", "", ptr.Bool(true)) + require.NoError(t, err) + checkEncryptionKeyStatus(t, ds, host3.ID, "abc", ptr.Bool(true)) + + // same key, provided decrypted status is ignored (stored one is kept) + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host3.ID, "abc", "", ptr.Bool(false)) + require.NoError(t, err) + checkEncryptionKeyStatus(t, ds, host3.ID, "abc", ptr.Bool(true)) + + // client error, key is removed and decrypted status is nulled + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host3.ID, "", "fail", nil) + require.NoError(t, err) + checkEncryptionKeyStatus(t, ds, host3.ID, "", nil) + + // new key, provided decrypted status is applied + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host3.ID, "def", "", ptr.Bool(true)) + require.NoError(t, err) + checkEncryptionKeyStatus(t, ds, host3.ID, "def", ptr.Bool(true)) + + // different key, provided decrypted status is applied + err = ds.SetOrUpdateHostDiskEncryptionKey(context.Background(), host3.ID, "ghi", "", ptr.Bool(false)) + require.NoError(t, err) + checkEncryptionKeyStatus(t, ds, host3.ID, "ghi", ptr.Bool(false)) } func testHostsSetDiskEncryptionKeyStatus(t *testing.T, ds *Datastore) { @@ -6692,7 +6760,7 @@ func testHostsSetDiskEncryptionKeyStatus(t *testing.T, ds *Datastore) { PrimaryMac: "30-65-EC-6F-C4-58", }) require.NoError(t, err) - err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "TESTKEY") + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "TESTKEY", "", nil) require.NoError(t, err) host2, err := ds.NewHost(context.Background(), &fleet.Host{ @@ -6709,7 +6777,7 @@ func testHostsSetDiskEncryptionKeyStatus(t *testing.T, ds *Datastore) { }) require.NoError(t, err) - err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host2.ID, "TESTKEY") + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host2.ID, "TESTKEY", "", nil) require.NoError(t, err) threshold := time.Now().Add(time.Hour) @@ -6717,31 +6785,31 @@ func testHostsSetDiskEncryptionKeyStatus(t *testing.T, ds *Datastore) { // empty set err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{}, false, threshold) require.NoError(t, err) - checkEncryptionKeyStatus(t, ds, host.ID, nil) - checkEncryptionKeyStatus(t, ds, host2.ID, nil) + checkEncryptionKeyStatus(t, ds, host.ID, "TESTKEY", nil) + checkEncryptionKeyStatus(t, ds, host2.ID, "TESTKEY", nil) // keys that changed after the provided threshold are not updated err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{host.ID, host2.ID}, true, threshold.Add(-24*time.Hour)) require.NoError(t, err) - checkEncryptionKeyStatus(t, ds, host.ID, nil) - checkEncryptionKeyStatus(t, ds, host2.ID, nil) + checkEncryptionKeyStatus(t, ds, host.ID, "TESTKEY", nil) + checkEncryptionKeyStatus(t, ds, host2.ID, "TESTKEY", nil) // single host err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{host.ID}, true, threshold) require.NoError(t, err) - checkEncryptionKeyStatus(t, ds, host.ID, ptr.Bool(true)) - checkEncryptionKeyStatus(t, ds, host2.ID, nil) + checkEncryptionKeyStatus(t, ds, host.ID, "TESTKEY", ptr.Bool(true)) + checkEncryptionKeyStatus(t, ds, host2.ID, "TESTKEY", nil) // multiple hosts err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{host.ID, host2.ID}, true, threshold) require.NoError(t, err) - checkEncryptionKeyStatus(t, ds, host.ID, ptr.Bool(true)) - checkEncryptionKeyStatus(t, ds, host2.ID, ptr.Bool(true)) + checkEncryptionKeyStatus(t, ds, host.ID, "TESTKEY", ptr.Bool(true)) + checkEncryptionKeyStatus(t, ds, host2.ID, "TESTKEY", ptr.Bool(true)) err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{host.ID, host2.ID}, false, threshold) require.NoError(t, err) - checkEncryptionKeyStatus(t, ds, host.ID, ptr.Bool(false)) - checkEncryptionKeyStatus(t, ds, host2.ID, ptr.Bool(false)) + checkEncryptionKeyStatus(t, ds, host.ID, "TESTKEY", ptr.Bool(false)) + checkEncryptionKeyStatus(t, ds, host2.ID, "TESTKEY", ptr.Bool(false)) } func testHostsGetUnverifiedDiskEncryptionKeys(t *testing.T, ds *Datastore) { @@ -6773,9 +6841,9 @@ func testHostsGetUnverifiedDiskEncryptionKeys(t *testing.T, ds *Datastore) { }) require.NoError(t, err) - err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "TESTKEY") + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "TESTKEY", "", nil) require.NoError(t, err) - err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host2.ID, "TESTKEY") + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host2.ID, "TESTKEY", "", nil) require.NoError(t, err) keys, err := ds.GetUnverifiedDiskEncryptionKeys(ctx) @@ -6794,6 +6862,17 @@ func testHostsGetUnverifiedDiskEncryptionKeys(t *testing.T, ds *Datastore) { keys, err = ds.GetUnverifiedDiskEncryptionKeys(ctx) require.NoError(t, err) require.Len(t, keys, 1) + require.Equal(t, host2.ID, keys[0].HostID) + + // update key of host 1 to empty with a client error, should not be reported + // by GetUnverifiedDiskEncryptionKeys + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "", "failed", nil) + require.NoError(t, err) + + keys, err = ds.GetUnverifiedDiskEncryptionKeys(ctx) + require.NoError(t, err) + require.Len(t, keys, 1) + require.Equal(t, host2.ID, keys[0].HostID) err = ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{host.ID, host2.ID}, false, threshold) require.NoError(t, err) @@ -6992,7 +7071,7 @@ func testHostsEncryptionKeyRawDecryption(t *testing.T, ds *Datastore) { require.Equal(t, -1, *got.MDM.TestGetRawDecryptable()) // create the encryption key row, but unknown decryptable - err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "abc") + err = ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "abc", "", nil) require.NoError(t, err) got, err = ds.Host(ctx, host.ID) diff --git a/server/datastore/mysql/labels.go b/server/datastore/mysql/labels.go index 551ad04635..2573a53da5 100644 --- a/server/datastore/mysql/labels.go +++ b/server/datastore/mysql/labels.go @@ -552,10 +552,13 @@ func (ds *Datastore) ListHostsInLabel(ctx context.Context, filter fleet.TeamFilt query := fmt.Sprintf(queryFmt, hostMDMSelect, failingPoliciesSelect, deviceMappingSelect, hostMDMJoin, failingPoliciesJoin, deviceMappingJoin) - query, params := ds.applyHostLabelFilters(filter, lid, query, opt) + query, params, err := ds.applyHostLabelFilters(ctx, filter, lid, query, opt) + if err != nil { + return nil, ctxerr.Wrap(ctx, err, "applying label query filters") + } hosts := []*fleet.Host{} - err := sqlx.SelectContext(ctx, ds.reader(ctx), &hosts, query, params...) + err = sqlx.SelectContext(ctx, ds.reader(ctx), &hosts, query, params...) if err != nil { return nil, ctxerr.Wrap(ctx, err, "selecting label query executions") } @@ -563,7 +566,7 @@ func (ds *Datastore) ListHostsInLabel(ctx context.Context, filter fleet.TeamFilt } // NOTE: the hosts table must be aliased to `h` in the query passed to this function. -func (ds *Datastore) applyHostLabelFilters(filter fleet.TeamFilter, lid uint, query string, opt fleet.HostListOptions) (string, []interface{}) { +func (ds *Datastore) applyHostLabelFilters(ctx context.Context, filter fleet.TeamFilter, lid uint, query string, opt fleet.HostListOptions) (string, []interface{}, error) { params := []interface{}{lid} if opt.ListOptions.OrderKey == "display_name" { @@ -582,26 +585,33 @@ func (ds *Datastore) applyHostLabelFilters(filter fleet.TeamFilter, lid uint, qu query, params = filterHostsByMacOSSettingsStatus(query, opt, params) query, params = filterHostsByMacOSDiskEncryptionStatus(query, opt, params) query, params = filterHostsByMDMBootstrapPackageStatus(query, opt, params) + if enableDiskEncryption, err := ds.getConfigEnableDiskEncryption(ctx, opt.TeamFilter); err != nil { + return "", nil, err + } else if opt.OSSettingsFilter.IsValid() { + query, params = ds.filterHostsByOSSettingsStatus(query, opt, params, enableDiskEncryption) + } else if opt.OSSettingsDiskEncryptionFilter.IsValid() { + query, params = ds.filterHostsByOSSettingsDiskEncryptionStatus(query, opt, params, enableDiskEncryption) + } query, params = searchLike(query, params, opt.MatchQuery, hostSearchColumns...) query, params = appendListOptionsWithCursorToSQL(query, params, &opt.ListOptions) - return query, params + return query, params, nil } func (ds *Datastore) CountHostsInLabel(ctx context.Context, filter fleet.TeamFilter, lid uint, opt fleet.HostListOptions) (int, error) { query := `SELECT count(*) FROM label_membership lm JOIN hosts h ON (lm.host_id = h.id) LEFT JOIN host_seen_times hst ON (h.id=hst.host_id) + LEFT JOIN host_disks hd ON (h.id=hd.host_id) ` query += hostMDMJoin - if opt.LowDiskSpaceFilter != nil { - query += ` LEFT JOIN host_disks hd ON (h.id=hd.host_id) ` + query, params, err := ds.applyHostLabelFilters(ctx, filter, lid, query, opt) + if err != nil { + return 0, err } - query, params := ds.applyHostLabelFilters(filter, lid, query, opt) - var count int if err := sqlx.GetContext(ctx, ds.reader(ctx), &count, query, params...); err != nil { return 0, ctxerr.Wrap(ctx, err, "count hosts") diff --git a/server/datastore/mysql/labels_test.go b/server/datastore/mysql/labels_test.go index db4ef80494..377cf22432 100644 --- a/server/datastore/mysql/labels_test.go +++ b/server/datastore/mysql/labels_test.go @@ -8,6 +8,7 @@ import ( "testing" "time" + "github.com/fleetdm/fleet/v4/pkg/optjson" "github.com/fleetdm/fleet/v4/server/fleet" "github.com/fleetdm/fleet/v4/server/ptr" "github.com/fleetdm/fleet/v4/server/test" @@ -66,6 +67,7 @@ func TestLabels(t *testing.T) { {"ListHostsInLabelFailingPolicies", testListHostsInLabelFailingPolicies}, {"ListHostsInLabelDiskEncryptionStatus", testListHostsInLabelDiskEncryptionStatus}, {"HostMemberOfAllLabels", testHostMemberOfAllLabels}, + {"ListHostsInLabelOSSettings", testLabelsListHostsInLabelOSSettings}, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { @@ -497,12 +499,12 @@ func testLabelsListHostsInLabelAndTeamFilter(deferred bool, t *testing.T, db *Da Checksum: []byte("csum"), }, })) - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: &team1.ID, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // h1 - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: &team2.ID, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // wrong team + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: &team1.ID, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // h1 + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: &team2.ID, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // wrong team // macos settings filter does not support "all teams" so teamIDFilterNil acts the same as teamIDFilterZero - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: teamIDFilterZero, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // no team - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: teamIDFilterNil, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // no team - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // no team + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: teamIDFilterZero, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // no team + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: teamIDFilterNil, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // no team + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // no team require.NoError(t, db.BulkUpsertMDMAppleHostProfiles(context.Background(), []*fleet.MDMAppleBulkUpsertHostProfilePayload{ { @@ -515,12 +517,12 @@ func testLabelsListHostsInLabelAndTeamFilter(deferred bool, t *testing.T, db *Da Checksum: []byte("csum"), }, })) - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: &team1.ID, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // h1 - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: &team2.ID, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 0) // wrong team + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: &team1.ID, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // h1 + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: &team2.ID, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 0) // wrong team // macos settings filter does not support "all teams" so both teamIDFilterNil acts the same as teamIDFilterZero - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: teamIDFilterZero, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // h2 - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: teamIDFilterNil, MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // h2 - listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{MacOSSettingsFilter: fleet.MacOSSettingsVerifying}, 1) // h2 + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: teamIDFilterZero, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // h2 + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{TeamFilter: teamIDFilterNil, MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // h2 + listHostsInLabelCheckCount(t, db, userFilter, l1.ID, fleet.HostListOptions{MacOSSettingsFilter: fleet.OSSettingsVerifying}, 1) // h2 } func testLabelsBuiltIn(t *testing.T, db *Datastore) { @@ -1329,3 +1331,97 @@ func testHostMemberOfAllLabels(t *testing.T, ds *Datastore) { }) } } + +func testLabelsListHostsInLabelOSSettings(t *testing.T, db *Datastore) { + h1, err := db.NewHost(context.Background(), &fleet.Host{ + DetailUpdatedAt: time.Now(), + LabelUpdatedAt: time.Now(), + PolicyUpdatedAt: time.Now(), + SeenTime: time.Now(), + OsqueryHostID: ptr.String("1"), + NodeKey: ptr.String("1"), + UUID: "1", + Hostname: "foo.local", + Platform: "windows", + }) + require.NoError(t, err) + + h2, err := db.NewHost(context.Background(), &fleet.Host{ + DetailUpdatedAt: time.Now(), + LabelUpdatedAt: time.Now(), + PolicyUpdatedAt: time.Now(), + SeenTime: time.Now(), + OsqueryHostID: ptr.String("2"), + NodeKey: ptr.String("2"), + UUID: "2", + Hostname: "bar.local", + Platform: "windows", + }) + require.NoError(t, err) + h3, err := db.NewHost(context.Background(), &fleet.Host{ + DetailUpdatedAt: time.Now(), + LabelUpdatedAt: time.Now(), + PolicyUpdatedAt: time.Now(), + SeenTime: time.Now(), + OsqueryHostID: ptr.String("3"), + NodeKey: ptr.String("3"), + UUID: "3", + Hostname: "baz.local", + Platform: "centos", + }) + require.NoError(t, err) + + l1 := &fleet.LabelSpec{ + ID: 1, + Name: "label foo", + Query: "query1", + } + err = db.ApplyLabelSpecs(context.Background(), []*fleet.LabelSpec{l1}) + require.Nil(t, err) + + filter := fleet.TeamFilter{User: test.UserAdmin} + // add all hosts to label + for _, h := range []*fleet.Host{h1, h2, h3} { + require.NoError(t, db.RecordLabelQueryExecutions(context.Background(), h, map[uint]*bool{l1.ID: ptr.Bool(true)}, time.Now(), false)) + } + + // turn on disk encryption + ac, err := db.AppConfig(context.Background()) + require.NoError(t, err) + ac.MDM.EnableDiskEncryption = optjson.SetBool(true) + require.NoError(t, db.SaveAppConfig(context.Background(), ac)) + + // add two hosts to MDM to enforce disk encryption, fleet doesn't enforce settings on centos so h3 is not included + for _, h := range []*fleet.Host{h1, h2} { + require.NoError(t, db.SetOrUpdateMDMData(context.Background(), h.ID, false, true, "https://example.com", false, fleet.WellKnownMDMFleet)) + } + // add disk encryption key for h1 + require.NoError(t, db.SetOrUpdateHostDiskEncryptionKey(context.Background(), h1.ID, "test-key", "", ptr.Bool(true))) + // add disk encryption for h1 + require.NoError(t, db.SetOrUpdateHostDisksEncryption(context.Background(), h1.ID, true)) + + checkHosts := func(t *testing.T, gotHosts []*fleet.Host, expectedIDs []uint) { + require.Len(t, gotHosts, len(expectedIDs)) + for _, h := range gotHosts { + require.Contains(t, expectedIDs, h.ID) + } + } + + // baseline no filter + hosts := listHostsInLabelCheckCount(t, db, filter, l1.ID, fleet.HostListOptions{}, 3) + checkHosts(t, hosts, []uint{h1.ID, h2.ID, h3.ID}) + + t.Run("os_settings", func(t *testing.T) { + hosts = listHostsInLabelCheckCount(t, db, filter, l1.ID, fleet.HostListOptions{OSSettingsDiskEncryptionFilter: fleet.DiskEncryptionVerified}, 1) + checkHosts(t, hosts, []uint{h1.ID}) + hosts = listHostsInLabelCheckCount(t, db, filter, l1.ID, fleet.HostListOptions{OSSettingsDiskEncryptionFilter: fleet.DiskEncryptionEnforcing}, 1) + checkHosts(t, hosts, []uint{h2.ID}) + }) + + t.Run("os_settings_disk_encryption", func(t *testing.T) { + hosts = listHostsInLabelCheckCount(t, db, filter, l1.ID, fleet.HostListOptions{OSSettingsFilter: fleet.OSSettingsVerified}, 1) + checkHosts(t, hosts, []uint{h1.ID}) + hosts = listHostsInLabelCheckCount(t, db, filter, l1.ID, fleet.HostListOptions{OSSettingsFilter: fleet.OSSettingsPending}, 1) + checkHosts(t, hosts, []uint{h2.ID}) + }) +} diff --git a/server/datastore/mysql/microsoft_mdm.go b/server/datastore/mysql/microsoft_mdm.go index 863f9c290f..7dd3a696fc 100644 --- a/server/datastore/mysql/microsoft_mdm.go +++ b/server/datastore/mysql/microsoft_mdm.go @@ -3,13 +3,16 @@ package mysql import ( "context" "database/sql" + "errors" + "fmt" "github.com/fleetdm/fleet/v4/server/contexts/ctxerr" "github.com/fleetdm/fleet/v4/server/fleet" + "github.com/go-kit/kit/log/level" "github.com/jmoiron/sqlx" ) -// MDMWindowsGetEnrolledDevice receives a Windows MDM device id and returns the device information. +// MDMWindowsGetEnrolledDevice receives a Windows MDM HW Device id and returns the device information. func (ds *Datastore) MDMWindowsGetEnrolledDevice(ctx context.Context, mdmDeviceHWID string) (*fleet.MDMWindowsEnrolledDevice, error) { stmt := `SELECT mdm_device_id, @@ -36,6 +39,33 @@ func (ds *Datastore) MDMWindowsGetEnrolledDevice(ctx context.Context, mdmDeviceH return &winMDMDevice, nil } +// MDMWindowsGetEnrolledDeviceWithDeviceID receives a Windows MDM device id and returns the device information. +func (ds *Datastore) MDMWindowsGetEnrolledDeviceWithDeviceID(ctx context.Context, mdmDeviceID string) (*fleet.MDMWindowsEnrolledDevice, error) { + stmt := `SELECT + mdm_device_id, + mdm_hardware_id, + device_state, + device_type, + device_name, + enroll_type, + enroll_user_id, + enroll_proto_version, + enroll_client_version, + not_in_oobe, + created_at, + updated_at + FROM mdm_windows_enrollments WHERE mdm_device_id = ?` + + var winMDMDevice fleet.MDMWindowsEnrolledDevice + if err := sqlx.GetContext(ctx, ds.reader(ctx), &winMDMDevice, stmt, mdmDeviceID); err != nil { + if err == sql.ErrNoRows { + return nil, ctxerr.Wrap(ctx, notFound("MDMWindowsGetEnrolledDeviceWithDeviceID").WithMessage(mdmDeviceID)) + } + return nil, ctxerr.Wrap(ctx, err, "get MDMWindowsGetEnrolledDeviceWithDeviceID") + } + return &winMDMDevice, nil +} + // MDMWindowsInsertEnrolledDevice inserts a new MDMWindowsEnrolledDevice in the database func (ds *Datastore) MDMWindowsInsertEnrolledDevice(ctx context.Context, device *fleet.MDMWindowsEnrolledDevice) error { stmt := ` @@ -74,7 +104,8 @@ func (ds *Datastore) MDMWindowsInsertEnrolledDevice(ctx context.Context, device return nil } -// MDMWindowsDeleteEnrolledDevice deletes a give MDMWindowsEnrolledDevice entry from the database using the device id. +// MDMWindowsDeleteEnrolledDevice deletes a give MDMWindowsEnrolledDevice entry from the database +// using the HW Device ID. func (ds *Datastore) MDMWindowsDeleteEnrolledDevice(ctx context.Context, mdmDeviceHWID string) error { stmt := "DELETE FROM mdm_windows_enrollments WHERE mdm_hardware_id = ?" @@ -90,3 +121,202 @@ func (ds *Datastore) MDMWindowsDeleteEnrolledDevice(ctx context.Context, mdmDevi return ctxerr.Wrap(ctx, notFound("MDMWindowsEnrolledDevice")) } + +// MDMWindowsDeleteEnrolledDeviceWithDeviceID deletes a give MDMWindowsEnrolledDevice entry from the database using the device id. +func (ds *Datastore) MDMWindowsDeleteEnrolledDeviceWithDeviceID(ctx context.Context, mdmDeviceID string) error { + stmt := "DELETE FROM mdm_windows_enrollments WHERE mdm_device_id = ?" + + res, err := ds.writer(ctx).ExecContext(ctx, stmt, mdmDeviceID) + if err != nil { + return ctxerr.Wrap(ctx, err, "delete MDMWindowsDeleteEnrolledDeviceWithDeviceID") + } + + deleted, _ := res.RowsAffected() + if deleted == 1 { + return nil + } + + return ctxerr.Wrap(ctx, notFound("MDMWindowsDeleteEnrolledDeviceWithDeviceID")) +} + +// whereBitLockerStatus returns a string suitable for inclusion within a SQL WHERE clause to filter by +// the given status. The caller is responsible for ensuring the status is valid. In the case of an invalid +// status, the function will return the string "FALSE". The caller should also ensure that the query in +// which this is used joins the following tables with the specified aliases: +// - host_disk_encryption_keys: hdek +// - host_mdm: hmdm +// - host_disks: hd +func (ds *Datastore) whereBitLockerStatus(status fleet.DiskEncryptionStatus) string { + const ( + whereNotServer = `(hmdm.is_server IS NOT NULL AND hmdm.is_server = 0)` + whereKeyAvailable = `(hdek.base64_encrypted IS NOT NULL AND hdek.base64_encrypted != '' AND hdek.decryptable IS NOT NULL AND hdek.decryptable = 1)` + whereEncrypted = `(hd.encrypted IS NOT NULL AND hd.encrypted = 1)` + whereHostDisksUpdated = `(hd.updated_at IS NOT NULL AND hdek.updated_at IS NOT NULL AND hd.updated_at >= hdek.updated_at)` + whereClientError = `(hdek.client_error IS NOT NULL AND hdek.client_error != '')` + withinGracePeriod = `(hdek.updated_at IS NOT NULL AND hdek.updated_at >= DATE_SUB(NOW(), INTERVAL 1 HOUR))` + ) + + // TODO: what if windows sends us a key for an already encrypted volumne? could it get stuck + // in pending or verifying? should we modify SetOrUpdateHostDiskEncryption to ensure that we + // increment the updated_at timestamp on the host_disks table for all encrypted volumes + // host_disks if the hdek timestamp is newer? What about SetOrUpdateHostDiskEncryptionKey? + + switch status { + case fleet.DiskEncryptionVerified: + return whereNotServer + ` +AND NOT ` + whereClientError + ` +AND ` + whereKeyAvailable + ` +AND ` + whereEncrypted + ` +AND ` + whereHostDisksUpdated + + case fleet.DiskEncryptionVerifying: + // Possible verifying scenarios: + // - we have the key and host_disks already encrypted before the key but hasn't been updated yet + // - we have the key and host_disks reported unencrypted during the 1-hour grace period after key was updated + return whereNotServer + ` +AND NOT ` + whereClientError + ` +AND ` + whereKeyAvailable + ` +AND ( + (` + whereEncrypted + ` AND NOT ` + whereHostDisksUpdated + `) + OR (NOT ` + whereEncrypted + ` AND ` + whereHostDisksUpdated + ` AND ` + withinGracePeriod + `) +)` + + case fleet.DiskEncryptionEnforcing: + // Possible enforcing scenarios: + // - we don't have the key + // - we have the key and host_disks reported unencrypted before the key was updated or outside the 1-hour grace period after key was updated + return whereNotServer + ` +AND NOT ` + whereClientError + ` +AND ( + NOT ` + whereKeyAvailable + ` + OR (` + whereKeyAvailable + ` + AND (NOT ` + whereEncrypted + ` + AND (NOT ` + whereHostDisksUpdated + ` OR NOT ` + withinGracePeriod + `) + ) + ) +)` + + case fleet.DiskEncryptionFailed: + return whereNotServer + ` AND ` + whereClientError + + default: + level.Debug(ds.logger).Log("msg", "unknown bitlocker status", "status", status) + return "FALSE" + } +} + +func (ds *Datastore) GetMDMWindowsBitLockerSummary(ctx context.Context, teamID *uint) (*fleet.MDMWindowsBitLockerSummary, error) { + enabled, err := ds.getConfigEnableDiskEncryption(ctx, teamID) + if err != nil { + return nil, err + } + if !enabled { + return &fleet.MDMWindowsBitLockerSummary{}, nil + } + + // Note action_required and removing_enforcement are not applicable to Windows hosts + sqlFmt := ` +SELECT + COUNT(if((%s), 1, NULL)) AS verified, + COUNT(if((%s), 1, NULL)) AS verifying, + 0 AS action_required, + COUNT(if((%s), 1, NULL)) AS enforcing, + COUNT(if((%s), 1, NULL)) AS failed, + 0 AS removing_enforcement +FROM + hosts h + LEFT JOIN host_disk_encryption_keys hdek ON h.id = hdek.host_id + LEFT JOIN host_mdm hmdm ON h.id = hmdm.host_id + LEFT JOIN host_disks hd ON h.id = hd.host_id +WHERE + h.platform = 'windows' AND hmdm.is_server = 0 AND %s` + + var args []interface{} + teamFilter := "h.team_id IS NULL" + if teamID != nil && *teamID > 0 { + teamFilter = "h.team_id = ?" + args = append(args, *teamID) + } + + var res fleet.MDMWindowsBitLockerSummary + stmt := fmt.Sprintf( + sqlFmt, + ds.whereBitLockerStatus(fleet.DiskEncryptionVerified), + ds.whereBitLockerStatus(fleet.DiskEncryptionVerifying), + ds.whereBitLockerStatus(fleet.DiskEncryptionEnforcing), + ds.whereBitLockerStatus(fleet.DiskEncryptionFailed), + teamFilter, + ) + if err := sqlx.GetContext(ctx, ds.reader(ctx), &res, stmt, args...); err != nil { + return nil, err + } + + return &res, nil +} + +func (ds *Datastore) GetMDMWindowsBitLockerStatus(ctx context.Context, host *fleet.Host) (*fleet.DiskEncryptionStatus, error) { + if host == nil { + return nil, errors.New("host cannot be nil") + } + + if host.Platform != "windows" { + // Generally, the caller should have already checked this, but just in case we log and + // return nil + level.Debug(ds.logger).Log("msg", "cannot get bitlocker status for non-windows host", "host_id", host.ID) + return nil, nil + } + + if host.MDMInfo != nil && host.MDMInfo.IsServer { + // It is currently expected that server hosts do not have a bitlocker status so we can skip + // the query and return nil. We log for potential debugging in case this changes in the future. + level.Debug(ds.logger).Log("msg", "no bitlocker status for server host", "host_id", host.ID) + return nil, nil + } + + enabled, err := ds.getConfigEnableDiskEncryption(ctx, host.TeamID) + if err != nil { + return nil, err + } + if !enabled { + return nil, nil + } + + // Note action_required and removing_enforcement are not applicable to Windows hosts + stmt := fmt.Sprintf(` +SELECT + CASE + WHEN (%s) THEN '%s' + WHEN (%s) THEN '%s' + WHEN (%s) THEN '%s' + WHEN (%s) THEN '%s' + END AS status +FROM + host_mdm hmdm + LEFT JOIN host_disk_encryption_keys hdek ON hmdm.host_id = hdek.host_id + LEFT JOIN host_disks hd ON hmdm.host_id = hd.host_id +WHERE + hmdm.host_id = ?`, + ds.whereBitLockerStatus(fleet.DiskEncryptionVerified), + fleet.DiskEncryptionVerified, + ds.whereBitLockerStatus(fleet.DiskEncryptionVerifying), + fleet.DiskEncryptionVerifying, + ds.whereBitLockerStatus(fleet.DiskEncryptionEnforcing), + fleet.DiskEncryptionEnforcing, + ds.whereBitLockerStatus(fleet.DiskEncryptionFailed), + fleet.DiskEncryptionFailed, + ) + + var des fleet.DiskEncryptionStatus + if err := sqlx.GetContext(ctx, ds.reader(ctx), &des, stmt, host.ID); err != nil { + if err == sql.ErrNoRows { + // At this point we know disk encryption is enabled so if we don't have a record for the + // host then we treat it as enforcing and log for potential debugging + level.Debug(ds.logger).Log("msg", "no bitlocker status found for host", "host_id", host.ID) + des = fleet.DiskEncryptionEnforcing + return &des, nil + } + return nil, err + } + + return &des, nil +} diff --git a/server/datastore/mysql/microsoft_mdm_test.go b/server/datastore/mysql/microsoft_mdm_test.go index 00e2a15265..e1fe97b2c3 100644 --- a/server/datastore/mysql/microsoft_mdm_test.go +++ b/server/datastore/mysql/microsoft_mdm_test.go @@ -3,9 +3,15 @@ package mysql import ( "context" // nolint:gosec // used only to hash for efficient comparisons "testing" + "time" + "github.com/fleetdm/fleet/v4/pkg/optjson" "github.com/fleetdm/fleet/v4/server/fleet" + "github.com/fleetdm/fleet/v4/server/mdm/apple/mobileconfig" + "github.com/fleetdm/fleet/v4/server/ptr" + "github.com/fleetdm/fleet/v4/server/test" "github.com/google/uuid" + "github.com/jmoiron/sqlx" "github.com/stretchr/testify/require" ) @@ -66,4 +72,387 @@ func testMDMWindowsEnrolledDevice(t *testing.T, ds *Datastore) { err = ds.MDMWindowsDeleteEnrolledDevice(ctx, enrolledDevice.MDMHardwareID) require.ErrorAs(t, err, &nfe) + + // Test using device ID instead of hardware ID + err = ds.MDMWindowsInsertEnrolledDevice(ctx, enrolledDevice) + require.NoError(t, err) + + err = ds.MDMWindowsInsertEnrolledDevice(ctx, enrolledDevice) + require.ErrorAs(t, err, &ae) + + gotEnrolledDevice, err = ds.MDMWindowsGetEnrolledDeviceWithDeviceID(ctx, enrolledDevice.MDMDeviceID) + require.NoError(t, err) + require.NotZero(t, gotEnrolledDevice.CreatedAt) + require.Equal(t, enrolledDevice.MDMDeviceID, gotEnrolledDevice.MDMDeviceID) + require.Equal(t, enrolledDevice.MDMHardwareID, gotEnrolledDevice.MDMHardwareID) + + err = ds.MDMWindowsDeleteEnrolledDeviceWithDeviceID(ctx, enrolledDevice.MDMDeviceID) + require.NoError(t, err) + + _, err = ds.MDMWindowsGetEnrolledDeviceWithDeviceID(ctx, enrolledDevice.MDMDeviceID) + require.ErrorAs(t, err, &nfe) + + err = ds.MDMWindowsDeleteEnrolledDevice(ctx, enrolledDevice.MDMHardwareID) + require.ErrorAs(t, err, &nfe) +} + +func TestMDMWindowsDiskEncryption(t *testing.T) { + ds := CreateMySQLDS(t) + ctx := context.Background() + + checkBitLockerSummary := func(t *testing.T, teamID *uint, expected fleet.MDMWindowsBitLockerSummary) { + bls, err := ds.GetMDMWindowsBitLockerSummary(ctx, teamID) + require.NoError(t, err) + require.NotNil(t, bls) + require.Equal(t, expected, *bls) + } + + checkListHostsFilterOSSettings := func(t *testing.T, teamID *uint, status fleet.OSSettingsStatus, expectedIDs []uint) { + gotHosts, err := ds.ListHosts(ctx, fleet.TeamFilter{User: test.UserAdmin}, fleet.HostListOptions{TeamFilter: teamID, OSSettingsFilter: status}) + require.NoError(t, err) + require.Len(t, gotHosts, len(expectedIDs)) + for _, h := range gotHosts { + require.Contains(t, expectedIDs, h.ID) + } + } + + checkListHostsFilterDiskEncryption := func(t *testing.T, teamID *uint, status fleet.DiskEncryptionStatus, expectedIDs []uint) { + gotHosts, err := ds.ListHosts(ctx, fleet.TeamFilter{User: test.UserAdmin}, fleet.HostListOptions{TeamFilter: teamID, OSSettingsDiskEncryptionFilter: status}) + require.NoError(t, err) + require.Len(t, gotHosts, len(expectedIDs), "status: %s", status) + for _, h := range gotHosts { + require.Contains(t, expectedIDs, h.ID) + } + } + + checkHostBitLockerStatus := func(t *testing.T, expected fleet.DiskEncryptionStatus, hostIDs []uint) { + for _, id := range hostIDs { + h, err := ds.Host(ctx, id) + require.NoError(t, err) + require.NotNil(t, h) + bls, err := ds.GetMDMWindowsBitLockerStatus(ctx, h) + require.NoError(t, err) + require.NotNil(t, bls) + require.Equal(t, expected, *bls) + } + } + + type hostIDsByStatus map[fleet.DiskEncryptionStatus][]uint + + checkExpected := func(t *testing.T, teamID *uint, expected hostIDsByStatus) { + for _, status := range []fleet.DiskEncryptionStatus{ + fleet.DiskEncryptionVerified, + fleet.DiskEncryptionVerifying, + fleet.DiskEncryptionFailed, + fleet.DiskEncryptionEnforcing, + fleet.DiskEncryptionRemovingEnforcement, + fleet.DiskEncryptionActionRequired, + } { + hostIDs, ok := expected[status] + if !ok { + hostIDs = []uint{} + } + checkListHostsFilterDiskEncryption(t, teamID, status, hostIDs) + checkHostBitLockerStatus(t, status, hostIDs) + } + + checkBitLockerSummary(t, teamID, fleet.MDMWindowsBitLockerSummary{ + Verified: uint(len(expected[fleet.DiskEncryptionVerified])), + Verifying: uint(len(expected[fleet.DiskEncryptionVerifying])), + Failed: uint(len(expected[fleet.DiskEncryptionFailed])), + Enforcing: uint(len(expected[fleet.DiskEncryptionEnforcing])), + RemovingEnforcement: uint(len(expected[fleet.DiskEncryptionRemovingEnforcement])), + ActionRequired: uint(len(expected[fleet.DiskEncryptionActionRequired])), + }) + + checkListHostsFilterOSSettings(t, teamID, fleet.OSSettingsVerified, expected[fleet.DiskEncryptionVerified]) + checkListHostsFilterOSSettings(t, teamID, fleet.OSSettingsVerifying, expected[fleet.DiskEncryptionVerifying]) + checkListHostsFilterOSSettings(t, teamID, fleet.OSSettingsFailed, expected[fleet.DiskEncryptionFailed]) + var expectedPending []uint + expectedPending = append(expectedPending, expected[fleet.DiskEncryptionEnforcing]...) + expectedPending = append(expectedPending, expected[fleet.DiskEncryptionRemovingEnforcement]...) + expectedPending = append(expectedPending, expected[fleet.DiskEncryptionActionRequired]...) + checkListHostsFilterOSSettings(t, teamID, fleet.OSSettingsPending, expectedPending) + } + + updateHostDisks := func(t *testing.T, hostID uint, encrypted bool, updated_at time.Time) { + ExecAdhocSQL(t, ds, func(q sqlx.ExtContext) error { + stmt := `UPDATE host_disks SET encrypted = ?, updated_at = ? where host_id = ?` + _, err := q.ExecContext(ctx, stmt, encrypted, updated_at, hostID) + return err + }) + } + + setKeyUpdatedAt := func(t *testing.T, hostID uint, keyUpdatedAt time.Time) { + ExecAdhocSQL(t, ds, func(q sqlx.ExtContext) error { + stmt := `UPDATE host_disk_encryption_keys SET updated_at = ? where host_id = ?` + _, err := q.ExecContext(ctx, stmt, keyUpdatedAt, hostID) + return err + }) + } + + // Create some hosts + var hosts []*fleet.Host + for i := 0; i < 10; i++ { + p := "windows" + if i >= 5 { + p = "darwin" + } + u := uuid.New().String() + h, err := ds.NewHost(ctx, &fleet.Host{ + DetailUpdatedAt: time.Now(), + LabelUpdatedAt: time.Now(), + PolicyUpdatedAt: time.Now(), + SeenTime: time.Now(), + NodeKey: &u, + UUID: u, + Hostname: u, + Platform: p, + }) + require.NoError(t, err) + require.NotNil(t, h) + hosts = append(hosts, h) + + require.NoError(t, ds.SetOrUpdateMDMData(ctx, h.ID, false, true, "https://example.com", false, fleet.WellKnownMDMFleet)) + } + + t.Run("Disk encryption disabled", func(t *testing.T) { + ac, err := ds.AppConfig(ctx) + require.NoError(t, err) + require.False(t, ac.MDM.EnableDiskEncryption.Value) + + checkExpected(t, nil, hostIDsByStatus{}) // no hosts are counted because disk encryption is not enabled + }) + + t.Run("Disk encryption enabled", func(t *testing.T) { + ac, err := ds.AppConfig(ctx) + require.NoError(t, err) + ac.MDM.EnableDiskEncryption = optjson.SetBool(true) + require.NoError(t, ds.SaveAppConfig(ctx, ac)) + ac, err = ds.AppConfig(ctx) + require.NoError(t, err) + require.True(t, ac.MDM.EnableDiskEncryption.Value) + + t.Run("Bitlocker enforcing status", func(t *testing.T) { + // all windows hosts are counted as enforcing because they have not reported any disk encryption status yet + checkExpected(t, nil, hostIDsByStatus{ + fleet.DiskEncryptionEnforcing: []uint{hosts[0].ID, hosts[1].ID, hosts[2].ID, hosts[3].ID, hosts[4].ID}, + }) + + require.NoError(t, ds.SetOrUpdateHostDiskEncryptionKey(ctx, hosts[0].ID, "test-key", "", ptr.Bool(true))) + checkExpected(t, nil, hostIDsByStatus{ + // status is still pending because hosts_disks hasn't been updated yet + fleet.DiskEncryptionEnforcing: []uint{hosts[0].ID, hosts[1].ID, hosts[2].ID, hosts[3].ID, hosts[4].ID}, + }) + + require.NoError(t, ds.SetOrUpdateHostDisksEncryption(ctx, hosts[0].ID, true)) + checkExpected(t, nil, hostIDsByStatus{ + fleet.DiskEncryptionVerified: []uint{hosts[0].ID}, + fleet.DiskEncryptionEnforcing: []uint{hosts[1].ID, hosts[2].ID, hosts[3].ID, hosts[4].ID}, + }) + + cases := []struct { + name string + hostDisksEncrypted bool + reportedAfterKey bool + expectedWithinGracePeriod fleet.DiskEncryptionStatus + expectedOutsideGracePeriod fleet.DiskEncryptionStatus + }{ + { + name: "encrypted reported after key", + hostDisksEncrypted: true, + reportedAfterKey: true, + expectedWithinGracePeriod: fleet.DiskEncryptionVerified, + expectedOutsideGracePeriod: fleet.DiskEncryptionVerified, + }, + { + name: "encrypted reported before key", + hostDisksEncrypted: true, + reportedAfterKey: false, + expectedWithinGracePeriod: fleet.DiskEncryptionVerifying, + expectedOutsideGracePeriod: fleet.DiskEncryptionVerifying, + }, + { + name: "not encrypted reported before key", + hostDisksEncrypted: false, + reportedAfterKey: false, + expectedWithinGracePeriod: fleet.DiskEncryptionEnforcing, + expectedOutsideGracePeriod: fleet.DiskEncryptionEnforcing, + }, + { + name: "not encrypted reported after key", + hostDisksEncrypted: false, + reportedAfterKey: true, + expectedWithinGracePeriod: fleet.DiskEncryptionVerifying, + expectedOutsideGracePeriod: fleet.DiskEncryptionEnforcing, + }, + } + + testHostID := hosts[0].ID + otherWindowsHostIDs := []uint{hosts[1].ID, hosts[2].ID, hosts[3].ID, hosts[4].ID} + + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + var keyUpdatedAt, hostDisksUpdatedAt time.Time + + t.Run("within grace period", func(t *testing.T) { + expected := make(hostIDsByStatus) + if c.expectedWithinGracePeriod == fleet.DiskEncryptionEnforcing { + expected[fleet.DiskEncryptionEnforcing] = append([]uint{testHostID}, otherWindowsHostIDs...) + } else { + expected[c.expectedWithinGracePeriod] = []uint{testHostID} + expected[fleet.DiskEncryptionEnforcing] = otherWindowsHostIDs + } + + keyUpdatedAt = time.Now().Add(-10 * time.Minute) + setKeyUpdatedAt(t, testHostID, keyUpdatedAt) + + if c.reportedAfterKey { + hostDisksUpdatedAt = keyUpdatedAt.Add(5 * time.Minute) + } else { + hostDisksUpdatedAt = keyUpdatedAt.Add(-5 * time.Minute) + } + updateHostDisks(t, testHostID, c.hostDisksEncrypted, hostDisksUpdatedAt) + + checkExpected(t, nil, expected) + }) + + t.Run("outside grace period", func(t *testing.T) { + expected := make(hostIDsByStatus) + if c.expectedOutsideGracePeriod == fleet.DiskEncryptionEnforcing { + expected[fleet.DiskEncryptionEnforcing] = append([]uint{testHostID}, otherWindowsHostIDs...) + } else { + expected[c.expectedOutsideGracePeriod] = []uint{testHostID} + expected[fleet.DiskEncryptionEnforcing] = otherWindowsHostIDs + } + + keyUpdatedAt = time.Now().Add(-2 * time.Hour) + setKeyUpdatedAt(t, testHostID, keyUpdatedAt) + + if c.reportedAfterKey { + hostDisksUpdatedAt = keyUpdatedAt.Add(5 * time.Minute) + } else { + hostDisksUpdatedAt = keyUpdatedAt.Add(-5 * time.Minute) + } + updateHostDisks(t, testHostID, c.hostDisksEncrypted, hostDisksUpdatedAt) + + checkExpected(t, nil, expected) + }) + }) + } + }) + + // ensure hosts[0] is set to verified for the rest of the tests + require.NoError(t, ds.SetOrUpdateHostDiskEncryptionKey(ctx, hosts[0].ID, "test-key", "", ptr.Bool(true))) + require.NoError(t, ds.SetOrUpdateHostDisksEncryption(ctx, hosts[0].ID, true)) + checkExpected(t, nil, hostIDsByStatus{ + fleet.DiskEncryptionVerified: []uint{hosts[0].ID}, + fleet.DiskEncryptionEnforcing: []uint{hosts[1].ID, hosts[2].ID, hosts[3].ID, hosts[4].ID}, + }) + + t.Run("BitLocker failed status", func(t *testing.T) { + // TODO: Update test to use methods to set windows disk encryption when they are implemented + ExecAdhocSQL(t, ds, func(q sqlx.ExtContext) error { + _, err := q.ExecContext(ctx, + `INSERT INTO host_disk_encryption_keys (host_id, decryptable, client_error) VALUES (?, ?, ?)`, + hosts[1].ID, + false, + "test-error") + return err + }) + + checkExpected(t, nil, hostIDsByStatus{ + fleet.DiskEncryptionVerified: []uint{hosts[0].ID}, + fleet.DiskEncryptionFailed: []uint{hosts[1].ID}, + fleet.DiskEncryptionEnforcing: []uint{hosts[2].ID, hosts[3].ID, hosts[4].ID}, + }) + }) + + t.Run("BitLocker team filtering", func(t *testing.T) { + // Test team filtering + team, err := ds.NewTeam(ctx, &fleet.Team{Name: "team"}) + require.NoError(t, err) + + tm, err := ds.Team(ctx, team.ID) + require.NoError(t, err) + require.NotNil(t, tm) + require.False(t, tm.Config.MDM.EnableDiskEncryption) // disk encryption is not enabled for team + + // Transfer hosts[2] to the team + require.NoError(t, ds.AddHostsToTeam(ctx, &team.ID, []uint{hosts[2].ID})) + + // Check the summary for the team + checkExpected(t, &team.ID, hostIDsByStatus{}) // disk encryption is not enabled for team so hosts[2] is not counted + + // Check the summary for no team + checkExpected(t, nil, hostIDsByStatus{ + fleet.DiskEncryptionVerified: []uint{hosts[0].ID}, + fleet.DiskEncryptionFailed: []uint{hosts[1].ID}, + fleet.DiskEncryptionEnforcing: []uint{hosts[3].ID, hosts[4].ID}, // hosts[2] is no longer included in the no team summary + }) + + // Enable disk encryption for the team + tm.Config.MDM.EnableDiskEncryption = true + tm, err = ds.SaveTeam(ctx, tm) + require.NoError(t, err) + require.NotNil(t, tm) + require.True(t, tm.Config.MDM.EnableDiskEncryption) + + // Check the summary for the team + checkExpected(t, &team.ID, hostIDsByStatus{ + fleet.DiskEncryptionEnforcing: []uint{hosts[2].ID}, // disk encryption is enabled for team so hosts[2] is counted + }) + + // Check the summary for no team (should be unchanged) + checkExpected(t, nil, hostIDsByStatus{ + fleet.DiskEncryptionVerified: []uint{hosts[0].ID}, + fleet.DiskEncryptionFailed: []uint{hosts[1].ID}, + fleet.DiskEncryptionEnforcing: []uint{hosts[3].ID, hosts[4].ID}, + }) + }) + + t.Run("BitLocker Windows server excluded", func(t *testing.T) { + require.NoError(t, ds.SetOrUpdateMDMData(ctx, + hosts[3].ID, + true, // set is_server to true for hosts[3] + true, "https://example.com", false, fleet.WellKnownMDMFleet)) + + // Check Windows servers not counted + checkExpected(t, nil, hostIDsByStatus{ + fleet.DiskEncryptionVerified: []uint{hosts[0].ID}, + fleet.DiskEncryptionFailed: []uint{hosts[1].ID}, + fleet.DiskEncryptionEnforcing: []uint{hosts[4].ID}, // hosts[3] is not counted + }) + }) + + t.Run("OS settings filters include Windows and macOS hosts", func(t *testing.T) { + // Make macOS host fail disk encryption + require.NoError(t, ds.BulkUpsertMDMAppleHostProfiles(ctx, []*fleet.MDMAppleBulkUpsertHostProfilePayload{ + { + HostUUID: hosts[5].UUID, + ProfileIdentifier: mobileconfig.FleetFileVaultPayloadIdentifier, + ProfileName: "Disk encryption", + ProfileID: 1, + CommandUUID: uuid.New().String(), + OperationType: fleet.MDMAppleOperationTypeInstall, + Status: &fleet.MDMAppleDeliveryFailed, + Checksum: []byte("checksum"), + }, + })) + + // Check that BitLocker summary does not include macOS hosts + checkBitLockerSummary(t, nil, fleet.MDMWindowsBitLockerSummary{ + Verified: 1, + Verifying: 0, + Failed: 1, + Enforcing: 1, + RemovingEnforcement: 0, + ActionRequired: 0, + }) + + // Check that filtered lists do include macOS hosts + checkListHostsFilterDiskEncryption(t, nil, fleet.DiskEncryptionFailed, []uint{hosts[1].ID, hosts[5].ID}) + checkListHostsFilterOSSettings(t, nil, fleet.OSSettingsFailed, []uint{hosts[1].ID, hosts[5].ID}) + }) + }) } diff --git a/server/datastore/mysql/migrations/tables/20230918221115_MoveDiskEncryptionSetting.go b/server/datastore/mysql/migrations/tables/20230918221115_MoveDiskEncryptionSetting.go new file mode 100644 index 0000000000..793432c209 --- /dev/null +++ b/server/datastore/mysql/migrations/tables/20230918221115_MoveDiskEncryptionSetting.go @@ -0,0 +1,32 @@ +package tables + +import ( + "database/sql" + "fmt" +) + +func init() { + MigrationClient.AddMigration(Up_20230918221115, Down_20230918221115) +} + +func Up_20230918221115(tx *sql.Tx) error { + stmt := ` +UPDATE teams +SET + config = JSON_SET(config, '$.mdm.enable_disk_encryption', + JSON_EXTRACT(config, '$.mdm.macos_settings.enable_disk_encryption')), + config = JSON_REMOVE(config, '$.mdm.macos_settings.enable_disk_encryption') +WHERE + JSON_EXTRACT(config, '$.mdm.macos_settings.enable_disk_encryption') IS NOT NULL; + ` + + if _, err := tx.Exec(stmt); err != nil { + return fmt.Errorf("move team mdm.macos_settings.enable_disk_encryption setting to mdm.enable_disk_encryption: %w", err) + } + + return nil +} + +func Down_20230918221115(tx *sql.Tx) error { + return nil +} diff --git a/server/datastore/mysql/migrations/tables/20230918221115_MoveDiskEncryptionSetting_test.go b/server/datastore/mysql/migrations/tables/20230918221115_MoveDiskEncryptionSetting_test.go new file mode 100644 index 0000000000..90538968f8 --- /dev/null +++ b/server/datastore/mysql/migrations/tables/20230918221115_MoveDiskEncryptionSetting_test.go @@ -0,0 +1,67 @@ +package tables + +import ( + "encoding/json" + "testing" + + "github.com/jmoiron/sqlx" + "github.com/stretchr/testify/require" +) + +func TestUp_20230918221115(t *testing.T) { + db := applyUpToPrev(t) + + dataStmts := ` + INSERT INTO teams VALUES + (1,'2023-07-21 20:32:42','Team 1','','{\"mdm\": {\"macos_setup\": {\"bootstrap_package\": null, \"macos_setup_assistant\": null, \"enable_end_user_authentication\": false}, \"macos_updates\": {\"deadline\": null, \"minimum_version\": null}, \"macos_settings\": {\"custom_settings\": null, \"enable_disk_encryption\": false}}, \"features\": {\"enable_host_users\": true, \"enable_software_inventory\": true}, \"integrations\": {\"jira\": null, \"zendesk\": null}, \"agent_options\": {\"config\": {\"options\": {\"pack_delimiter\": \"/\", \"logger_tls_period\": 10, \"distributed_plugin\": \"tls\", \"disable_distributed\": false, \"logger_tls_endpoint\": \"/api/osquery/log\", \"distributed_interval\": 10, \"distributed_tls_max_attempts\": 3}, \"decorators\": {\"load\": [\"SELECT uuid AS host_uuid FROM system_info;\", \"SELECT hostname AS hostname FROM system_info;\"]}}, \"overrides\": {}}, \"webhook_settings\": {\"failing_policies_webhook\": {\"policy_ids\": null, \"destination_url\": \"\", \"host_batch_size\": 0, \"enable_failing_policies_webhook\": false}}}'), + (2,'2023-07-21 20:32:47','Team 2','','{\"mdm\": {\"macos_setup\": {\"bootstrap_package\": null, \"macos_setup_assistant\": null, \"enable_end_user_authentication\": false}, \"macos_updates\": {\"deadline\": null, \"minimum_version\": null}, \"macos_settings\": {\"custom_settings\": null, \"enable_disk_encryption\": true}}, \"features\": {\"enable_host_users\": true, \"enable_software_inventory\": true}, \"integrations\": {\"jira\": null, \"zendesk\": null}, \"agent_options\": {\"config\": {\"options\": {\"pack_delimiter\": \"/\", \"logger_tls_period\": 10, \"distributed_plugin\": \"tls\", \"disable_distributed\": false, \"logger_tls_endpoint\": \"/api/osquery/log\", \"distributed_interval\": 10, \"distributed_tls_max_attempts\": 3}, \"decorators\": {\"load\": [\"SELECT uuid AS host_uuid FROM system_info;\", \"SELECT hostname AS hostname FROM system_info;\"]}}, \"overrides\": {}}, \"webhook_settings\": {\"failing_policies_webhook\": {\"policy_ids\": null, \"destination_url\": \"\", \"host_batch_size\": 0, \"enable_failing_policies_webhook\": false}}}'); + ` + _, err := db.Exec(dataStmts) + require.NoError(t, err) + + var rawConfigs []json.RawMessage + err = sqlx.Select(db, &rawConfigs, "SELECT config FROM teams ORDER BY id") + require.NoError(t, err) + + var wantConfigs []map[string]any + for _, c := range rawConfigs { + var wantConfig map[string]any + err = json.Unmarshal(c, &wantConfig) + require.NoError(t, err) + wantConfigs = append(wantConfigs, wantConfig) + } + + applyNext(t, db) + + rawConfigs = []json.RawMessage{} + err = sqlx.Select(db, &rawConfigs, "SELECT JSON_EXTRACT(config, '$') FROM teams ORDER BY id") + require.NoError(t, err) + + var gotConfigs []map[string]any + for _, c := range rawConfigs { + var gotConfig map[string]any + err = json.Unmarshal(c, &gotConfig) + require.NoError(t, err) + gotConfigs = append(gotConfigs, gotConfig) + } + + // simulate the ideal behavior with the oldConfigs + for i, config := range wantConfigs { + if mdmMap, ok := config["mdm"].(map[string]interface{}); ok { + // Delete 'mdm.macos_settings.enable_disk_encryption' + if macosSettings, ok := mdmMap["macos_settings"].(map[string]interface{}); ok { + delete(macosSettings, "enable_disk_encryption") + } + + // Set 'mdm.enable_disk_encryption' + if i == 0 { + mdmMap["enable_disk_encryption"] = false + } else { + mdmMap["enable_disk_encryption"] = true + } + } + wantConfigs[i] = config + } + + require.ElementsMatch(t, wantConfigs, gotConfigs) +} diff --git a/server/datastore/mysql/schema.sql b/server/datastore/mysql/schema.sql index 93c1e2703d..932d1d9a28 100644 --- a/server/datastore/mysql/schema.sql +++ b/server/datastore/mysql/schema.sql @@ -40,7 +40,7 @@ CREATE TABLE `app_config_json` ( UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -INSERT INTO `app_config_json` VALUES (1,'{\"mdm\": {\"macos_setup\": {\"bootstrap_package\": null, \"macos_setup_assistant\": null, \"enable_end_user_authentication\": false}, \"macos_updates\": {\"deadline\": null, \"minimum_version\": null}, \"macos_settings\": {\"custom_settings\": null, \"enable_disk_encryption\": false}, \"macos_migration\": {\"mode\": \"\", \"enable\": false, \"webhook_url\": \"\"}, \"apple_bm_default_team\": \"\", \"apple_bm_terms_expired\": false, \"enabled_and_configured\": false, \"end_user_authentication\": {\"idp_name\": \"\", \"metadata\": \"\", \"entity_id\": \"\", \"issuer_uri\": \"\", \"metadata_url\": \"\"}, \"windows_enabled_and_configured\": false, \"apple_bm_enabled_and_configured\": false}, \"features\": {\"enable_host_users\": true, \"enable_software_inventory\": false}, \"org_info\": {\"org_name\": \"\", \"contact_url\": \"\", \"org_logo_url\": \"\", \"org_logo_url_light_background\": \"\"}, \"integrations\": {\"jira\": null, \"zendesk\": null}, \"sso_settings\": {\"idp_name\": \"\", \"metadata\": \"\", \"entity_id\": \"\", \"enable_sso\": false, \"issuer_uri\": \"\", \"metadata_url\": \"\", \"idp_image_url\": \"\", \"enable_jit_role_sync\": false, \"enable_sso_idp_login\": false, \"enable_jit_provisioning\": false}, \"agent_options\": {\"config\": {\"options\": {\"logger_plugin\": \"tls\", \"pack_delimiter\": \"/\", \"logger_tls_period\": 10, \"distributed_plugin\": \"tls\", \"disable_distributed\": false, \"logger_tls_endpoint\": \"/api/osquery/log\", \"distributed_interval\": 10, \"distributed_tls_max_attempts\": 3}, \"decorators\": {\"load\": [\"SELECT uuid AS host_uuid FROM system_info;\", \"SELECT hostname AS hostname FROM system_info;\"]}}, \"overrides\": {}}, \"fleet_desktop\": {\"transparency_url\": \"\"}, \"smtp_settings\": {\"port\": 587, \"domain\": \"\", \"server\": \"\", \"password\": \"\", \"user_name\": \"\", \"configured\": false, \"enable_smtp\": false, \"enable_ssl_tls\": true, \"sender_address\": \"\", \"enable_start_tls\": true, \"verify_ssl_certs\": true, \"authentication_type\": \"0\", \"authentication_method\": \"0\"}, \"server_settings\": {\"server_url\": \"\", \"enable_analytics\": false, \"deferred_save_host\": false, \"live_query_disabled\": false}, \"webhook_settings\": {\"interval\": \"0s\", \"host_status_webhook\": {\"days_count\": 0, \"destination_url\": \"\", \"host_percentage\": 0, \"enable_host_status_webhook\": false}, \"vulnerabilities_webhook\": {\"destination_url\": \"\", \"host_batch_size\": 0, \"enable_vulnerabilities_webhook\": false}, \"failing_policies_webhook\": {\"policy_ids\": null, \"destination_url\": \"\", \"host_batch_size\": 0, \"enable_failing_policies_webhook\": false}}, \"host_expiry_settings\": {\"host_expiry_window\": 0, \"host_expiry_enabled\": false}, \"vulnerability_settings\": {\"databases_path\": \"\"}}','2020-01-01 01:01:01','2020-01-01 01:01:01'); +INSERT INTO `app_config_json` VALUES (1,'{\"mdm\": {\"macos_setup\": {\"bootstrap_package\": null, \"macos_setup_assistant\": null, \"enable_end_user_authentication\": false}, \"macos_updates\": {\"deadline\": null, \"minimum_version\": null}, \"macos_settings\": {\"custom_settings\": null}, \"macos_migration\": {\"mode\": \"\", \"enable\": false, \"webhook_url\": \"\"}, \"apple_bm_default_team\": \"\", \"apple_bm_terms_expired\": false, \"enable_disk_encryption\": false, \"enabled_and_configured\": false, \"end_user_authentication\": {\"idp_name\": \"\", \"metadata\": \"\", \"entity_id\": \"\", \"issuer_uri\": \"\", \"metadata_url\": \"\"}, \"windows_enabled_and_configured\": false, \"apple_bm_enabled_and_configured\": false}, \"features\": {\"enable_host_users\": true, \"enable_software_inventory\": false}, \"org_info\": {\"org_name\": \"\", \"contact_url\": \"\", \"org_logo_url\": \"\", \"org_logo_url_light_background\": \"\"}, \"integrations\": {\"jira\": null, \"zendesk\": null}, \"sso_settings\": {\"idp_name\": \"\", \"metadata\": \"\", \"entity_id\": \"\", \"enable_sso\": false, \"issuer_uri\": \"\", \"metadata_url\": \"\", \"idp_image_url\": \"\", \"enable_jit_role_sync\": false, \"enable_sso_idp_login\": false, \"enable_jit_provisioning\": false}, \"agent_options\": {\"config\": {\"options\": {\"logger_plugin\": \"tls\", \"pack_delimiter\": \"/\", \"logger_tls_period\": 10, \"distributed_plugin\": \"tls\", \"disable_distributed\": false, \"logger_tls_endpoint\": \"/api/osquery/log\", \"distributed_interval\": 10, \"distributed_tls_max_attempts\": 3}, \"decorators\": {\"load\": [\"SELECT uuid AS host_uuid FROM system_info;\", \"SELECT hostname AS hostname FROM system_info;\"]}}, \"overrides\": {}}, \"fleet_desktop\": {\"transparency_url\": \"\"}, \"smtp_settings\": {\"port\": 587, \"domain\": \"\", \"server\": \"\", \"password\": \"\", \"user_name\": \"\", \"configured\": false, \"enable_smtp\": false, \"enable_ssl_tls\": true, \"sender_address\": \"\", \"enable_start_tls\": true, \"verify_ssl_certs\": true, \"authentication_type\": \"0\", \"authentication_method\": \"0\"}, \"server_settings\": {\"server_url\": \"\", \"enable_analytics\": false, \"deferred_save_host\": false, \"live_query_disabled\": false}, \"webhook_settings\": {\"interval\": \"0s\", \"host_status_webhook\": {\"days_count\": 0, \"destination_url\": \"\", \"host_percentage\": 0, \"enable_host_status_webhook\": false}, \"vulnerabilities_webhook\": {\"destination_url\": \"\", \"host_batch_size\": 0, \"enable_vulnerabilities_webhook\": false}, \"failing_policies_webhook\": {\"policy_ids\": null, \"destination_url\": \"\", \"host_batch_size\": 0, \"enable_failing_policies_webhook\": false}}, \"host_expiry_settings\": {\"host_expiry_window\": 0, \"host_expiry_enabled\": false}, \"vulnerability_settings\": {\"databases_path\": \"\"}}','2020-01-01 01:01:01','2020-01-01 01:01:01'); /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `carve_blocks` ( @@ -685,9 +685,9 @@ CREATE TABLE `migration_status_tables` ( `tstamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=209 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=210 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -INSERT INTO `migration_status_tables` VALUES (1,0,1,'2020-01-01 01:01:01'),(2,20161118193812,1,'2020-01-01 01:01:01'),(3,20161118211713,1,'2020-01-01 01:01:01'),(4,20161118212436,1,'2020-01-01 01:01:01'),(5,20161118212515,1,'2020-01-01 01:01:01'),(6,20161118212528,1,'2020-01-01 01:01:01'),(7,20161118212538,1,'2020-01-01 01:01:01'),(8,20161118212549,1,'2020-01-01 01:01:01'),(9,20161118212557,1,'2020-01-01 01:01:01'),(10,20161118212604,1,'2020-01-01 01:01:01'),(11,20161118212613,1,'2020-01-01 01:01:01'),(12,20161118212621,1,'2020-01-01 01:01:01'),(13,20161118212630,1,'2020-01-01 01:01:01'),(14,20161118212641,1,'2020-01-01 01:01:01'),(15,20161118212649,1,'2020-01-01 01:01:01'),(16,20161118212656,1,'2020-01-01 01:01:01'),(17,20161118212758,1,'2020-01-01 01:01:01'),(18,20161128234849,1,'2020-01-01 01:01:01'),(19,20161230162221,1,'2020-01-01 01:01:01'),(20,20170104113816,1,'2020-01-01 01:01:01'),(21,20170105151732,1,'2020-01-01 01:01:01'),(22,20170108191242,1,'2020-01-01 01:01:01'),(23,20170109094020,1,'2020-01-01 01:01:01'),(24,20170109130438,1,'2020-01-01 01:01:01'),(25,20170110202752,1,'2020-01-01 01:01:01'),(26,20170111133013,1,'2020-01-01 01:01:01'),(27,20170117025759,1,'2020-01-01 01:01:01'),(28,20170118191001,1,'2020-01-01 01:01:01'),(29,20170119234632,1,'2020-01-01 01:01:01'),(30,20170124230432,1,'2020-01-01 01:01:01'),(31,20170127014618,1,'2020-01-01 01:01:01'),(32,20170131232841,1,'2020-01-01 01:01:01'),(33,20170223094154,1,'2020-01-01 01:01:01'),(34,20170306075207,1,'2020-01-01 01:01:01'),(35,20170309100733,1,'2020-01-01 01:01:01'),(36,20170331111922,1,'2020-01-01 01:01:01'),(37,20170502143928,1,'2020-01-01 01:01:01'),(38,20170504130602,1,'2020-01-01 01:01:01'),(39,20170509132100,1,'2020-01-01 01:01:01'),(40,20170519105647,1,'2020-01-01 01:01:01'),(41,20170519105648,1,'2020-01-01 01:01:01'),(42,20170831234300,1,'2020-01-01 01:01:01'),(43,20170831234301,1,'2020-01-01 01:01:01'),(44,20170831234303,1,'2020-01-01 01:01:01'),(45,20171116163618,1,'2020-01-01 01:01:01'),(46,20171219164727,1,'2020-01-01 01:01:01'),(47,20180620164811,1,'2020-01-01 01:01:01'),(48,20180620175054,1,'2020-01-01 01:01:01'),(49,20180620175055,1,'2020-01-01 01:01:01'),(50,20191010101639,1,'2020-01-01 01:01:01'),(51,20191010155147,1,'2020-01-01 01:01:01'),(52,20191220130734,1,'2020-01-01 01:01:01'),(53,20200311140000,1,'2020-01-01 01:01:01'),(54,20200405120000,1,'2020-01-01 01:01:01'),(55,20200407120000,1,'2020-01-01 01:01:01'),(56,20200420120000,1,'2020-01-01 01:01:01'),(57,20200504120000,1,'2020-01-01 01:01:01'),(58,20200512120000,1,'2020-01-01 01:01:01'),(59,20200707120000,1,'2020-01-01 01:01:01'),(60,20201011162341,1,'2020-01-01 01:01:01'),(61,20201021104586,1,'2020-01-01 01:01:01'),(62,20201102112520,1,'2020-01-01 01:01:01'),(63,20201208121729,1,'2020-01-01 01:01:01'),(64,20201215091637,1,'2020-01-01 01:01:01'),(65,20210119174155,1,'2020-01-01 01:01:01'),(66,20210326182902,1,'2020-01-01 01:01:01'),(67,20210421112652,1,'2020-01-01 01:01:01'),(68,20210506095025,1,'2020-01-01 01:01:01'),(69,20210513115729,1,'2020-01-01 01:01:01'),(70,20210526113559,1,'2020-01-01 01:01:01'),(71,20210601000001,1,'2020-01-01 01:01:01'),(72,20210601000002,1,'2020-01-01 01:01:01'),(73,20210601000003,1,'2020-01-01 01:01:01'),(74,20210601000004,1,'2020-01-01 01:01:01'),(75,20210601000005,1,'2020-01-01 01:01:01'),(76,20210601000006,1,'2020-01-01 01:01:01'),(77,20210601000007,1,'2020-01-01 01:01:01'),(78,20210601000008,1,'2020-01-01 01:01:01'),(79,20210606151329,1,'2020-01-01 01:01:01'),(80,20210616163757,1,'2020-01-01 01:01:01'),(81,20210617174723,1,'2020-01-01 01:01:01'),(82,20210622160235,1,'2020-01-01 01:01:01'),(83,20210623100031,1,'2020-01-01 01:01:01'),(84,20210623133615,1,'2020-01-01 01:01:01'),(85,20210708143152,1,'2020-01-01 01:01:01'),(86,20210709124443,1,'2020-01-01 01:01:01'),(87,20210712155608,1,'2020-01-01 01:01:01'),(88,20210714102108,1,'2020-01-01 01:01:01'),(89,20210719153709,1,'2020-01-01 01:01:01'),(90,20210721171531,1,'2020-01-01 01:01:01'),(91,20210723135713,1,'2020-01-01 01:01:01'),(92,20210802135933,1,'2020-01-01 01:01:01'),(93,20210806112844,1,'2020-01-01 01:01:01'),(94,20210810095603,1,'2020-01-01 01:01:01'),(95,20210811150223,1,'2020-01-01 01:01:01'),(96,20210818151827,1,'2020-01-01 01:01:01'),(97,20210818151828,1,'2020-01-01 01:01:01'),(98,20210818182258,1,'2020-01-01 01:01:01'),(99,20210819131107,1,'2020-01-01 01:01:01'),(100,20210819143446,1,'2020-01-01 01:01:01'),(101,20210903132338,1,'2020-01-01 01:01:01'),(102,20210915144307,1,'2020-01-01 01:01:01'),(103,20210920155130,1,'2020-01-01 01:01:01'),(104,20210927143115,1,'2020-01-01 01:01:01'),(105,20210927143116,1,'2020-01-01 01:01:01'),(106,20211013133706,1,'2020-01-01 01:01:01'),(107,20211013133707,1,'2020-01-01 01:01:01'),(108,20211102135149,1,'2020-01-01 01:01:01'),(109,20211109121546,1,'2020-01-01 01:01:01'),(110,20211110163320,1,'2020-01-01 01:01:01'),(111,20211116184029,1,'2020-01-01 01:01:01'),(112,20211116184030,1,'2020-01-01 01:01:01'),(113,20211202092042,1,'2020-01-01 01:01:01'),(114,20211202181033,1,'2020-01-01 01:01:01'),(115,20211207161856,1,'2020-01-01 01:01:01'),(116,20211216131203,1,'2020-01-01 01:01:01'),(117,20211221110132,1,'2020-01-01 01:01:01'),(118,20220107155700,1,'2020-01-01 01:01:01'),(119,20220125105650,1,'2020-01-01 01:01:01'),(120,20220201084510,1,'2020-01-01 01:01:01'),(121,20220208144830,1,'2020-01-01 01:01:01'),(122,20220208144831,1,'2020-01-01 01:01:01'),(123,20220215152203,1,'2020-01-01 01:01:01'),(124,20220223113157,1,'2020-01-01 01:01:01'),(125,20220307104655,1,'2020-01-01 01:01:01'),(126,20220309133956,1,'2020-01-01 01:01:01'),(127,20220316155700,1,'2020-01-01 01:01:01'),(128,20220323152301,1,'2020-01-01 01:01:01'),(129,20220330100659,1,'2020-01-01 01:01:01'),(130,20220404091216,1,'2020-01-01 01:01:01'),(131,20220419140750,1,'2020-01-01 01:01:01'),(132,20220428140039,1,'2020-01-01 01:01:01'),(133,20220503134048,1,'2020-01-01 01:01:01'),(134,20220524102918,1,'2020-01-01 01:01:01'),(135,20220526123327,1,'2020-01-01 01:01:01'),(136,20220526123328,1,'2020-01-01 01:01:01'),(137,20220526123329,1,'2020-01-01 01:01:01'),(138,20220608113128,1,'2020-01-01 01:01:01'),(139,20220627104817,1,'2020-01-01 01:01:01'),(140,20220704101843,1,'2020-01-01 01:01:01'),(141,20220708095046,1,'2020-01-01 01:01:01'),(142,20220713091130,1,'2020-01-01 01:01:01'),(143,20220802135510,1,'2020-01-01 01:01:01'),(144,20220818101352,1,'2020-01-01 01:01:01'),(145,20220822161445,1,'2020-01-01 01:01:01'),(146,20220831100036,1,'2020-01-01 01:01:01'),(147,20220831100151,1,'2020-01-01 01:01:01'),(148,20220908181826,1,'2020-01-01 01:01:01'),(149,20220914154915,1,'2020-01-01 01:01:01'),(150,20220915165115,1,'2020-01-01 01:01:01'),(151,20220915165116,1,'2020-01-01 01:01:01'),(152,20220928100158,1,'2020-01-01 01:01:01'),(153,20221014084130,1,'2020-01-01 01:01:01'),(154,20221027085019,1,'2020-01-01 01:01:01'),(155,20221101103952,1,'2020-01-01 01:01:01'),(156,20221104144401,1,'2020-01-01 01:01:01'),(157,20221109100749,1,'2020-01-01 01:01:01'),(158,20221115104546,1,'2020-01-01 01:01:01'),(159,20221130114928,1,'2020-01-01 01:01:01'),(160,20221205112142,1,'2020-01-01 01:01:01'),(161,20221216115820,1,'2020-01-01 01:01:01'),(162,20221220195934,1,'2020-01-01 01:01:01'),(163,20221220195935,1,'2020-01-01 01:01:01'),(164,20221223174807,1,'2020-01-01 01:01:01'),(165,20221227163855,1,'2020-01-01 01:01:01'),(166,20221227163856,1,'2020-01-01 01:01:01'),(167,20230202224725,1,'2020-01-01 01:01:01'),(168,20230206163608,1,'2020-01-01 01:01:01'),(169,20230214131519,1,'2020-01-01 01:01:01'),(170,20230303135738,1,'2020-01-01 01:01:01'),(171,20230313135301,1,'2020-01-01 01:01:01'),(172,20230313141819,1,'2020-01-01 01:01:01'),(173,20230315104937,1,'2020-01-01 01:01:01'),(174,20230317173844,1,'2020-01-01 01:01:01'),(175,20230320133602,1,'2020-01-01 01:01:01'),(176,20230330100011,1,'2020-01-01 01:01:01'),(177,20230330134823,1,'2020-01-01 01:01:01'),(178,20230405232025,1,'2020-01-01 01:01:01'),(179,20230408084104,1,'2020-01-01 01:01:01'),(180,20230411102858,1,'2020-01-01 01:01:01'),(181,20230421155932,1,'2020-01-01 01:01:01'),(182,20230425082126,1,'2020-01-01 01:01:01'),(183,20230425105727,1,'2020-01-01 01:01:01'),(184,20230501154913,1,'2020-01-01 01:01:01'),(185,20230503101418,1,'2020-01-01 01:01:01'),(186,20230515144206,1,'2020-01-01 01:01:01'),(187,20230517140952,1,'2020-01-01 01:01:01'),(188,20230517152807,1,'2020-01-01 01:01:01'),(189,20230518114155,1,'2020-01-01 01:01:01'),(190,20230520153236,1,'2020-01-01 01:01:01'),(191,20230525151159,1,'2020-01-01 01:01:01'),(192,20230530122103,1,'2020-01-01 01:01:01'),(193,20230602111827,1,'2020-01-01 01:01:01'),(194,20230608103123,1,'2020-01-01 01:01:01'),(195,20230629140529,1,'2020-01-01 01:01:01'),(196,20230629140530,1,'2020-01-01 01:01:01'),(197,20230711144622,1,'2020-01-01 01:01:01'),(198,20230721135421,1,'2020-01-01 01:01:01'),(199,20230721161508,1,'2020-01-01 01:01:01'),(200,20230726115701,1,'2020-01-01 01:01:01'),(201,20230807100822,1,'2020-01-01 01:01:01'),(202,20230814150442,1,'2020-01-01 01:01:01'),(203,20230823122728,1,'2020-01-01 01:01:01'),(204,20230906152143,1,'2020-01-01 01:01:01'),(205,20230911163618,1,'2020-01-01 01:01:01'),(206,20230912101759,1,'2020-01-01 01:01:01'),(207,20230915101341,1,'2020-01-01 01:01:01'),(208,20230918132351,1,'2020-01-01 01:01:01'); +INSERT INTO `migration_status_tables` VALUES (1,0,1,'2020-01-01 01:01:01'),(2,20161118193812,1,'2020-01-01 01:01:01'),(3,20161118211713,1,'2020-01-01 01:01:01'),(4,20161118212436,1,'2020-01-01 01:01:01'),(5,20161118212515,1,'2020-01-01 01:01:01'),(6,20161118212528,1,'2020-01-01 01:01:01'),(7,20161118212538,1,'2020-01-01 01:01:01'),(8,20161118212549,1,'2020-01-01 01:01:01'),(9,20161118212557,1,'2020-01-01 01:01:01'),(10,20161118212604,1,'2020-01-01 01:01:01'),(11,20161118212613,1,'2020-01-01 01:01:01'),(12,20161118212621,1,'2020-01-01 01:01:01'),(13,20161118212630,1,'2020-01-01 01:01:01'),(14,20161118212641,1,'2020-01-01 01:01:01'),(15,20161118212649,1,'2020-01-01 01:01:01'),(16,20161118212656,1,'2020-01-01 01:01:01'),(17,20161118212758,1,'2020-01-01 01:01:01'),(18,20161128234849,1,'2020-01-01 01:01:01'),(19,20161230162221,1,'2020-01-01 01:01:01'),(20,20170104113816,1,'2020-01-01 01:01:01'),(21,20170105151732,1,'2020-01-01 01:01:01'),(22,20170108191242,1,'2020-01-01 01:01:01'),(23,20170109094020,1,'2020-01-01 01:01:01'),(24,20170109130438,1,'2020-01-01 01:01:01'),(25,20170110202752,1,'2020-01-01 01:01:01'),(26,20170111133013,1,'2020-01-01 01:01:01'),(27,20170117025759,1,'2020-01-01 01:01:01'),(28,20170118191001,1,'2020-01-01 01:01:01'),(29,20170119234632,1,'2020-01-01 01:01:01'),(30,20170124230432,1,'2020-01-01 01:01:01'),(31,20170127014618,1,'2020-01-01 01:01:01'),(32,20170131232841,1,'2020-01-01 01:01:01'),(33,20170223094154,1,'2020-01-01 01:01:01'),(34,20170306075207,1,'2020-01-01 01:01:01'),(35,20170309100733,1,'2020-01-01 01:01:01'),(36,20170331111922,1,'2020-01-01 01:01:01'),(37,20170502143928,1,'2020-01-01 01:01:01'),(38,20170504130602,1,'2020-01-01 01:01:01'),(39,20170509132100,1,'2020-01-01 01:01:01'),(40,20170519105647,1,'2020-01-01 01:01:01'),(41,20170519105648,1,'2020-01-01 01:01:01'),(42,20170831234300,1,'2020-01-01 01:01:01'),(43,20170831234301,1,'2020-01-01 01:01:01'),(44,20170831234303,1,'2020-01-01 01:01:01'),(45,20171116163618,1,'2020-01-01 01:01:01'),(46,20171219164727,1,'2020-01-01 01:01:01'),(47,20180620164811,1,'2020-01-01 01:01:01'),(48,20180620175054,1,'2020-01-01 01:01:01'),(49,20180620175055,1,'2020-01-01 01:01:01'),(50,20191010101639,1,'2020-01-01 01:01:01'),(51,20191010155147,1,'2020-01-01 01:01:01'),(52,20191220130734,1,'2020-01-01 01:01:01'),(53,20200311140000,1,'2020-01-01 01:01:01'),(54,20200405120000,1,'2020-01-01 01:01:01'),(55,20200407120000,1,'2020-01-01 01:01:01'),(56,20200420120000,1,'2020-01-01 01:01:01'),(57,20200504120000,1,'2020-01-01 01:01:01'),(58,20200512120000,1,'2020-01-01 01:01:01'),(59,20200707120000,1,'2020-01-01 01:01:01'),(60,20201011162341,1,'2020-01-01 01:01:01'),(61,20201021104586,1,'2020-01-01 01:01:01'),(62,20201102112520,1,'2020-01-01 01:01:01'),(63,20201208121729,1,'2020-01-01 01:01:01'),(64,20201215091637,1,'2020-01-01 01:01:01'),(65,20210119174155,1,'2020-01-01 01:01:01'),(66,20210326182902,1,'2020-01-01 01:01:01'),(67,20210421112652,1,'2020-01-01 01:01:01'),(68,20210506095025,1,'2020-01-01 01:01:01'),(69,20210513115729,1,'2020-01-01 01:01:01'),(70,20210526113559,1,'2020-01-01 01:01:01'),(71,20210601000001,1,'2020-01-01 01:01:01'),(72,20210601000002,1,'2020-01-01 01:01:01'),(73,20210601000003,1,'2020-01-01 01:01:01'),(74,20210601000004,1,'2020-01-01 01:01:01'),(75,20210601000005,1,'2020-01-01 01:01:01'),(76,20210601000006,1,'2020-01-01 01:01:01'),(77,20210601000007,1,'2020-01-01 01:01:01'),(78,20210601000008,1,'2020-01-01 01:01:01'),(79,20210606151329,1,'2020-01-01 01:01:01'),(80,20210616163757,1,'2020-01-01 01:01:01'),(81,20210617174723,1,'2020-01-01 01:01:01'),(82,20210622160235,1,'2020-01-01 01:01:01'),(83,20210623100031,1,'2020-01-01 01:01:01'),(84,20210623133615,1,'2020-01-01 01:01:01'),(85,20210708143152,1,'2020-01-01 01:01:01'),(86,20210709124443,1,'2020-01-01 01:01:01'),(87,20210712155608,1,'2020-01-01 01:01:01'),(88,20210714102108,1,'2020-01-01 01:01:01'),(89,20210719153709,1,'2020-01-01 01:01:01'),(90,20210721171531,1,'2020-01-01 01:01:01'),(91,20210723135713,1,'2020-01-01 01:01:01'),(92,20210802135933,1,'2020-01-01 01:01:01'),(93,20210806112844,1,'2020-01-01 01:01:01'),(94,20210810095603,1,'2020-01-01 01:01:01'),(95,20210811150223,1,'2020-01-01 01:01:01'),(96,20210818151827,1,'2020-01-01 01:01:01'),(97,20210818151828,1,'2020-01-01 01:01:01'),(98,20210818182258,1,'2020-01-01 01:01:01'),(99,20210819131107,1,'2020-01-01 01:01:01'),(100,20210819143446,1,'2020-01-01 01:01:01'),(101,20210903132338,1,'2020-01-01 01:01:01'),(102,20210915144307,1,'2020-01-01 01:01:01'),(103,20210920155130,1,'2020-01-01 01:01:01'),(104,20210927143115,1,'2020-01-01 01:01:01'),(105,20210927143116,1,'2020-01-01 01:01:01'),(106,20211013133706,1,'2020-01-01 01:01:01'),(107,20211013133707,1,'2020-01-01 01:01:01'),(108,20211102135149,1,'2020-01-01 01:01:01'),(109,20211109121546,1,'2020-01-01 01:01:01'),(110,20211110163320,1,'2020-01-01 01:01:01'),(111,20211116184029,1,'2020-01-01 01:01:01'),(112,20211116184030,1,'2020-01-01 01:01:01'),(113,20211202092042,1,'2020-01-01 01:01:01'),(114,20211202181033,1,'2020-01-01 01:01:01'),(115,20211207161856,1,'2020-01-01 01:01:01'),(116,20211216131203,1,'2020-01-01 01:01:01'),(117,20211221110132,1,'2020-01-01 01:01:01'),(118,20220107155700,1,'2020-01-01 01:01:01'),(119,20220125105650,1,'2020-01-01 01:01:01'),(120,20220201084510,1,'2020-01-01 01:01:01'),(121,20220208144830,1,'2020-01-01 01:01:01'),(122,20220208144831,1,'2020-01-01 01:01:01'),(123,20220215152203,1,'2020-01-01 01:01:01'),(124,20220223113157,1,'2020-01-01 01:01:01'),(125,20220307104655,1,'2020-01-01 01:01:01'),(126,20220309133956,1,'2020-01-01 01:01:01'),(127,20220316155700,1,'2020-01-01 01:01:01'),(128,20220323152301,1,'2020-01-01 01:01:01'),(129,20220330100659,1,'2020-01-01 01:01:01'),(130,20220404091216,1,'2020-01-01 01:01:01'),(131,20220419140750,1,'2020-01-01 01:01:01'),(132,20220428140039,1,'2020-01-01 01:01:01'),(133,20220503134048,1,'2020-01-01 01:01:01'),(134,20220524102918,1,'2020-01-01 01:01:01'),(135,20220526123327,1,'2020-01-01 01:01:01'),(136,20220526123328,1,'2020-01-01 01:01:01'),(137,20220526123329,1,'2020-01-01 01:01:01'),(138,20220608113128,1,'2020-01-01 01:01:01'),(139,20220627104817,1,'2020-01-01 01:01:01'),(140,20220704101843,1,'2020-01-01 01:01:01'),(141,20220708095046,1,'2020-01-01 01:01:01'),(142,20220713091130,1,'2020-01-01 01:01:01'),(143,20220802135510,1,'2020-01-01 01:01:01'),(144,20220818101352,1,'2020-01-01 01:01:01'),(145,20220822161445,1,'2020-01-01 01:01:01'),(146,20220831100036,1,'2020-01-01 01:01:01'),(147,20220831100151,1,'2020-01-01 01:01:01'),(148,20220908181826,1,'2020-01-01 01:01:01'),(149,20220914154915,1,'2020-01-01 01:01:01'),(150,20220915165115,1,'2020-01-01 01:01:01'),(151,20220915165116,1,'2020-01-01 01:01:01'),(152,20220928100158,1,'2020-01-01 01:01:01'),(153,20221014084130,1,'2020-01-01 01:01:01'),(154,20221027085019,1,'2020-01-01 01:01:01'),(155,20221101103952,1,'2020-01-01 01:01:01'),(156,20221104144401,1,'2020-01-01 01:01:01'),(157,20221109100749,1,'2020-01-01 01:01:01'),(158,20221115104546,1,'2020-01-01 01:01:01'),(159,20221130114928,1,'2020-01-01 01:01:01'),(160,20221205112142,1,'2020-01-01 01:01:01'),(161,20221216115820,1,'2020-01-01 01:01:01'),(162,20221220195934,1,'2020-01-01 01:01:01'),(163,20221220195935,1,'2020-01-01 01:01:01'),(164,20221223174807,1,'2020-01-01 01:01:01'),(165,20221227163855,1,'2020-01-01 01:01:01'),(166,20221227163856,1,'2020-01-01 01:01:01'),(167,20230202224725,1,'2020-01-01 01:01:01'),(168,20230206163608,1,'2020-01-01 01:01:01'),(169,20230214131519,1,'2020-01-01 01:01:01'),(170,20230303135738,1,'2020-01-01 01:01:01'),(171,20230313135301,1,'2020-01-01 01:01:01'),(172,20230313141819,1,'2020-01-01 01:01:01'),(173,20230315104937,1,'2020-01-01 01:01:01'),(174,20230317173844,1,'2020-01-01 01:01:01'),(175,20230320133602,1,'2020-01-01 01:01:01'),(176,20230330100011,1,'2020-01-01 01:01:01'),(177,20230330134823,1,'2020-01-01 01:01:01'),(178,20230405232025,1,'2020-01-01 01:01:01'),(179,20230408084104,1,'2020-01-01 01:01:01'),(180,20230411102858,1,'2020-01-01 01:01:01'),(181,20230421155932,1,'2020-01-01 01:01:01'),(182,20230425082126,1,'2020-01-01 01:01:01'),(183,20230425105727,1,'2020-01-01 01:01:01'),(184,20230501154913,1,'2020-01-01 01:01:01'),(185,20230503101418,1,'2020-01-01 01:01:01'),(186,20230515144206,1,'2020-01-01 01:01:01'),(187,20230517140952,1,'2020-01-01 01:01:01'),(188,20230517152807,1,'2020-01-01 01:01:01'),(189,20230518114155,1,'2020-01-01 01:01:01'),(190,20230520153236,1,'2020-01-01 01:01:01'),(191,20230525151159,1,'2020-01-01 01:01:01'),(192,20230530122103,1,'2020-01-01 01:01:01'),(193,20230602111827,1,'2020-01-01 01:01:01'),(194,20230608103123,1,'2020-01-01 01:01:01'),(195,20230629140529,1,'2020-01-01 01:01:01'),(196,20230629140530,1,'2020-01-01 01:01:01'),(197,20230711144622,1,'2020-01-01 01:01:01'),(198,20230721135421,1,'2020-01-01 01:01:01'),(199,20230721161508,1,'2020-01-01 01:01:01'),(200,20230726115701,1,'2020-01-01 01:01:01'),(201,20230807100822,1,'2020-01-01 01:01:01'),(202,20230814150442,1,'2020-01-01 01:01:01'),(203,20230823122728,1,'2020-01-01 01:01:01'),(204,20230906152143,1,'2020-01-01 01:01:01'),(205,20230911163618,1,'2020-01-01 01:01:01'),(206,20230912101759,1,'2020-01-01 01:01:01'),(207,20230915101341,1,'2020-01-01 01:01:01'),(208,20230918132351,1,'2020-01-01 01:01:01'),(209,20230918221115,1,'2020-01-01 01:01:01'); /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mobile_device_management_solutions` ( diff --git a/server/fleet/app.go b/server/fleet/app.go index 6a77190739..17016a7e3e 100644 --- a/server/fleet/app.go +++ b/server/fleet/app.go @@ -13,7 +13,9 @@ import ( "time" "github.com/fleetdm/fleet/v4/pkg/optjson" + "github.com/fleetdm/fleet/v4/pkg/rawjson" "github.com/fleetdm/fleet/v4/server/config" + "github.com/fleetdm/fleet/v4/server/ptr" ) // SMTP settings names returned from API, these map to SMTPAuthType and @@ -157,12 +159,23 @@ type MDM struct { // with the similarly named macOS-specific fields. WindowsEnabledAndConfigured bool `json:"windows_enabled_and_configured"` + EnableDiskEncryption optjson.Bool `json:"enable_disk_encryption"` + ///////////////////////////////////////////////////////////////// // WARNING: If you add to this struct make sure it's taken into // account in the AppConfig Clone implementation! ///////////////////////////////////////////////////////////////// } +// AtLeastOnePlatformEnabledAndConfigured returns true if at least one supported platform +// (macOS or Windows) has MDM enabled and configured. +func (m MDM) AtLeastOnePlatformEnabledAndConfigured() bool { + // explicitly check for the feature flag to account for the edge case of: + // 1. FF enabled, windows is turned on + // 2. FF disabled on server restart + return m.EnabledAndConfigured || (config.IsMDMFeatureFlagEnabled() && m.WindowsEnabledAndConfigured) +} + // versionStringRegex is used to validate that a version string is in the x.y.z // format only (no prerelease or build metadata). var versionStringRegex = regexp.MustCompile(`^\d+(\.\d+)?(\.\d+)?$`) @@ -222,10 +235,8 @@ type MacOSSettings struct { // // NOTE: These are only present here for informational purposes. // (The source of truth for profiles is in MySQL.) - CustomSettings []string `json:"custom_settings"` - // EnableDiskEncryption enables disk encryption on hosts such that the hosts' - // disk encryption keys will be stored in Fleet. - EnableDiskEncryption bool `json:"enable_disk_encryption"` + CustomSettings []string `json:"custom_settings"` + DeprecatedEnableDiskEncryption *bool `json:"enable_disk_encryption,omitempty"` // NOTE: make sure to update the ToMap/FromMap methods when adding/updating fields. } @@ -233,7 +244,7 @@ type MacOSSettings struct { func (s MacOSSettings) ToMap() map[string]interface{} { return map[string]interface{}{ "custom_settings": s.CustomSettings, - "enable_disk_encryption": s.EnableDiskEncryption, + "enable_disk_encryption": s.DeprecatedEnableDiskEncryption, } } @@ -274,11 +285,11 @@ func (s *MacOSSettings) FromMap(m map[string]interface{}) (map[string]bool, erro // error, must be a bool return nil, &json.UnmarshalTypeError{ Value: fmt.Sprintf("%T", v), - Type: reflect.TypeOf(s.EnableDiskEncryption), + Type: reflect.TypeOf(s.DeprecatedEnableDiskEncryption).Elem(), Field: "macos_settings.enable_disk_encryption", } } - s.EnableDiskEncryption = b + s.DeprecatedEnableDiskEncryption = ptr.Bool(b) } return set, nil @@ -344,7 +355,8 @@ type AppConfig struct { SMTPSettings *SMTPSettings `json:"smtp_settings,omitempty"` HostExpirySettings HostExpirySettings `json:"host_expiry_settings"` // Features allows to globally enable or disable features - Features Features `json:"features"` + Features Features `json:"features"` + DeprecatedHostSettings *Features `json:"host_settings,omitempty"` // AgentOptions holds osquery configuration. // // This field is a pointer to avoid returning this information to non-global-admins. @@ -392,12 +404,6 @@ func (c *AppConfig) Obfuscate() { } } -// legacyConfig holds settings that have been replaced, superceded or -// deprecated by other AppConfig settings. -type legacyConfig struct { - HostSettings *Features `json:"host_settings"` -} - // Clone implements cloner. func (c *AppConfig) Clone() (interface{}, error) { return c.Copy(), nil @@ -509,6 +515,31 @@ func (e *EnrichedAppConfig) UnmarshalJSON(data []byte) error { return nil } +// MarshalJSON implements the json.Marshaler interface to make sure we serialize +// both AppConfig and enrichedAppConfigFields properly: +// +// - If this function is not defined, AppConfig.MarshalJSON gets promoted and +// will be called instead. +// - If we try to unmarshal everything in one go, AppConfig.MarshalJSON doesn't get +// called. +func (e *EnrichedAppConfig) MarshalJSON() ([]byte, error) { + // Marshal only the enriched fields + enrichedData, err := json.Marshal(e.enrichedAppConfigFields) + if err != nil { + return nil, err + } + + // Marshal the base AppConfig + appConfigData, err := json.Marshal(e.AppConfig) + if err != nil { + return nil, err + } + + // we need to marshal and combine both groups separately because + // AppConfig has a custom marshaler. + return rawjson.CombineRoots(enrichedData, appConfigData) +} + type Duration struct { time.Duration } @@ -628,16 +659,13 @@ func (c *AppConfig) DidUnmarshalLegacySettings() []string { return c.didUnmarsha func (c *AppConfig) UnmarshalJSON(b []byte) error { // Define a new type, this is to prevent infinite recursion when // unmarshalling the AppConfig struct. - type cfgStructUnmarshal AppConfig + type aliasConfig AppConfig compatConfig := struct { - *legacyConfig - *cfgStructUnmarshal + *aliasConfig }{ - &legacyConfig{}, - (*cfgStructUnmarshal)(c), + (*aliasConfig)(c), } - c.didUnmarshalLegacySettings = nil decoder := json.NewDecoder(bytes.NewReader(b)) if c.strictDecoding { decoder.DisallowUnknownFields() @@ -649,16 +677,56 @@ func (c *AppConfig) UnmarshalJSON(b []byte) error { return errors.New("unexpected extra tokens found in config") } + c.assignDeprecatedFields() + + return nil +} + +func (c AppConfig) MarshalJSON() ([]byte, error) { + // Define a new type, this is to prevent infinite recursion when + // marshalling the AppConfig struct. + c.assignDeprecatedFields() + + // requirements are that if this value is not set, defaults to false. + // The default mashaler of optjson.Bool will convert this to `null` if + // it's not valid. + if !c.MDM.EnableDiskEncryption.Valid { + c.MDM.EnableDiskEncryption = optjson.SetBool(false) + } + + type aliasConfig AppConfig + aa := aliasConfig(c) + return json.Marshal(aa) +} + +func (c *AppConfig) assignDeprecatedFields() { + c.didUnmarshalLegacySettings = nil // Define and assign legacy settings to new fields. // This has the drawback of legacy fields taking precedence over new fields // if both are defined. - if compatConfig.legacyConfig.HostSettings != nil { + // + // TODO: with optjson + the new approach we're using to handle legacy + // fields, legacy fields don't have to take precedence over new fields. + // Is it worth changing this behavior for `host_settings`/`features` at this point? + if c.DeprecatedHostSettings != nil { c.didUnmarshalLegacySettings = append(c.didUnmarshalLegacySettings, "host_settings") - c.Features = *compatConfig.legacyConfig.HostSettings + c.Features = *c.DeprecatedHostSettings } - sort.Strings(c.didUnmarshalLegacySettings) - return nil + // if disk encryption is not set in the root config + // try to read the value from the legacy config + if !c.MDM.EnableDiskEncryption.Valid { + if c.MDM.MacOSSettings.DeprecatedEnableDiskEncryption != nil { + c.didUnmarshalLegacySettings = append(c.didUnmarshalLegacySettings, "mdm.macos_settings.enable_disk_encryption") + c.MDM.EnableDiskEncryption = optjson.SetBool(*c.MDM.MacOSSettings.DeprecatedEnableDiskEncryption) + } + } + + // ensure the legacy configs are always nil + c.DeprecatedHostSettings = nil + c.MDM.MacOSSettings.DeprecatedEnableDiskEncryption = nil + + sort.Strings(c.didUnmarshalLegacySettings) } // OrgInfo contains general info about the organization using Fleet. diff --git a/server/fleet/app_test.go b/server/fleet/app_test.go index 268eb2277a..bc7a4173d3 100644 --- a/server/fleet/app_test.go +++ b/server/fleet/app_test.go @@ -1,6 +1,7 @@ package fleet import ( + "encoding/json" "testing" "github.com/fleetdm/fleet/v4/pkg/optjson" @@ -159,3 +160,154 @@ func TestMacOSMigrationModeIsValid(t *testing.T) { require.False(t, (MacOSMigrationMode("")).IsValid()) require.False(t, (MacOSMigrationMode("foo")).IsValid()) } + +func TestAppConfigDeprecatedFields(t *testing.T) { + cases := []struct { + msg string + in json.RawMessage + wantFeatures Features + wantDiskEncryption bool + }{ + {"both empty", json.RawMessage(`{}`), Features{}, false}, + {"only one feature set", json.RawMessage(`{"host_settings": {"enable_host_users": true}}`), Features{EnableHostUsers: true}, false}, + { + "a feature and disk encryption set", + json.RawMessage(`{"host_settings": {"enable_host_users": true}, "mdm": {"macos_settings": {"enable_disk_encryption": true}}}`), + Features{EnableHostUsers: true}, + true, + }, + { + "features legacy and new setting set", + json.RawMessage(`{"host_settings": {"enable_host_users": true}, "features": {"enable_host_users": false}}`), + Features{EnableHostUsers: true}, + false, + }, + { + "disk encryption legacy and new setting set", + json.RawMessage(`{"mdm": {"enable_disk_encryption": false, "macos_settings": {"enable_disk_encryption": true}}}`), + Features{}, + false, + }, + } + + for _, c := range cases { + t.Run(c.msg, func(t *testing.T) { + ac := AppConfig{} + err := json.Unmarshal(c.in, &ac) + require.NoError(t, err) + require.Nil(t, ac.DeprecatedHostSettings) + require.Nil(t, ac.MDM.MacOSSettings.DeprecatedEnableDiskEncryption) + require.Equal(t, c.wantFeatures, ac.Features) + require.Equal(t, c.wantDiskEncryption, ac.MDM.EnableDiskEncryption.Value) + + // marshalling the fields again doesn't contain deprecated fields + acJSON, err := json.Marshal(ac) + require.NoError(t, err) + var resultMap map[string]interface{} + err = json.Unmarshal(acJSON, &resultMap) + require.NoError(t, err) + + // host_settings is not present + _, exists := resultMap["host_settings"] + require.False(t, exists) + + // mdm.macos_settings.enable_disk_encryption is not present + mdm, ok := resultMap["mdm"].(map[string]interface{}) + require.True(t, ok) + macosSettings, ok := mdm["macos_settings"].(map[string]interface{}) + require.True(t, ok) + _, exists = macosSettings["enable_disk_encryption"] + require.False(t, exists) + + diskEncryption, exists := mdm["enable_disk_encryption"] + require.True(t, exists) + require.EqualValues(t, c.wantDiskEncryption, diskEncryption) + + }) + } + +} + +func TestAtLeastOnePlatformEnabledAndConfigured(t *testing.T) { + tests := []struct { + name string + macOSEnabledAndConfigured bool + windowsEnabledAndConfigured bool + isMDMFeatureFlagEnabled bool + expectedResult bool + }{ + { + name: "None enabled, feature flag disabled", + macOSEnabledAndConfigured: false, + windowsEnabledAndConfigured: false, + isMDMFeatureFlagEnabled: false, + expectedResult: false, + }, + { + name: "MacOS enabled, feature flag disabled", + macOSEnabledAndConfigured: true, + windowsEnabledAndConfigured: false, + isMDMFeatureFlagEnabled: false, + expectedResult: true, + }, + { + name: "Windows enabled, feature flag disabled", + macOSEnabledAndConfigured: false, + windowsEnabledAndConfigured: true, + isMDMFeatureFlagEnabled: false, + expectedResult: false, + }, + { + name: "Both enabled, feature flag disabled", + macOSEnabledAndConfigured: true, + windowsEnabledAndConfigured: true, + isMDMFeatureFlagEnabled: false, + expectedResult: true, + }, + { + name: "None enabled, feature flag enabled", + macOSEnabledAndConfigured: false, + windowsEnabledAndConfigured: false, + isMDMFeatureFlagEnabled: true, + expectedResult: false, + }, + { + name: "MacOS enabled, feature flag enabled", + macOSEnabledAndConfigured: true, + windowsEnabledAndConfigured: false, + isMDMFeatureFlagEnabled: true, + expectedResult: true, + }, + { + name: "Windows enabled, feature flag enabled", + macOSEnabledAndConfigured: false, + windowsEnabledAndConfigured: true, + isMDMFeatureFlagEnabled: true, + expectedResult: true, + }, + { + name: "Both enabled, feature flag enabled", + macOSEnabledAndConfigured: true, + windowsEnabledAndConfigured: true, + isMDMFeatureFlagEnabled: true, + expectedResult: true, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.isMDMFeatureFlagEnabled { + t.Setenv("FLEET_DEV_MDM_ENABLED", "1") + } else { + t.Setenv("FLEET_DEV_MDM_ENABLED", "0") + } + + mdm := MDM{ + EnabledAndConfigured: test.macOSEnabledAndConfigured, + WindowsEnabledAndConfigured: test.windowsEnabledAndConfigured, + } + result := mdm.AtLeastOnePlatformEnabledAndConfigured() + require.Equal(t, test.expectedResult, result) + }) + } +} diff --git a/server/fleet/datastore.go b/server/fleet/datastore.go index 13db70dc96..2aa92b13d9 100644 --- a/server/fleet/datastore.go +++ b/server/fleet/datastore.go @@ -694,12 +694,12 @@ type Datastore interface { SetOrUpdateHostDisksEncryption(ctx context.Context, hostID uint, encrypted bool) error // SetOrUpdateHostDiskEncryptionKey sets the base64, encrypted key for // a host - SetOrUpdateHostDiskEncryptionKey(ctx context.Context, hostID uint, encryptedBase64Key string) error + SetOrUpdateHostDiskEncryptionKey(ctx context.Context, hostID uint, encryptedBase64Key, clientError string, decryptable *bool) error // GetUnverifiedDiskEncryptionKeys returns all the encryption keys that // are collected but their decryptable status is not known yet (ie: // we're able to decrypt the key using a private key in the server) GetUnverifiedDiskEncryptionKeys(ctx context.Context) ([]HostDiskEncryptionKey, error) - // SetHostDiskEncryptionKeyStatus sets the encryptable status for the set + // SetHostsDiskEncryptionKeyStatus sets the encryptable status for the set // of encription keys provided SetHostsDiskEncryptionKeyStatus(ctx context.Context, hostIDs []uint, encryptable bool, threshold time.Time) error // GetHostDiskEncryptionKey returns the encryption key information for a given host @@ -1023,12 +1023,26 @@ type Datastore interface { // WSTEPAssociateCertHash associates a certificate hash with a device. WSTEPAssociateCertHash(ctx context.Context, deviceUUID string, hash string) error - // MDMWindowsGetEnrolledDevice receives a Windows MDM device id and returns the device information. + // MDMWindowsGetEnrolledDevice receives a Windows MDM HW device id and returns the device information. MDMWindowsGetEnrolledDevice(ctx context.Context, mdmDeviceID string) (*MDMWindowsEnrolledDevice, error) // MDMWindowsInsertEnrolledDevice inserts a new MDMWindowsEnrolledDevice in the database MDMWindowsInsertEnrolledDevice(ctx context.Context, device *MDMWindowsEnrolledDevice) error - // MDMWindowsDeleteEnrolledDevice deletes a give MDMWindowsEnrolledDevice entry from the database using the device id. + // MDMWindowsDeleteEnrolledDevice deletes a give MDMWindowsEnrolledDevice entry from the database using the HW device id. MDMWindowsDeleteEnrolledDevice(ctx context.Context, mdmDeviceID string) error + // MDMWindowsGetEnrolledDeviceWithDeviceID receives a Windows MDM device id and returns the device information + MDMWindowsGetEnrolledDeviceWithDeviceID(ctx context.Context, mdmDeviceID string) (*MDMWindowsEnrolledDevice, error) + // MDMWindowsDeleteEnrolledDeviceWithDeviceID deletes a give MDMWindowsEnrolledDevice entry from the database using the device id + MDMWindowsDeleteEnrolledDeviceWithDeviceID(ctx context.Context, mdmDeviceID string) error + + // GetMDMWindowsBitLockerSummary summarizes the current state of Windows disk encryption on + // each Windows host in the specified team (or, if no team is specified, each host that is not assigned + // to any team). + GetMDMWindowsBitLockerSummary(ctx context.Context, teamID *uint) (*MDMWindowsBitLockerSummary, error) + // GetMDMWindowsBitLockerStatus returns the disk encryption status for a given host + // + // Note that the returned status will be nil if the host is reported to be a Windows + // server or if disk encryption is disabled for the host's team (or no team, as applicable). + GetMDMWindowsBitLockerStatus(ctx context.Context, host *Host) (*DiskEncryptionStatus, error) /////////////////////////////////////////////////////////////////////////////// // Host Script Results diff --git a/server/fleet/hosts.go b/server/fleet/hosts.go index 87a401f71b..9e22fa92c3 100644 --- a/server/fleet/hosts.go +++ b/server/fleet/hosts.go @@ -53,20 +53,20 @@ const ( MDMEnrollStatusEnrolled = MDMEnrollStatus("enrolled") // combination of "manual" and "automatic" ) -// MacOSSettingsStatus defines the possible statuses of the host's macOS settings, which is derived from the -// status of MDM configuration profiles applied to the host. -type MacOSSettingsStatus string +// OSSettingsStatus defines the possible statuses of the host's OS settings, which is derived from the +// status of MDM configuration profiles and non-profile settings applied the host. +type OSSettingsStatus string const ( - MacOSSettingsVerified MacOSSettingsStatus = "verified" - MacOSSettingsVerifying MacOSSettingsStatus = "verifying" - MacOSSettingsPending MacOSSettingsStatus = "pending" - MacOSSettingsFailed MacOSSettingsStatus = "failed" + OSSettingsVerified OSSettingsStatus = "verified" + OSSettingsVerifying OSSettingsStatus = "verifying" + OSSettingsPending OSSettingsStatus = "pending" + OSSettingsFailed OSSettingsStatus = "failed" ) -func (s MacOSSettingsStatus) IsValid() bool { +func (s OSSettingsStatus) IsValid() bool { switch s { - case MacOSSettingsFailed, MacOSSettingsPending, MacOSSettingsVerifying, MacOSSettingsVerified: + case OSSettingsFailed, OSSettingsPending, OSSettingsVerifying, OSSettingsVerified: return true default: return false @@ -139,12 +139,19 @@ type HostListOptions struct { // MacOSSettingsFilter filters the hosts by the status of MDM configuration profiles // applied to the hosts. - MacOSSettingsFilter MacOSSettingsStatus + MacOSSettingsFilter OSSettingsStatus // MacOSSettingsDiskEncryptionFilter filters the hosts by the status of the disk encryption // MDM profile. MacOSSettingsDiskEncryptionFilter DiskEncryptionStatus + // OSSettingsFilter filters the hosts by the status of MDM configuration profiles and + // non-profile settings applied to the hosts. + OSSettingsFilter OSSettingsStatus + // OSSettingsDiskEncryptionFilter filters the hosts by the status of the disk encryption + // OS setting. + OSSettingsDiskEncryptionFilter DiskEncryptionStatus + // MDMBootstrapPackageFilter filters the hosts by the status of the MDM bootstrap package. MDMBootstrapPackageFilter *MDMBootstrapPackageStatus @@ -186,7 +193,9 @@ func (h HostListOptions) Empty() bool { h.MDMNameFilter == nil && h.MDMEnrollmentStatusFilter == "" && h.MunkiIssueIDFilter == nil && - h.LowDiskSpaceFilter == nil + h.LowDiskSpaceFilter == nil && + h.OSSettingsFilter == "" && + h.OSSettingsDiskEncryptionFilter == "" } type HostUser struct { @@ -336,6 +345,12 @@ type MDMHostData struct { // gets filled. rawDecryptable *int + // OSSettings contains information related to operating systems settings that are managed for + // MDM-enrolled hosts. + // + // Note: Additional information for macOS hosts is currently stored in MacOSSettings. + OSSettings *HostMDMOSSettings `json:"os_settings,omitempty" db:"-" csv:"-"` + // Profiles is a list of HostMDMProfiles for the host. Note that as for many // other host fields, it is not filled in by all host-returning datastore methods. // @@ -358,6 +373,14 @@ type MDMHostData struct { MacOSSetup *HostMDMMacOSSetup `json:"macos_setup,omitempty" db:"-" csv:"-"` } +type HostMDMOSSettings struct { + DiskEncryption HostMDMDiskEncryption `json:"disk_encryption" db:"-" csv:"-"` +} + +type HostMDMDiskEncryption struct { + Status *DiskEncryptionStatus `json:"status" db:"-" csv:"-"` +} + type DiskEncryptionStatus string const ( @@ -411,11 +434,11 @@ type HostMDMMacOSSetup struct { BootstrapPackageName string `db:"bootstrap_package_name" json:"bootstrap_package_name" csv:"-"` } -// DetermineDiskEncryptionStatus determines the disk encryption status for the +// DetermineMacOSDiskEncryptionStatus determines the disk encryption status for the // host based on the file-vault profile in its list of profiles and whether its // disk encryption key is available and decryptable. The file-vault profile // identifier is received as argument to avoid a circular dependency. -func (d *MDMHostData) DetermineDiskEncryptionStatus(profiles []HostMDMAppleProfile, fileVaultIdentifier string) { +func (d *MDMHostData) DetermineMacOSDiskEncryptionStatus(profiles []HostMDMAppleProfile, fileVaultIdentifier string) { var settings MDMHostMacOSSettings var fvprof *HostMDMAppleProfile @@ -577,6 +600,24 @@ func (h *Host) IsEligibleForWindowsMDMUnenrollment() bool { (h.MDMInfo == nil || !h.MDMInfo.IsServer) } +// IsEligibleForBitLockerEncryption checks if the host needs to enforce disk +// encryption using Fleet MDM features. +// +// Note: the *Host structs needs disk encryption data and MDM data filled in to +// perform the check. +func (h *Host) IsEligibleForBitLockerEncryption() bool { + isServer := h.MDMInfo != nil && h.MDMInfo.IsServer + isWindows := h.FleetPlatform() == "windows" + needsEncryption := h.DiskEncryptionEnabled != nil && !*h.DiskEncryptionEnabled + encryptedWithoutKey := h.DiskEncryptionEnabled != nil && *h.DiskEncryptionEnabled && !h.MDM.EncryptionKeyAvailable + + return isWindows && + h.IsOsqueryEnrolled() && + h.MDMInfo.IsFleetEnrolled() && + !isServer && + (needsEncryption || encryptedWithoutKey) +} + // DisplayName returns ComputerName if it isn't empty. Otherwise, it returns Hostname if it isn't // empty. If Hostname is empty and both HardwareSerial and HardwareModel are not empty, it returns a // composite string with HardwareModel and HardwareSerial. If all else fails, it returns an empty @@ -829,6 +870,9 @@ func (h *HostMDM) IsManualFleetEnrolled() bool { // it is in enrolled state for Fleet MDM, regardless of automatic or manual // enrollment method. func (h *HostMDM) IsFleetEnrolled() bool { + if h == nil { + return false + } return h.IsDEPFleetEnrolled() || h.IsManualFleetEnrolled() } diff --git a/server/fleet/hosts_test.go b/server/fleet/hosts_test.go index 2458e8d7f5..2bba30a7d7 100644 --- a/server/fleet/hosts_test.go +++ b/server/fleet/hosts_test.go @@ -6,6 +6,7 @@ import ( "time" "github.com/WatchBeam/clock" + "github.com/fleetdm/fleet/v4/server/ptr" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -240,3 +241,53 @@ func TestIsDEPCapable(t *testing.T) { require.Equal(t, tc.expected, tc.hostMDM.IsDEPCapable()) } } + +func TestIsEligibleForBitLockerEncryption(t *testing.T) { + require.False(t, (&Host{}).IsEligibleForBitLockerEncryption()) + + hostThatNeedsEnforcement := Host{ + Platform: "windows", + OsqueryHostID: ptr.String("test"), + MDMInfo: &HostMDM{ + Name: WellKnownMDMFleet, + Enrolled: true, + IsServer: false, + InstalledFromDep: true, + }, + MDM: MDMHostData{ + EncryptionKeyAvailable: false, + }, + DiskEncryptionEnabled: ptr.Bool(false), + } + require.True(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) + + // macOS hosts are not elegible + hostThatNeedsEnforcement.Platform = "darwin" + require.False(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) + hostThatNeedsEnforcement.Platform = "windows" + require.True(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) + + // hosts with disk encryption already enabled are elegible only if we + // can't decrypt the key + hostThatNeedsEnforcement.DiskEncryptionEnabled = ptr.Bool(true) + require.True(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) + hostThatNeedsEnforcement.MDM.EncryptionKeyAvailable = true + require.False(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) + + hostThatNeedsEnforcement.DiskEncryptionEnabled = ptr.Bool(false) + hostThatNeedsEnforcement.MDM.EncryptionKeyAvailable = false + require.True(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) + + // hosts without MDMinfo are not elegible + oldMDMInfo := hostThatNeedsEnforcement.MDMInfo + hostThatNeedsEnforcement.MDMInfo = nil + require.False(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) + hostThatNeedsEnforcement.MDMInfo = oldMDMInfo + require.True(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) + + // hosts that are not enrolled in MDM are not elegible + hostThatNeedsEnforcement.MDMInfo.Enrolled = false + require.False(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) + hostThatNeedsEnforcement.MDMInfo.Enrolled = true + require.True(t, hostThatNeedsEnforcement.IsEligibleForBitLockerEncryption()) +} diff --git a/server/fleet/mdm.go b/server/fleet/mdm.go index 9bac698299..9a68a6d6b6 100644 --- a/server/fleet/mdm.go +++ b/server/fleet/mdm.go @@ -135,3 +135,16 @@ type HostMDMProfileRetryCount struct { ProfileIdentifier string `db:"profile_identifier"` Retries uint `db:"retries"` } + +type MDMPlatformsCounts struct { + MacOS uint `db:"macos" json:"macos"` + Windows uint `db:"windows" json:"windows"` +} +type MDMDiskEncryptionSummary struct { + Verified MDMPlatformsCounts `db:"verified" json:"verified"` + Verifying MDMPlatformsCounts `db:"verifying" json:"verifying"` + ActionRequired MDMPlatformsCounts `db:"action_required" json:"action_required"` + Enforcing MDMPlatformsCounts `db:"enforcing" json:"enforcing"` + Failed MDMPlatformsCounts `db:"failed" json:"failed"` + RemovingEnforcement MDMPlatformsCounts `db:"removing_enforcement" json:"removing_enforcement"` +} diff --git a/server/fleet/orbit.go b/server/fleet/orbit.go index 77ecd683f0..b8c2b2fb65 100644 --- a/server/fleet/orbit.go +++ b/server/fleet/orbit.go @@ -29,6 +29,10 @@ type OrbitConfigNotifications struct { // execution on that host. The scripts pending execution are those that // haven't received a result yet. PendingScriptExecutionIDs []string `json:"pending_script_execution_ids,omitempty"` + + // EnforceBitLockerEncryption is sent as true if Windows MDM is + // enabled and the device should encrypt its disk volumes with BitLocker. + EnforceBitLockerEncryption bool `json:"enforce_bitlocker_encryption,omitempty"` } type OrbitConfig struct { @@ -81,3 +85,9 @@ func (es *Extensions) FilterByHostPlatform(hostPlatform string) { } } } + +// OrbitHostDiskEncryptionKeyPayload contains the disk encryption key for a host. +type OrbitHostDiskEncryptionKeyPayload struct { + EncryptionKey []byte `json:"encryption_key"` + ClientError string `json:"client_error"` +} diff --git a/server/fleet/service.go b/server/fleet/service.go index 9554c78154..b9cb37544a 100644 --- a/server/fleet/service.go +++ b/server/fleet/service.go @@ -711,6 +711,11 @@ type Service interface { // error can be raised to the user. VerifyMDMWindowsConfigured(ctx context.Context) error + // VerifyMDMAppleOrWindowsConfigured verifies that the server is configured + // for either Apple or Windows MDM. If an error is returned, authorization is + // skipped so the error can be raised to the user. + VerifyMDMAppleOrWindowsConfigured(ctx context.Context) error + MDMAppleUploadBootstrapPackage(ctx context.Context, name string, pkg io.Reader, teamID uint) error GetMDMAppleBootstrapPackageBytes(ctx context.Context, token string) (*MDMAppleBootstrapPackage, error) @@ -790,6 +795,17 @@ type Service interface { // GetMDMWindowsTOSContent returns TOS content GetMDMWindowsTOSContent(ctx context.Context, redirectUri string, reqID string) (string, error) + // Set or update the disk encryption key for a host. + SetOrUpdateDiskEncryptionKey(ctx context.Context, encryptionKey, clientError string) error + + /////////////////////////////////////////////////////////////////////////////// + // Common MDM + + // GetMDMDiskEncryptionSummary returns the current disk encryption status of all macOS and + // Windows hosts in the specified team (or, if no team is specified, each host that is not + // assigned to any team). + GetMDMDiskEncryptionSummary(ctx context.Context, teamID *uint) (*MDMDiskEncryptionSummary, error) + /////////////////////////////////////////////////////////////////////////////// // Host Script Execution diff --git a/server/fleet/teams.go b/server/fleet/teams.go index 4c6ba72e03..191ef0f3b1 100644 --- a/server/fleet/teams.go +++ b/server/fleet/teams.go @@ -5,6 +5,8 @@ import ( "encoding/json" "fmt" "time" + + "github.com/fleetdm/fleet/v4/pkg/optjson" ) const ( @@ -29,9 +31,10 @@ type TeamPayload struct { // need to be able which part of the MDM config was provided in the request, // so the fields are pointers to structs. type TeamPayloadMDM struct { - MacOSUpdates *MacOSUpdates `json:"macos_updates"` - MacOSSettings *MacOSSettings `json:"macos_settings"` - MacOSSetup *MacOSSetup `json:"macos_setup"` + EnableDiskEncryption optjson.Bool `json:"enable_disk_encryption"` + MacOSUpdates *MacOSUpdates `json:"macos_updates"` + MacOSSettings *MacOSSettings `json:"macos_settings"` + MacOSSetup *MacOSSetup `json:"macos_setup"` } // Team is the data representation for the "Team" concept (group of hosts and @@ -143,13 +146,16 @@ type TeamWebhookSettings struct { } type TeamMDM struct { - MacOSUpdates MacOSUpdates `json:"macos_updates"` - MacOSSettings MacOSSettings `json:"macos_settings"` - MacOSSetup MacOSSetup `json:"macos_setup"` + EnableDiskEncryption bool `json:"enable_disk_encryption"` + MacOSUpdates MacOSUpdates `json:"macos_updates"` + MacOSSettings MacOSSettings `json:"macos_settings"` + MacOSSetup MacOSSetup `json:"macos_setup"` // NOTE: TeamSpecMDM must be kept in sync with TeamMDM. } type TeamSpecMDM struct { + EnableDiskEncryption optjson.Bool `json:"enable_disk_encryption"` + MacOSUpdates MacOSUpdates `json:"macos_updates"` // A map is used for the macos settings so that we can easily detect if its @@ -364,7 +370,9 @@ func TeamSpecFromTeam(t *Team) (*TeamSpec, error) { var mdmSpec TeamSpecMDM mdmSpec.MacOSUpdates = t.Config.MDM.MacOSUpdates mdmSpec.MacOSSettings = t.Config.MDM.MacOSSettings.ToMap() + delete(mdmSpec.MacOSSettings, "enable_disk_encryption") mdmSpec.MacOSSetup = t.Config.MDM.MacOSSetup + mdmSpec.EnableDiskEncryption = optjson.SetBool(t.Config.MDM.EnableDiskEncryption) return &TeamSpec{ Name: t.Name, AgentOptions: agentOptions, diff --git a/server/fleet/windows_mdm.go b/server/fleet/windows_mdm.go new file mode 100644 index 0000000000..0a72f5aea7 --- /dev/null +++ b/server/fleet/windows_mdm.go @@ -0,0 +1,16 @@ +package fleet + +// MDMWindowsBitLockerSummary reports the number of Windows hosts being managed by Fleet with +// BitLocker. Each host may be counted in only one of six mutually-exclusive categories: +// Verified, Verifying, ActionRequired, Enforcing, Failed, RemovingEnforcement. +// +// Note that it is expected that each of Verifying, ActionRequired, and RemovingEnforcement will be +// zero because these states are not in Fleet's current implementation of BitLocker management. +type MDMWindowsBitLockerSummary struct { + Verified uint `json:"verified" db:"verified"` + Verifying uint `json:"verifying" db:"verifying"` + ActionRequired uint `json:"action_required" db:"action_required"` + Enforcing uint `json:"enforcing" db:"enforcing"` + Failed uint `json:"failed" db:"failed"` + RemovingEnforcement uint `json:"removing_enforcement" db:"removing_enforcement"` +} diff --git a/server/mdm/apple/cert.go b/server/mdm/apple/cert.go index 8b06ded4d8..aa300c4596 100644 --- a/server/mdm/apple/cert.go +++ b/server/mdm/apple/cert.go @@ -2,12 +2,10 @@ package apple_mdm import ( "bytes" - "crypto" "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" - "encoding/base64" "encoding/json" "fmt" "io/ioutil" @@ -17,7 +15,6 @@ import ( "github.com/micromdm/nanodep/tokenpki" "github.com/micromdm/scep/v2/depot" - "go.mozilla.org/pkcs7" ) const ( @@ -160,17 +157,3 @@ func NewDEPKeyPairPEM() ([]byte, []byte, error) { return publicKeyPEM, privateKeyPEM, nil } - -func DecryptBase64CMS(p7Base64 string, cert *x509.Certificate, key crypto.PrivateKey) ([]byte, error) { - p7Bytes, err := base64.StdEncoding.DecodeString(p7Base64) - if err != nil { - return nil, err - } - - p7, err := pkcs7.Parse(p7Bytes) - if err != nil { - return nil, err - } - - return p7.Decrypt(cert, key) -} diff --git a/server/mdm/mdm.go b/server/mdm/mdm.go new file mode 100644 index 0000000000..79a55dd50a --- /dev/null +++ b/server/mdm/mdm.go @@ -0,0 +1,25 @@ +package mdm + +import ( + "crypto" + "crypto/x509" + "encoding/base64" + + "go.mozilla.org/pkcs7" +) + +// DecryptBase64CMS decrypts a base64 encoded pkcs7-encrypted value using the +// provided certificate and private key. +func DecryptBase64CMS(p7Base64 string, cert *x509.Certificate, key crypto.PrivateKey) ([]byte, error) { + p7Bytes, err := base64.StdEncoding.DecodeString(p7Base64) + if err != nil { + return nil, err + } + + p7, err := pkcs7.Parse(p7Bytes) + if err != nil { + return nil, err + } + + return p7.Decrypt(cert, key) +} diff --git a/server/mdm/apple/cert_test.go b/server/mdm/mdm_test.go similarity index 99% rename from server/mdm/apple/cert_test.go rename to server/mdm/mdm_test.go index f6289e9923..35f151ac1d 100644 --- a/server/mdm/apple/cert_test.go +++ b/server/mdm/mdm_test.go @@ -1,4 +1,4 @@ -package apple_mdm +package mdm import ( "crypto/tls" diff --git a/server/mdm/microsoft/microsoft_mdm.go b/server/mdm/microsoft/microsoft_mdm.go index 552c8ffc97..8a52f6bc37 100644 --- a/server/mdm/microsoft/microsoft_mdm.go +++ b/server/mdm/microsoft/microsoft_mdm.go @@ -1,7 +1,11 @@ package microsoft_mdm import ( + "crypto/x509" + "encoding/base64" + "github.com/fleetdm/fleet/v4/server/mdm/internal/commonmdm" + "go.mozilla.org/pkcs7" ) const ( @@ -174,7 +178,7 @@ const ( WstepRenewRetryInterval = "4" // The PROVIDER-ID paramer specifies the server identifier for a management server used in the current management session - DocProvisioningAppProviderID = "FleetDM" + DocProvisioningAppProviderID = "Fleet" // The NAME parameter is used in the APPLICATION characteristic to specify a user readable application identity DocProvisioningAppName = DocProvisioningAppProviderID @@ -275,3 +279,14 @@ func ResolveWindowsMDMAuth(serverURL string) (string, error) { func ResolveWindowsMDMManagement(serverURL string) (string, error) { return commonmdm.ResolveURL(serverURL, MDE2ManagementPath, false) } + +// Encrypt uses pkcs7 to encrypt a raw value using the provided certificate. +// The returned encrypted value is base64-encoded. +func Encrypt(rawValue string, cert *x509.Certificate) (string, error) { + encrypted, err := pkcs7.Encrypt([]byte(rawValue), []*x509.Certificate{cert}) + if err != nil { + return "", err + } + b64Enc := base64.StdEncoding.EncodeToString(encrypted) + return b64Enc, nil +} diff --git a/server/mock/datastore_mock.go b/server/mock/datastore_mock.go index 1b049e6020..ecc0b814e3 100644 --- a/server/mock/datastore_mock.go +++ b/server/mock/datastore_mock.go @@ -480,7 +480,7 @@ type SetOrUpdateHostDisksSpaceFunc func(ctx context.Context, hostID uint, gigsAv type SetOrUpdateHostDisksEncryptionFunc func(ctx context.Context, hostID uint, encrypted bool) error -type SetOrUpdateHostDiskEncryptionKeyFunc func(ctx context.Context, hostID uint, encryptedBase64Key string) error +type SetOrUpdateHostDiskEncryptionKeyFunc func(ctx context.Context, hostID uint, encryptedBase64Key string, clientError string, decryptable *bool) error type GetUnverifiedDiskEncryptionKeysFunc func(ctx context.Context) ([]fleet.HostDiskEncryptionKey, error) @@ -674,6 +674,14 @@ type MDMWindowsInsertEnrolledDeviceFunc func(ctx context.Context, device *fleet. type MDMWindowsDeleteEnrolledDeviceFunc func(ctx context.Context, mdmDeviceID string) error +type MDMWindowsGetEnrolledDeviceWithDeviceIDFunc func(ctx context.Context, mdmDeviceID string) (*fleet.MDMWindowsEnrolledDevice, error) + +type MDMWindowsDeleteEnrolledDeviceWithDeviceIDFunc func(ctx context.Context, mdmDeviceID string) error + +type GetMDMWindowsBitLockerSummaryFunc func(ctx context.Context, teamID *uint) (*fleet.MDMWindowsBitLockerSummary, error) + +type GetMDMWindowsBitLockerStatusFunc func(ctx context.Context, host *fleet.Host) (*fleet.DiskEncryptionStatus, error) + type NewHostScriptExecutionRequestFunc func(ctx context.Context, request *fleet.HostScriptRequestPayload) (*fleet.HostScriptResult, error) type SetHostScriptExecutionResultFunc func(ctx context.Context, result *fleet.HostScriptResultPayload) error @@ -1667,6 +1675,18 @@ type DataStore struct { MDMWindowsDeleteEnrolledDeviceFunc MDMWindowsDeleteEnrolledDeviceFunc MDMWindowsDeleteEnrolledDeviceFuncInvoked bool + MDMWindowsGetEnrolledDeviceWithDeviceIDFunc MDMWindowsGetEnrolledDeviceWithDeviceIDFunc + MDMWindowsGetEnrolledDeviceWithDeviceIDFuncInvoked bool + + MDMWindowsDeleteEnrolledDeviceWithDeviceIDFunc MDMWindowsDeleteEnrolledDeviceWithDeviceIDFunc + MDMWindowsDeleteEnrolledDeviceWithDeviceIDFuncInvoked bool + + GetMDMWindowsBitLockerSummaryFunc GetMDMWindowsBitLockerSummaryFunc + GetMDMWindowsBitLockerSummaryFuncInvoked bool + + GetMDMWindowsBitLockerStatusFunc GetMDMWindowsBitLockerStatusFunc + GetMDMWindowsBitLockerStatusFuncInvoked bool + NewHostScriptExecutionRequestFunc NewHostScriptExecutionRequestFunc NewHostScriptExecutionRequestFuncInvoked bool @@ -3299,11 +3319,11 @@ func (s *DataStore) SetOrUpdateHostDisksEncryption(ctx context.Context, hostID u return s.SetOrUpdateHostDisksEncryptionFunc(ctx, hostID, encrypted) } -func (s *DataStore) SetOrUpdateHostDiskEncryptionKey(ctx context.Context, hostID uint, encryptedBase64Key string) error { +func (s *DataStore) SetOrUpdateHostDiskEncryptionKey(ctx context.Context, hostID uint, encryptedBase64Key string, clientError string, decryptable *bool) error { s.mu.Lock() s.SetOrUpdateHostDiskEncryptionKeyFuncInvoked = true s.mu.Unlock() - return s.SetOrUpdateHostDiskEncryptionKeyFunc(ctx, hostID, encryptedBase64Key) + return s.SetOrUpdateHostDiskEncryptionKeyFunc(ctx, hostID, encryptedBase64Key, clientError, decryptable) } func (s *DataStore) GetUnverifiedDiskEncryptionKeys(ctx context.Context) ([]fleet.HostDiskEncryptionKey, error) { @@ -3957,11 +3977,11 @@ func (s *DataStore) WSTEPAssociateCertHash(ctx context.Context, deviceUUID strin return s.WSTEPAssociateCertHashFunc(ctx, deviceUUID, hash) } -func (s *DataStore) MDMWindowsGetEnrolledDevice(ctx context.Context, mdmDeviceID string) (*fleet.MDMWindowsEnrolledDevice, error) { +func (s *DataStore) MDMWindowsGetEnrolledDevice(ctx context.Context, mdmDeviceHWID string) (*fleet.MDMWindowsEnrolledDevice, error) { s.mu.Lock() s.MDMWindowsGetEnrolledDeviceFuncInvoked = true s.mu.Unlock() - return s.MDMWindowsGetEnrolledDeviceFunc(ctx, mdmDeviceID) + return s.MDMWindowsGetEnrolledDeviceFunc(ctx, mdmDeviceHWID) } func (s *DataStore) MDMWindowsInsertEnrolledDevice(ctx context.Context, device *fleet.MDMWindowsEnrolledDevice) error { @@ -3971,11 +3991,39 @@ func (s *DataStore) MDMWindowsInsertEnrolledDevice(ctx context.Context, device * return s.MDMWindowsInsertEnrolledDeviceFunc(ctx, device) } -func (s *DataStore) MDMWindowsDeleteEnrolledDevice(ctx context.Context, mdmDeviceID string) error { +func (s *DataStore) MDMWindowsDeleteEnrolledDevice(ctx context.Context, mdmDeviceHWID string) error { s.mu.Lock() s.MDMWindowsDeleteEnrolledDeviceFuncInvoked = true s.mu.Unlock() - return s.MDMWindowsDeleteEnrolledDeviceFunc(ctx, mdmDeviceID) + return s.MDMWindowsDeleteEnrolledDeviceFunc(ctx, mdmDeviceHWID) +} + +func (s *DataStore) MDMWindowsGetEnrolledDeviceWithDeviceID(ctx context.Context, mdmDeviceID string) (*fleet.MDMWindowsEnrolledDevice, error) { + s.mu.Lock() + s.MDMWindowsGetEnrolledDeviceWithDeviceIDFuncInvoked = true + s.mu.Unlock() + return s.MDMWindowsGetEnrolledDeviceWithDeviceIDFunc(ctx, mdmDeviceID) +} + +func (s *DataStore) MDMWindowsDeleteEnrolledDeviceWithDeviceID(ctx context.Context, mdmDeviceID string) error { + s.mu.Lock() + s.MDMWindowsDeleteEnrolledDeviceWithDeviceIDFuncInvoked = true + s.mu.Unlock() + return s.MDMWindowsDeleteEnrolledDeviceWithDeviceIDFunc(ctx, mdmDeviceID) +} + +func (s *DataStore) GetMDMWindowsBitLockerSummary(ctx context.Context, teamID *uint) (*fleet.MDMWindowsBitLockerSummary, error) { + s.mu.Lock() + s.GetMDMWindowsBitLockerSummaryFuncInvoked = true + s.mu.Unlock() + return s.GetMDMWindowsBitLockerSummaryFunc(ctx, teamID) +} + +func (s *DataStore) GetMDMWindowsBitLockerStatus(ctx context.Context, host *fleet.Host) (*fleet.DiskEncryptionStatus, error) { + s.mu.Lock() + s.GetMDMWindowsBitLockerStatusFuncInvoked = true + s.mu.Unlock() + return s.GetMDMWindowsBitLockerStatusFunc(ctx, host) } func (s *DataStore) NewHostScriptExecutionRequest(ctx context.Context, request *fleet.HostScriptRequestPayload) (*fleet.HostScriptResult, error) { diff --git a/server/service/appconfig.go b/server/service/appconfig.go index 0b279e5b8a..a3008831c1 100644 --- a/server/service/appconfig.go +++ b/server/service/appconfig.go @@ -14,6 +14,7 @@ import ( "net/http" "net/url" + "github.com/fleetdm/fleet/v4/pkg/rawjson" "github.com/fleetdm/fleet/v4/server/authz" "github.com/fleetdm/fleet/v4/server/config" authz_ctx "github.com/fleetdm/fleet/v4/server/contexts/authz" @@ -78,6 +79,31 @@ func (r *appConfigResponse) UnmarshalJSON(data []byte) error { return nil } +// MarshalJSON implements the json.Marshaler interface to make sure we serialize +// both AppConfig and responseFields properly: +// +// - If this function is not defined, AppConfig.MarshalJSON gets promoted and +// will be called instead. +// - If we try to unmarshal everything in one go, AppConfig.MarshalJSON doesn't get +// called. +func (r appConfigResponse) MarshalJSON() ([]byte, error) { + // Marshal only the response fields + responseData, err := json.Marshal(r.appConfigResponseFields) + if err != nil { + return nil, err + } + + // Marshal the base AppConfig + appConfigData, err := json.Marshal(r.AppConfig) + if err != nil { + return nil, err + } + + // we need to marshal and combine both groups separately because + // AppConfig has a custom marshaler. + return rawjson.CombineRoots(responseData, appConfigData) +} + func (r appConfigResponse) error() error { return r.Err } func getAppConfigEndpoint(ctx context.Context, request interface{}, svc fleet.Service) (errorer, error) { @@ -340,6 +366,15 @@ func (svc *Service) ModifyAppConfig(ctx context.Context, p []byte, applyOpts fle } } + // TODO: move this logic to the AppConfig unmarshaller? we need to do + // this because we unmarshal twice into appConfig: + // + // 1. To get the JSON value from the database + // 2. To update fields with the incoming values + if newAppConfig.MDM.EnableDiskEncryption.Valid { + appConfig.MDM.EnableDiskEncryption = newAppConfig.MDM.EnableDiskEncryption + } + fleet.ValidateEnabledVulnerabilitiesIntegrations(appConfig.WebhookSettings.VulnerabilitiesWebhook, appConfig.Integrations, invalid) fleet.ValidateEnabledFailingPoliciesIntegrations(appConfig.WebhookSettings.FailingPoliciesWebhook, appConfig.Integrations, invalid) fleet.ValidateEnabledHostStatusIntegrations(appConfig.WebhookSettings.HostStatusWebhook, invalid) @@ -502,22 +537,24 @@ func (svc *Service) ModifyAppConfig(ctx context.Context, p []byte, applyOpts fle } } - if oldAppConfig.MDM.MacOSSettings.EnableDiskEncryption != appConfig.MDM.MacOSSettings.EnableDiskEncryption { - var act fleet.ActivityDetails - if appConfig.MDM.MacOSSettings.EnableDiskEncryption { - act = fleet.ActivityTypeEnabledMacosDiskEncryption{} - if err := svc.EnterpriseOverrides.MDMAppleEnableFileVaultAndEscrow(ctx, nil); err != nil { - return nil, ctxerr.Wrap(ctx, err, "enable no-team filevault and escrow") + if appConfig.MDM.EnableDiskEncryption.Valid && oldAppConfig.MDM.EnableDiskEncryption.Value != appConfig.MDM.EnableDiskEncryption.Value { + if oldAppConfig.MDM.EnabledAndConfigured { + var act fleet.ActivityDetails + if appConfig.MDM.EnableDiskEncryption.Value { + act = fleet.ActivityTypeEnabledMacosDiskEncryption{} + if err := svc.EnterpriseOverrides.MDMAppleEnableFileVaultAndEscrow(ctx, nil); err != nil { + return nil, ctxerr.Wrap(ctx, err, "enable no-team filevault and escrow") + } + } else { + act = fleet.ActivityTypeDisabledMacosDiskEncryption{} + if err := svc.EnterpriseOverrides.MDMAppleDisableFileVaultAndEscrow(ctx, nil); err != nil { + return nil, ctxerr.Wrap(ctx, err, "disable no-team filevault and escrow") + } } - } else { - act = fleet.ActivityTypeDisabledMacosDiskEncryption{} - if err := svc.EnterpriseOverrides.MDMAppleDisableFileVaultAndEscrow(ctx, nil); err != nil { - return nil, ctxerr.Wrap(ctx, err, "disable no-team filevault and escrow") + if err := svc.ds.NewActivity(ctx, authz.UserFromContext(ctx), act); err != nil { + return nil, ctxerr.Wrap(ctx, err, "create activity for app config macos disk encryption") } } - if err := svc.ds.NewActivity(ctx, authz.UserFromContext(ctx), act); err != nil { - return nil, ctxerr.Wrap(ctx, err, "create activity for app config macos disk encryption") - } } mdmEnableEndUserAuthChanged := oldAppConfig.MDM.MacOSSetup.EnableEndUserAuthentication != appConfig.MDM.MacOSSetup.EnableEndUserAuthentication @@ -565,7 +602,7 @@ func (svc *Service) validateMDM( mdm *fleet.MDM, invalid *fleet.InvalidArgumentError, ) { - if mdm.MacOSSettings.EnableDiskEncryption && !license.IsPremium() { + if mdm.EnableDiskEncryption.Value && !license.IsPremium() { invalid.Append("macos_settings.enable_disk_encryption", ErrMissingLicense.Error()) } if oldMdm.MacOSSetup.MacOSSetupAssistant.Value != mdm.MacOSSetup.MacOSSetupAssistant.Value && !license.IsPremium() { @@ -586,11 +623,6 @@ func (svc *Service) validateMDM( `Couldn't update macos_settings because MDM features aren't turned on in Fleet. Use fleetctl generate mdm-apple and then fleet serve with mdm configuration to turn on MDM features.`) } - if mdm.MacOSSettings.EnableDiskEncryption { - invalid.Append("macos_settings.enable_disk_encryption", - `Couldn't update macos_settings because MDM features aren't turned on in Fleet. Use fleetctl generate mdm-apple and then fleet serve with mdm configuration to turn on MDM features.`) - } - if oldMdm.MacOSSetup.MacOSSetupAssistant.Value != mdm.MacOSSetup.MacOSSetupAssistant.Value { invalid.Append("macos_setup.macos_setup_assistant", `Couldn't update macos_setup because MDM features aren't turned on in Fleet. Use fleetctl generate mdm-apple and then fleet serve with mdm configuration to turn on MDM features.`) @@ -683,6 +715,14 @@ func (svc *Service) validateMDM( return } } + + // if either macOS or Windows MDM is enabled, this setting can be set. + if !mdm.AtLeastOnePlatformEnabledAndConfigured() { + if mdm.EnableDiskEncryption.Valid && mdm.EnableDiskEncryption.Value != oldMdm.EnableDiskEncryption.Value { + invalid.Append("mdm.enable_disk_encryption", + `Couldn't edit enable_disk_encryption. Neither macOS MDM nor Windows is turned on. Visit https://fleetdm.com/docs/using-fleet to learn how to turn on MDM.`) + } + } } func validateSSOProviderSettings(incoming, existing fleet.SSOProviderSettings, invalid *fleet.InvalidArgumentError) { diff --git a/server/service/appconfig_test.go b/server/service/appconfig_test.go index 38598287e8..6efc8a602d 100644 --- a/server/service/appconfig_test.go +++ b/server/service/appconfig_test.go @@ -810,8 +810,9 @@ func TestMDMAppleConfig(t *testing.T) { name: "nochange", licenseTier: "free", expectedMDM: fleet.MDM{ - MacOSSetup: fleet.MacOSSetup{BootstrapPackage: optjson.String{Set: true}, MacOSSetupAssistant: optjson.String{Set: true}}, - MacOSUpdates: fleet.MacOSUpdates{MinimumVersion: optjson.String{Set: true}, Deadline: optjson.String{Set: true}}, + MacOSSetup: fleet.MacOSSetup{BootstrapPackage: optjson.String{Set: true}, MacOSSetupAssistant: optjson.String{Set: true}}, + MacOSUpdates: fleet.MacOSUpdates{MinimumVersion: optjson.String{Set: true}, Deadline: optjson.String{Set: true}}, + EnableDiskEncryption: optjson.Bool{Set: true, Valid: false}, }, }, { name: "newDefaultTeamNoLicense", @@ -835,9 +836,10 @@ func TestMDMAppleConfig(t *testing.T) { findTeam: true, newMDM: fleet.MDM{AppleBMDefaultTeam: "foobar"}, expectedMDM: fleet.MDM{ - AppleBMDefaultTeam: "foobar", - MacOSSetup: fleet.MacOSSetup{BootstrapPackage: optjson.String{Set: true}, MacOSSetupAssistant: optjson.String{Set: true}}, - MacOSUpdates: fleet.MacOSUpdates{MinimumVersion: optjson.String{Set: true}, Deadline: optjson.String{Set: true}}, + AppleBMDefaultTeam: "foobar", + MacOSSetup: fleet.MacOSSetup{BootstrapPackage: optjson.String{Set: true}, MacOSSetupAssistant: optjson.String{Set: true}}, + MacOSUpdates: fleet.MacOSUpdates{MinimumVersion: optjson.String{Set: true}, Deadline: optjson.String{Set: true}}, + EnableDiskEncryption: optjson.Bool{Set: true, Valid: false}, }, }, { name: "foundEdit", @@ -846,9 +848,10 @@ func TestMDMAppleConfig(t *testing.T) { oldMDM: fleet.MDM{AppleBMDefaultTeam: "bar"}, newMDM: fleet.MDM{AppleBMDefaultTeam: "foobar"}, expectedMDM: fleet.MDM{ - AppleBMDefaultTeam: "foobar", - MacOSSetup: fleet.MacOSSetup{BootstrapPackage: optjson.String{Set: true}, MacOSSetupAssistant: optjson.String{Set: true}}, - MacOSUpdates: fleet.MacOSUpdates{MinimumVersion: optjson.String{Set: true}, Deadline: optjson.String{Set: true}}, + AppleBMDefaultTeam: "foobar", + MacOSSetup: fleet.MacOSSetup{BootstrapPackage: optjson.String{Set: true}, MacOSSetupAssistant: optjson.String{Set: true}}, + MacOSUpdates: fleet.MacOSUpdates{MinimumVersion: optjson.String{Set: true}, Deadline: optjson.String{Set: true}}, + EnableDiskEncryption: optjson.Bool{Set: true, Valid: false}, }, }, { name: "ssoFree", @@ -866,6 +869,7 @@ func TestMDMAppleConfig(t *testing.T) { EndUserAuthentication: fleet.MDMEndUserAuthentication{SSOProviderSettings: fleet.SSOProviderSettings{EntityID: "foo"}}, MacOSSetup: fleet.MacOSSetup{BootstrapPackage: optjson.String{Set: true}, MacOSSetupAssistant: optjson.String{Set: true}}, MacOSUpdates: fleet.MacOSUpdates{MinimumVersion: optjson.String{Set: true}, Deadline: optjson.String{Set: true}}, + EnableDiskEncryption: optjson.Bool{Set: true, Valid: false}, }, }, { name: "ssoAllFields", @@ -884,8 +888,9 @@ func TestMDMAppleConfig(t *testing.T) { MetadataURL: "http://isser.metadata.com", IDPName: "onelogin", }}, - MacOSSetup: fleet.MacOSSetup{BootstrapPackage: optjson.String{Set: true}, MacOSSetupAssistant: optjson.String{Set: true}}, - MacOSUpdates: fleet.MacOSUpdates{MinimumVersion: optjson.String{Set: true}, Deadline: optjson.String{Set: true}}, + MacOSSetup: fleet.MacOSSetup{BootstrapPackage: optjson.String{Set: true}, MacOSSetupAssistant: optjson.String{Set: true}}, + MacOSUpdates: fleet.MacOSUpdates{MinimumVersion: optjson.String{Set: true}, Deadline: optjson.String{Set: true}}, + EnableDiskEncryption: optjson.Bool{Set: true, Valid: false}, }, }, { name: "ssoShortEntityID", diff --git a/server/service/apple_mdm.go b/server/service/apple_mdm.go index 5417b8f094..53270d2950 100644 --- a/server/service/apple_mdm.go +++ b/server/service/apple_mdm.go @@ -18,6 +18,7 @@ import ( "github.com/VividCortex/mysqlerr" "github.com/docker/go-units" "github.com/fleetdm/fleet/v4/pkg/file" + "github.com/fleetdm/fleet/v4/pkg/optjson" "github.com/fleetdm/fleet/v4/server" "github.com/fleetdm/fleet/v4/server/authz" "github.com/fleetdm/fleet/v4/server/contexts/ctxerr" @@ -609,7 +610,6 @@ func getMdmAppleFileVaultSummaryEndpoint(ctx context.Context, request interface{ }, nil } -// QUESTION: workflow for developing new APIs? whats your setup quickly test code working? func (svc *Service) GetMDMAppleFileVaultSummary(ctx context.Context, teamID *uint) (*fleet.MDMAppleFileVaultSummary, error) { if err := svc.authz.Authorize(ctx, fleet.MDMAppleConfigProfile{TeamID: teamID}, fleet.ActionRead); err != nil { return nil, ctxerr.Wrap(ctx, err) @@ -1716,8 +1716,8 @@ func (svc *Service) updateAppConfigMDMAppleSettings(ctx context.Context, payload var didUpdate, didUpdateMacOSDiskEncryption bool if payload.EnableDiskEncryption != nil { - if ac.MDM.MacOSSettings.EnableDiskEncryption != *payload.EnableDiskEncryption { - ac.MDM.MacOSSettings.EnableDiskEncryption = *payload.EnableDiskEncryption + if ac.MDM.EnableDiskEncryption.Value != *payload.EnableDiskEncryption { + ac.MDM.EnableDiskEncryption = optjson.SetBool(*payload.EnableDiskEncryption) didUpdate = true didUpdateMacOSDiskEncryption = true } @@ -1729,7 +1729,7 @@ func (svc *Service) updateAppConfigMDMAppleSettings(ctx context.Context, payload } if didUpdateMacOSDiskEncryption { var act fleet.ActivityDetails - if ac.MDM.MacOSSettings.EnableDiskEncryption { + if ac.MDM.EnableDiskEncryption.Value { act = fleet.ActivityTypeEnabledMacosDiskEncryption{} if err := svc.EnterpriseOverrides.MDMAppleEnableFileVaultAndEscrow(ctx, nil); err != nil { return ctxerr.Wrap(ctx, err, "enable no-team filevault and escrow") diff --git a/server/service/apple_mdm_test.go b/server/service/apple_mdm_test.go index 49f941ce3c..8815b63a28 100644 --- a/server/service/apple_mdm_test.go +++ b/server/service/apple_mdm_test.go @@ -697,15 +697,15 @@ func TestHostDetailsMDMProfiles(t *testing.T) { } ds.HostFunc = func(ctx context.Context, hostID uint) (*fleet.Host, error) { if hostID == uint(42) { - return &fleet.Host{ID: uint(42), UUID: "H057-UU1D-1337"}, nil + return &fleet.Host{ID: uint(42), UUID: "H057-UU1D-1337", Platform: "darwin"}, nil } - return &fleet.Host{ID: hostID, UUID: "WR0N6-UU1D"}, nil + return &fleet.Host{ID: hostID, UUID: "WR0N6-UU1D", Platform: "darwin"}, nil } ds.HostByIdentifierFunc = func(ctx context.Context, identifier string) (*fleet.Host, error) { if identifier == "h0571d3n71f13r" { - return &fleet.Host{ID: uint(42), UUID: "H057-UU1D-1337"}, nil + return &fleet.Host{ID: uint(42), UUID: "H057-UU1D-1337", Platform: "darwin"}, nil } - return &fleet.Host{ID: uint(21), UUID: "WR0N6-UU1D"}, nil + return &fleet.Host{ID: uint(21), UUID: "WR0N6-UU1D", Platform: "darwin"}, nil } ds.LoadHostSoftwareFunc = func(ctx context.Context, host *fleet.Host, includeCVEScores bool) error { return nil diff --git a/server/service/handler.go b/server/service/handler.go index aa76a30afa..4b027d44f6 100644 --- a/server/service/handler.go +++ b/server/service/handler.go @@ -448,7 +448,7 @@ func attachFleetAPIRoutes(r *mux.Router, svc fleet.Service, config config.FleetC // Only Fleet MDM specific endpoints should be within the root /mdm/ path. // NOTE: remember to update - // `service.mdmAppleConfigurationRequiredEndpoints` when you add an + // `service.mdmConfigurationRequiredEndpoints` when you add an // endpoint that's behind the mdmConfiguredMiddleware, this applies // both to this set of endpoints and to any public/token-authenticated // endpoints using `neMDM` below in this file. @@ -484,7 +484,7 @@ func attachFleetAPIRoutes(r *mux.Router, svc fleet.Service, config config.FleetC // host-specific mdm routes mdmAppleMW.PATCH("/api/_version_/fleet/mdm/hosts/{id:[0-9]+}/unenroll", mdmAppleCommandRemoveEnrollmentProfileEndpoint, mdmAppleCommandRemoveEnrollmentProfileRequest{}) - mdmAppleMW.GET("/api/_version_/fleet/mdm/hosts/{id:[0-9]+}/encryption_key", getHostEncryptionKey, getHostEncryptionKeyRequest{}) + mdmAppleMW.POST("/api/_version_/fleet/mdm/hosts/{id:[0-9]+}/lock", deviceLockEndpoint, deviceLockRequest{}) mdmAppleMW.POST("/api/_version_/fleet/mdm/hosts/{id:[0-9]+}/wipe", deviceWipeEndpoint, deviceWipeRequest{}) mdmAppleMW.GET("/api/_version_/fleet/mdm/hosts/{id:[0-9]+}/profiles", getHostProfilesEndpoint, getHostProfilesRequest{}) @@ -500,6 +500,10 @@ func attachFleetAPIRoutes(r *mux.Router, svc fleet.Service, config config.FleetC mdmAppleMW.POST("/api/_version_/fleet/mdm/apple/profiles/preassign", preassignMDMAppleProfileEndpoint, preassignMDMAppleProfileRequest{}) mdmAppleMW.POST("/api/_version_/fleet/mdm/apple/profiles/match", matchMDMApplePreassignmentEndpoint, matchMDMApplePreassignmentRequest{}) + mdmAppleOrWinMW := ue.WithCustomMiddleware(mdmConfiguredMiddleware.VerifyAppleOrWindowsMDM()) + mdmAppleOrWinMW.GET("/api/_version_/fleet/mdm/disk_encryption/summary", getMDMDiskEncryptionSummaryEndpoint, getMDMDiskEncryptionSummaryRequest{}) + mdmAppleOrWinMW.GET("/api/_version_/fleet/mdm/hosts/{id:[0-9]+}/encryption_key", getHostEncryptionKey, getHostEncryptionKeyRequest{}) + // the following set of mdm endpoints must always be accessible (even // if MDM is not configured) as it bootstraps the setup of MDM // (generates CSR request for APNs, plus the SCEP and ABM keypairs). @@ -587,6 +591,9 @@ func attachFleetAPIRoutes(r *mux.Router, svc fleet.Service, config config.FleetC oe.POST("/api/fleet/orbit/scripts/request", getOrbitScriptEndpoint, orbitGetScriptRequest{}) oe.POST("/api/fleet/orbit/scripts/result", postOrbitScriptResultEndpoint, orbitPostScriptResultRequest{}) + oeWindowsMDM := oe.WithCustomMiddleware(mdmConfiguredMiddleware.VerifyWindowsMDM()) + oeWindowsMDM.POST("/api/fleet/orbit/disk_encryption_key", postOrbitDiskEncryptionKeyEndpoint, orbitPostDiskEncryptionKeyRequest{}) + // unauthenticated endpoints - most of those are either login-related, // invite-related or host-enrolling. So they typically do some kind of // one-time authentication by verifying that a valid secret token is provided @@ -597,7 +604,7 @@ func attachFleetAPIRoutes(r *mux.Router, svc fleet.Service, config config.FleetC // These endpoint are token authenticated. // NOTE: remember to update - // `service.mdmAppleConfigurationRequiredEndpoints` when you add an + // `service.mdmConfigurationRequiredEndpoints` when you add an // endpoint that's behind the mdmConfiguredMiddleware, this applies // both to this set of endpoints and to any user authenticated // endpoints using `mdmAppleMW.*` above in this file. diff --git a/server/service/hosts.go b/server/service/hosts.go index 840807bde9..db568e87b6 100644 --- a/server/service/hosts.go +++ b/server/service/hosts.go @@ -3,6 +3,7 @@ package service import ( "bytes" "context" + "crypto/tls" "encoding/csv" "encoding/json" "errors" @@ -19,7 +20,7 @@ import ( "github.com/fleetdm/fleet/v4/server/contexts/logging" "github.com/fleetdm/fleet/v4/server/contexts/viewer" "github.com/fleetdm/fleet/v4/server/fleet" - apple_mdm "github.com/fleetdm/fleet/v4/server/mdm/apple" + "github.com/fleetdm/fleet/v4/server/mdm" "github.com/fleetdm/fleet/v4/server/mdm/apple/mobileconfig" "github.com/fleetdm/fleet/v4/server/worker" "github.com/gocarina/gocsv" @@ -918,21 +919,34 @@ func (svc *Service) getHostDetails(ctx context.Context, host *fleet.Host, opts f var profiles []fleet.HostMDMAppleProfile if ac.MDM.EnabledAndConfigured { - profs, err := svc.ds.GetHostMDMProfiles(ctx, host.UUID) - if err != nil { - return nil, ctxerr.Wrap(ctx, err, "get host mdm profiles") - } - - // determine disk encryption and action required here based on profiles and - // raw decryptable key status. - host.MDM.DetermineDiskEncryptionStatus(profs, mobileconfig.FleetFileVaultPayloadIdentifier) - - for _, p := range profs { - if p.Identifier == mobileconfig.FleetFileVaultPayloadIdentifier { - p.Status = host.MDM.ProfileStatusFromDiskEncryptionState(p.Status) + host.MDM.OSSettings = &fleet.HostMDMOSSettings{} + switch host.Platform { + case "windows": + if license.IsPremium(ctx) { + bls, err := svc.ds.GetMDMWindowsBitLockerStatus(ctx, host) + if err != nil { + return nil, ctxerr.Wrap(ctx, err, "get host mdm bitlocker status") + } + host.MDM.OSSettings.DiskEncryption.Status = bls + } + case "darwin": + profs, err := svc.ds.GetHostMDMProfiles(ctx, host.UUID) + if err != nil { + return nil, ctxerr.Wrap(ctx, err, "get host mdm profiles") + } + + // determine disk encryption and action required here based on profiles and + // raw decryptable key status. + host.MDM.DetermineMacOSDiskEncryptionStatus(profs, mobileconfig.FleetFileVaultPayloadIdentifier) + host.MDM.OSSettings.DiskEncryption.Status = host.MDM.MacOSSettings.DiskEncryption + + for _, p := range profs { + if p.Identifier == mobileconfig.FleetFileVaultPayloadIdentifier { + p.Status = host.MDM.ProfileStatusFromDiskEncryptionState(p.Status) + } + p.Detail = fleet.HostMDMProfileDetail(p.Detail).Message() + profiles = append(profiles, p) } - p.Detail = fleet.HostMDMProfileDetail(p.Detail).Message() - profiles = append(profiles, p) } } host.MDM.Profiles = &profiles @@ -1563,25 +1577,48 @@ func (svc *Service) HostEncryptionKey(ctx context.Context, id uint) (*fleet.Host return nil, err } + // The middleware checks that either Apple or Windows MDM are configured and + // enabled, but here we must check if the specific one is enabled for that + // particular host's platform. + var decryptCert *tls.Certificate + switch host.FleetPlatform() { + case "windows": + if err := svc.VerifyMDMWindowsConfigured(ctx); err != nil { + return nil, err + } + + // use Microsoft's WSTEP certificate for decrypting + cert, _, _, err := svc.config.MDM.MicrosoftWSTEP() + if err != nil { + return nil, ctxerr.Wrap(ctx, err, "getting Microsoft WSTEP certificate to decrypt key") + } + decryptCert = cert + + default: + if err := svc.VerifyMDMAppleConfigured(ctx); err != nil { + return nil, err + } + + // use Apple's SCEP certificate for decrypting + cert, _, _, err := svc.config.MDM.AppleSCEP() + if err != nil { + return nil, ctxerr.Wrap(ctx, err, "getting Apple SCEP certificate to decrypt key") + } + decryptCert = cert + } + key, err := svc.ds.GetHostDiskEncryptionKey(ctx, id) if err != nil { return nil, ctxerr.Wrap(ctx, err, "getting host encryption key") } - if key.Decryptable == nil || !*key.Decryptable { - return nil, ctxerr.Wrap(ctx, newNotFoundError(), "getting host encryption key") + return nil, ctxerr.Wrap(ctx, newNotFoundError(), "host encryption key is not decryptable") } - cert, _, _, err := svc.config.MDM.AppleSCEP() + decryptedKey, err := mdm.DecryptBase64CMS(key.Base64Encrypted, decryptCert.Leaf, decryptCert.PrivateKey) if err != nil { - return nil, ctxerr.Wrap(ctx, err, "getting host encryption key") + return nil, ctxerr.Wrap(ctx, err, "decrypt host encryption key") } - - decryptedKey, err := apple_mdm.DecryptBase64CMS(key.Base64Encrypted, cert.Leaf, cert.PrivateKey) - if err != nil { - return nil, ctxerr.Wrap(ctx, err, "getting host encryption key") - } - key.DecryptedValue = string(decryptedKey) err = svc.ds.NewActivity( diff --git a/server/service/hosts_test.go b/server/service/hosts_test.go index e62fe936c6..1b77fa3f70 100644 --- a/server/service/hosts_test.go +++ b/server/service/hosts_test.go @@ -14,6 +14,7 @@ import ( "github.com/WatchBeam/clock" "github.com/fleetdm/fleet/v4/server/authz" "github.com/fleetdm/fleet/v4/server/config" + "github.com/fleetdm/fleet/v4/server/contexts/license" "github.com/fleetdm/fleet/v4/server/contexts/viewer" "github.com/fleetdm/fleet/v4/server/datastore/mysql" "github.com/fleetdm/fleet/v4/server/fleet" @@ -83,7 +84,7 @@ func TestHostDetails(t *testing.T) { require.Nil(t, hostDetail.MDM.MacOSSettings) } -func TestHostDetailsMDMDiskEncryption(t *testing.T) { +func TestHostDetailsMDMAppleDiskEncryption(t *testing.T) { ds := new(mock.Store) svc := &Service{ds: ds} @@ -308,7 +309,7 @@ func TestHostDetailsMDMDiskEncryption(t *testing.T) { } require.NoError(t, mdmData.Scan([]byte(fmt.Sprintf(`{"raw_decryptable": %s}`, rawDecrypt)))) - host := &fleet.Host{ID: 3, MDM: mdmData, UUID: "abc"} + host := &fleet.Host{ID: 3, MDM: mdmData, UUID: "abc", Platform: "darwin"} opts := fleet.HostDetailOptions{ IncludeCVEScores: false, IncludePolicies: false, @@ -322,12 +323,16 @@ func TestHostDetailsMDMDiskEncryption(t *testing.T) { } hostDetail, err := svc.getHostDetails(test.UserContext(context.Background(), test.UserAdmin), host, opts) require.NoError(t, err) + require.NotNil(t, hostDetail.MDM.MacOSSettings) if c.wantState == "" { require.Nil(t, hostDetail.MDM.MacOSSettings.DiskEncryption) + require.Nil(t, hostDetail.MDM.OSSettings.DiskEncryption.Status) } else { require.NotNil(t, hostDetail.MDM.MacOSSettings.DiskEncryption) require.Equal(t, c.wantState, *hostDetail.MDM.MacOSSettings.DiskEncryption) + require.NotNil(t, hostDetail.MDM.OSSettings.DiskEncryption.Status) + require.Equal(t, c.wantState, *hostDetail.MDM.OSSettings.DiskEncryption.Status) } if c.wantAction == "" { require.Nil(t, hostDetail.MDM.MacOSSettings.ActionRequired) @@ -346,6 +351,100 @@ func TestHostDetailsMDMDiskEncryption(t *testing.T) { } } +func TestHostDetailsOSSettings(t *testing.T) { + ds := new(mock.Store) + svc := &Service{ds: ds} + + ctx := context.Background() + + ds.ListLabelsForHostFunc = func(ctx context.Context, hid uint) ([]*fleet.Label, error) { + return nil, nil + } + ds.ListPacksForHostFunc = func(ctx context.Context, hid uint) ([]*fleet.Pack, error) { + return nil, nil + } + ds.LoadHostSoftwareFunc = func(ctx context.Context, host *fleet.Host, includeCVEScores bool) error { + return nil + } + ds.ListPoliciesForHostFunc = func(ctx context.Context, host *fleet.Host) ([]*fleet.HostPolicy, error) { + return nil, nil + } + ds.ListHostBatteriesFunc = func(ctx context.Context, hostID uint) ([]*fleet.HostBattery, error) { + return nil, nil + } + ds.GetHostMDMMacOSSetupFunc = func(ctx context.Context, hid uint) (*fleet.HostMDMMacOSSetup, error) { + return nil, nil + } + + type testCase struct { + name string + host *fleet.Host + licenseTier string + wantStatus fleet.DiskEncryptionStatus + } + cases := []testCase{ + {"windows", &fleet.Host{ID: 42, Platform: "windows"}, fleet.TierPremium, fleet.DiskEncryptionEnforcing}, + {"darwin", &fleet.Host{ID: 42, Platform: "darwin"}, fleet.TierPremium, ""}, + {"ubuntu", &fleet.Host{ID: 42, Platform: "ubuntu"}, fleet.TierPremium, ""}, + {"not premium", &fleet.Host{ID: 42, Platform: "windows"}, fleet.TierFree, ""}, + } + + setupDS := func(c testCase) { + ds.AppConfigFuncInvoked = false + ds.GetMDMWindowsBitLockerStatusFuncInvoked = false + ds.GetHostMDMProfilesFuncInvoked = false + + ds.AppConfigFunc = func(ctx context.Context) (*fleet.AppConfig, error) { + return &fleet.AppConfig{MDM: fleet.MDM{EnabledAndConfigured: true}}, nil + } + ds.GetMDMWindowsBitLockerStatusFunc = func(ctx context.Context, host *fleet.Host) (*fleet.DiskEncryptionStatus, error) { + if c.wantStatus == "" { + return nil, nil + } + return &c.wantStatus, nil + } + ds.GetHostMDMProfilesFunc = func(ctx context.Context, uuid string) ([]fleet.HostMDMAppleProfile, error) { + return nil, nil + } + } + + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + setupDS(c) + + ctx = license.NewContext(ctx, &fleet.LicenseInfo{Tier: c.licenseTier}) + + hostDetail, err := svc.getHostDetails(test.UserContext(ctx, test.UserAdmin), c.host, fleet.HostDetailOptions{ + IncludeCVEScores: false, + IncludePolicies: false, + }) + require.NoError(t, err) + require.NotNil(t, hostDetail) + require.True(t, ds.AppConfigFuncInvoked) + + switch c.host.Platform { + case "windows": + require.False(t, ds.GetHostMDMProfilesFuncInvoked) + if c.wantStatus != "" { + require.True(t, ds.GetMDMWindowsBitLockerStatusFuncInvoked) + require.NotNil(t, hostDetail.MDM.OSSettings.DiskEncryption.Status) + require.Equal(t, c.wantStatus, *hostDetail.MDM.OSSettings.DiskEncryption.Status) + } else { + require.False(t, ds.GetMDMWindowsBitLockerStatusFuncInvoked) + require.Nil(t, hostDetail.MDM.OSSettings.DiskEncryption.Status) + } + case "darwin": + require.True(t, ds.GetHostMDMProfilesFuncInvoked) + require.False(t, ds.GetMDMWindowsBitLockerStatusFuncInvoked) + require.Nil(t, hostDetail.MDM.OSSettings.DiskEncryption.Status) + default: + require.False(t, ds.GetHostMDMProfilesFuncInvoked) + require.False(t, ds.GetMDMWindowsBitLockerStatusFuncInvoked) + } + }) + } +} + func TestHostAuth(t *testing.T) { ds := new(mock.Store) svc, ctx := newTestService(t, ds, nil, nil) @@ -902,9 +1001,18 @@ func TestHostEncryptionKey(t *testing.T) { require.NoError(t, err) base64EncryptedKey := base64.StdEncoding.EncodeToString(encryptedKey) + wstep, _, _, err := fleetCfg.MDM.MicrosoftWSTEP() + require.NoError(t, err) + winEncryptedKey, err := pkcs7.Encrypt([]byte(recoveryKey), []*x509.Certificate{wstep.Leaf}) + require.NoError(t, err) + winBase64EncryptedKey := base64.StdEncoding.EncodeToString(winEncryptedKey) + for _, tt := range cases { t.Run(tt.name, func(t *testing.T) { ds := new(mock.Store) + ds.AppConfigFunc = func(ctx context.Context) (*fleet.AppConfig, error) { + return &fleet.AppConfig{MDM: fleet.MDM{EnabledAndConfigured: true}}, nil + } svc, ctx := newTestServiceWithConfig(t, ds, fleetCfg, nil, nil) ds.HostLiteFunc = func(ctx context.Context, id uint) (*fleet.Host, error) { @@ -951,7 +1059,10 @@ func TestHostEncryptionKey(t *testing.T) { t.Run("test error cases", func(t *testing.T) { ds := new(mock.Store) - svc, ctx := newTestService(t, ds, nil, nil) + ds.AppConfigFunc = func(ctx context.Context) (*fleet.AppConfig, error) { + return &fleet.AppConfig{MDM: fleet.MDM{EnabledAndConfigured: true}}, nil + } + svc, ctx := newTestServiceWithConfig(t, ds, fleetCfg, nil, nil) ctx = test.UserContext(ctx, test.UserAdmin) hostErr := errors.New("host error") @@ -981,6 +1092,56 @@ func TestHostEncryptionKey(t *testing.T) { _, err = svc.HostEncryptionKey(ctx, 1) require.Error(t, err) }) + + t.Run("host platform mdm enabled", func(t *testing.T) { + cases := []struct { + hostPlatform string + macMDMEnabled bool + winMDMEnabled bool + shouldFail bool + }{ + {"windows", true, false, true}, + {"windows", false, true, false}, + {"windows", true, true, false}, + {"darwin", true, false, false}, + {"darwin", false, true, true}, + {"darwin", true, true, false}, + } + for _, c := range cases { + t.Run(fmt.Sprintf("%s: mac mdm: %t; win mdm: %t", c.hostPlatform, c.macMDMEnabled, c.winMDMEnabled), func(t *testing.T) { + ds := new(mock.Store) + ds.AppConfigFunc = func(ctx context.Context) (*fleet.AppConfig, error) { + return &fleet.AppConfig{MDM: fleet.MDM{EnabledAndConfigured: c.macMDMEnabled, WindowsEnabledAndConfigured: c.winMDMEnabled}}, nil + } + ds.HostLiteFunc = func(ctx context.Context, id uint) (*fleet.Host, error) { + return &fleet.Host{Platform: c.hostPlatform}, nil + } + ds.GetHostDiskEncryptionKeyFunc = func(ctx context.Context, id uint) (*fleet.HostDiskEncryptionKey, error) { + key := base64EncryptedKey + if c.hostPlatform == "windows" { + key = winBase64EncryptedKey + } + return &fleet.HostDiskEncryptionKey{ + Base64Encrypted: key, + Decryptable: ptr.Bool(true), + }, nil + } + ds.NewActivityFunc = func(ctx context.Context, user *fleet.User, activity fleet.ActivityDetails) error { + return nil + } + + svc, ctx := newTestServiceWithConfig(t, ds, fleetCfg, nil, nil) + ctx = test.UserContext(ctx, test.UserAdmin) + _, err := svc.HostEncryptionKey(ctx, 1) + if c.shouldFail { + require.Error(t, err) + require.ErrorContains(t, err, fleet.ErrMDMNotConfigured.Error()) + } else { + require.NoError(t, err) + } + }) + } + }) } func TestHostMDMProfileDetail(t *testing.T) { @@ -1005,7 +1166,8 @@ func TestHostMDMProfileDetail(t *testing.T) { ds.HostFunc = func(ctx context.Context, id uint) (*fleet.Host, error) { return &fleet.Host{ - ID: 1, + ID: 1, + Platform: "darwin", }, nil } ds.LoadHostSoftwareFunc = func(ctx context.Context, host *fleet.Host, includeCVEScores bool) error { diff --git a/server/service/integration_core_test.go b/server/service/integration_core_test.go index d3ab73919f..9bc27ec2fd 100644 --- a/server/service/integration_core_test.go +++ b/server/service/integration_core_test.go @@ -4970,11 +4970,18 @@ func (s *integrationTestSuite) TestAppConfig() { // set the macos disk encryption field, fails due to license res := s.Do("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ - "mdm": { "macos_settings": { "enable_disk_encryption": true } } + "mdm": { "enable_disk_encryption": true } }`), http.StatusUnprocessableEntity) errMsg := extractServerErrorText(res.Body) assert.Contains(t, errMsg, "missing or invalid license") + // legacy config + res = s.Do("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ + "mdm": { "macos_settings": { "enable_disk_encryption": true } } + }`), http.StatusUnprocessableEntity) + errMsg = extractServerErrorText(res.Body) + assert.Contains(t, errMsg, "missing or invalid license") + // try to set the apple bm default team, which is premium only s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ "mdm": { "apple_bm_default_team": "xyz" } @@ -6425,6 +6432,16 @@ func (s *integrationTestSuite) TestGetHostDiskEncryption() { s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/hosts/%d", hostLin.ID), nil, http.StatusOK, &getHostResp) require.Equal(t, hostLin.ID, getHostResp.Host.ID) require.Nil(t, getHostResp.Host.DiskEncryptionEnabled) + + // the orbit endpoint to set the disk encryption key always fails in this + // suite because MDM is not configured. + orbitHost := createOrbitEnrolledHost(t, "windows", "diskenc", s.ds) + res := s.Do("POST", "/api/fleet/orbit/disk_encryption_key", orbitPostDiskEncryptionKeyRequest{ + OrbitNodeKey: *orbitHost.OrbitNodeKey, + EncryptionKey: []byte("testkey"), + }, http.StatusBadRequest) + errMsg := extractServerErrorText(res.Body) + require.Contains(t, errMsg, fleet.ErrMDMNotConfigured.Error()) } func (s *integrationTestSuite) TestOSVersions() { @@ -6477,14 +6494,14 @@ func (s *integrationTestSuite) TestPingEndpoints() { s.DoRawNoAuth("HEAD", "/api/fleet/device/ping", nil, http.StatusOK) } -func (s *integrationTestSuite) TestAppleMDMNotConfigured() { +func (s *integrationTestSuite) TestMDMNotConfiguredEndpoints() { t := s.T() // create a host with device token to test device authenticated routes tkn := "D3V1C370K3N" createHostAndDeviceToken(t, s.ds, tkn) - for _, route := range mdmAppleConfigurationRequiredEndpoints() { + for _, route := range mdmConfigurationRequiredEndpoints() { which := fmt.Sprintf("%s %s", route.method, route.path) var expectedErr fleet.ErrWithStatusCode = fleet.ErrMDMNotConfigured if route.premiumOnly && route.deviceAuthenticated { diff --git a/server/service/integration_enterprise_test.go b/server/service/integration_enterprise_test.go index 83f4976de8..60d9093449 100644 --- a/server/service/integration_enterprise_test.go +++ b/server/service/integration_enterprise_test.go @@ -239,7 +239,7 @@ func (s *integrationEnterpriseTestSuite) TestTeamSpecs() { require.NoError(t, err) require.Contains(t, string(*team.Config.AgentOptions), `"foo": "bar"`) // unchanged require.Empty(t, team.Config.MDM.MacOSSettings.CustomSettings) // unchanged - require.False(t, team.Config.MDM.MacOSSettings.EnableDiskEncryption) // unchanged + require.False(t, team.Config.MDM.EnableDiskEncryption) // unchanged // apply without agent options specified teamSpecs = map[string]any{ @@ -764,7 +764,7 @@ func (s *integrationEnterpriseTestSuite) TestTeamEndpoints() { // modify team's disk encryption, impossible without mdm enabled res := s.Do("PATCH", fmt.Sprintf("/api/latest/fleet/teams/%d", tm1ID), fleet.TeamPayload{ MDM: &fleet.TeamPayloadMDM{ - MacOSSettings: &fleet.MacOSSettings{EnableDiskEncryption: true}, + EnableDiskEncryption: optjson.SetBool(true), }, }, http.StatusUnprocessableEntity) errMsg := extractServerErrorText(res.Body) @@ -2532,14 +2532,14 @@ func (s *integrationEnterpriseTestSuite) TestListHosts() { require.Nil(t, summaryResp.LowDiskSpaceCount) } -func (s *integrationEnterpriseTestSuite) TestAppleMDMNotConfigured() { +func (s *integrationEnterpriseTestSuite) TestMDMNotConfiguredEndpoints() { t := s.T() // create a host with device token to test device authenticated routes tkn := "D3V1C370K3N" createHostAndDeviceToken(t, s.ds, tkn) - for _, route := range mdmAppleConfigurationRequiredEndpoints() { + for _, route := range mdmConfigurationRequiredEndpoints() { var expectedErr fleet.ErrWithStatusCode = fleet.ErrMDMNotConfigured path := route.path if route.deviceAuthenticated { diff --git a/server/service/integration_mdm_test.go b/server/service/integration_mdm_test.go index ddf83f81a2..618d6c2dcd 100644 --- a/server/service/integration_mdm_test.go +++ b/server/service/integration_mdm_test.go @@ -32,6 +32,7 @@ import ( "github.com/fleetdm/fleet/v4/server/datastore/mysql" "github.com/fleetdm/fleet/v4/server/datastore/redis/redistest" "github.com/fleetdm/fleet/v4/server/fleet" + servermdm "github.com/fleetdm/fleet/v4/server/mdm" apple_mdm "github.com/fleetdm/fleet/v4/server/mdm/apple" "github.com/fleetdm/fleet/v4/server/mdm/apple/mobileconfig" microsoft_mdm "github.com/fleetdm/fleet/v4/server/mdm/microsoft" @@ -238,7 +239,7 @@ func (s *integrationMDMTestSuite) TearDownTest() { // ensure windows mdm is always enabled for the next test appCfg.MDM.WindowsEnabledAndConfigured = true // ensure global disk encryption is disabled on exit - appCfg.MDM.MacOSSettings.EnableDiskEncryption = false + appCfg.MDM.EnableDiskEncryption = optjson.SetBool(false) err := s.ds.SaveAppConfig(ctx, &appCfg.AppConfig) require.NoError(t, err) @@ -1059,7 +1060,7 @@ func (s *integrationMDMTestSuite) TestPuppetMatchPreassignProfiles() { require.Equal(t, prof1, []byte(profs[0].Mobileconfig)) require.Equal(t, prof2, []byte(profs[1].Mobileconfig)) // filevault is enabled by default - require.True(t, tm1.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, tm1.Config.MDM.EnableDiskEncryption) // setup assistant settings are copyied from "no team" teamAsst, err := s.ds.GetMDMAppleSetupAssistant(ctx, &tm1.ID) require.NoError(t, err) @@ -1146,7 +1147,7 @@ func (s *integrationMDMTestSuite) TestPuppetMatchPreassignProfiles() { // simulate having its profiles installed mysql.ExecAdhocSQL(t, s.ds, func(q sqlx.ExtContext) error { - _, err := q.ExecContext(ctx, `UPDATE host_mdm_apple_profiles SET status = ? WHERE host_uuid = ?`, fleet.MacOSSettingsVerifying, mdmHost2.UUID) + _, err := q.ExecContext(ctx, `UPDATE host_mdm_apple_profiles SET status = ? WHERE host_uuid = ?`, fleet.OSSettingsVerifying, mdmHost2.UUID) return err }) @@ -1297,7 +1298,7 @@ func (s *integrationMDMTestSuite) TestPuppetRun() { require.Equal(t, prof1, []byte(profs[0].Mobileconfig)) require.Equal(t, prof2, []byte(profs[1].Mobileconfig)) require.Equal(t, prof3, []byte(profs[2].Mobileconfig)) - require.True(t, tm1.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, tm1.Config.MDM.EnableDiskEncryption) // host2 checks in puppetRun(host2) @@ -1318,7 +1319,7 @@ func (s *integrationMDMTestSuite) TestPuppetRun() { require.Equal(t, prof2, []byte(profs[1].Mobileconfig)) require.Equal(t, prof3, []byte(profs[2].Mobileconfig)) require.Equal(t, prof4, []byte(profs[3].Mobileconfig)) - require.True(t, tm2.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, tm2.Config.MDM.EnableDiskEncryption) // host3 checks in puppetRun(host3) @@ -1345,7 +1346,7 @@ func (s *integrationMDMTestSuite) TestPuppetRun() { require.Equal(t, prof2, []byte(profs[1].Mobileconfig)) require.Equal(t, prof3, []byte(profs[2].Mobileconfig)) require.NotEqual(t, oldProf2, []byte(profs[1].Mobileconfig)) - require.True(t, tm1.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, tm1.Config.MDM.EnableDiskEncryption) // host2 checks in, still belongs to the same team puppetRun(host2) @@ -1362,7 +1363,7 @@ func (s *integrationMDMTestSuite) TestPuppetRun() { require.Equal(t, prof3, []byte(profs[2].Mobileconfig)) require.Equal(t, prof4, []byte(profs[3].Mobileconfig)) require.NotEqual(t, oldProf2, []byte(profs[1].Mobileconfig)) - require.True(t, tm1.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, tm1.Config.MDM.EnableDiskEncryption) // the puppet manifest is changed, and prof3 is removed // node default { @@ -1423,7 +1424,7 @@ func (s *integrationMDMTestSuite) TestPuppetRun() { require.Len(t, profs, 2) require.Equal(t, prof1, []byte(profs[0].Mobileconfig)) require.Equal(t, prof2, []byte(profs[1].Mobileconfig)) - require.True(t, tm1.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, tm1.Config.MDM.EnableDiskEncryption) // same for host2 puppetRun(host2) @@ -1436,7 +1437,7 @@ func (s *integrationMDMTestSuite) TestPuppetRun() { require.Equal(t, prof1, []byte(profs[0].Mobileconfig)) require.Equal(t, prof2, []byte(profs[1].Mobileconfig)) require.Equal(t, prof4, []byte(profs[2].Mobileconfig)) - require.True(t, tm1.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, tm1.Config.MDM.EnableDiskEncryption) // The puppet manifest is drastically updated, this time to use exclusions on host3: // @@ -1515,7 +1516,7 @@ func (s *integrationMDMTestSuite) TestPuppetRun() { require.Equal(t, prof1, []byte(profs[0].Mobileconfig)) require.Equal(t, prof2, []byte(profs[1].Mobileconfig)) require.Equal(t, prof3, []byte(profs[2].Mobileconfig)) - require.True(t, tm1.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, tm1.Config.MDM.EnableDiskEncryption) // host2 checks in puppetRun(host2) @@ -1544,7 +1545,7 @@ func (s *integrationMDMTestSuite) TestPuppetRun() { require.Len(t, profs, 2) require.Equal(t, prof1, []byte(profs[0].Mobileconfig)) require.Equal(t, prof2, []byte(profs[1].Mobileconfig)) - require.True(t, tm3.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, tm3.Config.MDM.EnableDiskEncryption) } func createHostThenEnrollMDM(ds fleet.Datastore, fleetServerURL string, t *testing.T) (*fleet.Host, *mdmtest.TestMDMClient) { @@ -2174,6 +2175,261 @@ func (s *integrationMDMTestSuite) TestMDMAppleUnenroll() { require.Equal(t, "", hostResp.Host.MDM.Name) } +func (s *integrationMDMTestSuite) TestMDMDiskEncryptionSettingBackwardsCompat() { + t := s.T() + + acResp := appConfigResponse{} + s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ + "mdm": { "enable_disk_encryption": false } + }`), http.StatusOK, &acResp) + assert.False(t, acResp.MDM.EnableDiskEncryption.Value) + + // new config takes precedence over old config + acResp = appConfigResponse{} + s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ + "mdm": { "enable_disk_encryption": false, "macos_settings": {"enable_disk_encryption": true} } + }`), http.StatusOK, &acResp) + assert.False(t, acResp.MDM.EnableDiskEncryption.Value) + + s.assertConfigProfilesByIdentifier(nil, mobileconfig.FleetFileVaultPayloadIdentifier, false) + + // if new config is not present, old config is applied + acResp = appConfigResponse{} + s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ + "mdm": { "macos_settings": {"enable_disk_encryption": true} } + }`), http.StatusOK, &acResp) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) + s.assertConfigProfilesByIdentifier(nil, mobileconfig.FleetFileVaultPayloadIdentifier, true) + + // new config takes precedence over old config again + acResp = appConfigResponse{} + s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ + "mdm": { "enable_disk_encryption": false, "macos_settings": {"enable_disk_encryption": true} } + }`), http.StatusOK, &acResp) + assert.False(t, acResp.MDM.EnableDiskEncryption.Value) + s.assertConfigProfilesByIdentifier(nil, mobileconfig.FleetFileVaultPayloadIdentifier, false) + + // unrelated change doesn't affect the disk encryption setting + acResp = appConfigResponse{} + s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ + "mdm": { "macos_settings": {"custom_settings": ["test.mobileconfig"]} } + }`), http.StatusOK, &acResp) + assert.False(t, acResp.MDM.EnableDiskEncryption.Value) + + // Same tests, but for teams + team, err := s.ds.NewTeam(context.Background(), &fleet.Team{ + Name: "team1_" + t.Name(), + Description: "desc team1_" + t.Name(), + }) + require.NoError(t, err) + + checkTeamDiskEncryption := func(wantSetting bool) { + var teamResp getTeamResponse + s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/teams/%d", team.ID), nil, http.StatusOK, &teamResp) + require.Equal(t, wantSetting, teamResp.Team.Config.MDM.EnableDiskEncryption) + } + + // after creation, disk encryption is off + checkTeamDiskEncryption(false) + + // new config takes precedence over old config + teamSpecs := applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ + Name: team.Name, + MDM: fleet.TeamSpecMDM{ + EnableDiskEncryption: optjson.SetBool(false), + MacOSSettings: map[string]interface{}{"enable_disk_encryption": true}, + }, + }}} + s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) + checkTeamDiskEncryption(false) + s.assertConfigProfilesByIdentifier(ptr.Uint(team.ID), mobileconfig.FleetFileVaultPayloadIdentifier, false) + + // if new config is not present, old config is applied + teamSpecs = applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ + Name: team.Name, + MDM: fleet.TeamSpecMDM{ + MacOSSettings: map[string]interface{}{"enable_disk_encryption": true}, + }, + }}} + s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) + checkTeamDiskEncryption(true) + s.assertConfigProfilesByIdentifier(ptr.Uint(team.ID), mobileconfig.FleetFileVaultPayloadIdentifier, true) + + // new config takes precedence over old config again + teamSpecs = applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ + Name: team.Name, + MDM: fleet.TeamSpecMDM{ + EnableDiskEncryption: optjson.SetBool(false), + MacOSSettings: map[string]interface{}{"enable_disk_encryption": true}, + }, + }}} + s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) + checkTeamDiskEncryption(false) + s.assertConfigProfilesByIdentifier(ptr.Uint(team.ID), mobileconfig.FleetFileVaultPayloadIdentifier, false) + + // unrelated change doesn't affect the disk encryption setting + teamSpecs = applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ + Name: team.Name, + MDM: fleet.TeamSpecMDM{ + EnableDiskEncryption: optjson.SetBool(false), + MacOSSettings: map[string]interface{}{"custom_settings": []interface{}{"A", "B"}}, + }, + }}} + s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) + checkTeamDiskEncryption(false) + s.assertConfigProfilesByIdentifier(ptr.Uint(team.ID), mobileconfig.FleetFileVaultPayloadIdentifier, false) +} + +func (s *integrationMDMTestSuite) TestDiskEncryptionSharedSetting() { + t := s.T() + + // create a team + teamName := t.Name() + team := &fleet.Team{ + Name: teamName, + Description: "desc " + teamName, + } + var createTeamResp teamResponse + s.DoJSON("POST", "/api/latest/fleet/teams", team, http.StatusOK, &createTeamResp) + require.NotZero(t, createTeamResp.Team.ID) + + setMDMEnabled := func(macMDM, windowsMDM bool) { + appConf, err := s.ds.AppConfig(context.Background()) + require.NoError(s.T(), err) + appConf.MDM.WindowsEnabledAndConfigured = windowsMDM + appConf.MDM.EnabledAndConfigured = macMDM + err = s.ds.SaveAppConfig(context.Background(), appConf) + require.NoError(s.T(), err) + } + + // before doing any modifications, grab the current values and make + // sure they're set to the same ones on cleanup to not interfere with + // other tests. + origAppConf, err := s.ds.AppConfig(context.Background()) + require.NoError(s.T(), err) + t.Cleanup(func() { + err := s.ds.SaveAppConfig(context.Background(), origAppConf) + require.NoError(s.T(), err) + }) + + checkConfigSetErrors := func() { + // try to set app config + res := s.Do("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ + "mdm": { "enable_disk_encryption": true } + }`), http.StatusUnprocessableEntity) + errMsg := extractServerErrorText(res.Body) + require.Contains(t, errMsg, "Couldn't edit enable_disk_encryption. Neither macOS MDM nor Windows is turned on. Visit https://fleetdm.com/docs/using-fleet to learn how to turn on MDM.") + + // try to create a new team using specs + teamSpecs := map[string]any{ + "specs": []any{ + map[string]any{ + "name": teamName + uuid.NewString(), + "mdm": map[string]any{ + "enable_disk_encryption": true, + }, + }, + }, + } + res = s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusUnprocessableEntity) + errMsg = extractServerErrorText(res.Body) + require.Contains(t, errMsg, "Couldn't edit enable_disk_encryption. Neither macOS MDM nor Windows is turned on. Visit https://fleetdm.com/docs/using-fleet to learn how to turn on MDM.") + + // try to edit the existing team using specs + teamSpecs = map[string]any{ + "specs": []any{ + map[string]any{ + "name": teamName, + "mdm": map[string]any{ + "enable_disk_encryption": true, + }, + }, + }, + } + res = s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusUnprocessableEntity) + errMsg = extractServerErrorText(res.Body) + require.Contains(t, errMsg, "Couldn't edit enable_disk_encryption. Neither macOS MDM nor Windows is turned on. Visit https://fleetdm.com/docs/using-fleet to learn how to turn on MDM.") + } + + checkConfigSetSucceeds := func() { + res := s.Do("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ + "mdm": { "enable_disk_encryption": true } + }`), http.StatusOK) + errMsg := extractServerErrorText(res.Body) + require.Empty(t, errMsg) + + // try to create a new team using specs + teamSpecs := map[string]any{ + "specs": []any{ + map[string]any{ + "name": teamName + uuid.NewString(), + "mdm": map[string]any{ + "enable_disk_encryption": true, + }, + }, + }, + } + res = s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) + errMsg = extractServerErrorText(res.Body) + require.Empty(t, errMsg) + + // edit the existing team using specs + teamSpecs = map[string]any{ + "specs": []any{ + map[string]any{ + "name": teamName, + "mdm": map[string]any{ + "enable_disk_encryption": true, + }, + }, + }, + } + res = s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) + errMsg = extractServerErrorText(res.Body) + require.Empty(t, errMsg) + + // always try to set the value to `false` so we start fresh + s.Do("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ + "mdm": { "enable_disk_encryption": false } + }`), http.StatusOK) + teamSpecs = map[string]any{ + "specs": []any{ + map[string]any{ + "name": teamName, + "mdm": map[string]any{ + "enable_disk_encryption": false, + }, + }, + }, + } + s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) + } + + // 1. disable both windows and mac mdm + // 2. turn off windows feature flag + // we should get an error + setMDMEnabled(false, false) + t.Setenv("FLEET_DEV_MDM_ENABLED", "0") + checkConfigSetErrors() + + // turn on windows feature flag + // we should get an error + t.Setenv("FLEET_DEV_MDM_ENABLED", "1") + checkConfigSetErrors() + + // enable windows mdm, no errors + setMDMEnabled(false, true) + checkConfigSetSucceeds() + + // enable mac mdm, no errors + setMDMEnabled(true, true) + checkConfigSetSucceeds() + + // only macos mdm enabled, no errors + setMDMEnabled(true, false) + checkConfigSetSucceeds() +} + func (s *integrationMDMTestSuite) TestMDMAppleGetEncryptionKey() { t := s.T() ctx := context.Background() @@ -2196,9 +2452,9 @@ func (s *integrationMDMTestSuite) TestMDMAppleGetEncryptionKey() { acResp := appConfigResponse{} s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ - "mdm": { "macos_settings": { "enable_disk_encryption": true } } + "mdm": { "enable_disk_encryption": true } }`), http.StatusOK, &acResp) - assert.True(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) fileVaultProf := s.assertConfigProfilesByIdentifier(nil, mobileconfig.FleetFileVaultPayloadIdentifier, true) hostCmdUUID := uuid.New().String() err = s.ds.BulkUpsertMDMAppleHostProfiles(ctx, []*fleet.MDMAppleBulkUpsertHostProfilePayload{ @@ -2246,7 +2502,7 @@ func (s *integrationMDMTestSuite) TestMDMAppleGetEncryptionKey() { require.NoError(t, err) base64EncryptedKey := base64.StdEncoding.EncodeToString(encryptedKey) - err = s.ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, base64EncryptedKey) + err = s.ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, base64EncryptedKey, "", nil) require.NoError(t, err) // get that host - it has an encryption key with unknown decryptability, so @@ -2321,7 +2577,7 @@ func (s *integrationMDMTestSuite) TestMDMAppleGetEncryptionKey() { teamSpecs := applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ Name: "team1_" + t.Name(), MDM: fleet.TeamSpecMDM{ - MacOSSettings: map[string]interface{}{"enable_disk_encryption": true}, + EnableDiskEncryption: optjson.SetBool(true), }, }}} s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) @@ -2420,6 +2676,52 @@ func (s *integrationMDMTestSuite) TestMDMAppleGetEncryptionKey() { s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/mdm/hosts/%d/encryption_key", host.ID), nil, http.StatusForbidden, &resp) } +func (s *integrationMDMTestSuite) TestWindowsMDMGetEncryptionKey() { + t := s.T() + ctx := context.Background() + + // create a host and enroll it in Fleet + host := createOrbitEnrolledHost(t, "windows", "h1", s.ds) + err := s.ds.SetOrUpdateMDMData(ctx, host.ID, false, true, s.server.URL, false, fleet.WellKnownMDMFleet) + require.NoError(t, err) + + // request encryption key with no auth token + res := s.DoRawNoAuth("GET", fmt.Sprintf("/api/latest/fleet/mdm/hosts/%d/encryption_key", host.ID), nil, http.StatusUnauthorized) + res.Body.Close() + + // no encryption key + resp := getHostEncryptionKeyResponse{} + s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/mdm/hosts/%d/encryption_key", host.ID), nil, http.StatusNotFound, &resp) + + // invalid host id + resp = getHostEncryptionKeyResponse{} + s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/mdm/hosts/%d/encryption_key", host.ID+999), nil, http.StatusNotFound, &resp) + + // add an encryption key for the host + cert, _, _, err := s.fleetCfg.MDM.MicrosoftWSTEP() + require.NoError(t, err) + recoveryKey := "AAA-BBB-CCC" + encryptedKey, err := microsoft_mdm.Encrypt(recoveryKey, cert.Leaf) + require.NoError(t, err) + + err = s.ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, encryptedKey, "", ptr.Bool(true)) + require.NoError(t, err) + + resp = getHostEncryptionKeyResponse{} + s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/mdm/hosts/%d/encryption_key", host.ID), nil, http.StatusOK, &resp) + require.Equal(t, host.ID, resp.HostID) + require.Equal(t, recoveryKey, resp.EncryptionKey.DecryptedValue) + s.lastActivityOfTypeMatches(fleet.ActivityTypeReadHostDiskEncryptionKey{}.ActivityName(), + fmt.Sprintf(`{"host_display_name": "%s", "host_id": %d}`, host.DisplayName(), host.ID), 0) + + // update the key to blank with a client error + err = s.ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "", "failed", nil) + require.NoError(t, err) + + resp = getHostEncryptionKeyResponse{} + s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/mdm/hosts/%d/encryption_key", host.ID), nil, http.StatusNotFound, &resp) +} + func (s *integrationMDMTestSuite) TestMDMAppleListConfigProfiles() { t := s.T() ctx := context.Background() @@ -2663,9 +2965,9 @@ func (s *integrationMDMTestSuite) TestMDMAppleConfigProfileCRUD() { // make fleet add a FileVault profile acResp := appConfigResponse{} s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ - "mdm": { "macos_settings": { "enable_disk_encryption": true } } + "mdm": { "enable_disk_encryption": true } }`), http.StatusOK, &acResp) - assert.True(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) profile := s.assertConfigProfilesByIdentifier(nil, mobileconfig.FleetFileVaultPayloadIdentifier, true) // try to delete the profile @@ -2693,7 +2995,7 @@ func (s *integrationMDMTestSuite) TestAppConfigMDMAppleProfiles() { // field, should not remove them acResp = appConfigResponse{} s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ - "mdm": { "macos_settings": {"enable_disk_encryption": true} } + "mdm": { "enable_disk_encryption": true } }`), http.StatusOK, &acResp) assert.Equal(t, []string{"foo", "bar"}, acResp.MDM.MacOSSettings.CustomSettings) @@ -2719,9 +3021,9 @@ func (s *integrationMDMTestSuite) TestAppConfigMDMAppleDiskEncryption() { // set the macos disk encryption field acResp := appConfigResponse{} s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ - "mdm": { "macos_settings": { "enable_disk_encryption": true } } + "mdm": { "enable_disk_encryption": true } }`), http.StatusOK, &acResp) - assert.True(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) enabledDiskActID := s.lastActivityMatches(fleet.ActivityTypeEnabledMacosDiskEncryption{}.ActivityName(), `{"team_id": null, "team_name": null}`, 0) @@ -2731,7 +3033,7 @@ func (s *integrationMDMTestSuite) TestAppConfigMDMAppleDiskEncryption() { // check that they are returned by a GET /config acResp = appConfigResponse{} s.DoJSON("GET", "/api/latest/fleet/config", nil, http.StatusOK, &acResp) - assert.True(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) // patch without specifying the macos disk encryption and an unrelated field, // should not alter it @@ -2739,7 +3041,7 @@ func (s *integrationMDMTestSuite) TestAppConfigMDMAppleDiskEncryption() { s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ "mdm": { "macos_settings": {"custom_settings": ["a"]} } }`), http.StatusOK, &acResp) - assert.True(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) assert.Equal(t, []string{"a"}, acResp.MDM.MacOSSettings.CustomSettings) s.lastActivityMatches(fleet.ActivityTypeEnabledMacosDiskEncryption{}.ActivityName(), ``, enabledDiskActID) @@ -2747,9 +3049,9 @@ func (s *integrationMDMTestSuite) TestAppConfigMDMAppleDiskEncryption() { // patch with false, would reset it but this is a dry-run acResp = appConfigResponse{} s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ - "mdm": { "macos_settings": { "enable_disk_encryption": false } } + "mdm": { "enable_disk_encryption": false } }`), http.StatusOK, &acResp, "dry_run", "true") - assert.True(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) assert.Equal(t, []string{"a"}, acResp.MDM.MacOSSettings.CustomSettings) s.lastActivityMatches(fleet.ActivityTypeEnabledMacosDiskEncryption{}.ActivityName(), ``, enabledDiskActID) @@ -2757,9 +3059,9 @@ func (s *integrationMDMTestSuite) TestAppConfigMDMAppleDiskEncryption() { // patch with false, resets it acResp = appConfigResponse{} s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ - "mdm": { "macos_settings": { "enable_disk_encryption": false, "custom_settings": ["b"] } } + "mdm": { "enable_disk_encryption": false, "macos_settings": { "custom_settings": ["b"] } } }`), http.StatusOK, &acResp) - assert.False(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.False(t, acResp.MDM.EnableDiskEncryption.Value) assert.Equal(t, []string{"b"}, acResp.MDM.MacOSSettings.CustomSettings) s.lastActivityMatches(fleet.ActivityTypeDisabledMacosDiskEncryption{}.ActivityName(), `{"team_id": null, "team_name": null}`, 0) @@ -2778,7 +3080,7 @@ func (s *integrationMDMTestSuite) TestAppConfigMDMAppleDiskEncryption() { acResp = appConfigResponse{} s.DoJSON("GET", "/api/latest/fleet/config", nil, http.StatusOK, &acResp) - assert.True(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) assert.Equal(t, []string{"b"}, acResp.MDM.MacOSSettings.CustomSettings) // call update endpoint with no changes @@ -2792,7 +3094,7 @@ func (s *integrationMDMTestSuite) TestAppConfigMDMAppleDiskEncryption() { acResp = appConfigResponse{} s.DoJSON("GET", "/api/latest/fleet/config", nil, http.StatusOK, &acResp) - assert.True(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) assert.Equal(t, []string{"b"}, acResp.MDM.MacOSSettings.CustomSettings) } @@ -2856,7 +3158,7 @@ func (s *integrationMDMTestSuite) TestMDMAppleDiskEncryptionAggregate() { }) require.NoError(t, err) oneMinuteAfterThreshold := time.Now().Add(+1 * time.Minute) - err = s.ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "test-key") + err = s.ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, "test-key", "", nil) require.NoError(t, err) err = s.ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{host.ID}, decryptable, oneMinuteAfterThreshold) require.NoError(t, err) @@ -3043,7 +3345,7 @@ func (s *integrationMDMTestSuite) TestApplyTeamsMDMAppleProfiles() { teamSpecs = applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ Name: teamName, MDM: fleet.TeamSpecMDM{ - MacOSSettings: map[string]interface{}{"enable_disk_encryption": false}, + EnableDiskEncryption: optjson.SetBool(false), }, }}} s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) @@ -3098,7 +3400,7 @@ func (s *integrationMDMTestSuite) TestTeamsMDMAppleDiskEncryption() { teamSpecs := applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ Name: teamName, MDM: fleet.TeamSpecMDM{ - MacOSSettings: map[string]interface{}{"enable_disk_encryption": true}, + EnableDiskEncryption: optjson.SetBool(true), }, }}} s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) @@ -3111,7 +3413,7 @@ func (s *integrationMDMTestSuite) TestTeamsMDMAppleDiskEncryption() { // retrieving the team returns the disk encryption setting var teamResp getTeamResponse s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/teams/%d", team.ID), nil, http.StatusOK, &teamResp) - require.True(t, teamResp.Team.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, teamResp.Team.Config.MDM.EnableDiskEncryption) // apply with invalid disk encryption value should fail teamSpecs = applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ @@ -3142,7 +3444,7 @@ func (s *integrationMDMTestSuite) TestTeamsMDMAppleDiskEncryption() { s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) teamResp = getTeamResponse{} s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/teams/%d", team.ID), nil, http.StatusOK, &teamResp) - require.True(t, teamResp.Team.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, teamResp.Team.Config.MDM.EnableDiskEncryption) require.Equal(t, []string{"a"}, teamResp.Team.Config.MDM.MacOSSettings.CustomSettings) s.lastActivityOfTypeMatches(fleet.ActivityTypeEnabledMacosDiskEncryption{}.ActivityName(), ``, lastDiskActID) @@ -3151,13 +3453,13 @@ func (s *integrationMDMTestSuite) TestTeamsMDMAppleDiskEncryption() { teamSpecs = applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ Name: teamName, MDM: fleet.TeamSpecMDM{ - MacOSSettings: map[string]interface{}{"enable_disk_encryption": false}, + EnableDiskEncryption: optjson.SetBool(false), }, }}} s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK, "dry_run", "true") teamResp = getTeamResponse{} s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/teams/%d", team.ID), nil, http.StatusOK, &teamResp) - require.True(t, teamResp.Team.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, teamResp.Team.Config.MDM.EnableDiskEncryption) s.lastActivityOfTypeMatches(fleet.ActivityTypeEnabledMacosDiskEncryption{}.ActivityName(), ``, lastDiskActID) @@ -3171,7 +3473,7 @@ func (s *integrationMDMTestSuite) TestTeamsMDMAppleDiskEncryption() { s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) teamResp = getTeamResponse{} s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/teams/%d", team.ID), nil, http.StatusOK, &teamResp) - require.False(t, teamResp.Team.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.False(t, teamResp.Team.Config.MDM.EnableDiskEncryption) s.lastActivityOfTypeMatches(fleet.ActivityTypeDisabledMacosDiskEncryption{}.ActivityName(), fmt.Sprintf(`{"team_id": %d, "team_name": %q}`, team.ID, teamName), 0) @@ -3182,10 +3484,11 @@ func (s *integrationMDMTestSuite) TestTeamsMDMAppleDiskEncryption() { var modResp teamResponse s.DoJSON("PATCH", fmt.Sprintf("/api/latest/fleet/teams/%d", team.ID), fleet.TeamPayload{ MDM: &fleet.TeamPayloadMDM{ - MacOSSettings: &fleet.MacOSSettings{EnableDiskEncryption: true}, + EnableDiskEncryption: optjson.SetBool(true), + MacOSSettings: &fleet.MacOSSettings{}, }, }, http.StatusOK, &modResp) - require.True(t, modResp.Team.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, modResp.Team.Config.MDM.EnableDiskEncryption) s.lastActivityOfTypeMatches(fleet.ActivityTypeEnabledMacosDiskEncryption{}.ActivityName(), fmt.Sprintf(`{"team_id": %d, "team_name": %q}`, team.ID, teamName), 0) @@ -3197,10 +3500,10 @@ func (s *integrationMDMTestSuite) TestTeamsMDMAppleDiskEncryption() { s.DoJSON("PATCH", fmt.Sprintf("/api/latest/fleet/teams/%d", team.ID), fleet.TeamPayload{ Description: ptr.String("foobar"), MDM: &fleet.TeamPayloadMDM{ - MacOSSettings: &fleet.MacOSSettings{EnableDiskEncryption: false}, + EnableDiskEncryption: optjson.SetBool(false), }, }, http.StatusOK, &modResp) - require.False(t, modResp.Team.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.False(t, modResp.Team.Config.MDM.EnableDiskEncryption) require.Equal(t, "foobar", modResp.Team.Description) s.lastActivityOfTypeMatches(fleet.ActivityTypeDisabledMacosDiskEncryption{}.ActivityName(), fmt.Sprintf(`{"team_id": %d, "team_name": %q}`, team.ID, teamName), 0) @@ -3219,7 +3522,7 @@ func (s *integrationMDMTestSuite) TestTeamsMDMAppleDiskEncryption() { teamResp = getTeamResponse{} s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/teams/%d", team.ID), nil, http.StatusOK, &teamResp) - require.True(t, teamResp.Team.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, teamResp.Team.Config.MDM.EnableDiskEncryption) // use the MDM settings endpoint with no changes s.Do("PATCH", "/api/latest/fleet/mdm/apple/settings", @@ -3232,7 +3535,7 @@ func (s *integrationMDMTestSuite) TestTeamsMDMAppleDiskEncryption() { teamResp = getTeamResponse{} s.DoJSON("GET", fmt.Sprintf("/api/latest/fleet/teams/%d", team.ID), nil, http.StatusOK, &teamResp) - require.True(t, teamResp.Team.Config.MDM.MacOSSettings.EnableDiskEncryption) + require.True(t, teamResp.Team.Config.MDM.EnableDiskEncryption) // use the MDM settings endpoint with an unknown team id s.Do("PATCH", "/api/latest/fleet/mdm/apple/settings", @@ -3449,7 +3752,7 @@ func (s *integrationMDMTestSuite) TestHostMDMProfilesStatus() { // profile deployment is asynchronous, so we simulate it here by // updating any "pending" (not NULL) profiles to "verifying" mysql.ExecAdhocSQL(t, s.ds, func(q sqlx.ExtContext) error { - _, err := q.ExecContext(ctx, `UPDATE host_mdm_apple_profiles SET status = ? WHERE status = ?`, fleet.MacOSSettingsVerifying, fleet.MacOSSettingsPending) + _, err := q.ExecContext(ctx, `UPDATE host_mdm_apple_profiles SET status = ? WHERE status = ?`, fleet.OSSettingsVerifying, fleet.OSSettingsPending) return err }) } @@ -5381,9 +5684,9 @@ func (s *integrationMDMTestSuite) TestGitOpsUserActions() { // Attempt to edit global MDM settings, should allow. acResp := appConfigResponse{} s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ - "mdm": { "macos_settings": { "enable_disk_encryption": true } } + "mdm": { "enable_disk_encryption": true } }`), http.StatusOK, &acResp) - assert.True(t, acResp.MDM.MacOSSettings.EnableDiskEncryption) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) // Attempt to setup Apple MDM, will fail but the important thing is that it // fails with 422 (cannot enable end user auth because no IdP is configured) @@ -5407,9 +5710,9 @@ func (s *integrationMDMTestSuite) TestGitOpsUserActions() { teamSpecs := applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ Name: t1.Name, MDM: fleet.TeamSpecMDM{ + EnableDiskEncryption: optjson.SetBool(true), MacOSSettings: map[string]interface{}{ - "enable_disk_encryption": true, - "custom_settings": []interface{}{"foo", "bar"}, + "custom_settings": []interface{}{"foo", "bar"}, }, }, }}} @@ -5434,9 +5737,9 @@ func (s *integrationMDMTestSuite) TestGitOpsUserActions() { teamSpecs = applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ Name: t1.Name, MDM: fleet.TeamSpecMDM{ + EnableDiskEncryption: optjson.SetBool(true), MacOSSettings: map[string]interface{}{ - "enable_disk_encryption": true, - "custom_settings": []interface{}{"foo", "bar"}, + "custom_settings": []interface{}{"foo", "bar"}, }, }, }}} @@ -5590,7 +5893,7 @@ func (s *integrationMDMTestSuite) TestSSO() { // field, should not remove them acResp = appConfigResponse{} s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ - "mdm": { "macos_settings": {"enable_disk_encryption": true} } + "mdm": { "enable_disk_encryption": true } }`), http.StatusOK, &acResp) assert.Equal(t, wantSettings, acResp.MDM.EndUserAuthentication.SSOProviderSettings) @@ -6703,8 +7006,28 @@ func (s *integrationMDMTestSuite) TestValidSyncMLRequestNoAuth() { // Target Endpoint URL for the management endpoint targetEndpointURL := microsoft_mdm.MDE2ManagementPath + // Target DeviceID to use + deviceID := "DB257C3A08778F4FB61E2749066C1F27" + + // Inserting new device + enrolledDevice := &fleet.MDMWindowsEnrolledDevice{ + MDMDeviceID: deviceID, + MDMHardwareID: uuid.New().String() + uuid.New().String(), + MDMDeviceState: uuid.New().String(), + MDMDeviceType: "CIMClient_Windows", + MDMDeviceName: "DESKTOP-1C3ARC1", + MDMEnrollType: "ProgrammaticEnrollment", + MDMEnrollUserID: "upn@domain.com", + MDMEnrollProtoVersion: "5.0", + MDMEnrollClientVersion: "10.0.19045.2965", + MDMNotInOOBE: false, + } + + err := s.ds.MDMWindowsInsertEnrolledDevice(context.Background(), enrolledDevice) + require.NoError(t, err) + // Preparing the SyncML request - requestBytes, err := s.newSyncMLSessionMsg(targetEndpointURL) + requestBytes, err := s.newSyncMLSessionMsg(deviceID, targetEndpointURL) require.NoError(t, err) resp := s.DoRaw("POST", targetEndpointURL, requestBytes, http.StatusOK) @@ -6727,6 +7050,179 @@ func (s *integrationMDMTestSuite) TestValidSyncMLRequestNoAuth() { require.True(t, s.isXMLTagContentPresent("Add", resSoapMsg)) } +func (s *integrationMDMTestSuite) TestBitLockerEnforcementNotifications() { + t := s.T() + ctx := context.Background() + windowsHost := createOrbitEnrolledHost(t, "windows", t.Name(), s.ds) + + checkNotification := func(want bool) { + resp := orbitGetConfigResponse{} + s.DoJSON("POST", "/api/fleet/orbit/config", json.RawMessage(fmt.Sprintf(`{"orbit_node_key": %q}`, *windowsHost.OrbitNodeKey)), http.StatusOK, &resp) + require.Equal(t, want, resp.Notifications.EnforceBitLockerEncryption) + } + + // notification is false by default + checkNotification(false) + + // enroll the host into Fleet MDM + encodedBinToken, err := GetEncodedBinarySecurityToken(fleet.WindowsMDMProgrammaticEnrollmentType, *windowsHost.OrbitNodeKey) + require.NoError(t, err) + requestBytes, err := s.newSecurityTokenMsg(encodedBinToken, true, false) + require.NoError(t, err) + s.DoRaw("POST", microsoft_mdm.MDE2EnrollPath, requestBytes, http.StatusOK) + + // simulate osquery checking in and updating this info + // TODO: should we automatically fill these fields on MDM enrollment? + require.NoError(t, s.ds.SetOrUpdateMDMData(context.Background(), windowsHost.ID, false, true, "https://example.com", true, fleet.WellKnownMDMFleet)) + + // notification is still false + checkNotification(false) + + // configure disk encryption for the global team + acResp := appConfigResponse{} + s.DoJSON("PATCH", "/api/latest/fleet/config", json.RawMessage(`{ "mdm": { "macos_settings": { "enable_disk_encryption": true } } }`), http.StatusOK, &acResp) + assert.True(t, acResp.MDM.EnableDiskEncryption.Value) + + // host still doesn't get the notification because we don't have disk + // encryption information yet. + checkNotification(false) + + // host has disk encryption off, gets the notification + require.NoError(t, s.ds.SetOrUpdateHostDisksEncryption(context.Background(), windowsHost.ID, false)) + checkNotification(true) + + // host has disk encryption on, we don't have disk encryption info. Gets the notification + require.NoError(t, s.ds.SetOrUpdateHostDisksEncryption(context.Background(), windowsHost.ID, true)) + checkNotification(true) + + // host has disk encryption on, we don't know if the key is decriptable. Gets the notification + err = s.ds.SetOrUpdateHostDiskEncryptionKey(ctx, windowsHost.ID, "test-key", "", nil) + require.NoError(t, err) + checkNotification(true) + + // host has disk encryption on, the key is not decryptable by fleet. Gets the notification + err = s.ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{windowsHost.ID}, false, time.Now()) + require.NoError(t, err) + checkNotification(true) + + // host has disk encryption on, the disk was encrypted by fleet. Doesn't get the notification + err = s.ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{windowsHost.ID}, true, time.Now()) + require.NoError(t, err) + checkNotification(false) + + // create a new team + tm, err := s.ds.NewTeam(context.Background(), &fleet.Team{ + Name: t.Name(), + Description: "desc", + }) + require.NoError(t, err) + // add the host to the team + err = s.ds.AddHostsToTeam(context.Background(), &tm.ID, []uint{windowsHost.ID}) + require.NoError(t, err) + + // notification is false now since the team doesn't have disk encryption enabled + checkNotification(false) + + // enable disk encryption on the team + teamSpecs := applyTeamSpecsRequest{Specs: []*fleet.TeamSpec{{ + Name: tm.Name, + MDM: fleet.TeamSpecMDM{ + EnableDiskEncryption: optjson.SetBool(true), + }, + }}} + s.Do("POST", "/api/latest/fleet/spec/teams", teamSpecs, http.StatusOK) + + // host gets the notification + checkNotification(true) + + // host has disk encryption off, gets the notification + require.NoError(t, s.ds.SetOrUpdateHostDisksEncryption(context.Background(), windowsHost.ID, false)) + checkNotification(true) + + // host has disk encryption on, we don't have disk encryption info. Gets the notification + require.NoError(t, s.ds.SetOrUpdateHostDisksEncryption(context.Background(), windowsHost.ID, true)) + checkNotification(true) + + // host has disk encryption on, we don't know if the key is decriptable. Gets the notification + err = s.ds.SetOrUpdateHostDiskEncryptionKey(ctx, windowsHost.ID, "test-key", "", nil) + require.NoError(t, err) + checkNotification(true) + + // host has disk encryption on, the key is not decryptable by fleet. Gets the notification + err = s.ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{windowsHost.ID}, false, time.Now()) + require.NoError(t, err) + checkNotification(true) + + // host has disk encryption on, the disk was encrypted by fleet. Doesn't get the notification + err = s.ds.SetHostsDiskEncryptionKeyStatus(ctx, []uint{windowsHost.ID}, true, time.Now()) + require.NoError(t, err) + checkNotification(false) +} + +func (s *integrationMDMTestSuite) TestHostDiskEncryptionKey() { + t := s.T() + ctx := context.Background() + + host := createOrbitEnrolledHost(t, "windows", "h1", s.ds) + + // try to call the endpoint while the host is not MDM-enrolled + res := s.Do("POST", "/api/fleet/orbit/disk_encryption_key", orbitPostDiskEncryptionKeyRequest{ + OrbitNodeKey: *host.OrbitNodeKey, + EncryptionKey: []byte("WILL-FAIL"), + }, http.StatusBadRequest) + msg := extractServerErrorText(res.Body) + require.Contains(t, msg, "host is not enrolled with fleet") + + // mark it as enrolled in Fleet + err := s.ds.SetOrUpdateMDMData(ctx, host.ID, false, true, s.server.URL, false, fleet.WellKnownMDMFleet) + require.NoError(t, err) + + // set its encryption key + s.Do("POST", "/api/fleet/orbit/disk_encryption_key", orbitPostDiskEncryptionKeyRequest{ + OrbitNodeKey: *host.OrbitNodeKey, + EncryptionKey: []byte("ABC"), + }, http.StatusNoContent) + + hdek, err := s.ds.GetHostDiskEncryptionKey(ctx, host.ID) + require.NoError(t, err) + require.NotNil(t, hdek.Decryptable) + require.True(t, *hdek.Decryptable) + + // the key is encrypted the same way as the macOS keys (except with the WSTEP + // certificate), so it can be decrypted using the same decryption function. + wstepCert, _, _, err := s.fleetCfg.MDM.MicrosoftWSTEP() + require.NoError(t, err) + decrypted, err := servermdm.DecryptBase64CMS(hdek.Base64Encrypted, wstepCert.Leaf, wstepCert.PrivateKey) + require.NoError(t, err) + require.Equal(t, "ABC", string(decrypted)) + + // set it with a client error + s.Do("POST", "/api/fleet/orbit/disk_encryption_key", orbitPostDiskEncryptionKeyRequest{ + OrbitNodeKey: *host.OrbitNodeKey, + ClientError: "fail", + }, http.StatusNoContent) + + hdek, err = s.ds.GetHostDiskEncryptionKey(ctx, host.ID) + require.NoError(t, err) + require.Nil(t, hdek.Decryptable) + require.Empty(t, hdek.Base64Encrypted) + + // set a different key + s.Do("POST", "/api/fleet/orbit/disk_encryption_key", orbitPostDiskEncryptionKeyRequest{ + OrbitNodeKey: *host.OrbitNodeKey, + EncryptionKey: []byte("DEF"), + }, http.StatusNoContent) + + hdek, err = s.ds.GetHostDiskEncryptionKey(ctx, host.ID) + require.NoError(t, err) + require.NotNil(t, hdek.Decryptable) + require.True(t, *hdek.Decryptable) + + decrypted, err = servermdm.DecryptBase64CMS(hdek.Base64Encrypted, wstepCert.Leaf, wstepCert.PrivateKey) + require.NoError(t, err) + require.Equal(t, "DEF", string(decrypted)) +} + // /////////////////////////////////////////////////////////////////////////// // Common helpers @@ -6923,7 +7419,7 @@ func (s *integrationMDMTestSuite) newSecurityTokenMsg(encodedBinToken string, de } // TODO: Add support to add custom DeviceID when DeviceAuth is in place -func (s *integrationMDMTestSuite) newSyncMLSessionMsg(managementUrl string) ([]byte, error) { +func (s *integrationMDMTestSuite) newSyncMLSessionMsg(deviceID string, managementUrl string) ([]byte, error) { if len(managementUrl) == 0 { return nil, errors.New("managementUrl is empty") } @@ -6939,7 +7435,7 @@ func (s *integrationMDMTestSuite) newSyncMLSessionMsg(managementUrl string) ([]b ` + managementUrl + ` - DB257C3A08778F4FB61E2749066C1F27 + ` + deviceID + ` @@ -6963,7 +7459,7 @@ func (s *integrationMDMTestSuite) newSyncMLSessionMsg(managementUrl string) ([]b ./DevInfo/DevId - DB257C3A08778F4FB61E2749066C1F27 + ` + deviceID + ` diff --git a/server/service/mdm.go b/server/service/mdm.go index f0312e4177..7632eb4cf1 100644 --- a/server/service/mdm.go +++ b/server/service/mdm.go @@ -404,3 +404,61 @@ func (svc *Service) VerifyMDMWindowsConfigured(ctx context.Context) error { return nil } + +//////////////////////////////////////////////////////////////////////////////// +// Apple or Windows MDM Middleware +//////////////////////////////////////////////////////////////////////////////// + +func (svc *Service) VerifyMDMAppleOrWindowsConfigured(ctx context.Context) error { + appCfg, err := svc.ds.AppConfig(ctx) + if err != nil { + // skipauth: Authorization is currently for user endpoints only. + svc.authz.SkipAuthorization(ctx) + return err + } + + // Apple or Windows MDM configuration setting + if !appCfg.MDM.EnabledAndConfigured && !appCfg.MDM.WindowsEnabledAndConfigured { + // skipauth: Authorization is currently for user endpoints only. + svc.authz.SkipAuthorization(ctx) + return fleet.ErrMDMNotConfigured + } + + return nil +} + +//////////////////////////////////////////////////////////////////////////////// +// GET /mdm/disk_encryption/summary +//////////////////////////////////////////////////////////////////////////////// + +type getMDMDiskEncryptionSummaryRequest struct { + TeamID *uint `query:"team_id,optional"` +} + +type getMDMDiskEncryptionSummaryResponse struct { + *fleet.MDMDiskEncryptionSummary + Err error `json:"error,omitempty"` +} + +func (r getMDMDiskEncryptionSummaryResponse) error() error { return r.Err } + +func getMDMDiskEncryptionSummaryEndpoint(ctx context.Context, request interface{}, svc fleet.Service) (errorer, error) { + req := request.(*getMDMDiskEncryptionSummaryRequest) + + des, err := svc.GetMDMDiskEncryptionSummary(ctx, req.TeamID) + if err != nil { + return getMDMDiskEncryptionSummaryResponse{Err: err}, nil + } + + return &getMDMDiskEncryptionSummaryResponse{ + MDMDiskEncryptionSummary: des, + }, nil +} + +func (svc *Service) GetMDMDiskEncryptionSummary(ctx context.Context, teamID *uint) (*fleet.MDMDiskEncryptionSummary, error) { + // skipauth: No authorization check needed due to implementation returning + // only license error. + svc.authz.SkipAuthorization(ctx) + + return nil, fleet.ErrMissingLicense +} diff --git a/server/service/mdm_test.go b/server/service/mdm_test.go index 13809587ec..f395d26a98 100644 --- a/server/service/mdm_test.go +++ b/server/service/mdm_test.go @@ -15,8 +15,10 @@ import ( "github.com/fleetdm/fleet/v4/server/authz" "github.com/fleetdm/fleet/v4/server/config" authz_ctx "github.com/fleetdm/fleet/v4/server/contexts/authz" + "github.com/fleetdm/fleet/v4/server/contexts/viewer" "github.com/fleetdm/fleet/v4/server/fleet" "github.com/fleetdm/fleet/v4/server/mock" + "github.com/fleetdm/fleet/v4/server/ptr" "github.com/fleetdm/fleet/v4/server/test" "github.com/micromdm/scep/v2/cryptoutil/x509util" "github.com/stretchr/testify/require" @@ -111,6 +113,12 @@ func TestVerifyMDMAppleConfigured(t *testing.T) { ds.AppConfigFuncInvoked = false require.True(t, authzCtx.Checked()) + err = svc.VerifyMDMAppleOrWindowsConfigured(ctx) + require.ErrorIs(t, err, fleet.ErrMDMNotConfigured) + require.True(t, ds.AppConfigFuncInvoked) + ds.AppConfigFuncInvoked = false + require.True(t, authzCtx.Checked()) + // error retrieving app config authzCtx = &authz_ctx.AuthorizationContext{} ctx = authz_ctx.NewContext(baseCtx, authzCtx) @@ -124,6 +132,12 @@ func TestVerifyMDMAppleConfigured(t *testing.T) { ds.AppConfigFuncInvoked = false require.True(t, authzCtx.Checked()) + err = svc.VerifyMDMAppleOrWindowsConfigured(ctx) + require.ErrorIs(t, err, testErr) + require.True(t, ds.AppConfigFuncInvoked) + ds.AppConfigFuncInvoked = false + require.True(t, authzCtx.Checked()) + // mdm configured authzCtx = &authz_ctx.AuthorizationContext{} ctx = authz_ctx.NewContext(baseCtx, authzCtx) @@ -135,9 +149,14 @@ func TestVerifyMDMAppleConfigured(t *testing.T) { require.True(t, ds.AppConfigFuncInvoked) ds.AppConfigFuncInvoked = false require.False(t, authzCtx.Checked()) + + err = svc.VerifyMDMAppleOrWindowsConfigured(ctx) + require.NoError(t, err) + require.True(t, ds.AppConfigFuncInvoked) + ds.AppConfigFuncInvoked = false + require.False(t, authzCtx.Checked()) } -// TODO: update this test with the correct config option func TestVerifyMDMWindowsConfigured(t *testing.T) { ds := new(mock.Store) license := &fleet.LicenseInfo{Tier: fleet.TierPremium} @@ -148,7 +167,7 @@ func TestVerifyMDMWindowsConfigured(t *testing.T) { authzCtx := &authz_ctx.AuthorizationContext{} ctx := authz_ctx.NewContext(baseCtx, authzCtx) ds.AppConfigFunc = func(ctx context.Context) (*fleet.AppConfig, error) { - return &fleet.AppConfig{MDM: fleet.MDM{EnabledAndConfigured: false}}, nil + return &fleet.AppConfig{MDM: fleet.MDM{WindowsEnabledAndConfigured: false}}, nil } err := svc.VerifyMDMWindowsConfigured(ctx) @@ -157,6 +176,12 @@ func TestVerifyMDMWindowsConfigured(t *testing.T) { ds.AppConfigFuncInvoked = false require.True(t, authzCtx.Checked()) + err = svc.VerifyMDMAppleOrWindowsConfigured(ctx) + require.ErrorIs(t, err, fleet.ErrMDMNotConfigured) + require.True(t, ds.AppConfigFuncInvoked) + ds.AppConfigFuncInvoked = false + require.True(t, authzCtx.Checked()) + // error retrieving app config authzCtx = &authz_ctx.AuthorizationContext{} ctx = authz_ctx.NewContext(baseCtx, authzCtx) @@ -171,6 +196,12 @@ func TestVerifyMDMWindowsConfigured(t *testing.T) { ds.AppConfigFuncInvoked = false require.True(t, authzCtx.Checked()) + err = svc.VerifyMDMAppleOrWindowsConfigured(ctx) + require.ErrorIs(t, err, testErr) + require.True(t, ds.AppConfigFuncInvoked) + ds.AppConfigFuncInvoked = false + require.True(t, authzCtx.Checked()) + // mdm configured authzCtx = &authz_ctx.AuthorizationContext{} ctx = authz_ctx.NewContext(baseCtx, authzCtx) @@ -183,6 +214,12 @@ func TestVerifyMDMWindowsConfigured(t *testing.T) { require.True(t, ds.AppConfigFuncInvoked) ds.AppConfigFuncInvoked = false require.False(t, authzCtx.Checked()) + + err = svc.VerifyMDMAppleOrWindowsConfigured(ctx) + require.NoError(t, err) + require.True(t, ds.AppConfigFuncInvoked) + ds.AppConfigFuncInvoked = false + require.False(t, authzCtx.Checked()) } func TestMicrosoftWSTEPConfig(t *testing.T) { @@ -195,7 +232,7 @@ func TestMicrosoftWSTEPConfig(t *testing.T) { ds.WSTEPStoreCertificateFunc = func(ctx context.Context, name string, crt *x509.Certificate) error { require.Equal(t, "test-client", name) require.Equal(t, "test-client", crt.Subject.CommonName) - require.Equal(t, "FleetDM", crt.Subject.OrganizationalUnit[0]) + require.Equal(t, "Fleet", crt.Subject.OrganizationalUnit[0]) return nil } @@ -251,5 +288,175 @@ func TestMicrosoftWSTEPConfig(t *testing.T) { parsedCert, err := x509.ParseCertificate(rawDER) require.NoError(t, err) require.Equal(t, "test-client", parsedCert.Subject.CommonName) - require.Equal(t, "FleetDM", parsedCert.Subject.OrganizationalUnit[0]) + require.Equal(t, "Fleet", parsedCert.Subject.OrganizationalUnit[0]) +} + +func TestMDMCommonAuthorization(t *testing.T) { + ds := new(mock.Store) + license := &fleet.LicenseInfo{Tier: fleet.TierPremium} + svc, ctx := newTestService(t, ds, nil, nil, &TestServerOpts{License: license, SkipCreateTestUsers: true}) + + ds.GetMDMAppleFileVaultSummaryFunc = func(ctx context.Context, teamID *uint) (*fleet.MDMAppleFileVaultSummary, error) { + return &fleet.MDMAppleFileVaultSummary{}, nil + } + ds.GetMDMWindowsBitLockerSummaryFunc = func(ctx context.Context, teamID *uint) (*fleet.MDMWindowsBitLockerSummary, error) { + return &fleet.MDMWindowsBitLockerSummary{}, nil + } + + mockTeamFuncWithUser := func(u *fleet.User) mock.TeamFunc { + return func(ctx context.Context, teamID uint) (*fleet.Team, error) { + if len(u.Teams) > 0 { + for _, t := range u.Teams { + if t.ID == teamID { + return &fleet.Team{ID: teamID, Users: []fleet.TeamUser{{User: *u, Role: t.Role}}}, nil + } + } + } + return &fleet.Team{}, nil + } + } + + testCases := []struct { + name string + user *fleet.User + shouldFailGlobal bool + shouldFailTeam bool + }{ + { + "global admin", + &fleet.User{GlobalRole: ptr.String(fleet.RoleAdmin)}, + false, + false, + }, + { + "global maintainer", + &fleet.User{GlobalRole: ptr.String(fleet.RoleMaintainer)}, + false, + false, + }, + { + "global observer", + &fleet.User{GlobalRole: ptr.String(fleet.RoleObserver)}, + true, + true, + }, + { + "team admin, belongs to team", + &fleet.User{Teams: []fleet.UserTeam{{Team: fleet.Team{ID: 1}, Role: fleet.RoleAdmin}}}, + true, + false, + }, + { + "team admin, DOES NOT belong to team", + &fleet.User{Teams: []fleet.UserTeam{{Team: fleet.Team{ID: 2}, Role: fleet.RoleAdmin}}}, + true, + true, + }, + { + "team maintainer, belongs to team", + &fleet.User{Teams: []fleet.UserTeam{{Team: fleet.Team{ID: 1}, Role: fleet.RoleMaintainer}}}, + true, + false, + }, + { + "team maintainer, DOES NOT belong to team", + &fleet.User{Teams: []fleet.UserTeam{{Team: fleet.Team{ID: 2}, Role: fleet.RoleMaintainer}}}, + true, + true, + }, + { + "team observer, belongs to team", + &fleet.User{Teams: []fleet.UserTeam{{Team: fleet.Team{ID: 1}, Role: fleet.RoleObserver}}}, + true, + true, + }, + { + "team observer, DOES NOT belong to team", + &fleet.User{Teams: []fleet.UserTeam{{Team: fleet.Team{ID: 2}, Role: fleet.RoleObserver}}}, + true, + true, + }, + { + "user no roles", + &fleet.User{ID: 1337}, + true, + true, + }, + } + + checkShouldFail := func(err error, shouldFail bool) { + if !shouldFail { + require.NoError(t, err) + } else { + require.Error(t, err) + require.Contains(t, err.Error(), authz.ForbiddenErrorMessage) + } + } + + for _, tt := range testCases { + ctx := viewer.NewContext(ctx, viewer.Viewer{User: tt.user}) + ds.TeamFunc = mockTeamFuncWithUser(tt.user) + + t.Run(tt.name, func(t *testing.T) { + // test authz get disk encryptions summary (no team) + _, err := svc.GetMDMDiskEncryptionSummary(ctx, nil) + checkShouldFail(err, tt.shouldFailGlobal) + + // test authz get disk encryptions summary (team 1) + _, err = svc.GetMDMDiskEncryptionSummary(ctx, ptr.Uint(1)) + checkShouldFail(err, tt.shouldFailTeam) + }) + } +} + +func TestGetMDMDiskEncryptionSummary(t *testing.T) { + ds := new(mock.Store) + license := &fleet.LicenseInfo{Tier: fleet.TierPremium} + svc, ctx := newTestService(t, ds, nil, nil, &TestServerOpts{License: license}) + + ctx = test.UserContext(ctx, test.UserAdmin) + + ds.AppConfigFunc = func(ctx context.Context) (*fleet.AppConfig, error) { + return &fleet.AppConfig{MDM: fleet.MDM{EnabledAndConfigured: true}}, nil + } + ds.GetMDMAppleFileVaultSummaryFunc = func(ctx context.Context, teamID *uint) (*fleet.MDMAppleFileVaultSummary, error) { + require.Nil(t, teamID) + return &fleet.MDMAppleFileVaultSummary{Verified: 1, Verifying: 2, ActionRequired: 3, Failed: 4, Enforcing: 5, RemovingEnforcement: 6}, nil + } + ds.GetMDMWindowsBitLockerSummaryFunc = func(ctx context.Context, teamID *uint) (*fleet.MDMWindowsBitLockerSummary, error) { + require.Nil(t, teamID) + // Use default zeros verifying, action_required, or removing_enforcement + return &fleet.MDMWindowsBitLockerSummary{Verified: 7, Failed: 8, Enforcing: 9}, nil + } + + // Test that the summary properly combines the results of the two methods + des, err := svc.GetMDMDiskEncryptionSummary(ctx, nil) + require.NoError(t, err) + require.NotNil(t, des) + require.Equal(t, *des, fleet.MDMDiskEncryptionSummary{ + Verified: fleet.MDMPlatformsCounts{ + MacOS: 1, + Windows: 7, + }, + Verifying: fleet.MDMPlatformsCounts{ + MacOS: 2, + Windows: 0, + }, + ActionRequired: fleet.MDMPlatformsCounts{ + MacOS: 3, + Windows: 0, + }, + Failed: fleet.MDMPlatformsCounts{ + MacOS: 4, + Windows: 8, + }, + Enforcing: fleet.MDMPlatformsCounts{ + MacOS: 5, + Windows: 9, + }, + RemovingEnforcement: fleet.MDMPlatformsCounts{ + MacOS: 6, + Windows: 0, + }, + }) } diff --git a/server/service/microsoft_mdm.go b/server/service/microsoft_mdm.go index 071c5ca3b5..2ebaf1bfc7 100644 --- a/server/service/microsoft_mdm.go +++ b/server/service/microsoft_mdm.go @@ -13,6 +13,7 @@ import ( "io" "net/http" "net/url" + "regexp" "strconv" "strings" "text/template" @@ -1184,6 +1185,29 @@ func (svc *Service) GetMDMWindowsTOSContent(ctx context.Context, redirectUri str return htmlBuf.String(), nil } +// isValidUPN checks if the provided user ID is a valid UPN +func isValidUPN(userID string) bool { + const upnRegex = `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` + re := regexp.MustCompile(upnRegex) + return re.MatchString(userID) +} + +// isDeviceProgrammaticallyEnrolled checks if the device was enrolled through programmatic flow +func (svc *Service) isDeviceProgrammaticallyEnrolled(ctx context.Context, deviceID string) (bool, error) { + enrolledDevice, err := svc.ds.MDMWindowsGetEnrolledDeviceWithDeviceID(ctx, deviceID) + + if err != nil || enrolledDevice == nil { + return false, errors.New("device not found") + } + + // If user identity is a MS-MDM UPN it means that the device was enrolled through user-driven flow + if isValidUPN(enrolledDevice.MDMEnrollUserID) { + return false, nil + } + + return true, nil +} + func (svc *Service) getManagementResponse(ctx context.Context, reqSyncML *fleet.SyncMLMessage) (*string, error) { if reqSyncML == nil { return nil, fleet.NewInvalidArgumentError("syncml req message", "message is not present") @@ -1212,9 +1236,15 @@ func (svc *Service) getManagementResponse(ctx context.Context, reqSyncML *fleet. return nil, err } + // Checking if the device was enrolled through programmatic flow + isProgrammaticEnrollment, err := svc.isDeviceProgrammaticallyEnrolled(ctx, deviceID) + if err != nil { + return nil, err + } + // Checking the SyncML message types var response string - if isSessionInitializationMessage(reqSyncML.Body) { + if isSessionInitializationMessage(reqSyncML.Body) && !isProgrammaticEnrollment { // Create response payload - MDM SyncML configuration profiles commands will be enforced here response = ` diff --git a/server/service/middleware/mdmconfigured/mdmconfigured.go b/server/service/middleware/mdmconfigured/mdmconfigured.go index be6b5ddc46..75343ad65c 100644 --- a/server/service/middleware/mdmconfigured/mdmconfigured.go +++ b/server/service/middleware/mdmconfigured/mdmconfigured.go @@ -17,6 +17,18 @@ func NewMDMConfigMiddleware(svc fleet.Service) *Middleware { return &Middleware{svc: svc} } +func (m *Middleware) VerifyAppleOrWindowsMDM() endpoint.Middleware { + return func(next endpoint.Endpoint) endpoint.Endpoint { + return func(ctx context.Context, req interface{}) (interface{}, error) { + if err := m.svc.VerifyMDMAppleOrWindowsConfigured(ctx); err != nil { + return nil, err + } + + return next(ctx, req) + } + } +} + func (m *Middleware) VerifyAppleMDM() endpoint.Middleware { return func(next endpoint.Endpoint) endpoint.Endpoint { return func(ctx context.Context, req interface{}) (interface{}, error) { diff --git a/server/service/middleware/mdmconfigured/mdmconfigured_test.go b/server/service/middleware/mdmconfigured/mdmconfigured_test.go index 7ac09b6bf8..2c6a01337f 100644 --- a/server/service/middleware/mdmconfigured/mdmconfigured_test.go +++ b/server/service/middleware/mdmconfigured/mdmconfigured_test.go @@ -2,6 +2,7 @@ package mdmconfigured import ( "context" + "fmt" "sync/atomic" "testing" @@ -32,6 +33,13 @@ func (m *mockService) VerifyMDMWindowsConfigured(ctx context.Context) error { return nil } +func (m *mockService) VerifyMDMAppleOrWindowsConfigured(ctx context.Context) error { + if !m.mdmConfigured.Load() && !m.msMdmConfigured.Load() { + return fleet.ErrMDMNotConfigured + } + return nil +} + func TestMDMConfigured(t *testing.T) { svc := mockService{} svc.mdmConfigured.Store(true) @@ -99,3 +107,49 @@ func TestWindowsMDMNotConfigured(t *testing.T) { require.ErrorIs(t, err, fleet.ErrMDMNotConfigured) require.False(t, nextCalled) } + +func TestAppleOrWindowsMDMConfigured(t *testing.T) { + svc := mockService{} + mw := NewMDMConfigMiddleware(&svc) + + cases := []struct { + apple bool + windows bool + }{ + {true, false}, + {false, true}, + {true, true}, + } + for _, c := range cases { + t.Run(fmt.Sprintf("apple:%t;windows:%t", c.apple, c.windows), func(t *testing.T) { + svc.mdmConfigured.Store(c.apple) + svc.msMdmConfigured.Store(c.windows) + nextCalled := false + next := func(ctx context.Context, req interface{}) (interface{}, error) { + nextCalled = true + return struct{}{}, nil + } + + f := mw.VerifyAppleOrWindowsMDM()(next) + _, err := f(context.Background(), struct{}{}) + require.NoError(t, err) + require.True(t, nextCalled) + }) + } +} + +func TestAppleOrWindowsMDMNotConfigured(t *testing.T) { + svc := mockService{} + mw := NewMDMConfigMiddleware(&svc) + + nextCalled := false + next := func(ctx context.Context, req interface{}) (interface{}, error) { + nextCalled = true + return struct{}{}, nil + } + + f := mw.VerifyAppleOrWindowsMDM()(next) + _, err := f(context.Background(), struct{}{}) + require.ErrorIs(t, err, fleet.ErrMDMNotConfigured) + require.False(t, nextCalled) +} diff --git a/server/service/orbit.go b/server/service/orbit.go index 28df989cd1..40a0bac9f9 100644 --- a/server/service/orbit.go +++ b/server/service/orbit.go @@ -14,6 +14,7 @@ import ( "github.com/fleetdm/fleet/v4/server/contexts/license" "github.com/fleetdm/fleet/v4/server/contexts/logging" "github.com/fleetdm/fleet/v4/server/fleet" + "github.com/fleetdm/fleet/v4/server/ptr" "github.com/go-kit/kit/log/level" microsoft_mdm "github.com/fleetdm/fleet/v4/server/mdm/microsoft" @@ -270,6 +271,12 @@ func (svc *Service) GetOrbitConfig(ctx context.Context) (fleet.OrbitConfig, erro } } + if config.IsMDMFeatureFlagEnabled() && + mdmConfig.EnableDiskEncryption && + host.IsEligibleForBitLockerEncryption() { + notifs.EnforceBitLockerEncryption = true + } + return fleet.OrbitConfig{ Flags: opts.CommandLineStartUpFlags, Extensions: extensionsFiltered, @@ -300,6 +307,13 @@ func (svc *Service) GetOrbitConfig(ctx context.Context) (fleet.OrbitConfig, erro } } + if appConfig.MDM.WindowsEnabledAndConfigured && + config.IsMDMFeatureFlagEnabled() && + appConfig.MDM.EnableDiskEncryption.Value && + host.IsEligibleForBitLockerEncryption() { + notifs.EnforceBitLockerEncryption = true + } + return fleet.OrbitConfig{ Flags: opts.CommandLineStartUpFlags, Extensions: extensionsFiltered, @@ -503,3 +517,82 @@ func (svc *Service) SaveHostScriptResult(ctx context.Context, result *fleet.Host return fleet.ErrMissingLicense } + +///////////////////////////////////////////////////////////////////////////////// +// Post Orbit disk encryption key +///////////////////////////////////////////////////////////////////////////////// + +type orbitPostDiskEncryptionKeyRequest struct { + OrbitNodeKey string `json:"orbit_node_key"` + EncryptionKey []byte `json:"encryption_key"` + ClientError string `json:"client_error"` +} + +// interface implementation required by the OrbitClient +func (r *orbitPostDiskEncryptionKeyRequest) setOrbitNodeKey(nodeKey string) { + r.OrbitNodeKey = nodeKey +} + +// interface implementation required by orbit authentication +func (r *orbitPostDiskEncryptionKeyRequest) orbitHostNodeKey() string { + return r.OrbitNodeKey +} + +type orbitPostDiskEncryptionKeyResponse struct { + Err error `json:"error,omitempty"` +} + +func (r orbitPostDiskEncryptionKeyResponse) error() error { return r.Err } +func (r orbitPostDiskEncryptionKeyResponse) Status() int { return http.StatusNoContent } + +func postOrbitDiskEncryptionKeyEndpoint(ctx context.Context, request interface{}, svc fleet.Service) (errorer, error) { + req := request.(*orbitPostDiskEncryptionKeyRequest) + if err := svc.SetOrUpdateDiskEncryptionKey(ctx, string(req.EncryptionKey), req.ClientError); err != nil { + return orbitPostDiskEncryptionKeyResponse{Err: err}, nil + } + return orbitPostDiskEncryptionKeyResponse{}, nil +} + +func (svc *Service) SetOrUpdateDiskEncryptionKey(ctx context.Context, encryptionKey, clientError string) error { + // this is not a user-authenticated endpoint + svc.authz.SkipAuthorization(ctx) + + host, ok := hostctx.FromContext(ctx) + if !ok { + return newOsqueryError("internal error: missing host from request context") + } + if !host.MDMInfo.IsFleetEnrolled() { + return badRequest("host is not enrolled with fleet") + } + + var ( + encryptedEncryptionKey string + decryptable *bool + ) + + // only set the encryption key if there was no client error + if clientError == "" && encryptionKey != "" { + wstepCert, _, _, err := svc.config.MDM.MicrosoftWSTEP() + if err != nil { + // should never return an error because the WSTEP is first parsed and + // cached at the start of the fleet serve process. + return ctxerr.Wrap(ctx, err, "get WSTEP certificate") + } + enc, err := microsoft_mdm.Encrypt(encryptionKey, wstepCert.Leaf) + if err != nil { + return ctxerr.Wrap(ctx, err, "encrypt the key with WSTEP certificate") + } + encryptedEncryptionKey = enc + decryptable = ptr.Bool(true) + } + + if err := svc.ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, encryptedEncryptionKey, clientError, decryptable); err != nil { + return ctxerr.Wrap(ctx, err, "set or update disk encryption key") + } + if encryptedEncryptionKey != "" { + if err := svc.ds.SetOrUpdateHostDisksEncryption(ctx, host.ID, true); err != nil { + return ctxerr.Wrap(ctx, err, "set or update host disks encryption") + } + } + return nil +} diff --git a/server/service/orbit_client.go b/server/service/orbit_client.go index b4a8ca3e6b..b7374a58f2 100644 --- a/server/service/orbit_client.go +++ b/server/service/orbit_client.go @@ -338,3 +338,18 @@ func OrbitRetryInterval() time.Duration { } return constant.OrbitEnrollRetrySleep } + +// SetOrUpdateDiskEncryptionKey sends a request to the server to set or update the disk +// encryption keys and result of the encryption process +func (oc *OrbitClient) SetOrUpdateDiskEncryptionKey(diskEncryptionStatus fleet.OrbitHostDiskEncryptionKeyPayload) error { + verb, path := "POST", "/api/fleet/orbit/disk_encryption_key" + + var resp orbitPostDiskEncryptionKeyResponse + if err := oc.authenticatedRequest(verb, path, &orbitPostDiskEncryptionKeyRequest{ + EncryptionKey: diskEncryptionStatus.EncryptionKey, + ClientError: diskEncryptionStatus.ClientError, + }, &resp); err != nil { + return err + } + return nil +} diff --git a/server/service/osquery_utils/queries.go b/server/service/osquery_utils/queries.go index 9887a1243d..165b7e2cc7 100644 --- a/server/service/osquery_utils/queries.go +++ b/server/service/osquery_utils/queries.go @@ -446,7 +446,7 @@ var extraDetailQueries = map[string]DetailQuery{ ) UNION ALL SELECT * FROM ( - SELECT "is_federated" AS "key", data as "value" FROM registry + SELECT "is_federated" AS "key", data as "value" FROM registry WHERE path LIKE 'HKEY_LOCAL_MACHINE\Software\Microsoft\Enrollments\%\IsFederated' LIMIT 1 ) @@ -609,7 +609,7 @@ var mdmQueries = map[string]DetailQuery{ // [1]: https://developer.apple.com/documentation/devicemanagement/fderecoverykeyescrow "mdm_disk_encryption_key_file_lines_darwin": { Query: fmt.Sprintf(` - WITH + WITH de AS (SELECT IFNULL((%s), 0) as encrypted), fl AS (SELECT line FROM file_lines WHERE path = '/var/db/FileVaultPRK.dat') SELECT encrypted, hex(line) as hex_line FROM de LEFT JOIN fl;`, usesMacOSDiskEncryptionQuery), @@ -1460,7 +1460,7 @@ func directIngestDiskEncryptionKeyFileDarwin( // it's okay if the key comes empty, this can happen and if the disk is // encrypted it means we need to reset the encryption key - return ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, rows[0]["filevault_key"]) + return ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, rows[0]["filevault_key"], "", nil) } // directIngestDiskEncryptionKeyFileLinesDarwin ingests the FileVault key from the `file_lines` @@ -1511,7 +1511,7 @@ func directIngestDiskEncryptionKeyFileLinesDarwin( // it's okay if the key comes empty, this can happen and if the disk is // encrypted it means we need to reset the encryption key - return ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, base64.StdEncoding.EncodeToString(b)) + return ds.SetOrUpdateHostDiskEncryptionKey(ctx, host.ID, base64.StdEncoding.EncodeToString(b), "", nil) } func directIngestMacOSProfiles( diff --git a/server/service/osquery_utils/queries_test.go b/server/service/osquery_utils/queries_test.go index 2c9e3d60ee..6e42246259 100644 --- a/server/service/osquery_utils/queries_test.go +++ b/server/service/osquery_utils/queries_test.go @@ -1130,7 +1130,7 @@ func TestDirectIngestDiskEncryptionKeyDarwin(t *testing.T) { } } - ds.SetOrUpdateHostDiskEncryptionKeyFunc = func(ctx context.Context, hostID uint, encryptedBase64Key string) error { + ds.SetOrUpdateHostDiskEncryptionKeyFunc = func(ctx context.Context, hostID uint, encryptedBase64Key, clientError string, decryptable *bool) error { if base64.StdEncoding.EncodeToString([]byte(wantKey)) != encryptedBase64Key { return errors.New("key mismatch") } diff --git a/server/service/testing_utils.go b/server/service/testing_utils.go index cfd3365aac..7b90c43c0f 100644 --- a/server/service/testing_utils.go +++ b/server/service/testing_utils.go @@ -586,7 +586,7 @@ func mockSuccessfulPush(pushes []*mdm.Push) (map[string]*push.Response, error) { return res, nil } -func mdmAppleConfigurationRequiredEndpoints() []struct { +func mdmConfigurationRequiredEndpoints() []struct { method, path string deviceAuthenticated bool premiumOnly bool @@ -630,6 +630,8 @@ func mdmAppleConfigurationRequiredEndpoints() []struct { {"POST", "/api/latest/fleet/device/%s/migrate_mdm", true, true}, {"POST", "/api/latest/fleet/mdm/apple/profiles/preassign", false, true}, {"POST", "/api/latest/fleet/mdm/apple/profiles/match", false, true}, + {"POST", "/api/fleet/orbit/disk_encryption_key", false, false}, + {"GET", "/api/latest/fleet/mdm/disk_encryption/summary", false, true}, } } diff --git a/server/service/transport.go b/server/service/transport.go index c9caee032b..4170695e11 100644 --- a/server/service/transport.go +++ b/server/service/transport.go @@ -317,9 +317,9 @@ func hostListOptionsFromRequest(r *http.Request) (fleet.HostListOptions, error) } macOSSettingsStatus := r.URL.Query().Get("macos_settings") - switch fleet.MacOSSettingsStatus(macOSSettingsStatus) { - case fleet.MacOSSettingsFailed, fleet.MacOSSettingsPending, fleet.MacOSSettingsVerifying, fleet.MacOSSettingsVerified: - hopt.MacOSSettingsFilter = fleet.MacOSSettingsStatus(macOSSettingsStatus) + switch fleet.OSSettingsStatus(macOSSettingsStatus) { + case fleet.OSSettingsFailed, fleet.OSSettingsPending, fleet.OSSettingsVerifying, fleet.OSSettingsVerified: + hopt.MacOSSettingsFilter = fleet.OSSettingsStatus(macOSSettingsStatus) case "": // No error when unset default: @@ -342,6 +342,32 @@ func hostListOptionsFromRequest(r *http.Request) (fleet.HostListOptions, error) return hopt, ctxerr.Errorf(r.Context(), "invalid macos_settings_disk_encryption status %s", macOSSettingsDiskEncryptionStatus) } + osSettingsStatus := r.URL.Query().Get("os_settings") + switch fleet.OSSettingsStatus(osSettingsStatus) { + case fleet.OSSettingsFailed, fleet.OSSettingsPending, fleet.OSSettingsVerifying, fleet.OSSettingsVerified: + hopt.OSSettingsFilter = fleet.OSSettingsStatus(osSettingsStatus) + case "": + // No error when unset + default: + return hopt, ctxerr.Errorf(r.Context(), "invalid os_settings status %s", osSettingsStatus) + } + + osSettingsDiskEncryptionStatus := r.URL.Query().Get("os_settings_disk_encryption") + switch fleet.DiskEncryptionStatus(osSettingsDiskEncryptionStatus) { + case + fleet.DiskEncryptionVerifying, + fleet.DiskEncryptionVerified, + fleet.DiskEncryptionActionRequired, + fleet.DiskEncryptionEnforcing, + fleet.DiskEncryptionFailed, + fleet.DiskEncryptionRemovingEnforcement: + hopt.OSSettingsDiskEncryptionFilter = fleet.DiskEncryptionStatus(osSettingsDiskEncryptionStatus) + case "": + // No error when unset + default: + return hopt, ctxerr.Errorf(r.Context(), "invalid os_settings_disk_encryption status %s", macOSSettingsDiskEncryptionStatus) + } + mdmBootstrapPackageStatus := r.URL.Query().Get("bootstrap_package") switch fleet.MDMBootstrapPackageStatus(mdmBootstrapPackageStatus) { case fleet.MDMBootstrapPackageFailed, fleet.MDMBootstrapPackagePending, fleet.MDMBootstrapPackageInstalled: diff --git a/terraform/byo-vpc/byo-db/byo-ecs/variables.tf b/terraform/byo-vpc/byo-db/byo-ecs/variables.tf index 8e0e7049a2..e8a73e36fb 100644 --- a/terraform/byo-vpc/byo-db/byo-ecs/variables.tf +++ b/terraform/byo-vpc/byo-db/byo-ecs/variables.tf @@ -13,7 +13,7 @@ variable "fleet_config" { type = object({ mem = optional(number, 4096) cpu = optional(number, 512) - image = optional(string, "fleetdm/fleet:v4.38.0") + image = optional(string, "fleetdm/fleet:v4.38.1") family = optional(string, "fleet") sidecars = optional(list(any), []) depends_on = optional(list(any), []) diff --git a/terraform/byo-vpc/byo-db/variables.tf b/terraform/byo-vpc/byo-db/variables.tf index 3753cfe1ad..e4700c9238 100644 --- a/terraform/byo-vpc/byo-db/variables.tf +++ b/terraform/byo-vpc/byo-db/variables.tf @@ -74,7 +74,7 @@ variable "fleet_config" { type = object({ mem = optional(number, 4096) cpu = optional(number, 512) - image = optional(string, "fleetdm/fleet:v4.38.0") + image = optional(string, "fleetdm/fleet:v4.38.1") family = optional(string, "fleet") sidecars = optional(list(any), []) depends_on = optional(list(any), []) diff --git a/terraform/byo-vpc/example/main.tf b/terraform/byo-vpc/example/main.tf index 03077d2911..49c62767a8 100644 --- a/terraform/byo-vpc/example/main.tf +++ b/terraform/byo-vpc/example/main.tf @@ -17,7 +17,7 @@ provider "aws" { } locals { - fleet_image = "fleetdm/fleet:v4.38.0" + fleet_image = "fleetdm/fleet:v4.38.1" } resource "random_pet" "main" {} diff --git a/terraform/byo-vpc/variables.tf b/terraform/byo-vpc/variables.tf index f6839f192b..eef43bfdfc 100644 --- a/terraform/byo-vpc/variables.tf +++ b/terraform/byo-vpc/variables.tf @@ -163,7 +163,7 @@ variable "fleet_config" { type = object({ mem = optional(number, 4096) cpu = optional(number, 512) - image = optional(string, "fleetdm/fleet:v4.38.0") + image = optional(string, "fleetdm/fleet:v4.38.1") family = optional(string, "fleet") sidecars = optional(list(any), []) depends_on = optional(list(any), []) diff --git a/terraform/variables.tf b/terraform/variables.tf index b4afdb3d21..8373dd0569 100644 --- a/terraform/variables.tf +++ b/terraform/variables.tf @@ -215,7 +215,7 @@ variable "fleet_config" { type = object({ mem = optional(number, 4096) cpu = optional(number, 512) - image = optional(string, "fleetdm/fleet:v4.38.0") + image = optional(string, "fleetdm/fleet:v4.38.1") family = optional(string, "fleet") sidecars = optional(list(any), []) depends_on = optional(list(any), []) diff --git a/tools/fleetctl-npm/package.json b/tools/fleetctl-npm/package.json index da38159b8f..1d364cadb2 100644 --- a/tools/fleetctl-npm/package.json +++ b/tools/fleetctl-npm/package.json @@ -1,6 +1,6 @@ { "name": "fleetctl", - "version": "v4.38.0", + "version": "v4.38.1", "description": "Installer for the fleetctl CLI tool", "bin": { "fleetctl": "./run.js" diff --git a/website/api/controllers/view-integrations.js b/website/api/controllers/view-integrations.js new file mode 100644 index 0000000000..e996de3e67 --- /dev/null +++ b/website/api/controllers/view-integrations.js @@ -0,0 +1,27 @@ +module.exports = { + + + friendlyName: 'View integrations', + + + description: 'Display "integrations" page.', + + + exits: { + + success: { + viewTemplatePath: 'pages/integrations' + } + + }, + + + fn: async function () { + + // Respond with view. + return {}; + + } + + +}; diff --git a/website/api/controllers/webhooks/receive-from-stripe.js b/website/api/controllers/webhooks/receive-from-stripe.js index 4b8a9e1138..0af2abd168 100644 --- a/website/api/controllers/webhooks/receive-from-stripe.js +++ b/website/api/controllers/webhooks/receive-from-stripe.js @@ -69,10 +69,14 @@ module.exports = { let subscriptionForThisEvent = await Subscription.findOne({stripeSubscriptionId: subscriptionIdToFind}).populate('user'); let STRIPE_EVENTS_SENT_BEFORE_A_SUBSCRIPTION_RECORD_EXISTS = [ - 'invoice.created', - 'invoice.finalized', - 'invoice.paid', - 'invoice.payment_succeeded', + 'invoice.created',// Sent when a user submits the billing form on /customers/new-license, before the user's biliing card is charged. + 'invoice.finalized',// Sent when a user submits the billing form on /customers/new-license, before the user's biliing card is charged. + 'invoice.paid',//Sent when a user submits the billing form on /customers/new-license, when the user's biliing card is charged. + 'invoice.payment_succeeded',// Sent when payment for a users subscription is successful. The save-billing-info-and-subscribe action will check for this event before creating a license key. + 'invoice.payment_failed',// Sent when a users subscritpion payment fails. This can happen before we create a license key and save the subscription in the database. + 'invoice.payment_action_required',// Sent when a user's billing card requires additional verification from stripe. + 'invoice.updated',// Sent before an incomplete invoice is voided. (~24 hours after a payment fails) + 'invoice.voided',// Sent when an incomplete invoice is marked as voided. (~24 hours after a payment fails) ]; // If this event is for a subscription that was just created, we won't have a matching Subscription record in the database. This is because we wait until the subscription's invoice is paid to create the record in our database. diff --git a/website/assets/images/device-management-transparency-438x373@2x.png b/website/assets/images/device-management-transparency-438x373@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b8caf62521310159d24cc49f174d40fa1e8f3128 GIT binary patch literal 154237 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 SNPv6&s48kI)XIGf`~Lt2?%PKI literal 0 HcmV?d00001 diff --git a/website/assets/images/icon-checkmark-circle-green-16x16@2x.png b/website/assets/images/icon-checkmark-circle-green-16x16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..94f8b26a57190ca4d3e6b417aa3de303d6680fd6 GIT binary patch literal 797 zcmV+&1LFLNP)t>>d4iN%1xPVcih8Sff{;Vc$pxr-fdmr+ege`pe(5)B+oz`0hn&T;J9m; z15DCMNQ1+F=Ri;*Kr7ZD!HBK)6&^H`h{09F{^9tW5JMUuvl+Y5V|t03n_X3zvNp+i3 z+T_Buz8O!$$5GqK8aTd(tpYvY3{HN(YmDUWZMSB#n589_y`W5(e1NUuIk{lE;TE9+ zuoVZAW7r|N!0yzvgCrGX6#`jN#$wknA^FkIO4bLs(tbktT17@T3d(oI#;3viFD2ik zH$ng@$c>5W#l#a!MVXur9%5Js^deG|hlms)J9qwFFJd$DPyp`%SJ%Mne|%N9;6Xif&pLQ)#Y8A`t!qJB z7cmM}0ySJ~1R*T3)lx*;dA&F5F01M8%)Gbj3VvXi-Pw8L$2V_&zu(Lof;3R*?=FME zDqWPcjd-hdD26~GLY6Vs493b5Hv8O^wyKnume&0KT$eFd&j_ttCA<1h^?{*d?E0-f zNa9G^6vcvv!Kj0QYkX6#jpjOE0)*0zkheMj2UwOq>3`;7#$wrWk9uHFbUk#g5Cqsu zO5MRx@6DiQ06b zelYk6uO%Xh)bJ3(udZCREG!U1r~N`Hs*W9p434E6ii#bVpH0Q*rN+7=X;C1_6hP7T zr{NSw(xO0;rR2b2I7LY7ut}bRyAqiKit^`XVc0~R-i?A8Y>+Za2C<3YAy4N$ZCHA| znniKPXBwekExIyF+JqCstid>=^i%d!b~O{ z{XGQ*J)I9h=v`!pRKn4HEWk5n3(uIg(!2x0#4x{90_07qBrSjwfKOmJft3>oFOagcbONIjm@HDJveEbi zVUY@dqF-LmV8s#rni*AWGcaEj1=amt)AM!r>we!fK#CM8Qlv<+DZr?P#Wz&QP43D7 zR0Pc*h2NR-;qiV0HVCEOxDLwui4aCg>kkXa_zLHP;c?!N(@ticLFsZ_B=nl+U@N~Z$r5WX_EM45yP^)*SsdZ0E zQbAM!r1QgHXRo4|i^P;J=M{iOH}Ql#0P!G4AxAk{IEO8TA%{am#bsk9CY&u$6nuOH zdg0OhDWE=p4Z|eA-!gsUF!&rmzn1KXydzgT_TZ~^McA)=Cga)rm=XRTCdG#AEZY{UislF+`B{lUM5}}61*4EC z3>r8>LTkTs6NpEQgvDZS1PKHmV`BF^7BRzP^kGL3iw#Z)om|Rl+&MfPKvZphxQ^)48@Jg;S`EuKSUDhg@%|)xrInrC9PA>5a20xl@b6YbeG;J|1uOvn>6 zdJ-w2F-wLL5Ne_us;a}UBGxI-(I(1mf=Oxe-Qh|0AS6iEYJ$J97Ao?I)F?NZtlgbR z$ixj;(s@+UNua)kM*u-TiDsGcNqK*|EbKEz!;uk=Ibhuyebl8}F#CO}ib)&De@r)G zlceQ9uVp_bR1Uz5?|G?}E~dBqfNzb!@3K`U;J6HoKAIiR-%8||>1hJ3rOIcaLJWr4 zX|{`CCC(q`vt7wAH`_l0OPnyvpO?MpXEq3)1#du>YS>@4KoMBI!jsReNKUBaXtAacjk;ujPf}ZrdbZcn5o9`Glx*_PaDAtl*V;_ zp}o2lnlo~3W0K1aKJ{Nwc3C4mvuUKJfgo@t5N4O-8D)EA5@^^qxppPSkfJlNqX-EF zlTsGSuO$t8g_zKgtj382hVR)|ix*k zv50Y=fVT{>h;hBS+cxaPQZjlI#Dtv~K_f+)I$@F78iq5N}sPBC7+R6r0J5 zGZ{(0@m)EY^?nSe1y`&Y*z%=fppo`w9d8c?zyG{1$_if-M!yEQ0rYmDn!a9cVgg6f9oRPT z5}M{^UFjp7+x1deKUgOmCjus>AU4b^opnN(!P=YQOTD7byHSh9@iG#YHOC&r#|hS- z9f1bzh1b?KA3K!x`By(_cL!6XNRc8%iWF<{5BRSu*(6xC(EtDd07*qoM6N<$f@rvY AR{#J2 literal 0 HcmV?d00001 diff --git a/website/assets/images/icon-webhooks-30x28@2x.png b/website/assets/images/icon-webhooks-30x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..284735a1d21677a9700ccc121e568bae87b60d42 GIT binary patch literal 2404 zcmV-q37htbP)D4wK~#7F&00Nd z9M=(^*}a4mVoN8bv84chG^JWp=Z?!FmXb!N&Ou`ESf(;r22sL0M}X7u*tru8CjnBC z29iKb!&R3~R4<8Z#F5nL3_CC>@^(D)?#KInmbZ7eC;I~^-R{19Z)fMdnQy+g2(J+I z-bV_4bQ}Q$S0RO}J{drp|NR_@_VF)&h+)b=m@=r|s6wYwXM=9?VRUL^#DxEiAq<{JybKnH1G1ei^k_P{` z?zz-tqZ=>*N;BB&U5~L!)vCwgVU36u^?d*jDaD=V$-Ttv@6IZ}ybWuZHZOs>Ng{W7 zYnXx$+>@!1PcN!>YcKJegEXbPL{OJMws-@P4&HqGx?voCdbRw+VU-%jpDGFTQ=5 zx}n(EjbYu0$1ly_sP~U~>L%cNInwNHOq4aHU4xMZc{A)%N(BYL(|y_M$4yth7hDi! z8LXT$mCnH6G@wx)Fp|JFI0{3TaA2TdOq5PM`p8C7BpiDR0vwmhrKe_acAZgXdKW;F zBs--VnMGL!C(fD7I-5z4wxA#onSPr6D5nvn-+LbRc`)k#NRqhC6lW8LBS}+e8fOSS z86ZetOq64Ar4xJ38bsvTlik$PS)JTkw!5~`p5}&^b>Bi!!xO2QCsseoEf2f( z>;tg*all6V zY}!2SK3=a|;3);m_Hy|i?o`%2y4F@!49LT)@N%Ij{j63d6 zyB+6ZxxQ_U(1tKS7u$Gq?z-gi$m(OQ_iK@#LBV$sJ(2zc#Lqe%h>Jw^%4ru_XZipM z8l4UmEAK?r;AmrjU~?qJlD*7cjjTTM)Dk5sU`kX&)GsRzLu`KW=w6)DUc?9&BFVgd zeqP>mo&RR->+Ip=s~3+xGoDEVc+fK-+fV}4Ef@h`w;v_1pT8VIL50MElIVW+!e#Z7 zb5|a6Uk-hB*6=0u^MwFO$U|Y3qATJ-!@0l`EsTLK-yR=gG|!Sfah!e4Fj$Nw4EA!B zMZHx5n_R+~I+Fw{rzr=jF=?QzMFe!TEGalpm!eWL=N2G+D4)@Tpd}Zi0eGhp#sLLu z|4aVmlx0N)_)%d}PKJx%_-lQ)Qe z4;XpV>-NN(UgLrdZ}@U|&&#n+OR2v>lR2(oY;Q;Zrv5%dzRe(V8C4}5DJqYG9v@g> zFI^>B&q(*5J~kb~Mm0E{Rykc6ic9Y$#3*YZ#o&R}cfwO(u7A**x*G*HxhLM;^Feg# zqu`r$*^cpCHr8mjeN;Wd8L>%a8%jHlMPbeEfdY%-orK#%jU7@POaeCcZjP}63APWi z(Kt^u3<8KM{cX!EW;?TkY0{0tL%zQ0x8<3T72x#_!tCK7#T|EoDpER3Po3iBi*wia$s|xph=(%oqc81_pg2ZpTRy_nVu$$9YM~rz$voLD-iw0p9Q?o$ z*z}C&`FW#7_v^S~KvTkD67UwhLU4(g!0F?+E7UbO8%VAiO-S$07AwLlm96X{zsv=* zSj77rfEq9YdigUd(A3Asl-;I+@(^H9LzP|pyp7W09K1aA^FgavxH$iAjZ#~#rJd&o zyD^LaPB-Ax$3BpmhBQg(n9t11b)PFick61lj&B_SoZFg`d*Rt$o@X;9J;=tST5>i$){(9ROOq3FS<1K4A zgT3WJK7QfIa`WkvU85!zF^^RZeu-IcbBRdlrp@Rm?Pv*ne!G7E%fW51E8 z9G=2|pBvsPy5*t0gLv1|&#B(c;q%()nefp-ypz0gGU3C<>Awp`uM8-^iRFGv+{qU?7Ugf1A z>?VRd5Ukk&B@e^K=ckp2zCX(N{i)nPc8Dsk=WQ5H)(gQNtO$k}J@NRCO#AhV$A8b6 zUWK8>Hlkm#XFneCR-WFEcgh%_jr}bf>&z^#F3syLK3koC$N}gb$W<_N24ez}5{j|^ zfiWTDv(cY$Uou_QDEG?vKc+Lk_#*j-cl@EXm;NX;z-1;V(JAsRs}5Sa-70$%Tc??T zR(bqI%GJuXs(GJNRcly8FI;R2bdCj7DFlPP9Uf$Vnjey7p})0;|Ems!gYidw!QTQR WLrCdchXz&v0000NO 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�>dU)b$F7G2 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 literal 0 HcmV?d00001 diff --git a/website/assets/images/logo-chef-169x28@2x.png b/website/assets/images/logo-chef-169x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ade25d93859b3f554d4b9643b20c7850864e2563 GIT binary patch literal 6354 zcmV;@7%k_CP)478Vv3bA+)7Da3f8>43RVx590wHA!n$+_$i>m=}yhNSnWq z+h+m_Jt&O`t3S1{u$UKABBZ%`(9t^YX-RFXKee#1m}QhEq>p~3P2tgYo*s0JL0J8% zg@wh;LYBR-rs;$!-Wg2+Oq^XU=-|=MbPTltSy)(D%n&N;NWc9nHJSWwRWvYFg4Lf| zSXj&wMl&|CuC!lcJt-4Zni8zIZ((6ED;UfD$yo1MZ_2HFM^l0^ND2D>$A6>_Sy)(D zObLxfgY7?`8yirk^Pjyc_fEzk|Np2VYP4&`eG7}50}!4I?HuF1R{HSev!gc6AnrH* zeOYV0MOrUMKWBROxa>34Xae~0pAEOznWp}f4N}d%qUNJts)w6CXlyh*Pgn9b&?L?r zN1Q4C`?B+wQ?js_Q#2a?;r6NTMn9`j|FqNTCK&=&+6Xi){VDqY;S0J|<(_-18?WPR z`xxl)!djWfg=I0{00BK$a#K=%UW`--(OwV>JJEIjb)(@rO1?K=GjsF&>CraL2zV~s z3ngFkTbBpl^TguHt1+@Ge9HuH5L5#$OfrFFD)7COVogZ7f){jyERXFAAud%~S~q#! zzy6xl05k_U_vA8>PrsO+?YtV3F-jHfVLbBKctnbcX4ajW8hw6!`?q`}P{6siS$_(5 zsm*B`q^=Nk^7I}r&UaRSYH{6R4t>vS4?bW5$wcz|=biuR7TxP}ono7B0^{J;d|hgf zW*k!JB^?Oli=@U@*9{TUXi{da%QXOQmATesCX~72K7Y5z9BgNr`qN5aE}6OI!>q3r z>ADp1OMXJkMVc5?7h3J|-xad3m@*)W_LXchr|9zbKT}$qma!;*^I)UFhyLI?aGEbq zj!Ngsc-86j_)n7w>b9eeC_ER?LViU)k?R#1)uIS2{NM53|4s3~7v*PrPC+GK*d%>)&06HD}oAV~C{KYg-Y=GuFW^%hgs-NYBHcg4h( zIoT~NMupMmX}P7PvoFc_K7mdS7U!2wk9P9z>nnW_@W@Pb4s)`#USFLzSu*WNqX%82_mjxzWC*IJVx1clbOVuW=wj{HphZ+efvTkzircK?>`vU7p7o*3?KX?_r?UgaL|?=g?ttI~ksd=T0Il?!P?rTY zfYN%CPczeofS;P6)3{qn6rsxs8wZx*^9K&&Liyjpzg4s008u52&SG~Qm#pa6gz-#Z zmBzz$eAQ#)M3?(NgbJhR8AIG#-8dNPKH}uVofd>#X$eVIEj-wV!3Y z3w`=8nDOpFk0z->Thw!J9Ter4sk zQV0BUGn|TDxW4eBX)F5fYwg55j+b*Srtg=V#5+O@;th z$oC*}#tp_fmv!Ii4MdGZUl^FNmG0L^bgJ+!TJhLlTn-AXwe# zW`(Mn-$IIkkvm{YfV%NBk3lKgPXylx{SIzq+VdVSNUy`s*f8r^=#zvWDXi;`U`uq4 zMSB#0pnBfurAcNP7s|;E2oR1OT2R4)dCPAr>8;@-i2E8Pef|8%4&^%~mjQ^QQpYqR zu;?h~nLH`t^H9ILy3Ryi?^SRhcbRw{1bt-!ZDRvfY};?2=Q+V~$AJDZ4k|mhmuUIF z;iYN?h8`xShc%WM9Cg0wX!RY!7Z;@;l@kZ7`{8>f^hEb@5pXbv{;DG5*_ntng!10P zSVkq`A9((r$o##0rs4pC+3MZ58#!m5=IX}ZUNK#XI& zbz~)6k@m{+tsmvl883xv};EL0!3uWX{(eQE@2>wxE8eLad|`( zVj9E<7VFN012I?J85k6X;a=zqY{XREnC})tyE?TGf1&bjJVhU@lw+~e=nh?)E?9ro z87y8yj8X_)bbRLD`SZ~F=E3@hp90-%h(MjuOt$UMuVlStxcOOMT31Rn0*CY=@ceD^ zT<%4GKYyLjcG|cR%gy5DsYkMh&)~|WmDfz0UmU=ry4LZSeX%vRwx$Wz^L{Bjy@`I| ztGXccHuQ&)OM1cIcGR8F5Yxt=PqM^(tOHy_{>8mMLOGM_jML!NzW;EIB@D3%l?ha1 z{FymOgL&+RH!#3F9sMj=oXuo6*?xwhSjh|YZRl|@GD^%t zKHSq>7_1AQ+fNYE=sKv9 zRKyeBV?I>hgXKUHmRYn2e+*>DEjqBk|LRz0Z5`rhs83Te-~}q|}dV zPSb_8JTdD5q9#(fQQl0Ci^MZ*L|m8hl?(AO`T<)v8)@S!Bi!VXQOQgLBPVta^ryGJ{ntf1YUuGe&!DK1! zDaw}0N)czw9lg;p%XkoZbvf2F15V8Ss%jr)!G@eSMb`*Pcj9!OMby$RT|i%5^o(z5 z1i#Y-{@wE%bUM7#HWPgt_p$SBb68*_^1M_v_AHQU_l4X_B)Tz{znvEqe^}p5BOjWQ zy2mO6&RoyN8!ZwBF*khEFgYo`#C=s3s?vz`p^+d1Yjr+^8|RpHK;UQ$$cQn^aIFv5 z_I>Ma3UJs6f@ObD9ib@lCk zN>a4>U}+_l{JabSj^e`cPQz0;3h0|K_I~=ts`N~-vTLPi6qI@%eM#^p2@|;#0j#@B zOevF?hQl%G5_KaIdDP>3_7>&BN!IUb3@H!S>zYcGD-Vda-~$eAgRthQ0E+ODF3z05 z^uhY#f1p`KxDMEs!SkZ4-hL5TqVeB;8Ym>BkA9_14_12LrDA4vI7x`p=O<6*=y~#B zO3Y>v%#jXsv%-NyQ9)JePq;9I)KM74GI!FpyWDhw}tK(=eTlG~UYssIq~TP6%O z4&wn3>WC*-UguN5r5Qq|)gDQnAN@?P$)l?^M9uxO7Fhj&-gO-iHI# zlj;^qZW#4VIk*T%{N}-Wrmh@B4Zf*p8)+CTv>itM6mzsG(3g^yJL_4zU}#*Bi?_yk z)ubwE6doN3j?@&pWBra+RQ43L7!y%_P84xVW)X@+_dfM|4rPn}R05jR5={}vh?Pjs zqM5)|)ECDQ4Z}@C;46y_w}<)g$XPZKO$AY1sSf|?ZMTD$pJ_{Z4JjldvNGor#FVdn zQ`y)e*hm?Kb(?CTv4l7?f*u8j{45lj91zk_59+BADhyhT1!JIqek{fv3co;CX#$c) z(L(Q-J01C=@UDiYJDf<##ma_D$woa)tN zv-w{ar21I$CMfGa=|==5jSI+<6a6>*K;zdS`lF04Ei)Iu1R*FzglA(-66iOV%)gEKY?8vPKO9VS6!7Bt!9@$a)_K z2z6>MfCyGorBB`idEOD%0Rv-G5If&utNq?IvO9sJWMW;- z^2&tW>C^TPw{C{7Be=!BmYZ>75FElU^!XC>UW!#4jw8-Y70H6kR4+3!@hnK)>a#vI zqo0P+uOS$L35-NGaiy-*_?Q#ZkL>X%@6bVrB|bnMAePscP)0(h3hxMhmP*lIR}o_$BH;@YW_OyD zxDSq!SNo20PPa?fYZBD0X}ZlEXsdlgh$vtdw~$#`(2cV;GE$*DNM2?th(vh>&kFjX zz(~<7lihz>SP57mU*))k_c)SqWj-;LT7v%`33CUFSc%DW0B48svXl$%8S96d^d{F`> zX))KVd(a9Mn+b)KgNd$tmm6qkw3-fO#NYsZY!U4wJkj!)V(R zYNgb(Cpw@WZ{n3KLWe`(#mSS~Acj;CH~C&h5y!T?(WUaH(mMLs*T1t_Y=)mW0Ldimo#R(KigW zsVo$A9B;ZJJn~N>KU);ciB;3rmhG!T7+@X(qsVQ)zL3}Cc30ClM}Luvjt=V1Q$+;* zG?`=BW{#zS`bUIX^I9|4BCvr@`Gi0D>8Y;=G-Yi|v^%MJ2y}TZ9^al+qLmd5G|D`r zJUjewmohl?o-{R`%C{fJ+r!}=@%(vhUHAomJ5w{GHiQ)}xAmuAlqvn)}mBoevN&2e*pH?bqEhW6r5c5YhxOA+EK|p2!6f zJ2UaDvq-*Q>(ky%(rI2bp!*4;kSG*st~z`!TDUC4B*oCOfFS{fn$U1F$$5x7?N77q zB8UB}KsYA9(&wjHSEC^Ggt%M>pKdP4CZv!4O6{6M+ocUj7Bh`|tLq2xQXmldqn2w6 zi<^eA6FbAgPZl$S`}bK@;OHUOHm&rVtaNY*q=bmZ>(N_S+%(t>`8NzgXy`wiL!U|E zQi)i0IJ`5_b%z^-pJrz&`eqA@SwZD0q876a$ML#}Fh)dA6-2!RM079y`5^kl!r}&F zY#ph^?BU+SwKk=fsqMi}6rw&#iYQOHyh6TYOXzZ{@2Dv=UB2G9g~hzW64Dz8WGQm= zc+Tj6H8NRP_^_h=4FvorwQ#aRFbe_IfRyyu5>X2a9}ZdENc`{r{P(Z_@^AloA~pRX zo{>HeLG;u&FFSwfl7)qZffem7d{IA$>Nr`>} z)3-hBmf$B?crB$|A%#izV5msq7cc{026X?bWXd8)jlh}zbk9t8127E3Fbu;m48t%C z!!QiPFbu;m48t(Y=Ym-FMA+@VNC9p_Nd!W?zxa=o2?Rl`9^374f&jA={49DB;5ir| zg5YKH@#7I}7Yydn#0gX{!M`)G4V)0~rMG52ic@HQ52&ex$Xkhg4$B~>&LVd|0RLo^z z#7X3i#J1pLPi8-Zy4vx%;EP~hC&JD*Kmi?)c;fd@d6r~cp+spq?V&~6TOy3h*S5-R z!#ZIkFHTh5lFu7o1@kfyc7p>H&L_C`w8LvpOr2oAJ4R9J&;IX9j<5}HVYWoZ!sv_u zngh+~Ctq)EJpqQPj|dn>(0rbZekm>OEUIcCvh7^Y5|DwssX zqRB8!oitf6iJ54Iz%UF`F-_PdUxyM+e7pd(|Fied!-NKyF3vb+b01U%0 z6|yOU2{KI&cs-M0m@28nB^Lm1K#1YuC$qR{32>+6SYV3A7y!Fz48v4JC4!j(ocw=v z47kdk6Mp$+1g+N4H0#WDq?CJ5pKIlM(W>oJKpq&q${C%1SP|mA!Q6f zkl=lale4oiFrOuB`bZ-)mO0(@Nj`mw@nL|%Ih3syZQMj)M;Lay`#4BnKnaA~+x;|6 z?+GFLke&U!Dv;MRFacyyNLdD^F+MxqlmsHW^FP4J@SdPVDOZy_%-;*0jSBArJ&f=k zj`5mTWeI2%>D?#{a>3;h7_#L3uC`@C`aNITQ54fYqQ^^?aEH9pPUpy10rg^+oP-la zbEgc^)Pu-MFlU32vL^}inB5*FY0wEo5=tPVJ3$$^RK(zqoC7y>f3nnX48j6 z6K~iLU{B9<^M@=-m23gv0LtyOAteB&Sa=d+XaHm_V5fbKlh_H0-9BU~_{yNClc}8W zCS9{pePnCvNd!ZH40`hS-@UZDnGEHI1H6X%#qy#Ft|wMM1+&!}fjuj4 zDsAx8>4q;u2Eh~8v!)sd*$D-=prz@{1j5XNeS{{o2;35-lZmr+Z!ZN?pTUa3hV%3O zs;6;-#}{jcW=*GUNrQlnVnyHqIDtIp-E;rYr#t%K0m?H&g9jYoZ7jJu=xl?OOBaas z+F=Bis5S~QvTiGOL{}Yv)}(x}v@hd&0%7Knv!Dz+5*jb+%W`8E4IU>}rq9VY-h&0H z`ivK2d0Zx;qfesK`6f9%z5C(xbcY_r`S~qe3-UJix%EY9mQixysUDi4)Yx1`yZL? zBI1lmZgH*acWUiYN*ke`MKB#+4rSAk9|IdJK)-ebHL~aou+C3lG%$0WDNfU|ukE<_ z-2i)F2>ouIyL1j6GJFfi%%M@3YZh5#71dW1e+83*@~e1Ti$ou)KKhzaEjoOU9pEWN z_CPU0vZ`v0J4aDl5D%XlydOJ@V#6;ckL_(6*GX9rb;cAg8rV0xUFt7JLbXgNn$iwJ z?~I$Ce~fee?oMYP#qS;zv|_Pc_n~IN^w}jZeW2)ruYE9p+={&M&pP=>@%FD+cdY^x zv-@BOcGkmni8S zO`~j`(2Sxx;ZhdfITv-#m}`z*twLGbd9%p0+jJjHy@lE>2xbnW&!FhZ5#ytTl%KXn z{9VJ$GP6UO$R!&=c}S(agD!oP`vqD0F(^m`b&;kKnDZv@g)|T-*CCh6wS;f%_i1bcglU&2u%I7+mVIQLS<UC62pEO5ad(TJU=Sh(Q?ha(j0Js(!%M-mi9peBV3o0*VHjo+-U+5{W)uZm zn0bhy0R%#P0EY1d?*y}iynFGAkgOOOg|JDVH=RaBF1Orm<+W&6RFnXx$#`{eU6)*q zzyi5C*@I~Z7>iD)jGF2GAVgw(D7m-*njc}ZIm5}=L1&rM6ig67uv=28nRV1E>fQ(@ zRV+lSX9$)AE3%$gM4W71c%DJ5`=!?wx`((XZ5~x*bB2?#BTZv4B~8QR~_h5E9@b- z$W^(B;c*oHC2jAaGeswFdJ?Aa<1e?B=OV}(4O&kh@8lOyr)!ubLim9kmsL|{ZB9MA z&7eMP5PD)Ub!T#y2MBN6usI?&Zt{8B4XLwkI%ayV|Neje^4;DSY5N4latPNwODU<^ zz(Af)PoDjHJNLdxC4woWR9R-`zPjBW?Si9FK1ZSaA2yguIrO0%;A?nI&JnoB*uu?Io`b}U3<#(YnWlT|ti2WO7=a;FY*26HT0`wuwW4x>;y2J% zWp2pY{PE}8YmI=7$heNP;LCO85-we9oB90duUqyF%^I zpMkL_Ld$Jmce@8BeO-y97IHGU(pD?4_?n5dfalMSzmHa3;&VRCyu|2g5A$A39l&%U zTSHdU0lvo*>;{fWmngWXY$;I9XHoi?!vOjYT@&OIgZIWzsAoceOeTHpWm#njf&r;g$ z7ubH|60Vw_)JKhq$-q)#98e?h0bhO51%ljAy`8L&L|}mu&e;+Tj+43ZGGqDQ z8Li8}ZyQ#P6F;4z87_Oi$u2onn)|`ze59`GXtQHp3c`b(cU`g17i&(Dr<`$Z_!4I8 zFzQD2ksx>kKCr$PRRmV7woaQWn8~u5*m=R%?}B?GAC8{r31kF*5a%stTnBm$&;8LR zv#N@vk$n7kgre)|BxQOAYvNyoutoUxGuFYkq!C6Iu-JSa~2`g0wojE7nX(O%Y5QOuHX``|XFa zBR|mP8oCrst2pbD(N?#M0b#wwQYGY;+niY~tsNe?#cE=8Et)F=0s<+l?oYbLoA6yQ z6B0ADDsNS}uBAjX2*|pMp?>;4tYgklqFL{NC}oMIaylJ45fOu9d~l0rqUo@*L4Vm3 zkN@_ckuY7l5F!qO)ftw&6ihnPN9&79C{fJnh$p7mTXlk(EeRjXY0!Z9aCUa9YRj7f z4$53&sS;1zQGeQjeFWNV63x1o36ix(y;|*EFj-oX>7#XtID8SzHBC;h(y1?7MD9_poRA=j4ir;A9Nj_nd`K1fB$u~c=nd{i3{U^qIKHs zaaH%imv&sVC!1tR#Cw;r^oQ4L&0py+L6G2U#$_(kJp1`}KNa#p0ODeUH3j*OHi+^H yCBrZb!!QiPFbu;m48t%C!!QiPFbuB{{ssP@;0k0Dlc-`DhjA9v61>dG`2A<)x|{ng>;9eu}R;6eyEN8utOS6?FU_I zZKBaQw0@`|wM#-$ZB6%5i9*`Mr3EaME?0p?WpP(nmSx#xdj990GjnE`nS1Z-+y$oh zmz=%l&Yb%)_x|TO=XuU^XJZ&=GMP+5EFKo6SrkhZO_wN+DBDHph{a+KA|k4d5Mf-D zHc|RA!RQnviHQFjVh9-_s1~t!Rg}1VVf1t0%x+{(ZUfGX`tXOj##3$srrw6wwEKX` z*PFZP5M@JTF>9Yt1u4Y%oLH=vD?*5w-d_W~zY+C*?~SM5i`eWZ#qvJ=3O8CSMA?Ce znx$ev3b9$L+Al=XU+^BS;U7gw$o1YAfKQ(GC&WS;)*yDx&rFM%635$!h?*pjAeBSX z2G=2p8*e$H*rIG?w<_9Ej4jeC_WT6sdkte^@&d#b{9bnFiljKsW<=B+z64ol@igZ@ zJ%tIgXP7V11lrJI?0!&;7ypT>FmV=QO>b&Z@;J+*F=g%HDM%&8_o2cw!++h6;m!jX z+0&D4GjZWns9$v}CV%;++;+5#?5e8?MS0^+-F@3akSh^UQ}_`iJ>+EO^jVz##h>$p zSV;XhZpGAZ-vtc3<66fsm?oT^FTAPO=;WjkQ8P>^_of;%CRrbRetTIllDegH-0g;{ z)J+%T^gFJ%?$U;cnqq>-`|J3J-SoL#hv2!h+0)&Mu#llbkKM&mUz&&-!Ap<{{u%Dv z4=-ZVCX2CTqq}nMBZLZr>jQt&Yb}VV8A=LL#TjL2XJpSYc###Onu!S;In(3vFd}LO zFAFI{JAR<2Ejbh7_|YUMNJ~WmB5Htgf|S!Lv1#@2!?-v!CgvP?evtlRlM*GPN)ok; z1^4r@G^0wC6r`FCbT~GwyX87~?r6Lm8k3wTBMUkHB;Y2^uvBdvUsvo!)djB8>(hV! zknFk{_F)-yPGI!ViM(yb&7p}10}4uy#W^Kw<05f^AXONJs<*g)@>~WpC&lCxA!lOr zYzzbCbaqDe97SGyeH{!;<&}+sQt!h8u9W+IyEZh zD8=~f-g9|kEC#!AT28io)E>f@whhVGq!=64AXKy%#j<~B6i%N!S4)&v)guoUA}(9B zmo4Xnj|fXhkp+cfq*W!c#_uCEm_>f$yHbo4;_^-Vu<)6GVeJ-23o{`~B+AQ}n7Vm# zqWaElXK;8hgGykRy>rzRxy&5??%0!Z3y?ye^GjLp>N$hezdNW!D6twQqx12bKVaU+2Xi@lwIqB*O58#f|&$S5iwdtH4NCa<5R5PcDQ6)ijv)T=i`gGx?WiSO#wXc zB-A)sVT-~T7R6w}y-qp+%ynkaQ!GKPu-EfIJdS>5oj0sgl!Zl(W2tk{XbWDfow+pI zJE|T>zSS!BnJV#AlgPiOL|cCoOC8^#Af-C@_MgXCU}$Jd!kA{9wF)s&IGd7Tx>!() zIWg`&Mars-Mr7g2d+J7CB_Zgj`$LzX6wG}ees(Kltj*g(1N8)v~!T_ z@<=Pf!4YMXvA(QGn`Wb)!lgGkz~01Cbq7AgNV0R;Gbf`Wmd0~pJTf$hhjwnqUydKc z6Z_srV#nJ>g(LMhC7FXjuAzgkfc)?xP>6w~{Lw_xzSZwW zRH3}MO9Be=F{@5kMmNm!!NBKuSXf3=j3#{jS3;00g)k}5Bf8y{YqG+OHU2<|@jW?q z)E;wzuqwstW|@L=;15$Q7Q(^nyltZ$p9)Rj(!w(84tzqVCM`z1+ff>tM?>TFLZi07}pSQ;7!r9(zxQ+Qo{Q76J8wistQ!qQpaSybmaQ)7xT z{ZTibIMIT1N6So{j>}qQ)qWyUApUj_KwL}F>*{;sTfUm_4UeboJ-R7l{pwI zt+!vLt2V+Xh#)QGcdt5jn1(BuwW=(K8{_mM1vhlVZ8}ig8d`9p2%L=zD=JVmWVR1~ zQA}7##iWhZd%o?7@rVPKXRYdf=?@H z=0noNFB9Txe(S4KWY^8Y7~{)#)njRc8)JNW{~r9|*kM!~T1Xal;cX9GCudwLq4oAF zv-8=bAk;bRKYH`)G~i3p;wtB?U%cFjA# zK2^pTwHO)J2}6t;T1k==T`nzMP}bcu8>t7fUB1^8oyN3q4G0g*s5=5=vF8cvXa>9)-U$xI}zSI;22j-A1FIbS^>$C-SeUA!@FWI{y>!Qi(!0rzI`3)zlvsn$*R zi*E}BHw0A;I7Zg#ZFHtm@G(TG^LSrgIKMH*YOrMbOu5|s@fI8(Jcy?Fy=a_v17_A= zi{?33$dXiEG{ZyjDHHXk{IIl)m57PmdqUOQ)V|WFE)H_zDi+?PQcjmnsL<#{4jaMa ziV5U<*LIOM<~}*bT#K>8eVU(_p)QV_opKv_3DV-9Q|HD{kc(%|lFRPTcHro#F8uqr z`_p?AWaAY#psC>=AJ0NZ$T=zwaw%hGH#w`wz9!Wv|O6#wJD$ zt%APEM2AkwVIvr{-mS(lk|_P_7FuLhk=KD-VuuBPP;{%yyl;xfGU^%|!F!Fu;Jx

?KI~t(h@N1jC0AI*Vtx){(+HJ5oL$j_=cg(qh8>=5=6fIB=~`60T?xW!mW} zx(`ddZyR+JZpTOlZxkIUtHieQA4jS7ym`$9`ylM@X;I@SElho$e&Va`s(l;EC-a)G z*~WR7BBk0T;bv9Ei|j|Ar{hPELMSuw!KsiRZB@r1y@UVp)qZ#+n+X(0^++Rk^DN_a z2f?>52Cr#S)pZwHZvP!9{$)!QdClCPzR^KQtKw%rrOvAuHu94}O77cBko=}LFP=`z z6<+*Nvm)*~E4`-=`f5L;KKq+PW9_a>;UHWp5zTn)uiEG3d*5C;XEdYP#D}n%J5`Mz z2mJ|>j*Y@WL`~o&NI8z7v!P>yVZmeQF{B?s-rV@0c4!PW$`AtglipB zh^QGn1*x8EmO;`VHQj`HDo$8UxX+{#J7;CSw&*F$oza}vMq0(WYw^unUdf6P{&EH* zE+b-o8kzsi>!^B|>qwR6wkgKfzIc}oh;z(JC0hD@cHi|Ar|a>eMh1DKpW&-Ld_CEv z#**@%&7E&WDC9M~KzQba|1vAI9 z&s_)Pf!WvMnI+4mcMaA37K%(+=4=qP3e$rTmpFk0Nz|{UW#@eLBd&ghN#}?jyAejR z;dZ}~*dl@pk|@iSg7L%n6y~nadhx-)NiofMQl_jiONhblxl^Z#S(rv?6_rIKV@Vf_ zh`111OHtC9VDyQSivHPAL@_F|kcFsjJfR9RP`GX;4bU3u43@5_dyXi@{{Sd^c=@?5 RTfP7Q002ovPDHLkV1mD_I2Zr` literal 0 HcmV?d00001 diff --git a/website/assets/images/logo-github-89x28@2x.png b/website/assets/images/logo-github-89x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7784f46ee7fa69755c2064889072e7fd40f4e905 GIT binary patch literal 2011 zcmV<12PF83P)(+{lul4OLCFMlH!yjB$M>YWBS65m z>>2~Me&0vBrffIzrgU8^qs9lwt zcAv-IH`H~f*z$>~?=jR!p&;8qP2r;#;C&D$4~v(QhW2Ix;1`WUGKT{ao`-idCbxwR z1AJNbqJ{nbcY4ANirUe*ReGZClkmK6id&Hadq{>*BSGHA@GKlcYJTleh()j|V=pfE zB{ls1lLqV;^=|}+eH-!eVH<_{d9{J$ziKkD89MUna zK|*T2(&Td2U?ps;AGpUKbv#-!IOyF*b{>(nQ-i7}8t1cyCvV6nA)A z&A>-^V>-X74_a+qqaN*BnD^?xn=BUyY=ibYVmM}y zfrWlzdMh`jAQ<_|sTUV@3vfTXc{Iwjg0Wde#K#@vzuy<@E$)G;|wlmihi zqtarHd_t5;U{Vf<%bNV*=U?u+u|FBjtysZg`ilNe+9$|1qwZOrb1F4^@Lk5F_Ta0w zTSi{e*^JBuidWcmno;4A09hm7v`&!yEOxg3KR*#IMvKQZgrO+iVwSa)=VNruZpaP! z9g5-DN)&*i93fVrpg49B^{lr*pu$<|HC?g-h*L0WNxR)XF54ayDaLR#S&-27$bu|K z2et|b?~=tsTxOTB-;X4fhFTBLS0pAOLdb#~gCr>OXmc_$Cp@IBC#1FGog0n$tZqJ~ z0o+a`aH-SBmvjCqK%G8HVptH>VW2XTE1M`V8jq2HgA zX)^Omwv)~6*2ejVjvK)#5E!mAH-S^d2vbYC&oh zUrU1q8-97Jx6A_K(@JcvJso8%i@{qV_oX!9|M@Ww>7M- z9N;@>8RcAzCyc+S9U@+)MQr6GbMg<}5g(v!$X$%5%xcL{7ceV1-I-XQJS5}R3A3xA z-0F+$R>xph>ho=skH}mhVud-t*M6CP17y@dt_gdQ1DXT09ll}lXiIz5r$|^f*FWa9 zb<0ig%4+9*4Gz0cxLCJ+3hWnGgt2{dfOXt_pe_YuCbf>2RV4OF|0e>S>?-bFxMq(B z#tIn^4tJ!ENt5;c(Fq0kcd|(Gs^7;T;e~u)Z1uC`pmqbAGkH1dQQv>!rgI%|I@4X)L=f};u2D`>R?|NmlA9(-ug{{u%`WE_r tftMYweKAdR&8VU%ilQirq9{tY_#e?)AX1Le^)LVc002ovPDHLkV1k8!!>|AV literal 0 HcmV?d00001 diff --git a/website/assets/images/logo-gitlab-124x28@2x.png b/website/assets/images/logo-gitlab-124x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8efa1f81ed1007566461e2083921c3bf114857c4 GIT binary patch literal 4117 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 T$KMLd00000NkvXXu0mjf)yeD6 literal 0 HcmV?d00001 diff --git a/website/assets/images/logo-google-chronicle-128x28@2x.png b/website/assets/images/logo-google-chronicle-128x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a5bd8cf760fcf9dc0e1b60e1ceaac53c38b97836 GIT binary patch literal 5801 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 literal 0 HcmV?d00001 diff --git a/website/assets/images/logo-google-cloud-174x28@2x.png b/website/assets/images/logo-google-cloud-174x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..135f685cdfd06d0cd4f0ba7a590124eb139e61bb GIT binary patch literal 23926 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 JPDHLkV1oCJz>EL@ literal 0 HcmV?d00001 diff --git a/website/assets/images/logo-okta-85x28@2x.png b/website/assets/images/logo-okta-85x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..eec4d5ee1fa0dabece19b44c8f1f1f3c38b784ce GIT binary patch literal 3936 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 Hu0mjfP{H#s literal 0 HcmV?d00001 diff --git a/website/assets/images/logo-snowflake-color-117x28@2x.png b/website/assets/images/logo-snowflake-color-117x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c98e3e34b77db5efd227ad5ec8ab97a4ef73e9 GIT binary patch literal 4934 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 Ef+2{sO#lD@ literal 0 HcmV?d00001 diff --git a/website/assets/images/logo-splunk-95x28@2x.png b/website/assets/images/logo-splunk-95x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5586e071cc7b8d440ba62256221f0eb15a4c349d GIT binary patch literal 2707 zcmV;E3T*X>P) z+qf2n4`l_{MH|5PVVVN>VO-o~aNn-Gf^k;RWCcxD(A*WoSwWK(Bwaz$6~wcGrf(NW zi+UagXgUugAT8n|vN`8xB-gPeij<|)vG@UP97{4~>L+>5;UObv!C8L%?+qgFdD`*I z&*$6ZxJ4D}%%=rMdZI;AZfQ<&!k?fDb>@-7Q9+#W9hJlh-%&}N@Ew(8;hkH@{iM-s zHU|Br4H^!EnzwWoeENTn3dHsJj=3bfs&ypE9=hgh8E&8{2SlZ{8 zZ5nzTOW(pH)%zES6TV~a7)sfodOr{(no`Q2gP<3v_X@<>_>Q>)J$xwrmx6{T+?clJHN`S|dKgtEp?J;V{+Z=MN|2Z+#D8(XS|%%V@;qMrED} zA>P!e)-AdR7~MmI@1dUVNZFRHtpn!r)A`ZVHUHweA0*qfvL=GBf1ICF#ic=qcRIyF2 z=r+!Mw6fY|W$u0X^u9ZOo~X$U9;$YeK0^qv$3I5Gf4H*tGQ5%~$yAM1Dx!G~A= zZg@pIag}jBOq(6y0Syj@gWZ}} z+bgTVcvA(+!70DA4IQ<)zE5#IS%Pa=#HWHJ!dEt)`_ABM>201e7lB7lR@?ag{Bp8U~DkakzWtb$dIxcz)1KQS~4o~ zgvGthm9{RV+~iw2fZdG)_{p~K9$Au5K>>f5GMn&^%X=M{p`jr{d0LsCpQ9YH2{8+7 z8toQ68wyyY$7wpkvt;vhJ&$=>bOTT}J{-DGXciva*zcW*cVVCJV3rMzYH)GhBMYW0 zM;`bO2A!lzK^Z(mzoK+gsDTRSpU-IV8LtDbEBRVT>LQ;7Z?ONCyN@u7JPW6*6lB@S+=Q(hmZ@fv#c2eEswMjN7KxoWk%;6~IJDIL2Yb&5Vy~7h&!oA_u=A z>6oqPW6;@MUYtLLd95>d^O`^=Gq(*BFFY?czCqNR>xRlw?{#kA5z<6R(K%i1N&Wgv z!bg2a5xK-$$Rql3%4z^g_$vKVhos{&A}4twLHy7Uw8y0^G>dN@!6cgLxtL_s9fwaq zIZ*}e&h6#r^DPtc<4dE(-|V=Rn;zvP(DGxww<%Jd9w|r|hIBTYU0+4?7JpSjvh6gFNDwl)GXwC*11&(nb@<%?hdEkT5xxSkEeX@X9}=I|hP>|A`FL ztRRPW0t?P34;$+yrjHW8#pDr-H@EOJzEn_nj{YnZyhwUpFqlc-xGPJ*Q1D2A+^f~E zRrJzm&8;$hR7PfoT`tX225^IUhC?iH(4HXZhd5X1h@WXeiDuHfsV5);_~e%tR1!9V z_aB5$q2styG+u13;q#*ia%^+4kUf43JCXW{BsttK z(%D64iIL>d%IaTv1RrCy%R)56+tr-Xu=3| zVs1J_O^EZx**&Hl6fO9ek?>6&Qz7(2x25pZVrkQpL(L-a2|euyR$cWT|K z#d_HL&XQYCHyGM?o{P7Wc0v1v#T>T@;H_|CKVE$(@r}c<@I-| z0I-dT_Bc<{=(1JSLhu>ZFW*<9{Qq>}89KXaMPNySAKfedi&pBWe1^f*Qk%WyseFrg zD+}GjWbx@!hEp%(3VFQNOj=13mrI)7Gw+&T&HWs(`gOg!%2s6u>x50e-*^-}7}=dd}CjrDjRnqJn4laAkE5$&6{|z}e+au(DPBs3J$g`P^d8%Ww>Ps&KuxAx z{#i`kH^9ijVX~eH+3F)7HZ1~;Xlh0O~Ey2Fh)5+(*<`?ZW*En==Ifh zDmhTw9dd)b>n;1{1*9}&ggCJ~#Jh~p_e?f?79MUA9=Xb969)PC6E{|SaQ$qS5aLMu z=4E65%x$Egmc1V%go}F7<#|sqs*|!BhmmF7^5K`$1WPkC`${ zZ}u&`Zb@tw8|5y4KUr^ea@^Dy6x~aoq!r$+f!)qe%btM1* N002ovPDHLkV1g%=EI|MO literal 0 HcmV?d00001 diff --git a/website/assets/images/logo-tines-90x28@2x.png b/website/assets/images/logo-tines-90x28@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..40d5365a095778ccc43046416c38a8898071e091 GIT binary patch literal 2119 zcmV-N2)Or&P)gm=O^d5`5hcJiZ>`%dcNdnU69ypyVvrmd-nj!B@CMsXBy)x@^Kqlkh$}=7L&3ABHO7eYM#PNZzhdgb3?c@`(znxhC zDYVIIK6G-6b=(3{>=Jg1eMBZR6YB0wN=1sk!}>7TmHP`a8I39TgP|Xw>HN`&z_tjO z{psJ(hyE@FR}b?$vP-o(q|mx`6gVFO=8)ed;Ti-pWLAYEO+S{DST7gH<&c&7jF1AS zSm_MsYi!ISA!CcI)Mtbu8>v}oi5`uivTiYGHT4pqb(58PW!_kh?{TUme<2dc*-DNWyXX?9F38$cSnhsQ4%xzmdX;dTzO);pvF=040sYE7{W!xkd8vDmRUb`i*>1xl{$G$KJ^E~F$Oc_*V5vmf3XhavtL{CH+9ui_8VkgHM&yU z6iBB=KUH318)y)Cz;uLz4QcMN92SsvH<7;8(wZ9NBc4x@+tTUxlhAW>?V9^RTEyWR zW*v!{55u^VDoP$?<)*s)b6Ucw@{tI{A*QROQd-hfS~~8yA5+qO#`M6QHgy!32ZMib zpc(RE2#3ROCspvXe4i+A3b9}+gR6oo#36O1W(eO-7qY5xhxx&Q2L6h-!@O;Q4LlkT zo483zlN%iFvc?FFJw+6i63dmE-bFLBEJsYk5NFHYVIrR$mIWamFrk-)<6?pI5U`gw zhKuwRQB+DSSL(ZkzDz3FM z$BFB1(HlTM$PK35hrJ;m=15-+_uUV92)G;C5dj%ANPCfu%c?AOLAXI|U2<(nFGZz9 zT&0!@AR`kT?rm^V1WqX&=}DPgbxPOT-i4_V*#`Z0mizA<&t+_+g(WdV`f!-bULZad z0xX4v67iH;IPzg|Terq=O|$U%t^>+iTGDaH{ar@v|K32xsXth5QsFXq#A!?Yh`!=p zDpOnPTJ$^aZSRnwuQM4N=P((;Xquup)S$kq2cBM_ ztg*(rLK>F3!SXVbsF8zPEPpnFIr3vly3&$n@n&jTPn}YzE+$j6e3#7M0cl<9;MGR| zE0*U)w6I%Su6(x5`pSW4ftkAb7Us3dFM$?urpr_0Yd~7xIEMP z0FM~g);p)mrB6+*`LlMeMOwRETztf7Mb^j=j~;2*%yXgqqYV$e}_J#~#!r6w5qfx;)Gg{v3&hD-=8?7;##Fx#RGLitX9G()f8a)Y-G zDtCdQ*M6g%AnRtc#&p2}=|E*E9Otv84#%drdz=R<54}g~Dab|n8SY6SE3sPv|IA3FXSBc^BA&bln$9-o4RSMW=Crk8J*wk2R*vCSxQVx@WeP_AO zYiG$3=Xr_L#rQ0_EU+G~-|6;^^OsmYqsZY8^SsZ_k?sazG?x3wLH!nMzcs?J9=C8eb{|TlsnmdbO5InnUAtwZzU%_Zq*Gv`{`8HvG8D$) zh7C6_FuEb`~41W)Jxlr%i!oId< ziWa?(UQeVU|M`gUSw!{v)+aH?X^SY34h5E3uUIhj4SdSlsFb)2ORZjC!r!7&I)U(| z%tb&R53W3}9GU2`*BX7RNC8p+u6%FN&p4eE>alDuvi3-)N0D~0hfHk?&`iX-55Wg{ zhtYb|_0*%bcpl-H%QeQWW$%?dNdCdtbI(E`4Qr^waayh;G8qpT%w0=pw-S>b%v}^i zCgVwow5;M?V&%zPAPnZohOPdEv&6RUqd~UPnHdzYk8%sF4~KnJTp*K~iGVwVLorQ` zIM#cIaUDU0c|rY5#tQ+z7~&QpkjX@1kMpkoApf2tlZgz&_N(@sGf0_CEEv{b+(h>l x$jY1v;0ke&Q?Wb5Q9zmsZIRy3GGs1*{{SqU#KQxgW&;2K002ovPDHLkV1h^(0$Kn7 literal 0 HcmV?d00001 diff --git a/website/assets/js/components/scrollable-tweets.component.js b/website/assets/js/components/scrollable-tweets.component.js index ed7030fdff..f40a2e9f57 100644 --- a/website/assets/js/components/scrollable-tweets.component.js +++ b/website/assets/js/components/scrollable-tweets.component.js @@ -20,7 +20,7 @@ parasails.registerComponent('scrollableTweets', { data: function () { return { currentTweetPage: 0, - numberOfTweetCards: 6, + numberOfTweetCards: 7, numberOfTweetPages: 0, numberOfTweetsPerPage: 0, tweetCardWidth: 0, @@ -110,6 +110,19 @@ parasails.registerComponent('scrollableTweets', {

+ +
+
+ Deloitte logo +
+

One of the best teams out there to go work for and help shape security platforms.

+
+
+

Dhruv Majumdar

+

Director Of Cyber Risk & Advisory @Deloitte

+
+
+

LZ!}ZNLuFHv!kz@P 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%0D^Er!Ao;oSaFEYHNi4$44X?k?d|iO=&W_>qcS_ zmDPQ9>%Vd4tcIMtw_zB%(F&?_zj$agIG$zio9!Ypa;1Aeu6^GV5)nO*DxsHJ4~5W} zdF_pOb~WGd!(oH3k>(mAsL4xV{`|mwL^bUE9d?LX77l+lf{4cMVw?R(fV^<9(taSr7y4#O2Sg+smV5v-?J?73avz>-W zqH*dcXxB@T$v}Wd=gEKkX)?}2qdD#W^5oiF$#Th{ScZ?C^&Vapy(UW4WYs2uOPTvI zkI+D>MLrO-g8ZW>`$LcamnTO> z302&{4c%4vFb1e~@rX%vAg;k!pFCk7w{88}&)qes^fK0%5P_*dZ|-ZReoGPZ4L;E40t zopL>?GiA<1(%Aj4!0|*Ox9`FmIlBFWBamX|V?pcGL|08ph_v*DwD(IWU1-UqrQJ_p za`Fh+3oH%64IptoVIs}%mp*Oc{ktDYZbupB_LaXYnB3=1C=ucxvpN>5YQWFWVde^Z z1P!?hb{*X4-Qp}{iWOyviH2t$2#W+kY97d==e9EahtqnnV0vSE_RN2l)7%7TsX*?n z%;$RD=7R#BhfP#d^%BP!&4y!nD@Z455#cwWz;5izLJs>nzxXbo`!7#C7S?(ybrE0e zYWfv7E}(9)9eh$hEc)tcaI75hTO>@EcajLkgP|`~p5l>oiIooVd)J`jE*1S_9xWc) z3;z6I6v}~?(mjB!0*0pKoUhigV|OPd8AP-V3(5#^;_WrX#`7=g(UxK83D2!#L(~#C zLqZbwgxGbxOv%9S009m(dVV?Y0B_VR3=xZV1`?db*N91E4lM@iizAf0sXSdo5uMxu ziG%nzn94NG;>}me{)(m&$pYC_`XwLDV4Kl*4$%FG9gc%=O?oV+Gh?vn*R~g&hBrsI zTs^+YeqkQ|8!^ABs*EGTGsujg@?t!yidw)8$8!#@HlBB_DCNqh_35glT_SFIU)Wi2Fwi8( z>v5h1gFx~FXy!rFh`jfDVJhDY!BjNK1J4{!CQ*f~F2 zsDoOD5*8AgSzYl@N@eKA=kHp+4F2-J+aUjc|8@VYe)zejaN3UfDPG|n!S-N(!Lfm< zH(-bY6q1vUp5(WKLyImAF?6QxzC3QxaknpivGkMlyMclufoVXQ2rM`Ti;Q=0DjyDf zzdr<=)o({L<3kN!$GoOEi;sqI7BpIA)BGc>g3c%{+$D$kkXJ>Q_$4#B3iEA&c^=k2 zyMFugWT%(ibSf&7ckzCb(8fi?ZDlrbSh)trwohavKrSCzX6zbM0; z^&D2}35>h=%3mJJX{1wA9sngUOCg(aG^>#x5mxSUFVF_fn6_$+tKlDeBomq)$YoDH zSZe35P|OH>_d{S5g=DA&OI;h1yFJ)kwU#Hca_R|~zl~4>2cg}kZ`lpx-*lu0rOOe4 z7p;^)QW~UR;;qi+j5`cR8=9_}bV;s+LlP9p2gqkRK*oinF;m>X$U(bV7;j zqkhg6O_|T>%Z~!8fLSIxC`UYIdM>q|Vu?GuXCAL7kDD9Zy^E^ZfDPzkpv`=COL@OU zqm^lJ`^(SLxln2^6ivT!5qN$=#Wbh9JmxxUn9Z123~mKEh8drn{_e-ss1VLVK{7yAk-LnB@lpA1JpQU;bWEa>^Pd#l;hxu1~@Q z6up{!<*bD$UnXbSw7Dg?zvAZ(7Opmk$YNjrk^zXZ7lul)_hWwG+ycNxl7>69t+at+ zDwo>KUx`eY+V=C*aynI33blui4P_0?cI6LP(qz+MB&}RT-05%dlJaPlF<%0`!-pTf zxuT*%W^)C;{7eLgUD}>O`!Db(Y2vExrm8uT=1b{RsMR*3yP+8$?eZfV9Bl?rkHSWqv|BQT@Z$vUKP#`cRf?m z0yoZp@*}m?AvWlFlPefTVjwnx3X;)OU67Z zH9`yCJ{Ni zAeAC%Qg62%A*p?A;|uGZ#0X7?75y*I#{{qDzqRpL#^u^qp6$2@(Bf4FRNn4wc3%H8 zJ^NcNsd_zo2x`EPnJePCn-P=(DGn;?b?r(mMyr zw0$P!OmG!HUs|u6hxu1g4>39ZBHtYUHIN9^JeoUj_($n#;WrQ`MGk`Gd-u-L0I%?$ zuY1`A4GaFaUd_YCe`}MO)g`$c%f7PN?axB}bI?YUL88C|`c-ZBtJ&gM_6QT&4|nSp zzdL@ju6n#!<1h`mq?Q2J34jnpwxjU8Yrmi?QKuVXAl}^E&$tkytS&K% zYDzBiz;&$6!=70~8}WTqyJ@~OD1<=mDb}dzeMTa+%oZuXm^597VVk5I`)+DaTHBu%wZFQgYh9@;&eg4-^01DmrpMe^SNtZKRKuat z&o99BMrY^`9zPV_mB~<*a7QA7qe*Da$utbjX!C* z;MNFKlydQEyQlCA2|X{-g`B1{-TN|jMyR6F#i536{6^-+nv@}EA_El?aU$MAj!S-2F$ox2f zU{PcE?({3X-)AcVSep+7(yYayRC!Igx6eJ zDz!}u;^9hw4B(kHIuz#ngRPhq6noWYtAq^AwfLCvi-K;9q}?uorpZ@X&kHK*eEHUp zHkWP=po$3NF-P17>a((ETkA=5(IuTn(-cn9=Jjm450;NXDkcm z4d$wy5}wedN?gaw2Q(lXG$i6#CEe)fA~_<^aXr?lkwhkXlpiIUHhc^NgZVW z?7m^CZ?k^0uVPl5Po@m;0=n;({s|MzWY@0H=T>@IUSwnxq{iy*pM~*naS;`(CzaBS z-2LdBd@?NE;2~dT+-*(;vt0;sa)x<)WhxUA?QtfY6FB3o^38Va;90XXlM!fSVh%w5 zm$vhv_uW1Ca177%LHuUB|B7L(@B$W(`BnJaVJiA5^`R-Jc!xyCDRta9wUSDD2;M@R zTC@x-;GHG=I-hNi4wM05K*s3SvM$}GmYJ)X6rqEnF$>-hS1Kl008riqun?jO$nl@M zmjuu$OUEz*rN}vvWjR1q(5x*Nr~pc2BcD^ZFJJw1t9sQP$YSTIALNj*bX=AAT8e7Zji)UyDm=aN??OAD+7 zOkbyNESrVTT-#$iq;*GBz|=5W%Zi+JFH-e?lSjX8ZvxY56^?pnfX~)%bOh}WFF{~w ziJpLKB+-FLZ@HM}kE@4^+UyD>o=KNM-w{32rbLqs$Wo7u>WKXa*NByg@8Cfnz?ZOu zQV=#P^3CIrlL*c4`<}Aj3L{)l*(vEi3To_cL!`j%%mF`&KY{K%4fRKBs?38cFAOYT zdnF39D+7Ow^);Fx5sAzr)tgGVj$oGdSyf$o*kq~<82JvAYu3AfFiIY%BUTAV@$hjo zp*_&#krmYuotz#@f24tIqlttDo$GC|I0i%_l<>b92A0GPAb4-`FOO=3f#C39ME5F^ zz2ET?LjX*2ySs+job|l@z|uTIq#z4{Zf2*Bpn+9{SuYfXLv=n5QhLVkw8!~{{kx*X z|4rQE|A7j7kEx#E@fad`IX8=YE5QDqU+>en)Os}CE@iGML$~jQ%QHjU(j<(`Ju0)P zF1;w28{T=32@_h1Y5B#HXKx1t4m{?4BvGu`QYZyxiRz_I15m^b5Db-#vp=)HJg+7H zkMcTP@0;>EU>Nnb#OzhjKujNY*Jey3ILR+*7y4ckpM!A`5UM3tGD=RCpzm-? z#7S1S?;y?zY%ihPllSC_ao9jZrC88WXG#(LbwEI_|Astu8Bo=SIji*eP3__)9|DuX z&y6 zI(hYK1xnBaltFuE;>n<38v44U{mSMDmd1haXU&uYW3CWIOby8BRet6L_&+$+gnYYR zuw~#lb@`j#tXQ8Qt?D*D&oR*C+M8D^LceZUpPp z*-ndQC5kkxqiE%UZj>cd$y~E3XsN}>(g+ehR(D>6p5$f653aMVDN`VCyyJa{QpubQ zZz#Usb6Hth2l*oGY66X!Q}8|pB2&1&foQ4`b(;zPCOB()wBin}apLHB(JztDoGb3n zpmcv^eT>^-5d=u;82$#KQctG z{t^R57y7=Lpw=gM{qmddGB4D1s01y698&LCn%ykdg`sqP-CeMTOd^-K`J`q;S>#>E z-$WwaIU)C_|;Sv#vMx88g!F%fruCNTe;!d}aNwJD{LN-|v+JN=@?nn5a{8F1%x z@PS^{js@7%SeopjDxup?DYS^f}YJrIKC7kbP(G$)}EN23zm>mVPx0ABM)wx--TU zwl!>e<=$qC)m%t8aMW4Z3y|FcrQZ9f(=5&=2_{&70mEKuv0zsWM$bvv(EcpBT^A)) z2V$G#_wr{p|2dW0{D^ia_9fZwvN6Sv&X77pOKk{&&}eK!E8|YEnZYKm!t5<3SudIK zJ}{y~$neZIJ=N9RyzaEIS5NolErPgrpGn^Ryi259hey-)3dZA9ZJouj)Ks`qC+`AVq5&nzoEQDcz*v@k ze1HpPc4F<;V*TvIdPwfG#QnJb3I~x>tziXeX~?%x&3_J-VB7-7;)B5lc9vYgcR9_qMR}MHersyDG63F3iqWGFQ0hVtvFi#;P~wL&)+u%lOk- zI^g@#7}QE#K+`ngN1u0QFRmDL4m-!p+JA@{ekHwU@<#A@YLCVOJNv~}b2&rvHK#o= z(dVY&5agDJQm)xG+pwnfKKUNXvmz=eGm`QG>rt2<-Z(g0Ic8*&pq-mr^R^S8%v|TS zs%q6*M|WZ)x- zKBVQtUQr0-bJXw29TrDy;$i?3t%N@5E#lXkee$a3w%74h9a}A6sM%Ln_yZDdIUseJ zpe)#a?Rmg=+S2fXsT6?UKLLtcP1WO`bR$-Bz#moYL!cVmK2_L-k&oDcB%kr! zgik)noC|; zptpqUWe`pf%s?9~qw|ZVSQO5~%AENF%&AsQDX*4zTVBvaNw3qNl~^Adz_OCT&F2up~Q`Lk#v5-j~= zS7l%fs`wEQbwm69+C8*uebI6gItS29J)tM{{G;0vF!Y7}Oiam)T9!*hm)EK|TzSI- zvF26D^xN1*W&^Q`t(qMjtpoJD({rD71a?eT4cQAfVVK{>x2W6BYUV}0Gy!I?0 zF3=ntr*7}boJvs{{!DPsUMoVF9$`XXlZ9V1aN)r$@v%WhByi?-^EzY$M#^?LZ=^}W z8hVTb5nK`YQkdzhqj(OAl~n#Qegvcqw;;0d9mlY%W&s?+j|cF#M6C+*y_|fwCZ5uV z2Tg@f_gCl^aDFL);RIR;E0X!?yMXqh9TSS(*7FOA{9U<{1JOB5#n*MVTew`+(I@x8 zqB@k0rg!!18O}AGOaLWvaSncj&|>yjki_azAxyuJuN5;;n5Y6}nE*c18O7UBkqNu! zZ$gV@ds5@AUdk z0$DXwn$ouQGB9?LEo-p-){{$^?S~_W65av3;7e2;{RmT)Iqnb2(xjewj!48WuCE06 z_ZrtX(rfkoUsO@zZRuC8(abMLZnVy#r}fsjJO2WaW}neLi|o(7|GC;hVO|}a=gg45 z?Ip}Ld>v+WmjsDGebKuZ;1WVrLH%z;m%EVU)FW!(`<@4l5fG~Wd)rTUWM@LnHA;uz zr#lF3`i!>>AxpXEzAURRf+9o6YccGo*~iaUBz$I*xe6A!>52it4(Ra{O2+m676Df6 z7bJ1zpW%5~f3B6dN+JRIdkJ+)6F*FLxx@(V(Bl;Ik? zy5zPD=bP4%>5PPnDOHB`c)WYN2#%IF3=g{9xOJntf~M1+&`i^kGRb-Fj2>F+oLH;t zE5Wel#?qkQcI@lrdH!5PmOg6JWCJ_bGu-^J%(7$W{;?Jjl?z$X%75q50!)@xMgJRte;GbvYlEpjVm6@U`K+6Rdl`vZkR zz~`3xW8Z?dY|La)U6bjWX{SH>C=*G&99QS(k<&Y#Va}qJeptKe!+jQk0CL+;YNK>~ zNdR*IVukm1p4WOmzC-N0B*ZRs@&*!;JgQFP?noM==;Y?EgufOw^%2@&2^I;j@E&Ma z96tz0czqV>r|@NQ`B`k+uW+L9cmjVK6OJl-0<0c%n5QN#1Tm*8fDF6r^^tvu94S*! zTGUKxOFiQnn>0=x>B9uxzs*X%q>ISnDjU#g!$Xf5>kzUhxj6bt)-~_7*nD*a zMS8UPLRTcz&b_!Hwq$437qs`b?W9F=%qe)EQGDZ(_El!QV)@B<&GV?w+_Oi z>a~PueZ^~;Mv23Dqt-fmn|R>4k^tCWp~v%(MKL~fApcLns<~#R)Vaj}UqAvSAL;xQ zA<$yZPDPF5wk>jlRTr?xMz#&58}@Z|WDay>cAeNZVvfYG=D_FL!_)ue83pK!2pY4p z?b#fztV8&hGroq^-N*j9RjaoX0E8}JOU&$h1lLb{NWThMRd5b(-*3*fgT5C8)g2=Q-`S9;i64BJDUIfsxMDtzD|p{>TUvfh)^sM_gQ@T>_`0QwC*i33!8H zpW~N+(Ooorm5r6H{IZ!ngIX0YE}WJEm_+Vm1n@1pC{aSsWUJVnk;W%5wW>0}6j(Wx zy_vlX2gzpnp408J9eMF#)b~HyDE}Xet8d$~nfR~w-1#{-Zn~`cqDhCJQ0VK)1@1Y< zC3gXjr^gfH`2(EJoK{aO0eB!>lVV2m2pCD7wXyA9Ri%9$CKc?eQNEAttSZ&4o3Bt! zznD;c^Wp^F#_iHAw5yn4YRwr%p627Fc{_7_pvGtRF<~$C0^D*GoS>xiTOUVJB`J8> zw9o4~x=sKMhz&eq;r~;*iX(3ZnE4n_zpA#3MX7TwoP^Z^dr%A%bPcK7a?N6oe6OqB zVL^m`lUWgpZf7<7Gh&PL^t6WFpx}~=-gl)0v5JQrCS0Fp4}yw%#;u+D@zwN={={6@ zcQP;j?$l2pR{rtvYP8u>5uduEO!c4-?<}7@H~Np(h!2IKv-4$qvRQY+>w1$NbNi@8 z0rpXF@w#St+;GRaeC=kw1WXAAJM|f}xU$Ixee!oBY+YVBC;VQTPG)kQSGZPxR^fVj ziY-0f@Dd#lu=LYhjN2F?6mxo=!t8yhCH6t?Xj~5r5^~4=&n~4z?QT7q*29HLx`rfB zDc40;?nZe3`p|I=q}%(PeD325G|{doS#yb1k-v#2FH9xyWK=E2zfM*l=Z#3>$$`Z3 zI)|p-mVFNn@$1Kh6zj%1L}mGHh_4$4E=R{JT?_r^LT2&!&cBcwia7CG@ocvo>rQwq z)$eJt9Z~b2`J2j(s8a!NXwl6*U%!o}3tk+C+#vD{abHdEq95&~UBR45NVCaHCLB}^ zB(C~Z0p4*>>b7^VBA1lG>eP8puP(wHucwB06{!0oq^h`BMy9DH{L!CSA^XP(EY^`&ivqu*dEMg+lW*U$nEpb^;Bjli`psW!H1(b zI9V2CXFph{i!S|*!AzElE&|mIG>Of%GI%);WC;z;`3mRuGXmogppuB1bg;_4Y&VRi zS5JPM{uDE*5y$A=T>m7e9DU>PO=ymG=u``=9=^PSGHgj-|kUohmEod%=Pav&-qy5al39a$_%ymQsf`yurze~CWC z{`l+`*k;@x_N|t@dZ0!ob@eX~B=3M~7UA0B(5VG{T(N*z;CFED6gh&7zu_-C?RkGj z2>$09t;Diwu^{d}00J)ONELp{GS`tMk+r(6ofue6-`PIz!Y;|nxsY>R(%HZa>^HVp zUcdy&*!U!wr~nYqwUY+9#tovs&}w;~VQ|1ktKRwa(1UC64KPfl8$#dSb@r9jkE2#V zdvp@Rz_RjqUTbvQZPaU;6tIcdaKB{jZWxu-j`zHIb6~KP4iMN3|F61q)HnxKB>DGb zQ0c=dzKqxnJKCX?l>1bCB zioKGM)0}O6ZlaU8|6H~0<&ykn)-Mcd(r^3vXN$tgfA&n`UWEbCYW~UF*YRuhh%uK< zD#weq(&a$TfBx|fQIS|~h-)kr?M3J)1fEZS0<3=)gvJ&{MLQ(t1=LnJZ6c0E!m4H( zL=u5DYtc~yP;c^d(2qU8MEb1#)fPYvPtrmCrR#Hd3EboJpPmjMekDjrSpFo*Wau8= z4^4C&THbpblNJQJelGgx^fGiWY31Tm?kU}Vw^_Tj0bIDH7nuX!%&BJJ{4k`U@<0M0 zrXHVqo7|zz`6&76S-_Y2=}c0p>Cn#5RU|+b-c+iG0mEVK=JX<>0YCKPn|$Zk8&w}D zB^jFN$$Wu8`;lV??IQ$qKljyOxy}3qGk@R3Jle$$ZlQ6OQ^R3TjVG(xN@rZp^j(&f zys^4Q%&TN(r;j|d1Isr&{)}sgO}zDa$pU((ncDYhe3^$~>%2Qj|M0SjLyv2C!JsNs zOC=eIUiy)(kuGinMK?1R@ZJ0z%|Xs>9l1Y|`-GfkZ(UK&RQvff7w# z>^(^c&sfc^bj#IvRGoZSewN-5bo`pO66!!~E8`w*^&=rA^3mt<0Yd_SW$il^y34nK zsxx)XnBQy?*fYAN!z*#I42{Aw+g=Vn1olX|*)UJbsU#Dyp+qUjp3|Q3(v=>5zfIMO z&-u`eIUK$xMT$`T>65XPm*B-~udgjYMasa06!hk{r(wDQwQ ztnNG})cu6hHZNiTzFf05K0Oec6b{)OPk>Am6c0;F`H4cXAk;rgw_K{Nv)}l%8 zjPoJslPf?I|2#OHc;hE=)?g^%Z;lbsATl_6Tz~^(xL9lmC_ryBC$gp!Y7L>K-9KeO z{0rCdb^t@QGjDmoE4Wxx(c5Z5Vadu7H5#bDW#+e@CbU1uYDGrhdU;z9-f=G>17BqD zi2GF95CnCcRIjGnm~1gXK}S!Ul9NF*>`AP+;kDqcX7S(BQ3-EdLm`anN^>0&kkaA$ zn^%rZChn%&-rgT$cJL*6HJiNR@$pZn9A)+WZ}tT(@QiDd5s(_J2{!Au;1s@q0jO@gVi6Xge6p=6@kuua3XU7o+uLB1GY$1IxmBB z(zDh#u$je~o2aUdsWN1#ZAKNNo?T^nHt_#1!DlO_+CpTlWnp z4FKnGLmxKlNf)@6Kq{YsA-5|>{stok6!cTUEen#ykU2nCpUhz7DuG^cS305GI4?niw9_>_J^kuWf(RJ{UO0M1J& z(&;4F5jL)Z8x7_^&>y}6zW7qZO|BdaW{1~Tu)IJ|{MMTQRdvvk2Rh;LtOpM=nqotr zY+b%QR!YS3O>IC8N8a>3?c9%2u%LHuyoQ;gvdAI@WvEM3-n3pXl@!elR7F}rs5KJ^Z zuwPSU$j_t(=wPRhaG5g@l0iy!$%?8?rdeCQEsR z4Fmp*N%d@np-NB5>nqCc4l>ftr5qrSZ=mO(k4MpI++e<(ap{&6OLrAVMgaEMx_ zOrC_cGPHYVs?F=#*5o{@iAGrbhyP}3@jr6U|8pk#fBoox%^Z-ZbMM1KDN>jM%R5CI z-J}J9*y$T1tEgy@*=KVGzJczlcgC64+q*-y{Alqk+=sf>1d~#JNu;&^eOrQn=un!I?)qCvBfeQ%Z_Wu(maQf>3u=%w#-&Yp}f`Qak!Ti5Ge*1l4^L%hm|L>9aRep6rwWyTh zr?Dl>$=i9O$OK02`ssLzx^e%9^6Fz2-v<9z{q_GZf4A$R{6O;2$0H{`SO2HK{P?oD z;=#g0RenNF-#^NIZj_OI$ReG$Rj{`_rX%U`P4-|*(WO(A_8hIYOv7?-$>NXn%H&mU z#2%0F^BlK&0*&q}M9powTO@&+#jyVdvY!kMzc48dH2^yz=GNR3xomQtNlJf=ho*Q{ zAY7`)-n4szOl3=o##zP=GZ?3fO8SzM?UELU0b&DxoGN(a$2L!~Q;U->ra-n`-x6x_ z*{K~@PjU@VCR!e(gO%qE_DDsoki2spcU|6uGKGioLd3rIMITzM*KTHH< z*f7FQnr8E))4^2#-toMFQLp%z;Kf|-K8e^jZi9xf2WCFW#_Imk`fTS()zb7}3ffdit zvdHm6H^Pz)_wns=e8t$FS--@N-x4-Qm=X_Yd8|eAl2I-e!HHFu0ZPeSdBggs&%<5$ zcQ~bF0;{>ddf0nr^Ic;r&Nu4zrGNHS((tn}1|Q>R!R~CA_xkJG{@QCk?tVu!7-jK@ z4LpOKbKzs&=QO82pxw2CiLZq=Sv_)hjG3!`5ZJV}i1HW=D4{QHQ?#4JAEd8W2A*r9 z?L#jkZD6ar_P1H-ssIZuAr$;HT36RmeZUd_1TwK(M&5#U2xr^V0 zw}DfrbCKLTCPZOHOgie0z4kC%5~Up#KwYdKW8y0@!?mkL=BZZd4LQHO9O0W4%T~IF}2RzdelC}EV|d16@JS3nylDr%lu``0Uk0B*B;3mX*U8HVVhf+^=IrX*UJesOZ*K< z#g+R7K75&m!1xhY*K$g`4+T#LeLnX^vLqi4{s5Xta2@Yde;~#9M8!CT#Tr%Bz+~j+ zuea{srBEs)!mO(*P-%#KJwN!iQdmc6Wlg&o@Z*b608acQiC+qX8nn4~R>UP5{tkB2 zA;uf=g1D?tvFT~O$HLM`@u=5wm&{jGUQH^mR-B~Bq4P@Um-f(2#7I5USnn!-%OIJ1 zG<=RPy)c|moQL|#>7vk9$uNOY{ z`qoECIfL;~5zPIi1mepC9WLtL9^BSz62kpL?K&48Lua^G0-#2H7-P!3^wm zJ+^s*6||OJ+CB@5=xnnt=%GE4H%Vl@)N?-F2T+27mHL%NN)yM+3+-~4Rd zqp2IdX7-7@rPM&OT(ao;4?ex~N*6jWhsi;i0K!%jRBmCRbmZF$BajJSyD?4%e(C@66pR&r^$U8}*DM=f56TEs@=$6W83Tk> zfA`Yzi`>Q6)+Oa(90>L}sWb5{wA5KJt*2m2kNW<>lV(sxSlGWj7cPOk@>>K=4+JRA z;=&6qD}hO=UVlCn$Hr%iwi^5b&}K9K#4X1Y{MT4}!k8KXpWm5ha`Lgkf)-6u(RJqp zE78EAs4E{hB8x7<5e1>}&NXOB_t1w$IE*w;XYcI53Z;ej{_=^F)wdRoh}(RyGhmVH z4PhRTnd{lom^v76111SJMU(<*(yZk~mSju-sZR6fd{>^T;gzgsUQG2l-|rvCX*o6) zMG;pICcRqCXL$_l;-{tx6rX~rb*c*2pT;eVbn+RrHSNx)%@%L4R`y=byuGG~$*Qtqv;1DC@EPz2CmRe09@$$2}JTo$M810-2-3CqH+> zOPS4`5)(NYXpW|5meAKVc3`1Op~thkJCyIOuPvh2Pc|NEe6 zP_DE~DQ z-aYC9JF%;IHz`Y;MlkoI6kIap9|W>&xc6q{hO6IA;cprH(b0^9ZE`)aPw;pqLu?HS zVA*Vm6)$ZYBSf>FZ9N7sCbYpDJo+$_XBBV@Diy@*32NJomNdZl%Hkd$9|3E;4^7)3 ztmq7p;oWnbUF>C^d=i5T#U--Y?We52l(sLd8TI4_Ke9ASSH&Im_aI^n2ZiyB< zcLR}Ag0;e-hArMn{yTKuO12S+ZDc1a3fp^gWx70Hp*l|hLBekb+xR#MOW6yXgz*HU z6*7m)IZ>H63a0SM8vZu~8qmD1GhEy_d~*OGQU5i)HHBpO6J|{bAH;>-V?!{rTyNYq z07SizaZ~%gCgddzkyC84N3f8BCY6B!5@D9r{;4#Yc-NehxDwAJlF zV?_@(gO7I+j79ymwP0{Ry1YnL-r!mP{nO=AiU08E(O7e^GHjQajId1l1vrPwY`)@MC`iqEwu`jPuPsQiX*O!NijJye;GeC&Hln>sPBe;b( zO}D$r^_q!vR?Rj^5i%h0oZ|x$YtkCM^A&%qtEB|OTeW539nMO?ZvjNZDKp}jCWPSS zCxRFko^;;Vps9VOc;J_IVHSkB*PJf)`d@!bB;rAZn0Wjfp8khk10TE-mm z-n@B#Zh%)h3(F(ANt|DtcNvNO&7RTt@R?f?j{VXkkaK_M1jiOiv#(NgLFHoWpKp3@ zH2L$*IlA&Y;;N7(r0P$#H4o|E}B2N1(i0>Wcn` zcfp?E0$P?{r4CQ>SKJR_%hr2rJv2+|AV+Ufrj$``-h3r zYFa3SQ7R(IR<<#fkc3dkHWg(j`|eUIWlbs)hQyGV2xEyM`@S35hAd-@eGF#I%=h{D z{hs@r=YF31`JemT=lswAoN_EPbIn}W=X!tM@7MeFe!XP17^w}VUt={)yM#fj_#S3j z`1Md^KJGd69ErBD))zmwi3iEjuek3TyZs9oGERd{ zT^h#Ck!BL))Z3mi3|!I{mqnD^!Mj8zu#wfljx`g-R-;UmAb#U}1NlYT3dQFY|{WSqFVJzpXj zYEDbT$-99|fxZR4SepaqfG5BW8oHi^Yp?A`4xpPDMgvip7U2)Q*mq3d?2U6I<*y&X zyGiMFwhYMlX}}w`&VKJl-&+=TtcyNvvTIFp6eKjt>9CvsQ~HE9uLlj@J~(Fx;n%eL zHKR>j#uKZ`B?7GvxjI5Nw)6U?|6{ku{{~EDdr8Fc%USo+h~KI0!f${71|Fa1^-;5u z4(H_<|82x z1G0L0Tm$?B_EGZHcP-I4U!aM?{9C0wNv7dOJ%8O@t|a2e1FVTnQ6oo(k{?C`QF&sP zWu3`f{IspyyBOLsaao0e9!|Jh+8n!~rQCG3Y-bK3Wzh3Crbxr~Sd!%@6@~Zx|8O|R z9lr5GC->$hUX3SRko%hSl@~!^WnnQNW8e(NM0ooqrw zoh31#TGheJ8^vf09fe=-v}xPu9~_+iyy%@Y5IbRGfW9iNGU@$C#Cz3UAIkTot|6}I zuyBf64xuCYr!KU9J&{n(u>rF2(?89<6Z-lz33ZPG^8Nkv9-bTSK%?E&U6bnkmelN^l)=!J z0FiG}|8Qg~!;Vl6U-LK}(W%gP`>> z94O*mtZW;DU0_#Qwa?SfgSLD<%F@j{2fOv?zWTLe9Gr^`2u(Hx`+C7lt;81q37g52 z2yYKc+m7db01<^Y?ely8ScwABhQm%J_nofemXN2+honOPXMu@bZa|XA^RAhtd%7}q zYtIW+hMNF#n!r8fP6c9WW)lvFoCK96z(w?&Ru;F(v(rn^#qX?hneKY4^Y=&7qRF;(?gDiM5QyR+Q5(KV6lc4LVT zR8(3RW@?}N=dvq>S&cuPoxV5T-R(bxh1@Ck%SB&GdMPINO$Wdu*{75;;$2Bnm(yNM zVYa5$3j*JbF5Z1tlDJcxt)$xjbxU7p*}&9xX}hC#s+%m&%LSnArPcU>*>$Nu*xpC2 z@Ev(IZHX8GQ5znrrJxADD@_nW|lwwGc(ZG zGelqfL`d{!{4w`~SMZtxpZjn~lG2`n69n8uKx`E>Tdww|HG#nTHkj<1Ad~M-p{Zl; zl%FYWR3YIDr@+*VacpuX4@^9|{8y@ArzPI&eycQNXuocbf#tz=4%(R~}lzQO*p9n z61TU=Si&2=!y5Px-rA-X8qeABUsewu<=JtNr4;1o{@Djk>2o_h-uq=!X}|M6(cm-; zEjK*C$FY?y?d&0k{lg3vI?SAPPqS` zK4$RsC=A?P5bJLFkf-=LN6(w13P6B}qOXr*ylFTb)~N%nnLVl}yn%ef%+v6FL>@~zx)rATR?jQ; zD!V)zL&^z~!_@E6i2l<=pL5uV1DG${ZhJS&-01H|VYg7k{FF41k)01%2C|f`*y1e~XfrijL`{vgKwTn&q+`l+e;9iTC+NhP_hGsknRrq69^WB+Xa0j_ zQxa?6B7GGrmaK7A(zO!s0!Rv4;U4~Jw%y?z#P$>*;T6&GQN-@C;{MpH<3O|37THFl4&)vmAB=4ZjDTBqcAmgCW_%aLohER=H+kDiigft>4%ej-`pcxlW zurPF&yZ7j;FqF`s;cNJFp*p0khXU<${o@z-YNiCeQ!8_5IA( zM?L+yR+ov)?NRHU7r(jz^{Ut1UCA3c(XRd=p=N!N9ypNS`~h)UonYK+ew5n|@a%o3 zGJxvUz58I@yooESMg!ki?O~qM#=mAf_)@5gudncZ?%8f)QNLYDyj`TPwkgldBNcA1 z26sW)yvJS4$ZSx=OASSeC>U9?B>O(re551J5f_R#Tq#JpM^&*#_HRqnAWOJDxqevA z7UP@^?uC9b=^ZZL=qY^|w}^2xuLgoVJY0LELM@4tdSZHgnSjTM-XI+J~cf@8SAX(R|{245T0cLp8o?P5NcF}voq^TtI zVWlwDaG0Kw@DhN?;&+OEG^;Flm|~#z$y~!CHcrf*i$fSjrR5JcDa1i*K(f(nwlf6Z z#RoX_0qQw#ri9zj2;ciflGYL%M4ppJb}2fJtnI4Q4p5#V>j4$ZkQzsu6#F;>V2*&g%1-JHBZ;Tg z@p&J*W;^_+3F~5F$s&GI7zlnNt;vzTcY1NFzm17Eitm3WjP|I0zc268J9~7tzFI>2cKIG=?|tz1)4iwTwU`yHdE66z&Y@e27hJ`Np9u!FU8MClE}n z#hfW+z8=4@(L`r}5R>iQfOh2%#)z`@4(uFRDHxQ#?7g< z{lj6$F6J5AI`U!Ikk83hhWYyQnNUUc6TcSQ05q z=Q}aRGJj1|#CNct#1B2`Av5PhhFpMuLvUBwE97l3Vfdj9pOXd_v^`)<>>jGVzX2MQ zFLwz&?7~p4F6nF-rK~b~4*+~YXl05k(zb$Kpfeq`-;Z4YTJi%!0iwU7z~3GMV@mb7 zhgtyn`GKeTUhSD++}~j z44~fV&8+sJvyc=|jb(kL{MV1ur5->_5Hf|YuNu60C}a=arfE&d z!VeXe&oWoXZa{#9gy+D~>_pABkr`Q3RM;ZR-2OdrjD=+MgN;a*3X~%hnm70WlA2V) zez(IeLA*Q;GLnbx^UXUav@^G|NI#Sz0I7nAfLnU*MGlWIi$Q|CD+*NHGcPFLw|%M|A{c0XkxLNB^cDdD^pjbuBItYFlw~=yuTAUST7WiI0`!UbI|*2R3h(MA6=SOU<$_#O1Q?$NZLUY9h8L9}nkT~VuJ>Fl#z1~j8l z!3_TO2M}*)NjL85lDTF5{9bsBU+wnSd2`F@i5V}NQc5G}*Tws)4KW^v1QL+qRFRGC z80nxFk1o|5_E%Z%qOWI3Iue$^t#gy2IA(0Vcb82HYYCmpE(yo5%w-G7LS~T?5st?^ zGh_YN$$i;Smty%IZxjFOjR&vPiau*=n2F;ib$-&0r+UlW_s5y(?Di4V1|kC=BM6ja z1e(TjP;=fC4bKj~M##7gIW{X#ZALJmI;Mfa@A7Zxqs(i9EdyteD+(;h4R=?Fque7@ z&bf4}^9zY*n?&o%67A{-)e2P&wJ)?s^<#p1jEBD+EKHshwg&;)0}Q{clbq|zFObgH z4%|5NVV}S}sUOya*aAuu?qZO~^03)rz@CA+dIN>jCMG~X@UT^O1-Q`DZ~|>~&IRv! z(nIn(h$N>*Vs?_KOcZF}RXj(?YOxAkX7AiCWnC3-CwBun4kZn_U)6_~IM8LiLR{3% zo=-f@rBpUr4lXm|st9X4^qzdoU`+_;Br(!g_05~9@^G&yj>c7#tHWPDcOPFf7^ncKlHJ?VgF) zYxGK6=2UNSWFMoC!EB#L7cx9u`||I?=nqezHch`%NvrakSsJfG%$j{pKmSkj5C47C zWv?4@KuL)eGG}PpL5risZ0*1-3vAS9<*e1oUdoijSPt;jJg|Q0V&kj? z4&ECZx6JMq-TeRjX(&_4lD$-2N3XkKsB1s}v@><4VpA)VYK+GZb*{)@5#7~MZmgwgi8-dOfaJ@-%HIU#jB2S2{dn3KS@2xoOM5*a2z$Jn5_ zdB5Gn-2A#3n&ZywxEUzX$8?xy-H9q>E!Qz3(=D;aYax^1sp3~f<0d=vXzUUZ{NiLj zx|wzoImrO}CopF1`nrz$<4v7zXimx6tbGUQ(QjtNQO8rR0EXbYO?I?MHNJoFZxHJr zj(3;8WGuLA0<{>Jg{lxfYMG_epZvd5#DdcX*u8$Z*$NRxwG9K0G%5bQz8vdyZ`w<@ z3P^sm>ocFkoxVE)z+S$y@vjWa;hhEO#_E4KK#TW@K;kxrD(`kCB!3aq7wcGk7Z7S0 zqx6qUMC=%eZKETXGy3|-pCo(AJcOa9zX5)3EI{6YKC;hK*1k5F8YZ@?@6rJ=D+i)c zZ94aDr$Sw99@5Zc-V6q)D0uztIxNrzS4gO=hPt5M%7ljH0KK_xw7|r} zC`)SO>V`e5!PjsB-watkh_H~8zv?y4-`6>o z(>z7u0}8XH@RiWNCssKcZ&LsrF>W>IvnjJf1nnuwyrIxu7q>wNiiC`7n0s@mhR zM{c~z<0`;~YSPL_QIK%o>B|irg@fn~yv0-+@R-0cl?OjVX3P$S94vDKwY@NSbh}!! zVhMbnw|%+a!neU?t)}PDUv48H?2S8#=5A4vB$1PhL9cg|P5PegMOHv?JHpE>P5Noi zZ9ll?2vwZ9ZKk+5EqM*sPj$v0Zg2hT7*}nHH@r2SvVhNzExTxj!?@Q|4G+)9H@`b_ z`lwe=k&a>D-&~U}lngT8;A>jcPFyZkSFo-cKGU}GNW=XRgbr*N0Npml7!9|$B_e?h zYhGClLYdcx`*Yj#_#(j~(x6@Z2Ab6{mbaS29hL@IbEJv1)2sURuIE~KulRb!dJ)$P z9Pbjmdb0Ez7QqNPtbP>%p*~JjDn?`={WpaH7Hl;r|1rYp>lKc|Ll=xTbQF@QJ50 zh_v?guB#8|<}0^I+n=E>IASkXQ+*R@g`G|}-d*ES^QTa(?=G?e1v(Laqm#=r&suoW zyp{)XR0Su}sgT3;pS3FRHs<>GENRB4HD{KCZSeyyzyM2bwM3LYiSN6X>w8T3VWX<> zlOIys0jW=-zRSPOU_|>ce7=(k`wZD|Hs?b1$$l&TbGN5sS#LJkKEUH|P1W#ex7*+i zjvtFeR&p;4bqe7+?~{GA_3eK2LuRKS%8uyq<@U&>=n2eu5Sn0rPmdq-I3jllXSajhPWs zmkm0senbYdCD|H3@eyC*RpSBJET3YCAicQC_?%L(N@u4^9@38bQvWz&)+rOX(hGgu z+{?2<0#KjDs0C!nY!Q8MZBt{NpRb^`eSuTu%i_uV7hhf}^FV(V@gOk&ei#ogT6i+* zbnNuIB3r>_G8#3bTZPQO-d5N!<}rsrS?^PI;;;z~s4Ai+jqff?e(}Ii&lkI)E2B z&h`gBnd?}V?=cI+!7G*3K6MH#6=ZJ?iGm$(rzg*ppNhyC9%a9OP8@i3#!O;+Xn8FS zdCTVE<3C4KJ1T`&n>5*b(w@1WWd$ZaER27zU?0yK|F=)yXP`hn7+&4j`bV&KU7!IG z^b!R2HJK(ClDI@{3VbF1?^s2Wt~9GLwd#BM{3vaL4NctxCyHHqR+ds;=~Q&R)xZ;R zjbmMeCF#<0ofP!&^45FOEYGeFAVAfWiju}@7gTN{~+kttp>_BH^by=i9=$eHL+-aDrJNb>TPx5SM{=? zW_8J6{?gq&f4YQIz#d3lwy1mLQVBHXn%%uC5n2M=*PF^XXz*vtbko%V;_|s$Kraso z*bgK|T;0_9CtAu9VlF(Om{3QzmiXeqmSr_D~G5Y-0s2^f_neKJ8cP}CWk zT)f^h#3{*DT?d%x$)Wa#Zdn4{8@0k4x;DsqB$Y4uR0H*)NNP&j2LL1FRMaz4fBwZx z>XWxv!OqDp_#n<0kLsV!I{@fH3;13Bos^qt!#66W_^`XX`Y?US#NN{A#eS+(1U(sdxb|DE;Qj8@yq=;E z2z6&2ZJVHgUAJso)!Z>F1o0Nwnly0qhS74}8drM`w;WcFJciE& z8v}7&Y>1GN@bG|P|XDlJqwM`v(LHu zihHcZvjgwou~qxruI6}k@#}xY-S{mI!c8Jz*MsS1e8-Vudu1_nP4B2}Fn+^u8VFiE zW?z>sR!_-g<~sMSOEV~JTlMgiiPaGiN05mEpn_m@+crZW%U2d`cc1Q0arBWPst`T? z10V0Wi$2~+z+Ypp`u>Y@mvLE_*rg9ksw82Q zC#Sf5()UK+3Q)|S1+`MH;A>yLeAa#Ft(E;dXs1Kci%Zzvp>_atC5Z^mE(RPrvaLC~ zp@psw_nSBlP;7xFCyUr-+jIK6a36LG_fE+^zzgMJRp2@E;XHE==PX@}y@l;T-j#As zV5xaSHjC4JzK!`pvTWkcAwbmu&XkekhRZk3n)N0O+1v;{}A{ z6PbY-(eHkyjG`oiLcy5UuH{Mr6A`@d9Yhc_a^Z!jO2O*|E?@Mme6>(c2vz>7kF1@F z=fGn}>m1iJ4TxbV!qUTHh7rcSMwYTEm#q%u$lwrd4Sae4gh=dk5PGP9Q^kR&{eOQU z_ns>TL;IW9wFbK`f63!+n6u===H{#if-@4ETE}Szc;2JO_{=Y856(3yXHLVVW45Kh zfY)_;sHXn64VGgdc@7a|xg@yZ!6Np?1hJ7TTF^X&`C>=Eg{%z{emD@w0Ka$%25fc~ zu`_WMfRZQJ1^8x7H;&GKJ?9jD{ga|ctTK3?9(o|}oZ!H6h_9|=SZ+v42J9^Y*+tT0 zEXgL$u&)Pyd#VlH;##4jR)w17ZwlWLqK9%{__b2puo=2HW*{={(B31KZO~G39)s2X zV~x0-9R@Y9jwBdQ!g_@TxRok1`wXySIY7TzazU$X02OgAu zKuEhh_E9`rt%_E3aNsbQ z_~=T064s5*Z)CAk%?l+?Rg&Wg*wdxfT;+jk?a{6bVZsf&1?f{GU*n&dNtTh9EzYIQ zU9i4e&OT}>jz#vOD@WYV<^J1n(+9V{PI2hrw{BfN1a*AwDf#`Q7HQG+ z0S1bV=bg{T*JkcMjKhODlysE*ywi!K?WTXNkJj*l#*VZs@2~diqACod)(ZA>eejM5 zsQ&pyAIE#zx?KdydgcdTkq$|kN|u=26!71K#i!$cap2l@5s;M19jHcYOXl>MqZx*P zSI;jWvjL;9_w|s!i>1lKI2fz_LH(YEV7D>!U8yg9*U0_7GSbg|L#N8hHXS%1+*^2{ zYyCF*_=QUlgJzYZ%Er&$e>ETEChpthc5?$*fbQSaK~3WM<_E8|NhzcpwDk}W+rWaV>YxeX2VTr6YUWtgrvg4@{onr|8$h&aHqmC+g>z8`F3oG8uI`ywC-&Qo=O`Es2SrM(WgeG6B+rE0llpdm-;UyG(IG_uJsJ=P9 z^!jkMW08TQ2Dn2JWSb?ngFCjpKjKRWvN0Aru(uLE&P3*X+g(AEl^BP|ttoQO0S^;A ziefav9vAwK7pmX?{3w*_#3{t(@7|2rpV4mYbXk&U0g_RW*=ZNalY?sA&T zw|S3IBbNE>JH6{N-xb!UV%GzM+g)?DA2Fu`N#T*hk-rFS40e@4u-VEmO-07+uAV@e zW0I6k$~*rW5h{fx{U`cj@uF{V+gRFxpjGGJs@ZuLqg=mRRx$L?$he63MMReZL9FKC zAk(*5zF;Qw2m+67YF_P%lE2uHEH83fa1@rKMDC8b_!-6K$*ncP(x@7et5ykWDtC#S zctG$4r5ZD@`%Z-+qi@y|@#nAVM?c)>H7`mZR`_p~i_A%2a}jq!I00<@)l)A9Ec*Az zNX5cbM8{duLzyoPA7e3;x!@<4_jv_wP+71ugyrI{PltNlNzvF`z#AFi@40Xe4eN5J zusJ*QWo2N=!A>)NMQ?jjM{bJqUXDe$)%3=9gYqE*nD!Wv2W-JMA;A}tt119*cLJ>wZUJHzYM^Tf{s(F8@7;WV z$@g!EvJAU-n*bYl40HtX`7mpQ8SNXOABF^c55DefY^%Ge%mEA#z*nmUul^NF zjA%Hve~{nNvW-Dibsw!STOB{=e|y_5CbDRGTK*l(V-!vpFP}N-&91OMA=1H8tH=4B zx^?@e`qO$gij?I=1NJ&^hvpv+T)Y)S6~*rq$^GE!e98tnDe+CN`!{XOW&*FO$kaa^ zk>GDsbG?Uij+R@`d(ZEo6F8=4BHR$p@3O?mcfAa*F)R>V!w<-ZAHHj?0 z&72aaDZMmAyrZyO?%pH1R`L3otbUcx(5f)zah=KzjD=Jua*aEQgp2`$RGK=@VpZ?r zKO7hD=%`1CvVL0eO9iBQd>KIv5@!Q0m;W7kZzg@p4d1W?HfV~Kl0^BK&=oy^;;pTz zJJ;LD|B_s|)_4+$EZkUU2NTrLp9T(Ud6IbT;VQ&(MM20aD^=s~qBaIzDqne#<-n_5N%4-qWAALBNil&Rm z#pGj9lxAur-A3oE4%X0Ww%q=h59k3{^ZL%7_p?940IF&OUCMMJZN$NrO!vPc)HrIR zvzqz1+`=92=~#e!?;n&m?VpS6Gf{Og@YF`K?pe)2Ad_Y+J-$_Go|c4Uxm&1!&I@F@ zdxtFKb)EwZErQHA_AyJo9EcjO$rr3jWPse|bjgeFEiSX}4=?QF5`p3uExka8XksS= zt`NSQDR{CmpoRV6;;qR6;h6pyL5~qM<$kLfoHoMfC(V@Co(fn9ybDy~*wr?#N)!BV zL~TubEE*wVlS5!GD_P`^H~WzFYK$wGKIVD>gqq(@mFUrcZ-=LNli0hYCO7AJ9QKU+ z*#R_Z%&jttw6!=dt{dhV6l8XNq+Jorna&!2ymx1G?OKyK)9G=c(U`P=P;}0zGlzAB z*AP_{biphu?$W@`1dlU5?CdZw-~EX+9KPGWR`^a+AD*caezuXb5!qF;_YKH#uYa~G zQ{j&ETbHxBv1%x8Th0jb$zp|yfwR-NSfO`rpA|`fr7&Ee2CS|EMMO%XK8zJ_EI@`% ze?opU51{Qr$xJeUrTv&kGeNZXd8HJcqybLzl*zRFNPAnw&$mwz2pHHc_J?qg+!owa zT2t(z7m<^m zzKEV#2h^oy>sC_TU|hE(QxXDM!Pb+*8v6LF)xQEk<9H&Xxhvr}`tns}%4P_=7-+>a z3f+(}sa#=R75Ys!z7t&Y;2Ky20WOPNIcCV{hkv2(O@lvH&uy~$p!Cc4Y{LnYo8~pj zEwrZfZzrUdV0H)|(Z=V1WlDH7^WF9MB>>7J^EvxRU;hvk=b{hP>45rUhMp{^!qb;6 zZD1!mPs|9=^N3$IIWO&?G=iV7&`g0-2aDV>w0R5tkC7?f^OAt?;F%@baQx+)X%C8~ z1i(5B>i3K!gds2V(xX0X;5*)yEIO!f)}i{|{2}pOH`%Dx*eAl@2HDkigM^CV?73-yG&FdxqYKNH54~1AwH0pw@bzgWvJMUnUnV zv>Mgoflj~&laDVTFdM*ri#y=#gRc0qF2)KJYWhTE6awMb(HSMwfwO-r8wA91)z5`i zDX^8k+Iil(0t&EW?Ip0?1_eXUUJI%W8K{7B#|j=q6KvC*hC$C?pvS>;=(zj&_Xz|? z`0J_R{L4=VP~z7QY>)U_xt+WT+M|gx7Qd}K_s4@Y+ENrV35kr8KkqL*C~}kD%w8^B z&o@!V@ON*kO+rlvq8uOTeR^7URr8jPPuI%MbdFH9>%DcBfujzzkkCkO%h^Yd(FK<97`Sx8TBwEG zZKf-a%5uC;^P5cq36S(Y?S%k}eNdJqZ>WTT61VzrG%Ov&pS**Q_H~F=EOCbMq?M&# zjC^$U>wq!GTz&EVE{P+5W#-T7=7(YlbrFp;yp?b^sG&Sz7*wQr_ye(z?3;`R~5E4nQa z$UIumL(iRd5d{^^N+wFSp4*`oY+ImjnSUDCgTf#^Qa(%7vXm4+v+ zVM2+of!n2kVqaPPpENJVT_qNZ&Dot6F6hx1ba$BO-`W8W^t-)-HQZ$WWP7ps7UzU~ zA1xqB$jPhYRe}euC8R;(2IJ^}4w=Rz4hkC7`7yF(=+8`KbHN}p4Id8%PywX@-~kze zaiaJ>y3ra4Z0(No7yH;=*M9j}SKUlC2)twVG5OH22fFu}Wyc}0*e_v2Pa4)6cAfU8 zF0aFT-?nza5$xj9ogseCeNhrX{y(Qe(~yB<9^npM7iw_yD7i2oy_@5l<4~gXo=Ghr z01G57z`VBCjyAx{W{H(_s}``2gr9#&@Yu(do4%WJb1%$bWYR48<0lQyN5>Qa{o~eGFh-$hpVn`7=02|c69SEOysABn*ZkTl ze6mKdL)GY93>Au?a|~V!k3D}(=96wFnROmuY}_Q~&0!$10pxK{LNy0~+Xhh@Tw*Y* zf@2=8Jk|=@#7Homk`Eqvk@@;pfkP1Rv6t;b)m(-_)Gaf$F)}?Y-~qVyz-FSq8uiI& zR2}b5x>kV)Iv_Y|df=v}1+p%3H)-ojVU$F^x7M7@i?ynGEZ{-QvMkwqUtLm7mi><( zKJ(=n}XU^)U4_R;QRdheW_yu|Klb0 z9jo`!s_R=j?Ql0GS;H0}r{fou7qx3{9A@;aZP%#dAy5uu4N(9xsu2hX1?dww>oE}c z%JF{#NY21Ch2vaZS}}I|RPetau8jvz3X>bxrLhj32*G2^%+{c%uTHC?d!y(O>M5$< zwh=ghyyVy?s=8wt3fbtf_qOck9W^189h4*G{tM{<6EEPd=d`L#Ag(DE?+{M#lMw;t zRu9%UGiSL`_Gi|`!40_|_0)ZBNo|4Mw5GU#&lUooc%^m&vZV`M_%DB|`zRbZHRrGm z_RcL%FbD>3+{jpIGk)1A)6At(1A$RQjrRvu+3}ri6Ct`9D6y0vqySTL;e<5wn?Ki{ zr3p=~gX=u6fnL$&30Jx}xJbXUW%{0_h4psQn#`NNnmtgYx&qY@?0k<%FvSz`)OjKn zgy*}v;&_Sc$Gf)df!#*>zCF)CbFvbNf#!-iA1hYr296*n)6j2$uu#~=CXAB+@Qru^ zCz16u{TB-|QHJ;~W)Pt3l?d@;+^>CUWChktAxS^JjD@cNGGoJwqAHFj5%IAa)80#jN`O^gl@VI{HH3C{N}FlrpT${}@ty$UkhM%u5~vONkl8ynf+ zR_-R~W$%m0C-yNVPZGV&BWK=hW0=sb-C))nvN(BIKjokgS8o`B!Gy3|w%X@9FR9JO zL@?MwLU(jy4Rk>E@(jErF=Et7>!~)fi;g5EBgL2y*OOk~i+gzlXrkkzJ*-P~3Pf2| ztqiEvI^ze#aoO*8Gaxf1+s|=^ZM|XaL~tyHTl=2gCGqjlz+F_Mx(GLaH_+|o!V$C$ zb9Y}|z6y?EuyM$*onsl9L}E&^AZ!ijK5p&lsG580Nn%EZX3V*b*d*GsR>ySmZB~n7PkVEionT4#Xg`oQ_sAM57&w zQ1PwMEAtib_t;Q9Zg?Uij=Od-9+#Q zK1cxEj3WEpP9SqZA-92-BCP+g5@GHBPY$2_J%P!Wd>Q|8_*~v(-yDvND69gW z0%s5ob53koJPmH_RC?`ya%TDdTV^8M#y$Y*c!r3iJ%Q0qitTw>Sa*+tp_SX19m$YT zhs_w`;y-lim=P8ghth&_KPq=0ZTNJR!@l6=dciN%Umx3N>j9FCZwL2ZW3_T$iT=sE z+lSgcxg#~Vahgn6T*XZhFq*4iv#1&v9G4t~H(80Z-U8y&d(n-l7AVBjVT$U}Bu(8?ZLKz{&!_F@1x5RK954RT5ij0 zp?!fPRrbR6Y;NbF-zME_9v)RhEE?1y!ZVwTWWT3^2NNTnifedo3IM+ngOYV~A@wc{ z&1>3Y#Ttp!6ShK^tZ#0fOb$vjT)hRuRt0+1k^6Qsg9!|r8~`#)da~a?9K~;|3t2Pu znDEUklc8+})h5JA2yvNRnN}dGN@0oDC=sJiv*&N${)a>H1&fAgX=&o0x`%NDzzA9M z#`ilBjd7k=E)>}gMXs&#v9{>NfkO^1RzFvDPslZ|$<@gkBOuI-!FNPMcJt=bo|0+{ zuw4NVq^$a2uuEA_^zqeEUEwFE1na-0AF3nbF_R4e8`d~*^b|iGLItkD`KID$Yg2tK z!KM8LLJn&x;+5M$wrlOJSIP-63WIga0@;+Oe6wNcY2X`M02{E;>~9@)%}W@d5?BG; zP3Am8doS-h9D|MYcpf~*fQSJF7VFEbkS1dlJ#_T2NXL}bxs1g4Kg8V{kLuG5mMzxu zt`ihvS;#zarKWuuvW;zePhYx?rVBPdZj_@HNZ@H0dg|LNS*#3~BOV(hZul}U*t(Q% z{J~^rgB+w-|E)|E8OA&WZGEd<#E-E;Gr^Yd(gE+FeD+}!?qOP}&knfpE+3z*klm-D zTq_4B^FkB1JctDT21L^qIBK6-o?(=nLAXnM5Nlc@|Dn<1<{_(UjWYoeZ>)ltB}tof zCf-zeYi2aKNUp15wYOZlm7t>~fHDOMndmFmu9%bXkY`}G-&C41%>~AXJ_spqur?vn zOIUTA<&#&Eh8S2fJG7+fJfIro$1=QWy5e0WamS9Eu_oa`DRHR5a;dw0shR7*nq@)F}?rqxNZ@%mbp~e&PXYcVy05Qys z?-FZ@cW|0V$^F7$&WGi^&!>A#OXH(TW#v$x7ytHb^2c4Z1{rdLuql-c)_dd%1Q_PPFJ@pzhGhQzE+@o}}+(=8Va zY0NxxTuJq6?if&lK?g`JxbQxOF2G6F2OfbgemfQMXzr9(Gaw55^uxD15&dXeq5-*1 zVoQKU5{IIW=U<9EB>wLZ`qfZ~(ya_*WtL=iF zs9!i^^E;h4d~T7)NW)?+C{!HIt`HYRQF1y7+nNr$lO_T|zV*{WhVZl->+K?^N1(y+@f902&OP`cyG^zv#eQ9vht*s|{78ERtgTuBty%W%qX4 zR6nrTK2C#Cx~JUTxQj0FJcm?~*tK=gF2D60Cg&AL9ZY?lR`2>`lmnl?N0o76;XB;( zIR;dEL%z$}=oK!u@H#?TkGg9q8g3Z+ehMV!0X)r=iQbjHBTaLNyv+0p3LEuC+A&-h zBomW2%a(Cdp2vHWK+@SX7%}h4@{`hdYtE_#^o-sx!12C|);f6kJy;Q3x(js-GW&^A zXBfxBX8iebVscORiOay#?!xybeFv+T zz-*GqxXx*)nY^njH{jvK9^pIi!TQ#Wo8l$AF3h~1@Y(!o*1@X((QFpZ4#@IySY-Lg z?$ZopD+af&Ewh5_W#gkEsf%X_>u*mlA><`dg!z5PjmNyY2+Y;nz8CY0?Ysf!V%I$! z$HS}NKmS-~f7chmTg44#qT6?@1osYNQY4!O;~Z!AN%QJyaSH>%_AJr99}bD1GKKXB zy`?X&;y~_KbK&^VrLW z0&tIuCBGg+-BY>XG+IOX28Jdp--H+62s{s21=@){N<_vwRoTg>dN{?E5MHZtMAq1! z2Mi$A@$1e5_+#O*;bbCCEQd=#-Co`7dZ2L8^U4c<4p3A+yffpl%@BJayz%W)iV_o+ zu6}B&ZA?S*22G0Pb=Vjcd?o4~=3%f2(I1J{3Yy))la*0 zI3*iB;%lekt)LFM{ zbn>IV9}8#;O@S%tt?tO!ne%sW6UamhBx>!ll&F+-*vkYjZ%oKx5L*uo?Q7cVA$4Ee zeyjLE*n}Qu92G4m2yCqtTgnt46hIio2sY$@+Ad@_CuVk20LoXqfj2I^u1g-wn*rl0 zVV_|*;I>Cc0_~9NUyVY;E+_2`glBwZ1g1;twjQBqva2V~s|WimlT9+oThY!LO;cC- zznV7Px=w*kN1fl3$6#^~j5Qw&En{}bUZd%ijlBr!CVKfVXtyO0_`VwnT7@7S@B1>Z z-aevL!g=2}x_faXtL6nQL!b?!lr>uSw+NVUsq7Sa>x)~@Oo8)-4P;H&N>D~1;{Ge039%K8} za~?Mb2YufkeZ3Js#v2}SW~7UrZn}L3{`!5*tv#pa9PHYjXqHqVKWO~|7{Hp!>#xQz z`Z}h!ZjmZpoAu!5L7@xBABJn19=J3#j?O9Yt0aI5R_vHES)$BQ=w>QU}^o<;UF<%%=IfR zU3r+Ufl8#ui0BNWuaeg!(rw}CjPBD?d;Z@^a@$W}+}3IwqS~;n#L*D!Bp@`%!6&pnwOH~Cu7hdGAcBkU5g1c4$eq3lkI&|Qvm#2s z44J7+MRFvt`IK@gkC4mB951VPS;l@8i`&#?7jq_htQ<_V6^Y#gRX~jXkj9mf<{To& z*JV3sIb8cCzNygIJd3?7Qetykov$fzfhrsiT+d`4C=-!EV}S`3bgA6b z@VVcc-X5^uK)*|0{e}WQd#r>q)lrnv}!7`K1-=IdnZv2^J(1_!*)nomPS zMHp!_?oxZ^(iPSUaZ;C@qqGxdjPA5w+JA+$)?fbC6(oEFuP=okw0mBWS$#y&QKNP| z*tc;rbP>Cw&xBUS@gU(sH^zD+fn|(?j+mR7`21eBci-&;t9nDpVBcbNqky(BaYZo$ z?I_Gbb_SYQ?;;Wa60@T8pg$ExREDEg$?Gg+GDzgEaRtKuw?$^%(@(aWiP%ZD z&Wwq(==%rB-7FK<=U_uch5Im-=SvYWqaGmZM7zBQX))0AJ=GnQ#X@12N^xYK4fCxx z_PbxE7E=pI&ra}Q$Kv|L3CuKU2A(c_Z*H6c&m2sY_Tx5byrz5jl6ZGyr>;z#=+kLe zCyQLM|AvymfAJ6@qBk4fnLN5D;k`zU(OG=EHSaMSuA`zFOVEeg>=S?teC!o;V%+0! z3IOZ_f0$K&R zOd;KJ+bP&=AQ(QW@1!S9b``v^BxoZsd<~`e^cqbxHN?5QwlBdsNEVQ6I$ryJ?E@Z+ zYe)^e9V~`Hiv1pJc0BLfC{c$`?xjMd#ua)Ut;rqhV%B4lB^?aLsBA3Z3g;3CpxlDu z>7TZ(D4WR=^{`_$!=o*Gd|a=6=!rxp|GgceipB&J?nxQX>e1N0UVG}pqtNhQj^CVd zU1tXt2)j>7eqS=rIk_dg-sTI?V8*4)bAXI*5}8TUIA8UVJQkgJly5ZDxIV5x6?*As zT-WbQhw5BB+ORaQoSqVC#e4UODZaua;G~?qx#EBSYcZKYES&vY3K8c0j$8N-bh`4D z8I^%`#f7Dd1epyyc-lGNMljs6o&L$)8v@dZFM4C5OC1Mx|9M7Gj{|_NMV0+4SBqf) zya8E9A=PD;pE5$vtpC)WQ$AAEXdX9z24T00@b@u1wqhi$M5HJFtCJb-M3ivi(ZY)! z@5b3If9$U6qqp1*DNG!q^=M2YRKu|Uo&30C?A@ZNZnr0it93f9UdOuBMKs{E1vMzw9kJa&wWOMEZ3| zt5363>GVb+3F2dGY$X`>xyYoi@^5LC-Ql+nhN1hEo3I8YFMjk|^H%tX1CZpa{>t{0 z*=wIYI9;Wv@`JHF9SZPklum`kF0KM+L1SmkBvsAvUYx$se8qCT;SuegB${)HaLR@J z*syhO587<`<6D~*+p#6avJASA&9SY_?|K0TJ?F0+6{$5K*}hX&nI`QJFD^^L?p79R zW2*3NZOz+$HL8P{e8+01HgU<(^0UvlIn!80Dh#v4v#vW;t4V1J7_$eKyj@4eoJ!>t zLcTpH7YkmD#oLrbZ-DWT*enFE94*AuCee${JIcN>c=XT5RN579=X{&{Z$k=5-0S1x z?CJ=NyTwGV66nNO=%aP~wF&nwWnM|5&zZjqXd-WUt5B@GlC5z}aI07A`T_~7J?Kzd z>)IxRU!f@*$hI(*0*eo}&`w>1%Ka)fPV(YU?ZqPFkSsT6q%(hh2jW8-fn9OD2V)eT zreI|r`DOvM6-1H(eV2693r@@;`~g%xFntdcl!jQEZGV&~!LJW9<4&>dRLa+?@i|1H%_CMB$usYufzDy?#XgYrYed92<9ZXt0|Yk_ zwVU5bCv2-fAX0JAY``L|W~m;{{xLmhWEz;N9wURy^S+ckanw@>b!$G#w>zg#e;zxU zC%wy19eAGL%JD@w!z~FJ$oI6TU}5dlYGdG_N2M#z&+f?*k;iwgbWnge>tI^v)HL*r z#E7l_{8_e1WrDOqQcB6$06S8WXBC`Az4VokS#t_>PU*C7cZ1m11N{V)z?@JLbP%+{ zZj;SF0}!rGfKV|}_v~E2CIujTs$GBR=80zpVqHs8(A5xX6|*qLeqym9JM07qbZwe! z2tLzAv21)dUK<3Va%`OU=RBqVU#z`%R8#MlK1xxsfY^{C5CjAfl`1_1M0$yI1qBh6 zqJZ>HKtvF!B2q*`Zwj%16oG(r=>&<=f&>TXl(vM!&*tq1CPnAkZ{<5TPUE8j1?IbECxH|SNQl$ zA}Gx@-X&}LHL^BzBl<~lm))Nc3_bC@Iiih5QHOB%G(YTeK%`XJy&5hAa&a z&Cg?AiaiS!^u=s_d{~GWEAdoY^n0sj6v-d8#0<4!K2W58e_xWtrXQ(a3fjRE70UIJ z@Kbs|(8v2|9DaVKLPe02EL4nxtf<=!5A!l1!nNe&c;%d*O@dI(Zon^hmzAz&&}?VDe)qLo0PlPUQ?bxSS- zQ#vCp^?i!=l1ybj%*2XOnf`q{&X)@~h0%njN0{aW&Fke|hf3c%jzE?sZCg7pn!g4! zS%fKsZ_ZGK-O5&^i%eGHR@3@499 z?chiFCm-WWHBQsNz~J-tZB{;J>hA{DWh()PvRq%^wU$yys(}i$=N97D-)_hFNlmKeugU*&;|nudJGf2&l= zeD1$^0kmG%>5y685l@l&J*)hJbVtuyTOSYOH-s+XC9hGQQ zRLBituYwIax-VLM9$1nDwKY^0#r8Qp*eR6L6Z4=!YOiwgcupv&HUrrWG<;TOy`XBcJ`4W`Q;CAQ|RY*skZKhXhj2CMe-Ay0V_AwerqPXG%uDh~3Uwk* zXFr-s*s4tHFt%kaI%(8*=+b)z)ctL@>BO2~tMAC$rh|Rx5Ax6B>Lr2fmehAf-x&6|(_Ca86F+ktI@ z$>Nzz2YxC4?%;`}vnKV_CWHMGTSyyk0fHzeTMOs!N!RhsL|lIdHiagw=cCcTD`xPE zh|c#ftRJdsSe(LW=Q@U?38ca`Iy>!8!Z?s?wNw-PmLcle>B9nArnE^!)Hyx1lK_sz zjp>S&nz?c@ABej|>s&v7QDHjU0r@f^w;*_*lW}HsX*cd=U>pCrkOpq7 zd$l*7AQ@gHN|B%5_9dgk?vKl0zfvtv2*)nE3QUEhFP^x`E@Y@G{D!4JA@t@QW#;!d zZ6PV~8}7SHR9N7hm* zUmPTq;#hO9vM(u)6$7pVF30CdE5N;B91Cw|DZuR@`=; zpH=YafjD}8QqC~LPZ;^Dl6o>-1b=2tJ@J7Mn6c*VgK^h+c9cM1-PfZzmWT!xf0lpl zK?ezX&H7iPk1As~i`D>Ac%j$ryQJ40NTG854o5gLYk0ZTKmA!Z{GNw?Cv<21DeG9u z*zEB)LdH(6{G9I*+?y3kqze=Za1;=mWcq)x6E_~-p`7-rr!W0E$~3s1N0B5Iv?9bM zTGzG0&@d8L^mHUO0Rh?->X%jF1h5PxHqJILLa+ViknW)1icI2qMDjUPIhfR$XYEx z$7*8&K}{YkBp2@C}==iP}^KXy(w zDEJm2P7B4zpEN?=UU$O`Of2+Y_K0m zPq&{X$J&e}Q166u>{?e;USWU#B?ouRL(mt(Pv&P@JN!w0pS497`}EY8e-ZH=s5_5r z?^noUkGqU^y_@OGq4t@mZEk@C;Y{eGs{zjN4QXTFpWOIsfS-ueiW9)euB>3Q(Kp?1cObX5` zF_0eTJ$eZNYniau+@y6~thX@Ta zH$hGNRvnY#`&~HL|L?k}p6+Bojt?&hGvD{#tUd;RIqn`CZXH0!&SM4pWvR}OQ|EpfcoC>{%A=YWtDTT<*KJ&-!b1C55k#nWylTmEp0as-6NkVOl8<|oi}7=P{ohd&&hzsX-V?B5(XTWC zZ7P)P;(%oP=B4Xv^*!*7kMl}o6^SOoyw?yZH28Ml4i(M)^Q*~g$v5>-d3kpbNg|8I z-u}#eqs$2V%@dXn>i=rCKtx76K#T5Iit7#xpr&NZ5K4(UmoDw4t~nw`UZwwR?BwV0 z8jIQrc~kr*x2>EGlrNpSvof9%t}N>t9qdNyKqtgs7!S*Q#BLb%aeM-1du($$c;`B#*G8VI&G+oLA8&z+ zuE-$@Wp5+Nr*A_^tK<^e)g4Fwu9ab;+Jk%jM3uTE;G?W$#Q3$NfmzWLycqe;k z(I>E8M;U6ASQs}RU?3}cBCO6whJEm$F zo^bX1*PbMlpcr9&rVfsmIya&dt`oK#ez_lA$})6g_>*8r)b2&xD^B5aSdX@6rtiDS z>nao)*tSuQ+Rq9;A}PM@omOAmJWycDvsLpVAe%igWR!Z${)+JBs)Zv|uwyfyQY$`g zf6=r*eYf)a*Ez)QMV`+iVLG#qpK}~T1WfKteuCsa#w0oNfl=$@uu7w;@Cf}G%q+c>G^180L3DiktY_I1!4OG8J_oc3taK?5}}YbR4vc)M}c`F1Gbc-IPc=zwqBXnFzS(a zxzq6X^J59Zx$P8Kr8l;<=1YW2sgWI{Yb^H|BkP^*$d#IR<^emWb}^f+O`EUc4xVGj zb|Q%b;V>HRXI*K`4wwl+EfWCqmf7smpDR0hVRS?>ed~Ni5T*Oc4tU!%2kSdZv=E_B zDF4TdzS^1Ovv=KWw}~ebs1|JOY{7VxXk*1_r9ar6vVI)}85@NWsQKv&_TkuHLy6y2 zR)QB>sImFtO#Y6iRxxj1VQIg~QZ~&5|CtZm3YKx-5Mu#dVxVeHfR(c+#$LCpH|F)6pd1wZ8@0>uBt(tsvxqRu{D_pN%bzq7imUFC+Gu&k*%td5RFS#aD$ z3`oE40?Lhlj^KPBx517Ty!NwCyNYdLLT1GnX~|1>{O$K=C|sAKmX1sgJMSke$aff8r_(}yHe(KLqzaQL74iD|V zjpF`H#_yQk6-sA|Ox`h5ZK0s9mWbUQu9ga42(BCOzOA9#fU1Y>N^BN~AGDopjJh?@ z^oxlYQ9FP9Zmqn((4M>=%k~Zpi?sPl(a+b@z(uv=46JV@J>NuzfeU)SxZkU5F7Ss^ zfX3h*z?em8YJq1zIF!1d^Cd$4`Nd!#ZvA4n3Y= z7w=D$gA5DqSLINi8LA=Cnt4PEw_AI(K#XMG04mhTXv zFdCaw>#ap6<#Izxpvn6-&0nVyLGdtWBpv+B8d;v-@pKyeyPibR9AK7QEzW}PY2~E+ zWT8FEF3N!SAzdxQ9~Q#IqKG+&9GlP4TXdaqo)YZsj0HqnGU)RB+Jh1ELg7ny<|w9C zMvw&xdAl$*_<%K7?8w>RDGIgsK|+LvKartesw?4m-fYBK{8eo|vzi7HDYBFv4ognH zw~-#*EB+uiPZ$c?#l=3OM3UMPnb|m)=U3MJQ`EvY^2ng)b8;2`nqOfNwED4~sa% z_tSQ0^x4BZ5GP=DF^MFOEwn2OZNbzQPl{*UUe+hlZXWrQMY^-`R3A>F4e!%msM)@t z02lSrTj86*4%09CJ#o&3y1r`Etr~eJT_nd@^mSs)fLTUi5WnDTiAAlJrE=x^iKmB` z24RFG_uxd)b!v8mPeT%i_C%#1Q`ZfIy5RJAZ;?yRaFf|2MC0W@@4Q_8by|QLiFIvr-LURtfh9C&=YFaKN3IJVg)l zRx+qO_HM)uTV+bQ9m1ee0`{YLO|$(P>%-s93=A{;Qo)MJYsAYtWs(}8L-eDXz^pm1 zdtNC%%V=JPSjTfHFOW=4dw!E;yA*c=La2&~!}G0=#h|8W>G%D#bueV^(M%=okz|=h z+eQ1ATl!Su*jJAgZYG4Rm`~U!_a;uBMW^0N;vOj(><(bS(AHT6LchyRCvs|(|qI6WZ~)5qlYqxSg=&R|7-w7l0)XE6^$?9<4I>d^$0gDPYi%s0ENe5|a;xy5+Q zaSCZ!H0|d*DwSt&6vh)LHA6o{23?gL8?E90*!9!(zARnqWp!3in;4g0UInX2A--A> zfuOpF-vvcW{y&p#=U$jZvdkTC385i!eL|e2slrcYusY*UYPvnoU*~gAE1m{xm4wUHt#&rg(cc8+NxjtGDn8R9Q!3g0Dh)hk^@19UR`ZEIM9A9haj4G z_J`-3=@5f^tAuuK@^zNO5h%jU^vcu=J%s^%{@JuGT)B}A8!O+E7WI!~@qwSF^!P-P z0|YGCu*Tn`KzefWoYCRg#Aw=NWnD;o;1(T>+xI0FA6qv>%cW%9B9!b)51zl}l^K4J zci&a|eEb8xrG73Pihe@Wg^=4k>NUUIuGb|Eh-LcJh{E$1xhqAuqW485j-Yn#m?n9H+gki*SdX!2Zx?^!$rLW!EcLl#DK@oAUk*khaiENH zCsja81M@`n#7JI()uif)Hi)3F8F8qlB(7pJhXi+srrwDvl&0X|7jBUuKqd)2w`9%Xqt!ZwKvEv%=QFP5Vp| zECvmm@+pq$)Vp1MZXnmGT2ZA}9W@%MziJCvfVc-zz>r5OXDmmlkqj`k)v}gPas47- zhj3gFb^`|qOFyf#KTDI~Ca+p}zp(IhzwnFH8Za)8=++nt6%Z~!gC{vj+%>ESB793Y zHqee$TxBRm(y6}mzG`NtkNVLA#m&z-*-ya{MjUc8?Ft^@t}t-NsHi0r{8REIxv9PfJK-!T%KY+Tdrz9 zP~hg?1a=<{Q6G5XqZ1>2b8&z5XAjLc#VeoF^B%(2{F9sQ9HWtMEc}p-Sfs~5uV86Z zPOsmm_s~Bxa3Ft60rfc0?PGDpICoP)edsIm3=r;%-b15OVcYHqAK2cUxzlZqe}8!I z3-=0zJ;t2OV*bfvGUlT;-#84$tP#L5+4-%>bi%xFW_KydEAxcVmG1{3aRq~4*H1!wJE1Q02m)le!ijI9xF9HdAmm&RKCAvoPIP$r2{V3TyZ7_|v z*bL4z>Xx-#u8r8t``WKK2lQ1YB6x3oqquEX-?WRqSGslPZTBvx<0fG_K^j? z;hl=1!@uX!4C6f5rO;G{+YW`HQ#weNhBP3!38vXPUUgLi6;Is+ZdDi(IFc(_z~F%O zgsV8opx}9|w=*&O{&Ew-;&~|xr1C&cX9;yF7d`qY35m@&wgscUg>j=1cm^!L@Y5CC zAW78~J*GTrKFszf4D@i^P*Z141ES`ZM8Y=RRbcVSI3P2CUZMaylXYSd{#F~4hU|@3 z|AHQ*Km!d_q>!Z60-6lb+cSyTx3>-XnY?AnH#)JV)~htHus_Fap?U$_(Ee)2f;r%p z_Fytq6k$OFGsYyI>Tk;Vn_)fr+ILWa%L4_vWsf!(i0gJ^>S4V{@BP=C{{OGvdNlu* zynKtp-v7J^69^x;gyg0CIec7Ng$~D3E~p>v;u(3FMj!4Aik37%r#R1lOF_08R@y8D z{~joLWfsSDMb8weMTMF^x}1BZij`$^2Vm^up|+#*#3{HV76kC$b?N)V2B zu&9R&Kai}c$RN`6NnEqvQ-wd2>8CN9&44R9(|>KAI7#KRn%tULmv{SyI$wt;V$fSC z{dDMX`Z%+a5uA(J!2Iz1svRhwr2piUyuM>EJ$`$`JU(d(R)vgejq_X&2UmA_=kqP{ zrpQf>^vH-DL=ueQPv*N(RY|M`fZfD#GHeQOync1zLC<4xVZ^lM? zwJnVj-QS(K<-4ZU1%sO#eH8PsfF5qDWqyMdBL9f}nCAUeedX-Ae11vOSLf58^4Sqm zlg*cQZ4(nqh4o8qiNDEiwGYc}w{tfZUgq@%C{hxwZX2`|M5O_7d?vbdu)^*8A1`n& z9XGnH&V9jcG2rdVfo zL5lS9&(XIS+Rz5nV#F5LI`>U=sT(rTC@}ikXIRK;VX9`ucl@$^M@6LXdt#S47F;UI zht_tCnHdf+Oi0k9KH)TkW9qhK^kqUrZGsGkyZ>Mw>S`sF3_a?xn6UulR-jjA8=lKQ zOvi!=CmfpEAC%ePK1f>&#CWVlB-7Q}LyrEiu9g3$fZ0<@SjW6u+7TiTyfYaY zQ{S%l9!+2$)Iq`tcjRB0tR{7RT*3z2TyX(1Hg_&A!#J6Zwn7gJ_r5V3a$i9F!N66( z7L{>w1}^Y>TvyQYgDT>!(#^vMHjW$seC0N1Bc~&T{bJxUH8;CBWGJj}sW}~g^gS#-aG+Vchk(*dPxu#$PD8>KP{c_kgru^u z`O*=kFuWNO-oBP_8i9q6ZiV}I?udoRWc!S@Hk za0hBBA4O$qBIJ#oPdznx!F}aBPcLZsFFY9ZerARz6V8w?lr&H?Gt^$*iP@P;>(n8qp52$p!`FFL{;L=Oz zAp9~8e{%*)S2a@$Lx12`R?b|8BOEkqG{a+fn2)Tm7h=WnL#LSt8aWXQ@5}DwhQ5G? zG7qITg3R}C(n6QnB#VeA9s|ae$-K3ce9ZV#$KlHywPpZm3uJlhB1|6BfW4s5wc;-x ztz9KhcPB6!$cvn3h#86|a+rZ>N4MQW(XTFgd6hOnu-$N{zz-1|A|M|CmqK5C60RX5 zRvOXxOWzNu)t?GlqxpCPpNqOcI^sjxxyngj0Ez+C=79a8)(Be&Q*h{f(TDRAQ9w1O zH}Iwbe|`*&XWXDud%%?|VA1BZ9tzmMdgXrhHsh@+&!dt>%d6^&D8|^%r_C}v7`hr*2qwlyYO62 zWfjS+b#Gl00Qt_tBTnop%W6rT-;%odvlO9S4xkEdl_|3nQOuz?C^HyTetlCo;v0yqcpt)WjgUgsTKBMmsc?t{)O%2XOQ!PHBXK+kbkCYVOq&KS! zSIro&%OC{;7*{5c_6dBz<--FUW^a6|a4BJE(V$sz8_N~g_XPt{RXmt))++PD%!6|( zJQcTx#w7o&xpv9W4U8Zle?F6}UA+0a_uLB@=nDGjcy@6aPi1|%9sMg90`Dz$EO|v> zMCeNyRvOH410+^ywqR}h9grmRzp5+K z%oMN-l**xcTS|G;p=z|$w06td^n0|?)D=aFLXLIPSJSaRZO33J4Y?RpvH0+TSMpgk z)>to-HLuP5lNTkL9bbMe4qBNoDf&tgI_5nn1gEa{TRg#+8|^rh4r_Ammh{YV%l+8Q zMVNs=r9F{=)m2sZ0wYWaJMYo9^%5kQilt$Gz)s_H`BIBjFZjMyAqdm=XpF}XrM*DD zCzfA@iy15qQ|s?x_%$SKWn}!O}!T*%#GIT*@>!}^K zkC85$*No|rRwfCQ+1Q z`RfMoM~`~3`!7X{NUN%XVa9CY^1)#B2u0u!Unt!(u~`iEY6_d0ZTRn_7r)m(zV9>? ze)0U;4F=++}&m0h0QpQykqb#$W=#PWC8s1CXO3Q58%eAUW%0G&oBO$H{V@gp81{0a+`WGlOe_K2ne*Xg7LPM z?2Zf4H{+0$-NXt7(FpYWtEjmP-zoeiPFh?}sqw6-!7k%jN&qtVX?$JP0{73pBf?+} z>%J>%Td(HmL7-KYn%XKndaT?biVLvPxd~c4xV3CJNDCwm@UZ^_AP?ipN-+zN4a9Y| zt9zeLHVB->+ozW){Rg=Gw{$;-xihb|hq!xd{J?+BR<&guf0jqY$Y3bvOa9BC@x^7$ zg4nO@3s>~@F9(^RFyugsV8=SHbK%tkXV37KC4<8P-DGv{kxZ^V?k^y!b*5){wH$u%ZM;zi0cSP| z9C~5een%Jv_u3$udU7Ptwe?QCZ=5%KdI*3I*x$Q{^?MpBerCK@ItK{tjR6>@Ao!rq z*KhZV*r+VEf;2AtQsiHMqE%3F*u5w$h`DSUA#_$T*54;wAxMhT5-pkq85|0j7*;>+8FzsL@mjJagN zfV=C1n~(+f`&v;^i|!xUhFG=E00vF<9*vogA<%e|rvTt8=|5jP>2k;AshCQKVa2x$ zX3fJeq$PDoT}G6@K^W@FOXu#7&{Z11dAfl?L0bmrQd|qf?mz=gA$`<<0VkcIA?|jf zQSGyov*#eG7@EM{C{Lz~%xP{}(sWXsF@PcN5FN_S|hmIT| ziea4_hu{Ns1ms3xA@xki^y@zl2c4OUsk}Cfd&!S zug~@Ms1i4$eanihDWMnli*M0@5mL41~p@ZUermx!?2&Hz zF6thM=_sQ^mDtROP0*g-6ZV8qvGo~r7&a@$6a-elGUYbJv`u!2x6MzZgF*zz2@C{` zxS?6P;XYAbd*kq#7@h3<51|CC#gp+23aWNA|RFFhqw`K zmK`0dyT~)UV=KME3J+%3ktKFb();|rtTwI(!5yXXNWDfw^PfB#g7^|{P!Ejdr`cG( zd+gf`<;KYT!ES&2)d=NEY*c$y9)B?5V9JI@0lJrrlH`?`#Zq%)U@`XHJII#^L6nAz z+vS~%k9(_s4!g|FK`b$;G~2|2(4AjGHxa=b9h;^`+u=o;3(j58L9ZXEtYRW)rM2y- zIZ67q(Y;GMSX1Qj3t~B(VKqGt5kz&jCUequxr@hMTcnm`iP{_@SNcb#av%v%=he$A zv$~eHQxoljAQ$~Lr_ja0*CvEX{PUz2Nk4YB(7Jsup4+Rqst}nYHTWOAEnoQJOQ8JFt-kE2K{G zzBl}iu+zu6j0>?-%yfB|hw8V5gTv;WIVjs7C5Ex^Ef)oUxs;RN*`b4_Kmc|TwRLU3 z@2~o^WYN%6ObdcuP?C zewf(i)H?#80JSNv`T!cPeLb>qRXvtkus zs3CQN0(Z>2Iu8x0;y*EKdMuqQavZ(7*Wa#OJZR4+2)Z?t4;f6s)r5e$9{*FetjQ7N zNRfcDad<@13W{5fi+@E(;rbZVL<(ce7bmTgJ77mR-PPa74ZfAi=*CONoql z;%mtjgIJ!+4PHW1Dq$z-)f9mp19Zor1NuE%D6B3Lrw5+~p3aelKp2G(nxa`yDCSMy zLm=(S))}6{kquGfs@Lj1et+FnCZ&Ofdz(NtfojAX+zr*M9Q4CC&tmgAvp*Ugmgn@F zNgCxKFrGZrtUMw~5ZX&Xz~;61YSrpETlsRsBXVCv(m9uEd~UAZKMwUKuHQ0s_c&Ww zZ^RXF3$ox#-KHFiSqmVxv6tfDf0<1tf9|g*h0DQd6yAN~dH(g&E^El2$wVd#D67EFKV!wgiXpH% z8E`IdS$fI=F)fl4!~c?^3M?QI_5qQy-|`ELJG)m6ruBY+ct{*|Jg*O~C2<(#)k}}{ zBGPVbb_|3JNw^jnY0XA5n}GrMso9oNLHt%>Z(bO3x>xE+liDzFHipS$&`vTg4O(+!T<1ySJz-16vHK3^yZ|-K9yD4ehfP-}kj>&E+P?2DBZ>)_yxeG!d7Z7!L z)hSZ_Y@7s0Dfr%+HN%HK`kH>I0Z6jq$rlj`u_4QNt*R_qrF&BunFis3iAV`JL{n$R9*dvU-kY@ zy$KM@WROMrNnN?7ki*ju-bpE`SY&%ECS0@^ifNFa(?f2zh=7J3WZ?aJarU5xrW;~{`1`8!qMSwU>^rde=vty z2qqPNd*5GnVNwo2b;n)vzVDf4i49?U8J&k`qV4obzM<)I3FV5Y`|{7zo~iFt;$biy z$s+;MJWlK64;G};Hqr*MsynbsPvoM(?yf`7j77NSJ=+vEK+!F2Mvt}JOkvTJ!|jU$ zm5F{xO_9I22qSI@Mx*{RTo;?~S*L+vPQ?a#`}QNNCd6qgbnh112Y`9XOB!gOMAB;U zMvn8e1eBy#7tM-HMU5U_WYxWjmLF^X!@`+6+8z3ZR}88Tw^IwBU1#`lCcf97rfioo zjY)iy$>!8}Eq>ub(ixUh3S+6m91prDlkL=i+aV5!l9mx9%HWg-S5*c>*vX>KDTcsT z8{HpqUs{e2rlSMy&c4I4aHDsevii=t=nr|PQVz1%rlAP7!)MUCv~f9`k*YPYI2g?~~ z=81bW$j^MhG(E^^S~|qEvZpn$sh*(;{1nIjTWt6;N;1+F z;zcZ*Djga+%dCoaBP$*R=VUyb3rOiNDj{`1!?@v8)c>tPb;20C#k4jiGmIQdmvv0? z{xf1Q9}U;#e#DVr$h(uVXi$|bGlcA`oR31LM6mc3lbrI+?4Nct#g>99RT&%VkA6NK zO#_8kU`Gn-I7cjg14m670*D$$6fhfK^*-@#q0y^5jklk0&TvN{N0Nyi?0{kK{Pr>e z@QPVc#@sAP}Wr_EP(yFpe<&7Wh)&7N7@7=ja4F@JcA99?Wpk=ma|@Eb%Of zj_y7PwC+G0Nrdg|5wiCq90@=W1NWDy1$7aL455*bq}?Hl#Quv_aZqg_%8M}4^%0Qr zQzAvDE??x8NH*6XgZFBV;oW)w%M4yx1x86nW#&2%61LfY_2jU>w<+E9@&pti8H{WR zu!Dqx&r@qDnMCfF$>b@i!+$2==-E8zzcuW_v!*LuMDkL{wK`#4d}<~Vnvv}F27CSF z*1$I_xCnk70%n9C2d(A_#`IWXst|+VOCK$+yE5?jE)aIP4Fj=7Kpk-xh+-@UB?2x| z7s%TYYABE>h$0ysWIt0x0LY?)~ z@6JLs9|Ai>*O%l>k5rJZuF$EYPtKg)DOmgm*;;`O%VcNiL#s5h7Qw+yHzC7{U}Zdm zwiL&#IXv!CHd&vnu;GX3I9IYa(Ush7)xK-uxCtp=rs#|Od*l26OupBdgv8=on3^m}gdeMI54D=)jd@|iVY*NF__jg0`M z9%$M676fp6iP^T+;C=N9VEKa*>pKzp;Z8sk?akQw!qqNkH|7^uDY+u{x@0ZoH!gae zdk0^X<^N~x=YPbI|6MouKVERa zIVzh)*Q1LMXm}j|w;TOGK&NNHJL00xfN~(8_G;_LLUdo(ef~fe`B2b9s0q;VN`03& z1&D;ajy{Taja49vX}+K^AzJC#q^n-GG+{;{ae)BIE#c;0J)oZkW5z0jT&1~ChAE(l zIQN~(=;}a!S}1A=C@q&@e18t@?%|~3VMcp*zItU)c9CMQrhC!OBQP%|51kgfdj9iy zI>fPCgXmrCmvpjJi5=%~Ue+L$I?9Gk! zKlgOb=-P|qun#$>bwxZLR!~QCO&wE7yYj+Xa4(ribXYj{*WneosUn}=SB^mYDmEI= zX4!NJyNR&Ly+&}_4mq7IjeSLDk_dNw&3R2PC$xzx>DNMG><$Ul`e!u7+B9@8v|~hD zI)YnS!qvAB3P7p5cX@y^w2h0l$;h0VjXtof-y70|d{gyN4yy`*dyO?-qFh1jO6D8; zqdZFw@!xCk_^9k6Hr^Od@ej$ZRIEpU64n};t46v^#<_3qkXVvjvNr~((JqXZ_XUgu zz;0-8`*j{uyiaoO$%ihRKhZob=3w7UhemPzZJ8F87Vk=3kaW$nP+l47h2-x3*Jx&fj1q2g9bN z1F3$$7lDd19?Rs*JMA`zt_ey%`>_Em!>a|FS}H&-lIeX%A)vXm*tj%5drh0LQ56VX z2|0sZ@XhY)u*K|aoV<7H4*>IL>qRIp;ylwOjNp^Di=d!s6tpDB$lLghlu4t5^}|EbY*`vfIfSjkR1l)_k1Ns5 zY|Sxj<>!v391kL(Yc!3;-j;M_JPvpyI}y4U%I$?1`t{bV)S7Ti6TviN=J*uaaY*MWq7eaxmMB9n!B)#nd#xkcSF{5&iAQ7rF`&<{ z7Y8cZPdT4A>=DERI4w8VAO!KkfBT)Q{9GDF zvkt6sl;zUx?z-GAcax!5$xlqj^c&9M`V;8V1;eixs!d|qzT+|#krH!UEg}a4HwHB= zj-MU;Gx$IqTr#r;M(l%7oK*`|2P=V1^7SKPU1C&A5ZqCNv@QPg&;yy)zmNN!jhs7ef%A?_ZN zyUU^n2QW^b&I0_P+$QcE@~j8X`4jb`z!(75*@^EImnL#7&rU>^PfWvtmzwBG8gQGu zs;Ha0ueM7+i32}QbtgosmY-O^2(D=U$Au%o4E!@$yf~BZ<4|#_W8G`$l)5FlT#$A= z{pUq`nJGB)Fpz9>eU(@+I~K}KWbzE3U9BHfTI*BwlnnxMt|1?q7ks|2gZp#rg|C6J zOU?s^DKF{Jdvv$wN-9>EyiV9n?f$uSQJjRm_H>_f^MO0fCslVqo&!N*@-%oddgj6p z8J@yF9acp%`>lvLtF!>L;n+jbqa63QzOzpE$%K41)S=mvznm z^CM}h4txFQTxi4I(1p|Gm@r-MCyN$(cjU>d-Gfw`U&oz?&Qd>sM$0b8*G0z@bCD9n zoTp8EsL!eg5IMBDb^a;Or=vwRHdLVcz%g6-v*+-O)dp6QoMvtjflMwO_tRLe_6k?R z!iV-8TVW^HuAZ+YdFq^~nm6EaG$)-;1?F+#+F_N4#{B zewn{pucdr$vq{`Gv^R^r>s6+3Q58?7Hz0D;!6oH0=E!z zqJ>J(e(3h^qe(vA`)dVzF`C{U3b}`d2 zg~t&fQ`2kMUr`6%qXjGg5*&R9dYZ72($fBjJbkUBY8F?XoEK-FS<{(HK~K}mj^nU4 zkXF$AV!mM+2b|5Gp1EzNmC%WO*7naIA*@V~(|#NgtlIA+G11(%`m zOy~19B9w~Ih^VRX_CFWwHGjc25F-2r2YO0e^Gj-hAj=8E(THo;YmhxW|3J>?4YbeI zoFM-?EDnb8jhW4J*BP+ErnA@Yh97qQvLea}(V<$hw31<|dF%)LXa5l^zxZW^RX5|F zSjy=k5b;b#4%~REAM!q{DK7q`UUc0gL}wr0HmvE0=8&NmFEG)0zib9|Oix}xml)PG zNu>fyvs4w;C89BE@~pO@Vy3a z`vQz1`<;X5=UrjkJ%m|wJ%+HoepBQ>gUJ2EN0!lUY9bMf^8bc951az2bh-rtW|6T( zOTk?Hj|`P9@{B*kT<1^J!s+YWPa+UVfRiX*`_hB0bb{}dp>i0ZiET^d!5ZvRKscK9 znRZ$?Bm<=J$>tHdzh_v;g9O?zV!7>V5&JiN3bQ)$_La_Q)*T`(B%-<{dS$EUY+o8-i4pC z-^MI+I7i8sIGl^7Jp2ek93%!pAQo5zoih#z1Ic)4mFwxX*Qa2OjZ7>2C}=tAkd3!P zVVm-p!A8Au3fNr~ri;Z3%lD!-e1XUbWCSu-({KAP7EcCTQXc#67i5Ugx=uZqs-5)iN@Qt-zg)68F#)a1Lvs- zM>|q^`d0|5?`M(qyOk_D8Ys_emEy`D%d++)IZ^u3K$!zQ@OVj{dhJZuw7eP`PJ(H| z9;z>3D8xC9uuT>PEa3^TF5SgW%zrTqLsx1HW^`h(o~0wmnj)Q>yMZBn%3fbzHicBX z9neN$&?j~Bs% zYSmTU=rT@~i7qT`F4VRp_xTQNG0S%58k%O&&7O@O&4Y9rsOYqv>{+#5O zYsl`0T%F!nkPi5!mSxQ z-nhI~zo^IUyYw%X=W6bH8_fe+kmMfXE+7d>54>fT<{xgh3U`yh-{nR2NX;RvRXP=2I=2o`o6$Tk{s6r#R{qx>Sq*Ommzue#HEV5ilzm zgN(_Ut9F$5U(|e$)|ny`PYvgTCBsn1zPB;QqNn{VUNumt!qEjw+zNW7g|Zg1zJpXU z3Ucy76*`bYTM2pN6zcCX5^;Dp_?)}a&O_D%5)qb@J9Ao5w@>zwN`MNDHlYrlJ%@*6d@+l0+yz*(OoQmOW#cM3gmT z4MUbmLW;&dl^9#bma&h0FqW7Z%$S+a^Y;0Ef6woGKd<|b`}sYu=Z~@s*SN0tb{^+> zoX4TGpB>KuYAjQa8cl4i0yU+~!{Xi3=VsBxp>5LlprpEi&b{`fKMPOAYb(V*AU-If z4to>my$S83VSpS^Rvt_}`AOym!i0lZ5}ubUeerRS4hv+ZSO!YJ`(LPvVtq)q z`pdR(k%`uJi77bGyZVzhf_~R_-iV?<;WVu82q}180rNWHem>=NSqcKbXeQ6fjXn9Y z*;kth#SWFK55H;vfp)Y?nEC7W*)fjd6NowAJGOb|GyaK62aJe;2)1TwoGk(DRWYhG znA4Ad(tQ~m4PuCsqnW;#+D&^etMQ-5lLzoM?2n!Vp;a{Ud{#*}wdYthS1;5_Am4Ie z%vwOnOYZs=4&wMYD5Bo6&6OXq?GEdEJ&^Yg5y zi7K@_@VTlewqQ4O9(erkJQ1veSVQF z=|E6_EdAIl$BVKDpHaff`~GHgRUw8WrhwJ#qLutxcgLfsJv9e<1mDo?F_m(B zh0?53G+U5k;tH$hKUE5Zb-`Pz!YI+HVV=X`>O%@~T*AjeL#VrQ_V_DL)?O%v8 zeYj<4TRmT!Z`iBZtV20d$vE%LOCT4Kb+Eq-1a^1rE@xIFg43>=U(jAdARqVLK$!lR z*ROr8_Po(&0K$Z;_R_2$4C;CLYGT?^-587W`?m~gifYC4BJq>uX192x-hhoxloc^^ zqk79+SpJj9vG80~7P8o+$mdS+4$^Q(az?8X@y)d z^a1zKf=F)9?ybSu+C#gaeew!5FO`Fp1H&&msenyUJ0l{RBM57bBiX-MrPG7K6BG-0 zD#;9wDwk7HWvJn8fVbH~=ap;p@z=`Q-vQk%)&8)z?9b@T216|h-R|vayC6uyQGdbP zk*VL8-E4ocUlicbdY-yIIrX2|aGpzbTk?<6O)`4wfVId%_Hy%m>;JYiX=top9#x_@ zLI1yzp(IG`&SFrS5SY@42^VYf&#Pp zvz5sXcbCI}xclT4>fTGwv<=_`$KD#E$oVpDv~UV%9sef|4r;RB9{Z5&3h3MMC;`v!=4W5a&bU%WgGj2w<(k}&Z2aB-_o}5 zarxux#-OP_S{KGud+$ZcU<5#-nS(n(J}QPyZ4p)yXz0kF61$f)K?BVs$PgF zj{?x|7^P_IK}cx(rGN3{geG|VpMmGpi7hD6afmp6V~-juB-VW>jn^l^EBZz4(A+6a z!u#i-W_yY)p?APG!Hc8#$YLS^@91{wpTPF?@O>oQS?fQVFaK48isBfGn8+X1gyymb z3jgyET3jhC{{zFGV#uCn4QKoXS$A4cX`QX6x1f#XQNxHH#E&@IRZQy97*J2Vh)F$6 zyZV3fO*WMH^2Nh6g=fjy9`_L-kR7Us5VX+G08|RBF@(DP?D=^LlWWJqgga&286G6! zL$};FI_8i4s&Xo9dOM@=^OZ#HrARECt(uN#m+N3aTaZ6{_rpetW4I{$o&nE}c~$?- zqFe&28SFaL_n+@uqz}GVU1h=hZMeWG!tJ;7F~}bDt8=LM=?TQith{EYmgLbSk`HRGm8^w)4JwdYuveih0J6EV zD2$jL;M}G+im-`)goBlHCI=1PzYhnQu|wxxKQjQn#n0ruijSy)zo)K<^HhdW;4?Nm zD+Y8b6}OWGN5ooDuO)wpXHFrKQQac*p4RrUu9Nat56w!%s%HA-*}peq^VK7&f*dHr z&98Z-_UrcMc)RTzmxGP3{aQs9y2hk7hG9|G$G@lK+PkH6MZXrq5>&r*D$-6 zDqiX!vM5jC>F8wo*zhrg~%@^x#dy4~u$&<7c%n zKTzeqcWvlUS<4i2^ zd)MF7na?tB=lDa?lMw}bH1bbdXrZd&M>k+B1aQQ6DG^x#+)&csHIlpQ-Bh+zWXmaT zaLOVw+EI#`0;}3Vpu0^2gpN@2whz1hYs>-2`H_rn0zYc? zTL-q(HU?*240@x>7-q13oOI?NueGcLsw&;YFQw980%n5m>VNiH7qdEJXYJd8Ij!HNI$f zH$j(xXRr_Q{eM8d|Fw|4-y%;rQJtvB-m~ocnFmz@--Y~PY_zgHavga47Mu#5Xn{G_xqT-g_I^xV*dma|DS2LN|i`&cjUBSRZ3P@u+i zyNmF`%5BCCRc8Vr!`T@eEX@lVyj!;{Y|1IFoh4=S-WWX^oZ0xJYv$H1-VJU8=<3Ir z<`{O(4AkP&r|;cB9(5rc!QlDA=Wy2VS+n!2=PHXML=+L`9)XmiA*{e2Ax@N2q@jU1 z4ym1Pw)Hl{rA0kUZRQ7W_=fenvcKl(7%;K^V)=$TN{v5FHTRYKI-`&6-NS@yQ_|N? z4`=8Eg2a2oZ^^{-Jt0msABXz)W}h}yx$3PX-Ka!O>5=bu`v6N6A{euiH?%q6mx4zf z}qnIh-`qV1J!bN3?XHt`=BHUkHin+=lem zeNbP)86R&-`k*E77ftTRJ#7KY0Tjg4J-Nc#uQ|u7d@f9;@2CI58UGhJ(^|__JL==d zAdC_I5F!GN#Eu5s!&*QfI~!8~c-SdqFBS9_yhGq8mhWv~qgVrPKR=uPGJxs~Yl_%n zy7&AXv`VR0E42h7;7RF?eyEqXv1pB10eU=Tt1_eYhCPNKAoaHwzND7zfyXT_=Tn#jo$~=E_+!aCiCxva|+{+gSGmLXVvvrnJJU66`VYyJvri&$;^p9`!id?d!^3+^-m)3A!mn`) z?jVl3R<(F-lgDY&fRhX5O{U?KUc#Yfo0{;OX0>y~hZf)RkTY<6gu|td22kqlPotu# ze&=pRr1o%;8S2(=Ee^w$vDYubY)=c#n`(Qv3^mfLK8Iuat40n|s*soSy@=wXthDc! z?u~)Hn-_qUr6>vNf<~VZ@dFw(*Pai7KS;TR_0gP0$t?KRb7f0K(D>Ggd-Y|R6z*Fw%vZ!cQ-C3q~U z<||!s-u9sh&QZ=jsgzUM^NR7_1t=GGnZ_VS9VAAvZk-waa96Wuq4ln~9gh#=%RNG+ z??cY!nf1I=OsVsb8m6mXhy9qvrS((K*s*p)wz1}DzkLf!{7@}3l!hPcX<76fX<|!aX@h%)wfX$CjOR!EXBpc?*NY!M1T)M)r`6MpB9AYy(fQ6%x@5Dx8_`gB zVOr4FXa$P2=?s5{*1zzkl!LnP32X#&!2PsF^W+b)OPw7X9> z6@vkNnU5}j0n12wPq`9))aLZ4?{`C#^-0 z?hsIKq%J=C#m#{tvJkjUYcfNRz62)9!=487B#+w=Je92KKEk;Gfe~-12V7G3Uw%-H z(xh)#ubvpMKx7c;$E%AH|7Nq>O9Jm+2ZK0-nY-GB^jo*pE$*}__>Kip8p&#VSqoF3 z%+g#stYc*wobOI2%j#bOY_d~p^1Zd+xg@ED^hM4WHB%EEDiD})(JE@3k8!IjWO1Wo z42ehDj6ALf=26{!i7Xjk!v!doj9R*X1sevLzR41B8?!W!e)F)M@xjh=Mb&sV+j-eQ z^OuW?toS9Hv8;jaA|!dVZWPo{f>euTqCHZQfHwB(P5gpx8d}OINOmuWX@zn=O0anI z61cP>jYH>#3opCGAF`V!vL2cAsi*AQSl z)5lQdP0G0wsp$`%uKv;rqNnw^+S*mHaV@Gc7KwN=lLLt$t;t*_J?CEbGlZ70n)Hyj znrFJN8As(6iXwzYPxKN?&jaIy=y?84LE92u3=lN(YT{AtT&+~-_4hvg*1l9wRfGpl z2C=fH+Mu7(qF;}VVhAEq!#hCY`@MU21$kCm#(?jI+EC6{R%4Rd2ZCAhmUU$FSw8el z>j!mr1uv@~Uk7F!))s?vH6xVu$bhbpG@ueV9)A*fUmX%oaG(s$^(bQsR+LHZHO?Si zZpsZq;4sFd$j{*D2&Os)5`YYaVvEaK4&LN^nCYR{ms`_8UUAN9BMmSNdfW`QuXvVM z=tW2Av%e!K?PPiA_PGrFDMl>Cd%UXV$cqFig+fGYL{3)&#=|0n@vY#@H?6^;t$k6* zR#4WWS87YAP3UQ(&!vdvfE8+-zRHAW`vxb|w17B{bVawS1{l~{jgLX^NZp}d^-RLS zw>AHPgq+^KU%-rgu}?5jVLg^DzL`f(8$H6>?|&o<9)2fK%?Uj&&K%Gt{8I-#_Qe@o zoKyGLpvCx+-EX0v5hLOo1ragq=iAJDm~IjMKe8+g(VJic1-Qk&e2E?_^Gq3nLZ9*z z*H=Fq7!E0aG`D7w+opK00|x~`rOX54$~OH&)=nTNcsg(>Lun51(^Wj*O}B$TcgOc* zlQ4Xd)FZutcL_H2OQ z(r97^`Ec;(b61~2k|-rFktF&-ZqZ9wqtpKwh{j~ImnF;3yiOfz`KQ;56Rk(dhb&{{ zYZT=9mcy$-z@9Ou%>{jWdp?`>N}wd#{Xi|EZbQ z{%L{uTVmd_njdXg+s4%bP}Lbn!;lv4BA<){I@P>BgFq!8)|&p`ukeMn59j>3#5wl) z!jXyhC(&R%2v=b`@?qfKBApPa+F)yjZXQiw-2!(F2u;e@Xo_4oGLWb`*vfW(-+!eH zo(o-wh|ky2J`y-~>*(3%x~9+{$gT}hU_PTSk>?f~QJE?Mo?Acv-tV9JUr+FVzso6c zaMV_6hxYKz^b*emv2xX{t$nh*Is8XeG+5PK)H;d4YJ zMPyaM=?}ygU6wx%4G8;}jmb-lr7(~jaU1)?D*=k=U{QQiT;1WGOVTr4?{2eY*+b82BrhUB zyD5LTGXp;f`b&<8b43DsIoV~1(l&;CZd0rJ9tcdp1NqEK{hLirBdMGZ;0``mKVm`N z=%pwR=+nS=4+(=Z!@NnFB*fHJQEJ>+Z8!W5=C*3w(#V~;pZTstKl}{sOwh{n7DeX01v|7RISszJ44zEL#>!PB(ckJeK(ku7T)i(l}*fE`>zF!NN0=*Nt} zk%f>iEjoM!4=*sM_e})&$%y4Vg>JOq&G0= z!_#foT;?!kkY3pzwL*j+^`RbeFOP+5-zf@Bl$;Gm6%VLB{|{lT|9N4UEuW2&FNPJK z`4V@Hj@VF&LWf6R{cyH>cH4)q_YS;F$?soLVm(Tz zltg+HweN+2K8;v5HUSE%_a>rYQ*GkpI+nG)bGx3-g)pRj8TL5+|hQTVqw8@!uvI*xuY6yu`Fpr zy%0m7r`~y6{`&univ8b1Wp)S9i#`Dy(>j*tW=j_V7v%`<2%_BphGKQQa`Y{-X>4d8 zk0R!QjGE}?dx}^!+faZwdxYdEc2Tx1=YWrhc47$Qr?`et(TaG^hDAidV?$OBFgNQx zY7_J*0NO={W+aV$oNc`}N9oRDTu5*Fco^(nK_It~@$yD10~e`v$`tkU>Wgp8sVSaD zP!t9;d)GuE(5ktMPGg~PL$NNsi0XR&9mjz0ssmFjAB4?nq-W-4C8>^q54~RR3H=FA zTtwI8lxbE;Fb}+2yaB5-V}F z>3$K*H!5M=7t)b<5FlxU`rj=EhPB8ah{HrhIj3eY6~ve0t`Nt% zTgy65--x1y4nSfIU-H2Zkww@a#yu6{E!C-f_}g`2P97JHA>|^`H(?6&fDq&G>D-hb z=3^bH=v~g*<&`ZK8X)|yeBqeiAAK=LFo=)i0jfEX@$|3IwBWnWzkl`Dtxn2+=6>)~ z)?1G`unO#le7`JJ&IDN46qjxoCVq_Xhj#VR$-|&w$jY5q)`6BKEx;)$pNHqF%P(@8 zRGx3(84)9N(eMc`JtrhV@-Xj(3^E2Z^%=f*qo0j65;5%JQP_cy#vuW@><^MNI3k(Hpd1v1K;%>OuaF_R8pg9-SUZluzY0j^*we#!3Ys;u9 z_J}+-$cH-$+V^Zm(#*7A+F{{2a6}INty)6U7ARq|lJOnymc#m{L(V#uoN41t$IuT} z2z`d{)h-p#yoV7suL)li(mU4kYUXAn{Xs0GS%0<9c7R^h@t9vCv@{~X$%#>hdq0s?pOCf+FjYuWy0S!$rx$7r zh|Sr_6V{kV3*3YAuFc&1zVJDEj)TA~v~2;}I&Rkj02&_3H4`0@5qKEsaz0vGuMb6_ zlQq^@E-oHoL|UTU*d(Yi4mGKP75sC-YfVg9WAKKnUC>o87g-!gy5VfvR`)>1Sjkdg zFH!cPun`WiDSckmPpG;MNad7?bPuFSa9}Z;Q+Rvjm5OeM?h+R$0SdUxY3BFXB|Ge*ZLRuAXAoT z=5tUNaL38NG)@HPs;uHuvwwuV{gL-p!C;86V1cbAf>@S5^r-Je;=0KTb!Q4gYn?I! zj>~7>2OS8AWq4&w`B%pHY$ES0=|=7olylGT!_Kna#gMbcdAqp>q7GDHRreSWNOJb! z7wWkWzh?iH$a7WmDQ+69llN~y120C;6=ZOB6S_RF?Y{^ElAE=xfM36y5H58US4=KN z*aRd^Uh3bJtMIxZ zk*>-#yHLRkTb?Wl@BWz{NWec2o@H!Rbb6b;mV$$6+-~>PZ}>L>|L5ABmDu^ruWI3^ zqlTHtN}q6VSpU1}6>!rA>Ef8pcXOT6ck~xtPjTEqQVY5)_$V^p&tB$M?1nfQnKprt z7Mj5BO@a+(ev-}sD0<)WIaSG}Uu?!vYZiz`ZtPG5l@=bI-`34^Wkee8xNRSUatsVi z*2FAcpRtr&Abxe%Q_f~UHDk9S&`wQgx|=EvuwbkKtQFSI@+A zV5bn3kLPpBw<9$A_W6+p{!|3ty!~abr>4%p|8{1_FI{g&BqLt9Sop7yL#mkp3{x#S zZ%&#Bg35a12evYYM@Qb@*HclGsauOsXfF*Io-M4oW3|48|*q!Y8 zJfcE#2B1a&OCs^51`LP+V6+W$fG@8b@6m2GyL?E;KHV08IB4an7SgX5(bH3JC)z!; z-Te7Gc+a(s$P#$2k%zRj)g!VD?m}^nNe@!Q*l@EpB8jFfWL9!W zQA&Iu+tnveiHWS=joiNOr9aIcY&7`vB|UiDEs}>uLd)zrrebA?MmLAtnv{BRRIydHTAjK{(2|$-hj{MTn77P4CAX-)F0%} z%FndN+Y(L!AX)-1;=FBb8T8CM7%H7**rz45llg@PTVhN2c0UhOIn7|YzmvBSk1nYk zq(fWO>X)lN#&+tAswJY3l}oMux>hP5bO`k2pj+GtdQO5I;BQ2l{_f+%lqWupZPyR| zIdevRgRPdlv(Mps2qmgG&kuduL-Ar6}3=jrTkZ>%x33$IO-pjnNr z%y0wee}iY8*NN5Ny-py29q-3^pk-M(v7E=C1Q9#KpOu5k^k&X8JgR%SkeqDk8 zWnl1b%t>4`;Q+!mGd)W-u`!8c2zyw9~YdDsT}WAcz(@=LB133!VK&Fz%IEj zD@(Y5tN0A7e);;#VTRiaO!-ZzglZqq---VepL^}LFwnYTd&WNcOjP>{zSI%UTYL_` z48qw#wjq)5>e$4&%lVO5MZUY@B6q#at@QWj-1#I`uMD?Xx_|behl}W?cNYvzy8lhi zHQs~7dAH6wj6!!fe6(A*dVBeGk3D(1YGM-U1h>3E_>H6;tB**X1og{(4T%a%+NUS{ z+DSJGj$XowWLs@A+SI$mK59o^huf5G!q8`S0Lc)tr1fjopO46b2p*Uw?a4q_>~aIHv+XY)a9(G6dK+I^c+SH3 z@pE8o0%@`9CEs6A!HM~95|qjL!y*qaBXHCDjlfq;W|xzH5KN{Yalyb*$A0TSF8QZn zMF3_A-tEeq(Cg1Gl1*oA=|FYgh@}1TzryK*gi6|WewY@bKor1icbR1;ll$=;NRlZF z^K6~8b26W}WFag6cu$szO>IDEd_mZqV?cbU-nux(Pua-#1_xz{d2w7V?r7EiW2!hb z5wI&~(5iF(>nt-k2SVIJ_~EQLBxY%^ae`}pCnhVvvk%UZR4fbFLWfxTFK2G+9of+H z8aq;bD({ViyxAA;Gk(+=Bz4dVNF(2^s}gX0ZlL)kn{7Ve=+$FSRk3!w4oDjf3P)NV z?!IF@V8^qn-p$m#-SP;8f@sho6Cisapmde;&sWd(R7GPXZazH2sAF8*i#inqD@l%o zhp@HqH{jIk%WXtXMk$v?Zq6nd!-i(j$-E;m+h+57sN4axu`-U~aqD2h%9Vc;IRYWC zn>kFo5VzkDiHUO^G<&U<6j|dgTPx}LZ(AbDY+HmWelc&#>;iE z&OzJD!&wU;uwp$ji>}FXj;dHI91xXjg$!ZxMaAtKhzsC>LTzLqXT{Z%?E0z7KoxAx zf7Dl`6!!p;b_F>>a}BUr67QoZbh}haGhJEKb&;;TfDmU zc^6j~&iUB#)`yW%ThUEgvdr)KFF8-xskqa=c`=W3GpK{CLX0CW8Z9)@oE8)&`s2am zHR0Fq1&nYTvY1M0g<47jzV3V6`;Sa$IbzBm>JzG2B9n^Jd6YFKbfANT9f-ZTsRcVW zkcziuE&ye_f3Ls)*B^L|*;jn>u7Gj5q=jVMa=g;*u<~bp2C+Rx>y1BO3rPA0i{^ZO zX<{I~F{K=(X95a04s0K*&j~+OpAB3jdt)3I;<8~~8<%eIt%WUdQOV19lCATa-*7RY zDC%&5)baKu?S?&W4<-IBAfHwh99?Tdw9f@7q-ddNNqE8! zv*ATdcq;R+dM2R&#Xk-qegcAZN5d=0isfo7SPxi1bn$mFbju}>L6W<|T5l)$n_(ck zglS#Uq9_xxfOG6ulN>}`C_%euuq2n^2V!6?^h12>3+D$0SIQg04&1qR9XAbA@Dhuo zLi+3XoCbUR>{W{Ug!>2!aoj-9PTlGM7Yx0>m7jY?6cWy9nDRfw>Nr>AQ?3JZXjFBm*0)MRmZu`zeUX=dxhAR z4JROGOWK;5okP$$zb2OB9r5f9cPHJ!rqv4oRzEJJ1BKvNP-}?UoZSs-M@&l&hDCv> zMf?`ak8WKPv4iiTGt6X<|G{K|blRU3@16GrOUSDT=${_x)vIHnpyy)vk5o-qAC+sB zFO(2{jRS8M`8S)J(0Vbj&{=l$N5~FK8FB?n?Mf?-Lg?|QnG5UZNpvJAdVXI2zN&6xYna9( zHgRzJ;2h*Gt7gp+=4}-kttE`n1l!M&SnjSa(`TRG>!=kt-qz!n zv68=wPqpzPUO!HaNoeHyhuf)+C2>2TKKE(`W*%v6X#);hg` zjCp8Sd*1kSdb{}k`{dV#-nfm^Gk1Sul;MiMQ^01ssj@15ll^W^Xeai)h@XR}t9y7% zfO0ieljjs>hVcQ5IpHX}wF$o;e^tzt0XBmtAxDs44**bah3H;9q-4LS*^3`}@K zW#iCcvRrYLQ!;+Zm_#2Rl>#gEh2iIpS&G)BML)%6I2-K|TehOzq$iTC&{K33u z!f$obVo<$l@)_yslkLk2iAWq_>0W*OBFc=#zM{sNCT`#x^#mFtiUUg;_^@{pJuWSw zZ$T?bYw9<{j#b$uB6yxIv4YE*qdHTY2|<2e1{AO4i#G9w`ru4_kl1XyE(|3$UT7qo z>mJYBFK&m_LIPL;X*b+9mE*6_Gg1cJ_CKf{^B6H~_ura3JBto>x4DMb+SjkJgoC9IMU3P7g$@!y-tj5?YoU@5c zL~&q?qk*(fXvJjS??>t32)IBm5e3Wt=+fMR&Y02OIK?r}I{nuA@Uhc9`iB;LUvcQQ ztv#jR75RNEx!vzOkz}&)#`yI?`A=5PLqq;m_uU|Hh&J0rU7C*BuB)poF9;90OxizL4D#Zmt zII_ZIS9g!<`WU@ero?2_@v@O9ZMRktR6>GifCO4^c=oyP*p_~mHvt}trt#DeyR~vmOdKW-E_)Hls?!(XBcjW{rn|nUHsQxI%&@Q z>6g}{ab_g4w8oiumuwksa4`2P%o~`*r-U~bQp#t3*CVV%<2xh*G;gWre*toVgZcP= zagiLqb<@SmyZoL3ftJzYsdzH=9jWR0(4woT>w!^`a3{uNXUgLBt>Hqy@}oH&*eViz zh=+fe=tEJB%MEgrFyht1FyY3?j8cu4`Jv83BQ2%hL_sPLM(b-AiKAanM;zbR5FB5K z(!*D3B8*>2d&IOSe#Osd2(!u5%~k@FXWXaa!yazf*&PBzBlM4Ic>$`lOR2PyH{nG3)m zfS_I_xGr4KW+vMF#_!WvmxqgHCciI{b_7jQgrfy$bxV6af;mGVjBNq8hnVv1IA2=s z8Fucf>N-yI3vOvZlk`scEAeuw_ka_oUqkz~hnS1Rb6-&FW1)@9-U(?!O*V8NLPPR2 z!;!?;AqASqruFcu2jhO9+Ubni9^M@Yc_({B(RZ+JJ_q+G)*i3D?- z@5?@>%J{+E?P)}O+RBU;T<&Km7uTTwQ9$r7P$IAdW=rt}l&#!~a>hmW{ja%+c{$rS zA6s3M**5{K>Z*#X808QSYQ@VgTLerz&rR}yS+%oIB9wQdJTbV9fT!`w^P4tt8qS*% za$iXqVS%C#>kf1W62mxlQSRGplg!6M7CFx~<(QX13ZdeMf-_6Dl8X8bKk|}e5g`?% zjn=&}w!un!3y!?OiQ^VuR@zS8d$rQG3MHNnvF&!HZ>Csx?gcT} zBHeigpT#&{*`en1rC;8!N`x94Z1f$nT)rr?KImi!TE}bO(!9yirxbq>e!n~zy|Y-L%)et&y@$+r8Xu7$vTxMjm(?rQiU zncWwdvQML$2l&Il2m(s>^SI_|@8uQcBprRi6Eqbtw)5Yu13FcMxRmb`l|sWo7~bO2 z@!EVb%%903TjBl)Tl|`1RntYFiPa6hR>715M!z!ovN}(3RsY zPVn1&)ZI)EZ{vNF7(amyQZ~oNxnbAS8HjJn5OUJS-i@+<0_zvB1RfIp0QUDR!}YKX zfTZ&l7kSccs1WUYTaN$!_aLG@|8kFm{%Ckj|5hNYM$rDd=0$B#T-M?nH3&oe0AULk zbw{XIBnJREQ7us5c;=3cRfiw0OpA+s`;v{fvlvESmdB-T&H})Vd|bpaqy)3MeBgx? zuV4qY_38-^r^HN6IOPs2D!V8k%#%f$<$(`e8T9mmg$4I&yeCFgQP$_=u z_9tnTSu>!mT_cgR4}|m`NbI{tY{r}`sN>q zrH|JiqmFOjAPD6p$2ydBNDHO=%@L8CY61DhC`uy1)Z+yaWrjUfU-&_4YY8w>;bI8| za#sX^HCP%wmm=;i_Py}y5tj+L&-h)xye3KKq{hG592cE_H_I%g`-N`^ZJh=&)YZS) z{!;mlqbGlsF6{+AV6$xe}bBa829a0W5f0g93Zxa7PBpbpSVfZDQKt{YU ziZ;~?SV1bQM)xDAEdTSBv-CY}yBvp77TA<|NoJ^y=Odws=HX09dR4$KM$c5X7UZ9A zP$)uRCvvk10OD2bpqax^pO=CfAhI6pwKWefLc*Yv#lN{JR75F>ZuXCK6-tx^n{(Vl z-|HXu=-QUHn9K|_%P-ZtU6fO^y;%(D1^?U3-wbKjfKBgBRS-V6H#YHtK5h^6wE|3c zbrV;A0aaZb;Ovw^(ZkOF^GEwX_(}02N#TR++%N7$JlSh3GTXekPd`>k_0H`uZNYr5 zUUuz++7b|BwlY7jl!}9-yp~!z0y)Q?%9(Y#vH5XiPAZuVP8>^Yu4ezFwMa*R3`v_+ z6+q6p>*PZPBB=Nt#iNF-riYN7rLrUvfK@#u_|;NIHEW_mxK-`t9_OB}_IT?FM2Kpb z5!=tZ5FQ>X`Jh=MX;g=?0dtSGIUk0f3vIQcS}%j#*)n95(}HkR=1wZ|lO8=dfN*oh z;1&(p1+-69eP$0&=Y@`_|IJnnTucXwR(^l2^I3cP?TNK2qii59(4-Kd)3B+eE*#k} z*l)`46rXI07Y`%=Kgt;=n_G0uAhV2_8LmF!rpza&?&%!qsQw$y2bsiaJ#Si({xVLx zjBxk`NJ>{w^mMOq8Pf{|>D?F!l3C_!iQ49lLXKJ4`(6O?4-IKrenXR&`M)j}S1m|Q$!YL$5Fo_UGY{?qhw9nhVx}z>dOcjk^@g|i=`pzz zo|Y7>rVq=IG&6YX8i0iiUfpBf-pQnt<=~$l<4$#&2{QQJQeU& zm#x#H;;8#w&`Ps2Qm6pTLYSCX!n?OCO{VZ=PF@F1H_2^LsW{KqMcQIIkQc#e7iz%V z`kA&d@I_4Lz~_*DfTPS z7n$$!^7Xq{jvdpx;AKXmoC1P%=2_RA4>*CCm?TvObN+z*-3`OXapwyPs>C}UzuTF_r(e5+_?)^pD@L%wrsJsYDH-vf@U> z%@rYU)6~PBk#K0zy<6DeK-hu2o4>-eBBbeN;_IlMWJ=c^RuvodQ3?%ewHqDI4TV zdZz=LBud3yAZC?cFV;mZjnKt{LtLwz?*}bwHs_WWavRXYuu4~&|Jon{y;~mw-B7V~ znY9^#R^Ld3BA37^R59#fDES(Xe)7~Zws(&l-JaAQnw0)2j}=v&iZ)+=WanFpg%V?t zgFsdH_#@76FmlM^D~;8|S~JD1$W9{xC~PVAk)_cu<*|c%rR)sFo_mIsriJOyOeb1z zZu@6RE|>k5tQy{ojT5KqfT)3~oZabb_d`~nhn1Xu zqVO7uQ~HIcgOE>L{jS*UGh4W6JmVry_MR?4R*S}zQA^@qRKOnO@NNLbV7HN<7gQn2 zVHXc?_YQh0$}=a!Fw8p@qT!E}w$fwc&CJJ={xG37j%bjbVkF8h5APd>FhgC&7}<*@ z5pD}E!4Ge+o6Xa$o$cd@us_kC-L{U0o9X?+jQv3(O=c9Lj7*z)EgtYqFjS3MoN zSEwH}4LX}WoZdrVp*i{sI+@*LbvN==zl+?N*aoPeaw+X7_@A^c?tXj92RToV9g@|n zkk*Z&yQ&KNEyeq+4q$3*J<7zh>jy>-`}87PkSN89ACrdaPfAYiNvbSOY#)|syR&Vo z=C$5trZPK}-B?dMu2??anLRW8og+|-Mg8kZ9-l61!{2caDb$K8s(7im$`&uG0N(A&lDG5z?Zf$X8t-)?e?262}PO-U-=-xh*h~-=_hk-%iMD ziK>@@aG+Ke-O}uiiv&D8ZRY$PvrMrZa3+w3KEuOC1&ozl@`v3^rFiR~uH9h3w;4LC z{a+fI+CQ(vSqsHmRNnVV)MQmxB6iMy@P5aLzcgpwE?x@6t|PA3sxm@)WefX@wyD2dqC)K7yEG!HQHH1Ywt))b z_zh9A!8anI5=`num+j*h>B8xwj8C6DcfegI4K93*PsfTBx_}xOPXK6W%*xeM_QNk| zv8XkZF-m&<{*}j4zc{`2JxEJ(0NHL_jVJdiGeBior>O}vXZkJUqW)$(UQxaDF4isU zb!OY)-MqTl*I{HzMP?V><#HirDm;^+v0*2a!?$@kKm8TYwSB=Hs%r>XSL`GY4%moP zl2wSp%-wB_6XC(@E-#7wPq-O!f3q!DWNJ3{-1yNJl&2>aLg{fY_1ykzz7*Kn&=KMW z+#R|=fS0(za0M6GaZ&=$1pj)8XUc4V)(3J{oBLjzIs3*Z+ucWSP9#q~yV#vAvizt_ ztKk#SL~Rb>JXKj7^>CPtQv7gOth)%_7x-ZNkP`V=OaWbp?fF}6!%u5CfgXg7_Psl* zI2yIk>FMe~NZh&Y0?!2t#2+K0JtXV(bH7O5CC>CS{;HC+f!$ZEMzmaoXJq?dRF!3w zDc;9wTn}tR9ug1MQNIan_gsWbGXqy1V+CQ~*jt6pPdAuP87C37B@aB1 zEXET<}cZ0EN_oN3XuIITCQv|G+S(>E~rd%1>#o-}--L(9FfQ)V!}%TO z(5OYkk0ihxcMLrH68Hy$kk!l+;MU69;+uQZY5tx)4g8*gm>~veFgK8QF;fx3I+3*q zYID;iKh;Cu|fon`*QcrTJyd!|kIf(y%y;?cf_Ib9P9dpa*kXSW0iLfRZ zsr~V1{^i}P;Get^R`F;!ra{+NcnPhJdkk^afa7400 zkuxHIypHTCe;nmz+o?i~PlT$0KWL z5mI6tHUH4BGaQLpwI%zHUX+qIR28kwKXS8eKjc24y&v! zaIH78JJ6TMtAj=5)(xqH*M)uBDa8dwa)8gw|6);T2Ge#3%i4Z4HXM?&P_h1$088ZENA;IhCp!H z@Hq&9Ua54Xb2+Y3sT3jQG)syimP0A0-l^h%MycvNDCg zx5sHu+A#lG=YpuJMJhKHU<52TP+>eNfk%zmID|7T_^EO98Q~=liHMK?t7hf@v#)@~ z96l0oSA=e>rD5mX%3fdE+^Rjt&5N>c4ax3**vN&y%7={z+^}yvG#SF(4#eqXAAcxd z%+-1jA1%5;zFWwXE|GlyPv8GR&2F5ndZ`R)0518Uwfw=@{s!bs?sDkq&-3VX_O5IB z;4<<<7Vg96yzUZpH?1cxqy}_cds&lx0)fCR5u3@B0Ql@H`n==}k?ZV`pqys-EDEO$ z#f`|W{~}L}3093CwQr3uW4hUYe%`z`tj?5oEF5&$emjRcqAK8+=pYNy|ZzUt2W1UdU^ z$!cFS+W0-ox65u;?Skc~$4MzQ)882K3Enuf9$(^BOx%q2p@I`Iy{K4+2e}shJP=&; zGuZ7y0I8}&`Da{tFt%;kI_dEX0^h383t7k{rh^GT@=3-lK5s28`M|CDAX#S_9!0+9 z)#8t!T@xCNPH}~*xfCW>okw-Is9E-60k+Bqn^C46zP$>BP$@U7EN=GOuhgO^IAsOo z87X-CXIoqDu4GMCWrWNlNC+{K2V|s7e~Th_<=U@Zv!fSL;mZEu<`VRo6nbt~(+ChA zrSQ$kz@MPXC~d&Oi~dpm?>Dguu(;CK`?aO z3an!Fi+NH`YmcKWpU2+yFza!zRP(tbi5V4QZ7yUI8qa~VgSUI=L$fz&KAo%~43>Mr ztm)?PiLD0sL;+nbt8;y}w|y zr*Qib^WN_b;!=A7)~~rRMAT8sxs>-?WuDeHUw!W-L%P!r-F2aoq*_{2mGiB9qW~xgY`;Gs?M#+L5I%?2|bVl3GN;kU7UY~s z9ePad+lM=L=N1ls>&Ee~X~Z{KKDY+^&SP&zpcF`Z4;N^N{WeQwtnt>8LsDWHR&SU0 zqA)5;hds3{jP`|t`XSB~86xf8BR}8{mm?&4)c3cNBg?Tl2U<5lrxFJcQ*sq6J3CAhx#KA5 zoeHpUkZ5UruqR-`71*4BlGWkTmXVMry<-xhqgNbP6<_*8210lK6go>YZh4 z-Tb!W98vYUz-sBWaR3xB)Zs2H3Ou%0?W&?~^Xxuz{dnyRGp#rPeD;!4x%qg-n%r8K zc_S^x66nhc-i|ncyELR>O}V^{Lc$n>&$Op}kM1|_I*pVg%g*tyD4+M<<6nE1hlEo} z8XcysxjL(6?`l}jY8&3^xfsL(wnY1?HQ_*qyBkN|xwbJ; zJdVb5BHX`mWN*mN#hq_|Z!5XhwDD4=-40uV$tk6_?jjG0oxg(Tp@XTwq=O!#hnX0a zI%5-RnnJ>BE&>ZDtwbN3h&anocsD+AX}=~z7hnDZ*(l+F+v6KPB1H1JnQ~7OnIi^= zALr^Zn0&wd7CrVxhEd;-&j-ZOmHf7KyISL|_nkjGGtUKdeNJdNsb$2^UL7OvAdV_SJnQAfS`trT@oi zQ>pm!0BA1co@?2BnirVY`B$J2D4y)7W5lY5$z*GJd>5WMFVeDew zjXRD=Ks&0Gk0AvT?>OI~fEs!act!+Dhi{jjqSYV2E~d&L0XUroHi9d@DlDMJ)$rnm ztI9CMMQee(wLhlCn)iB}L+-HJW_h17$mZI7De(g_-whH3@Q1p}Ldqia~b8^lIrwrg?kvlde+>i*qy0ePbN-LL9bUL!hfB9)c|BXng z6}GTO8ClI-qO}j0V1ZukL&+i7#*L-8b78;#8Nj|7ZqKS$y|KloBJseMl4EytM6XES z$@UMBuNGo#-@zGkB;nmVsZYl=7-0jk6T>xRy)nOUH=l>;zgQGiCe2gA#)GB^ouTCI z$dydzYC*FrQ$UGf5oWmpZ4Z{P`j z>J8^h2Kvg5n+;o(kcSpmiCy?5S?EA)PXR^RqqgfHk#mlJ7rIxB7N0iw^|8YPFHzIRcCaIHl{; zeczM+QDOeIVC+>sg9p8;F_EXIXEr|qPdd{_uNA7~n+xy$C?IFoO){3rS$jkUU%_wt z3zq`qs~j)~>-vS}S4w^&PK#cE7n=Zj6I}2i;79r*R}y>SR*ux&x;>r33bj!MbI5%3uqW;4?OVu7nP0xZTbmEI3v89nr~(b!(3F;0gcIk>p# zg9Q(-UkK)YKnP}IFI3HwYFJoJ1~ zmnZs%I8QDiqE9VX(A-uZ+3GtyLWzny5u5J*E zqZESE8bpV|-w2|AD>e?3NW*|kxo6jR%jN{#5PT?Pv(B+))9RW`wh`)?TDa{eSziHe zt+d@9f$HYJu!_BUL;yVGoAA*GI%U*H)AqJCw&wM2HYzm(Vm-Kepk+lbpREoozw(ic zOlYwU9C$VflmBS!90-A#kG~g?Hkz%Ht2BQXg5U_Y$z@S`GF9KZVDEbek=T;AV|c#5 z4?JuN51$OdGS5~M6aP3~dT>!8j`q~;$#U}b`pOGm_^vD?XrdvMflwoa_y~Q@9`!9n zH}i|40_1lR^Htd5a8~0Wcm1a_*O?vs?xGm_n|t!A!^?)J_vmtC$P!z8-+2MCZju?? zXNfr%td@45+_KX|v12BU!@FEAsn=2P^3Zxiyj=jJS~k7W?uOb3yNQn%?@3fRWux%+ z!wWyXx{lK7^NB}IxH>Mh z>QGw6}W6tJ?P)}?YAbpL3N5ZXQY{hfC|~j zqS)WG;gW;`;#(%WkMgoOOwUy;(@niuB2bXK5>Svx;*R+^?Li3rI)%z@e$8G^4NC8B z5zdao*Vl5VzG!5+{um3=$eFLq@Ht5DbWWpR?n)Uc{y(uZ{u>m6e+V2X>2%KxlHeJ> z`rd_m@+IT`x>cEfVWEqQ8rmFnpR%dpUN)(a^JD=}evFZ)r%D4IBZ62sbgWUlgJnoQ zIU;*|jkoI3&q6ENhugQ-0bT~*JjW*rXdxQCy{%an^P$0~qk#&DEqmZZE+Da$HS#UQ z!M>QT=5nTE9`K#ZpQsHBmZi6XV&&95ek@eT%_!ye=~20TLw?&&lX=|qNpeB@&rkw7 zOtF9X)Jyt4=AwJ&&nFa^L~$Lpr1|GFnF4J{JHP-+FA5Q3sW?Vm$BIKhu&%LZv1~NL;3H$VU6Rn3ovUf`4`VCizNJ|(m12y z(EROP$3O)yP&O`gx(!s`@7&BT#3$L zjfa{Y(`_~GN152>|2aJwFFr5uZ1;B60J;{r#YczKPPl?WWg?q-(PDWmEy zz9;USiC?!moWC*6H+U;4uux@wd-K(&u3`#0_nY*F%6xY1u7JKEj%z4^D=H7lMdY@a zqYt0#xA4EYZiZ^+SzF)90hKNr;i2hCUV;Y*Hp!Rx4Fz#8K5cQi86#grU|D~L{_O9#Jpeq=<6SLZ|SHY zuQflWpH6~QEVK7s13jCL*KU)PRZ@3`W2(4(>p1HjE!^PL&e;KU*!VT{`k2X+eI~VW zyD!VDmaSGh&4^ws&>Ff^N=C7YO1ml*dUQ9;4*CW;C5W&8BRU@vK*xEp*R`86X%rn zVz+L>BO|*BsC}a=h6;7BN|oP$lMsX|wG+-+l((Y$_8G1Tf1o59W|D2{Zl}3)NzST<3!e(!) zCg(vHi*}xmYryu(lLxObgh4nE>zfvZnis_AcwRg4V1qzXzW->5K}9NpkXv`zeZBB^ zEd_(gLKV|2D|QM%L#&v=lvev-`9UI_ScO&6lre4IHGj_nY+tamV78GZ*!@N1P3m z3**Z9)NAN)d2$~}**&(vU^A}!*La9=(OFFn1(T(y1R$t2?Ed@UB_wN-SM(~C+!e6-mSwf8BbSq@3{h~mA)B_=Y` zU*q1?2grEmJqwO@CX%uMAob<26>t}<#(c58Ovo#9RuKEeV5OD(L|MjX%lE^9bSqZ5 ztLkJ+gzf`unt#Z$BzvHAR0|jTTz7$0XJK1(HR1{NN+exKtP_l-IJ^G(?mL-}VV_jy zn7p5pnTs9N^;^h)u9<6K|5=S_RDO*YSB?4(ea%&-=w{$w%71pv)~f>K7T*r7k^JbwR$)}TmE5t{S79!}1OVB|r9_Et*eL-Nl+vN;wLWNgU zc_4tilmb)ct=qoF+Z6!@k(Cor|GpS`J;rxs^0xY< zAe?0-d;XC6A-#LvB_*Zf^Vs~bLWK$_`YjuuuOtp?PDB5m(5BRx#5OW~ow-zSBO#Dp)zRJh01Mk!s_|f~G z{yx9qm7g)bHU*hwL}SK%rF9(-#}Wdbj-<>0LP_51%$Jd!18W;E@{sdXa{CA8OF&@4 z$n@k}_vSx7=u#-B6CT%?GuHh@7z&CUa+n8y&##$HbMrfTNqfbzb%4D@iJ;+*+sE~> ziebI8EE6LCci4D$e8!ub`nB-kb3|M%?t4%pg|y4qx`Q-v0<2!(pbtE&7N+;Y6U{QR zf%E&#Nf3KEHFmfFt9}6}cKJZc!Yz39eeCX9|EMs!UjMO__p-zesZm0T(D0ym)Wt4EF33xYWlytGRK> zC5y2R1DA@saF=J?H8_0$Tc!DA0Ymkc@(=fbry4@^BIGO@7`Y_HGwaKIQlfnU!g0GK z!YuKyMNz79ba`tlP;u@mzJ=8SQl<-1#owmMU~SlxMpvi-pi}KuN5-14y&yn0c-a?- zF_@b;fHj;HVB=M}zvb*!2{XWM;Q=pno0Q#o83!|_!%7udpk4&s-3RC*8)s<{XYet) z0HxoFonl_9^xYzeMUp#4?7^Hn4piF_F8#vGq~1pMlui5ffYaT&@|4-BDU+NZM^bzf zKlL_MO2DSVt%^^+xZ#16Zt^NtKO=V!br-2!Zej}VvB+?{^_eNW(xLYucJXHyMK|6F zE`Nqrs(0AE_DF%eZMxYR(k3)Z-SG(=igj$3%@iQ#hXAChJ;gklcL&RM&u# zE>j7NNUBP;%6^Bb7WzkZP|M>{cjEDa(pYeo2n|aqRSXuv}jDfDexYBz#S|(E!F!cUabJTeM(96L!9ZIFFd3TN=m8@(DYjK&##0v-T=7VbQ5DBl-LIdxAg{1f2dpJ|qV zKvXOoxH*`2Ah5a&;5Up@_x#U|Y(3`#lINL5ioUWBUYSYwtl--3M&|b%>53{id1Q1t zvJv%_;CZ^_*H5KwJD#UFMXi$Iz|rIGw)4=NZQH_sn9P?o+UTZqRLBYSoZjE`ll_VR zDsK9#e#0VYT(b?GYe{eHdH934BmYV<+iR^$C|>=O2ib1cm9$KNU~{-5fd7%eDNh7Dg0eZqT)JPm4p)6NG_g-w5IMOv#Bat_ zuu$%OcR8-uRb1fVdzzdqxG1Fw_EOrLEG574>!kJvyy}a;4ZYnXksQw2X!)~n#%yMP z=`#46OcGX}AD8bDhN^;G#M|kbv2&&7zw};&T%gZ7ckuPYnMTF-e_`vSp^GPRM;4;U zf9g=o%`PW;=j#qvQ8xQ&^3 zGtR%3=^+Fz3dE9jWkwwbXC^X18BeD(Q<1hOH&)%goW;0T>{`shLmJCpm42pb=ki1Pqz9{L)L)A$XZy`JD9q*qXxNtlq z*y(dLhRj`z>ahh6=>scpFpeFoCUWoDJ5Xl<&qm}F>k1&P60nW|Plr5qWC7~>6=F^Q z-@do%JD@cIK&LYV2~5T`tSbfUUbRB}p;%WsTio)K05Ey}!d_*7*2sF#%Kx?cEJ-X& z<@WNfDOkE@tM<=Hx~F(Cnl#`&U+As%?su}^^5de2k$b`BmGfeHJ~a6k56R7JO_i;c z$8xBqeIjJSrn#~JQPuRlpGzNQjw_T|Xd+Ke=m4eL)LStp%Fu<(ebXs^({;38V^QEE zB|BNgg^w2!C-?8jIXE0CPEJSCm;*%A#Gl}`g!gx?)by;wXklqSG{G|P|EY^yxlcA} zBMD6mK39koTCLK*eY`(7Eor4Dd9&dX)yC23#r@TR(~z;f;Ql*XMy)JX5Cf-id8>nk z^-A??rDAU>&I3`fAl|L-vm?=ie_>JGraOHu`9B2voOF5`GO~It2sY0P){` z=OVZ!59Fu{b3MclcCtRB#1YRNUoto61!!^v9!srn0^?`k>~1szm7c(tH+Azi>fmoY z>(O8cZM!PEj7hI_xrgfDTO-Wq-G2gXP?&U4LgOMt!(PNJ%0I~{|H>f2yNh0XI_GZp zFzMu`uC29VRPaNtnO){Eo4~PII06>U^681AUWM+xnmz|_=n1eaTZ*Hx8J~j;#Y+X& zOxJU6?7qfxiWKvK*VYUR!ce0mI&YgIejtE0Kacc6x}qLG_gFZ6I({TRH;Mjy>Wi)` zbLnbF-{`l48QAIdtB&PIyWAD9?G;~L|KDOP|7&#N|E-rL;)r-r-BPniAB>IxkoK(` zc*>nj1DkIgyJ?v!Vnf;{?_SbXk3ISixGJq>BO^!PAx3KE90Ojn8F{=&fn-aLVm~H5 z`^ki(-RfW{ZOeKLL>wm=Ssesbn(ohD{)94-=I|FYCbzuTfX zhqP=vz9RYgcR~YNvL8Mxog4BT89Aeo&zH;*U2P-tcBBFX*QaQY4H#7mO~(ajb^ZT; zK%x~-(E5O#>2t44pxQ91aSl0fIG@b@^)N-`6#v|CYrrjc=&{h#?6xn(w;HLSc!m{`^E3%* z4$Pz&Ootc8>Je~sS^bq@U@m~}Ce44E8#;rML5~o*1;J3UXGQ7-rQqa-mn%er@t}f; zJM2cakgyH{mIBJ^%8V0xxSe?Ftbls1>}T!c(=bhkvs_U4SXV#9{QA6%>y^i=ZTkIV z@7$M#AincvJ>sClqt$r}1Yr-5qYU|2MA`6H*EVAS(z(S5pV%Er(zG_IjxzF|BO$NvXQhHRNU?jppEoJT2ZJa1usIqgo zw7x`F23r%&^HIhxQWHTg z&#rpw1c62?2Z|qXfUFgjXja>>U0nVU$j$t&yP{kE+)tv4G>v?;V7};J zC?%TzoB$?%9e$pNgx9-_P<8yN@{x+H0j8}0PX;mY@r!4&cBMB=Y=5AMs1Ru=ADPaK zF9m6ZjUy_y(W~gh?uRcQwHs6U7FNx<+W&17zfn+pIu-)1?Epw00=SA<-Q_SBF@-{=1)x`* zPKa#e!0O4 z?clqckMG~9h;p8ypginm_=47_z8q2E=)8^)d1?JtuUff479U(N#IX#EUa)*-CHTHX z4lrzx)4g_cRc$TsUCuEsh{S2{5tVW~_~kxc*0RIEm$r36J>!=x$dJ}w&`%Q=>#de= zYxRx4Mx*jSaEkpkH^pW{Z*mu&aF<(f$?QWojnA$*oG;VC*PbQ(Dp#SC1afyA2bf`< zkylo&xhI+aBftX0&;^4-7jTEsPZ&LEvAc&>AC*Gn6?TsJF4CJofBnPKC|Ya3INB^F z*=;lj#i#L^7?e7ps>9jB`~I?XwK)aE_e{~6XMv?j_2@GT)JxbGhB%GPV_I)PgUoM> z-53GEo4It{TZbJ^7a%0odh+~$IgXx;`Uy41UF>S+y~@|k~#bD0Zm z&ESTbHogk2T2Rmk4*<%bxP0|{zt2Q41Y>a|=giNg$Ri+1v^mzNG39Zow}`dv%@(Z{>X30uBD>v@%JcLaWtI|8&J zr#hH9IULC_SC{!Z2|Y6iST*>*N6b8<;;nYrVkS;Us8QPjDS0|RjoVtn?|0L%fUW<2`>7LCVGU;i$^Ct{4H{57@aw9sxu@L^c7e~mPf1Ny z;tMZ1)G1Dj9(}0X;h979A#HnJ%0ZI4Q*5hW0T`z-L-@+RT%RXB9_9Ak#gci$?3DsZ zJj>7WUf<7@`GO4lvpB_hBcX2D?w@z`iazVhV$RE+RbM@%Vb8J0 zB+?>#+3#&UQA?Y@yAmhTq}(s9J01-m)Dty?pMH+w=u&KEGal(UYciHl9I#?^Et%L2 z8I;fqnN5!Ib7|LCec>vUfv^&b>f&i^K!B#y{-hMb#RU$)Jj~0fCzf9)<2t+RKjby~(J;U%<%^As-mNTj{x2>9{>^svjJKhB6N8+0t*Q|e*_^%! zqsQq!(eDJ-e_>Da_vc3xJc_6(mx&(n}RMnVtK4V*)ZC3gZjjU$>*4bxg7pEvTH4Q37 z)$Z@KFYaZx;mPJR`cY9dK1T^GrToO-E`-U4Ev`rX4f6lA0Mc)4nDtuybLKnQZ-fy3s{sfEL)7@^-lf}K(c>z7qsr7EK+xHco$t#Ih@+A3!#vB-B93)a3 zp~;+8QrPFouiYM9u=t0$ziN|FXP3ip`G&niNwyInR_)4~6Wxi>wIh?~0r90nTm(Ho zN;c#<973%OskIzf!w3klQ>XM=M1ack-6xbVt2ca6WPUpE0-`|JN`a$vu3MnL-7L7iR^(0t$nG{l@l><5LMm?J17XERVpAfQ?I z&pQm$ARwUG64?o0k{DeP5YWg-f+fF#DFH#z*@8J2F1YXr<`laWwX{#Y2~;r11X+3) z`OkeytXo5HEQ3e2H>~J48e!i`c3Rf2I!vXSu6wDSyT8MOkIzo1q7RDB z9|#V=2ic^ZV$KwjUsZxbS{ms9YSV*SEBO?BG4}K7HH_y( zHaDwf^%NS_*};Hlf|J*C|H5!JC2zadd!77Gr9tk537p;6r8vUJUtI4WIv^A$brX4X zFB~kvDtyV(rux-Z6n$3Y_Zx8Q3ciMf(nhZ4Z}`u5A6f0U{PsQo`FQKU+wPV60#bf> zvg#lDI|O{%nLfYJ#Fht!dx5Rz$Zou$U5ncHsu7ExFQq*Bkf8|2yOiu*mCHn9WD5=| zpfsf&=}zkoxI)=S<_;$h=&WbU6z(>AzvM5Q0+Mv_M4?9^Gg6@18MvvwbW5&Lg^|J! zhcmLy0S;zI_Hc6+X%943VO?cZb*F$=APT_mRFj0Aq_g+d!e{9x>gi**ypDh#oBCA8 zS4uS$hQoqr%9Pj?BKwC*=lbDu6hyh`Z4~4XenDyUn+1G9hG%iw7A_ZRoBF0AZr*VJ z^Xw4#_eX@scpKtt^lrU_a?;{Glj~CxA8{n75lHIJnt8Bj`JKG4)Zwm9>mtLCm&KD; z2?r^5t}|Bi86r9Uj+(RE_MO>TFI5$xJSaw$$%zI zMyv)P3$Xk>^X-}nMrqxe_)D#brg{xP$|?tCPj*m0V?coX8oPvyi)(GB&7Fd3#SU<8 z=|!6&rpE6N71lB)pacx+jjwB5;3V|MPGZ1TvW;fvXJ|?56x?2FR~@ni;ssL|aFJr< z_Ovw4vF-&(-Vuf8Z{jc4b{aNI*74f9!e`FBm%$8)&%Zy$S>w;Qm5n7WSu3!F0U9I` zls+D;rD=vTrwb<-IU?8dXN>a4(RCuw@*6joHga+}93iR%>1y&P^oHXepHnwQP8A0@ zqW4xALVu)RsEYR-B~ur-W-CJ$0)Htt7o4Bad{J6Is3ZL6k=MyC~&5+z1I_om@QW+;2Fg zRIqd175Z)s@4fN2?jom#hN?q#%bn7Q?W!-d0dPP(6ex~*iL*t?e^hjUo_O|rbvn}- zA#s;TOXrKvdDb~#zKCC|ZH;s7?b&RdE^A!#7xq|~mvWR ztM!si*e8LYj5sVhabey$y!xytfFTaKwp zLF#vV`FL#^X}h2}v*5UJR(%NM5X;6R)0;Mzv!`e@4iNa8W`B`Qk&i6(7T0*e-m6kv zBcfz%E~&H!sXHh?qG9~P_fuB42OfK`!WjILrYv7e6=@2W!RST)p&HfCU5NW;g9#&D z8|ZEy)*9RMMNDpimKf8zUuK!*Qam2KQ%!WfSVV5*n93MjKODR5&P{8@y%a4bq2F`( zlkCK4{5*@4)=x!CKJ;<#{Y-@75#&o9Bg&D9GCL(m;$k4{0lg!pb?58F$_2I{)?%;! z09~Q7WLEg&%P(ggJJ_W~;FIHXBiGuUT-V$({YWYg4fZYp_0lXQZ1>jNx6E682*a~L zebB|I>JdVPHNC0cZ>KQ8VW9QHxW3%iH!HR)02O?N<%-^8HrjZQC0S$EpJw%z>+W6k zZn2x2xWtHM@~lr4F_{pH&pu$43WjggIqlMRr{cij=*iFL4r^wh-1RB~gZ;R3%1haOZm%Iq8nObnx4dBb!c6r9ecM-TNt$DKmY-W*1>_kCcoND2+^93nNLnOh(^A z^^VJG^?SDo`y^5?B2g=ogD3JO+7Rf-{1F(V*~yO}BV3iN?&42s1;9J3PYa{4|$ zn`$*;JY|%(Gu`u_oIgw0!@GL8)%XQKOD63etgHRAd8i~BbK7xpr5!4Aocge8LR^yy z_MD2N%r*yV^=CDeKU-w}-2B52q4}K#jO`cW_U<(mHIbjDV>+*1dj3SV{ z3PTB!7R9Z@RK-pZX5iDAJq@Oq>V(Qq4VSJ2GBn5DjrkS_Of3ed+|BWfziLfmQ+Yy< z3?(G0N#4sQc=G0JJvBqgL7QcR2U&XA7dqF9ZPjGJ89P&W32_hK(z$$Dhm5!}7nfmj zTRYi#gJBQeHOV6dnf^so{F8df#XC4k))ny=mQ(PUqa{Bxqq&^4z8@G*cD-tbELC6o zha{_{qZ}1xxbW`qb(00|wae#*!3>#i_kCqxn_hlr`F_)k(BoFoQC{lWvOg~V?@#cO zJDB6X3+wMy`A|7oIq6+JesJ_$CK#aEZ&46IacwpRRVlG-aMLFWjPH+lZMqy5G0d`S zwdobf%&ETcEsMV%UyXDC&0!)XBcrWTyJM5>@h*G6vC@nrQnMW-AUFeDTz!hRzqMKe3Gh0BjmRO*24u z#qNx^h(CFUfGV7SA1SmOFK+ITCXnk|Q9J9nh&@Kc)~iig2z=F8aX4__Yfdi;xGSx8 zkqUoOi);pwD2@AN^)g`RE^?@YV20jZap1i|QnEK$IYoKk}y0}x`>zgA1lC?0d zb+?R{cO$oi0Rf0b~{UOzE7 zEKO@#DO>x*rTDhClI|Osu;;O}?`DLdEg`832|0z0y*z56gZoAbq-q>yLGupDT2CU zrbuiqm9zTYWU;5aKNjDv67e;C&F4SracyZn;3*O%bb=rUmVm1F(S$E5)h=^!jHzX5((>iU2Sso;(+oYze^Kg?;i-Q1&HC@I zx?EEBus`m5!#c2?<>oPXuS!7SA})fZ89*uKAWRYigif>K>o1BURDsPT7pT6ZMnl?m ziweOAJZxxR8V(0oW=aJ^rB21UR(>Lo2 zuHzsJJ-H) z34Xe|MGbLb)om&HxA#Bo|J`~Ish!6ce!*B6>RLYN)Zy<`lsX8dmHd_iUH-S~d?s(# zLMdrN$>gnpXE6S4)SE5;jyVPYc%%Z>GeCUzc3kX#`PK_>7|E}1!*kN`*=5KcrG+rX zX5??I4RR&W+Y@=JbB97G%N#vl0$v!G9xY)ZEWdbeSue2;3pwcP`go3Z!q zLDb;!Yo%ifbr>&twi%X|h9d8*7eZfj;H!I!t=rSr`%&FDvo~mdkjPwluD3Tv$_my&RwVSA_A)!C&TASvYGKBin zB&0HWv8TBxHRss}t=e%2g#1D1r(oXC(KA~5T(u;y&K?)tcPt8ff%*GuHKM^>>98?WZ|aM3cM;&7 zuek(v;;Y%BovZLFRY*w&>Ma`J2e8IJ^t8Z$0*7UdWh2 z6dh=ng?u3!re>7y|3m^av-`d;@1FWRWb<`}<$T^zxsX2@I_C{b_@K&`J|K7T*!_PV z;k^{u&gy#F$f@#Eg%disdVdJj@C;eL%bs12WIiF2=anvBjLAW=xA##L5guuDwF+cX zlLu69&?iqxL*vG>y1@T_12gJ4io zCI#sYFUJ7ov@93`Is3yqgvb5)E1DJ*KmZ7?rJRy2+S62zpTvihg8(yO_Op8VMIalL zlySXOim_J~cQ*aZJ+qoF(OFz1JAW95P`3dwzBL&YTOZ#YpT7r_g!R zw{2H0QB6Dx{=(W-b0Wv0+5|7=NcT&Ko0h__6jwZO9HAa~iKEC#+5uQ9Z6F)|_=rCH zD2qidASGI_QX1&3^w(-OIIdQ3BTSrhRu5pK+n(%`%eG4mOos<+lu+Ma*t{_Dy1 zDWt32%zUr-G`Cf$rGCx`bR0qLe1vGY;H7w?-$>{ua@NTwBlBPH=Wado z-CIZEL5=G+qM6q~2Hq4rFqwXoEq8$uH7xXGY2H@fY%gjXH?41;{DM;JyK3ERlqLduoR*gjNQ0$fx3_2jj&ZAnLBX1}5MG_6?k}VB++K z>Py}~drkx6)ZmbA%!l2Y`q}+BotgMJ5!pIXz> zf107@wEi#J-aD$vuG=030kMJ&1*yL13yO#cNDUDb5EW2RkQxP*CcOtjR8$nHBGMC( zE+tZfv`~~HB|wlME%XpVCjkzW7T6 zboqYCR2)r=p7E*3`}EtaH&5jU=yWm_2)Tcb*-%TRj%7AHf8q!d#KGj4xt^<=EHM`8 zzf4o@t;o|*F@pjsZ zt)lfqNa9B&cemeJ(rIY`3wF&_1&zm&8wC_BvVBTLUTY#&z`(d6&A%iGc0D2oO2yK* z#P;Sq`Q;TxBn|8Yn^!G(^?a@kg(kMoE>UaA=*v)lQnT3-qmx(P_JW-kZCXb>f~k#CC!wS6kh z>iJB`AFjt}B!2blDm zD*M8d3b6-?phd^KsHJ&j9rEeLR?+eAKLdOy{4YY`0W=6S5em?s2;fM z{_kHY&H>KSpAPvm9l_UnudRN!isn=vWLU2NVMCfWVof4uMziMpz4$Z%ewjSUP7L-| z7ii3hE33=8M;L2HbOyQSR9*)kU>O-nCxV z06GY^`>~G*U%*VEp;Kfw_AD@99R#1_kT_7(+V9mWh`~Z+YpVkoVn%Z)Oxk(;G)K%~ z9BXnzI&PrCe&jvxqhlI7!M^MZHAt9O+S161+J}*Qdncpykx-z3cPz#=nJE^Ub@VAE z8k&a#Y&c?33KlrxIj9uO!N-$i-Z$EkRCTp0gu4}bH{`FksJ)+YT3e4_X`6f?`L6l4 ze$di*^c4eWi3VGPs5}3dNMN$Ml9fXQqLzrvh>Nd5jlOL!D}VZ`bX-^ynKb;m==5kq z(f#$C#gCeR6mE>Fv^#f4amkMq#LcPiPh)*r10`qrIY}RFqec++PUyFd!cCHB%pD+t z5q`lox~lW%p|6?Q>RQ0#H9~>&>z0IgW=v*K-tdr|4iJY zXSz>n8rZJDHX;I^9gA78{A{Nf2L^ApAL!cxlo062DoG&aw|qHYu*N%Ll@~pn;Ga9I z)6^$lZmLQ57q~j47?!jVp@M$&q>&pok0ZhWw#>E_1gq>OnA%xJ_)Okze6p|j#no7Y zNsdaHV#@QK50mfS{|NOLb~AfR){3C!mC-mA>T?K4Zjy!L$34+%T!OPpKm9JD-_H?& zOb=`o{@mZ6nnVPp!lZf7dOffdD?bnq{G)o_fivJ0Y3^cStu5o@TtM!*O>;!%sUo%fmx?1w!pF;}Y|8Wb$BO z@(hm|z3*A$a>e!6tW7#!q`x&?pSwGg`G%X#R9Ju9_; z#R{k`%fhm*6fi@xWOqC9+?OG;;zNU6=ci(*YkwOJ#e4+@BWsxnr-Dxi?s^kI0lVQvsrxGDsws?wD^e&<*P{=$cmc~gD zy8jQ?k<4sKqE1;zJwM~;feRyi7>{Jjj&98}BgiwUF~ui!o}8KcaOS;U>^_4NDdzSr zvxfJoL6z~WR3_obqIMW9S5rZumcvCif%SjRGFDt-BU&~E;o1)5m_!nYk4A+ndSNJS z7?O4D^pp431b_}FSFI>3g@+7iI=Q?m9&PwfO zx2vPQt^#@2lzw>OSK#%_KUcR&g zNI?=rzzK?JW||VK>j6J>vTe_m%bFlxr!DWyOY{NhgpIHPwu{Mw=jyoM=sa2u#~xP5 zinI)6u%NNo05~)YTQgvO{)fvCS9~z9s{|LY5K=p}^E4R-32HL|e)1tMYZx9K}Nlr2?^Pt~zD zyw7^3I>Q>U50SIju5EYH&Dxmz5vnhn>n06{M)$ydne>c{pmu6oFj&mXEV8&)YR=z% z{nyLrQv-M9%|Q?z4c%a=*9Ak4afJ&<@k5s*fcXLr(*^BeGEt;#YD3_|S?O4QMhBFG z>s3Ne03OUO5untq@9veUB4@nuS_th0?@b>=ZROWx+&iS&V!;7G;x z*CK0>Io<<*PPh1hM%O|8dG!At9w}g>#A3vTqt#Fv!=mB=Tb4V7NoQdziY;_N7rFMk z_!P_eu1yj883Z|!p z`q<@#?4B#zYCo?(28$}L4pk9`p~Z=KMSluu%wIwADXMO9V5>K8b2nv}pGhbyrbKYN zKb81ITCgyf_qIZ>-QD6ZB`1#ACBjnKI-D4q`t8V9<8=UELWsz1V5feq;rONNr4$Tg zpya_X!5&+JvutEst=nZT!AEkE3lsiUC$hUly*t}@e))qU9guCxRjvQB`oD19|LJthfAc<9MH`0(r#<_{rZ?L1>H$o0 zV5aKu9c`uk?sA)73)aN^fMnLu3*@jRLt!)HnK%3pq?md59kUt&*&%VwbN}R$1*a~L z6?)4W*^++n2~re^-QihtwBW&{fc*UB@qt_Bs?qHrf=-Uu#2lk!ut|zY$z+3Brnxr3 zE!03yQ?ihAnQ*RtThG1r;d1};Z60A(r=AKvN%PyXJPsnNJL# zH)sD2rJ~ezgNfa9mXY~AzhHyt2zdiwIxcxPL}B$o_}kZdUwE8iR^ISVNIs@6*(vqR zq<^m=-NX&r)sZ^xpQ@`#svZ*2Aa5I>Re;L=}S=42Ss1jp1b%@_v5PPjre ze@HOF^=7U_IXd(4?8T00He;SzV_aMhSPo4I;T{d zUGe-2gd4HlvssFrnTuV}Y6!Hwh;#}D^iwBb0KCE6YvVi15w93wf`zi95+Z|?TsR)o zseLg;f$k8K95FL1N}yxV-GR;bhbuuL`VzTGii#e3{1o|SWrU8U&mi?Axj6@%IY)YZ zM}8Z!=8GoUQcm#HoHI3+He)>ixk|}#_|AB&_nV34d4IeP?5<)j%R~CGA!|N*6L7L4)QxIio zmGxJ+nz_v_^93BoW}NlEM*-COBsp9VI8}-1IG!3c-@c8_%)BDL*ge7C{E+G|!nK{j z436#X`=dHBL3x#2V z!_2prTTLAg+_x6qcqq0;5ohiPd#bfbkAV0T<$8K}#o_5e>ouk2BYcmzifw^JSzO&2 zkZ@-~J|;-1;*pK(Mpyq{((*9_=~#ap-D+F`n`<4idvRUGVZ zltbZyW^!VHaTd@?E4InQnojDt=4An$994%dKe?{jJvwBD`KPh56?+%cGJhOH%&iNj z-m2jhzht}WoE6pDtw7D}TsZXoMkVQWIi;7GghJF+en z5T9oF*^lkG^I90;9u3+w1ls(4oE+jwHKB6En3$$e;r)=TeeWI0p$cNt!{zZ+BdDkg z2RfN-?TuyF-atQ5lQ$BI?Pk5mU`ouooQx_anRM$_4S`9Az}t)>#xG}H+iawP=veGC z01RUC^v+g*wxa8gm-<|7kYJ+H$eh1vZX#&;ZODI_g&&yn@X6^jy*2Modi?OVzs>n` z_Sdph4$+)+M;OO>`=fImv20W!HQ>!U>7PZDFf)*H4)S!i&p>XF`8VUa318Mi{LnnF+q5XYTWv~)FsItzQ#f3>`LQYPAOA$GxM_3jCMVqzRY>X zx*V%-VhT+vj3z5%0ZD6K{?i_y(bHVDXai%Z6Gl`oK=S9^4)>LNu=PxQf>SrG4e@zE z+=k=VX+}Tov`|bs@Ll^~`ffI6r;)_Wl8-SL4@E=K4AueJs`ehfEp<}Q z+tWk~&Kxws#V*4?zxTI(gy-U>qWJ8$7%vx2=3J6zWkts7fZW}x=U%mh^~@A#xyzs(EPq`D#O^k|3@Q-Vp6El45pG;%q#9q1$KRn-IKg+J zz3aXM$$t+oy%H675~OxfE~*^K)2v@ZyXOM;!?@m`g@s3I%eU8qHlh8cs3Jfun)e;l z_?Vs*pv8j+GE(sFpB17KZ*pu3FL>{N*0vzGUmvfV^_`Lu;_hJM;5?5kHmqFwx&neG z;bD>(5>37~8h!IM0Vr>tV1#g?{ZJb_}Y9RtJHY-mHK%z5jEbOshY>f ztgVwyl_pxW^I$ysD?QB>KViV>3}TRkTj8G}(o?!qf#6(nTWgv!3gbJyD2 zpox{YqqM*M87-EHyPL5=Ye3gh6wcZc4c zjcW})A=4lbsAV3PP@$e9%BsSewxUDsz2x3!>eM#k4$`&U)*%o4AS*{Mwe8|^C`c@X+ zIrq5^VV&~~Z9(Da+CpxmW`dWf$g&1~st0ae>3{JmKK}==f)|jyljPeC)pLhN0uH5E zJoZ=L-+k)f{Es;94!ktlolnp~buCl^dtMs|{Sei^viEAH*YoQb3E%ck#i}(@C~ab)3<3I`B&AQb2ZE9uDnLjbMFI612{z&5gUeR6^; zJZDevk-L{O_MN3NkXHMVn0bRcvHwanbu+&m<~4GX`3ykdVT_{^`LvLTJEL*iZZ zF#!u#UmnN~i&eUI#b{|BsiaqjJL5bHOiT{{$6r!}&SenUZ)L}I-!?yfdQo4|ND8Kq ze6UnHN0CKj2qnc2*vBeZzrXVs)F)@MMTKTOz0BH;+3&D|AkChktW z_nKSEAZZS9K7Ho_DV5dBLnJ zWgq{ld`}o+niFj9UlsP(GpPxO9C@Uq)DiU+=DmLnUF=zr2xoDWf$1BI>+m$_XQNxA zkYL|(?UgW8$#@OEyc1$(cMg=Ri}`=0gaR_mG!X8*At;i?5uDImnYm%DEYSR)+N9jP z=}3INbFu4)lWII(O zYy*(QF2yBgpC_{hd~KMdq<=ph1cJhqD{T;ds$R>G0<@Y(ELwA?&vWx2ep!p$B|)nM zm(J6B(va(p4}KfKW11g0V(keH_9m5kz@egMay(>BTk|}p;?f&1v^yTMRNOSDxmRQ+ z#%?^J&L4D@bfE3ik|rjXS@mpOGkQXyJLRf*MD$C8HOw7kV6cC#5)~RAH`fR8#B~4> z7m1R!r(Psl##8DMuKR6ZEpd}d5eaYy+KJS|y#;T+fUGihF!K3Ft|(HNUX(hxk8Otz zmaz}{Xe&UUE*!MVnn6q6Dwb;wnk>f`@GvBBZv=~@CI=XrKgap8M6JQguY}`Yh2c!V zT}#lRp>ywHtmQyka?`$Ue7e{^VYR0W#okwf{U1_WQD_AUg4_??TX%6>tQw}sb&lwK zZUU44{P~pEU#I1pARTxu zCMPSU5E6O8NTT#{;D+we9vxxfv#W4FDqvXEifmx0m^mNRx&En?{gNKtrP2COaIUUp z*vvDKwiSU|qtU9WYRti3R{U20M1w#3`)F#=Fg!lyd4&3+7+X+j?X26T97;_Qi>Y@u zcD8x1%$Z(4KK(3RaqS!-rsi29di#_K2ADG8w~qu$|G4)K62n+Bxa>SgqJq@b`}5QO5)eyBj%jzwENiB;O;qZf`D)syDR8@+qb=nkPV z7toAQZ88Pm<^;VUF!-CAM4SKeccz9kd7xvPs0N~my4cSn?+~cv9CU%Uv?$T0-G$_i5H<*X>>AStE9NW>{>C*ha7x(WeAz0 z<+wXw1o0Ui`9R42{4QSofKF~y9CaZ9EExEI0Lltsz z3kdgA(=TtkKPdvOBjP;b?<(_#v;D`0pWe}Ws?HO?!NUOOghx!9SDLe}&k}o@nDxTS z7Qq4CJN31dpDTZkNs3(Dc-Y3D)Xp|5IEVMx!r?uH*1GOjg0&Y9gb(TkekbZJNw$D< z;FZkc_Z`Ir*kM2UdkSuSKRd6NKex?tg#J+MB_>Bt^SyKZoX0T&daj{wzjb=_ljK1} zrAU6Q!ZFp8LzVLK$Eqsr&_U%POFS_9dI1SdSeo=Y=4I4D!gC~-CCiB(IF2ZDXu9O$rz>Ay zHqj);Nn{2bX6Zh>2^JLZZ!_~g@hnUI!IKmDG98f;{9F3LNF5HuxAgFc1taMesum7U zd&7?On&Dna6HsINEZM!jfF*)^d0}&&QrbOgRdP_4xe6k6j&HM3Eotp(&F;WKz@j(t zT_Fw)>#3Rx7#&YnWq7dNgWT&lmY+660_U*#`l;*2LG-0H1s#g*u-c@0&ydLgvmBGyW8-NJlBI@gR=Tp&7?xy<T=D{=>k zUd^T{hmB79Md_-HexFAmx)0(&ZryTR21DN#J3PB)|InL@zS)L30hZ9+NDl{8N`SpJ z5u`kzvkh}Gu+?~Wr#3x?e>{6R@3w7~o|42vS+SY5yR)vWXr}M7znysBvs#qYDRn>o z=z3@iiGq^be``zAx!=NoD8aY-to22QM8G219f{uNaM8MJ(+4O)NW1!&DlLV{gKBO| z=Z-%940iKtr0?+&>X6s=+}Zw{wDb2ySU8?><=anRow&B=jj)&lPI9o^+criwf!~i~ zmv?txI}@2^{y=;%JoA9Lp(|5R0D{w)%wNi*4=m)FFtM3u-38!8O`!c!pucIS_acyk zBiBFLx}^LY(1T%K7ZCgU!gc@8KV_ zxHQaHQ?R=CA>2tvt(u*`Z3f7x<8M*JaHEgaECCX8t4wwVc<8t+y)N?n9W&>X=%sYL zX&GtiG779=t{V)Jg$k_NZNJqcaF~1de4?|VJg*1j(}ffHaUSsG=bi((xEwZ&6)kFZ z=){XWoO{~occkkP*(Wi<3<VZ3iEXPM-%9*?V|6!j6@JHZEqhLn|*~+r&IC9b@!{W z1p*e&*!69B8(WmY^4+az-CM2nt-n(7`F(OUi$;m2f9Ok*NX=N7vamtzr)vprti<$x z9UXK&MgomhNaPWzmepgVE@&Q8d>OTD zE3h0mZ<0r5D?NDXme>VV`b|@PcDZD^NJG-A+d(BCX(h3im4DgbqX5^|QoLm~$pgpS zdGGDI0HT~LgSCUL%^Od9P7cn|7|>XL7^sCBe~IE1;j{Xox}$wJz`&FLO! zU*mgm^hgGRKwnt`V)~#hX|;)h@9Os_lmcm(H}czSb+D|ILHNwZN!*Rm$lPY za|YX9A14ZvQQ?4s0R?hDB|-Ge(3H^nzUARNUsuD3X`vr%_j3}pD1_2p1F5Ew`)F|9 z50+m)8v-byDqoU&!JHrFuhdJ64wb5!GS%?&HJx=(zcsAQ z)}GR^BQVQl(u079$cbQ+g)Vg>dXn?lpn_A>@?W3qamhN{v@_zn!dCP~d@ZW$nBm~E z|2Cv$UE6(d<1Sb)#X6Tx1K3388z3?`aj+oGkidhM{~^CKKw!W~uJ))bV13Db6tYBo z=lB^PGPIsCm5xOSu4lzj3;J$d7ukQde}=N1Qe_Ykf-n3Z$QTy)I-~5ofygu~LhQMmHE0rCiT_45 zm9KGE_PN$u0oc{nzpEfiOgr8*TJsW!ogLJTUaYlXN)2&E_?o7+1e{x?G1%iE9$i*Fxbr!dySn=e?Y*d z4CVxpgJ?Q|)$-8}$Yvb71Oer|x&r8*@k?{!&%}pu;HF;Ryn}|GIYqjQp^)LMBVWOV z6G#93IO`8M0$`rr;MZ8yjd3Ki5ltQBZDi8{2*{zf_+`+bW5z4{fAfZ$&mzIh02;1t zi#rOGf0xh4>PV|7=!-SHvQKFH)dEB}9@>8hmpgRNbM|q>C9$I2Ykv!FBMe1DjAEQsT$-RFNwZe!>5`UnwR*BgmGe*ufJ=nJHoXVHEmYgca@ zqY#t(wQtNZpnpkf$T= zVmY-jwKT2c5A-(bLmj$(4IYaXwb$ZzS^*IE4mS~cu2cEm#Sq6i5isiV20Cz*ZqV{m z@|m&XmH|h@N%H#dQLcK3tl+|r&8#_o;Fdb0uzm@Zn?s|W9&(-!efx3jP_fLYM~;(p zXNcJr=-CG_@6&exLBX$d4Ie$@fh}9tC$N4>e-V{%J#YHLjiX?Kv4UchoZO%NDxEob zO@EPg08@r zD-%o~#$5gsdI4Vb-d94Iuc01Nu9MtvtBXBS7FR13V^`rTgy&s*8+qc_jX*A}8kGp5 zjsXdX8arqs2A>ZqC_kq|G}o?4{|YfYP#M*8Tv#8Ewfl#QOtCW4r9uC0P-#A8Tg@m zw{G5WWQPPY9XE=zus)c)c7VC8j!2d|8{qzc9%b)IOxX(aUjuO^c?$uHL4YXB2Kg@G z;XhooGgd9gk7_Q@*@DA69@|?V*iF`HH)#L0B>#U&)7Uj{QHLJ?hpR0Oy^I7pV>t9o zB=~Niy^Lv7w{lfADy#eU*n4mob#wq3uox?*2Ga~^o0YasW$^S zpR>)57@T18!>C;uY=B$x(iohu`xEOxN(kToQpjn~c~LPQdaerR>G{wV22B~lnQTB4 z9pVQB$MFoRVJPm)@iCwbw6Qa#stTE>vV%VT!=>+&C^M(EnfW}aHUzUSd-vwd0+?F0 z#M9Y(U53w_;WIgvNj?27%b02Q`2fb@m30WRS+8o{TkRjNKLr4hEbhP+uP`M#9XXg) z*vy4Q2Iq+hbEl8+N9+RnF{@iC+6pvOaUQabEIFqT8Hf=FCha|JY^2tat9Kp%xj0Pk zZ$mCFi#rH`pE5|mxvfdGr_wXi2hNT)Ji-0YMo$}DFU%6Z`Tql`@|tJxg;botK2{Xh z=7lA|nn7Q;`3=Q1kX69pEDTmJy~I$goP#?Wq4ZNN`8u*X;4>o1wjPN|?#CL)Oy3xp z?0yKAQro97+#fJ@U7P9;jWQYeICFiipX?>P^KcnTUIlOV`3wo8_+{Vx|D(aPXAdaRx{~uM>)Ga)C=|s}7mvI-6%_ zfg}@_AvY(cT`eUFC!LDVJz8sw7!zi=sFQKfbOY?i;Ckrfhle*yJ}?>Lw!c4?s}I+k zT+^=XGZ2w0RIRDXMO&EniT!5RIYebi0rPRrDWR+JwJZUv0sHUu&_Xd*X~GTwyzyka zImuI3X#otBJRFFRS5JKW>WIdG?55TsqF@Q|xPsLNq(c+W_iQ|FIy)ozt0A5{B5l;2 zq=y4lb!vV#4%3#|z91!`xskGS@tmc%yVWb8C;GZt^O@A47oiR5u7o#++PI7XH=w_e zNoe!d?htOv;Kd*x%d5BnO;z6~~63W3%h;`zYAAT0WUngQ1 zbF~Gu-aZ{|pkvbHa)r%O)eYV(21^FI?GR{2aA>bH^x;%^h%~J%Y7UmVl{@`dg&i4t zDg6qGSNSde!3!8@wk0lLU8D2FrU@BeFC8(5KM!ii^4Injo#oF(><}NwA1ah_1jrjf zEtviAaA)-@KUf6t6GiwdU*Pjz@aWv2Gd*6tVry}2#eVwdT^?mIP+r9g-Vy?fPo^=| zg>oL$>-ZHv{}}j+6e0+ZxktT5P#fuf_}vRvy0S#ib~}~Rb9LvQ6grhYuV^s!$GLLB z^K>Qkq`mO^sL!&KQmscp=j}jGowLk-50F!rgg+IA0TPz(-{YEK|7?r{@S3pBC!!5( z&+|-bI2Ff+70(U7(x{d+zF=j-99_yY0dBTn8agLba@*6mS1nR;{CjiQkV7dHW}J|C z0Yp8xuT$>7teTlV!3$QO<3#AkaV56nHMohOW3*VQ(GP8vdtD~68Ybph{m~8VdWClmOcz91sG`p))={an7za}8abB@mw zO#a#s4R*61F^O>2~WyKRo!GHNNhMEIY9kMC5615WKnfs@@-SQ`c#T5K!Kcm z?nmqlqE}6{2bF)D{<*UX7YzNBy(4CpyW_kKl4^rw7k}PT?m$Lq+u*wq4tI+=YGEA1 z1iw^H>|L_cS;t5p3df+>4Pe++>b5dS9CJAcRbX$K^hRq30T2Du*J3V@vM#0}_Yqkel~e*RS=+Eak`a~UahLn^qQ>+Z=BhJ;el^lU!Gvl*UmIEC15$@L zOYf4-WhF1GMU_iL|4Gz7JZAEG-~N1t=t<(@O)e;fz@ileaB6vlqLLJzj4IZuPt(AG z{N~XV0W9g(@ceCa!)&K5$B!mRy9?8KaaSxLpL;AH#Ry+4N@`Uau>WG}RwkZ>q2p%f z1F_LsvRkR-o7EvSyC8BeTZ8jJ^wh~e8_~rREn<;}ZivsY2@5{A7MMt@&v0Bzw|cQO z_Qk7IF$bCN4rvHM%yi0pZf{Ich32EpdEq^tb@V0MCkzHh-{S-8vY)8TgGj{@R5It} zCKMJbD@tNoXrEcbzR0;n-^erX6|>3)!fK>l ztx-8w3v82A*vhehzXYbM$pbVc<4*y#toiz;eaj49$>L2 z*v>rOg3WHOec!{613Xgi2=gncEJ34hv5KZ}Bt3jKB}}^*Oi4%gcm8_ZAubp?aon(S zR}RhLp{8{&c}0G?WH~Ze_$NV4Z6O%Mgu%4uTSV4}8Ww;Xd}7vMZ*{HIA2#*)#MtkzenAa zem`J;Y^W`c$eW)+8%wx8q@yuK@K;nS#Mb~4qynx*}Pk!v3;LEtZNz&i>Ge^dR_0(FIO1#dKH0w zU)w5NJV+gH^;_8J;U@CH!qJOyvD>qTO-)p0@LW{1W#N1%nzaY_cE!*spui*6hp48_ zSb$zAOxuW|GJ$hrz#YFg!rbj zBkgH&&1sK{t{_Id0GZSj8_!YRSJJ{SeeqF|+^%Jg>epLJ>AD2b$7PsfkskmZo z4lI9sJ7bXfG4DDDAoOul4fbPpvoquQg2{}+A?UHyX zEZ;om-zuEm04C9XTamYR6x#cBBGj*32^MEbbcfzLT48Dhb|vSDZ|9MG$X5W{z5TW* zx=%bmf>`>skI(&b#@>`U)Nb?rM?vj!>lKq4B;L!Alilf2mpvNM-a(_Yg$sKTvV0t5 z5&#SKNQBQjxA|VF_dOkp9arXONp?Lhn!{mYo4<7J`EdEb#YWk3t}k7Cv18C%7kBts zdk$ROIppUm{#us}W^SFmNh^<3Psk4KDf(YYG;i8+n-=mG>cunQANa6C^F2s0gGJ1q zN&Tk}{69Z?j|foMpSCmte(8JPQ5FAn^LrxtB{B17Ty=K2>H-z5Sgr4g;(Sn8U1r{e z>`mH=e$2q3KQro5rl%+zN4_alZ8I_&R2x=DE`^6Jd=ym0nX%q@91i>5eY+Fc`2H(s zfHA;wclpzN>osi@$2^jiH!faRf-qX03+&F&Lhf6D2!a@`b+3A>biu<<Gy4O$15Gkk%(d)vY!}zM+!Mce0~j zOU@wMGu|6QHx>|%6P*>VPO+DF3gSr1F(CvP(WK2GI=BI_{w6s5->eViORdGMJEuL+ z1XU%>Yi!;uK~^ayb%Pa*v^$@Sig*2cmJ0;NHD)jW`KfwY8|#Jv#@p$(yZf}qn0NWR z#?SU;n_U_JLcxI6N@j2cV&BmUj`hsPMP^ADlx`MF@y}pdm(>5^!d?m_cPC=aYO&89 zt6c9%%EK%*l*lE4(-;R7w4HiQ_ywQ6QjZtMgh9C`dJ@6G?Z|uo9^*w`&+a)Bv&wnU z#Z0*#u;5N9e{9A}7v}(zHNfHIzoUH?E)gH7-&ZYQK@!rGNSBY>j9KhZ*H$W3$FEE? zB~z)^Hx`il*?il!oewENOKyUk7YVL@3(*I5SOn+;qyvs2=nSLxL)rVxzmaC5PuC+$ z@|F--R`5^GL~+kw@c$tn9|*++i=n|vo$fK&f)+c-lkn^M3cz3@WU}b03^Zm#IT=Fi zYPR4aOK)VKW^64;-+s%Fk(yTK165|>vG+P1)4A|Ik1hp|ZTnO4uY8z&Tl}5m-w7XH z1*vb*GGM>Mqz6LnU+#M-kfhAbt;XBS=g*rqmEx3bo(c#)=%lrf)E84(x2g3}-x%GDi|)|18=a-@zqvx^H9YLvMf>N|_}v2Vk9IfLS(VveGV8 zKq-d)j>!O|HV?CC0Mb1lp}~sXB;SD5Z;3af=`WQwfzj$5UrtTAa4oc!t`bfwX?NS= zI6kqZD}Pzq?%i?>mCVDhpW~bXo9MKLc)IX{E{LQ5TT77tX6WJn@eM~_=yY@aTFio| z75!bpiVl)1J9(@5E+eUDpM9RPY!IUL-rJJ#8@2nsdc~E!sZC3aTGdi5L=wTcF>`;x zjQ>zC=OWZYq;zd~(J`iScM!siE%)(j)!T|K3lggipQ4=jY|T8D=LtIlId4eZz+9-} zn6oYC<#8qC&e&Ap)FKXWR^fe+`mg)Lz!+T0(eg5b{#9 zf2S0sO*}X_Vq0uIuU_6Qi-kK*$jh?B5wtGQLy~_*bIWY-ix+OxJy|)gK()&&FuDYz zz)_hK9hMHpK_hJ7__wNF@Lr-=re*H@SLp7NEvGoO>kq0LCDf8a79+b{nZPzorPy4VFViHOEaNDgFYX${b|I1 zU2*&*|HVqmq|C|)fv#oMS3`9}7IMDq;cAr|$&+xF*Vx6t+R{6mZGL@kNj%uZm1fa9 zaeiG5O9HtGW}%hXr$AlaP>V8pdMtnk64Zn#Z4TMj=SCv1SaCmWq~DLyL<@;IqC?Qa z56b=7*Y-+tIbax+pYVZ`ox0yeVe-a~rgff?2R-@kaG>N$_$PW5j#!ZGOd$i#qU)Ae z!eBv_QrJ?{G>aX?qBfxE^SFuAt*IPL9(_#gDSJA|n2KUh+eC^((6ekS(qQ;~2gYI` z`hBH}exgsL56S@RVTU7^#L}s3*O5%qs2FsJVet)u+Hu*o9T*I@@zdYnhJNZW8;7ag zSPc4HSbRfT>hjt6b}iqp%HbaIAUaFHzPiS}loGgNBDS+(t31|TD0(RzHBLRy)2QlU zN1yN4TKK?RS1(MR!bkmxbi`o>YY2V9vVTTrDr<4^(kQ^X4)yIjRyupSnCTub-(vzz z6nBo#1rXcYx`C@JXG+^7#t;mqsViX4_;VUy$!)eSuS+*XH<*547bi%@eTiaaSxw~CMVmL?`?5*%F;?l23f5s)SKaBC9}(r~ z)q>|Md4kmMeNJ}bDO-1=Ot0G88XPdeJ`aWu>=xGTJETd$mXX|>b~hy-`R??kA$s9) zl$9mZKMQ?%UpO_A&zvPBtQF4tbLlI!-GM*hemJm8aiUS|hMn2IoaB+FeKv6eT?t}QP=~=wa1e)o)i_}D zSUjIymIpyw&~S#!)#=ulvBoDBPW1g>j}N@;Xrpifiy@h9YL@j-FcX-3yiwrcTAS2h zZ$U0uD`NyqDb#!nObQ$AzA z|1?G4mhdPTK0X)HP+tQ~BN4!_BePA`YJsFMuz|QW@YW;oB{2qrg=3uOJRiK-H24&l z+Xi>^zyJi1Y95!U+P>jR@b3e%TIW*;?vv5kn?Nbi3Z>^XKK}#N=|3GqAgq2}^fbQu z{raMsI~tH#t&?;c^Y|!_t^gTD5>Wp8we=W4 z4=`e8uXDSj)I=Kk&U73-b0HG_!{5BdHBvEhI)8$LxNyR4WBsaKO1gM%^7jE+k4E%F z7+xIL6FjXc!*t;<+BR>OHmHu|2?J|jq3C-*fr({=LB9TKvQv2+`N;7lg_aL5lfhyD zQ70(D@36-2>8BqrcZLlCMvwe!ppp}hRm`SY4( z*MUo8MS_I5k=-v5$Q4{6k_jt3qjf5Q&mu3NYa>zhG4%n(aVNpDcY&My8FY21<$swr zjgl3>5o!1%YlC4fA%E`3RZq|$UU&xRN`Q=XL*||D{29md!ZuH6OtumjZm>Y23+57k zW%@LdS1G!WXCCErSO~j=FX!({vbhkh7;0oZa=l)$Lo~5f6ax3=pMH1?{(k8@P2sId zWnf>xAyz#gy)ey{lEVv@PaCz)=#TD`Lf*os*=qg6CAp#Tqwb;q)!-LFbSNAC{??YH z$pSgY+20>~Rnm$3;0*J4Y}VS;*TbV)D-4bd&(sxv!;{S|XB{O*0q>@x_Jb`1*|q&) zDm>iL*07Q{@=MUjM#W~wqFjmiVJU;jbRR^SwbG-E5j<9?V7HAfns}+_&msR9A4cEy zUeGF_FPMH@yzzZpsUIkR@4Oi(Dmxgv_)rygoqGQ%WDB@Mspe~BT@B>l)Uy!J$-*M)V2L9sL6{8M$C#@d0n7QSQ? z2^^U*IP9;acz7{rK@i7KxfjI_UA?k=&cZ%$A&@da|2nh84uU7&g50^Cz$?LkXbuic zGDL9Odrz$KRP!ww-=q*n2+(xrj&+`dnh$f+5Or38n$zF*-R{BoS1voyL4Rmxa3EUa z8^K|ib!ATNP{04*C@ES*o3c+uNy=JwhLklXyKGZYLfMy$ zWk{$jV@Z}|$TB1*Wyv}fA!INZS<5!Y*vDYT%zV$~^Zh-3_v4)VoZorezx#3jQ7E&$ z-`DlJUdwZlv+O84>{PQf2@I5id(#pa$QKnTs+!}K9h#8zPiP#q_`3$f>8O?1UW?7* z8hV=CI?J#`^1>djp{SA~b#!OM(SLOg z10n(ctd4+VSljca{l0a3;|Xi;U>mF(KUohAYKs5v-v+E{HpJ!R<639Zb-SAT&SIQGm7OSj(%uIK;|8mH3WS&E}G zo#`pbtXClCwiTGXE{iWei5&dC0(fJIGEw?X*OoV30B_^UbiI&s{o&^hE5cl$->n>Z z@KOT@5O3HMFZ=bx?I4bKT^|nv{y0DBM)HyVPaMU2VZ>E-aVllu>-}Aoi2qEq4<7p$ z#|Q6nlXEHkpB7JpN9{Z51oRIUId5d#`M*EqoU(u zJxM)Zp>JZPlMcKa{Jh&w*MFv*ee=k*!hnP(FvI7ME@zv4B%bm6t;(b6=L5Y&La!Fo zn&%c3?Mod~n@R79c*cGO-R2w&`*k^wzhfPJhEt!dRI#} zn0xpJ(5C^AL#?>aEB)iWyU__t9{QaKyZM0fi?fCr{P5-4VlC+c*$2NjUyKayzl5K7P*UXVRiC!xFG66~d8N%ia%Y z5&xeZBx;_1PH%bd#c>gA#29G)Woz)bqzp2}+ylg(KHX0eVupi39i!3^>P*7Jk2Z?T z*mr!?w^9`Sb3Dfl3yBlc#q&ge*vATnp3zojYT(kW>$CLk{5-D>E8PVB9+_L({sgx0 z*q8?E-ASJVT(jQPcA?EYUZ>!{?{AybJ?`NcYdPHRxJhZBruXt>dLZD#Zu|4{I7n&> z2O#ObL!jH+*!hAZ?LtZDQ9Q2t&T^pT%bTMFJO{)X_g2C+6&O~2A;7wE*6eFZnCs&4 z13Ma(LwElvhh;DuX7H;ans65kmOT%6 z?TR~s(jL3-)UI*i2yoS51xw**W3wg4$5D;}(6?MT?`=Py$RzdYqLUDBJY!MsY$T5$ zjbaG7R_3A^P;5BDkyyx81crifV!-X}XqHmDaZq^sKN`7v6*=}VjrH^QgLj^CEks}2 zvR9OSy8tOiVef}CkXaoIN_P}!_`khK)U<&&&^6>ISmLp8U$1TGv;lqi@-`czp>ZEo zyMdYPhQKw1R?ZLcV6~v>a^%CFbVSBIpB7bM<{=}se!2W`ysJfs7`MA$fp!g;(LN1C z+!3@e5CzTPl3AUd-7!qcf;i;uw1oRtyqUrzcGlohAdZ$F{}@WiU$i%EssEc4aVwN> z(D-5(TeQs&`C`HzS!TJxevtOk=(AKgK!|$i7-|8vHDe8EV{AqBy!Y>%Xm)77L#Bq5 ze_oi8&F?vHwT=&`o)QS%eVa|BH4Cf#=&l>%BP5bb}X?C9d6J}m)W4Fz# z(RGz~O)Cx%o+qh_fT;vV2XpLndUL2$H;dmamyC2my$y^H&$xtOwqwDZ7F>qyixV5O zND6?}575r67BsKEdmOW0a2isAecfHEB7IxN3HNntRkl;^XM|gyvtal~2h>gf?Od(0 zKT403GL&Z7RodA7qcu%&q722fo1+=Tu11NuQL0vELjkc->OkD(j+sD#MxWqu zWXmi3jgFCSvlU-v+522>mB9%2mpg(~uattBwHYn~RL z`>P|RMc-mlZpuQo62m7Pasv^@BX9=mHtOo)ojdY9;RYK}3>Et>Kd$lhYr0Zb&gETi zJN|{2_wJr~z>~|KYGRxycM&SiFs)ZQWwGB@ii=|h$*2=px%(>BgfWjh^8*Kyz{|c3 zBa#ysEScYh*~8-i#|Do=`zn4qA)eV|@Q4^Lr0x1x;GHVVNTrP5o9z5U2+p8heP&-f zP1R&9*`2aLK&W)v0vIM+T>`SuzVCylk^6}hc}lXHIJ>$AH}_cJ@xM6q=I|n(6iANl z-a9#N8_?tx#?Y&+6_(cxqsyT9ucL}LOmSXrVXp?N3JH>lEgLL9+xK7A^z=5UGSn5_|%K!<_ zZh{p@2tQHODElHQ^LmV*s}|BVndA|qQA((8HkijoUU?X>b78RH8wUtwx1f3`$}bmb zkCcU57|i{Mx3KFEKeZ-Z^auv<8LE~r$YrpU(tDDs0(hwc4Kjhq7;B7Aa4Yw#4GOlz zY$I*t+KH?A4R*v7Z1cZ3e6RZdnq<&aFs4nn)%iGgWx6^UZ;i97<4=d-Fn=9ae1W8D zH@6ihigdlao}Oq~jXShoPk~HvWDdDGo02_aM+uI0`4WGwp#zkX8% z?Np}XwE;$_9PW&{Y*+@`d&q5`ERP``Spgr#a9!sttYZ$%(^bBvqMzYU`i^gbk{@d9?s2E@ zs6J1vbM9chz6I)TCx&N|Zj;iNvu=S);VN*cfZ9)H30)bQghJ@;4#h64ZJ~ z^tw#0d&4MWCvyH$pnlbBdG(Wc5*!6b;Z_9MvBkgvT( zc*mjZ<7y$+5s^Z-wJV_ZP1UaQra(9G@Yi914u(_>Gsn2640w{HGyRoOIn|dV95gbb zCimH`2PLt$%VGh77ao;4afxGE27q3{1xI0B&iNJh`B$gVf zFw);d8u%N~QR(c$z3Jb?3$FZ3buxW(==F<~&(V{44CKXAv&imFD?aY?{@+WSSpt4vLW6@3ZH`1x~qHhN~urj@|Psm!7N+;|oO-ofU#)qa0U?;9S z%#nvO`~!;%dWHnspu%4+2fDaQ9`U?;KuEtJg&`N(8{nb(2gQXQ=$G5^~CtsA;c2MTjYtxbDrnM zI_BR*tEl2lTbQaK?|i2n3P1GQL8J7#vza_6Nh>@gkMH=8=A$nSi_#@*#BZObb$nyP zGYBs^woRs#Q?$~lOR$vyt!RjM3&^rwPFK*_;IqJ2e@Jw{l0RriO-ad3k0Qc~+h)@e z+IzI`wv$Xiyq56BTjB@^ER%tGcMhF%CPZ+6>| z`m_1tb=tyZ&^YZqRvw76@wcW>w(VGtSV`Ph$1gCtAna!{_Mth}K@o9F>Hi+1S42Pm z?^-DCiTlizwRZ5q_`f*D*x;x**ak{arv#~jT3R(eyHQ_xtVT zk8*CE+2A~Dc#E;7vn*5pkwnW21-Zwo%%~2s4zAe7O>)g_ye+viKfymLJ1c;nLOmTK zpTz@?qM;P6-42TQ)V;_*fjo5cJWucTHD(XgJU#Px4p$DU)!ciV%PG`J^xV=no4ZL+ zwBv)wNyft6s>0Wjz=YdD7qq0H6vlni-$-xpCQlL=3l_GOm{T0#4;_S?n&ESgN45a4 zj`t*}&;#oIMN34d!DPhXZgc$>3ufAjj05HF@6z%~+VFP=tmW_(eA*o`K~Bc4YWY$| z?h7||sdhZ`mvoq1FCIth9f-pXShZujO&)mv-e4lj_s^Er(&hqgvHIAdw)Ue8s)jtc zTI~9hcLC%mMj7#nfpj_~a6bS40NbBahm)+M^&BiT;FeVily5#(wVf$!Z4*zw6j#}? zJ*343Sm_ULV8NK09D}}uZC}`X4Vt*M{Nx87TmXpWnsfMLaQIVIVz2>Wb$_Kf*PN5v zRd;lt+v~(MFe=^ValP-qMKHZJxo_ivC~EOCRH~NoTn682kj*=illq#0KJ+AZpo5Xd zN9aV#E5SM6-gPXJk(uAb(Z$oHov>1LWEM54L0t9?mKT|cjVpVap|lmOC7^MAi79fw&TcftxNBX;ruWhTa@WASw!3{B%`UJ2Q_9ZG zb##m&g~_pw1fy21PejYCFOB18erh$?I{NSp%}(O|4-7i}ivtgYHkD-E9_*b-NN{1i zB!8cUqr#)Z0B@!l@@7hAvY(>Rt$Q**MlefitzMb8PgkQh{*=5Aj3 zKHG5J3HHN=Ecwj;X{Za%e(~vgC=#wXXjPBa+8+JkqF7(aaeRrgvTFdMT2XWeB(8L> zRvE9b{3-m&uE0x`GRlg;t_p9-j%cKq4GyqzVy#S8=G^_oCuJ%h$~{LSAJ!;CW~S zq!`spEgNg7Dwm_Z_XgkrI!Wsy|Gk*2u7S$QR~GZRVM0rzMUoW=EAq%VDqz(u)=So2 z{&bIy8Z@pJ5mvSeYUy?GpjhpZZ5I$+D?^Uem#F>}CDqnaXCkbhjVFx+EE7o}KODjg z+T416R;SK9Dkq$$$j`XE5HTSAu*td+_xD%fo#7wieK%JULIS9=XMGO4DI-pl&Z9Ht z9POf3e)+3lVXaFTp8KB1!)T%-cr1w6yzpWAW~M16nwYhx@} zhdfS1MM5u}gohC&rO_T{oBN7_%7TQ*IlS(>N?Ar8^2SZ^Cm@r0Zsu1&lQx%_Vfnvv!E^$C>a!PYlK@55f+2dZ8X*Bk1M7)Jo zOsHv-4O+Nfift zKwnYv5W(8_)~r#(2co&2!XO#Mq2wLLV}Rz#wG2MMqsqPn$N+e1@#V)e>J#_!{1ZgC zNNA5XqshA_E{IWUc>xU+4?SpR$S;xofFIc~huDhIbdpZJ&?3)qp(oS}!p7R?>d?u< zI}+biyi3TJxE*B1SQj?$0Kx$-AG7D`>%8-$Px-y?xvM&0GBdDF4S@Ed9k<$CC$?e! zeLDG++P8L5l=s?P{li5F@eLEE)BG{XMCYb%?FG$g9CWDG!em8O97hD*NAV{La=9U| z$B%Q={7qQv-C%{VtBswY-9&I1iF9ZRRqjOqhOks|#%j#?(=@~xtYcsM)6L*NF*N^K z+;NAoR;d*jQSlarEgEJcS*?@^_q5ayH0wa4!1F0Wk|< z8dM*AV5YKh@d?T(+M?=Cp7*zQ@ph1%rWjO#WLR-#Z2S1sP`q|x=#^)WEtNSLuiLBL z%?i$xAycStH|u;kePii5YCKpZfnn2$crhLzL15aQj!u8%8(7&RAoJ+ zO0XdtisvHuAtcTID{-`~6IpE`CxnM%a@?ZO2tHzYw_D}pL*hHd z#?%AkZ4{Mm372^3klXhcdql**)<}>~J-AKj+H&`Uh)i}5T97+?RqxU=*M6c9nOcm< z9Yd9Dz8{-?6&#KlLB~xihCx1}j1` zR5-I4nfb_j{ULuAr~XFau7tgUvI_kQ51tB?6Br#y2^qCiBu5&xq zpd{~7tE3ASL(LZuBbK!96fn0=1ge8$7yjZfz;giEyFiHj-k&X}SGET&$9jreZpP#L zYX-i_E&OoPl7EtSX>*~I?QG_+7qp?AfJhOb*KbULKCa?YZ=l6EFJu|rLLZts^UqMn z6QmW|gNnm100QHv4S(>0&MQDyhhXSim_Cq$#}H?(BOv*OSLXMvgm?eu;Q7Zea-PUQu5$dxuj%g|82Gk$p}0UZ7VX1hJ)o;Pd#-Z z#Er;gTRDZq{r`LytI10OzxZ$`PFn2jwMgN66aG0aYZZve8At23DnX%fAbHj9O<`P* zfdBI;^RDASdcJ!tDSZK;T?5{@+;1?(+;xuxuO>%BZgXxTH*w(eo^rn1#e%ar!qF`3 z?$x+K%=80T1n>yRe?CRvoG1>AU;ps@Kc0h&*Y1uIBeYip%(t#`2@L1$91y68nBytI zQ}m)impVC6vH048zEYdC9}Z{<0FF!P;+9gEz0lIRVKxJ_;>M-ts-k}$)tTpOI{UTmHCJ(z= zVt#-BbhtyElm{i?U>&pq5LM#1dLJz=+3~;fjqVL*Ld|uA#SQhp^C$E2cbKyR4;u~K z;Xn#&faS!IqnM-wg5vi~!pHT$QSIl8+ZrhV6qdDhXUZtP&|*K+RiUY^;FB; z-Ax|>zj@0(!y5Q>xBbFgJXXZN7xeo7PBOEhJz#a^t+3=4wq$=l^zF2i9-yL0;EE3F zt}A>wx;R}k(C@juuJBcD z2?!bvQu86Q9*jDwVEY+0Z{M+tB6eeXuV3GvKmJ7Mj1Avq-~ow|d_M5LSOzDN6ew}YU3d$4jnvjIbdltj&wSjFgVK!()L)p`B<#$r06kd zISih`JQln@HeIu8Z7TT+Xv*d7%j3q41H97-PKz7&o)lj(n5`{3B?fLOwENmA(LhFT zg;?$B6cb-yO~}s{OpwwroNn5)`~d#_gEkB+wyiy}!H+@HDq9zh{B=m%*qVw8Qq>st z>ka`M*W{Cg?1K)W0MksD28K8A7vzyWe$B1?Snk|2C#aoJ{ zHF$h@)=%{Jeh;dfyzTl98^({ZwAidoLEFwf(h~_5^EJ}%aBvbCazV92$`5E{sVWB? z6}`Z)wHTf+dRTVy9Z=8stEVMwVb;2l_~p4nx3TYT+CRz?+y z=1mo8eiJ``t!y_l4d3ggI+b5+Tjlh~FG4XH8+SDfoD&Ib^tkGZNxrQ6BJu=s_0|jO z8rGZ(vPRtoEc(G8K0}EWTfM$%%?Wgq7D>$WD!tw;qByf191aw$;=8(j%;lB*9s1uP z#W4PUqn~Xt#URq)1!Yn{oRS4BELqo@9aKt1`LTyI8ws}ad1fSJdUAjm9slipLs=8@ zcpnA~0JPoK-eP_~kbM*4&(s?T!U`9gpP=VJxq1^OF9P|UjM+NEww9j5>AjE)bcN^7 z)|u7R$GYBtW4m;RvR=MpM|*s(`}mo2zR3zHD{!^=zw8Kae=Mz+aY_5CY!hH@M7Z@w za5=;;C67jSFLEE?O668ZlbkL8zECNGc6m3fN4WX5J5-TDaa?HOp=`nXw%@nGNFl zPK16WUT?&;JxrsxAK9cu^s$s@Dj_lUqQV>tx<{LsfYlDYgy7l&)vCN+P`YCnUG z8XE{SPn0c!j+bXqrJW@p+VOELVe(M$FJkFhtfMVH@tlbqHJf{Z{v&x7BXWa zW(kaN>!|lPi>VsgQ$|ws4T{qhG5|l=D5bl}Hi(XQ_ba7#`;zg~6ZHlAJncLRR$LA) zKM>=GuR__C_I{(@l;ta=lupNS!luu{5^8 zNdwoD-K6Er&-YP+)8f^aB`VM+yJ`A`qiJ~E+ch}sz)EojKuLQ%{QcvogyhW3kQ{af zapf+EPZe=S?t5LMmU(b+c9WhKLSdw119xcH;XvPvV`NuOg@HLCdZc($OWo);#D}Ty zxlh*O^jVnvX`spPdNd)p-H{Qz`NQOmliBtS2d_7*$tYTGbfLrO50Sj@OCq3QtZA!d z{IWez(5cAV8i<5ej^yibOnq^?>OWK<(B&ENtYN@UmBifoa9^eGZROKYiEGl_eLbG1 ztU;w7r}0wP#TtM70|{zJuFp7jE-XiAHKB(<4;n}TUYHZ$tvtu?y= z`|!C16PO(Nry_MH=_1+uMTa;$lk{@1pgYH# zfSJV2_|(t7Hxc0|NJeG=`8sTo+k+(G-cKW=zz9rJ%AU}Xs$+%9{Bwu;bF=(dI*R`& zIKKWs7us_dlr^|g`ER1UK*!{J&C?n-GG%U{e|}o_luHUeLJP-Fwim_vWuk(N*wuw6 z%RT{Vi`@JZl}t*36!nGCl&?Oq*x(UsImW`g}gzcvNy zfDL_F**|C6d};F@A$E1}-NXDshxRiot-}Qsv9mdB8$v^_25qj6w7w8%0W!?LiL{{v z_ooIoBQj|p788pOA2qKIx$ndI$7K{deY+F7df-;DhS;gr;hJb>E8fz@fYClIsq4 z(K8r)M_6%rZM0uUXOl;hByc?T*=@+Z?Nj!ItB3BxuZVRty43VJ`o~KfbdgvAO3i1; zuPN?Yt(wUVQDR6KcD=+LxjO5o1;uXj{8X`zzr2`S_mw|7CygkM>#s&#=Q}@JO)K=^ zW*Z7YNZ?g%yLVDNw+Jrp`@MRVX<_RyXxywV_voaa&>u6E&!Ni_fV}M zt__|)@c6}wjiK1vRvmU&&D<~Gh-80RwUUPwXHOkMZh z%D+xlb`uv;J~r`SKzm9UZ$}5r|8?!m+9q}%A$jyKy33*SiNA61n=W5~*dVcA z7A$07?xG43fo{6S6eOnNypeVn-`Rah`lm|nXhHd)>b-JAtmTZ8zgZnYcJ#G{Xc`_@ zOYgw=iq!LcY`>?pzMp3UgbN^?nj$NcKVLcaLIR?!yU|X9F&112!>iE53BEVZ{l^>x zw|YKH)Tk$OMURfT5J!zt3BRAPr>N@^$?UhaL$CD*v8btt=PHf}{^ZxYD< zgo#;5r;dkF4%y|Ag-MmoalXfP91ZtU!iU7S={(10v zjFH!V=B|E5PA`v%7~`E=kP)D(-x5Ar^KQQ+QVxh_bNicu2oUk$(N<_1Pej3qj#(tp zTSDFFfM|+gzjP51fcb1>c`TVFOoIm_^QZfCbaq9G zhzY^4kPNT%5083679$AkZs;+&tD~l8iA$Hy-ZRhTjDdgM*zvq`N`gSdkZl3ljW4(sNzt9V zbPPr#nG>8lmlVY9(^SI{|jvi}m?~k0x@CJ(MDcs*5;z~cbcs&(p_Xxh& zVI0)lW)a=|%*-F$ONz;I|BW;P5`-YlKPGVgb85I| z%unEiW-C%9oO>H-%kMTz=UYc%)(c+42U}8tkUp`B>ZsWpMJz|PQ{Ek>UpAQ~vl%p> z%?Q}4@PZ+Sd6(>DR^f3c?)NU`e8<8Mu|H_NI@)fpc5WD25fgS4mJUi1v6d5lxP?Co z+XCkCb;kk3->^2^6Na90`6>G^j(E_|>WO&u(0%_XgBhE_mE^8;P3b4p{?56p1sq3F*NHIVgy;uz{MpFQ z!qcd>_!U;5Zs&^MF+TqOWXWY+P<4ULWiLF*s0Yoo!aGx$ZSqn@viU>P$|}|J^a$O` zrV@v^j>jH_jm>M^?o=!}5@`9c!v?E(sNkU{8O1P&NYE!r-4sY+Uh4-rfZVP!&8q$vd!PJ#&(`Z^<^< zE?Zmtl#)_&9N`Gh?bKivepmgA=uJu!hY^=LD7^Lz11p1S*4>wc5 zIt0&ez_@$omv}#vaA^Nn^tDovjiY=+8wDfncm_SK6Quj#);{(&*7^Xd8*C=H>;M|6 zrYrR8u8pySfPi=VhFHSTIXlyW-diWx73~0D^B>h1_v3R>OzE^qGhEc{AURd{^xouf zT>8m9l{dx{f+6KH?lt)USCT#G=$jkYpBTNSYU2^ykb)-E z!n`K_#bNf4a)+HlVxJzg7YX_J)k|-IM~^~dhWhGHpymK5qS)N zMS4QR=c>R_wNRCNAGTE{9@}LDbge4pTVghUGh<*bpCAR==xu@bCdE%a_2?#qtbz6Q z1R*@1R3e(a4xk>4a8?Ri0P^xh!Pqa+bxvN>%vVRZj_-6%G;T~|v}B<~S|#2B#u#8f zXY+&|Av7K@{yp|A>;8*de>eH`HTLnWiKC6lNgdO#-ViV}I>hSi-dhEE#X5}tZrLv0 z&3oDP`0=%Waa^JZd9SmMzG6$Qv-saI@3R}(0y5x$I&WY*?`w4o^q#rkyRF~eeSTkg z`+SFA6m5{rCeIWBdg#lNd&iU9f}JY2QIKXYM;6)cZtLIzeABRL}?*~Re@=RGmB-qGhtYM@%_ z6@z!JUR~PHLY5RTm@NS4F=iG$FY`_W>3sikS4tq0tc?jgOzh508QN{e{~the?DY%S zHK5=UZV1bQKh}^)%jkB$bs_Y~pNwu#E3IZ%{07TRs{NB7Q=#lAD3vYwnSt*muLVJ0 zAV(QNY14`8zEsC)9FygUH1kaQ1h@gUz5PnT4q>R=FenH7$h?+XmOpLmX=C=A&qbz9 z^^jiM*bN#i(mr63k2|I~Iik{G2bp+pa4_+&jOQo~D#w;)+E=gM=qb9lrJQml@yeH6 zo$^lfW`@M<^h9O4AP$5<@-PKs-2|wldbe45$8QfL975h{`6Y2kRm*|Ut?7H)`dzm1 z5Rhj83KO2jU0_2qZ8W^rY3%hdJi95YAoT9{;5XBZzol^Uy_8E&i7(v90<5~ z3Xiqr?Ylm(-g@PK$ImVubK7Uuuh1~yZ`Z|nAb@#vzOU8P0oJ`^`4`u!dTF|}9#~;Ja~(X`?lgJi~+G zW?~jQ8Fb{g^LAM>5Hw?Q2|4BP);KVBj@vD3bIBdG?~T?u&1vd~31OAr;a$uZN#|iO zsv66CniO9hFLh&I|b5CV3ZWZ(Y9<4=7e;c8nNkfXJhr$pQu1mbyUah6O+~3i+y{0rAZIr;E7<)HuYV7FS&B zKbmlSXdz$wWF$R3=4GII7CBj1&o@^=PhE&F%_|S zk2qPLPXonhTJ{Py@Uy0^Q=bEce(&={I+=V_Yt!H-+ZkKb5l`X{ht*#B`v}wwNkR5O zgvvnvD}y$;V(lO^EfmS2t+2?G4M0dcU53w47|_{y?+q}JmZOY~%a^W~v_Z>Vd$N&4 z`pKukS{`O^UfoE4}XU*8~_l0&dReh#Rx8HuX{IPW}; zHr%sy-dd>bf)hM1Shy?N>F6*iwP83aLp14ady%=MhxT2)fgYcF(OU|nmyYoa1C8QT zq+(&8e>(=z_b|yg1@yerd=I$ZrJyM{XR>QSd9c&NV^!$}x-59jP;e`UvcB1<%;Pm1 zKP4MedSnXnNj=iR?0P|4gzxZ=I6FW@&}PU zq#>?+{*aUS4kJX|vUJ#+%Ec?5`IT9AJ;YiXyI-*ysO%rmg|A$2)cwYV1vwg>Xazwp+_gCPD^OwN>;bYvame5qcZEG4wVssZ z7JF&#R;yVmz0(_|FM|h;yk1F0AnPe8LZLBtFE3i11s0U48n1c8zO*}6 zC%nT!v&fbvW-+mE#|>0JIM1b4e^5Uv^RY$LtpedEeKnl7#v2HoUVhh6@LILK+~92Z z;X6H8*sC_{cy#d-Ep?zAUUShwOunfzd|6>-rQJB|h6K>{VRGdTT!l;5EPv&ZsL)p; zu9I)WuHUrYaw`i{*^arSbV>VOkhA}y>P)!*B*u99_1sU%aH01U+z3MBeso9*U)C}Y zoy5Edx-7aln5i=RL)eXJ*b$@)1)#6?b~O1%>I2y}wV?XnI8CCQs#TKb_RiHqD z=8C+Gf1F6C8qC=D(p`S68gKo+6|^ihy#A!1QdSF*qctt4&Ytzliqt4Wmw#ZQ}_h3kn=+}87Xg2(<*Am4}vM@kfs31L9~Y{g6V z%T2vBdRov4>jolL_@oQ`UBnL7iPhW&zJ~je3$3oaqA6ds*+9rW4dpxq!ja;@YExrW ztUd%9XWwT21(XnQUrNN`HT#y?Z!(cSC%Dizkzjgb?NUnvjT5YiST5%Do4|f?A;0}I zqP%ECk#ZUxnURNA7`j5gD!r%1xKg!^-x>0RKfc!pRL#f5krP6C zIkcOmD!tv+T6V^CtEYC#8sAyw^>5Q)<6=B}=W=8juP+s(81GRu)7n8AUj@~Z-c$7* z&)Y)&NnfBO%1FiKd6x^5rlu5!+t%N-C*C5pfzL$Wv-G6*t!7wZQX~>eourYiS&C*q zg+8hr&sF^;%&81aq}V5(uGCIhrL;rg>(X&4rZadw013uWFbj~uj!!WAlA_-Ig{qq3 zgJCZ+2b!2Ky=8(yhpP>JR?!3S>TnV^ZGZIjT-`K}h5z6?AV(JLs$9?(8@TVc2YS)J zN?bhxxRef}o#&3*Xp9O~pRc0|*j-TT;ZsQFQDbbBC4z!fbwLW~uHXsCVM1HR(AKK% zrIM12OBny7UyanmCcZ2=B|m-?GUyUI33xoEJ3m*qe*E-x_sWZPNzyljUfkN+U{?kKM)vg<+ss;4RnA7$aXUQsPQh7_g$rXPdw? zN<~{h51C;BKnLB+FSFi#pVPbjQT5%o0E0$G-@0z#I9oDrRp~}_)}ic6qFvo#u5P=` zT-^Xe7|%R1ovVIXH~W&T>-`?HIk6WNnM?CY&lej(jq;w~zHr%sGIM!XgwO6e>>KnZ zJH1eOl<`FXr8)Ezpg_!-WG!?azyD~$y+rMm^*yrCjso3>*Tzky2y<7I3okVs_6A~u z2v46+i?=dztmP=H$3Tqhy_ZBPzAzS=Z0I)@1kz+XJA`OtIJ8Lqa$E4hn>IMwytHHg z$&o8Mokmh4S$g|Va{*H7ISy56i7Sy6IIrGq^_xZD-^ct6Y;0X zPO&_Bd9p2By|+%?yMs6=drBmlY~5|$dxv33Vpku^`&KyXQxA!nzi8BOBvN1f)~Sm| zf|3btt1G6)Ewyi-GxO(>7b}pbYtd8SI&1F!WEQOJeHDx*GrvK!F3Qb8GbTe1b{O1b zUwH~9ob&g&4*rAQ`JV~~HSKlQ!{fv2*|hzqlars&xHj^5_DZ@jk>4}sxL~4|TscD$ z;m@K6YOzIUf>b;Db)n{4s0t{a&WJ*8dv8nmx}s*!8@6e&>e#P1YxhJhs8ZNhqHB9d zmJjyiAU{EiZv7JGxWIYf>n{$CZhH6^GO@PlG(kQ^esXXC~JX9Ot?wU(#6 z4x+3{+4fe>@huck>XIV|G%;I%mvevhzL7kZI&}=l-kWZHnXXqq?uY74m_~bdrqtb@ zK}pR4w9AzMG9${yz(R)y%6inBfT@%H^Zvlnjf8Ug*&L#=x*K!tW~h*g%61Q7K-8Z& z%A5u)4RByONBz!8T+UO`HrgcBaWP3Rm08#9&;PSo7D8%YVE0xk&XC+!+L7#Pk>jRn zP_*SNT#U0RbE5@mFY7Tig!z?SJtEoDwBKcNtZ&XJ6I&;m6k|skm`a*VhDbBv_wGO1 zv;olfY!qch-(rj&B3RugNJf)hzF69Nd!nbsSTz;8g=?#0h$$oiHFIKs7dU-5*w-?= zvk0fWe?Tmlyo8ah)}cJqE7&PjFt^U0Px?9?9$3k0M1H%(y!t3tl;9d*aJExfNHeXe=HM{stE$dG7G@TusDVihzO;^=BmL7W0~ua`|DlpxEj6_Y7VQNx@(Co zoqs*)8xhZP-=wDyW*NdM$C)MJ+II;vo+HO&XZjZoxfH}L%k|gBP6p3htwYG--tw1@ z>jhG!3IqR5toom}*#B;!&MEp9dQd$Kuq{DN{*sOfob&S!IsBmTw_=Kj{13fw-dUO4 zz_p7`%_j%m!;HpmNlAi1REGjFgbPpNKGf{avm>{dXd%aVBR@!QTMaMk}j z;ZA(t)_k_lLDf1-7qlPTWqzWk0?IdP$Mbi{-qVMipqr0AWp<+F;x@WDK&tY-W)u2% z$?mN@m;-zRx{_||)jNpo74t#O#~S1<%NxS>ibqmES|CGvxYcJsa}H@Qb|l`$V75Jm zd85qXNs{z3cKPL-XQG|MQlO6}C0Ozr<9cs{iJC`mhOfQNU`jVx87_K3TB!TGK1y}} z7Ux4Sc7`15-)=~}i-7mDo87*S@FY|lHhM}bn$3t=IMw-Y-6VNKu4%ph06yv*B48E* z&c8|qEPp%N9LazCil3^BxS!DHEn5O@db0ff1-L_qh<{NHn&>^S27RHTUXfSOU6+wC zqg2VGD!M0>50~V5;K!%?l3;`>Di_IA+k9)oQx`rR(&1%rF&yTci=lnUzLvy7^~rH< zA2&(;KH+}v#nTwcSC)jmNx13%i?(-wev@>$=Ca+3Gl>oB*w~_p~_emh`tv)?b{}`;Y$7l3p^10QmF>#*CGgL7=lh zBayY1Gx6e+!Jw+ZXTf4vFZGC{&+OS2Ru_&S{cY ziw)7w#+P)}?$7U+lL-Qmw6%UR$@pJj5YUS2g~-bb@RVd=yYs^pdr5rT65QVEn9|<; zJv#Af$U38#z5mJ|R_0!21M4vp!X;Tdfo_Z5sAw$8VMUMV+f+dSoLe>+%u2H#f}o0p zF5faq(oBhq^(~w2eb#$!{#2}j0y+z7F%x!`A-^{vmuxjXRK@s%3!*fV2iF#3coGq< ze@^9az0r=)CedO8fH7UIy`O34QGhijmc4rdCU`0|xoy9G^tuL64M4hrNVQk<5Q(N) zCkEGd?=^HbEh=}E4h9NIDD}|K>%TPfwLqXc*gukM_cf0}RJ)3_KkC!+DsUG}r;Fkq zQeEtMb$>3k(uQzBAH`3bB!x4eT_2pK8XdWz+P-DuoYfm3(OrtL%1PMwJ~-E0%UzMf zrdUEK%s%nCJ7w#^Q`! zvaYW5OxC*!mh{T6H{xqmd+I&(NOBfK`^$*73g{|w*k#gJcf)BPKUz5E!DP7SIMuI_ zx3g=`3Dq(v9n^y;7@01XF$Aj!5C^=bI|W6uY$^GWPHlC-5(PCjHGpfP2y?#p#^>+P zC5ToAD2yrqrc{e}j+==_eZ{dt@gA5_RBN^-<{F34F^&6{v}Ye26F|=>sI}7nnzazL z?(jJQ9Ec7yl*O)Bu1KdIou~QsBpw&hK%FjjxmA;Ck1H8}EYfSV2Hi6-6#?q3dI_rF zQJcC8sfvCZs1?;r>_g>>?3Z~D)0rc&Z&dHDHtSOihpZ;!)w+=rX9BS8+9|JmDD2Hn z1;ooM$3BblDr9_)l~{_!=ekqI2cEq4Z5k0dGvg@GefcY=8NxvApaMl$dIiWiWQ zgtL!I%Yo`INGn0?69V?T*iP+2n^MKy*R~Xe1;B+B8>my%%r$3V@kjR3eZI8rIn|!3 z0zw?7g`XHOIV!KEoID->gv%z}DQI})6mrk9J@LE#frw4}sr&Yj$sZIUtDO8DRH*gV zNwZD{#Wfh@FoO^cArE#bz-~i<@;C$XPMpd08muYsDn5R~^h_IE0KRMzeIAslg?})r zOC4wHyZAIj;6Y?M@Z5Nd%uQ9v3Wn!jekgrL`YcgWFeR>EK^>5Irk09&ik`Z(L@F@d zgu77F{^5)5@UFfk9wmBfgo=KR6w1sUK-x6(vG>>rex?6XQ{Uh7LS-^Dd4xfi*B_QJL&^>C`9+e6T7MbR0yT7hx3Fx>&`B9 z=KZh|5NOg_ibr1iF)GK*UZ%uHs(+(syuK=HJt{~6m%d7vW&mZy@JoBdO=CsrNrDX9 zj?C^BJI5=5pMHM)f}03D9{Fg!C}wSS!MDAQa4@LJX1HCbEOpPGM>3+e;H{PvG|wMY z%wA4xLJ9pWXxF^>vUw%2YQg%}1_yO8j{a0_9gI1CSGBAd`+b)heng@Ml|$rk!$w zT0P(M*Zd=O`&p{&RMqa(IVlY2ltd<;tNwzbfLLNu*=EJk?w{$_U7lwiSXI{;r=l0hK)+@>n zxu_1O>@5sQG@R@$kNI(QYkam!HFvxqMq~$@%rB}3b#gT_UQ_L>C}_&v!q#F~3m<v$^_5>AY`Fo(;y2u}ckBSB*}1N8)SbNa-h!9A zO>Yvnl5aC(EUvX1&m4IwXQ3k-e?jBy)g4L#ujBOD%U6oOM?F0XhV&YXC@6@93S5f6 z9r9jS%(icGS8}XrWd>(HQ zN?_RMhX1N)9zPzOWDzOS`}aHkqs&&m^4nd4E6!Ov^xxHV$kBiC_09}5kZIkP%p-w5 z-YLm^od4lZ0#SQJ&l|h0gMV2z;)p?_px=2DQTp?bS&3GWI|MLN_07g%}WBpZkBXD?xQAgJw_yS zg2_T+(^+EMXHKNHnQJUaeMabV3dn3YeSHr@>D*W4vKN15BDmYJ zZ)i+2jd+W*WCl>}5!5t=&E1oy3I$eW-Y0*JxklvG=vUT&28Z^(^y9fvw_;9Rx}U>> zudhrKr6Whcns^F3r>%p47y)iX;#WCk=C-CXm0Lo6%rgTZuw~Tzoy}Z=;+jPRd5&N^RsB{ybx8d(LkRWk$ZqzEs?n$7zHh>0 zRy;~Y2CU$7<1esjJZxcXc+rQ#20d!F3^We{6(s`oo@UKFg|`=NwCQMH6-yPaTodH5 zyFsR8&4~JN1rs?w6BOura}?ACo|3ynG!W>Z7EaKjY1YkL#3&e~Q1ZO_A3pI&M=zY^ zDVx@cZS_;`(i83}#0sSH;VDuYrD?!%eb4 z28l#GYu@bbJHHMVmYBiJFIb#0nv9O$7lFMB2Y9^Cb2!`9(VO~Y=4{|qi|c{m3Now( z_(0I$T)eL@`sLO1_2g;73q-^KbSAj*A;`?4v$e1)>(J9HdBZq*nQLMpa<6xyN3pY( z;}0Yy?w+B=jjUpx{!4dl1B=%Guo(>k0vJa`&gZ@hJ7JJ- z_noha#rw@mJ^cMeMJ=#Rcr6bO2X8P*lPMM!o$#~e?wz)8zU^G(dO?itIfH4gb1~rH+kDW%RL)1B;&Hu1S>Wy=D?1o{Mf~Q5EY8_}Pb!t84n&Pg-^%L- z5;_JXz2oq>HVcCYrGlnpbJWTz7gc;UJQK~m#Lq<%VqIk_60N}#35>I=KEA3hXqePW zkgqv6Pd!!i3XV!RYmLNCg&elxiw95k;R*C$UC)Wz9O*r5uGcV6B<8?))%+2y&QjnD z-N9Mr6taWQV*kLmr8d309@H$%eBTK`){ z8wUk$dpD zN{aZp;W4E2+A6scuks-by!*EwtjYF&)gmTK2wqEsP0>xufi4-Nq49Q&iES?~@@?Ys zyY<(MQWMbC7K>~!&~tJbx)!x8;KQyRSwHxx#J1tYW8Shf?_{xA)zF8MT5Aw(>XXL4 zG#HY4{gp3kkMQVLEO_SazBa`N3K6bILcqG*57D8R#j8tSyzG3AI!kFDB+fiuxwHLj zJVw<(GfzjxAQ(VIrJIosJ&W38guAll%S5fq67EQo10vP|v`QbOfkfVp z&Hi)`L3&3@C?6MvrIlBn$qh{9OVU4J06O5%tb0m>Jy3vD6LTUDZeH4m8~dp?-Oney z`)i9q6trsio0q9F12jzu?!EHM$cjmUs%o#W%4X?*`1Y?!atdBMTGP8@rrt79KcIp> zyHAw=WIVVnfBE>q*4t)AZ%FV~JiWVDtsI2T8P!yNalX7?L0ZVhm@V=ZVmYZ6!iDDE zvG{3bhcuX%Fy$5pk3p~nCs1BwkhYLTg=P3&_?#EVa=_&+n-GCikgB~OwE{j z{jlqW&M?@=AlA|Y+5#Q(X}?k2N0Z}YRnvFpfgM}w<}e-)bT+bze`x)G0ugMUcJ2cY zZ6HVcO(-U%e!tN+{ra{HQ5f8ovgM!4@qNd>ei@FCb@jIp*jX7tpjzt`K2`mmKrTY&X?lUXp_@sR!)piY@uYKSgb65~# z^x=C3-f_;)>RsK?E5jQK;~e&Y2+`u@uUE}+n*XvEai+_O=`9sU?(PxsR;)j3n^I0eqg1@A zt4IOSn!ch&l;l<6?(e<%58ss;^NQqXOoZKT-o=I;vq}OwCbP&&uIi(&L2c^_gCOt+ zn(C>zy7{I?bp0|r-mb6BwtSoe{c|>l2=T7-khwDQsqF@X$O5_&Z}p%qm2t|%bnRZqD#h9z{qh`4Kp`T!w zHGRgq3;|ft^G;*uyRoYq17TVThx%b#F8U~ka9QZdaKQz7n2sKLxvwi|e3?Fs z`xnCjktF=Uhk=-m2VKHW#uGz>-Q{~u*mr3T013C1`kI-a+t0N`yX_D-IYLv!5gf!M z-&L_IUhnD@Ji^g1b>T1qjoiHa$Tifo{^4IJI3TsR^pzKF&*rJH*G%3;dyTRMr0j_&hg+mWh_wO+dXB2kAXSSQf**imA)FMe zRkiT?Mfb#1uwp4mY~dbc6C+df=%I61xTFCl&g^)`{@s0(xKjTcpDU~_(in=VMsZXf z)a}27V6>?1Fvzf=x=owyE^pm zaPkpGQpUfb&Osp`+K2}wLHg)0yEL&I`vfX>tnRDx75el0`%8r4cl;H$rz~;k%BqB; zTaIQLW;5cHqo!KZw$L&mU*ZM+Io(1U=sQ!=IeNdmj=UGSDJSqjH(>2S2kl}am8D9nNYa6-A!W##H4v~{&b%|D`2@L4qsO71cc4zw z%T^YfcDmhkbvP!{m{P$7g@zI8IZK$tFuK>@qN67$h$8o9C?CnVPD?yjdu>`% zaki@mjQ-=^1SBMC&h*&d1+Xd&g1f9j||;e8oRt za8v`KC0NRwo?1OLjPaA7&W3jP#PkHDnE-&GfB(Sv)@|Z@Bj=LFp%$UUMllI6sQ{t4 z^yOA8ep~#?-Luyk9vZO|R}3Qhn;~8LuYel>EPRZ2^W6RgMFj>)Qb3o*Woslpr;LP^(jTX^3 zvy~!%7ZA(aoGF}_Gv*NvU%YYJZrkNOUgFYcI<>jpLbp6N&6qh09KLMjk)};7Ic_$l zd3l&UcgexV<_zdoAM^W;BHeLnWN$WIQuHITuQN9ZwugRIP4rbzn0tXz=h?6@rVqxh zyz$BP%fR#5lY`@Dz?srFx~$&hbu$8dJj?mD`%XGWq_n;AM}TdF$m&_)Jel%tkIvvv z){2Ih$%N+wphwVwgSv8L*}mO4X0~hWm;hsvK9G105c^%PdV3}1)hF)mr+^#CDT=9j zD%mhb6Rp|JJ_4ILoz7g{{o+Ndap+^pz#GZg4!Id&yyUzw>Z*CZ0`yEXJb-PZfy2(C zG(d0xf<9FrXmMlGUoL&aw!(iirp)U%MxQa&6$l5A$SJ0^MqSAi9EyV+p?*`|8Z@R^xi{F1^T{Uu5-c zJo|f~>L-6h>U!DYrRRS13y0lAlvs~q8LA zh|oK6GOO3iIb@xG+kK&rIf8L~sC4Y_ymg-ZI!{4nNAq^&$Fc*A!nBUl+?&aS^DYNA z-h=`EL_s}sWG|AhH z?9Xu6eW+x5#m$|(%Nk6R;al`s3^A*O6G57ni#e--<}NawtJpzo1OEXnla z1&h&~nn{S~V8nrqh)M0Nj^&uj_ar`j3DpoAigt-n20t7)8O7 z?^Bwb-$ZgeFo1{Q%u0uC5{hIJV!oA#`3b*=a}x$NVIM8(3n{Goy0(eo_p-wg{0NP*z0-(-4hOI6j$3;rZD0&E*a7|%YB zmNSor+biYoK3I6jK@xrsB-*I@7@f=T9F$BPZGJR~r_z237!EAD=%|~g9H;6TaRYvy zrnh(aMDT=E>Z9Nu?A4on9Q0Ff8ub89m-QUweiH@aDa`J<4>BC3#O3}n*}Gs`c1D!G`u6TDaw9r-cQGVxS1%osETw!E0CBr8TwR zd2wF&(0=+X2x8txl6!-$BDQVWT%8ia>lW$D;`TF%FJh-|X;I_6iw;?RCQBNTyH7*U;J4lnrTfBhh@cs#??&3>!sR(0WylUUcn zSUflSIx@zDJ86t%@gC%a^q`KII76{hfk)C!coF1?({I%3d{zxtRu`cx=6hEdelFfQ z>d{e#+`v;E0-m*xxc(f(ynZ}DpCf2qN^JQKc&CkSg2`n-yBVqUrrbH|t8cZ|IJ$Q546 z|AsnxfBwS(Q7CY@gCzSb%ToF62w`S^g$|C3XwF4IN#%Y#GrRGr8)9#JWa`{{CH{xR z&;J=yBq+B4CY6qPI8FdW`qrUfLV^pGoAngydy>{h79e52fjaq?J!j`4kpRo?|XTT5i&#K_Ltc1ZSp~sZVxaZtikql7xBX7 z)kG;D`}X&vL&rY_evA^FZ70%PYAp*RVF00+tcp%*Rh)xAeVg38A^GL6$?c$xf#(mx zU?-8j9E*PS`)L==zkjJ>={9Td&0oy%kxf;rn@sN3?sOX)?bkkR)AO2dpMG-dpD$iF z3e~J{E?LKEU%9EUw;;y1DXr}Q(!Du!O<0he(cEn3LBsxCUlw_k8>hTrvKTCVNW#Fe zJ0y=SZV9e*KJJ0O?>_l^RYpd>-#0Z$=;Ch{hJ-`$17(G{pwGLgtr&x41ooZ(?SK^J z1_!zEwMCcJVNT~Cd^Yt+SmHzZw*ocu2NV@_Hyb(27TbHwPj4vF9RGqLq~Fz6!uBn3 zYOR+;IjR>Fj}I*tZW>IynSNTe7%ZEUCH?< zzlEbX&@un&XEPd_gSNei@5c)M$@Jq>5or<`wpI8OZjnl3k z45(e#izrNb6}S_GA3(nFkg2ssF~y#N@Mz{xL?~Ca*q0mG@u7Ccf4#(+KM~0Z%4kN- z1UE#q2Hy=WI4RgPT{6+2Arm4Z+ES6e(K~^J1)MNX0&sNbtaUztp3g%+)yv;fMtMi$lB77jhHRGwOe-)>g-#rzi-PZ(jy$ZGG*IQ4|oO()LiQd#|Ku&qEy8B5-!&_qSF>h;~3EAa5-ukJ#Rhx-P~9J(h9tI|)oq(Ol7 z_hVYjA@TH-)nSTT^;lD<4zU0n!y4XV)5I& zEhV$xR6Js^f!ssmhU(R{pYZ=Bmx#&>R`Mjk6kg>)7dYrpgtDab^n@UN(R@_%)ivfu zFz>5gD^&8oUy<>@9_#|@;gcDux;8&Pb-&ZMl1px&lVEKx zQ}p4!TrcjKxRzIt;z*BVlhVeEA=!@2H=elmpsKX7+(+2}(Ib^?d#!fPXID zZY6{Cu+KjysUf-tN?iHaJ3t89N&eQt%#v<6eg`H~rHB*w5&+0wdGd;y_qosqZ*4w} zF!cUqC?GTKMr&746ylO}R;(-Pch?TjagU^ZJB%{f3>t^F0!?ey7+KW1x6*%pQbIPX zQ~GJvv$6x32kVK}s~J}3cF)t@e)hk9_&xs-FI7h8Eao3RGAfJ}rfccm7#oV-e_oFy z*`-Nlez0nSwY#^KL-&NMHzZ9${LO%YX!`<`j>rE=)LAyo@Kvk0h?BpOd6&_!J&6Zf zB9ewWJ8&wjW@}qCGuM7Wab+B|9nJQtwK_s?jZ?MpCd$ANwQ?e6{>F66WIP<9qzMVC z$EYKYtevuO&@hYKN&J6+1 zXVl}r8Gf&y-E)+>fezf!e95}Q2o^9K8l!wi>hc7fs{Kiv#88(-#X8J&w|qLA*oapg z`Z~XnC7nJnz9f2P+35Ay)jXR8YQD9!$5IZS$upi{PS|4{<5E_hFHYr?=q;o5 zjs60lwg24&`f^CKHvN$YUup#7&rZsYhKu!CifNl(3=1^n8%K|zu&Wt8;!2(%#wBDY z)Ak5wwujl=;P>Ds8Aq-QN`+X6UdKM(>*e;tR?|z%9jZF)M%LtGo}(~9XOT4j_9HAB+|bux^EZV*(Tg2k#v4S$NERX1h$DW z=ac_zD*m&ydp8>Bb#qn}`@P+~L!X?`C5_1v23{h@i~~OlR#i`Cr~&!!%}r4tl{tDm z!PHE~41!R`(-#H0`9z>yD%D?<7gu4~Ugi=%ujy>Qn2jAU!6M%l$8r)>{fjFMQ#jmN zQE<FzOtWRPNq4^Qm_9rMl^4%RHx$ zHoT;_OxBBn&iIV1@uUZrW<0h)FKtHMO*rz1&R(X% znC1qVCEODHJRW=AjP-20Ga4Zr-KN92A&$fqF zPCX+P5+{wr_CH*=c)uTg1`!VG$QvSa-DzL$%VJw>gblnuzk7ZhQ#{D#Dhc9t)md5T zxMxnDOl*NFU@PxBLbi+I2`o;5;NiJxGple=?Lwz|c(?7u`LMH4_C^kSL~veLZ!((9 zSv3Ze_rysfLD*^2I@k;3v&Sm@nNI@HwNNL(fxYeg6}s8BcNh$~>h$Qt$z-5@7OPvmSK)AX^r)lW{4j%KxlQr_5Eebk@uRow zxSA=ee2a~OfsKAc=-IERu&xgzKen z1x87ou-IG2(#CDF`kTXA0-!Mp1a)DBp<*y}8CRBP!dT_x;%_?;C_t zkCMeZMLZh1?Fc_T1|1WWgRN*9%jH6Me2+N!J?UWAq?`%H3e3lrn>3btKy%JbkSno4 z$%FB^nkb<)#ie}yC;IU=0-(~_lWcB+elKhE1ms*8-Py?gDCLvy@(y>$Yi}vzR=}!HUek-l>ngL@mXM=Q~~&QL6J?vC{5Cao#2Z; zH^l(ba_~>NBx%z;$wofJBj$u{x1$+`-c#{QQE17wk~WyQ%uzm<1g(_?$H#Qt^sL^r^??X`ZAvv&j{yW(y(%wRwuZLhJTApl*EG&1mElibtTks+gmk zd8pGgX=X-P1rvZ71-1hBU7ecA#|9kDZTjX?@@wIwpy&pp=LGAvLUYY$MLK{Scz^cX zMlxwxNvrkvzh0aFCa?Z?SNZ=+8T1J*1T27?Ql;=XxJvECtM*55e^h`*CipZ}4h~FU zDvUfg-s~i_@Tg4hw>9%4isXTR_~Ja0m5yTJsf3PHHY$l-`oEs8IA|ROowgmPvR>jx z*^;8`2?8i8>vIC-631)r1CW5#;_WKRTD1IIcl#R)-?2JOs2hhZ=ag0x=!NOJQc%&Q zpMdY%W3y}cu^fe?Bs&xdK0J-NwBv$I+7-J$AmsMlxxaDZiUo31t?t~dT*i7c+xtDG z#!`d|8V{kQaBG~x#B=u6?lx@@6t3izJN^onsKiu!sN_dRFVoD|Pc&2%($dsx#5Vca z89HGnul=os3c|Mw71DSC)^~ZZnY+MHgxAdea#WdwTF#aJL{poxeD9G23_mnW&rW$9 zbIQkz%-M9Hjm%jArO9nOkE@}FAOHX3e9$miA)8*$`oLQ$xn$cAe3m5*7QzJn;0qH% z$C-4t1Mq@H8Ql$s{#1Ul;p}jnJFE-@2~n8T!=GW;S?Ly@0?O~?DpGIs3`qyJ83Lub ztg`lASsw3Z5$)d;zrt?{143Jl+FOY`yx=DpX6W1`e&TnQl!O`?{jM5lJNikjz6g}U z=XVL?Z(p>l-dnG;9S)MaSzwc4G>gcWz8PpR?FNZ`|F)bz>N(5=^=*p(_Dej`TT*<_>-*Q6Vii_= zs*9Ns*!DunHg&eRwGUf?mM9S!ez4@7-@O7=Uy&31)zaz)>s--qD$=LBY4+d7DV&3t zugmwEE8fb&&YbOfL^YfWS^Gq_m~Jix%m`kgH&XBRI!WNzf|`nGClPl`(^ldp9My1c zt&k@?{}10^=cOON{=ToR4&3o*$A!ACh-9MGxJ6qSXa~<+dF8|Al_0B~yp(+(6pFVM zM2XGidBM(Rm&Z?$!Z= z3Y{lC5ppFdR`K(};S$KBc`)MLaH1Ak(mb*}95k~i@$OyPS17kl&1kgYp--nsM%C4BH{@V`y%oTZ1-3MyfR}{A*i%y}TbmL!ZVb!x zqjNg1I;R^>F(p9*SLMu?;hx636zk|E@|>vXR#t$n7zfC)iikbyYUS$<)aC|F3JCj*9g*9D54)v9H=JDi5W z&MW8({hgQ{Ouu&}L_$!4cU|PlEh^3;Yn~g~c`^Q37m5VdjU&{LiwOO!vN#x}LqzM_?jzgu)f$!N!h-*U!dZ2g~Bl$Yi1*wl}W^)hJa^tfOXfcr5k6tFj&m z)vffR7_DrVpbg&j=ukB>ukI4__*#9oIfS1K>uH2Il{Q^DxkisiYJbYj zC^bF2xRG{lf1iWpyXGUP#*~ZC$+RnPVGCNe_g^arLg zZfcnzX#Iyz+6FW`&b+p}b+^YU87<7>z5Xw30SkZW2>KxOj;~2i z9`W&ovlCZ`Qo-C>2}tK|*Rty9$D|E5@6dsCw7_kR<)r&d`Bg%Pdxq~m^h?JF zBI{TH)=+YkP1%^&NyB6HfsbRQzXe4hF@52u=|KRVXg=%boSTg7!L{H@B;td3aNbwR zHq{!g5vo_O66$ZEBLr$aF7hjQ6P2w+1}qtoER8h2<@hk^VoiIB`E1$(|^C-{a2US>ZfQz5H?9ou!qHwbpE( z>A`ltCfZ-Dltt#DhKY$~Y;Vdik1sK=PHf{x#7*Dg!6|{F%*k)M^9+u`!5d88CryTM zqhluu*QoSRzyp63g<)XZ2?f3VuqxUS$g<7B0)WtY2&hV>jMg85oMyF);d!ph|z=^M{1_n}J&I@A1@4K*cY6 z#A$im!2o!nmYKN9UhPI4QF|DEozZ+)Wk-u2ebG@O{bYt7#Mvgq?)?0`bHSQkeoo)i z_R>F=xm4_Vp7y7MdZXok{qkDBN4xKDnc@l7dfrhg8X;mYnT^b~cbU_Hv$)@-`R>`- zXO%WO5rSCqKn6Ij0@~K`L2JKOMTPJqX8n{bxUwp9D{8m*RK1xvVCJ{V^}Hu?RR98T>BV+8-yd0=x6!_gIjaPs7OX5F z_81l$*Q>GUmmFEd2DYrwD>Yt3{3`u=7s2kH?D*;A?jJAF)@1O)f)w4=uYb81RBB^Z z?j;qXQF!o3|9u^c?)a()QTj}PCn(O%4shv1N8jaIfNMCgXD(6c>kV@IM_rtqKM{BJ3cyhz2EbBADfiAT#=FM^{{;zoecS^} z4!8rk&Nt451|MBb>?(Te9nf{!Z>#iz*39l!eSF;8464L4;jDea_ciA}e5qk!dY1Ei zOWXs6Z3t`P@_&ZDuE2}UBR<7fIq^!gu8@Q>A`?QlW0RFL*+(Mlu#^rLJZbsp*w?BP zQ$`L3aDWXSBOwr_sR&df;&)p|dvE9~$a!9HAfa3DX8WkCh9*MEoDR}-O9Q#%P#OoA zY<4L>x-o$P4M~zyXapDFrI_7N+UXVj9l0mOF^%Nz>-nz+#$&&RQmpIWXv)T5wIYxT zo8vj4woyI>-ZHigeQyw~W<*Z&g3;F?GcZuqq;!N#1tk8NeKmaM#n~se2$C1iMnE+Z zd`$ed8H=H%e7asA(y~{&<%#gN1Ut{-Y7NbmB93l!7pmEt<3j~YE_Kt0*g2-_$Ezlwn5i{vHz4SK( z0e`9|mGcLE_hbn+<>Yg9`s40IC%q&k+{kS4_HG^jN4#r6N2eXPA~h=Ka$X~_(*RT1 zc6^gFN$ET3clLP|o5^HQmvi3k`58t+6|0Bv&I2v)i+7J*!azyi(}ACoHMuYaX3#iP z7UOBWyFZOhNV=q|?Dp#jA{Ulz$#zTaIal7MUhj?xvVME0e^)UWSljC7e_Ze+`tF{} z0^_{klePO=9j7^-GndtTEuKb+_F^@LZ9nH+&WUGsO1HBqD*~q&Kh=YUUgRdBNGk=e zYxwVoEzIP#vW00QZ=$yCvSOE7+eQnN+qs&w)JS{qO#%q>Ou99Ww0L}Q?D-1x_k})} zPfxBv@q|2^HTfY=KdT%dQC9)(eV6=XT$H*S~SPuB-@=#z#Fy)E>&2ZS>I=W!7Dh-%#SLZVa=2(UHkc$lXV zq;ffE3kvm{cmDgP?J6f4OeF@k4evYP+lUAo@P9g3Zy2=22>8~wug;s1RzwK^;T;`A z6tH;b*LiYNQp21$D|2wNkAeqk2`%{)Lk3x)>+C3f>m1)8z0 z=ux?KGCwcKb-&;g!kcH}Kd!tvHK|BpP%}{AJ_|FzKTrP*;p_@Z)Q56K@hrystx5pd zh3uTKma<8;}-4`jS5C@-|z6`doNhF z6=ujdXe=kmx%ax{eLJAtC?j@)(+1NTdV-rB0UH^&y*(Y~*WLu`Ul#qHLb8ArB;q)# zzO~nQwbi0+KvXg)`hcvUECIVMJmD#4f;hOW$jIN8P-O${@)U?)j*(6Tgoc;zdgSdzl@FpW1FT|bPvau~*w$DtZf?qk{kdYhX6{e;F`fuJAJ>NZ z7ufeV1DF}WvfsSul%hSxFQ=8s4j|{vU%6`uxkD|a*%*qKox?a8>nPeR0^kO%B+yxFSeE7@E^Aa z7~QhCWw`*$|JjgDf{8qD`Movx;hb&tEFnR@7)x5w+j}J&EO)fp|2Qtf!`HFESECMQ z37WbP{JGE{Nn`XrH1s#HJ0s*;e3+=WN}E&~PYjVt=eet!k(b2wfh~}gC7Z>OgDrvQ z!p=0W!xYF`r{|!_ILabta17Y~XHt4lqr4~Rm;Jjr<5O_$^nJ^-(5w^Pu>hP0)Cf-c zAzxFh-^P-ib=pMqL8t_ZUMckrljVyv^Q`s z{krFW%qIPx{DFWnlE%J%y6*?!2Y1)Sfiy$h$)~L#aR=4kT*Z>ojvwIV1g^s|GRsJm z>JR-MpwN|yM~&~jsa>@T$K*yP{&8Fz#dd5^jNs+J!02f(RdJ?jy6V&2b&&LzyW6kg z*K=BL)l9Id%YdOOEK^iRZ<7cbh1$ve!hRhasL7GCCmlrW7oF*Hu9sHu563c=$+8ja zPF0FqdOK8MPM5~I#(?Y!DlhKGXmj%v@A{Fpiiv?4UQg&9*;?)Ig-;(!AdrM&ci(Zp zvlfo5aM|n+8*P7d`G@K!3n78fJ?`N5EgJ1Bf_e>4<9`;o-1j%#K}V19aH~J%H?63B zbs}}oo}O*?-(kZyAEm52>eRS~U82sK{bfzCzMFldwaAa)L->wAIo~c)DNNCR+MiP4 zHmO<;Hq2_d9@1ad(x1~Jv!PAR1s%!f_>L~&FvehVba=T((aMT`4jBcTqxRXmoXEW- zswgp!#&W%%7A9vWf$cD;I z-{_k=$3>uutzUn?SM;^>m@@QHCbh&0s!q-5D5wDiJ4dhyzYwO^px4T*pGo^!HOpq` zsae>$2V{mY*JiMV?|`iwxX3cRSA@n4l2FOTlOH*IU_bp#IztXC8X}?3Epl$XT+uCT zxbL_A#dWuDXsJZXQirfLkiPott#g};FKT9qi0T&quIfM35hUrSlMfa|{hs-evCI%N z+YiR~v$l_!%Tb1^@&>4drpiuh5V8q*Nc#d9zRg$zaBr?8ylKsU@nW6z5`@@zI4>^i z`;_CUY4_nASsxUvpOkMXm1m}K@o(k?>Tg~D(~q7JZ!F-rnL3Yd{p(Ky!ae*HBqs6D zXC9;+NSn>DFE}`il01Cu_xA1jj)ouS;K8ZI^y&39vB>hL^jQ#m6Yy+7?>vp}axiP5 zvyfcj)?q8yC)!*ZR2KS`(AJ32miXzR>@unv!mC^9+p%kEZNkw2Yw}Sp8L7Jjfs$4V zsa4&)OQq2Rc}5MOqnYM*o(QoF{*jNB*K)lsh$%+`^WmF5gm6ii9LPTyC=BWzQoYdU ziPC>Yumj4Tj@mtuU?LsEnI+XQ3{$u$FLXO}tuS!fU8cQX#O%Sz4#2s83LAMn@LJkf5M4L-9TUa;^+Ac_cHQ*};hW zRe@$fi6DOzjZ?GmgAqwH{u#xk*V6?v16a(G7ez?i@f_dcb)@kAfQQtu_7Q5{bxxO8 zqxFWbh}#0`_%s5c530kD$z8PBHNDN3@~tZRDLhGBkgzpr#@+h9l&&o+!o3%u10+uS zGRn!*?F#N*?9dJn``VXL)%kZk4Ybvj>M(jgK-fpQ$xEjc6*$UKF-6Ry2x!=n`&h;q|Gp1H?%Su~axh|VT5e_Wf`+95bfrTUBvp##{>8K=wVlSn z6@T+CozTf9*<_!{{D{0hNp}j*EY>*hJy$gx%_%wzIF$Av;VR4Q6lgGWdur^ryq}7m z!tnv7wc2tsPEkogDJ}IJTCwZ5;pP2!-*Y>JzZuoCiru9SDvh%_T}4;>4omL;40dz+ zlf5@zntk0sHCfChFE)o#kBj7tFmXXTQefwUAeFLf$zonVBQiQCiyrvv_M00D(xj_< z&8FIf^-PJfgGAO$I_IqVIRN4FBT-6<~OyxPHa&;Lz?O zbKyw2X)I{*4B%K#{zm#u&Y%6DQKz}iEo)_pou(J88$p&Y;(ZO)I-VknU3cG`W~V4? z)tO|53$p{yZf9kLTrvZhhWzHeh6vW~Gcm@#wypP%b`?(1_uukQQB z^P+{1WtQ_ie#h}WzDtY4`I;x&dl0g?M8@{z?JumaJSf)iR7sZ6nVauiP|aKUmEUiR zThd0uka%q%skUL_)*!7JJlG=z6I6O?1l!oV&Fu`v&i`umLGE-54w6?H)ofi$!6xR& zUHz6+vUc544d%I@Z;%>H5_LtBU)< z^K$zB{Z6AR??s4h?DYJC?9`V~nn#A$IdbWy>fc+3il4>d-(@FdNrthF&*#A4Y(Dz8 zsA6yvp&7(^@OvuHMnI6~k-7?Te?=*kBIoE4tB)yJ4Xm8ie&}4rC;wKSahu#v^^si> zRjsmZ6C4lCQhWM)%R+g{4@o`@A9)>V7P}Zi#kuoO%lDnJC~`sifl;OddmT9MLcZC7 zh}j-K66U3D#m>Kgw@&i6Ru>?`{QLT`3$l!P#QXHkR$aD9xC$i?(l)UsSx zw=70;M8#znlD&Ct6)#hUE39T9DtJQXc1PpMHbR^}*z9f6BJiktL~UVSUV}hJK+VQ2 zP=j)h@S4(uM;YOJ^yI#)domNh9%hgur4BJOu&=kSFd{NxyKE^5)CYSsS@yLRb?4$T z4*UCj1WvqEdjAhio08Rat;?dlS{95Iq?8+F=ISR~F$a2ZEC};%AYSxSzNE`d+Y6u7 z2vk8Keaj_>XXp^Uvuae;4a%vM^HHcN`dELTImAeeDtQfmz_l>vEC9^TkRMR@x5UT9 zdK~EQdY*KSdYWPLv|dzYBlML}jXxy>6_36q+v@@~0$0R4fr?C6t~Au55*q7n)}o>G z9y4$ECRaM@nJ^n9~#@z+C$JsM1K=V z>?MI#n$dXYMvFM(90k0|=w+t<7+1!Dcu@+5PwURPdQL~TvbLw%>;Be~8(M3z{Oi}NbDzPY1aBd;SIhvV{eQv$I1;X1co#+oBpx1(41J9+s+4CSqfu-P6z|P{aAZ_I*OGowI>W(<`+q%Hqj- z5_r)wzdwI^96QHPh|QXO7KwmuuP~O4p4H&N^~9oirHz=F8C4#Dj6(5eu1Y`N2mkqA z!_4k96NFyc%n;O~pL|hHgP#0Mhan2LX@7ZKX3-()$U)dE9FhJf-TEH$PhE*|GP|=zM7x zLS4c^tU8%XtVw}>kU${ZCzAp&hBkf8w!#|3k`Sye`7q{^v_Nrt8$X3Ab0MdA%E6Q= z%y-!o0enp)2#64JRHpkRfL4-=qnF~+xA(xLl&!JLeW>_I0&jx6jq3l{*4{d$13Dmd zO9=W4x-w~?b?!c+?Tlq%F}O)~OT(dOx-NvppmmGqu2E)6t_W{=FK$Nj$tKm3ihb~1 z2YPhXm8Z(@N6*-Wf|Sjgt`_a7Bt-Q`j;ne~+5I*ZsnQT|kO=G4emZVg)gi8%ldByW zqB+Fs);ipOYEx;z=etz3>MMm=mZADSWx<4#^Z%BmgQx}5fu zLIt-p5ZH5I4eP>xvOI^)fq?B|X9aPYM??FCyC!^!)l&?`MjV~~b{M)yxKBAN{ZqkN2qvn(_xJk27(d>fb!G{9=$F3r=}KMy znTDg1Ipa5TgM+_%V*zwX<$h>1h2D&Z_AiHF0HGms>1dXZl6yJ@X|yBQzsoAsuyoRW z4GT+L;PnU{edkX`5yQO=@s%XvU-WC!@fdMg!w{p>mAv;kJn>b<+VM& znl*4S*RdP}qD5fXuyof)PKY2%*ievu_~xzU+yQ`sfN|fjZY6$j*_Hfx;-n&|2Vo8n zDrXc}rLrs`IVQQfPFpW1ZjFD=+J_yuBq&*JNn*YSWXVEa$Ab_)GXUtgw!?g>E+@QD zI_NO5qGC6{{FTfZ2U-E_10@#0PmR}odkVan0#Q6dX}cP1{5R)%?>Oc-p7VOqTsxck zFGCRrh6GYvaqqP32{U)G1Mf2HD;@>ttZ=6D7t`O##hdSlm~9j!r=d&~Va@k~`r(~e zE-H$%r(n9!O9{Q%+BYuMz@8$ktE(di%!E5l?WjJA(bB3D0hgFb@wcDZc*H|eiyhR5 zyDvRI#g%*)v90`29a}oM2^cP)Gm;A%!eht1@!QLBj$hv1b$ll-l5F_J?wb~DN}83X z7VNjng@%0kvof!hNv>eTW?%L`|78sKDE7X;bwzE7V7acH_Ura=vQfzpFq6OG-^>*n z%|m>j=gGHFEAJNTE0w&)eU`B75GLRXMnJ2cq`nL~eVM44wpr(Jg}WvCK|T_$U;0_zY)ZsBnoaNdvv+XEGgW3R zad}wjkGBM5-Ib?ZGcF{$9ZF4Xvpg;0cLJNfOr>fhHpk$e@z=1{!UIFil^zE*&!L{$ zZ<7(R)6?NmyI?J@d)JK|7JeZXhFtU?{}ggs_wyT zhA}XeMi91SEYkVUJ#O0P^(qG5+r;ANk7*=GL(#+5LYA=(UgpAx8fr1B@(V(w>_(rC zx<%UtVlT50!VQoub5@x}0d7Dn|BG?^&%!{R=kF=sz@Dl=VWe(eXerWXN462HNU?22 zdw1jNn@3{g0p}lZ!;-^PZ8Z=7m4ZPm`cfHMm=BCo<5`n63YxPTMU<@eWv3J$p|MlY zGwsI{9#sPi_P_FY>d#$baG6y=q0M{jqy;}hjVIEzp8C8%EDc`$C~A1}5AF;8E9IWf zyH(UM=R~Rx3ftA07q|e!1 zB5gfLfggC73>sxk^}Xc~>pcdnpe=2qMlFl>H%`7R(6o+a_>lOS>Ada(fAkJs`?-hC zC43>}On*+rZ9dBP-^7g+Fmq!ma9xRJit-nS!+hG5ZI7cLCWyR)TO^o550TuQ5%7v7u#k8nSr2Zk zh=qeRKkeVjlvRlkEP>D~nf1#}J!vcw-{gHsrN*8lB`h>NpW6`(M7vb|cCZ6AV6(&s3%n-wCGnjKVRw!42gF0p_GW%Z6@1!iGxisg zneh~iKLC?IzN{I*)_(940e35JHE`#_W%l-+VGC)?Z&{!Q9!1IPnlrml5|C%fu6Mwm z>naah-KIQ%?(X#kG#AO@3B-~+$ylgbUR&YKh?1*1B8gF+ghL+r_r3Bq*?(faaOh10 zqI<*$;9W7BXX;9BC9Tv=)joDR*!1%o4zgqIJwI%xj%=i;#s+G``9KQ+urSe{nK`gP zvI47}X?czWxh=5h&B642ywwyR3TAsQxjv7w)>`~7SlArH*WZ8C=7|U@Oug)p`|+!L zNu7c}U>o;$h4ob2OfW=P(n~hl`=8;JQ$QdVQ6kcmCaevP1UsKFAqj)Td3*NrTC%#K0nLlkAkNU zV9k+B$#eLFwCX7cJ@PJV;Ug_UIb1v##!9QB6G5OluuYJcO@fB|;Xn`ZFHbJ5fxUva zDWsshe`R?ce^?J)O$U?BP+`p!Ips1(Gzb>V*(F8ic+oyq;Vxn$Qaz!D4~w1Xx`TdH zt!P<{yrUi>Vi25WQAdFKEdZ(#dbcTme+2t^aw95cl~Lv{kh%izr%ob#Anv=BuJ(Xg z6&LVvgQ~Dg)S%G2($UJ!s9wo(K}>RlsLXuUD67(s(%nm_;v_z=IoWRbpgDDx8i1)t z)y$sB#FWtyDXDDlQ4Q*i7#gS=@JcOWug@)TUxO3DDxzF>0rdr;B?VPLDmGN{;fnRi zN_O@?qIyBq(ogD};7W`;g%e~DSqG%>Wa5zH%3U$q2%a&h3a}Ip-Uj?b!*bh~>35~< zl5B35|MLzVB}0HyBYrZK%vfjVV~F!NOBa=m;LqtFq2H{i3K-PV4DPPp{8TCoXnon4 zK2VL#RXq>F1H|Pvnx;QIA=quvmX|z3;olD5X1vPq8^lw67%MX`Bg!r-{U~s1F*~=W z(@d!bb-Blwo_=Vc5l0-Y=)%z1VdJ*CrT?Kh{`RQ!q%`faveY(M^!333z->YG=<`m3(oBmWvGLZ~E=y&|Nl0XPW)IDGV)!fHhPyX*!19`J*cbf(_P{Ev+L1 zI&*o#9?HRY#@_}YP>bA+_q1Jg$rSb1pIUB+F`Mw?wGjkLlfyi^>?)nXzs1A+o{}T8 z|IjdQ^XAb-f?niZ)Fsn_dXqL&=u_DEkN3v`GQ-C(gH-@;`R|Htj)%c|G>)>M0=~Hn zbJ@XLu}TLO*`M(S17VX^+mruVPlDE+7EY-`RuCoIm#MnEfBdSnyj; z$)4rfkGu@Co+Uw> zGPCNw+{;72S{Iu`zHq4cn?LqA{d$$M-zLmlE}))?D!aLzSlDuJsS_Rosyiv5sn7FL zti7`I(?LK5kc#(CqX~Vy50<6D>~qd;)E2}6L65No2)~t`)V@XsAN0C>U>a7JJ~z8} zQS(ZhCEdyStra;pEE?a9#$LVKxP?kHeH(OyF6xtQqt zNv5z>MU~u6a$lCQf0k8oIrho&B~qk%6a{0L_|8*l-kMk%yD@|Z0`)(ge9hc)JNW5u z((;N@+cSP&;tE`0049wi48cAroj$H@KGi6oI~3X8UbxJ-D{?5IdSUvl^ZIZ0wM2IQ z!{QZK4H6*L`THSc+~FmwcG2IL`xQ5l-Y_%x5dp_%I_uNh)gY?5{mO_*cipx% z_dR;WLoWXyslLZ%(9fv46h#s%t@_5DYte0%(dTLT70#*L6v}e>bcx`rP}?85H?u>? z;Ax~T3no6*X0~Xpd;5&34t!CpN8Ce zI^|~vAml|jjfC@nqF5tyx^#>6+74uyg6oAWI z+FOo#e2ZVvgFFb;N623}G(zH#I|oM9Slv$O1Q^JW1F)(;)T408u$#7AU_g5nSR%R+ zw{xK1)r=64mr6Ut{IUhnTXv^-0W=SL%}YVZV3fUd&4Mnv9YRpvd0<4Fy3+OQ&fhvE zHt`D8R%+m_9&dUVIWCQygzvW(c2S_MQT<{oW^dTxJfJW^o^w~H%J##;pdoN!XIXC} zC|35o|Lp@B&xxY_mY*jy@)IvC&_1LcGN-B3MzXF7c>;HT3L zGIc2h?F+u5jBbUBGO|TXNv4n>HO16piYPc{|9mz@vP>BWrLWJCtf5VkfQ4`*$$pNuCXIX z)`w7=C$hRmB5s;0%HVaOGhlzjo_QwyToV!A6G1}sY3MqMh*EdDxta1CK}9|g)O^v} zsY*nY84McU(+1ATr#r@4G_;;;f2}_MBCYE7f5b8W8+OEhaH;>v*fLf}W7e4ERL7QM zTb^=Rf#^5WcXI1>PwN7kuizk6*bv?EIe7zU2~a;JqqE*@Hd+|hIGVV&x#xvs zeK%o|j;aBkAm>&LPM5wa@lJ6+X&Cq2&*b__Xx)O`@VM@!+$2)O6a}Ua`2w+BmIC)cpQnNVg_-QJ!1;WxlBi4Qt8 zP{I7@!leH-J-@jE04t9Gz2r(oD2is)D^REBS#@ggW74VG!@MQxL(pl&&;c%F6~ghy z>6Z+sQ)Xt@O=d4gbqc!A%vfhdQ5p%S>IFgj^}V}z7eepGm5F|n8E1d(-0=GGt==G+ zrP%3j^Tq(tMPlcDG@NvN^Vk?&mkQy3MUseemp_l?8pp(nZD--YQZaL5NAyuzmQTg| z@zznQ{GbITHcbdeUVrIawIx#d;&Ea^5MbrwBf!gzTv*kQbhHA>1tF{`AMIWZ*A}F) zU@qb8sa1-8a@(Jj z-mL%(Fta6hNgsUN-LMJ}cP;Qu1D-Obk0LIYp8XkD2^l}vwjh%@0?TfDD`1Umo+>L! zP)g=Rmb+0Ez;HDpB_hDv+RDu_1-0_a_Dol+hY+Zc%P!h*B8W5O9BGyH5t5ComPg6G z>BcPq1_F0guD9LzuLn(g?Q>gD(jbQwcYjP)MCpM^_xRuQvLFiulP`N;SG7Lc!Vye+ zB)FbEr`t*K|iI z5vHrwM@Fg*cGtXTKdVfi-KzqIxcTBhlmzbA;BXM!cljNIUM<+#V9RBz*ZuWk%4{mj zF}KKAuJv#74nPZiJ)7i;>ZPm87X;_f85UrUJW^ZY2^XWS*iK^-L?UZ}*Mq;13 zyYJgHvF|F{%Q;MJO2#uttaz+xuJ)h_#ZUC&)7m9LXC|?e9A{Q6LA&z4QO>gX+Or~F$(OtNb$msUxDGxR|nFI<8#Z3LWN7) zw>(Gc5roAv1r=qS75sqL6AF{svT+{$$A1S z!2BzYchAuu{5HO^%Wd|Fm?sDN7(-e0DV_qg>4YzJU0RGUXjcNY85E-Y5ec%Ly)dR~ zmSrV#hgB{Rw?nYN)kRzlUOxRov29k{k>hrm>%0|aCRf}^v5%{Wv6k0WX%98UFK++Z)_DmuV7mAuRBejx`t5J{WQVDt&QN(kV3S1Lx7;!G8*zUU%b+};Rh5OqE(=z4 zHBdj@j+E}pz< zFskw@$hmO1v2Ja!TEbPgc$fju)gam#^7OA{MwwQs1Q|y=wrK&D$?#pe=Nf ztKz_I)zRtKQH~*Zwanp|`$WjuISkMd4FiV8e37s1*RuO={35mdgJ>5I$ioPrLax#^ zPYv8hmnyS+2g!%A?tg8V##&V<^`6<^u142g?R~(d|6~UPDBWh0SwW3Ls1NzK!R5`j z>sY6vh|jYd_Jxl9RNg1|SvbW$5b-eUN;ex0S34!UHjph!4fuy9@7}XJI`?`>#0zDz z@)HnDpXqvGR&Dukai)61Xjb2B^E`Eq(jv4kV~bPGuLgOHwS1*u33CSc00~SeMl_9o zsLs0H{@FKpo=5ozi24^lS8_EdGvMr&RLO~m@z~Ayb2~J!N1&fYXiaf_jYN&KuK4`i zICr|b+9Y1{#OudI8W<9)kusGjQ9g`NYuLH*SGG-9K2aTmCFZ=&{^XhUM7XxB_-n$) z&r`oQ9Sx=M^Ou_xJno$k2sqbNa#(G}fN6_Eeg23Wj&RYfef3o9TnNNkA30qp>%~6p zmqnY6sJL_DsVp8hSn&-GP;q;>58#o;e3;|1`wSnbTL8UIKnn&*SfE<=hbi|cBFcDy zy;i&;-MJt5Y&Otva>&6ehrJ5=HKhr(H!ZkmExVBadP3xLo(| zGscvmx)drmlr6|u%J0ML?(X-!*3@>P@4u!H<+;C~BHnxM=fs?A3l0~|lJm}S4s$sY zvGB{#b^nU%0JpXnKwtR&283p3oAPCe31@7zK4(N7FqoUG3otIOC|+YObS$iHs}8=! zI5!?U8`#xQhwFOMO1c^wj9aw1Cw&&?Ck-_ohfwpzX;<`WH%4NAgk5;ZAfI-_1ssYW z&TO}6aI1s*js5`M_loaH*7S^NK-^JauGPFL6x$XLf}mrraup}6&2h+N2SnAK3o)Bd z24i<}?)=>l8uo6wd8;-K+8NIRuGi<)>Gr{WeoO};^4xS(ahb%?0B*CBr&&hz$Pu_F ztb2;~kALj8+#e6Q4>&CiA<_EdK=>RSDD-5j=oAL)tBmyo525WM~ki2F_f0c4R5~pY}fv zG8e^?(~hz&5?}BDUh{!zwaRrZ`XFvy=l8S`e_fBi9+jnzK^i;Rus2G42?5h$KU@D= zNGg7Sa}pMQ^!dVlF%`(?zrdcCYH2IPWURr>SW)==9fuIVEpw39+*a;m652U{=Bag5 z+~26JmK8*42-#(}6){%nhE75y!8i3d4TNk33;W!ZE2u9dIuY}nqWJwVs?rwI19io~ z7`V?gqSkHunps{-25BBHMxde|OnRWtZ@WL?AD{rDIe!qQz(lEKMomnlG$gZ&4ikP)x0K@j1 zBHI^aSfTS2qKrmAZJ_7L+jFWs65re?KT>zInH*lMz1Y_&g}1riqCs@LufA$=DvLMF z^>$)w1u$2xY}f#f8`e{l?~!YN*_(G?1nQy&qAKa%pvJ3(x?bz zOE53gI;5+~j=~{_`e>;!#i(ABqr?czd^(g36$~xjMB?q&Na3m7bt$v(MIc_-%*nP;Tz96@;DE&5Z@(HtFN{ zQ7=FKdK~oB4ID3T^XBuakgh{;cjM0i(TOA@`lyLJ9S-Y$8BBgh?yN6PiLRrthH5vg zjcJq2$Vu=aldVYm<=8ZrCpf!^!>E5~0xAv+=T$K&i*TE;kmGC+2~gIA@3^$NjNSlR z354)7#()1u6l$a~kClqKQ=!sC)}vph%by52J{A|}dE*`o`RuTv3m2nn4qHMHJCre<1x@-1$ulpo#Vsq(nBsOuBKmG?WK9QxGg+zX zbSaUlpVrJ9siyemDLZ)c(Hh&dy&z0>^%^kNY@anadYQ}-GeLL1mJF)X1)_ch`{xdN z{y$=pAF2BqeW+!=6y115(~1?J5!6Z|wV!HF*r94>_4Z9vL+~QV=n&NE+fS=e{Ct4>xa=v;}4AQ zwv^-eQp@@mIW4!_Cg=dTQ#5#!^9qh91MW{`X641Q<*!|v>IGsQgnRIln5`a23 z^|12rW>Bl&{%_!~qr3OgNjI}VAvJ-)I&^;X))XLeKGEA7+?0Rvt?j!L_?FLGPs_TZ zoY+b8r~~4AS51L`Xg+Na2FW{LdJ_ZgAJQHa{;D}&6(3W%5OQ%lHuWDG7jy%0iJ;MC zCpudZ%vp{u`|09#=`50Q->IG3EfLF2-XYNheWM&dkZ{SLFuN~6bM6$+)1U3pcE!1i z7wsl*z4Vs1I2$i0{7D9>0xm0b{u5I>JlJ&xg%446uFmP!AF3FbUDdUWdo;F34!STm z+>aqtPMui&9^-$XF9WWt>kPu>78CncUQ3eBhr-lX zVz2zrsI44%fGN&<-^u)@6tH!n|0eb2jjWetvr;apIQ6}n6bgdE^834L&}Gxfdt5tN z8KB!olv!j#f1yDo^R4v~j{Ixxx5-pgTPsia7niQFz}8;5{8?L#=+aWpH}y8F7Ypj3L{>ec?>@X&QX2Eb5amN*;kzfzle%^Q zdA+xB@LTbd^Z}5}_LZtC+jwQe%<0V167fcm|6!6Ly1ne*8{+v;FnQ8xDRi&~^a@J^ zW9dR-9ex(S(unFjDzZwLOi_BfAoI7qUGDS;|kRyeb+$lsnq@H&3UN`ge*1Mqc&m@+-bCpBM zwd})5plbL!u+hhNJDo{+Y}5EUWVfVx@!dfM)$77#-kt7?U!)o-pUm&|K2h&QH4R)` zH-8ILu&$A+KQNHI$&3qgU~^(*uW=z*-{JL+hUqStJKOJSQANp|w_xwwy1fjk4C zM^ya7If1hxIZib*k0~87CmFxl=c2azG%F5n)APKfmm#!XaEsDeOfW?bw_dm8ip7;Z zk9APB!mddEzQ@nqC|u_<)ZuW&u7a>)Gik9TY~%&@7X%aWD2?lXGePOBIAGwOMlaIc z-ir3zE!Oo&a5dfapXi!j-?fyz9EggT1Xo@MIFKInj^P2=6pfe6iDu;hu1t1YW%x+F zX=-#-Be&VDaS1>rx472emqCf#=mgVi*P`?8-OJ%Lyj%ev(foiA)2dKR*uiQ8H{baB z!P{c&y@;v8jxIZG5yzpng!XqC74#E0{GCv-Bt@Fht;}4;ay2Crk6L@G)EE?IS9QXp zMQqdvC=hRXg4I>9p}!?}GYO@|Q*&18 z;G$sWZWVqG$mVRsqCMl*DVp77k-G`9OZNx2h2wW%tt2CvuhN%pn9e*1<+4WS^K@qr zZ&3ZBUy|@6Xnt9eRv8^j8$9X0Hj4|QDQ1n&Mphqppk{dto7H-$)NIXGIQN*JKi5c$ zc+AuWc^xy`kmXb|eoSC@E(=zJ*Dx@zruHHl>J#LXV&JC}6BFd%*2dg_2CYADLXB?6 zyTnqI9?ihI{OmBKKQ0F>&xnIakN}iDU@~YrSRIf*b`PJ}5x2ELwTCbWFj$*FHA;2| z`J1aP8?L1xiT!erar8d%3fMqmiKPmH%8rfa4^KB5KTN5eD?q^>oFf}KtC~R7O0WA| zdUDTKR^v?p8dz;-_|Ndha4SVn!cgGhX^uIzq6>ig_u z%qH_w+n7);*dTz=6_-~$dccl4Tw(AJIlxeTjgx5=S|;=sE<9Msu;pl)29 z`%M!5tr}CNW+#q>4!DIcWJXH1RZt`n3Hd>YnnK|^(Fgrqn>McXnIhd^mdtcv~ zVXkj5xgT|Q?&=<~z6G&D8#s@&)SkaOen9zw?2CZ>16w@5hl17_n-4u1Tq3ikas&!Z z`m8-Qs|OskNkK9c{$9X|6}uc-vU{}++C#vhMhP{6*3LG$S zJZ24`KY|6Bb^@*2*bJ& z2u5bT*U5uNDU?rT&#n=R{VBm+X*4=+WY65r?K4LLP;7tYFGig@0Kv1O%p-`44^JKU z=yU^=mxob6^KvIJ&~#o~`L#>EJ%A(PHN)K%!K3FRixP6IhL(7e`r+ZfNuw2fJVI{? zxI$h1D2_HfncR1}{LuUQ3rPnY`LGpr_0kzmALz#>Ch^K$nYEEP%sQPc>nnRIqKnNX zm4&I8=VMsym=Uk#;N_@$%5I^%1qL-;<*XNv^0x&>p|T zrkkn;e0ip0r!n)~ji|O)b076;P*{T$q(PZp>*pDx9MrqZ3hs2`0tol{}<-KlYK$q6J4wctx+|d^or0fDFQr!#{^^e zHgnN8E0JfKT$u=ZW$X$@{DOhHBWLERNvnddUp9bmKuy|Vv%|+u3~@i~J9hfgNuWLY zk_NqFXtwCXjWolqlOap25M^T;C9d7i_QWj) zWxjkw9&wVp5^3a7slyuDA{V!H6z$>5w9I~9mz~^i`=hUEJ60F;f@qg5vL2&a&Lat(jEs#(lxK6X z=n5?wa?LLT+i{87z@c^d5KNrF5*4-(IvzGXL2U8HEh4s7Ybl9<>6U|2Pnd{4vviujE2N~$n^?qV{SeX{t;ShfDQIcj~!<%#q? z6f2)%a}w%_Cd?q<^B7?;uC?-SQXl)cT1#0#C-+~iqRCqUJA@&Bl!D%PrTFM-%H80k zSyx6x3N|ubV`CdCx3QZTN`cN1P-;~B1<>Qd4*0*WBC7|jYYejKdr(?8;P}%?yGM;* z>PzL?Wub9J$OL}93^nxpPecy`BVu0PzPz+gQ=Wvfx-a|apwMe_SkniV(idc8#k|bO zfyYKOJMW~CQkpvM_zA$=xg4+77aiNo5Z1-=tWi#THfHn(vTQThl1XV+{6Sk z%ub+NDs<*$$JP$QH(W+CzyIkyVxlx%PFR!~`YOH!VF7>;@?y*&S+ z!9?9Fx0%#kyN}!`q*BaHt(sGPE>X+u<=Wxk!~{XuPl5o}^JLR8;Wi2(9MGD5*lt)G8hPyfZ}g=02k;YN8AaK9L9i8~ zBJ_;-C|M!S9k73bJR`g&rA2`>=ydkvkKCQ?n-L;K3ZJvJ3tbFcJN(WDg_ke;u<=D@ z57s`@_hhr`I8Q{ir8 z3IxSWsS40c>Lu=9TT#xF|9HXc%zl^>Xd-4kWxgaU%=-tidhXVWuhLwY2}GEm3_?m2 z4YJ6)1933mjUaC;;@Wo0SnOqb)Zv zDB})76-&H-L7beZ;dN@?g^a+Y1iffZ6{#SodJn(%;RcEyBxaXQ!9VkuIMZfxAsC(z zBdPE68kRk)%O7Z|^jhv_UzWk4x(439T~R6stHWuRFMN+2#n=CT_9s0VuUsC=7hKO2 zNw+M1?R5DZ*OoC0XPH#)vJvk{d)A9Y_Q_M1zVMl<2e!Ah1d1c%7SbEUz6MGuNmGk# z&%HD>q^*q7l>dk3ODnGCc^muqiV^vlQ3<>+2|MGx|KO z?pdd^5*PH_Ex2}oFdbpuL8u!(u@4mFETrpO*k*!7+_~ppR0SR|e>{xLVt5z`+VJds zg4X^hp^!BRP%g`KKPk}!NDMr#txVpwc&4gA@9~bo-Cf)iz0=KjSJG}z8=x)=n>_Kb z@G^lKGrOom>Em;1o(dBQ5(l0|{s_#xw`yS_MT`ue!<=yt8?&Ufdl94#U*TUZq-GHJ zfvBWAj}qf+0h)V+C?xsPRJYFmLvD4=gIwY(v7t&uHpCLotjEp8%0jQoO$zFiQ%iY@ z_(S!M=zBI{uCj#8#@?Fk#VZC=T6;m}0T@^p*`?Y1E~it~NiMB)e&g9YyMT=P%WJ@5 zZ^e;Q+5&ZN&xx5^+(OoT(d_9vk+q!@t94v(LrD9H@Z^-U1E;1%A#rq@YH)3Q(IChB zEjt~}PY%LFDPrKQw@ z4s-`6NcPJ#n*B-vcTNNaM!&^V@^DJklUoAJj|iyVJfIO+RCTRHQYgJ>idqr074Fu) zu?8xPTx~lN5Qeu&nUVuqOWl~W0m>s=Z6))r9=#aSJ|d*#eNxr&EnhFFN=bK%xptqy z*j8bwm`K@*>-p-A!jghGFIgRtjf$7pbTMwAoD}&NaCK_?eK@b0(klr1lQNK#;^%Td zRR=fRW*c{U5FX~xMNTO1F*O(F<9#QC7|C;xr$BS9-=5OnKCu$mVEhvq*j;~wto^-d zc~i%&w}P}`!FLtf$x7N6Tbh2KW~HHPf+^3{qjQy&>RPZ(CG$L;&&t|A!5E_F7~5J`=+t@)|(4 zSN&^!$H#Z2o<5>&LG^y~=rH|Jn9ng)s+7(tHnZOfKJmy$UZ@+7nYPrARq1g|$i)yB zU3zfnE~~t>orMPB?${H7um%0D#L50U3vJdv@n9s7l1L9k&Bi=A?fm?%(gv^)bQJ0A zB52(fZGjcaQvCIOecz{hibfY6giXreo=n276O@a`jko7>pSs^%+F(2gPz$rH;j{*0!6_Y)%6z5#u;{GO3vO}5x-X_E?6SET zh`ihVz=5fj7yw5er!*s_9*j29ofIA>5;AX6S0$P}dx^ibW>eifoU7&1EyEGT(SO9hAush;~W zU8EOD^+mlpYHUZ|czZ5^H}+F~IQ_iF>+LLb_LSGO#yHhDUqdzEli=Xq@`<`2#W1M8zhS3J&}KCno*{=ijOZ8;&2tJ!hw7W zT&=O_=2jHSypT2ibxy9&Bh=!v?n0UqC!=@&eg(CRjav?gU9q<>Gl;dVMOqe5{`oa+ z)#yc0WGd$6+5#Cv@7>FP%Q#Sj82npQy=LHAsXwK1It|jXYHku=DUPXs3fy|&nRdx#~x`SxXR5-1wez9tyK^?4EO6PXPxX<)%B zdZBD>DoaFs+R`dPT9`pmg-9&XzZa#1^C9J`*w%g3TW)pFh|}{h;;N`z4LZJ6wbyZM z=j_j>pB{s!2@nr8=0RqC!tgh!0>7geyEe0BlZs5%XmNK%(S~$Co!XapkKrloRubQA z#+!idQucTs)sTy(03VlSpy| zrj6%3>-W7^UTVDYN_X^+(7bB)#{E`z4G^xi=O%s7@t?@)D*x(oS^g?4gF3tcL@iBmTd}@Q~u&!E%omks_Pi$gUDusnvlzNF{2-&8J2K6tvVm07$qim*?DhV zq;PqWw?@jvux)PXNL1Itw}y|ADl#oE@gS(pt5DbqQPEW+Ft%eCyOsuV+<6xBo4k)$ z+A8BMe~|ZWSIKJR#hFiEgxF<4_yD$uqx?-?v_;+0c)HUu=QWZCWo5pih7`FxTV8&f z%VkNxYoE*+o+|F6c5-Rz9I3&l;4zL!b#||*NWiJ?O7>{QaAp4e_$(GP$hzvLjVtbM zW38Mb{84(nW-a%WR%Thq_jKo?(YsgIIPp8@PS7jj_YcEfg0j@bEjTFrBC%JLNwJKIj%KQcN=TWEF%O?(BbbUTMF!9iXztk%YQZr@-g{(4B+u96AC~?t~Om5s9?X zJ2;-^O*xrvA~(hM`@948Y)8Va%h+7&U{tTx^vxwEVjoqUiiU)%9BoddDgWf>m`2rq z58S}Fx|ySpgEA%jd!{okarr}YUuzydGJRUQ5Pp5Kwv|KaM+Ch6gQk5TF{k_bNarGd z4h^_}z{ptgEfiRyUb%-MxO7dAyQPf~>Uy8#aX#4=5&x`+|5!z&+->&nFWe2)!3DpT z4(QKzpz<*o=;{pBJJy~tqgHCn9Wb^zu*;PDy6nGyYt73Xh$!QGw6Q>9aYmXScUf6> zyv4htd_mWcC>dqJ$HwmlOfzd@f7LNX%gh^lvJq>Fn$$J;!mxcjzYimdJ_3><^7wAtx>&%9XXNKkE+scLiJS5;k4 zo($1A!egoj@jA;&|IpOMKEC%iVbBfruFD_Zli4+qaz9)#ZqXj|p{{T&LH(BB(}?0S zX%T{_Zv4IF`t_>|MAjci-?eQ0e`tHpu%_B|Ycz-&8{}0{=|NFJeGzF=6r!RaqC|?I zw5X_n^e#aNMMRM*0)jw5N%g1vC&7 zlsqY~8{ZX;$We@&Ht~oQynj|V#-Rf~GA(1G@eL@7Ivj`31PUGG7lStAU*Ck%D;tb( zbz9gpe$c~5x?v3dn_o=sRR~cu({fd0OTf*83YWJ~HQG-I1;NSOea`s&9PM*K@TINC z-2FxR03M=iL#3)f~K;UtmUuyfU6cKL4AFx#{}dn7v_2vYl(3Lop~Y5CB*fuAAH@E&CWL<8*JxAVL1`nM&;dhH#y z3wjpVr8OG&1oZ!pAstR)L>;S`z@7Y*wM^kx7s@IRo!Y=Pun<1gdjjkMK+`QPn(8nS zy+alvtZx*?<(mo6N;KtniXGGQ>Y!q~g8x?DqJ;)Z5liz6mp+yg_7W!=^8`=7*^0n+ zU76 z`Rq}6Ese-ibM+uk=Q??dQ@m6xzVKSmbKL3<*Dw5{wG4@I`R40-8iSaW_stY?T<5gK zo~=3316+T#vs`Ci)4e-R67%%MxQ^nfzR+npkJ277+$BZI)H!5yzxS>)C`&IR@ zmwJ>eEQP1!Sh~}B{tnt-cZvS%9A%*bZ+v7dPLS!b-Wl-tkf5sF$9(B&tjf&FoVefR zeY@{0No6~u6ZvK3Qru2>;zKb}hc~P21Vm=GZ4|P1pIe3P>juQ=-Hvzs3RtCkb%mgi zsy~1YZi@TwUj1m-PA-E-trJ|`Znbv)}fkkDxG6G?dSk%cN@K13AY3@`6#lgmpU2H62S_5 z{vXKX6<*N_xF@3n`0%AmEuW-NG!7Bu{8+X zbmADY2VcC(vU>k zEzwK^d@y7dX8m}_5QhtuFr45bV~Je(4ZZ=Gx&uG)97(V1G1)Tp0!q*YqveU>Tmt@r z!^*jxhTB9N4&k`lW0hPAvSrR$Z4Kw{zbAKSF zzy3f#&yT%!Dc~t(_MBW#_wh#Mz#9S&#B}n4OBJjVo=>uJi2E9l1vxfx4>+k?8u4<= zx3rU6fml7Ii?wM2yKi$c>Cp|!2#UxS*9sk)_7o2hb6X>P2dNkyz|uZVdyNA45uolt zGT~Pkn(TH_Fa;RPxD>$q19^SIKBJajwvV+U7yUxY0e*$&cXsZj{LambkD1~`u!C?m zV84e=aDU11b!`HLH?C>;tZDGQz1gBFeX2=gfx+-xog{XAAP<3WTvQPD<$(xV0=`bP z8EJFl8N!dt=?1oW*N=~^%{dQcV2!ymbfAj!17$>!aOmle{Kb{5NGqvZFLg|K$dwNU zHt4+uHAR?@@AhIW4^lr~sna$*P||f(%S@suJoDctMj`)4VYX@o@8v!r#GH6cNGo8OScuoy!AG~{mK8Xq&lQfo)xp*!Rn7YJ%sfl@P3et&<-Pk1U%gXZ zu;jFWl*iAP6jt%BSSG*F`_c)p;P*w$ksAX2kd?eQ4R0RAo*1h;Ei39S`nIpTgBn^- zNPLJfeXlfMz^!pgS_Tp{ddaDIyARE#UiN~X6JqnU!PN9Rp&sYL0Kc%z-nQsxz7|99 zd3Ro06;b+keHfx0TLuKC^-Q#TKfenx`iA40sdMm-#F~GujiQ3AAeL=M5i6WJmEJSP zx2ItD7AFn%`8<+zZ9M7?P?Dm1XI+zj2YGX^lxc;x&V_l#{g6##^tMx7gx~64E()T) zidMDCKBZTmB4f{fR8nBt+H2bXxb=v{#a)M@JYs3q2Tq+^@NUQmv#)t%4ZVvPxUa(c z_ANi!stE88c>BpmByS@DM6v%`n<3Dcv}AoSx7x2aNi4%Ai;;j{c>Gg(^2A!Io_bJ( z!1#|Zn!cYjB`2Vt3X>;&ep&Uf-F~h;KVeM;OC5QF#(&Z#_nBW?>~jT_$5uefNDW?( zWJiU+5@_)tda%ts&_kd@iKX#;7&^A=A%4?k9|`BN!~_7g7_ws%N5IjUk3Q)5adue< zTV%B~@7@RU=I=FbfDef5S@NRDP3YFM(OZ?MWYI-{iEw%=WF{mYyVoCvoQl0NYTw^8 z*xChj4K*1`ANRqac+|#p`L(a^7K{U=ssql{1V1HpC2ih%;bX`C!6b0L@j-q27KD|C z2)UluZ1&D}4M?|)Nl98aNn2XCW-Kj#xCr-ZP9OpXOVh7B3V7l_PtT)J*Q8kQU2ei8VYdE- z2dq?vvQ3D(TZBG%^_wQ%fSDwk&(qcd8=@YTgpkH==MB!H%TAtCAbdP@ci0HF?!h)| zLfLgZTXZuuICLHjTPnU57i4d9_FCBMQ%S~JCPPU2rSAf}YaZx>W6yEV^q_R$+jW;@u#{3YS$#wT=D17+Guk^D}60|1lp_GeGKldn5y|k00uUH zsvq~Lu|(tP1$VNWzDXMM^-6N505WnUr;j_~s2%8pb|Y1QK3Dkq*h1Z&CKr*=vsgT+ z+;+_&TSwh{fiA{UH2GlI-)FH#UbK}D*QsyR0QyEIGnF57TO17uTkmZ!2jU5A@}%9c zf&@^qpV7r%bGY{n{ zhA0vto-};hWoxj%9Ec-Rc6W4f>u5-74K;wWrekNPO`4KXFA{!;cL6{$pekEHSfuQrdTwA1QtJs;&@Tl*rV zT5}DGvE)XhbWT9`)aT0q2*uW14|U@V42sD|L_dzA!ay<{k8Q38O^BWG0Br%F*S_EE zU>2Di^}L8eHG~~IhzG`oD#jqQ)=uIaIv^|E#j6rck z;d;xZ3i3*M>M;ZLZO%CDz^gn=I#3StFxQ*?^hpsvV7azAk;R$Uasn5P0o|RiY;W%+ zz43QOmN1wZ*LkC`V^a#Gqu)RfDSGIXa_mLrz^R0?Pji6)G07DdZE|y4_i8OuFnJKC z$2faYW^$z=FbLby^(Gr5yFD#{8`EcVp%#Nl3v~3vSOPS^96d-p<-gnJtf2?ilor#& z7QSNx>X-S27|3w;(TrNK^LNEua+$o}l2_68!%jMai)hTtb~BMY-O5&Fe5?^7<|EP_ zjxBIo4q7Za9ucv>QU5GzLVD#XCsqG<2gh&BBKr5K7PEjP84aix73Ug=5YPWr%0_&g z2^`9NQa`vlsOp$~G#~Eo)edz7q3BJPKPEA;p2hX=ADoU7^KXFJY8UWpUL_9DOD43U zP909Mb~l9K)x6jE6^FsXSHO&op4(#Rz8s^e`AuVu#&dF`UxceWRk-ZekP{`L);?OI zL7aUGvSpg2TGOMq%#3=#q?7ty>J6@`)L@cLN_y}6^hIX$ z=#T$;uf}wkUuM;^1aqXV#n*jLJP&Z{{Dsp2wD&6~Q(|o~qzN$0`0`D{=4ll? zmWY^;1D20S4!@Q#_RXOJsDp%dxUR-C{pf9QGV9*R8V@bLj0zW=ChGG2CseIKl<-I~ zfy|cpLe8_vwbGCQk&YOxoO!<9{u|QdrH%2kxno0(TTQgWWdwsSHk_MZVez#3YG;Nk(~gp>k66(Ej*47fZ|LNAnQPv%+a=ud z_Z{R?6eh#Tko^|fV)DxaLSQ zZi-98lUKxfm`l4JZi850YMoL8coQfpJ37B|8*umB@(O&#HJ9?3>*mY-;pE=Lhx2A~ zd{q9gSp*5awVHF#p=P0F)9mx85jGl@>4Q=136%M31#!*E`#1sF8X7lObKqS8ryJZl z$&<&n$N~dQ4j6**4wnDx=2qp^4=D1e30O}%LerD)hX%vG23<;wD-7pCClTLY$&~JU zD?l@t+bTlz8`;#hY<|TzbuaUuC-C4iTh;zA2gYs5cQgO4*(UI?-|?p7usK*sXD+wI z2y14y1s!Ho3|sgZM+ui%ZyK50e;XRN?Z4hCTxpxk9#heOu7wO(o5i)bKk%*Dav0{| zn|e5bscWT(V#*e~|4WdP7`N@<1+~u>5{I)iSJa+TdWkr9YDZ@q&sufCC@e-l_YtVw z_X3ssPj_XFdD91q>xe9AXy*II(;Kg@ZwVH6$_PXhPwe|F`u+o;4{d&GRhyXqbwAa> zdCT2he!EK?|EGF2nA>80$|Gc+b)Zu^Be40YBgvI(ulV zuU%LINrMWurlFx=AQ!P24H$Y=Agyt`c>3EQ@#Fq}>Fu5>*!JM_gBxRY+;|mHcnr>I z&x6s`O*azFA-9OsNSkm6Yut6`dl`Wq-$3d{5Av?o{JF8-rMl?XBMoP<)zma<<*4uK zB1M!FwV^+Te7@++E$aOA^T|fhZ2d4M4Sf?zMn65Ka9@A+gLXBw?@Pq!kxtQ%0xFS^ zk^>VLo<(g)tB~PTJPRT^7%DLp$c@-48EZGh<=FQKHn9*}Z`(GL{=RlmPE5L-iI*6tJ5e6*MyRej$|(0m@sip`qBvkYY`lfDXX{$X4bBk<)yT zSrHBKT+^<{_S}SO24&ANB{8rSwf&%j_3A_D)N5WgB=J|$&n*G4l!Rw-ByrzAU%K4A z%A;duYzW^&Sn`jX&xa8&^K(oVnd-5+Uu#VuDfQS5rOe7j2C%n!GBy0{DhQFIX7r?L z6~zBicVo`;1J-gtbF6FUbz_6_f`2JtfE#`9GfSH^*0Q(YTTGW6|5@I1hZ?}HtWj5y z7B1VjfNoz81@c51QisTPud93EMU+zM{6W;uS7K`}r=EhX0t_uGGS_>(`9;IyE_qxM zP37xvh3AXczo=YQmNkz4kx?5JX8@-bspSDRU#^M4fFdw8u1?>cH7<{sO3T(HE@cpZ z$JQ(kalkY4r6ShpSdHepk)R3xy-GtdU!{L=mw{*)4knOcj&kIRf^hX0ZWG`3`~bFu z+|)qg{Lu%7<1RP9EGqFTvv2so9FIVkbv|IGvSHt24GCYh3zMzl)nAl9YB>5dP=4db zU<+wk08jV-es!1=24X_S<{whmFzK&$7CTh|--Xy*?(;)_?ut_>F_tGn@eDlw^9VcZbZuiC*M-fN=$?2GxOPsTHaP zlnbqf4$Kn)JsYu-g}~-Jbu(27U*2`_FTLVO0I~|TG{!5Xj3DCPZ|b}DeoPR$Cjr4u zA}oRY$Ihq1?I&hv!Zmxjk)M(asWzubV2Xt2Ar34`a+%v1=w zn~3J3>z0y6!j6yRgu*oMqXB*g7S&525rTj}ry`b%XW>|U`}9ewYHP8E(owJ9vGmNv z$?De~GMUg*$}6f+R)=3IzYJrg$biuw@-I#kir{@M+z>ZlT7!wZ+D6ijW#s5II2Q&1 zH!+bP_}`C=3~T}L5TCaO?U-N*Cahzr25vlG!mNcGlA#f>`ZEgYwyYWsroxv>!c?|5 z0Z4!jzz?A{L9lE65)ojBsP6V`mL3=nK07xwDM|-F&eT~{^%?XMDwxO8E`X{Y3an4t zj=pZeGQZ(UH?!&e>6ZEXSL9wDtWrW@`rsd$;;z zX>VlY9>ReX*xC(qBC55tHe{th-RiKzzwEmHzp&C3a(&aeAGFS5W)J>(yFJ>EiFBqPPr(mNA;&xiu7oJBrgf$?ZwLuezMHt>o+(2b-coqr%Jcfj?_1u{g8 z#q70t3ZBMs;=mgh=Ou#X$A@yEVSi^t@GYCH%l)(*!Q#d^kJRr@Qn>cRc&J&5y~ak) zI)!FYu5+M7gveVq_5Hu@yGa3v(j1|dx3n#KY9Y(# z2!GYE!ktKg%29?Gs}@>gBAxSK!O;=d_b(W@xH|fm^><(Atx@}l3fp1dN7h4-THt!rkHq3wVAw6UsQIe`0-&NFTmkPcjB8h0+!X&l`+F49h^1JG2#9=ir&Crzkeo^kVqi*?*#@RjcnatsgX_R z(k29>?4)LGDXIJ#SMMJ#)nJ7{W$XAa-{2J7mxx1R+=$$hvNdNT!9%Azt$1+c{Nf4d z`n%=H-c*Hi*-dU)zlATz!LgRmj;0M6*+fA~k=gxsWNtXF6?ZHT<{X5Wu!+0&y_?$_ z@U}|E2TG%vt2|#8%6Axv5p;30G`AqIG6_hUv{d2y;PcAKsAoem3j=vw31Op@q%qGxgQhG9FrF=!A82l@inc%{F)hhyyZ1?zT+ zA){RqW&itw1o-P>-UXp1Z{KQ?PN(0TGOY4EoKR6wv^yaDb${2hhrwV)n*HUif0P=_PPW>JOxNRKfYbFpwj8fF|kP7_Xo+ zG#`?uIQw;=M&%t}P<{3K=SINx1LXB;=-48Qv)C7}$%_hknr*tN3Rj{YLOJHj3981n z4?TB~uEUB97c5RPc{>`Ln(}Pw7k)??aLkvE0H={GlgsUT6gS2xTYH|r^wY$5lx1aH z`QJ|_aBMmm|t* z*OzBPFd1~KJUKo>t_WBXTwHZtPU}4mYBT@+G2#A2jbf6_wnIv0^MF|) z$G;2^gJ6+MSw2jabVN%#*s5{od@8eugo$r?_vBq>+E4O~i~Pk|SmkN7y&Nb9=sgjoby3mkmUSJE zOkF2Wj~Z#AIbk$zf#-tftz3H?D~qKb8g!EA_fRN(IMV8_?Hx}eZDmXor!PRVJ2$I$ zcI~g)ZIy+gKx5UrPH}U~~NJz!mKps>tzH+%~&w zyJse)E{HDZoF9>v%c1j`F@h&cjUnxfx7~NoIr$@*4uUk>uG#H zWcHAN{(08qu16>QGy+-@#1JTFKV0SeL9~ROVL6^pf(HODBi<5vPMfmf6!=#7Tda{1jZCIr8kT&gVaTpn zyf>VI5Fa_ENH2iCdQv4w^!^EBIU{+D$K`?(C^4gw8)vm1L{Yy?^p%Avr;JuV|1dUk zaddwek;V_4@$6}F@lnE*5308>)S>NgeK`#|FLU~S$ZVbD!zYX=0L~gqOOQ7#5NxEc zV>Sl{h2ATEd3ory3JYS|-;zS%3z%C)XU1KWi&2UN&$Gnqku~o1Cdw185PWIR^dKmA zWffjUae_q9L3#UR{-&-+Or9)LLcdJrgE|hVZ&pwo0(Xo5%?BB^9jb*Q&*eYHvUkLr zQR9C(*FH1K+#gx=OoLk~)5-CHrT*6S5b~(D8i?S-f2+{ES83&70f&HX5pMgx_i)!(cEZ ze6ywBb|;9^rf8~^cS%V5DS;8PN1o6TLzG{k5BZSuGL7PFb4vJH%l?nhuvPJ={) zagw4A1cTdnLf}p{wn!Py4!U&nh^E#qI~vbFzUwbQ3;hM&2ZI8B9>9Tr6X^g)5xhNW z63~A+;N|x358k<7S% zcgH9W;Hz@DMDn!pe-5?8lQsU$lmi@NA5Is{^GFOl{Rz(eLiJP1jQ&5Cr`^^}!1QOG zQi?nY)Q!WsA9I~${wJ()^F2%gAc>K~cLM^ic#P|=Gszv>L>SnqYE^)?}7dO!Z`hSb+4hPh_RWu_}lWL zsO#u}KqP$uIs4Un0dgODF?RBl13z>|?}zMxyO(KgsYavVXb zpkI*e!+A|L1*^mvA*2aZRRNNL*L2JiDuTKtSmyLOFM3+XmYiH+w4Lad;J;t7MJ6Ah z@5WBW(k~petM^w)W3lL1XJAVkta^_fNhQ$MZ*EIA(gMpPt7H2u%8nmHTnE8-l{d|# z*ZGxT&Fp|`qbr{yeGrX3SEq~ctp4>^6XuZ#$69|s+VR_ilx^-zMIg#WpQ#Kh-Yku0 zu}iQ-5jQ+L(`v?xQz|F`_DO%fcQhH`jrt)^3N9q_e6iDjZx1%}(+__fTk@ITjnTTk zIrTARbw_vaP)6FC2tn4Xv|B_nP@f?J?!_C2O8^`M%Zn5;I_~#%pPX&FKK>K$gw>bl zU)bJ=r+*+1q#g~@^+UJ0J`KOvUEBjleNP>pEZ)QvWBXA95kE{?CalhZ-c8o#;~K3} zy6z;P6sP@}zJ3TFu7XGs+NZiOVnG-it?Fr(kKbe(w$^$0c$NwkTBY&fSnJ-So<`+m zWDa-btjpq1%eIhqsC%G8`P(t8D`3i9xvq__IfgL466v#9rZ%=Yr9@mM+ypwmqO}9! z4$uJfL;J3%npUj*x;p=s+m$b!BaBH@a0A|hI-Xy{ zko;3`P+z^dvUS$eQ+VM-khty-VJjEl{W8sO8L9n-;Uhv z7n=oR@|``}SxvT2uSa&~L}}_6pFE>?1_AFYGwx`s3rJ%T8xo(zPpJf*3;4a5P8%)yhtWs5=zZmxnrUAP`D7sVPLOA+@6}2J8whw+z)iNL@t{^2uRt#(t`>(w8+6P%a zVSzc5ke1eQIlX1qfX1(_v65aF_PMQQb0~bs3R8$rp)&vZ-f>#f%GUvQv1f<8K&b&a zhSC+Xf{OTk(<_eH_e?4X5X0^7fct7=cR=)trjUU<20n{uNCwUJ9w}|%gUn>-HN=EI z>Z{udCX3X1W_=~|-H05|IdadC$Ay>YhwWsG1ZQ3DG(!ZzDj`+DLyUr2Q z|I5ic?*$+`g%XNgquZ_Or4v>LJaCqFu#oT5`1X~~C+MpuHPkpy=f5b|FzB$=$Ig3*YY&h0dD%Tc+<7!S|`E@Q# zc){28cme%elJf}DZ+VKkU!UskKka$0f&r(BY^yk5%sAWP16Oyg%db{O9s2!1dEbQ0 zL@f2T8GXjL>vJhnYhGBPTTX1siS(fmUHJqkud3n5Cr7plX!9otpn%eYqj~H70h!aosVqwp5S2OZ-1nqW{G%%JBlg8R{3AQ zGn~x*Oas^|wyKal8yNxFTxr7PgMv^=n@HkNLZM3XKON^boW|D1|*_U6AC07=;L zMCrtRAX(DSl&8oR7KF<974J$n0vF_Z1^oO(v5K{4Z~ERL5?`_!*u@Ln+Om;wB~W*dGS-Mzv!3?ollLbqXd*=P$71_tRxVZ7m%`M~3i%)h+6R&<3t z3986Rh4x{e#Y-asSy0Y5o84o!9~t{WhK`BAjyAK0%?)qg>h$8u82tL>k?pW@>FyTJ z#&=*Mu@HPBcvt=+&riVV-gXsBQwoQ9{Mrndo3I>_WSCb=@|=QxKR=y5)U(%%-LZN% z%bt+p0y#SUX>qoNwic9=vqec4MRq?GKZtvz{UXXA3?=#5gz_=L{upFmvC94d`udSt zP|L9UW~Sb_4j5gnd$K0ddbIk8>>(Ti1!_VUDA3Biy>@ok?M*;rA0Hd?EW0=8nX=V( zgu6GLShsU?gu`afAiqp=V_rQd$e0skbF%nh6GpL3(q$ouj!h8Ecncu2wiev9y?nV3 zfj;fE-*K^W(hn3MbaOwYH!eWMBh>mTT{TJbI>&nj7~qyiRcIauSY{W$@PPqt3kaZO z|1z@!;g)r*BmB1ZAj=U4f?(=Rzs~nHv|1j8$u>RK&9u3ueEWdhF6b0;d9h>Kdya(x z0XuJ33%wFqE8H32YW{geNfGGH_CbNYELUD7T?gB@5mcdq)%B~ORBTXUROYXLH{%0U zCx>eUz1>N@q%Wb8V0~T-iM=wYDl}+^JjX~SFDdDDGXrX>uBbe+dMP+BY*U5gWwYVUxM zL@+6&rgia~sNw@g`rug-55jcwD~=nNp3Sa)dEZ%b0a`)7K2`8#52qf5+7hWg4F0eomlzIrSRK{%Jl`)D0uWs+1rmZIsXS6*Qhq!@lj-o(x$eEQSFZj_;RNkBj_6K)P zU!B6FS*~5;^1*kj?+lCLL$4!gydU$|V;u?LRPpgkh@bCH%pb2Bemhmd#*$+kDp)hR zSoI`atJbqHkE8KTjVs`p%qRn*fHY=-3qWPok8k~a>S?y-_7tK?*3H(7L_|7V@dtlr zI|bFv-=R&u*p4C9ne;R`p%m#=N330eZ$15YD57ZR_4nA{kEr%M<+E{iJ${)HrxN== zK7bWzdmpjd!-!xXej|Viy)D1h6)_5&J^k&^_Oxi zD0vS*MFDDWUN*oIKVrU#H&qZUZ975Dgr_Aw5Jf~k8fhSm@{f8){zIDYDvf=o)_EYe zX>kn*2X5?FWbpJ9LDki9jNF-Y;-HAYNpFN@AfY&`mrF2S3D%nldeb)p+V=+{!BND7 zwC>}SUH~QSEuGiMym8xZPb4HNOKQ_^{IPOeXz=0WaueXs23+-@i8TLnxUI6XB1Po< z=OPnD;%q4RHT~`AEXNW`j$nntB} zz=|8^Uhca4A1{^rwDWdR1GJ*Y;xZb&(`Us#mYgGy=JOFqOUZAAi!NWX)1<`@Y4FP+ zI`6z&s%{0lV$Vobd+IZ%gOzbziy;VEyJGb%z}nqiA4fn#inb^E9Qz(&KG5J9_?4wY zF(n?@KeQy+yP|zu!+59Id3XI1FldS1%-VYnXZ6pKr))l)(JlxvLDpknlc#QDP*0M6 zocwABV$QNMcPVu6R}?N%gCfA=0mavXYNG^h;n9+DOk6%ZAKvV`c<)&W6& zLCnJ8mlXtH7Emj8c||)ztRVYj)(*^ zpJ6HklwBR%iN5D@l{%l*`Oh8yK&~DH*YJ^-C7v6A^@$I+#^11$B&Y!QvK&2gw!={!)c}z}sRnrRs&Yr_9 z=fY<3s{y?9T7zs$M^0;>i*%>tJMMZNVTi;=gad4o#g_I#TCuTN9QE+>+b;1BM;f5Y zS@YOMX=O~2s=FD#_;FK?szUPlm@0Qnkp))>ljGh4))+EhAl%3E%jY-4m8SFzjm0Yj z7%5-(-V&YTt-;Jd{IrkZ1G{Pj{>UFlF7I}2{h6gXJLOtY>5>F)1S7k^n9||LmHQ1t z5{`X=qJ}GQ8*jd-Gb#Z3@d@+2ZRse+e;(F1@B&0&%EM|1E;~rS5D@8Tdw_?u{ek=x zxAeh;6z&7K`J^0I0S@^C2_gZy75N7ukv(#H)9)=pHhDZEq!y=S;Ba)%cdzS3p&@9? zct-k`77QRiRKf}C=?;^;)R{e030*wCy8_8@;6d4M5lf|~UvVp5Z<7lF9}=8)ZP0Ja z9i3w~h4wB(2{Bd9u{aR3Oy>TjsbDy6RCA=VqBadawrdh|HVdy<&(CyU%RnrD)HzaD zD+m>R2j4)j*RlgKsM!hR3W~~9!Hj7wlR@`ti=lv%AfB`g0ycNsy%nknSgwfXQ;&&K z%)}}aln_|H<|P|&ldKE!!FnEgVwn&FUI4F115RvS;FTxpFu9!P=@?VX9}TujNBzmk zw-@#hht9Lp5s6zWk|_oKmg}EwWnQ{Il8N!V8mLKZ)6c9&`BW#m`rOHVWbb*W)Zl0a zvY@Fwkj6xiKLP1h!E3V6VL1eqnMI$5EgkleO%ry2t-D+{v*XH&1pd-94~&r2tS$PMUgPDuAWcSLo6)GSI4d&M*PB`pdi(t=Rd{e>3ccd0MKNI;XzvZV50zm~L zEmQ}R#oOt)PxC4idkykdlJQS3D*bHFbja)N(5y`JgTbe+(wSc15j_bVK))Hh@=fGB zr8iPJ&LWKO?oiiH(M{;p!h$J;G0w$m~S z4FyVFl~aCv?B9~B{zu96zw@7J)uxw`ZuG{7#&Q45Gw6XaI#w=u@-*Sd zXI7q_spnZ>0*$_`(EJ+ATw<~cabz;L^|5O`s(>B7;kcg{Ubrzx;D_8qq7329ehs6D zF_{{>!8@9NAYWbsQ&Ila-xAWh^Q~h)%j^*rfUkpH5s~O_)-w~ai6Jsw?$12CFF|1G zfTOY}-K0ob)qSahS5AUiBOg&}mGng9b^3E+Hw7yCn|?NcjT$b2j>OUpr@eK(F}D$) zn$Fg5E$_d&<)`<`PraP^Jc5*(&iB641Ea5vGoss-C{n=FXAuvM1ev|oH-ux^Q5O%$ zq+KKRmV)yOvCHWFrOijl=IxqcTl_lfc;JWo8AE&Nfnszl_<&X3@A?gvNWT7?+0*f# z54fhm_!V^E@!*0{1mrJ0(kd69@_mFN=>FlsteIV!PyX{k%+mdEp&RPy#a zT7k2cjY=JenF|9QhBn8nyrVcU>ea`mlJhfA)>^J;zb4uH!6!jY$?-CSIxVQy;Iu-Q zJUj+LVyl&zUTg<-ES>Y^xzOarxDY;u)K_%&^uu9hI{Lh;wO1IRtm&2~f^yM5!^^O} zR)UrBbS$zOL82kkchO6tL9BZ>j=8DlwIGq z?iEJErnn!|`xkSeU_P-n*0W>c=Uuz7m~*Rz^LShe&D2ui+^p{>VsthX%W%MCbt4%V z{G^i}!3T+B6#Hvq@UlHQy-DN}e>4VbY$OZ@1n3=u$MVrZssl6KJd0_oTYEI~L2xAS z-8}`?=gW~{bn9E@RByEkR!_OON4&LXtf`M1efjjyDnad%$o!xXN_oq*2wB<4Zl;*y zp?b|M%#T-miJo*bY8DQMWS*Ab{rm=#?k_k83WE3`MD@umULX;5scQv(t!I-GQXbaD zNlvh`T;b$#)XS@P13zXt6Yz({Plz?1kLQ@eDLj`fr3--t);nH&`vqJ1>rJqm7pwT~ zoWHX%61-+K)YCo05yot^oeDCzR z6@DR5(<$G)O0!-o=iLtfO_?;$n&D%hD%w%O8xx4Lk&J)eI$&xO}zZ zx;+o2Hg=bxO~|cnzYZLWzC9Xg;%lKi$pD!sz}NHk(MZZ^Poaka2`Ak!Eu2}eL*myK z5Qk^MB?1pwRhvBh0}7W|rgXY2x8*4gM~_K-_sWeMWBJnGiS7GnH|=f-`zqK}5;Tf0{ z&-Z@(tbV2bRTB&OrNPu;IQ_$j(c`KIau@M5OuX$4Nw2p};OSw_Oa)e_nB@U3WzA>+DY=mO^7J2EIQOwopr~Wy4MGo_ylm_~Re`HjF z#Ux+F(aFjAsrrQWcEf;_1F|w9fZ)#YFbk_WKjk8=Y<}e-Si-?@>O~Nj3f?S!Yoi@4 zqwa<@mRyid7{%B=J2IaQRrqD*bEZH@qK~Lhh*}s`zYaD7K7mcQIU(sPKdyK>=C`|n z94LBhKk@~hz1Bw@>-(|x$pC;Qm<$IMS9N~9-k0=(^Cktt7q$gHne?9Y;NNf(t$8fj z*=N`&iMUio+pbPtScsk zaFK$Rtxch4<`AZRNe!L_c|3`V&5~0#O4%dBFA!$CQkB^5cdo9{&?_OWcXx_^lwGPr zyV1nNQEvn_^1%u_S@3SaDu`NLkZ)>q)xl17*0;uQ1&qPY&BZ(P`YJrqPjl|qw-wc0 zV4(i3s&K0{{Mwe*3^kb`1hvl0PiXgfyTOX1H?q54m5jt!@9zK{Wh!P#?~6*Yj7QQS zhBLfc)YZ)y7DB+RniLq@OxvMIuPcR4@Q7ud!F8`ucKPl3&ijw{ywH^G@ZqvoCZuLS zpONxzB!gJ=R1@q!j_9SQxxGxrmovY^js{)IpDy6}e~B$5Jo;FLy;Bw{;`%7uHypw2 zya3q7pPf#;HH|43w`t5J>>lIpYhUgNK%1{q`GU7Pt*U;UJ05WS7eqRJHpWpKQ~c~Q zRr-g>Uq3UqBalRnI3zMyHlbny^m=J^7{#fJhAX_Q1tR~nsR!~lDAd7f*(CzKKs#u$ zr$F(sLkbw=QbGeq%8=9bQ6*PDW$rZ1;&jjRe1!2+oYbfg=72up&m@+wles3Z# z5Tc_C zlg)!X|97$-l$|>$houXb2WP` z^K*SNBP^~B>^SkCFU|OR?0$u)G{x9vFKq@u8W{-NxVa4_eD^ZI*D6)t9l+kBzuxX- zSUmIh#{Lfv1fx2=51vi(ERo+OtR=WYf>Wcq_v!^C%kgf@;wIRbw3~uuI41t}*$anc zc>a8#lX*D@&Afc+vXa;0Ug_9 zJ9t76t-}p4kd`E1X@x!39CL97&54BIk7p`z)}UP8)yy4;GALmhvHk&qnunmbBS4q? z5X4IUfeg5TrmZw{drIvD)@U=L!8TYNST^(Ftv9#X|Enz*Sv%bnn(8WzRcG zQIqzd`hr~p0-$&OENy9IyceH@d5rAo+Odk*!``!;^sw>aXgqy|o6l6WU&#i=EFs-l zp|JRU_`@Mlci$wbBM7i5^nK9u5OU)AZN$CYK%M(hQD5{-Xli|oeMu%aID5d?r!zJalXmbrH$t3g#kxQAi0-|@j>MmOCE z8!{~2h(B_>dB>4yXM4mGO!)DLc`GzuuU4sgG{xq*QWO1ZJx0-lmf+C7dKBFuxyY%Q z*{$RpItOKQx`gk0KVXr9Fg!B^)-_4(24Z%i>G}f!Y+ljU&CT#RB1H{uCMyKOW+eDt%lqdMpLs@xultU@a{kA1|bm@3|hU+1DR$(B7~9MYELBzPn(HdRZnq%KtnTV`GWPc`?g{R%Hbq2T#F&1o zW-fKD^fpO)C8D*-i+<%*bpHc!bE%iz3$a9YD#Yg>urFb8mmnca4RSMioj}Un&Dn?` zFY>P4pe*ODZbWoXaSlji27iCkOnRcF&_!<${u#GbR1d``fO6*=QG!p>Ymn%@U}6SqjGBX%}44+To9C zsCKM7)QD)|wpn3ngWgas1R&zO23KO~Jclsu;`(82Y|Dz)Ik#GZB{_496I4h(V4;86 z@3h?G=jb;ajE%wL8{hx`Bdfb+FXy_|ES$U=YTiM zcY^2f1v0A_n@srfGs8BlFayQ`O~Z^x-P>wx(;6|L!R8USSXms2=QJTmxN^^1p<1#f zjH!m~bC)w$bodl3dm@tg*d|EsifX$jJ@D&8DI|s&NnAeroO&qVp|nZWRpm#+6XIHg zZ7-rXrqKmsLn_n}(qDD4{3(rVf|3hFB)-uH`w)ewe)GME;G)WQ=fLggEBwHd|BJad z4~M${--bz2l4&88tt*wJlC3N;mJnjH%aTg6h3p|dR48feL>RJ+UCO?VQrV4t$TCF6 z82ij%#>`yL+x7iE_x*f-_i^9Hecbmy&mY&(HDwr|<@I^J&hvboCs150qX#jJW2EKB z{l>p;eIp3Q+)gLJyGOi77ZI)~rDv0@o`Y_7A7JTgfi)B?!R8nqVfUSwkMo|x9JBe- zAUh{iGnn_lgx*WlhtHyg&;yry2nsxLa^ zm679+wF?&$O&0x)4XQwt2(X*$dwvd`AmbQ+SDRO*sbR?Q+BkhDCg^~qJku2-tLCpY z#U!uKd52R7Xf%yb>TM{X^TqJqMjfR*LTsGxE=P@r$9kCsSc?Jb#$vtRo-3HJW%|*W zOMAFHaQs(JO|0fu)_edk1}!7klc$giO%r9>-!;7a#7FzuFMt(Zc_o6T9nZOK#v*fHQX2M|lo>NzjFCd+AotJ*`?$4ONPx$`}0x zi8O(S(cbv+st1?fl{Fn)Z)@W}td7Fv3w-#l#raN|Y8ZXc{vgB)zMhzS~_)&lZQ&^fXL@2~eU90~%94D5znRk8EZtZ)s zCABQ*FJ}TMge|a3f&Gt81uy|=c_1g+{$z3VosQ?(B)~u|(gfZwg|@ZX0i34Xj4$E5 zzQ(>76<1%*x|dd;#rALYsG4fNYwzSISq;9Bjjs@7QyNKsORxA~u^@Yp1)f$k-MI}$ z)W#JrE&B_2wN3v8H67aToUtbb90UD_te=N@`VBNDpS>NghcX49;{A_LcVxrbK9vPr$*pz$Vu!OM#>%IqzsT7T zoiRMMi{wwJpvqBHuaau+RzV%GNC#NYQrAOt!3&a4I$iUxSf38joT^zS%<-mGW8Ieu zRnt({1W-0GGAJC#i+!KRaR66Zc%+~A4!thS)uaq=v+O@+;VWPe?*3Lgzz=LI+PVF0 zd+i+OI;FDmdGCNm0LT`p{k{_+*e*L#bL8~`r~PHt_uKjc*^!lYg9Srw1AntYQ=Y$2 zkvXxCZlYgia$!_l&Qex{N{Nn4AAoErsA#s{@~&4^xfTQbLh0rjn{Ga2Xk?O?!)Pu2 zlHCy=a&JEtL;+B89hE{be}Mgup$NHk-!A9gx?_Qj|MZo7tHvfdd@+YNseUxwb z|A1huv9s~HYJWg-7Ga1^jt0@{UcE`>+jjKTIx^x7L)h0|He_yA{3B@Yxp0(xFHWxTX2@yQNKWGH`k9xNm;l}xO zk4acfMf!eR+$V8t{--nuNTAJU{&fGSTDT4U_IvXe_v|^fIVzFDLjBGKD@Hu_5>`ue zyPHkc+g-{$_0#tWWeTexT>Qog$g*|3hP|@=?ql1zs#dqXpDPwr1c@x@RBh+H!D=Dx z!z}YsEA*6meI9c{bP70K(0<&`>+3YRk$G!Rjk|0wKnfX)<{-ior~6|{PF1+6jNYL9Sk6=NfCV>Iq3U z_Q;%dxE>(d>s8;b>$Ex!$&C)@JZ3+jc1%GfLXok}*v|JJ3R(=@T54M>r8Ggy*N=Zk zqu32PTG;EB6lZZYm_tIcj>`h!PnvtU+8azSe4AzCp%mS7JY-nEr5rk!F7z<9$CCo| z-J-j4ZZ<77o~MS=t7`m@?j2YquBzew&}_=1v^Y7yytt*A#S|sgsp!RT=D$e+ zigJMhP;VEGk`}u7-g2`gDTT-Zt+`eZyn!kjck9Y4agf$fbFh4OuvIRbQM2{`E1`Vm zb_z4N9r@y>dqmoVs~5KhH(SKLVSPG-8+bAuHo5R`)gDX_@xaF+a5v$AJ!Wtnn7--I z+4&7nkJ+_QkM|h=f2ip?!Oi??=r22v)-d3gh4>!_+-3Ya8aJ_(Yfc;?=dWZZ zzC))&acal@K?BSam?ptc9-H@;W&*{9ZLTVGuOo+$DUfZYh6krmCup*>+<@!+Y!3uw zc$&P!$mEi@is(d$n`;T@5CiHm7lIlMu9Va+d0ofINwHS9`v>NyP*SyP9;ZTYv=07( zclW(e1~tTF4s*1F6+8L##1^1OPJ4*Z!v9q_nuWBh1@$*@ly-0%G+EAjb? z#iD=O?UgTWkq^k?+A97~oK8Vr1ryxwU(dQFlQh4`T<~&J?_z6PX(gf7imXL~{Yzu; z#|N|DAy!Pvcn?1c^2rm=?g1N6m#%83?=_+rvG|kl-rR-3f8IsOhTFB9G_0`5FN$#V zmGeJtB-t=I1%k(7r}ruGHfIj!Dy1NxM!^+SD{UlV#5P=*tIzo4qoYd4ZtJ77*8k!V zLj4S_kaO4Vh0CVxU9vKNEEYBrCg}nC$gh3D7bFhe+MB;;;KUud$^NT5_zW*aU`+B?<}$RBZ-kBo5tiCUQ0;>8zB6=|1*y5HM#gbnr?-Ea8C)M}xK#(wPj zWV>}@nda!d;HG7Uen!w?=6MT zQs3t;R~Uuw8=cV+Z(P^I4yANgzN_U}lsI&kf+>6`izhJ(vpzSK4pPsXB=nhC+7wz3 zeb(VxaJd=Z{NuJ;h>DYNlM?cAuOfX|NUg#16qPu8Ia)?_Z2}VYPF)L{OCqq zj(CQ1X=~7PtX0z2XHN3#u<-x@ zEx>HJ-havGV@-S)sITbtSaHv~&Vd;ypJt&dz(n#fqbnx!`9f?k3L_Tbc3LwQ1 zO&riU0$oEdNx*C4h=Q-ik<4MEC`cArR3EHl^Xi*rMVklFDoELyfjppT?Ofy0Ua}_S zSF)%{uXqK{k-3<){SdMdcQywQv9Lw_8hkqLgFRLhc`+cEBLVxzV|(xUZbEd3nX?yC zx`uI`0qc&^S5;`k?5jeU(Os;qd^ZMJ>>Ab@yieg$B&#krUaQ0r%t&*xta#NWL$>Ad zacT)r*if_Q%_GVOR~S4apKi=N`JIh4}fnHdKmK_lKE zVN>Qs)c_IX&^up=zt6$`LKTCho926(q6gOiSTr$xLvw}{#OywNY$d|H$qL;2uIkS6m)P6K4dThF0Ygg;I!XJ9aebS;t~b5RVyHu8 zH@zvXxG-}?Dt&}9JU0JOz(Y3G)&Gk2)GMF^oD7LfHDQct{2r@2?L7{fE0m3i;@Qk{ zfQOwa(0KLeKDf1r6q(fp_q%$B3+Di}#%egJtBP79ls_~14tH?kU}F=j+bo$IB+CZJ z6f#c!&K6T+-+MG?RmeVuJQ`@~BNNZUm^7@j8|V!fvUgrnCck9Kt&VGE28w3d@%da% zsW}uwbD_}!y(Xmx*Ow{TcoQ)~L+QDf(rp?+LQo7z`=`lZT`%^r=8@=G#p&JA@)mq? zPV(~y>rVY?;_`3w?fXaBMb?3VZH>VwNpY_Ut(Xzv3Pw)@;U z5jhPE{jd{4U|HweOBua?4Mm`nIs@3g)9&a+D1*%$B*Sgypu6(`@Er9|zo8w7*}=>J z?X>1776^d(z%uTMCLP+U8d!<7%(c9;r;i=DKC+hr)oKG5@P)H_0nEv=cK=gX+dp|o zzIJ4e?-d_APg79}b(;@^rJM#!$n5_#G9rnY-xfM4ppfnU#c|uv3!j(v!nR^&7)8pE zt>qy=Wd76P?7a*+y{S-)1ufb=l6VW~l^t9jaqazRh80XmGLFE(?}s(-!I(vqstucKxUgOpjEO0W(hF#AMJAZD!ZQ%L&D%$FOR@XmbeUG!>;vsC<^Gm_`!$@V!Y5}?9x ztCs63`ucU&uh?qOmO<)xB(%H9L?80MW_|;PXoZ)$2{&u-WiR(w?l%hUFy>^t7Ah8d zR6#gqBa2tx(&N(HoDgbWv4<^SrJ`tDqjWQs-=x}FXdRCXO!sEq;>yH7YgMcIE4MEC z!Kd%Hlza%8(oE>;!TRel&#(I{L4Fb#NyJTrvNDxWi~FPM{UD`Fwd;98^VMRk`^;$t%i!G9U==Vt^)WQEJ?H+40zL2fGM9kP6h;E{Pia+ zQ#*PslpyteE)0t%-A-XSL;+alpBwCA`!ceLnEml>UB_0QS1I%PYr*VncNn^`-DMIe zdkKglD)b&|Vf1pZG9Q5FX%&24yn&+FRc6VQW?pOv-`c3Sb46nRql^LpL>g0n^Z9iK z7sHt%#lX+|j$GdI0$dH%_~;m8$zRE0iUIvho6tuWGh%G|kkS;<&OCQV6Z#HTz54m` z$t8Fjg9*fy<&86iU#Qo9+gIA7`Nn!!kDF4#f{Le(2MIv(+DIfX9*Ekf}h8~ zBolJ<81?a{X}j8rf0w-ft3Up$Qq>}nsyh61GPv!ySUGhlzfHa`=8A`%Mnha?lMXdI zB)1h@mZ!gss$lZ;Csy(rsBrLTo6hm?ahM63H&%C2o1L`u)~~}cL!{Q>arh{Ua?jto z+PdAP+w(f0v7WgX9E|TSScy@}NW1iOawjCXxU+0^E8{{(U5b}9fsT`ZcLrc#peAkH z==ve>arCg|3r{>Fq%swEDCRjcO>UctIX2dIaaB{kSw=?YZX2mh0j}3;kn_yLe&;?j zQcj`LZjbZD0)DL$TWy7LQ5s>bq;72NP~%ce^>gpMUoQ2w^L~VOcWCmqH!u@{A?|v4 zg!~v~xnZ8zMWlhd^ljDQM|W&Ki3JEdr1Vi)wTrHq)`>Bpm59i~8Rg=L!4A7B85;U5 z!C5&t7;y)tNS}dQJNaCREOYY1?YY&8`71!27*oJ#ut1sr%8>TgDY4Svte$@m3xfzf z-ldf5VI8i=+$OT<$R==oiLI56yvC3Q>;5Q>%Ss{<-Ov%NORshLd%7K+$Z|}z`$a1o z(@@`}n|n~N2+}CBGlOgo^*kwO(t-W@2T2fB2Bo5pr$;}vKQRjgUPaYbOCEx5!SM2H z#=}0AuP%-2aKH&D@~@Xb30Vp+i%fFae8$UnpPfibQ!ip*e{D*y?*CvYb(b2YFfRrqU%250l)e~b3kKL`@37CDHp zMY#8!xwxpernaa8rw^?JncCMRl?AEB9_u#9soA!W17h76?Tq2LmCWM`$kXZs(az7{ z*NR)3q5BTf9X}E6kG?qp!NG_&7E?TXj1tfnnzXpxGyk`}# zqI`eZV()5&(Io7SDb7J|M>rPjHFffU(WC#fytDsEYZ99{e0JMYGx&{>ALDJm!cP^6 zGF1D zMRC&yJ*)n)Kj9t_{A3^L0X9YZx0}I=Wg({Lt@TNmnRw>V=8!||tLQ<3ZCg8oHS@eW z4=Xa$xdU%t9XL~X2l4#WuVYrQq~*ujHb?@sc%H)8Gq7=}eZI2l)^Cns$rbySH9}-gNWWco0+WV1fpgNntjH;_{#4 zcPTzG;h>NU24Jl-?fF9BCPQx}S7>0~yn0%*DpC`MivY5Sy-dNW_T;V3@h%{EDb;z(HlRNJ#7Z{SdOxTKubT(BTaaLK}rgH z)E;THRA?bCtGNI|)Og>^=$L_*T3j9})HQ3z3*1<7b}16$1=MX+^oJdRUZP4fW7NX z_I4}{lsYVbt{k2Md$a@H)4sHMpKyR4G+z$Lwg(%HZ^BbY`z(J1O+_rRoxsEjF@70E*MyNkk+my`qxu;kb$@Ku7Q9VS}CJZxDXe!^a2Iq8jIXc7Yn9FX0$8QRXM1S7t^;7@$TQGUmp`V)cso2|s@YFfj_jRd2?8*d|w(L$MA+hoJ# zz>hh6$UsYO(S|q@5}f4D#6g(2^YSej)uZ5NUTR)4?UHx>p7}`g4>;_AT|(+%M!SELG%x}isQ~G&GF_C zt<+Sl0uzp2^#d~@5V7%BX?b7aQe-UDP#?k8#bBB2axAsGuWM|;r0ML-gvqkh{ zxGXh8lBd~Y1%MQ=EN!`uP}l%sAbT@}(lxkEw3a@g(Ps1!u^ z?dE5_%AP2qIyY07OPvDJIe0>LcQ4ub+4$Jm7emmrK2GP5t^YF8sV!+<-7I?@$MTcV z|CRPXOmw?bmzWP+kDXOamNb$5r-$47zarYsM(;a&>NaqD=Bj5a3FgX^i~{RTo%~w= zf~SF>wDLHPW(-=z7H7rz1a^skH$&_PgJ%sW6izy(+aCNl0L+=uk_uD*vs*fhnaWqi zn z-pcdKk(^WRcH~v70yn1Lp3-i&Qwf;UgiswJ5zzB=lp0rHFZaSt(_8f2ZxCY2p^&-3 zBlCeP)n~N#K8l7=T}WWReJiu&!RWI}wbppm`++Dh?hn%fXL0leIB?`4w6Met)JJ4n z`4$m~)R4@aXlf3Ca*DaAboZb~E_c-@c){_w!Aq^Yc0{I3Hr*_=d8tf)qSn!<>sSmKj}KE5Ek+$YTR-F@sbBc`?CTu&pg%fK zWkCs|{0>#gkl}MIyTA@e7*5?crVeco8T@n=zwL+8%+)Sn1(n&L>Z04GPFug*O(=Vw zx1P>9C=TpY!HoozxmaH&=%C_ySaxf$ZeeKO#+*MHkJ>(hZjg^Cp1VJJbw}CpGgv6Q zGM@oPTyMgv$kj24zuCYfAeDxk!S%DAY`1-1-Pu%ZnbN_L^r?;xs;EJ-#6rpSa$v}i zjFJ5;8WCCI?7jyE^a+2d2ZPg!#H+_v4REwiG(s&g=z$jwu5c14L6Pu6kL`1!(U&Qu zSAOn`uDI4&M~F#2LN}8FUQfeQ7~F42vp%FyB-`clX^v-;(Q`l^LPU4~phfXs8hEw| z%z7jekdWSYLi!3Laub9UHZU-Ee(ZC(z9J0IFm1xjBx7~Ch`)Jk}Jset5ihJ;{gY$1->;LeN5u(8n z6|gUrq^%CVo%DMz2^ac-r6qOoNw{9^bNyix>Kg zT{_hFi4$&!u!f~548vbR<#F5izu7o1ft%BqEK2Tx5=?b}Es?+~eIXSDsVT6AMbm^EAHB7Y(SRp; zmx9Oa{5pgpdcPR9S%sT0NWMkZX-)yG9G-Yte;X8eaO$JpvVW}&VXlHR;!g*t#*~~f z@SA_U!s9&HA24QGsImg|1$OGjV`jB%kdm%E5I>2zcyxD<9NW6YHY+rU18qaOShhZb zWQ!0V&asU@+z2q~D?@LCL@WwU^Adz*k-&t?RV}-J(k(V zXmG&RYzzydM+nL|_$c6K8D4gJO=sp7On80&gyH^Gdepvv=bPhmDmvW(AObMmU#akl zt6;r+a+|R!bET1vOd1wIXOkYxR4ggUNE~bvJ3(TC({0Q9D|221hDgF%_Wwnjo&Chp zs3X)ZXn&{&+x*-1_(oZ`oq}5;sP++C_zc$SmE1U}8X-ERmKsm5?k6%YdJtJUg@(Lc zbbn<*r*GjZJr7JEQdRHbQ@^nlC*GX(lAw&Cq*V8-2Tm?Xo(Vu)A_7VUWIJlWWXf3)q_^(KpXQ&EM{o#-XWYwNHFo3tcYIy(x_5 zBx|~_lrbcU2Luhtco6g3DkG_s89bXLy_%Lss&KKuv^VToQ{Q4eEH&&nI^#DMtYklc zs-!TqI!N0`=e7zHSE8aX;q(vOJ(7BwcUCs z_EdTho#$roFJIt5o8j?E^6`d%D`o&qViuPm?mC^9ce*4rX$aG^yIawqDn= zWN=j~PT{jJycItkQq|x`la03qkFwWY>7lB%B@U9*t0t%mGFKz?X(jMopP}NJoS;E#{*w~dZ8Qw&6w9*GaCHUr|CW>bObP=E(_LA z>=p3Ydz15G5M-LU@x-4(gl+v{mDJOKZs?5bCI-kPR;#V4pN}DV1*78LdFRhv$Kc9E zhHP9iixG<>6wsW52%f~fM~3L4BX7ZtHs`jK5cOHxC;0(POr-(~x^mS-3KJ+EJ4gDy zHGkF?2PR(_6_v%a-t~dYtb1s&Lg$6K7w8kf?Q)!W_rT!5h}CikW`vOLs&tB{K3^%5 zK|y;b`-p1MLYm-Z=u|sm?r}jw@2>=KQw;aONkj962!lodXJDp<%$8FP#v2?#u3iSO zKcWjw0W~kRx3f#|e)4{)Du|&j}R@tEdwhMG18T+`9yGRuhb8eIGLXJ!hLZU<5$Sh->?L@z1T#tSVMB zGv?B;&%V>K(j8O+c(UV)jQ#6=Tv#ayn99jM^4H#DxO~qRmYv?D9*L~zVxnlhEN}1D zJcR}w=Lj+gY9TA;9i%KgtjdZJy_e4NJ(>jSPkYZ`fAa6>a6xZNET;X(;Bbb2WNz}o zg7?y3{~t{if>5QVeyr+qgP-dtZQzLwQ5J}ZbrpRES1O%W?tac zjHm|~GXPMfpjL)6x==3xJYKQjct$8H*KR9Juc&}bFrGhpTX+LZ**ss4I|7_(1$5oZ zd?3mFGg0CIUdi1JVD0U^3_H3f7s|{T$^7XxXse?=?Y|1F_;KA|Q;f|XATu!7(&GX; zgaT$4N&OlK;T7Yd0?0!cQ=WSN8v9C+e`(WY_nb2dDnw~zU;d}J+Dfn9s?FIGCskt) z>3>by7gSCuj+noUGI}n}E;S=ouz_W%*dC+^K3n&oV7+5D=3B9MM6n^^&P#>%({q7Qj(jzjeX>IT zH|H~Rs2RV4yLtO>HrkooroycMQ6%})IM8IUw1qoPJ7W)XAK3lNg;4?Zmiqo5d|Av# zZe-Rv*7(09{-o}93w-RC>;e-2++|1I${v98)GldBa$=N}M*oBT zpUx6l9RghAf1~RDgIfD%ko)()NvMSC{cyjk()_VrY_Jb_58p`B>L36F(5j&~{&21| zrOoP1*cqy*kr@I_?Ylh~7BPh(q%G>-2Nl=>-z}hcV^2s1J1ENo1%zY*d+9_@GUq4H z31r(KoN&WaEk<%Aq5CpE^l9){l95X2%-mb&HUx-S(o{*9Df!{v2UU<_ej~_8XZOq4 zQp(mLx05TTzNDd%^>O+qfuc}XFEnsO-v22WHs`cQk#AZ^L{?2m^bH-g1tasZum8>V z!~3oC8*mT2`k{&4JU2;UBw6rKavGG6q-IAd_B5haP=E9p7!!RaehqLzuEW?pL+tbX^ZS=EVQjE3TKQ2h6^%|Ly%QQ@4~O~%!>T0W2ifr z&KGoe>M&7Yk8*6_^A0?-oJ`W8vTo{obS|)>G1F;Ei{p1KufH#Tol;AxhKF2C!P;ZX zfgPI-3weX{w|srX{_e2PMM_8v%J3zAjSpRe@(_!+8<}#f6nmH56bQYupZ7vQ7_a;4 zqNTE#Xh>^2D(H?GScRe=f}7JX0O(_bRg2;b#9qn zR!yV_;^|CnYdAIBdjYrGGgD-_K*9-{Gi<@Vc+Xdk|# zOYe_z9_MG?oKSHd3un9sKjdyWBlVbK2O;X-i@~y`2N@Q{_8TAyTN!*l7ptl&&c@fr zQn^5aN;YI6i8$k17abSL)YLB4dIvaO0gq-6myScY-V$SExJ?1hwyJ$Ae*lFf%n@+ zQE3&hIS#c((quF0gesOn734dbP}Km%B`?VW-|Yt&Q%$iw3fb=ROv}2*Ivl@Hc8zvx zhWSGvVLS~%--*Cz)(yOW1cSis!wt6E9}IzJ4fY9ZH!a#{Vykky=t&dQPI;|Ln1+{f z36jW{evTW+C{pX~nF==p+%GBy-w9oCJiDs}jfjJS?So)HqE*=c6wkp_b!KzSd ztnMXm64M!s!$&l|hM+|}6KrEj_<$5(x68P8hBv5o$ye>TCkc%%aP5+!C%qWbdIjS> zL+7=ymj#=rnD=Van=R*+d5T8d10dtUn$Bk)uFhOG*=I0RQKO(%dUPp-@C%` zBi^9Hvy)Ne~G4TqvMq5De z<XZAd3ob#!Ore(`*ks-x}N6D5(HZaM4$~u`S(#Tn2b&imS}`eKRPl_ zBil;%ZGNIu#ZYUqiD@dYJB4`Gapiiqw-$`IOeiV|T7z|lT-&=3L7gPpML5e*g z#$^sn8o1Q*hn?EeLm^esE3Mt1m`OB8S zr0mZ0-S$;vTs+j0A86L<1-$sP-ZEWXzm&ntX#yW_z_M7T-k6?KzIHNC59EN$*lw*w zuNX;Nwo;$O=%;CVO#o-HVyJw+|!_~*hk#P-TaqQvQt!aiVsEI zIso49eQ79O%AO)$3cNje3!F=5G40==a@t#4eS2vgt5gat=@0-0{uB|ePuQGNz5Tqr z-9Bc>929pu(uQ#TktI=rJV=;iT&-H&=05z$s6cKRGky2Sn&Pr8mvYl+vt1K=Ik?WJ zc^-+O4F18zFe}X+XC$iW(BXoJ$B*As~VVA=L zr=L^^OWHu0uz;;TVbg9TPy1DDaC4=N3d)Wwq0fFgY$Wz#V9uF&;YLwJ;1vL|I`BJS zsG~nK*<w+bM=6jMVN%$Ne_f#tN>F4 zJmVdgHh~My(C?}ft$)ql@T5iA5Ko%s5peW6f>K`E%m)ue1xAmm?^gQ8$F#BK?JwO_ z*XOJ4fcLO-$&*a?&T-!fp1L(HwY=|lYpCoZ!U|(YYX4n`pi>pMPPB`@6ZoQ-AvyKu zK>pzu2!+*_e5CWhay=MVOL+q~DV@0&Xt#boBjHC1WqV7tw>+TKwtHi3s`^wC1M{so zt?k{tBvkpdC+^oxgCvy$su(m)&N~NbYF6%Mc+9+yFZlx3Y5I;?VP1BZ()BT@<;I}p z+EUcrPy(0G_2)Z*eYw%%>R|9*^xRmGtvDgf6l5@!hN0aNJN--ES=-9BrSAn|FQof+ zyp7JIJV@CoUzB!4c^Y}*?G+RkAiK_-j3xd2k|2S|%Zy64=)?P<)y#CJ1Q|}EC{9YQ zG;fSFBI3JhRGi6QB7B&$-{qgZmCFk2x=xB3In>m?8I&ph`?Z;EFBe-(TY}kwlp~QT z+f@$pAP>BBG8t^2monvq+pv7|6m7%xu35W#d&3f0Nu^uTn*s}W#1@<&dhFwSBtda7`yW=_#jHz2+wy3$Jw{y6f0wVc;qJ92vQhXaw%mJKuj4o3&l z*ULX=0q3V`E`p^GCA=I+yZz=H9+2nNz$ox8BYFupWqB9Jfu4s0S5+Wc-0wI1!OG@k zkB#r8#t<=i(2K|y2al_M-oBSzez~nYfhp;^o6Qsnw_+XAuI{(eZIjko9<~^X5Jk@c zRhi__EZLqj;%VJU5j=rPDT>+|>oF-eaND5NP-#q5);$U2vGf-@7+jonK~4mEb}{g% zOzmFZk4C!AqqCqiy{EVDW{8|%!bKOH_FM$2HI5-Bf}F)Yz+5FS>mX8r1Iu0hGcUk4 zR|)8dF_UGlLBZM3(hV|E|6lp2-U&ewrjRl8C14nL92lyC{`tT2SiqO%f9}3=^v6~q zC`0E!aS0TZnv(O`!Ki_)m$GoZe zY?4ckoV2WK5%&CY65vxoM!pj;?CObaZ|me03uLEp13CJ7bD$KuJn%|r>ly}3Ohq~$ z4m^wV-bfcwXRXp0?N?q9mIS`GJG}h1*&&k{t99aH(DNL|MImaR(&*+L?P2g3Ho+?UaM=55ws9p5Zx)0z%Z3-?s9p}!XOfO%19X_>$bQS-72{p*B%1t^-K^LZVr zO;r?#kp1o!Akm-4tQS_G4X>)sy`;!tx){;vO3irOM96)T2k@#m81^@tK`ukpo^CAk zus=g=UybJyl*DPx;tF1Qc0DHHh#oWw%?;T&hd=@A7EvuSpRmfKL(Ld?_ab_bzWCS) z%?Zo4Bk3+RLEX#9F8V0dP5z5OKA@d126r~2WZe(=wWB8?5v}8t^X3&hUjf6kF~W2F zn%X1La|n|$dtrF{?=*0#v1L_#tT)Xt*9h0Q@((>XAUGP_s8k6sIhIA9UG)I$lj=}) zz3!RYLTk#vo7B+%Ah@P+3(ne#*e6Ebii2)P(;jJG)3|ddG7t7Z8I38Vkrz~Fd^R&`J$b*N83s148`iQe)XVr#&|9_1ar~! z=xcVYGQ*}T!4T_N2IEHSw&Uz5xu;M^zK-HU18uAaeFi|ERf1fVf|fW=3V)dpUI3K{O$B+rj3LcDpg|Tdi-|UM5TvdX0%@nW?Qq4hO@T7QRMzmzKEZP z?*!3z+Rv`*aPfjl36ezj)K8J9tkk6IZ_fLDi-%NM+nZS_%3#&|b)4(5TP=sZ;6F1; zn^VM5_v$lL!YAV0dIQ>kE|bnOJp>wu5hh%=usRX=t^SVl2e3YAUCGru(PWjyci{6M zwhJc}vbYjkNNN-a?60WaO9ZUS3ntY4aXL9yxt!EjEOCNyNO;c{B_C}hcQeH4Lg_F--*E+rjXhTxg6c5?X_Is) z6;u#Je`czC3mVLRvhlW1X-61EuA54h|H~5z+7D8HIdww@!lm}zRb&%2+TP01Jh0*u zs~fARxVux1BHTuG(T7H>pJz60lU7YGhd*{x!(ShQ;!N1&hLO@Jy%E6=#do25c?;Hm zM5xUKGl{b$)|&e0?&aJL9V=~;mtKPJ=YOOR|5Lo`e*@A2U$U=8&*{xFGk~W^27J3c z#}}P|oAQ;Ic`b<(Vs-p?CIe)n{+R*0{+R)Vx~x?(Ve|TEELr+*wrD0)>TvOmN}J(z zhorOGqbt&kB3p!Pb@~&W$vTR~?IEK%WBqP9x+ugB4o?2BFNGG`HRr3Ua)!HJ zi?@4|AR{SLN!ZH+6k*>{DKz=F;h;AiDp+8`BrAD7onKKXaWqKlbP?CgZ*Pb&l#ULm z>M(u@z0qrGUd6K5$1e3V(_c)?AmQBa@6<5(Y+NP83kknoN_J1x!3lJh{G_h6A$}xR zmvtUW9-H>0o-AchWKD)DHcy`PXUER84KXDZ$GhkoatMS}OSww)hXb?d8!=e0^?%%^ z`l6Ic7%nd7HZO>6?z6Z=XK|UHb1xxZez??jd?1ibX%pZj#4Nu=HrK&WHmKG#WKfznni(Jz z%t+lEgd*yQThm!h2M~ageC*(rC88saQz_VlhCxcnmxOw?iBE*IOf#~|si(G>^0?^! zqZ7QcERm{Q)qCh{?NjAq9|uqGEn9kuN1ds3tcnaTB^53zU9PXQeR=i>qX-rlZKD5& z84_9Plw6v)*E_7u9S_tGn79RvYk}5XSYVuoJ!G9^$-Jt7ttgplI!Ww*SIYEJF&~-W z6P0>E1hd1T%)Aq}Qj5P>4uf2`VZEOU0GSz?ZHS^~U#(Fz=AyBDfBtcP4%+Ts`qMfu zh0!CRa^MQR>b^w1-FdgyoE{>dp3%sNGO2z`rwQZ;%ScMSuI(fR2MWyIj&UEhdEI}- zaRbQM4J$HVqC=eiXl?kgFlU}dO2$|zT2PrG+MmK6%abfS$4?cE#XtN!_a-YRn{HyH zyI|_S6XAYmYLw}1>MLQL|7yLSj3pOEyQ>E4djiMWW<*PEC-@{9En+D5=3%3EZ;dN1 zJyCYdMD-Sw`Ptm#lsuUJOwKY-5}Eh-u6VMFfpP#BwT5wcgFIFJE`CvT1iz*U-hX2l z}<$4 zLy=*Gt#zjnP!6q*+4fpiZ^l5oF@WU4{8 zDs#5Z{kqduadg?{PJ4rZQ>oNkxF6;Gk@fV=9@mq0hPfMoEcQP;BZ~qSwLx&Z7R{5( z)+V7D0A7hQ(r#v69Y=Ht>n>6@rv_<`Pph++GSn)EFAIsD^PYDhPQvUXifT zM$#KO>k%7x-(Hc#g03VkXO%^$l(EtS!Q=~K$K(&@o4fu$%)NO$l<(g+Oe*cuqEwct zuS$_*%Q_|riHs#=YbuE-vS-8;MY8V^Gf51INntE8BwLn|!6dY=2Q=Rc%*ozC+-j^p!rf8LAlC7mYV!Xh(DeqBGyfkVVr-Ye4Pp^x8e ztNyxBimZ>>_~jiYTfCBS{o?+-GhP^B>8v*@#in*t-WU%m;poOSR6ct>?nq#Lyi0r= zh@>r5g!}HZtQ8^?avV?I(~TzfWK6ULUN0Vpe2Ol=8(f(tv#=IXJ=-6wn+GbYpG^(C zzb1}Y8j1B-{Af4O&s;R_t0A^$mrWjsP9%9#e2?Y8{q5nwuM4GQJ-Wv;0*H>! ztD|p_ZgYYHE!TBpaODJ*fzSmN8hsdP(iA0 z%=MKsJ6|M;#~6+w$IOayB`M}-R;HxIGB&}`%vekp?B=)$F5OR7VpD5qF=`ZSH7Yz3|Jd?N z5T-DVy5ytxLQJQ9`~KfoOo#Bv=3kVO5&_rYqmU-So z-+lUsQlsEZEATz+%yv`CED6eABwj6dE3gsSPp+g(EjN)yGcZe5CpiK5eEc5qe%s$d z886@QMX&%D>^Kc}c(WDkWKifLaB6fjdR=ozRT0*W#Q{+$$SBn6{kYy#ceJ>=v`prg zlz3o9Aas+}RW_Up@&(^}T@NASS=jQm$WzW2ugq?vYbV))rsmb7FHjBB;GlRWme~CL zYIwH5dxd{T&XE6eV#wZ|x^UD%d!bVUiR#S%*TfKLjOG7Bw72WOiuP2gouV_1 z|L1t}Ut$=+o%|U`;9z>(sinhJ`qS=ZFpoe%)pySS`xgR|XfilrX>WyE*Z4^8il89i z<6XqsVe1auW{GUYf%t&EeL;GH1pFXqTrR-PE&^jKY~AkgZc|`u1vc$}{noyy3#{Bj zv#O6+@7m5b{ObY*|F;Py`0l@@f+YR;jwiqi12c$(wkd}l%_d{%p5a(VCn&??WisNe zvL)+0I;jx`NloHQeC)SKIUmryA6sBzJ?XYkp+wE1-R1*Lo%<+bc-Qea-F3K=e~^bR zNA)G085h6nKQ<%GT0JPbj~>rXBcA(y(|hj~p%bsp^~J;sr&}jHrl6N{xKXRI0=4;C z&RM6CE60KY*WSW%A6!`;v((xm#Od`)M0GZzunf|q8@`epJ8jXiK95oYsitR`Mpb+6 zofPkyuTNX!?R^iEi%~xUa8#q3(YB5QXn~Kck>t%Qov zX}(Jm2<^{s*1}L%V*%K=w+gDlC}ovU3zhqSlt?D$d)8JQ9Lenir>#$Muw)u2B90m%(3H*gVXdy6rHsb!{`K=rQ0E zMBb>|4c6E{XYFhncTGesU>A4quUMit_6nI)2r$b~=JG&yru zL0@~sLA9q?ZKZmQQH$xw7wnVZ~XPoNPQ_g zqQzXMbFSxWK55RdEE`Nck2u3rI(K7r7woF~YpfR}?io4U`ULCza_NGEC%1c`PXYmLh%gACkkS z34GEy|6n*DBgBQ`1v>udP%I4E&`7q|BaCF&vz6ZO!{^ldGrTh}7P=1GEW0!A`mzp^ zQI|bL@0wV8X0~#eS0QZNe8Y>e&7#MiEvyj6rQKGP-&GZ(zM8^wB;SDNNox}|8BTr6 z@ijX3Rl{#iAD}9e62|o2hjD<&Z|?`9$-03ma|TX5?y>i`w2k#L=;AEO3kSlX{gLvV z86;)Y2rUm9b-R|}ErvWB*Q%#Uj^e(PvD4(*3)4)}%x%h_zD2(lYCLVYP!bIQ7~*#< zv32scJ-hm;7eCd$nMTUKDPD~=MD4hS=!|-$Ezt=x&g~QwCe0T`{MC3Z8G#hdG>{$ zkDrzMsO~O$Z}h@=Xj>pVslf;AkFo4^9467y7yfbAU^rT-8b8>wBHB*4N0-R z&Bwgy{q4RfIa(hf?C~vnfp0rXLQTI}?S1uje>NhV%``wWJef+CBByIb<_6U9&Bc2M zGXV1dXhs23@9q2Vi4$62*pn{GVuvgJ)$)N;?2Y^@-!lQkTgA;Ukj>xE3Y_qSB-ro8 zDNIGDL|W{!%L?=wyi4e`XTe(s2bsKP(5lN3i^z|>H8J4F6Kmq7-M6xRHW*kTvy=BE zF7n6}`n74o$~Q1Ni}VuNmEV#>yex`Mdo7lMzj>eh*T_8jS(0S^D~H{_JZ*>F&eS2jlv>lCI{p)b}<3cVC%o$1bhdT z_r^bS5Ltz)M2{e}T0Iq}uXk|w2OiQn(Ou%#cmWM7R-Dx}5ghemaqG2vbXoTR z_ftv-hnsGCb7;y0*#$>eL-ZX(vBPFD1F$9)t!3+;%+6PpJXAfJEo<_&SMuN!1&1M1 zwG~Zr^V&yeD~Ar&K_@3N08VZanAh?Rw{)aai+4)}WZ)_`k3i%x`=z9eIrfhGCjp&g z{BiKRintMfd4tSoz)`G0$h#v+# zEl+US=fXPsjnKf(XaD^Kq8Rck#+%B6P8B~Svrlyfv9tr1)Xt}wecpBlX7 zRn7D>_b0t+UhWn#1ah?p^-_Mx5Fk9B$t&_gnQn(laD<156NTLq?joucO&eSkj${sk zq-b;4n_}xZ3<*yC96Z{)<(XMxLOnb}2$X&W05_PP2{Z_McwVn7B@sIYVXiC3nm?DI4X@2(PQI6R zM=02rVt~_5ft+0a{kTN|o?DFhJVv>z>_y4*Ik?W8z3<6DZf1PUbDYiLF&^LToHK)7 ztTgQYqQqPw{`cpk1zLB@bcNr^Y2I|Bkr7}mU5%`Anm8;Q>soZr&z!c%bGO?ToK%5l zIeJ{aA}pg#?h2P4=n}&^{8YUfdhL0;Zb~IMac-H6RUQ4QKU+S3N`?c+kNDWY^n_K+ zqF+qenmrXRy${{{#NWB?yb|Ne=O0CWV@1fFly6P# zUpko0Te9|x?zVjS2_cgh7@LB4At2dP;^gU7^!>x@8RVW)YwYn~2MFkT?yFR4kD%On zQGuAJp!jz%o_rI0X-+bv`GPp`NC#XsZ#blo5MEs~vEK*>nVDHQI?@q}S%H98MaB^W(=?>)8-jR)(@L0DUpYt`*%t6+!bLQtcSw?$j)xYPEB zeYi9@T@uVSwfREvN#`E+I|_Uq8~&ZDMFPQ zfan*Gwh7&~=e}{{f>64?F``_$QZo=rGko8V#{`%U>%Q&|c4-zO zBg2_l*A90ip#7ReF2}}7j;2_1yzf-N zD&fQXW0?b+ur2T(AIFkK`=RZPMt`~u{R(if2kXH}Hum9qu5+A#^pqjRs1fB%1sXEv zRFyb2hf2%Jt&w>auJ{x)hD+97^On|Q$`9NXr2V!QAp*7nEy-vf<4h15xX2pOg< zWMaqpz_I>*hCxX&zQ^fTACqrBeXjMOK$Q5tSnSdypm>ysKPvRm zVwh1|&elrmaDBM1rbGSY`|Psn2W=1DJB$bdnJyUN&&$VNb&|!`sr?q)EogTJY?YdW zr<=ywm79Hdalf8uv=JuUv6Mnzi{zN2ozrWFy{C2&pB4gqNSX(NY5n_{G8Uy9)n1;D z)y)sXM0W3|hmf#TXq5~qm*aTsz#OF2+vpWdQgnKeswG)Y7vcM<-zAcG3TVdl+ZVcq z^S)gQjV(Otqn`1b@AsGDxH*eFU`+5W&ocxAFD=U(4K2SoVi>#gX?w8Io^#Dv?%vD` zLj=%v3;ju%F041^NE+68KxF2h*A=V*zWU+=BN3}HDgM=63CK#sv{<3p3M~BO^>We< zHvi8GBH*Ce;Nj~tLB)$R^LJkje2k7!Vm=BGS}wvbtJ_s+fBi`qe(=1^}UxZv*$;rT$Ybe1E?s;J-;ZFW0&w z>80*vra}MGbRf^rA-GL&=c1Ile>K z&#BWp!RK6v)wxJ6{AJI|H5$0O`QMR);{re+mn2LO@hETPICq;l0iX5oe-K+r-n&+? zWW!+$5BBj1yqR9=#*6a$tpCbWvD@uX6=DnbodiN;MZ@}dF>1V%&qUCF~ z$Pdh%`pP}>YHXkd5O|*)Pm-C{oq+x0gAHt0f9=_!;h1~om(=#D<_Q7ESNG3-CxR@M zr^27|@)E2a8XJDsB)=r`ZMOETyp`wM>{GQBTv-wOKVb%724Ws4ko;=kR$!2xj{)H= zFj5MT702hgO~t$zuGr!0!5m8UKrQbX!jBu1A6tllgf7>5D5oYAxIF-X;lxQAG^Fjp z4h>MLs5rgHtB*nT6yn7abJae0a1R>=qOsHXlaFH^DixFF?S%2(=Eo~HCswyv9B7f^ zK}e{ko7{|SUJX(oEEAgM_%=v}Al7PU8gJA>BS+Snv)>)<<7(6%j8N)64V6Z%-BSeE zii26M;WvDt9+>HE7a6~ocd1h-mRknKvV#5GsYlw!Y&RK}W6c(dWz z)Mbb)r9U*)ta^a93?_@@qEU}?pi|(9mgSZxdQzjXwpt6&r485jLtN@!mVH#G;(Kxf zaPbbrd;*T4w;d8w4$t0S-9lJ@ECRXF{uh{pb1%VmEBYc;O7|WW*2c!SZ zOF^A|K9l=+39*btIBN=f8NLJCs{^q0S84Hx8iU`Jn#nH|hT%WTC-0P@X}VP<_J0cu ztMLW%Y~{bF%|=$ih#cPZ>%mnXz_mcRnknetza*7>J}ktk?8Eo-pI26)>uti>1>%9L z3woi@;j+&%Q36OAZR|@hkwGqtwo&v%z*l17Z4amcX5q&%ccI5?1c`cj_qRlw2=QnJ z4g8gbJdnip!g+WJ1Imry5c12v1a?nzaKomjq2%yM@?H4MOMwD$1g(XUkWjc9tGl|Q!fBpYjUSA$SHRe>_|Y~kpW6NQLEAkR2{f+p4h!~D$0G&@zsSo6 zr5uB=kc=EvPiq?99E4(Gk!7KWONw|`i{Te*GMOGc42&4!1W-I zAbjf?)ux#Wack9~ndfFFQSZ!^cI3@_uE-}pN zt)tSZ*i3R;DL>-N#P&GNk)WWBQ5q4+-c-6CG#3o-X%W5B{}aY%f>CA7*ym{=rfIRb z+PbSq7yv@bpcaQQxL=e-jUxi#>yxR2Z0zf5ENodt?%{O+z*PgB3*AFL_txh^=TqUs z6#%EXK1kRlkVG>2iDE8`Bqf!Y=@OK=gkbr4d8Lf^=-*S%A%sX z_RRrFRBz;(->gIsQumPICL9d2lTe{`V1#+4AIkt#K@eqdEBtG5Xc#~=wvJ_bqDk&r8?!mO-vJ1?)QblD5kFXu)*n0K|imO#+rddGBQ z9gxIsIWSJW=632)Af5MWiyT=hi&S?+7^lVqV0DN0CD9%ANP0%PK=-9>o2@!QxXf1k zC`VLEC0jF3JExRkzN$G&ZZ5XTY`yz0MEw7PZZ2e-{uh=uq?p(IpL7HPAP2frz^AgY z3dTF=#8JN9<<;}VMKEI~`!gZSs7gs^GCQ2H1_PNiD_RUCu&3J^WflNfqvNq1$+<+w-12}r@d zVD0Q2@9JNj(R0q1B3l!Mo~n&_H;nr{uVF` zp+tZ6e>grc*c4kKOGG@rqr^2`qjA@(oZi3!Z&z)Alu*$qjnpRdYj$)YYsKJ&oXzuF zr?uqOI@I8CdCnEOgcf8S{?cQ=hO|_v&)mT4Wq~4h$a^wl9lAyo1QZ&Da{-?Z_K<>x zRZ`37*7rO4vI#`shdD$2C0a(8?kbl-GRFO>(wEL_Cx2ga>z<3e`Qq(XjqBAw{O3Ig z+s**TP|uBEeI-A=JT3(9dO;o%A%SHx63Sy(k_P-O2JJhqpA`gWT1Q&xN*^{wu{yA8 z9{Ag0^N;H+^uDvx#=U60ePP!aI3(3SrVu+##ihiT-97*>CN~Ml#Xkk?W2nW#xoI#e zQauqZkh2l=YnnY2_7zA^*r($CT*_VwNZbdNA%4d8@|1zS>E<_kJh?yJp4~q1X_{fH zV^e(S`Yo%5zpmTkyt~4#`=8t)3{bWB9O%*rW`|_kx$hr=;LS0$&|U+)^UvJFC4r5M z9vY?ePIGV4gTDp1@D|)7Q2a08!8m$AeZ7IoC*%z_rm6WqpICReLGtU6!lE# z#M>rQ;bI9NqGHtFPo^}=xpKiu$nrX`(22S39fE$ldhxMw4Sa4DqoW9O{{A=rI-P0cTl3e-+`vv+K1{tAsLx~WLdL!s&0lO8xa*u*`y z=RQ&s$Kv>|_7+OKJ;7@z!|sC9!c(WsCVDXYP7iZ81SI?NT=Mtc6FLzZBb)_Ly6Yf9 z6kLp=y&RPZRVj6-?A)GW@coH16`ZFQ?BH+}6u^{$=VnGUD|BRZYv3Zdg}tA##39cX zS3siz;hn7x_oIGrOdfgGa<3#Sc94dAH9S{(J zji1ygO}nJK$15-pgT315VWGO2hXcu|f==PO5rK={vL1vmKN7WFAX?IpsN$t@M;0|L6MEIEH9DMu*%eQ|~r7#_` zGTj-6mCt=VnV6~s6&Yo_hdVjme>5eum4OTN0W^TzH^ulbyq#aBx>}D2is4tW8grpm zBKgzBZIsdbnGp)46ZlG5ql|eR1YYQ5i*NoryrkU8gYYrbq<8m=H0q7VH}%j%$LZZL zlWOcniVkt(QA=fJ>+mjINF)J}<}NmNx#;yA$PCO-$?kd5wv)1_=#L*JV-7y{YKlN& z@m&IvHNdM%V@-Ld+Mc%bNRkj~`pY#YpaFY@KJhKlGDwc^?$zy}nQXKlh8(rkv7g8gMJZM_i%KXB7oKtV zMt~aO2A%83F+VxWyzWO#<=1i-yI)3ZdqudaK^ZZ z2(z#8TseTQHo)?2bWg|K{jlOVwI^V8joURaJMnp%#9G4}J$B_Z#b4m}-NLNyhJs5! zN&zWFy9%~xQM--(@Xw9+A*a)5ZDJSc68sw6*Iw|b>(mKiSaif{cv$Jh)urQ}nFSe= zX-&BX4334`H-$;s`2CpnlRJ+Pi*PtYa1MZ0^i~jihduanS03cOsRhxwF`=8BISW0C^z`M z@_rFP(95fq18wrZQ{zopNZWTQ|AHF+vxwRBbYCSrN4ioJ*no$;{`Oy{E`kX@z~eIq z!sqSXpcedR>gg7NRVT;ZG??ev-97p-h5~3b8t!!Bx`)TPkJ}6C$E+Z ze2Gs=_j5a+dsDi^m^eu)5}hp&s8k!+(^E zWv<%icgzX|G@{V;ygwDrqTa$4OG7mUDy^Rn{-|KgHg$cL9#=K$eplveAa#r-JRrI9 zq!DA1_Qy`K`GbkR@Cn}&OT#qY3Sb5VOU%TzpS^)F^6BDZ~~> zgmF&A`;%4zK25AV(nCMqwi7njcO6(EEbqixqbHA7==4!{2GzQc?fV2uSslm7-Yn68 z-vM>-yaqUp^Q@LKT99jXt94-Ifg=Opa){GHarmoMc3DTuN5cZt=8UnunaI(OlzM|o zF@MF(?-;H*;LChRrx*XWby*XF>@GOh}pBW@pb%Y$($19z!+`#1<-K%qO2Z zAw0};fnJk|%LrLis*fY$6EYdTI0mIvxPSkVrgayqp#SFCI&p(NpLXX}Z5g&ZmcIqr zae4qYl|3pOo-p`qBpLakn{wxFQS2Ax{webl=8yDYH#4lon@ycj9z?sQwKruNOw;G1 zGY&^tRRWfauxiaU9-1d~gjyv;yr|Ivwm4S)AQlA)N>bW#eE$UA_~UgW!)M%)0YDkz z%=aH}il5e~7e}5bd!*q`r*_51O7X6`ElC+i_iI+-|G;yAy9MHnWU%z~u`xQhOD~T4 z@#=q(8PH)Y?`*p=ED4F6+i|W^Sc=K}TR<1=j(_w%b}F74ZSsyGO!MzIS@Zq&81Us{ z5%`8iLnGm1&g;WJNOp2tTKNG3dRpMV?;CSCj4o-sS+ zk1%2>Tu>Q2g}*8r?gcGI7^~*#E9;3dZQzIrDP!Y&p^~zpdjlF*&uN?0Letp`!zl72 zsCxGe<>Y&Z(e0iPw&VUoEE85f5Ps#@E+v|&Np0nu4Wmjl5k54q^eG@bBfch+E^+C*szJAyqdSX8hK%Xhm7{Pv6y=7=DfFvjGCJe`aC8%LG!%&r_FV?pr5ttKhn3a}9SzU`=< ztw2k8qB@uU&-zUre7jLFDH8e(+@(uM$$v4?|_aa2#O(Fnz;6>3%tZ~eik{GGF z)h3{ityFiCB-1#+{NQ63&VJVlMT$C{v-MgIla$r_{lai}q_xrnV@rryU7tucuFv<}08DY?VEft6hEbX_%J^44eRe(lRo zu@v~2t-jS6J#u$f)Sr^-j>>ZlCCYZXl^La+1KYRg#gy9Ie>+n9^G-Ka0z`8E-%$eu z3$N`%G8T?p|1U6r0LEOn*b0|x~2sep5S>YR!@ zi0z;evZbf2L8J@Wn&k4_?aV|5q>_;mHUFHZ$eIrp!qz#>mp%4!lDHU3T#x2rtd$l3 zT>hmqia#t1ZyU^*JCz>(^F8FFx8CBbkf{EKv%TdQ3xR~^_?C1{IZAsUzn<*Kf*fSi z?Y>~J;{o(nl==4(Y<`f;kFdp}0xARZUp*F?mWyLqr3 zx&3T~?Im3+Y=8`&y#q%ldvpGzC&v%&K7_}Db7cS8+`fWH_)Z7h<#c+O!Pb@1pQujGd@4>B}Q@oB{wv(VpJr-ua zR|!lWDb<=}B!kO`sTUxwy-0dcH}04&=BGjcz!q&r|D*u@;G2ZLX}Xn0rsDW{(;)JO zjFn}S?vmGz21Q@d$2DyDPhp&X-NZJ&FzUyrf#0-UD{ii>KKLH&c$;1vfJH# zF1ZfjX#-yf+Eo5B8KsCHIhv=+`9*vwjTeZ@8ZlZI*2Y zW?ofRwBO9y5yZ6hQ6UIp%g2dcITf>5nVSZ_r)w%R8rsUuA9-!jWrE0uSgRzvPWsTp zHk2-&3AQrEWq*XsUVk*r@qOpM-0~;^)Pg9f9Nc&`K> zK(U{mx`rFv=2|*OzGg+}vXw|p(P`Ay!D)wA>mppOtkC{xgSL%2wUYQBS-3LE-{8Kc zk$21q4TBq*Xzz>RQEn!oWw12RdT-947Z)AH(>YQ_`-{(B#3?a&j8`bDj=YUfHUKQe z2k7f-lRL7e!a+a&S98?5)!9a%@z^9!;56*?ozw_Sy>R+SgWI^jMb~gIP5R}S)=|F- zB8!u9bp;rQR~@DHQ+f01*Ck7L-zTxWa=si)a+FFmeanl>`XrM8o3N{MbHeX@^s2*g`g@W_R7z>;pO@!JFKs@#|5Ter#_uEq6uM$ZDs zeQVrMa;5D)l}B&u3bv?}?-xFldkI6~TMec7R}$@H_JL06PkMS96CqSY;6fYLl(s zfBcm+E*Vy+lYRq7TGQzqU@vTmP)+Y16`qC;(mw zC7s@-f=CqMU{VhD`((Z_-`Al-hGBdn&eSVlWWC$|n<+SQ=-?V((`^5Ge($%MBsdz= z&)sgVS%t_d+>BHC@50YkVM6=XyRV|dCkM(NDD|V%W5-~^>>aHG9n=N8*6Z>G z0l~s4Gc}SG`!C#i;N64D4dBU&5_p?Vz91X$HN}&M!nKcFl??xY!|@TP$&+^%q00L+ zw_$sX7hYV_(Z-e7f6JBNK8e2aL|AKNe>C$^utkHT%```RsQxC7py#+)W@tUH&WKGc z^cn^(r4!*aH(vBQHk7GGNkH+xEPy=`JO$6FsT(!qZG@Yb;cQU<-Auz5lf1goyX248 z-O#`mb6Fp*&W0Ngd|6bPbr-T5cM9kW#$TNdh2kUME-=P1hcXw30$(<9)#?x*s^2`3ce>)aa`b~*0h1?R`tfMjf(&MM zHrN*iCeQICA7&J_Ilk>5Udc_XGk>$uT825YeLiHoMNodYz1we)=5W6{25Cu65p`N_ zI?@FHQJIgs<^WzZFcqWt+G$C}Wy4iHrmz&-zVW~>Ev0>{2{2v!xXioTO6|S}>yQi1 z(+)cww-;nY|EL*@$*@odyXFQ+AfJ}r2As=(ltiW4iTB*;oqVvISszo;ermqMKs0E0 z5KM{<=(BK2ypEj8@Vtso)#`qtlvtQjtR>i?o;zvY;1X(WQ*K3oBNrFMue7+Uuj)V4 zG=Sg3yPod*@rqsaOO16OzVOwnsv2UI#Vq6t=$IWx;kY|~E^w{rd?8rm#V~j3(mx{iBfte3 z820`TtbyUj5F8Zn`*o#Vi}2?epj1@U__r+5eJx-DThf9h%;@SIzj%;h>lpar_=X?! zhNW0C%!2jd%!88~S+4)PpO>Im7S}v53uJgSpZPc6uYdoQqxFB~fZbx#sY@bwS3?Z1 zQ?c+E_$T2nvXUjufe{x&{!3&3A0N48jt#gf64#Db0{f@8#EXFB)trKBoPj?6tSKqwtPg0Y1uEtm=R%2^W^kS34*ND*$7DsKGKf!1seNrFam#!hW8XS?YwR--_ ztga#xUjSovU^N=;HWtB%quk#D@a`$V=kc)OyJCxgVEh`6yf{qf?9qs5t`8=IAJSMK zcrQE{&>no^)*9i0y{_0oYu@>;m5tr{;6x3_aIjMn6aqz&koW~KJOu6>;Pv-jvrV&T zeB`~6!HB3~04nItno11T3My5~>AloALUtU$zK|_jy@JN)q%t@-&pfwt=Q87Pu)Ni2 zV^MJG3*e~V*KWNVe@e*TxuF_%uR$N{r*kyQ#Z9nC)}dPmV1L@iEEk4T|dMT2A z%Bw4$l6x4q?z7E6|G|`O+Lzl>`mBYaKRSicPCKIz^K}eJa~hv&92Q%P&sakf%o+sw zN^8>4cIJiSpN@d+CEb|J>})Pn`Ha8siOSbNw;QKo7q-|tR)Dh}M@+6qKEmhJuL;nmANcP8w>oaW^R=c z{0!BD1HloHdkeDT3^T>6NK&oK9jV_-}b&W2Vh5`tMeOPoJovQWiyl5X6p-bA07jJaZ@-3A)?YL4ON)OFPIP=2(-! zlciQS2i*l8vXymqx4N*FMHQH0j5<&7pR`Cto0ZK8fWBnOV2qFEvbNqoQ(Fffc{2Q^ zP55i;ct{UUo7#QDYw-)uKaidU-BrvX}43X9=mR2+7-# z)DUXOLTkp`qqm<*9}yA>Y7-8DVeWjYkSwV^BakMU&3t>djWf|C0MH0zZ!)yNfP`69 ziq22Qy$x8PI<)2p^Mtf;hHDGPm)-kr!idXRv3BAUj4&-`%X`qbugu?Zm|MPaV1@6p zGF0dOJ0pqUjxyN|D+C*nwRdJ!VmC993mT{SLuA^`NnIwV^FF*&YJE7IZLVzhrZ>uD z0KCapMQ0?eo9BEMD)DB#Xl;ndR6>gmVccWa!q>CG$`kPcZAqLFfz>0yB3UlfWAq=Z}P}%ocQS<2F z!x^{j^7Sk^S?7a=B?gzBJL7y0rgGjCf{@qDK+}$L9}e`sRQTfm2vq;S_+fAEOW8KJ%pz?TGqw^?keV6d@fW{46 zhNg4U%?Gg#rj)bpn|<5wu4-m2NpV0KAJT5D|ICxJSVzH@yB%q4_3pHj2O@c7TBgSO zQA|FvNxGBS|Ee+l$#k)iMtekSGMIXTk5r1 zAunBggMl$nFecWdSE8`XEG(^=x$v769UH!2D)H9N8Ggf>!Js0eosbL^8>k5?L$JQF z4bkS~&EM(j{ygn_8?R@v#zDl{m4)T=eF{fZuF?<5B-mkX5A-*sNRDwWefTg1D$Qg1 zjS;LRh9Apj8j`C%o$e!cTL0Le)3$~nc=2tF*8=k(rgAYkM}il5dPKYMr>U%%4Odb1Y*cS=Q?^4**_4MPW)kELIa z+It-*oVPOF#F_GrHbgSKx_aOmZnpO$`sP>?2mFFL*&FR0=`S6EX|kjh%V^qfbQP|aAOj>ld57=;qJnZ5a7Qi+`Y z`}mkl8HbOTCuGw%X=n7p^jogA233lVM(y(C2bz*@mR)#7YB_L_E>Yn2kewMfh_y?U z@vNmU5=8TfV}mK%qz`_HUQ-D-s}o?{D4}JUvu{*gR4(+o%?^V(#@>_}Ne@DgxETH} zyE^+DKNaB!UZR`_?^0Pa)*$rR@Va8Bz%vVM>&nTgmN6akE@~T=ip{!j5d~Qqo2u?;#SL3~476S+}Uwainjg<$5FT$J6I)`@I>b-#7+jOfJ=Jl~)%DN9{cj^}hLt5A7feB%njcB$rQ9{JH85E%O2;VNAmxFQwDwbeXwz~*xY-4AuF*uuBTR4JL_V!M z^~Vw6R{(_KWc1R&C53Zf%j^y?%cwqTyUM$<0>$BOur~C)MODGaJx-`wZz>6At)=c> z1tdM8jNVvBm-z^pYavg;HH}@{?R$o7k~x)l-^Jc?Md@BFaYL4~o?-el}L zzz!}AO|BHD-gGIv5R#x@KQTQGR={dbJA=r|3XOz{0M*BPKWh88@f0%_XrN!^Og2wA z*nEE+TDNqy{01#_3flz!$IPE(n%7CmNG^jdY4G6*;{M^emj{3iulK+TonfG;PT0B1 z1B<9}2EJ>;Gn{0B(_UbLA%m|q8jO2slTNd3Vw4xR3)8Mu22pu%I*(P94)0>}Uao3q zVi6SeZtcC>b>)AV`XP@U?AFb`I}ED7zz@7_2b2z$>Sp{cunkn20OE-HTVN9c$I$Iy z$^YU`8t%x+t6P<5$$|k6&G^6T2R!iu-NY*5=+e593OG3>^vV|Bzo| zU!-2E68(@2OKY9AcH%!FkIZ=d;>qs46%-pEI|4nSDLQLSEs(r};o(G4Ud03oWK(gd z)F#}EQ@p!_a0o3zTwUIEW!8mAX{>$bB)CSSPFO*nt#j#L4f z<^VglwEOM-H{;V)Bo4#DGdX_TI{FP%1x+4W5lMot;mvo;(mV;E(e^2C(F=?X^jQlCOO@wu%Pn*^ zr1$wAnO@0_!K9?Fte!7A_He+5&RL@`f3SVhVfFEc;;;P*B=F} z*RHJmm9GB5j|2Ev(&qgWMJD>SSV3dcJ}&87W%hi;_S?x9k$aI%q%lia&4eai$Axs@ zqsxr_)<$)0GM)E_bRKjHwEQVs#Ne`hW2@|#7ciY=%~5V5b2d*yXsHEs=x^w4^aG+) z@(z5%{MUW4;5`-QX7s>8Bu+P9i|zen&8lpoMcov`8VRncA%~xxL_lyBD2yv*g{xTS zaet6Qyfgd$e}zcw5YS&QTv5h-3p~Qw05bkRLJ=BxCIeMWvA~j7E`1OM(vgQzmoGf~4-57GAb9>a=KtfBOsvLQQU`un@9M7~Q#<#vP(+r> zU)TvwVuwxysB#l+DED^eFAFz#z>K^noAa6i)elqFB6wKJ)keF+2uchKE$r~M>q%_L zTn7xat1Rr*T7#4Fq3&JA9Cv*K0XPsIiUfor?CNgrPRra`%eVND5lmP_#+sDuW z`;TGY&f?6rm&{63Iq75Q2;{EdQ|Y_b7?0EIq)5;Re2fpAIig7G^Nw;5=s8%x%6T<$ zjsr?Q2V`^Px#4i$KC-K3xW_UQWxHuuK91?r1Z=FuVg~0y-qV%e&QfCG)7(y3JHlu_ z-s?S4TKcarmEiD`c?-uw64d8VCbZ!d(N-?7mq`qCcE0xjxQm&TAQ}3IhkW2Po)s!| zLc9}BK(oe80!zR`a@Pkv8JKkOm z5sM3|1a~8Er|Sw>Xtv4jDpvBDg9tG7sot5l3Xv8DCRHRHB30Y_@nHH(gRULgSlD(u zmq3YH=nGCxwTBjVF5$a8LvexL?A|z)kOh9QaP!{+CGZFvEreMz7SMM6i5FIaJq-)eBliod|)F&FxMr)+=RrFAUQ zbt1{Vi8N`mE(p;%ybnRID_)0v2c0YrvfORchq8-}X{g{}m{ijE=@syShmW404!daW zjAq8*>5Bk`0OMhlWk2nX#przS6!5yhg~=HrhFMH$Nw^wZnwf2O?q(Ud&Gm|pziRib zSM#Szzw=7b;lqUZLgDZjb@U>jZ%ohu#&eTe-{*UBtD@#3%(_L)6cSYzu!>ImnHzh! zcDWIAkAz;-ZG{ehO?N##sYUJ7;;spQ7E9g!R2XG4OrJJD)#{ZOp4Z`VeX z>u*U2PZ+c=ZN>A>ubj4f3L6FA9I8%p9A80qCG+rqtXr8UY(%izkg>|(Wgw629G^vp z>5avVEdp`@_=Mdj;;#to3N+&*Uq30bwco3j%^kq}FXrAn9_s&p7bZ$1T9n-=WDAuP z6ULG~CQFD=QMM?1)^{o?iG)PVkUb&Ui6JtU82e-kS;iPk%nWAC%;&uNe(!V6eSY6_ z-;ew8IRD&#DG!-x-mm3(UC--zT}e!p6- zBBp^Lh?gO=ntvOwK3c`rGv!%;t)V@yt67HM+#nfsPsc85T|TQ&%l=26@OSkfHx0dg6iD z{6HB7e=9`>co?}X(771=oxSNbgyrzvq2|s@DS4TDwfMObnlLyoMAG*cN+K1WR&Ym(Y~1CGanRev>--C69*s5RIZbDvec6I@ViDc(rT%1pH`7$j>h$g`rxTPKJ&mZ$hZ!HAX(8fMzqx6H>s0fF4<~Dxd(=YMLi{r zKMQIr#8G96;Qz@w{};mizhn0QA{y9t7CUFIs_~Z)`_^KOaaClr9P+69Uchd==iOdl z+?Z!&w@3YanVn2``L_&FB}-^Xp^{B?b+7~pV+Zw+c-Nn1$|hyc6G1P*oY|% z-`O&%Yk&QHbdtS!mMJfj6L1OPS46Q_i!=pm{$c9}+=6DfEnu&WmkY13>a_(F@}Ffm z!u&bVSE8{CR^uk97_|>BD*b<^CvML`-w?%}u}`a%TE#i#i8rXSg-}}V#h10ybabqd z)$Zk(fUGYU_?zeK18AWUK<2U>Khh}TWhO`cXsv#>JmXh$)LxmlAsDOCAs3j9H4!!Bi+}FTUQt52jCQweM`)6~Op9r0IY7 zTT~^Hp%-n(UzdX$x&Ku_(=@ezHLk%4cX;FUo1Xip-Q4#ZO^N*p6@wHA#hA(aLO*Hc z?Z=O(cBM+Xfkq&RQ?d+uZ+M}0Db%9aL(oquhlIO7-qkuI87tz_qufj@ueN#N#)}nAG{9RbM zCrzSBOePq8YhpZiTw-KDEwFl5Bq>MIjZC+J$Cm4fdJZwVzLx1C2$Zt0Hv^T!`Ru|v zlKc>>`hlq(+~Lce6xryBp+9BUeVLG@;0Z8L7o+I1cGr4JB(DBs<%7mk;+iijHWF{? z#h{%DrYpP0kH1G&!gH9B3-4Og{2VfZolakw6QY*(#J^c(2I|9yd&8T<1r|#icH392 z&3)aEuO*#hGel~R#_GylE0wDF;0bsba}i!}^_PL$xmdZ?j80;?4e`PE1x zAF~t29b7O6%?TyLrO(+j)^#-T9@BabqPbII5-s7Uk?XZC<(BOA5gsYm;oAwefpTL< zPTTJe*P9=KEtKcW9w}vBhhE>bRTcsAT8Sr*N}lqVG{v-PvO9EK0KDiEnuyFTlCTsQ zXRw2alWs30hK3R&MC>q(1JP%$hVys7ZSv)u;A#@wbF%J%5#Z5FEuTympBe>FN03@6 z=pA-VK16VO`%EhZn7LO2+{`u}$-iK(WJk+BbxlZEjHO*Yz)!kuhki}KLZ*IO_Gd(ErQI*W6 z7+09&Z16LcO}h>;SaJAdbjBbEp*v8a3}hlxd|vMnq@rcRJ)pXpW6D!#Q6ET~M_zxc zE~F!V6x|2(_6Z}0f%is!)KjfG`@@2B4$1~z?mn9dQJ2eUqJ|gN0bro0=1+8CYd1g1 zW*5>bC4OtZ(b>k*=(b)aQ^M)~g|Z2gQP)E5`o9DS{@g=-d1=^ae#tu%CvXVje-L`# zYsRF^xNVSdgP&38Q>KN%>pK(`nPN6Rz*uAa>=7+ms6<@{yi|b}9WqU`&Ux|-GumO$ z_x@;n!;__eUzNUFl_!R5nc+gJ9{uY|n^Ee_hxsAX`rNwH029jh<~Vlp&Fk+#k4mLf zNZCzkj*v@eCQBr`Rp^Rqfnv=|!OG332B9=(zUq5f#dtJu)NKeY#V<_07#aXs1Hy?j zq!Zh35It(~dFhFjE&gnaz8MC?Z$KjWz z+@tV_!fNlX0)jL#Z_Dw0jk84U)dQE=J6DHUK1lhBx zeSBjv?!(#)a8A5kEMXqhREnoJ;ob-J3SY}y=`f*!DnWav^!5r4)sD5hulhX#dGmFe zPa&qfsL#9L2*$O&{2(2=@+T{t=L>rW^sNd>XEhsTS&4!-Cvo;SFE3MrsrXP!t)ffD zof(Qk7H`@Ex!Gvdm2M=RmYJ9LRuTo+=h|n#($2ia_1umxc^yV6aR=c9oj)Fi`vQGH?fUGF`*fxf zQ;M?P5_aVJ*!b%@Z7WpaZg$8V%`&GioY!ry4aMR6T3@KI6m$Js62LnD|B>ReWpmzd znASI0k*z@g%Pb)LTm|V$Y+cIVETR9bft;rkcPxhoMawPa;5-zzC*X3_uG$r&UIaMz zoP4-7poL69dDj2jW_TycTV%5m%RN zAF$!V#;pdfZ}GKp9HtaCuG2X5$Mw36inj9BK+xaMPY>u@$@e2ZonmjGasV~-I$r3L z+pmrzlVnApnDV?#09FjiL**JcQe2V{wuP>7v)31sFug2SODz(A`(oDo)X&GSvxTkr zxzL@i`HFiJ@BCRPEiG55|2CJn!wqwZQl(_WetS9Bg~#6NpW9?(XB7KSLoF!B^_^p? zMhav;0|GPRSyD3EBE>&@LBH~Ud`m;p@4M`=oAb_h?2_V+U^VCR#Xi!5`D_BxZmem~ zvuylJpQJ{iqmyJeLgo^?6RzD{a5#MO=xD+<(0+LCpXbs3BfCgTE0(ruZV>i3&SgmU z`hF7Fg9uX%I|kc=9hiN7xk%0g8)Ip~1*DnymrW-!_UQTp#X3By%D=3&`!9rAGw?gb zag&_z)oQ^-<%}PGO?{U(5l&9R?EvFn$TZ^P1n9JKDX9D0wYt`%gXpA|#9QW_#8}U* zkDp2X^XkWw*u%#9;3fn|)vUwyD0EVO5@R<)Z?sxqMC$ZQhfK|07ZupQeUXmICNK3JjT3SNo zO=+&0HPrN+kpiDhn06LiC`FFv;hc8!*Fdde|9othXT9nbr2Ty|Mv3g?Z99tA21$+E;sM1dwcNQzWCXia%5W}!CI~$M!J+4iq_fj zGAT?9j5pclsP&y3RZs-f$vZj?*fl5N^Y|j8Qv6E|o6O9-OgK2v zXRePZzad1S8jswK5;|!+By8~g(QZvE4KJq*zoCVDx?J!G{XXRHD`(B0lY_glq zMC1Y?c$zmYk*-%T+f{&>{fA9w`Ni?G(`sLS;!{0`(_Lp=)tqw|oLHCJ)Plk54D6s`{2-(#0OCUx;#X-Vb@jxS=rzmAOmB2T*rX4Fz25Q!3lY<7K zZ*_5co)NL#0I08^T?VrlPm+K={yZraMkqbimK2&?#OX#rLw~uBVU5G*J?a6|BztTp zD({yAJ*wbka`#s(dqP$*U+3q2I@^0*#wwgHf~m|Jy*vL(`RA%Z_ft zfii95MBcU>CfAN7Bm)-syL!QQPm{snqw*)Wdm2rPJ<0ayNiylmjbcyG>3n4EK8_XJ zj7s5BkVDGKf+7zOrW>v?RpIX4=mJk#tiog)%A$_KN+}a7erIhQkjx4N4bi3M*=~#~ zYFO5_j&GV7g-JcY;-_vuiK_)=8|QqPTVyYe_WLCZ4U#V{8NtxkrEhO)J4Jp^0?0>6Bx`xVJM9>^ig zAz-U?(ixOHM{iGc`oiZ*Psjvqi#|A#cd<;JQJgC*y}l5TTbUAnM4bygnw8XJXFvj# zCsC=)=8z5r2euWOX!92@)iO9@x~3uIWuNb7r4J7!b`F3kve)%!O0Pl6s`I6=es>M+ z+my@6GzeaI5t8x(Ed&d1-&m{U2BiWE1-CGP_rXd^Nd0DU6{d%=xwMb$E!{k;kiW?g z|ASNgf9saVp6`knUpn(lYA~^_J}ZBWr5{ml=Ve%O`4ZFNjiUlQ8EEC#s+FA0m7Den zzb@y}Ae!K&3_kiJZ!OQ1JKPwLLOg4)Yh1Y`HJUpf#{5=cyJdZ>s;rQgi*xHdGye^h z$vK+X|C>T0)i$`lo%!m!V5?O(mVl6i`s9l-quUHV(>I=3)@DzwQ4c^+gqF;g`?q|D0pWAvZv$y?b}uVVS~6fkG;2Z!TW+HvR<4K`Pj{k z_s2LNhiC)h!s|<7$19qh3XbmPd-d3)p{mnSCNE7BQ~vemm)*lRDz1i;vB=VZUQb9W z?17!Si};OJPRHAK#;*n>(eal|ru&z#GQwe?tJ12uj`;oMu}+(I(C1Yq5pJhh1$RB5 zSdJv3N7Eh$T`#RF6@UF&bY=EAWpj5okY!l$-jnglHK@=W;s8X$MDBO|ak^UjVPrMn zU%6oC-nn*eiOo^5$9gYdO3~EG5fjhFD7~dOq6MmQvsoC;Q9FI>FSK=L;H9Ox@m!E8 zPSQ)G3E6JHGCp^fg6Kn^(@1fi9{n*EUx5W9?j!)%@YK)h7+|sO>0oGYt=b1A>4+ z!MQN@VH(mS2k)NbSn$)GKCi(w(X`VO5Y`d zH&7sA`^$pclwj_a;MU$7wiz+WYaT}UW44Zu;~17=&EfsKwFQMrT}7`yYfK<(ee54lXnsg^@X!6geaYp==a;A|nwELWHE?v2 zVV`X_b2e3gXVr!B98fGg|8(adlqZI|{nQG6t%F<2`1`*8uW|mS)2A*Z$=tlFq5U^0 zM;k0l8_waC6?Q8QxP+nCz>}#rPm(e?W3st;mSU+p+%FyWTRODSciWZhkHp;IyTtF{ zH_0`_%if>lw9h~I)XzFD7y^GzuQ1TJcHtw zEuLtU&M~9*owI{NPYqnV??ReKo&+-}?TSetJ@sK8{zsqZ3DkA)zF7^n)ZKws)A!pS z>Vj>hW=f)*k8OYUn!Ths*2+om@#9A#RbyWdb-|-oEoF0ZGQi#8u$Y;iIkL6BEs%AN zyQm3GT|z3dlF-sdC`MR#q__R@3%|&CTF&jp(8ZJqM{aAX{DBMNCWuF$POUv9j%lOu z8PfLtd|?SdNT>C%D6T$D@z=!uKbfxR!Ad_nw@o0#Q9b$a&sTESho0&t_>;nd>ChLN z2T2_kV3Cjp{hG0=Pa3}nNu3DJ+|-iqxD>{CGDe@K(*(u^IT_RMN(C~5^tPe^^jx!j zxb2=vV9*B?-h9qSngbLn1^2!YfI={xsmYni)AV6N;5H*p^jq{e$Zj0`*%4QHw41-Yx4hA(wR^__i% zNu;S&=g#|s;0NhbxHk_FxH)tGWCgDYfCx(x%-GuJ`Mn0=O?>i0BOdn0PjFeV&~tGU zsrENYLukimW8-h56((I?(*%XZ72a-ZcuhEpHCOK=g@~u`m&Knfm2kTIhFq(^fD`vf z@_ln9;-@Slkxaj)lJxsGcxpv0*tffh6WG{KIxAmMk6~LIm{BXjxs;F~GV@{YVMY3~4tGPG*JMCMDZyco~F6 z$tHWr%3+!1%ZfRHtOhYPcxG#>v}>{hHiQ|Z?q!NMaEwt*)c;ovBQhnGj&m8ty?%5~ zZbDBi$)=N=Yv?=>v<9BES}l(H5t@)4Bm-H=7r0)kCSVvGQw+g;;Vbuyg4A1ZS`8x( zs~$I30IFGI@>fJ~BfU!h zPL5e~oA&&mUu;E*#4%rgaThh7n}pEiO_!%?&IY(IVOrPs{yeF(>eFe^7xfW>;WmpF zJ<=|foQg~>n812fU`1vWX7~#QCeve8@dYId^|dJGvI!5HD;V*~$=+Y|7bYwAY-4cM z;@WpqhNx~faiAx?=hQA1BzZRcd?S46S|BafC5@Ie_-{m=V1Z5pZg@NfLd;FQDA4bM9UH{|fCzD?AQ_V%ivwKJ?3enBG(zl8M>#e~JA6 z=NIgQ`hXxL20~_T3TGgRiWNz0ANlaTh9VRZx;0I7}3k&c50NgLkd%u3y}P~JCc4_*s}o8-bMU%`rhORlztQ6wmCVqh3i#w6B0Jxzi+lLlyrsj zU$ll>*544p@H6rVdL`=*E2RO1h@J5byU5^4C|{s)xt^%M7dA)ZxoL`)z1PoK+~o?2 zV|+GOKS&v1yV{Vl3g&xpv{hpxnXvh{TIV9e{Frjf_*?(5rFVF>XM*AdV%w$nfcAPLkd6)u5?S#14xy*Qa`D`z&Xctxu{XrJLNJhd| zq7!#`ESUhWOG1ATvx!UVvvlrzN&?#lmxVg@?J z(Z~lb(~m~4sdE*a^ZU7bJBFpBd3NQ)tBZ{ie_QyEH114f#)$$iFej)p$+36!5qwBb z!iJr`h^p0P-Bvha2+=9dyHJbBWL5Db7!eG-(EJ>l(n{RS=6b3ewwHcY>-3e^GgMrS zT)!6LNM}6i>(%2JaP=HGtdyW##WhW2dN>+?ix0}PvQ_?mc-ix(-ENK2C#Orh8#*WSyTZ$?f^!a^dfrDsgck*}0m&9_^G9`WM8x7~-rh%#{E6 z79<0zW%?qlbxIfAC%fua!Qsktob|+xCOlZdHa8esr;SnRZ_lLq&O@f`(z{Cmc-{as z1lstFHZq3N7q&tBD`Bp>0SBjBQtypJ*DH(|>`H04&2v-FvFG4?Q~e$PJm(x_E; z-2hY~EoJDC`Gn@yzK5Wc72$cdLJ^nmvkB)P<^{_3iCeh)q>82BBR6x_6E|`K&!VQK zilU$F)xaWM$lrksk{T8!Bx<{6S5MMoHE+5Dl(weX|7IOoU zo&|37_m<|>zzTylXGnN`W}`Rm#U_i~fCb z%kw1TeQy8Lk#fK9*itp$1=9~}qQm}30jID8RVOU>q3z-e@ntXM{^qUxCy)7GzRB@) z=f&?_Fx1MsEYh9xdO~OYQE*Z;UK$28j%-mH3?MpqoZK@rL7FhA$zt_N$C*xMYq~$u z`~sn=*(Z=L=t3$DcK!y`>Ut2Q+^wwb6XksWvyMvIYvx{T`t~JIU+5POVrI%l8=mC( zW3{o8$1Wzh*4~%iV5y~mCI+3BCDBItJG=?I!q5b-_0mII1~o44*mGpYZA#BCs~rNd zPN|G{;RjX{>lmd&#pdU5Za8CXt`DS!W z;~W=ztOl_kOv&{g4~zS#SP$9( zRft4pFc0i~Cr1#&JDrm`-YMeFC9GDB_t#2Go43m#zV?;g(Dzu%MbepJV$8lz`jL!) zq4EHe33@OXTnrv6T!+l)!|q#8&WVYwktTq3=lg9CpIbXd9J;fU>bx3Fz(8dBppPSx z2sDQFAA_Hqs;O5FBP1vKrV6g$j$Fm))Zgw+nDX!e8!3C%bb9m`=rnRCGDYqMY+fYB zeM7pCiW_3GKx+@`Wcfogl@EGU9=q9}a|<|hC1@)BEX&UlB8`Z6M`DiBZhpyF8|Odi zGchu)F+YPsl)A&>e;4e6f=iO#CfG&&>wF&n_h3k!G z-A~seVu?G)+yEHZI)Z2;LYY|lVZ^cbM(>I z4&1BEVE8MA-u$HfYb}9b{h;%`{}xvPT;RBmBn(Hf4`{Y>w=6X^If9m=^Z+yT#WW85 z7-ENO)WI)4u6*yn&scr9!UfNai@N{;O8TB z=gLHM!Bs~;{9O=;$4$e_lV(KXe5aD|m<22P_NC$p`f4$D%Cp(SmkY8`|Kv_%_7O~( zA?iNfdS@NK=7mTJZ2=>ua?ozXUJj<>haz$BzuvmDoiMPCo5eGLy=U%cB~c6mkq&sk z=ciwWzO#;p5gm1Yy=l~py;gbWE)5A0Y{!;oM~fDn+x&Lx!Mldr-rHW%-&7g<=@YaU zAyKzZv>GE0K5LF0!0;+{PqtieC0MS4aLOB0aIV#_+!`8Mph>MZ9oeIFlq0zo%(B1; zqZRdQx9CvX@4x}Q$p?@~Z2y*APyT4r%kHO#Q6s!mk4uidM^dJGFPGj83!Iv3dM<8c zItMl#{#Lj7japuJwq4uE{mqTj^$4gVZ(MmR>P{zpV2Dl@VOoZ1Psbp>*n~ic;jeHj z`0;j9f27=AI_AeiR#kc)WJ!6YLpeVf;-J;PH&A-z9=pksT;4J(iF5-WRu`FnWK39bjgYMt1Vfzhi2p+xC|;^ifF%ODaSFfXc{LJ zuxjsb-%~7k6>izZv{#0I>>g$R#4RQ!g1W|(R1|Nm=wgHoSKqz44dG|5>-i1E?Jd`( zILwJDK7?Ezy<1pTG&~u>uS?^}SAsvf8OGmfy+~yr$#aujXGMBDM*;%D8t}b8K7W0r zg=z0EWJbixG9%|vc1@S_!_!@WM)9!F&1hB_UUhm=yvc-(&FW@X?y|S>{w#RLF9d$Z zZToK@%OQsg>=%0f9lPwSw_yaTfFS>i!?o5nHSp1I)GDvNe81XV!jM81fr%^W*s~ls+F{M|sShu&_ z_D#+`$><9g?hQP-t3CN9G+(f=6E_A1Z6zO)`@(p7oAk#f0u+p&xNFzL@TL3wUscIz zeU?q`2w*`V4@SuJ0#!2nP9Gxen4eiVr{|Q1&L}CLmRyzuy4|UWfdHSvnA$J0}kj}sru5p4~$CtTPWa*uw zj7p@}71hs)E807QB^V%Rv7RG$gRgo(oVuyuWj(3)6WbJ+*$f!4B+;6%qq^q`3((J( zqGgLoj{2?%|6Bpvdle&CKrk;9A*@bCjS*sYb}p} z5~H8|vGK;d8Y$K6I{$}@OA5pM3XPzx0*;r(`-0A)%{K|s5@4YCqUgP(d7F`m!bmOt ztO#A7#n?H`WZIzSa?-RnC@mw%bKd(7n}IMdBK?{&dbBX@`7;bYeG_`|$+YVPH;L(8 za4AYQ-S#+g9lWxO>Nm}+F^8jtNQ@YdhOpee;)>t&wQ7h&27mZs>?Ho%#MVd_*+U%gBUj@7ohNIs#%z>q-^|Y5P~p@c13|nNNCYO#mk${;C3O<5A$T8`Fjt(yz!fdEv5mC zfkro@p8NbK@@320Vplv?*Rn;ATS`RgDmTY(bW@I#hL@z$3KyIX|F!?cxb#0Ry1mL9 ze-@xQ{*65P3nI8e9=rascSz;!&adyYaaW%cCvnyHZEGkQ{_0YFYJnIN4-13PzUMGF zI%6-`o-g{6J-$3X%q3OZFEI^fWYIuuJo0Gue0}K!s!ky2ek0@29M#T>8?5z6Z(}XSkTMKE6Op`Yu<%vtf$FF*g5tQv0HTqc@_9(h z_6z;`O)-=7_Q^PGbNMznSse~P71-j6`u*-3n;ud&*(O7}2Aa*(u z%*Itz)XV5S_CHG>SZo8mSn;R4yq0t-0uAhT$Oor$cFjRUZKo^Ef}~htCkPk6Z8vf8#r|~QOP0P`Bqu`I(>_Wox zdLaZM0Wo44SKI7MM)_@6>@7(hL0-dO6A&@MXZK-iJgYKzJKZ7-GyC9Z9el-1X zv}2%}8D?2!Y!W3Pa*GJAtFC)YEDa1Hmmw4*7gD1emDmfNpp$o^8 zH_C=(!A5^$&@(S=PxGZyvJs{Ct{WU^Wq9zDhSC0jbjZopQ+;rDTC*RhGyv)&^>fCZ z^V1o)$veZt;s4FB#b0h&jduKXv6kmSAp52t=Th_F{_rn63z8--gQ31*RMH8ZqX|!z z5UFhTF^?o+4m^&L)9HCa5-HDO{!LABuh_b?)oNFLj}$Ce^t>ZYp6oY|C#73wYZ4f8 z@?oq<%xruyfg^rClm7=(j#WmPJ`I6OZF5xXAZJ^F&0l%rySW)%*;rtv0P~<=_ z78Z#E@bIz!cII(u0CGJJS{E&ebmxU zw&PObk-JfWeIa-PGf>U7{<^?Z4QUD%!d9!k{n$`Z>DG%bbm=adUAW6QVq91NNNm#X zAgg)S9|6p$%2j=TZQm44fP)*2P;F(tI^6wWI~ADgzbv%sY`I5XchFPP3WV@Ec`&)1 zb+<|W`rHPKMF2506|s8Rq2+9HVi~sH5mhi z1GRp{LbaA!@dn1_`pIx7)3tM%^4G;ASd)By2C1Lg zXUm?`@3%lTX)jk~Yx#dGnMj!&+IX`dFh^h%hy)~g?!Zt~_FC8Rp10tTIJ z>ji7J#?zFDMpm=_AGv97<{VaUS;>mjpp*fY3&7a z=)KiVoJ81W58Z8Wkrw;;U($(&Qc;H=my^iCtw8o&pEtFlYzDH!OL2rY7SEiUN(B6~ zyb%OHv~NK}y7|%uK8c!bp|A_E zIvGTV=I}uDY}P&xSC5vSl9e)-Z6y_ZNLH9Nu&hbL#Zz{{EKA@rOt$yPJxN zb-ECh450Vfl`{8@-V*jvZ(Z^+=Ta5eSs3dh!OsrDGdPM(6hmQS_$T*Xl|>f_GpZF2 z)~g3;?gyG^*^M%uJ|>zMZVIdgMb^SMTummatpwYy{$C@OX*3EzZX4c0$|7wlF%j!X*oi;IsU* z2jFX^SMLuwCF!m|p~cm0=6j2@)>MN)Kiq8Ad6R_&c46l+0vFw;w*1`+iWTO=jKGyO z!#v}fjTI9FY2X%nd`THQvgP0pxnE`@+;6%94xiFzrQp5}MI;8k^$v~0qF--m0?$Bi zZ6jtdKf(!#gI)ytw<^9yw@;(iv75zyQD_wseRv!gwa_+yUr6ed$^nPA=CBrQdU&mn z3(#S&j_*xlKgVB7KK2yMBUzUkO!v2qQf6gJz7-vKgynRN4+rN@YZb+?widY~+k;Z; z&)=L^6zbM+?Gy`Gr(f&f`;`;EIz%V+(;6Ksq>V2C6V$f|(}7d9@TKp7r@`P|f2b*) z$V9*1Ud3ZdH7-ef=S-v4QklL1g}MRV#oMb)aQtVES{QFXAl)aGTkGNUTu&a%n=3*f zOYg`BYsFbQI8QHz6CMSQ)S#vpI)s9y#Nxi!Y(s-uH#F_u#sS)%S`eqoqmb|bK@q_L z?-{B`Bj9B4OF>Bm0%3#hg{G#zQ^nBtM(=NG!H0ZS`fWxItThPAr-nJZCz6awR+fk0v6M=&5}e0hh%4MO%vrMn37LUVvEn z?ZA~VT+bJy1wUHC%buYD>!};Y|2CCZM=XICIP z$y>(Npca&Ft$Ktf=B4|Z9Vw?J8612kKObSLYoen4Ko#}(>);c6vs_sNscLmCi=XE|b+J>_imS23 z8e;uw`2Nop`@DmO`tLm;qK1bZl_kThQbf3q@P5}4Sa0E%`3opH& z`1$klkIR?cHb(QmH(imK|F~c1e7#U(;>UQOx&w|fxA?DVa8>hvKFW@gUwH(*ohBe= zfsk|*y(s8}eGaTXsx5tYX)ibUPlt_m1env0vSssy`I(Ci0guXy(qzHWRDi2XncggY z6JA4&51p4Fr^Yui(tPs%<-}-(J*wchaxUe$(MNJGWPxC)eMPpnbhC^vz|t1w&MZVe z0de($`>Teed<%;21t~o(ILqCV&%ZYM4!;=V% zppG{{^LjV2>L*daAF6dIYzYG+D}Hr@-6s?61V6HpVoV{t|0%05yxtn6e<84)8+RVK zdCHiXWA?N=+K@@0y;ZALeG$Yb`VAMB0Q)q0bo37BbqvuN7N#Eu1Ud!Y_7?!+CEbn1c0b`%>SM)GsRH*2EP!No2+|);eumq&~1z$ z<-+$a<E=*&J1KFl#4EP`@NC;Kx>(q3ClvT`3%i(7eK2{lYa?HCgl0 z)dyGqVQa$UOM{Hu9@s1ge03X5nx?OXrZ%he;H~m#l1Ka4S*e2oNcY9KgA$?nN|*xI z9VneWeof5JJ^=6&tOkBy{)16knI~bS8uBcGeY_(H|H29aQGq=wnIs zoEv(}9P;soOCZM!q}uaP0jxD_Np2||T0D_&ye#*5?K~wDG%EE;6B=|*4K z^GK-4k;F7-(+0+SFVe&kQrNQsb9o~%+4(*O_sQx#^LyV<5-0*e|FSty;-E9``HOs+ z<;Im$OC`MzvfR6%DrIC$fiOuRcH`$rA(RBjK$T8bWRy&{NLgM0_{+I}*p}`a5;=bU z>3Y2`eUryYjrH}Z!Do6RdB?I4Jq3U{r-A{ShhtwDEk2SaJDTOcNL=Hd-c*D@POI%f@r{|#Nk>|Lq#JZ{9bCc8jg zr`vQQIF=pd+P&CdE+F!F-;KM<7GZ40FjLNJ9NYD)_B~K~N-e7~;nrIip~<{fiqSPH z0kYHnmXCZ*CVG3tROaHM-fx{5oin!VL+}kpw0i%{kogrU$9lI#K0g=FhrpRSzN9k` zm?_XO^ojJmQ zve=B#fl-Jb{hUi@yBKn?v|skm?{s)@I_239i$$IP`O>UEQXX60iRfjyZ3F>bMJhk# zC=iB3Bw8B3KhsGS*qeUlRy6LG5w&imOG@fwbg9ZFqj&%0(H%>A?0v<1_Pr;|8e{e} ztO@Wwvu#mdWdM~OhO~xRa>vOEEg7#;vt0&Nr~d4R5vn0X!YW8qFj#RN2ewb2;lep~2@Rt-neP zb0N`7ffwRK*!$feDgA*oP`{L`HVwJ8>f)oPhk5?Cf*IXta9y~le*Ka@EN_|o$Y{|6 zj0cy{`$?rTb$6^Q{|@1xza{P<(x}DHwgIoQxmsW8Bhw;Hi!=fqFKZW2U7eXglGcao z4)#Rs@(-amm>$dEbx8eIKD}>^J zs*1Z>TniL|KI{BwGroWXL@7JVU}?1npme6!xTp{=z)(?X^5%>y+LuW}k{0iJwH9nP z86#L9kLMd*7xnY(d?cQSE+pB`F}*^D;s$DIUM>loHy)@OoxB)-ZTqxB(XAHxsK0IS z1y7Zv(6iB2gK%QC+t(M5I0K8_Z%AbDtfV{S`eya_${A zUMkm6A#FRmXf2TtzSXmH?PBbmVP)5vJLl5HCyT`nXA-jK$O7qjq+3$+lv^a&CkQ4@=%Ly`{RP0n$7XW z{F-u^x^4~8&`#XF@Ng*Ra_ZBiP{;{s3JkLkGzOkh9E~p)#|`7LWtFI*N0n`9;}J9oL5Fah)b<{Wo@6l_cBH zAo<-s(mHS`LUrZmIga%|&J{IoT@G^#kMzpj@Fr8vrkt)(%jap|Uh#OlN@?n!6MsM1 zn=x?Vt+;;x)>*;awn5+u`wn&qfjxG_$EUbT@@@J0nQHL^tMSH3X<}3k`Y!(Td|%z> znA3Uz_M&#Os|U}d^Ya!``XRp^G&EYd6~A1F^bw8?3Yy8fc*F}{-LNNgDri6PCmCdh zp*_oLDK0~oq%4BB1sqvhxcLmt?dv;je=7Cj7F_Y4+9+&J6I9{t?Zsq(u#1O8tiCKR zkiS3#P|Ltcm@49L>bv)ZXCgzH3Qf71wPu}j_YvL@_xRgQhQYn>{)oBFJ^Zzt;X#F~!bc19 z!5#rdFZVIN;v(I@EceykojC!_D>se~jbUASMyp<8())6GWz8NH?Qy#Eb{TyC+l!vXs<-&OrWDLlhTk`AxbM z3ERu4a4L17>rH?|rIVa>`H&cSc+~${bR_?!5vgah-KIwO+`)B+8tI$)W{=3s=TOj)L8j>fm`lZCY7PJp(}yT`4jS8W#4$$ zX|y~-mC~|4gdord!CPs)kRM+1FV}mFILTp;XWEgsT)tZquP;?#Ek=^#LRc6Wsd%M7 z?h7cVqnUveh3k%vHD<5j8zig)q4*$hy50#WwFYuuin@!4W|&WA+VgH>-sVX#Z>^o$ z+nqd7J_Q~`ivY3quel!hW6}mD?(5}kD>E2}Ox+DKeu6%_5eCXn#-T##Io6)NX8qJ+@B7-AKYUpRhJ`su!_uF;p+fY*DEE9rN65*(_r1UB^&a=d zursMiRz`{)0U7f}3C~Rsz;19;LAd)32c&9`AUTS7&hPoNLFT~KmF9pxu_sfOW$=7` z*B4g4WBaJIcABZxGvIZAISVd6D#l@7?fKtLMjXnjiPkJIm_wpd`j>1O7g(61dK&$Y z^!d)NU-6^~x+aHE{>qRn!4M{$qPk@}=0@<7|A92A5Ij z(d>q!(V6U)OO|k1S^VfrtD%lE> z8^l7Ki&FUZI=pHS-xy=3U%UPu>!y%k0Gh1LteDtcOsf5E7%Tq4ZV4-#XIxZ7zbH3{ zfhg6WaIaj6(^vh#dHtYF$hIott!I9#d+#w=EuQ#)D$d zTbr&c%WXxuye<>UP43w|@JxOaa@hZcOES1P#piR^V>trDOAU;C>AFvBTu#q-AA9o~ zugm>0E@UG6gkrV?Zs1L}C=y1@pd}mb*T`!J$4`^s(X~O@&&zC| zn?M$-LN$KmQC0hi93IDm1qNw1vrikgyE7C9`v>K#KTmzjioJW{7NAKl@r^FqMg=5- z^-aq5E-YWZZ1ejI3XM-6G69e1ivN?^!hhK8-D!BS@kTgQ-u?nF3H~osL8ty|Jl?-j znXAl81Dv0auc2?(Tj_E_Xfn~^LTOXGVFh_Q{&#%=o!Q(hcH+P!w7k?+4P+f|4Bx($WToc-c8)RE9JX^vphSCeS!` zMO^MxggHhW*@&*Jd!}+$M@dK$HO4R^Q>dklA%%g+1IfT#?D~I%)EcM&-ZzL+jBg}@1N&*{&38z znUR_MbuZU-Ugve5FPFKHZhPm4PhJ4Z$~b{2cPpI0lH}n4i)9<(5kLD-t~(&L*h@sB zwmX~=U~B#fpos0%#1|Dg_6sa{N*-;$1INDLb3!ABp9uY4Ci;V$hEzIyr!$4bLs*Pq zK?(F30fC>J`$u&?fo8w{_fK|Cpo{=*vjivviL?Cwle^1iljo0F#vTe^jyM$d^~Cf` zc~>^z;nVP{Q%e5-c4ND`fOvru6ru9kbDw@5IN*8}@yIuGVAl}D$5c_b~lj<0tt4v!DD(pc2zJ{}GT#Oj`gng7Qc6tU5PXe)FRHyN`;3)(RF8 z@{_j5{6Cifx&FV?JU_O7Il>Y!9wg?w>+*dm8nh+)vsNjoOw~ea|D$^N;QgwWjQ9puNMM8&2Riw6`v5lnMc2 zH*R}4(#IYonWh1LG(&zbdv6!sGSr74H*z?R0T#R3c0E0^pB^PWv#8$E%XVWS?$!=7 zJb~A0E388m`rT-dw#EplzDU^{o0WThR9Xs3_}f?>+S-?Bo8XX)%1yEcrZW;z8t5duS-a`Zg4xfs>iFNo0L)=6@X0H7vH6 zjW9BNvhkC_(Kg&-2IN3gnpu5zm~w<@yYSlN^hSK+9srAnY-17!5?UKwiQ%0W-#z30>7_Zg<^wFe2-(GW_N*tsNif;W`LVf)SCdeCllGVnJRTp1&#Jnxz zGz9`%ya%LdIzR|LXku`RuhE-%G~-aKx@zaGZJ~z*Ymr0t50s2W#az7XO??0vq)XZB3WRyC zslP^gCm%=HkYLTwbZZWNAnm)LmSRNS zyhw+1_&J5y(ZI)&4mDu4<54Tx0yFbWDbsw@+4^6WoH7iBX&1ih&x)ebjFxaxIKYgm z<{SRbLngy$WAFix<2t$<>9jGH)nIFOZCBY40o$FD-y!tNVEJj^Q{tVZy~pT(}oC{Q^)ActOfNBo=h2DpTph4)iG{#TL|eK=g82! z`}ybeDJ;qgOZ<7qkE zH=qO~9jX*);CJ~epxR&{)@T2UD*_0p+7 zF_ZjU5TGnhHSPA(_Ik^l@#AK){+pj}JTn>A!+!FB0Yz7+Yb)p|`YacR>8s;}U+WF;mjV+Eqi@E#R*YKEX z;fi7XA{bPyXk&5z!NR4ewCR)Dop}j59Dj~#A3gTs1OiSfmrlV=`l!+&0Fpq2S`Q(% zXP?fJ$^%r3n~^dj`mS;5%R^$kK08poVO0plwonSDd32R#ao7HM(G|+>VdT}vUAxO> zLLh|o4o|lFR#iI|cjs&p>l(Vf;F)SvvBbFH%uj3ix~Ns*i<}>HTRGKd_@sI_cJM(h zvt2Qs&Uhl^IL^`4tU2#qYS*f9yYw1ki<2#Ln?J>JfX*dRc(P`Mj_qd5GLmtwioR@x z!|?GowDdW_E|}5Kc?yJ7|L748(+*-dnU=EfG*ucfygSA?Mi<=6E!acDUcdRea?b9| zR3-X5(0Y|KasnlYA5y7D-6TdqjAxEC=Vzw*y*I&qA_x!Em_(a&rSdnGq`At9jxU*3 zM5NB}keR`KfAUZFXtG%)+;xCmRN!Bm= z1Jq*FboQ|OPxmx`7)=Og>`%R=>E$J6BUU^f7ME-x!8S?M7x#>zui$2A=oBKTpHJq0 z^TC?@eCDa}^9y$!UNg?40oB_}ggW91eRNnwMt}(k5W^POfbL9fxW5MJ)o@1UhJff0 z&KW^vF3^uc^{ji4_sK;OsTm0N-%S#X91!b7TAzHrTrp<FTn1fw?-jMl*u=M=U9tuGKC+pl&yEFG^6#-{2b4*8>2uC7pz?sCXQI}biMz07 z_c!0Vazpv5(xhJm_&uAo(dp!#fufKF-u+AWQ&ZK}*3G+CQ8$xr`JUW5<8`lAGYAl0A@pE6(2ha7mGdx&N+m9>y$r}>=|O#nL@Eptn6 z&`F{I?Y?LJxL-gK;%g|w3=POF#30EXXX=)EmOcnrmBrr*#H;S*M=IR@#%MWOU-s=g z;@K|DdyQ#ua{HWy$r87Y@0^gS(f^=TYsj7B z{jx6+;CMi8shkc+<>vY+zi=IQV=$KwOn9(Tzj2fdq)FCu@y2U|CZ7xuCws{FAD z$x`0LIX1QhFPChi+dKYh7X2$DE~z3MhhX<-%0w1(tCjTWjdF_hqoVz~r?Hxy zYF6LkFh;z~lqUAtOz84qejCNlSPl71q*51P^f8$SJ>ngtE z5;?mq0R2;_5Bt9S*51W+OG>z&rwfKt6-&?GRTAxkVd!V2FyF_MTY@u4scVg0t!+X$ zB63r@yxQRH4}o4ZDdsP0R~d1mFP_gMjlZ#19%ILW}5#1Bwsu$s{ zqgzMd*FQM>;L~6OGlSVKYWgzvnAVz7F5Z5Nb-8$4;1!<5JB>T`n_vGH&UFRiVH*WP zb6cFIu}1hv_C~!3+%#_~mN$eAwEAPLJc`CFOTWEVPyym3RNw0KDw9#LkfR|l*Qk&7 zg@9Sikxl60QFh#%&Q~}%VZ(S)G!4LSBj*hlV3rhqjGsATosU%dE7cTj=Xd8g&JI`j zqQFj^9~3wfsL`R0JIKN9Si}9;mK#ZqwVl@aS9!&~LwxJFbLI0JU+ zX4E9nS>N1}Xr%>EY1+COe#6qJL9q1btAzaB%Z9CCg~FBF_K}OsP?1p1V{}+Q(`JSL zU3pu*pcY@S2}fg_lk*h-eH?1uhG@_~55i3k^`44)CF;6$CY|MIK>nZj(#RH>?ZU#e z3E!3*ziqSooz0d+wLwRtXSMj2w>oQIosG9d3F1b%yV z-E;K)ey603AtqMod(_mI9krEVo|>ACu)8D0^fp|MH$xDMCN;0UQalU@7mAH1&*+x+ zo;Z!#qGohSV=Z2lemggt>`8m%o!n9OQB>J3iJg5UBLj?1T!GN6I=6TfdBQ9yY|QjCVYs3PVW~RdGE(jOEi3W^Z^WAPF;8diOFZSGq45kIvgj z9Mi;`|J0XKWy0s5I$t2Pv0*d_jShTFJD7d$0{UcOZB5gw)T<%C+S+E=>H7m1{r8Zs z#LBcc$Y6U`FZHOayD095J9z5+$IBr6G|(-^rtcqFZz$OII~g~NUqgSOA|w5D>_Kz_ z4^kl2?f6C5T@Z=7byT%JREim}Xf_YjQi7Q{f69E&`HII0FZY1+LwXGed;mlJRVmDx z6KVa9J*6qg=URH}WGFK05Pgl|XmS&VA?eop_qoA}=?feZKa!V_N{8CN*wN5kVPBUm z4AG=+6QS+xyV8uctrZ>E`@#RuS^bBkzIO@_Y09JZ#ODDozn=MzyV^U8&Zs81Km8P_ ztYSZ$3;`C6R~u+X?zb;dLy7BmC1BiSt#4xnLjaL21~G)){-b$b5N3d!pLNA7olTJ) z2t23AGciveT?FC63E}q>AVLDcTr9{BAxdDeM0B`=cyQ?e3i)B68aXk6Yp09glJ|$7 zH8vvCfVdO9G0fc^KF2%mKf`P{r_q;I299f&}tB0DpCJho|3c7y#ZEJd{E(XIS$!q6_o|-)J9i{CzPe0u^Z5sFEZrC@XL=N5goaAjhU+@X+ zwc!fkN`LEaZ=d;Job|YPI)iy*+gHW1sElb|d80?qyrGM4hnm9Q*P%VYL)d(1ml?c4 z_o~e;Za2c*3e$Vh; zhR!v%>%^JsC6}iho=SCBFs+AIp)Ejed2kB%D^%00?ryfWYb%Vs=>ca^<`w~F8DDgb zZK+YsFMC4t*#37&2N2En;MAhN%!>($rKxl0B_eg%&Ur~LvXC??{dpyjyuJmkVH*VA zy?nh7!uw-6btc%j+wj%_i}*&~*PQP9 zjE@p-Pvj@)zr!GEN4-3=JxA#~A+NbUA^1Y>pnjb~srhZ(a% zuV+KFzemI?gQiPb@0_~RjY(g^<~c8nWbI+Z0XPGAVXRM3D*WRW`iZQO0r+{+;5L4* zcMkrV*LB~kli9-resziuc(e0=BsN7;O^ozuTXIFcpvNe0{|>ShBhT{RPQxducc6tM&Caz=KjpvDM$!tVwy_<|v@*O+e5ch7i?fMm<#jNEaZ?e}~lzBJ%l> zghj0=mK0@J_ki?Ri#Zh5XBU&s>urKqh|N75=J_|=zCt*CZ@+i2u4~O7NdDh5>JkwR z1PEMCo?rycq}N?jv@K7M#T#F=7$Ym3wTtYPy>^om`f~!MPO>kstpxzhDUyA)BHOjF z`KR|z;vrMpIe(>_GLqhKb1@qw>sMtfnJM^VmvcZEQ6QI-v32v1CoHQRL?$(jZ-8KF zuZcV8SV0KA5{5?anRwaUj6W-Y0bA)g?^}W>;WcmcdO-){sO%>Kj08*HJ!^V0ua_e0 ztzXZ2Jjhc=X7$qXQ@oxu^hQC)e#I!}j&GdD5ncjqKVsG@ew@n))L;2@_M$1&o$H%t zyAg0kkZRsCShahHzO0A&tgPsds1Z?g*4&vG)jY8Iyj;4jNC1l*1tO{_zU?oJU;cR` zYOQzH+|9x7MbL&>o)gSJbz+C0Wr$r$_t-adQ14D5Q6BLx&tSnA!0Q+$APMRSiyZ5MQbZe3-k zrxry&#_nB5D}!`o^L!b0LZp^LqBBIjab$Y+d9?d4zvVcTo@yS1vir{d$R<~DQCIT_ zPx7x*XYrakGJqrx=wne*v+i4a#w6RdU2g2Xl(v6agz2JNw-~4KOKfgygG7v;BJoq2 zyGgc#a{RIFViFTe|FPP#=5C?`rPx6Re!aO$07{UUft^Dm%C;E2KCARVLHlRw2redT zv8(8F9)NE-jncc?VN0CBNImG}$@+SkZrQe&8T<6QBHz8(QbH?p=zKW5czi~3Q zBcoC&HTVBa*kDy>oi+Ba3G+~sS=UaVCLeo2;ZAy($am`x*9j@&NX5HM3mj!^B6FOM zA=<7Zna8j0UkFj|R=HRj@Q1_2r|GtT<(&G-ZwmQHm?e@@SFV?G6MSD#ylg}TbI9Af zY+IWn(PM;}V9N~8X}&vukGM-rOeHF;G=wPy1!p`cE=LX8ju$8c9AdCzI6^mddi-8o z(qb|`#6hm_vr`j3^fpRv<952I+puBUJuQr%&dKrhe`mDXu@0 zG?)TQ$mUwIsbj$_<6+@BTQV{ncfKXk*Hvj;H|b_Yjp==^G}WV13?v>+maMnxGEet< zSKh;5L9`>Q=eE5bKe_#J|H)HW27D)sB)OMLt99ltm zW^zVn%RFh&Tw}rqCZa!nrEr(2%~eow8)tWtHc+VNwXU!SS+7R1HfDTYs=#rv*qlaD z`ZRfV9B~Qyvx8c`xz(96C!^Q3{CHklB^zd{+Ufai({K`%Mg&yL3>Pm@IzfQbgJPkm!7aWg;wINrVvqJ_T9Jct9uJg1sI~BDod%m3W?* zJz~hpo-?yaezf94N8Kod__`B7LMU)(Y5H&+%k3IY7%xK!=+z9ImxBw07aYdyt$Jp> zU2?slw5e=cge1^2*4}FMWc!+jG%97LbdaOA*O*8RYHx~xyi}zM9G^T=(fs9Y%_jFI ztXzhPyfK|Q%53O#Dsi+6kl=ovc}SyO1pkR3$GdXdk$`Qw=$LA{TjTwC>T4~TF%{1w zmg(=l_B60$2(G_+eWhk`_gs(qGj%XeT6wR92fZ}85#)%i)xN|Ows3Lw zyC8r@V%%KP!8yIlSG7n*eix{{%Bc)i1X)z;2{@7F{XUz;x1^@2#I(m{W{+3CeDbN@ z(bhP_oB|&JO{es;BlOFk#)eW-<=mSZxE>s%^@}_ioBdF|a=_D_4t+L-5i#n@`H`E!Rr38Iu z=&Iyn%97*_W{uK9kAdVKur^Phnz&xm)bHjcfRIVhSOY1D`RlgEu4)a7qVZk+N7GjF zW~Zq}&2#5(Csxf)+OpAAo2n(;m=+(*X{O?hKFW(fkXG?rztzrSU&|WZ zITVJB&IX_t(!9%n%G4fv<4Sd9gfd{_vCSWz+s^Isp+NGGog!}l1O;!u9VGOwGs}bA zBSVCcp}wxR1&f0jDU6>t{RYfK^LNwI&hWA%SXks&>a7ghYTFJy&oDF)DY`zMq_;v( z#mxHL$V~Ju7HJkU6P4r6uWuV6LO0c>*V&gP_aE<3o`$kd!s1Xn zcM#ff)O(yRJX|X4Tt&|+-L2Sxz5)v}2~yQk#_Q!mBm9K0YwJ-HocXWySG#H*eJJ(V zhmY++Z~j&NTkNKB7ar8H#$tRFTp-Z+fFS+P@8(29yI+B1XkCC%JZ-3>srRsAFSW*J zp|^;G`mH}#t~|pel%l$I7i?9s&eGTJO+!Zxb@l&%OZRH-`O0nHV&2M#{Ff!pXWnF3 z->IC_|CChqH{0eUB)_80A8vn1dd4H$e_8UgLtz&LI7-#@72!^%co8W55Vtv+=7}ij zErm|TLys9fbS7Rz2w2||4t5$rM)`dIIrsfh-Pisd-l(?cA+sk==403= zVNtt+HD3DeEa6AHAEx#)9(|W93vu{UaGp9fjG}8z2*Ad_&z8_1hxk-epG(o3?3K}b z0`kkf*QSZn7x9j8k9PfONc2|j{Zs09_gvgG&sME&{ljwl%jyyD5P>wgLV-(-&JTis zw2i;^myOsr*C^lZysT0o{8Ir2K^Rt_NFC9*r-=U{Bt=y zxmLV7HQsNA&B?~=7_pV(RjvF#Oy1{0&^7IMI3cc%)uI_g4_xd!`(F6=YWejvW{MIq zt#t!+7Wv~uwRF#Iwmko`%qhKBLel)<0`mkw*!gksUltcD z7MOfgHLwC{a|eeN)z;HC3jpANAzeH5Ia#X5{rJA6wbuF~^_Z zsxMNJvj>8QaarHY3lx4MCy_D>x3X`o_d9S;J3bFkuGcg9`M1PSp4_Q<+Bi?Y>=W^; zLtB#);}!A+CaPts;od%!u3nGDo{=F2s5KMuJJ$s5;Z<_@m#ZP_S6@Y)ajQM`Ri~~% zmtJ=$km7a!Pb8y|vl2T}m||}~-s62QXq#9}dC#vhb^mADki&a!J<}>FlhmXBE>m+Y z+R?J*Wsc);mvQ)9a1^dbvar`T_A*1#s5$}f`>fcUU>oRuMObRgd|c<;dabIdZvRWd z`Ice@ERXPo?2063{aHfA&uP*ASI)-8#}kqo91Qh5l0t1oYS5qkf-^i^M2?4%u%>*f zH>hWo9>KKS3A72kL%z%FGL%eQ{LDl=Oj1DiQB7L!29>YBrsVSEDuHL|-~d>x^;3TK zNDT)7ZNEX(1Cy7a=Z4c+6_`zYR}wIC`pj$!%JAqY)snQY>$w!GFJth~LkH0p43*5H z$dQ(m6ROATF-U$;3`p?cZ=<59Wz0^YTH zI-8Ny8qEaY6OrDxeoz=9JK4A}D*6CqQ2-4gY09)?ZC`!7;}!Cl>|XaCy-~^TV->on z>*t>HAmiDeeU6CxH(Rn#%7_+y-WCFKv%3XMOA@|D|_BQ_JH7E%Lp6XsY z*h!#%?rn-Q$<`yxic8-KJA3Hm6AtyiHNOMd1y3N5j3CseoS}6I__$G5Mzljee{{Mq zu`6IdK2qfHiS*@rHg1OD*xN^9)^oMo0&;e387AYj+~(T(tgb&Gc49C7R9P_;)8%2P z3raBN2_L?ST~ts|Nj7XTgv}A_^o#>Z#Q|VgbXun zP6J1++IV!bL@rs~%Ea$~_Rt*7SM-HA?_v`IgtV6)*(iOkG!F<^bZ+;3>j!_&CZWz;x_WKlD(3@EKbDx&x@7$ic!;N&h=%{!kuS> zYql~LBkD?e5O)oPi_U+QaWA>%q@W1Z8#!5-QB~EuwI!CWvm>xrpeIe=T7K>c3LzNDHiJCf3`jjVFiV6P2{%2_q@A4_h+F^-ZnHe zV}%t}k(cz5WX<-^{SzhL1iA71uPyCnoOnakQtnwXg+Ex8n{6@EXM?iHAszX%q;(Q) z-%JY%BNuP&y(NeaO8z(_mYJL_lbt->&eoVtr^7N5%T zD09D12G=_keXk~;EF|MeAxh1-5maR9b)jo~l?(Iqh&}Pb!fS?YEPj|$aD7L{t(Bq2$W{?9 z88xs~7H}2gUI;o5ch|d;wLSL7khTr=Zem;L6v{$n;-n*mJp{6-ii>-pNVOp=fz)8Y zW!+;RPSD!%eZ<1T(xUdhERTO)rmyFW9cLXFcJ!RtpSY&A+DB;j36-D+IkOW7&tia)|CUYo?C!DZu6WhkF32=+-M+X8YVHa>znhX^{ZIsVa@!43o2$({`pRs>X{zJV;s1DD{kyV4PZ zvc!TW~f&Uo<03-vZOPKq?zR<7LFyum9KS=_41ML&`J-EK+B*QG5 zeh_f_zzfC*Lt<(Sf(pOFKJ%Rw(f|nh&_U&txc!k#dm#r9n>U9`;)4!)L*63G^uJdB z?BpkALCMe62a;7pe^4m&1q%HHF9vCdo7G82HXx<6dM<2%zt<`wxr>??`Nk0lwmFe; zy3X|iDoa(EQunc;`@u{!BgkJeYv;s&t|WNZzSt5$L7d#lXl5zMQclYA3X|3Ghfi>+(5W zkoTf>L&-ju(+0wrSdF?+Alu=ia4N|7w8*1tU%j0cEBu(H52)oaZ8hXgOR=-z4f9}!kxV};pP>xmLUr5E z_Vug?0ZGDt*af+Q4D+_mzwyHqEjhdG$K3{xj`fFbzdoCY8b}5+e2FatT{Q3f0>qKH z4z@NL;(07|QF4oA6M;_uNTBJ{zpH@P9V?khphxGNR{VQ13T)=kKduE*&JDNj#j$jc{*7FQE^!f>AI64!+6X#nYNq571Q7^Bi>HOr@93) zH^}jzGb>;X3kQk&TaPU ze8j6Zs1fJV#G3{F+$aSK5vuw-*kgH2@MhlhsNLo zXsP5&bNZJ(|NDvKO^*fE28%YyMyk<6G@{PNAuEx~Q32becr-?1RqQlhXT!7>AC$(- z18RL&&c6S7I{>U$^Oj(cg1>o(UC_KKAV7E4r2ygvdG*@U=#){xfZZrjBn)E>HbvE93~p6AJ?O9?iN2lJUV)}d zg`8m3we4Nw!c&b7bZTq=t96g99s&IuVIItw{xs&PQ7QZoZ*H)2eKzG9KRW0$bnrl2 zyZqDFEF{g+1jZ)St;t$sGQg$ui#<9L!~_smN!^<#?LId4BNZv&sgxXk6m3)5 zjR?9L_a5-Mc?LyAuD& zv5&6cVK_pHC>5iN%bsmBY}DiIeXH98z)FR(ej?v#?4+0-!sVBr!?@%H4+l<<&g%^##6x{l#T7ndCMm+YlI z1g31+9b?tJ;M6d7@?sYt(v~fuArGq^c9Z(iZOp=aK5(vpe%5(ChSA3?DC@nIUBt&U zIDAW@#OHkC8w~px-N2O-ef6U0HyYsFk~?a$NoAW$ z+ZY&_`Du=g{5!?LNZL8gt>~UDdN#*e29KyFb&_#(t}WGNi4hQq(qDE?0jpz|Z;{_o zN9F}*c{A%&K`?pkHGik_aF77@YwyP>A?*kMSlY!01rOdy(`?Gx9-Q?Ch+ULT1LxGa zO#XDwsvK0`v^HZOi?Nu<8lSkZPEQmM1k*(XbkPW4M% zdhb{@>bUoeepQDXHb{4@Uscx87sSCD=(Bt1{ktv`^8ItRpY{IyY=_EQyNQ za6PitBEz+AYS#=aFW4^rQ@=KKe|UD&Md|G>)})5FOvnzLU*5^GkzL$jE}TyO4tFh$ zhaFAb(^7?s&G%C}`QL>6SrM_;X;KDsp!gjv|9W9Ck0}cln9WP?g2jT;O~xP}k|Q!! zBX-Sl`~PXV7yPNY&TBbPRhg+`x-R|~CDCrHD2@5Cq#96`IA(80f+- zUG`rJ75(zG9q{NQMob{FsjoojE3+wr3OdJnPu2q!xmi=a z9YCOwdE12Z^2XI|&wne%mV?p~d@y&;OpnoVxn%dBUr?~&K^e})^0sIg01aZ4swymV zpZJADjDk%ed$<&eS>yr{tvIfX19H;$UVdY&PyMDzp(>0DiG+k9kZ)+v^?`dFLrKTF zy2ibn%9u96$aLDtDN$}sH?Cc?G9SUxc>gA%%t%#8P49vRq4@Xx)DK9j_M#2`SeILl zui1(q*)B<*W7|*rf&{Lwr@d!U2Ii>bZ2jEvlQw0;GTjXVc^tz}&EgU^Z;-O3hd_vh zOg20PikmgJ$}S&#nb}a(l=~~ko$fz&aqJ_+0L~m5sJjj@T_rvYZ7sF5HQ`>a2FW*T z%-JX=#uKLmhI|NAhL|XbRN({pK!OhW1H?V|g4dhpf2HdR3U_9YA)ur!yd12aqAF5g zU)0IlKN01c4spK`yw8gSh}5@GaAtY;d`!&>RpuGk7;W>J);GYbdIXZNFCL0o%=-?9 z;K~|0RbkDh*i$#jFY{GO5AaL9E{#V9`jHQiKkigRlZZ=ONW zvWRDOap&4|bQ~bKhIu-bS(0PZo(BqElN1~JxxNb5?)q5#Iu*!$=ORT+=1ez}(R1!; zzc=FDUpF}ZiRa|fe^6LpJf3CV)I;pbDEj)aJw(ZKTimAW$_@m>0m=PAc!FN$A!xG2###SI@!5u-K2 zGJn}@JTCUO@jSnAW`X=DOFziFZL`crugym}sE_nNHK6<_Qk+upU9X?Q{9>pq!cWs# zCyD${6BfTxvnAFCP}AJGW?cqf`d_SO45;4=n6HsCIQKqP_}=-)_NI}S$f?yge9fE_ z;#L+rvKoy>!#gT@Yl^DdH-KD$v`epjFW^gN56rb+nY-ZrtYYxeRU%*YG{$=?J z{Uz8~zm7S23=@|IWjWTV`Kj!+l?wvqbTI^E`ykA{83Pb5yQ5+d=2- zJJYlq@8+{*j&+QemOKbAO*373_UxZBQZ99{bk7V=JPB5))P``g+Vyo)-0?~^)O6X! z2i{b6jIdVTVM1 zQiU>>`#^QZ^o>>GuHrir_kw(x4@E2&i=OO~89wxK-_+guXro@b>f%1Mdo9umGF^Y^ z%lOe2T`0r-UzSIA7t>Zw3cWx5ottS>c)I%SjGWD1#Ve=x2DO^(3qh* z$Sbze9XsSbNZ)^yp?y!x(s7c;1p}2AF4tINSQ$QCRqLLM54137=ac6=969Y%W;}F% z|KYyy=oViD+I;}!Fh@;kV<2@E`Lu*jvbHo2+&xJ+AZMhAW!!Mh{V@azkIkZ0D$|NR|^u zZR9-`)>hizS@z1CFTdv{16|>WF-xEkjntJ;Wfxv#o|m|NNbiGM$DvrY4i2^gb43!a zonq5_jZk^~(0~10ND!JebHhbyD%qqo+1|rzph3|8xhm?XfaDUi>^_#6C_Uu#Vh0j= zFLGCt%Q@Y3^ZC17L@WzsG%cZ(y6oD+wY9>12gAl3X6M+`E39Tw&}vpOp73519VuwAu*OG!qkAi0RmCJrGUB z%A^<^-;cJX4OH#c{WdOW)tE(FZqWu7Ly5(+1D{rh&F9u@33}DQ!|Q{&YYj;J$n?0& zb!LYhGK2o6;y)NJ%JkM+kt4ov$YIF(N_M9d+n@O#q_u3&iOBdjo|Ih3s$9f z3lK#&uM2&Fh4{~87&rm%k@OmCox_NCTCxZCu2^NE@v6F`4v_ zDl;DV-F%fXCS3Gclmfhm$R5N6pks`JA=y$#nsvqW4<)ofo~UoJ)iMK?(v}t z^u($U%})O2y6j9r1Y8#<1rWoVJsP_zMv_+Tc<2- zbI)1OzHyN~5r0FqE-=f(L5OlIG$(sH7HOt|T$%})TA}qY+#(rn(HwF9=a3e;AP?Ht zpn$8KUhFi)QSBp&>~qPFt}R<%cRh@*=6_Y@H0T(pf>0Qa!e}ip85TK6dzeiwHNe7z z|K&nY<66DOo<%#G0p>kqU=CFUG18%Y<4T*p^Vh%205V9a1@YA^B5=D1U@~0r14NQb z0gymJJEH?2pdSjH=mXYEx~5DFz-mxkge#~*M`jJ<4snpK+L~c1toCkM4ZTjBl`6!$ zIgWyO?;8t2#$Rw|qhOC3MwA%^T2W|kt^}Ta2uSP)@@T`r&J+B_SI>=+G0E0uC!zVb zI*6omP5_^Z`WOf%EAv0sC^+~Ya+iR^=+vh&shM*@u|`ea$V_D9!BfEH?XL8FWlB+Z zHg1rbKy6jD&QMO-dS)yviX9?K=0wAEe^KyE$8t7r+$10+_Ddfz7c1xJ!Vy zF&0#&w9=5RlC#WhevgmsxY>)F$RI8SBYWZ|2Nl}Lo+lkH^8XLT67+1=>8v1az0_9 zJG$t6vFHTK!zt=ZP$g38oFx3}gvSnjk&}sxxR&$?@80z>m}BG0mJasd=9FT{ySKPx zgFy+$SrS}c1OV)AKV+aoj!PjJNqmU3xK+Ql7oDMsTl)+xd+#g^uE1yl#_oIe|8aR< zDB+?CGSj%RAq>?4uxnZ$0K%X0KUY)KE1d?V(jh}E?5Gg8F?`!`Hwt>x58RbuA(R^cKy)eZDOnA(kvh8w%awkNmbdy9dXF5E<&-^|yM z+lSW|l1@U;sh_)Rbfu+Rt%>-SB^cA}ICF6$iRGwDGJawV4Mram!?KUL%VOTl4!dbf z$vHW4(DHl?20X1m^55;qHUoY8H{ZtQmq(KCOfC;y@iz-XHN<6brh2Q*9%xGZ%(Pv_ z-VcRBTEf)SYBwzJKZna{`(O7`Ai!XRG8V)e=5H^pU|)g2m*2CLx2X@of>B~&MD|Er ztr_`;?W!jO(KG=N-x~c-SsKRLItrxhZ5G+Ks!gP15K9<=d-6-$E@TGalbgjS*fAIk z7PHsQe)7{C_9a0Wl90oxw>+t!;^D~*e&7P5s9Eh%d6Iw1vmC;=g|Pn1VmXoc5l7jC zf}0bQ*mktII56hHhjd*6q-8rOT9Z`#-d$ML(Gik(VUCh7N%m3wN4Sg)$Zr@DbHJy3 zt5!l=h&X^NFBDxa-i8l^i<^%doFlP^>$n90JPbZa__E8ymB9wlL*esJ==kS4@q?$(fFP9%S|yH?R5KA*CQgNBo#Mw8?Z>EY6%&+2PH9h9K)81U7ZSe`YS z)AKktV@?*u9ef#!TkelihkE8W?)GV5C3%>OvSR$kE|zlwp8+j@rSDpwd=nWxfX<#j z(mHL`fZn3^d3yH+mgi*sb`EU$24@=MSrw?etm(J`!J;C{ohdbJO@SDV`DX} zBmW#;7k#r>TSu9G>3yX&MoYTZAi+sd8+`;Q`->vT%vF)Guxm}T%VhE47swAF=?maMg1~s~VRpNypuJGgjC7 zTP<(1X&=nR=dQg^rDT!tgpB?mXa`9G;>n6+_;6Wu)PHYQ%f|Ima&)JCS%~s{|FRf* z1JMnom(h)0I-YtRHMC7X%lcv*1l<~41;ypb8Y|tAL-#tM6nrjc5 zJM6U9?eGPXlSiX+Z7l~KeLs2lX21+J1B&T>69SE%qh&QlSxR*2Kr{`WaE~pQMijSk zFVYuZ{?#T|ornXKyO&P^!?vZtn6DU%l?BUh?>5N1ivx*zd{70-~XY z62w7DU%D>^wso`6tBz9oqT|x-$^D$*j1kD}1^fOLD>Lni1q;LeUcSVBSP`YKDhqna zSb5QP>pGv9OxX)@w*Nih{O|e)|8+lEa@Z8e>ZcUjD4#xjJyML{8+}~;w*mV3-p%l9 zH%Tg)r}t|BTcJODetUY<8YcU%Z#nJNI18(Jy^NpPHoGy zGz*^E>6{h60Bp2X zq?cIi`R7gWz_J^is>sQ6d3_^Y>cb1(+3cEqI~X+}>sfADQWMM--r&nux>0FaYEUQD z+D5_(#LcYld?c^Zf3Lt1=w3P z1Di>C%ehO&)x+Lh^X!Uhc@do#%^)@Yph;3$ppfeK{YI*4a5l8L@`GtbzhS-Nhj;ci z1%bTG>d2n2r9=wA>8v`^^&QyDk+A02@`7N8P4FKUh{CMVB$`nN4s&G(C=fFc+IDfn z+`M+(8J9}8MgQnKykrKHzc+9yM-L`0J}9Z)zg8UUxd6R1LGmi$H^XSlj<80A$qdp- z1?I^*=+_y@Skdw8-GO+jobHC_rJ_Oaw1&*LLjqmpWev(zqz!RiXaM&0kr4%r8FQ*M{Aif)^WG zdzE$rEM%rmNdU+1jJrGS!Os^}Jm|j@--SJJQ<>ccDn)-U2gNvH3yJGQ@t{>7^P&~h z6p}r{#lP4>yE`dgIr5A$A%J!=+SDZ+!Ti`^P zs+Od>x&TGZ0=>T#^N1_ii*gI%9;Orb&RxKBixbp{q(%<{@+b4ye`D;+{nWAt5A7_Nj!d6N)0Hl5E-cZEh_nYe<$bmXLKy_HBx?@7t7Z?1Qn7!Hk*tzL($g z{yy*Xe4cmv!^fC0+kM~Hd7bBR9_Miojia*Zeju}*r}?YORK33n)Hzstse>RJX92-b z$kA$zIzX+)S&2j{+`SSf9)E0>5AyT|gn%-@Rau9Sx1641F|ktumm_q*XZpCL@P1wB zkjLN_55Qr)R=Qxr4QSk?%ZYG*+n*R1&FD$a?(rt>n!((gd^Wh)M#6PPYeRQpZ$xQ~L6} zR-1S7RUly@KRruc-HsKxm_ig6DDb4}P96Gnp3nk2Ip*6;HdlhCPObm$T8)~j8lAJh zFesn1CxtD@S9#CNv8!Fd7B>*e8$`R#(H}wh-80ew*%(xrSPrDeCw9b*tOiy{hdZ{f z{}{MuU9df5oTgRd-em5&wiW%~9N8b%&x@METn)Lm znd*JsPFc}clmCvr|6LVgIxt{;6eMcDCD{=t0=3s|L+hL} zb@l#XdhVNer*x=zDlziWNKgrnK>NzELQTKt>z23MF=t!bk8~HGzdzGvo+_?QvE>v& zE$zYOpL;t~K+YxX$G|ASf_O8SwQY}%g<#NRj5-@mD-(n2 zp14-MeyM2Q;;riO88K&a&tYA{>O=bm!P`|ES}$46NM2_*0%XyWnq|UrR);0R@(oFi zh`)M}jqzqK4Up)mSo=*l5`1_bnOzs#uxUPFx2^lxSG-T$3YC}oUKr-A_~>?xIeKuY zJg^7)4U51YM9HFhls6aP+<~k`yM{WszMkV&590QkK#9RqxquS+>X^oBVtwRHhy9@` z?Dwc4mla77$#WFyALZSL?zo)GY9A^Ak+w;GwO-!a$I=+?(^{1%(zCD^mKa=JNc2CqX{{*I(l0_Nz;V%5DSE630D=CWC>-js^0aKjYPa_pK>33oHPZ2y!3dK_Uq#4WmG zitFeteoUS#zr=OJHOyF-wJ_ilH70&%6oJ9R9ErH*!wx}caQ}Vuh^8u^y;UGfB{>nN3U*epJuiYDIOxddi=LZi_k z2op4>^H#tXr)*zfa>bdyP14)Z6{`gy~M>PM-Fhk2Y zZ6f7je)sYWjbu7v@g8ebykzeo`knS`*(@H6cdtF{@c^#Tk4iWyi*Y zhb5QN+ge|e-AMZoKMin`{;?~Zs^ot92~ccqbbqDel< z8S{lfE18sOQS~PmE&#Fh$CeHc-$ZrnT7$9}KBFyed$v-w=YD*bx6(o9l>wzp5xUFM zz{p#v8-sx2@u&tu&g+*XPCt0}R=rG1VeCguUM9%+>0Vjkpi8g6Eo~lW$gz{3+U4g% zTlV(14sQ1kHlvyl>He{o|DwYBkQ`pKWwqsFHx4|&vZ1QLk)%dQq<$ZxhwqBae0o;# zEyn%XPxh^P!#rc!+>xG@&hm>3T4djA+n&)D<38Ni9AFF5n;hjZ#GLj7S0V&>b}N9>V6+pGg9l)*;Qqhe3!1X`pCX$ zD%m5QpSQsQPLQm@RtvPbD-xK8V|b%w&Wh7ZkVy%>@sM1YDpyC z$GEf}``-5IDj2cXi32KZRY@RNfi-^YmJT2vfD2UJaZU4~H!#t%cMTwIWv}k_dX~RE zZ;;0W3MLRGj?x;Y8eFQg3A@mb=HA*%@@trnL4!?&NqTYTDk-Q7 z25(|8AqQ5UIZ1eR!O1?H85N)tq7!tFJ z?HbF z*L`|jl2^fr(5%Bv*xLMg7UzZ&Ae;?c+fC$J16jLSoRu8ez;1XzG2F9!$<8rAiV$0>r9 zn2CKudq|iIjOb5^M<1OBTIrSCT?i9EBkhe6pLyMN=@ovcm4=7rOk6~EqbHyUj_Y`e z5x5;v_YV`7sUNRfHnmsY(uwXDN#do2%P)hE_ug^`EEd&f^$#xNkkv~}03AQ8WBeZs zo3bC?B*cxHmEBMh!%Zt4T!{dgi!tr?(CanG>GihzTAi3wa08Cs%>5WM%h&pxOs1dU zD^hyz0!;Dx+MAO7LjUJIiAn$EuFG>zI_sL})C}OhN{KGSH6dZ!=nusOYlBL$vtCacvojWLg;i0?QncBQ#yGzJ_AZ2QA)P+Gx)66xO-jbUuXMnkYq>g0@oiNGKLYiGl9Mz`PwX(uj z>R~uaXkLeAB{NYw3FlVUtjBAO=?9ah)zVb5T=8u4VT2Kp($4|P_S#Rwn=kQdVqrjD zDCJ|jxs6b2>@C<<4-WY!&;i$&tBZYcdEKIn3=mX4Ue6SIU$fF(&ZBpc{6qDoxMVI{<%$mYdnsqRoL1NxhWpeK8zk;w1y{N zOg$AnBxqQqOx~7bOSWN&yz6u#aY?6&i%rE1wEmi3tw7QjE%(CAS!yh(aru)TI{3#R z6iVKC70eeY`+CVCQR4yXb@aXYbbRb-^OW8yG2AYck%{`!43(fWLI%$}Inedrkhu5R z$>&WO^!vqIbswK)A}gBcF_^HEsK+HY zyFG5mNp!j`GEik;DH3ms<}T-n{P@|n40YQz)Wc7X8eph=WO8fUBL*D3xIfO#z${^{ zK)A#Z4g4s!$6v7rEkN*&E&kfYMSwS4b8%r2_Xsnc%0>_=7~q~ zRjadfKO&k@E&yumP1@m3nafhB>TJ^JJS-g$0ACJP#T^inlVtsPxCF@mX4usPzcACV z2lfQCCPSbi`dn$yIz?}dfxQZHYS3kq(olco?jM7M{14^Pl>RKbpZH<>m2nS>KhLP^ z(fsau;oKIiI|fd4w^^t4-00Q0a7`s<(V(8Z39P8uv7&jcYg2pJ7_yufIOM_npas#} z2fT~U22WIIlz9-fDX8pK=ZCMV)KD%Pc~00{0xf#Som;*#K7gQVY4o!9VcZ=m6vbqJ z-DPLrLSswLn^99LS}G^B0?vk>?WWAyrew?%O#()`7=YDyDi8ruWpm4$fpDJ%3*8Yl zcu8c9+q}&zA4iVY?`7{sUanZ*EdAA-6Gt7`ga6N!=D&eJC&?ceH;+T5tZ73hQx8mF zXZve{Ze++?D*ZWBeM@IC7BJN~&2jeukx! z7=?|2nQt!jn7Ooo{3=vMY-_8AD^7hgK1 zdHfQyD3JBo_yUraSDx9)j%qlqsU9P`2X6RH(azXHWE?R79G+A75zT<(KfWEXywlAJ zLle66a{yM0oAheT@<##_wimk*Q>^{djvx4BuDD)h5(dvnr)#=C<&Ot?z9sXE<1ht> zYhOufH=bB|_$PSbNerw8kax8!dD;dSV!`!BiyiQX1qO=lzDbG733;tkxxD^aaRM=J zEE~B&SJ}8>sonsE<&#lKeVtFdl*TI;{C2uv>xTloRX!CfFX=r~*sEdLOmE@G_7IHZ zoQ~p)v4E&o9IgK+>0wmsi^#YKFe`sh5H(pf_kBsc&j_lk+fl05J<{=At0mR-FdRnE zL_gWH0ERAn%WvBs2ten(dr?C!8299;PdtYc&`_sCNg?tVQrJl(#D({B@?XTsINjM3 zeAa3`1K@ouucn7-56j_!4DnvRf~zc*fg}tU-|5croG!s_(GC5#XWwhj^%&MW+AYOM zmD?1M*Z$1gs9P&&TUCRo(&tZBttsaMo_<#`7k*l=jA9op?~b&*3y<4L0d6yUfwLZMwy9Y^x0K}E18Tf_gEl5WR)ZrFk2Zz9f4L##1d0*oj9IGu>(7Q0evNu!H zw59Tw5ujvTAaDH}qT747UymXD?O~MGP5=Xm+lm>)h9+X`zcIysG$cf$>On;!H&d04 zkLjedt`Aj?2v#cXwWie<=9rK2?fC5VSPpn%#ZI+tsnu5j8A86n4yV;eTzN==eB0bc zE5DCdnI_Y!f0jIN&|iI3fySZ9Q~|M#h~NH}_%Nx{N;9IKd#hh>(;{fcTnO>DS;=r%_C9VdM%@ZJWa zIOkAe$N3Lm-h6bu*Q%{gU}f1jTO4Rqm7b6~J^U@9~3g}^6vCMOpORzTfqw{x2=#vUlqYYZ?6{J$BJ3M=}qlBoX!VyC*z*ny;M{6 zL8G=azT+Jt@!*|YoxJy-uWFsw`Fv-vsy|I>FeOA$soSt!#-I{sQ%d^lY-{DYaO=K9 zx7-x}oTv>JZMv<83d6&X!k={9tNFg6-K^46F;UW%wQd#f-Pq3cdLYW}>lebQfgqsxVH?jdreO$8kG|DmP8D#6>4TuQc1 zwP|fWSANB>HJ;4lJmwmCfj|3fR$`l7V7+dFgu!5;(qL-&2ZE>=+;kL`_VI0hq2RxR z=e}y||F*-T^bgb7T||?BVy~Ce9OK2f`z+ z8{Z5z?i32^$BBPUZsfc;Wh|2_Tr?y68C~Gdf9{c$D2r9P1nb-4kY9aqY2sVrx(Vj) zmez{$B7Y127Up@5z}evrF}p(Jbzhg%uhHYn?d8UAa<1C!YEIW%&J9TO`dPESQAHLQ zI?J_rJ3WxYb6HxAbjf%_r|m1I1d%M+?s!iH(iB>HXod0ZgR zbQhP$;k=C92t>_*Jg=#eOvmh_ES_R1>tEYuy*w{4#px=AN`#6OC1g{YSbu!T9YtMb z#j*hl$N8GP?}kK;oiX+&uRC1_za_EVXS3oen9s9%Gh>`u+q~hgE47g-V&ACK>=qfX z=il?|@U2hJT7^A65@XjM%ICIZA9VoT2?`4ChJWBFSa4Xh(xV5IDyklLvmIBg%kPsG zytw>7I8UBdhCTA!SIjGZ&Jht_w{#CZgZ2;u zE3BKls^a8UekDS-l#_cxKZ9L%|8>vXVeLykL00~!Sw=#m--6TvM`ma&@-{!pLcw!j z7wH(xB=A}C7$nlYU}aBY7pceEf3Cp1LDO}FQx0q?g{PY*1%PH6(AH>v#(1pu4^x_o zA4-$dF!Ldr!-Y|Q)$n(QyZ8%-oH6^{$hqE+@LFBnd07UQ+0CR4aA|%!sBpT5RxaGj z>ObS!Es-f9q;fiwFUI__-i=owH3u5$eOsBUoi?@ncQklkqaBi8*zXhCZpSNe##Vsb zBi3DEL~#{rj0h=v7Oo?@o{R0-QktuxX59kUv=}qXOW<^`+t$36H)elMq2%_t1MUzN zpC-?H$t1TG9si?+T$DcVaeIT;jGC`Ju8Y<(LW?SJp53i(2ZL94Lfx-vCd zd_JW*BBAn`ir*}lt3Kc9V85(+CzCgmdQXpry(&}k38ZsyLb;+g20i0(>=O!x8++a+ z=oUUqL~6Xs9?TYOA!tA4Ubr7$iKE^>y~C&rM|9hdwkA8#y=}CX9PczQ5S;M=;;jUM zzqA0HCY-pYL@;sBd_NnV^xMU$Oq*><;YRo0ZpeI?OIx<^$y{T}gYD^0X=n;hdv0{+ z4{X&>wH8F@F@tdikTNNYcd2fl7z-{2mc}#0iRAfi-8Cf9q{k~_PE#V4fK_!B&vG^W zxU{X>O(kAwQJkeRp4aAsrX_jS_fN9j1jw1v!?+8PS-)mV=7jJ$UYeHaC;Z00w~e-x`gnP~_Fu`4taf~OiHVy%~2SGiA zd(p~ih(vO2sBG)ccl-e{=8lY`O(t{nM>F%-_cqWYbbBFkspaernSo_VPg&5BQlo>U zlGt1FG^hAoXg??y@*T=KU76wNt*p^=-0{x6IzNBV6lsozmeTWjLmbghcmtk)ZUev< zqr~O!(oLpwYdu!ld<=oXhsg++*avY){B~|XO?`oX^`QNb#wswGyZ_8h0vpi zM;|Sp`gQf;S4G1XEQN3Q{a7bGX;*AokA?Ho>Dp0S(fFN)H;lYN&*JPVnCD{32lu~P z?RW`k7RCWZ`Q92H1kkw$69t!oW-wrNnQSUf>@PgJ7f-!|<|gf}4-84rH(O2|We?@(otyjWQ_N?v-k^DKI+46{t$Oj^^>0=$Lzvh`gGeUs6F*ZU z_wEZ_|GssW?<82>?Dozrl(7C+UZB^|)T#dAFqoxPY;^ayar6eW;%x5$zt?*$kkosZxEbD1J1-q0?8%`+KCq1OW(S8{Q<3}zZT)w7tZZYLLfTuBaRrR`Y^mb)X1oib|5xp5YvjP2LBH3p| zb6CECnJM{eW6^k=sq*`y^VTsNMFM+iGNWJU6rr=><5vGLxk-HcLFmtVp@8egU%aw6 z%nkK(g7W!fPd&JGoWc+mF*LkGhZ@m2`^eRDlS>u&BPsxpE4YG!*-pB{k?YxO5bn#v zIA?*fqQ-p>$}5eXC9|uF1?MfBSJlgc{$UE>fA9PsH;xOA1=;N}wz+OrQTul2%U8gq zl)bk1=i%WQqBef#Yw3xW;TY`NlV`j!#V}~1vGqF49MpmJA+f3l)Ba{OXAOS4nRNG% zzrga%8!Z>P70>?Cn}r!^p+Pbp43qAl{o3RxJ`W)nO#3q`!jEVA-!m<#X9Wic+)0DO z)-j(IE*WCO$Y+@)!O109fqmkAAX~Ee*!LQn}G^|V5pFbEWnH|lCUBAFXed0?54!Nvf&38XM8hamiU6HZg zqQ1+znZaSuZyPr)I2$LE?h)HdSn`+%R^Y4nIrM^FDgYRbI z+mvVvEV1=#jGf)PtU!+en|p%aKroQJ5jk_K7C>YM02C`1sq7pAbrHG;zj7p}TyJcr zIv%z&+S>ra8(4>oa})#^1pT^2q(pN>mmNaiT>6{cs+#Q0-K>%V6bF@|*h&{sM3Wr! ziJNw&U_fi}Bpse60O1}picpoP-=fbmbJ4dz5!3=`O|Rg)qT~zf39o$-VDB%HfyCb} z{|X9QUq*kQ>3hex|5jkgMGR&rJ6g`7aIp&5oDqZS7e%u(T%CC z7C^^ZV%*ZYek>BTw)-9>J5k?OHobZfBnE7%tvLhgAx!f1?O-6RPgu`3908#ID+%c( z{Jgk>kZT7Ugm!=*wozMl2&(qI5DKz=HL($(8<^{Zg8Up*#s~*Jb1+6!6nsF`qQOsS z^EVT=(BaX;CicI%PW(0T!bz%=$IK*J6CTa-0W;D=FE30!e>o26C+X<^bOtfy@?-l4 zlBAP-3PFo08e5`!9nD8s_bI-2-nn3&4xXrtaaq)!!j4(1zcD1Z&D0wkjwZWcAY#=x zp+CJIAiy}Vw}lBr`>p6~HDnl;o@ya1YTS6hcBI?hvG-Y1M#hNBg&(o~5oh(I(mBjE zFX`N93_h9amEryPh?>};q`GkCl4-CQ8DK5NKQn*$m8nNp8oW8cwFF};`RI1%m$YyE zQoDTS52m^vx~Un<{I6f{PfG;mU5b%Hug_e(=COkXL(E*3*sC=4XT}{Z=8}KlFyJoP z?LWQn#?;7>vAu`?P=|0(=J(sVtllc&p9?;A0 zO#_3n-KbT%me$%2>U_+;?8YmY545>Lf8mjM{uP&~j~X0}@P}iFt#HsaK&~^i94wvV zmDU(g4@ESAVF~Y42TkP#2konZVCkXT!Ak(SOyqzt>E)UkGnKdlB`bfuSPpuo7?QwI z){8GwynneO9#Kt%z+1_F9pLCZ!Wyg+bQ!y(&WPM{Jh2*nHNbl(BiXJ2nZKxfUO8lD z0N;;p1pvuwy3Z(sZ`JAVt62hu0v5hvCIh_n*z*+GICgmVbM>x_Gy>?s|Ud)S#fC$t!_9ZeSL(Ve`}Im&mX z>GAgmDD^781$$gpqaB=o4wvFLl%13rO1Bh_@GRYX-BY5eVKz8& zF6xu_)j%&>_ToH)^MRcgp0pAaXLvX}-oB0-XkCgH@u4wne=sDz2B}l$FBxZ?RF7;C9c0g3NwW>XyDpTFZ)nmQX#NgSw+ zmJMSOTGA9~whX6^RA3mafDCq!uCR`NH(hHX_mH*oBpVE3R8}r(e@pCiPj1Nj3R8|;g#c@@{Qf6j24lkt~jBk5StB~T)mKPhleanF_t+_p# zpIbD^=D+*FIslaY{5Xge6@_bzx|f1Al8oXFybuV}cK5so)~601C3wue_mN;@p#hHv<-MWJQqiQwjtRve zL;Y9Wk!M!M$R%$j)qxT@m_D6(x;hwbWl@aPWvOA4Q<}F>V3IZh>V>|MPLnGIVKPU ze2ODPbknh;bM!;ZSAADrLvH?z12w1npr+Iw2H%d3a5%62x;oO(pF;-^1fwG1m+G@;%uPA7gXEov1 zlBUz%-pKKfNv||mdN-P{sVBVoT;!$YfX9*lkRc`-qRxQJE;Q2vmRzm>B!`DRNuuQ` z`w>Qv7P}s3-K2eYiRUpPuv6-)zd0En<9(qYcRPC>1g;G_&F!g{YLpq+WIU|Zxb!{n zx>IbnZ`s~0KFf&~#qbf-GM6Rt{9xkhLZ1D7M{SqyhRPlt^(m45?b{L4E%Sc@YoxBB za3^Pcdn0hja%1y7#l^pETM=fCWYU!FPh=RLwT!Y7$e;C_D;pv?steVh8utyeh<9~& zA;TokSrkUCFK*{M<=yxj$9pefE|yVy{B`D=Fv)WdvEkXn9sq!<^$ssHyB(--9rmte zknqcJG4Sk+mmzxB+6UvOQ>|WVTZl9I^?wVy|M@YPBB~!&n)uUY1l?FXg$Zvs7rweZ z%yXt`LZ&~`ABwD#P^s8ZcvoCxeCI0wSa#3$agY~X<2%-egy zXu|SgpVk{%I^K^2HO1uI+~(*4@~o$XPTa&$iEzS;EzJ2vmE2E_Bcq>njZz#}SnpnI zOmY71=C@s}-ZQ`9do0NoijMa;l)&mpmol8xqj&VE(3`-U?Y>#5cE5|b?2lMgSX$|{ z>xguj9W~Q@n}vBE7vlSHPgk6;Ty)d$-3B|4_o~|{#?ZiTEOHN10AJlDyq*?=GM3P_ybXIu1nD>jV-Ma3;B& zCPT93M+3knJ=CIWz%REXjUe`H$US|Ly7xQ|T;`U^{hy0>0wY*b0?ywuT)1m5TY8P# z%eIUDFrgEh%kL;wJ62V@d`><&u;|fw^Gq5w-LYDArV-`Gd=24L%tN~fAf_(F_Tov?pJ}k`+ez6K%(ViC@W6Ru? z@6LW2Yu6cHPyyzJowf0{f1{i|@ZkB{7woV$f5EP1m01(#dU6Y{p-lss4sXU6i|=+cxIBgPi~N}l`sKc@ z3qRF<6KF4WJH7%r`4d8<{5aD;4r1PWZ+V#}%{Xt5?|sr7MJy(COtryh&14NYySVGI zHy{2ycTRmP(#8>V7cGx%TAy2c*ydnRCXOAKFP6jP_o%7cn3(HcCOFl%B9#P^ik3q$ zy(Kzpcl#?s3-!ic#4)A$fzE}bC5Vy6Hd4UJh<`9y*j5#SlPCj~1jh3-AJMqhPSMyN zwIzVr0~4mCzem*6>;*L+szB*O_K)@%U`FoD@-^WVxhEJo&xO(*;uhQoolxlXkfWg3 zEwZ*w0h+H~Km#R0p&vMMj%G1xQsYP01g~+JyY)_gvMZJw^O^yuBXA|vZ}b>I5oChg znrP#@bn&=NMhzdQqd5aD6~^<$svz{xx1S8{{x2jOlZgRp?`E;XKTIC)&uye*5d^a% z_1(wF*D2sISmmLSbb4V;?98-;1W0}@$czT*rHl3;D=444@%mPijWtyG6^tM#edmoj@`m+q70La*e<1Co6Wd;8pEav`Jh|UDN4e+$PNz@Q};P zOI!!Xn)mKpi;u@|(8aV)d_R|)w!+Z-=ENa0Tmn=|p^vIsUC^ilg}*gBJH$sn!vyh&N9K&xfO>7V$v@fyccqMklx zqKg+2B4Z}=BCk9%xGdRD+tfNj$b8RXs6DfLUmLn+^Np&PNqoDlaEr&M5Tm-a*HHh> z^0-T9vmw16ajT-nIGeE51J})=`$MKmISuIbg;M8u(fR$lj>;$(MJ&xa`9}Te19Llr(8*KEy zeqNr*7k#Pu4#F(RTKk*ezH?%MmYl-%9GGAw8ADEwaR-&A8)MA+RE^qiUV^=#-WaOlpP~#vrrTSL+K=4A9OmCs zEU?53dekB{W+UVMp9%CAfYUSGlKGi&Fyr8p_cuO+<5zX0;(Fd@ekIwKp>ZN=k@jW( z)(thqbL!mno_BPk zi{C!W)XAaSY>{SU&Ypky*_+s5Fg&R@n#pB>-z;i?-kBl?*eZclQ_se6>BXoCm2~L5 z+4G3U6AjqRthL&6nJ+<8K@;zN04Uf58~KdCJaeXs1ir+WDR2Ce{h{~&*-SDQ7`LKL zZah4U$j`X)T6D0N>t_6t-EqM-vfQEfv%qFzNGQD>W;xfRVPp{uj)3{KB;$1mVU* zZ}3b?FPG&zq35ix{Gkx$X9l34uLIAXz)#2>ihU3t-$uM4%#<1pB*!-2K1cRYx zHJ-YVmT{DW39ZXSg24=-@3WJhE>>6qB>)hYP$KW^XR~9-#RHY1;Y@QA z29w!r>{{9YfOz1!rhem0HGi0uKNJrH%=*wL0u|TW*#5ZGE^zD{sK0D6XQC4HBU&pX zeU2!qQvgXy&kxLpHV2;|jDo0ep6NQ;1xNrfoBJHo=8N=UWsR{KWS(Xy1MqY^KH=#5 zA9KMxhk$k>#13XhSmxJG1&UV%Z5F@}R+xQMghk6N-Vg|E;209DxpS*)ZteK1BL`Wc zJz`Kzc~dt8K4tH6`5n0;%&*KO^MhfH1}bd=X`gq`pW}b#9k0m3bFQbl1>*w7{`}QK z;{Ij}3I{87vkEPOoFzSj>yPufeO!y$dx%HqE_50$&h)F{hC7FKOec8wGE3Cp;o&C> z_^BJ`xQ`tBHoFe7+fn}X!!Q$piyLpDUmxd!o*bgEo;ix$~)0i-rm<8 z)RC6fkZ6S3;v#;7o5tLzp>My1Bhilzz5T4VOif&Aa7Iw36ZIm%`H_7pP`Cx_k0&nu z@;2A*66|@wF`SNf9e^8PpW#oAE&30~vR#fWRX#kPzNhT224>_usHM9io;dZR1D9SL zcJxhpIjYEc?Qa;Fp*;%cNYJdfxr6|(OEhKjA9J7bC8h^mKG2UCRr~?IDiH*9a%ANt zJ(`Z5F`zh zO7$opi^JTC1(eX-TY157b9+3tE9~Mon`c*KUmC7exrkZ z<@1+uEM@b-uz45)2l^ShfIZr{tl9)*B*lRUpT1OcS)GSwgfSy2LNteqRTO-(JHo;< zAS9R{>RQqRXq?dVi?78DaYj{sMZU0PqmnO2K#CFc@89LYcJ)xr1NVgVMPM266!8oKLO=Y zc@JCM3csB#@@=P~VNlc-4}=De4`4DmyMDbddCa?>%~L>Nlz@l`nTO@#_FC-Yk>g)a zH~sk2eu&Q0eEmWVAoP{Bv?MN0?FpoFVd3S%KC-a0*2h?%cFr4*zQU41W42v zvArX^qRSZv+1!XR8vuhJ!br#Oy_>Uwc8`M*E}cLn<=_Kb+prmJ>BPyVSa7LKUimnB z=fn6F_BT>Dx)1wpH3Kt_ra21;d36@44%QKA*(=ff{K)O1>MJ)UX9gE$e(9yyz;MwhR)S-ygz{M_(OVFNk<*#ivYkROg6vtW%F46Vsz>b{WAM) zC&^FMe0o~fIS?d`9mrbe>_2l#fkqT6V3k5#7DpSGAgDo2D z=gl|80icYdo&GU^eEk|Q-t1fJx-5mMDCE4ko}U>^nuSK~YsY>LTP~}>;|irdU-5%8 zFpY^9l?N$|-nAdJdev2)pgrcj8hKR2cV~wWd7zD*lfZ0FU&R`=0yd0u-;q8Pro4qFo9avJ(6x>bCvt)y(vaq&nu z3)7Ea*%3i_Q!(EsEOCp*u478tqjQr9o9e>5F?+ne5slpO8a6prNqylZg0U}Ks(@0! zNQl1PNgR^MIIeDwQ$M)7$?W}Yp|ZGCVRFQvmkmhnujeO-T>L2B1ND&AkL+UBeOkUf z8owjQoAZoK>&pDHF9SxR#B`EKz@fJCP+7vQncX&mhzI(| z_Lqc1fBI(R%qien)}UTr*M9YBy7G0SgSkyX@=CDeS>GqsGCxJ?p%Mx1FhpK58s~(g zuKIF>g9V!0aB{;FXU5$Xz?x*)8Zx9Usy40as<@~e>!gdQo5jnoKr5`b_k1{zsWmA+^?n>lYcQp=)_gk`-@? zJnBE0s^m#RZ-~Rp;o!?YC`hD?OV9wfmg3A4^+Gco;R*`S zh|ZO@3gciV-5F8hw;==Hl8dhvG$jl<1@W8>5xGGfE>Z_ss3+EbEm`vW_oGle#-Y z1!rK!iap4t3P&!$Pc2LllLw}%!0S5XNsd&a7wr8fK2DWjru86gVzh*)0%rF;Aa+c} zXf(td4`xMkrE5mrN{5Z|?W z6j_fb>sr2OkcP?iWZ%>~@zUYGSCqb1^x2g>NvZghzg-hDi=E>$dqTPPDc%uz4;Ig> zg`_9u*nj-`U~$A5?Q|k7BqX88@kDt}T277jq4M&&JFyyUmt$Mb7hDWsG8<@?iM;pp zgZ0@DPZQ$wZpWDme{9`d)HV5#r=+B7&~6;>Z0s~%F;QGuYqRw1|FMnymrccn=zl3{ z+7fneedldiv5IA{SMBj)iHCh&5fV;%xU|TfLxAg@v$=E-F#*Fd_#G$`#DM``G%j*f3Q9JJ73Gl zUa?(LZfF3W1mC?JLp!bVXcs9^z0tI-+fSARAhaZ-e8%OCOxLAM%&x*gNe}h>$+MeX zYj0Jhoj8)5X>hs9^oxDQ7v$fh41c=vb-_wNR?@Bhk#e1vdtPmf1rR&kiTPDysRj?4 zM4z#a^ek<-n1Ad+Wt-mdWcfC|(+o}o4@Ttt%IL>ZqioadlpMJX_k*eow zXH8;vqgjnTtt1g{#oCVKEBoJvmpqf{?=aT-Z z)MJuk3%Sc!%*DH`IhUf}wndLLe24-gWP;%LK0`;4PXKQ|A)%ou88-BATfSyhw*Ef) z`O}H)mtA^@Z=WsO&L%9HYl$$w-MSM0#kk$>r>EAex$|}OTe!>{at=&@}rnj0k8s}J$STdvh4!qZ$s+Z zm=s%S1ycwk3&s&aexlB;#V};7l%~g~McyozbrTvh{LNecD0A!KFz71(Cbhq=uIua> zB#siX3Az%>W{Kzt`13j}CdrwJ57wCCQUDXpn_@h>GP|Mmww(7=uhAKq!>Ee_7a8(q;C(2mV0BqjXKWA4Ag~#`O5uJFV99bDBP0 zEqoqEAO&xNV%eR07|gmpKj1NEt2sebCg#8XG}^N%Gp|w_5W^_vL*phid>D1@CsOCp z7v7Xvwwi17mpXJ3+`q5Q-;eE41v#W?+3z0rHzitr(`6tZG7-}q*%7OIBdb*x;PVMX zXlY9`u*0zC&nu^A+U>oKPZjW=-P&T54;a|*pz>ngmViRU5-Q~5AL@1gaVjz$jU+8v zUNujb_pfZgzH4m>}UWPqD_q+T6hP6Da`(p$b9Yv!+t(n zH3=)tSy7D9ZOrQ)Y92oV=@#q$N6u6)LpJ@AqzS`u0CUrf# zo$YkR(E<^jHvmqm?m{S5=zE{Agz`0NKHY$?y+!`cr6BpK6Iyn;!G$N844G$`q$xCU zON4Cr-3q+y7IISSyN8!s-i2zr#x9;Iz!{Ka<=cospvXn%t3Oo0pVF90`Ni8GNkn**)6%d9WWO*suhD$_36_ad)X+3eFzWDBx>9;4j6%Ci zz+r$){o$WJ`;&{;?ltr^hp_ELO2 znU?RNM}4-ZO;^x=dzLLFaM?INcOg-1!N5!fFg3NLvKu}fHW>@DR|5FQth`CX8>#l! zv@P%~nVPzM;;iZQBfbFKg1=;Zpp-%DcS5}9u+G@nT(=fGCaD7~d7#de(%sYt1O>oQ+Tkyk|-?Hc=Wt)z7pR*a2sK zGqX?>*fK_ZM0U`Fri1d;AoQ-;l~J<+>fS$0CYfRu&*jD=H(u`!TMbYvX@||O)Zq%j zfG*bY;0z1g+|aC&0^htf2Mx9L-?tusqj#U@PDIRNCu0(}g{3k)TL^T!%AQ$1%s0!= z`e$CE^Ui`fcM~ser?<2|`e2S1e%*Q&>gP~oe`!}2z+h8CZiSHkVH(dOVgV=ty5}H{ z@7UF>?Op}{CFr-=0*WRhP5KFIL!x6O3EPd>{U5abcTiJr^fij3sC;ZhEHsg*sHi9i zg47VOfPxSK0i{JmrGxaIqoSfz>4HE&L_~xr(pyA&uM&Fb0V0GJNIl+%@63B=e&xP1 z?;rOM9Z14S&dGE3v-jF-uhmP;rmrFkVA^Mq7)8<*~gi zCg1-n&l@Nbz-Of<%gmu4bICO^-&$jX!8GCS&E6GG_<4hBYK}}wH9k)$%4hR3GM8{^ zEp~YABejD4zB<1WUQuIk!Id_Eu%)eo>RWT_m)54h`b5VI!QaH2H=qz^r1_ghVApfL zG&kgD5Pkx-fqT-(dG^gSz-WBK^(O}~z`z3phQZb&KvdV30VRnf?Os5eS)^(HCEMe8 z|HQwkS*K?=RiOz6Y)J}3{7#a=90v5}I8tNV2MvK<4^QwHRuo0!ka)-(6wl))RJU7a zpzU(n(J1|DGG^6|cY=1HNp!=S+-B3r-n#g&csxG22p?Mk6w2!5{21x!tG`kT_C2Rk z8Bod{K9beG?t~$w4xZoR(@3i{A~!JdeLCVEFi`R4&F*<72qpsTA1KW}JCVLGfbAx+ zU9(YnicDA)@7tE<3ZM7GeIBi4Q6*c5S z&jE$c5SnwnDZ|2xDl>_<-dp1al*V&voKzcHGW(T1$bW{HYC;DCQ|J*t)aCcv7&fYW!H(P^w@X*H5lV#Hspn43H5i)|Q z6!+lan}forAOyqs9>vjg7UP`RdZGg%o(>Wq!(N&sxIHZeDt5gz-4Tq>pe|xqC3F_Z zTwBP?G*0{B9({isc)L9ykiXmDsu8dD*ym@zfF$61Afl- zSbKo#4K3zt%p^+XNid+b?uD9O%ePb+_v!UusdUp)-jbtiRWu+#+Pa@}la~hvFM2V0k9SQ0&@&Jp4;b6JhO!w~RXsqFk7nOW*$xKlyjW zFB2Z-$g+@hXBIddmNbI=L(I=EU_ieG2J1zInZlh-+BVu`KxZvJ)N830h3WMia4s9V z9EHiwLxX4-f}pbKDos|G(jV;O4vTZ_3;QdImv4en{vbuJd*!1^eVN;l=_z3Pky5&3gD5RB3;FPI9x;1U~@bIg+ zHO_0hV&_9B3~)Vau2}zk!-KPUr<9(xH?Lgu)*gO*s)FmUBWPpyr|-X-40Id)kRBRD z31t6-i}n{<;5tc5*5L+jN&`9%1)t}UzO3}55B_h25x4E#NlmlczP$!#(T7qpS70`LK05ix6^bbh(1k9ywP2YNY--N-=QrTIa_91R(Ykrb47js$}ipj9=%tR zq=<=o%#%XXz{~=cK&NFPUAknEs&5rSHiR>uj^&Z zNr|TDyD_{nNJ>;k;SoBgf(ax2xaZ-Hk`nBJ3xCgq+WeH=zE^O3htkww*_K}$XkgZg z+>O1-Jzd1G%_7ggJuSl~!kPJ>P zyOf-64!K#(tf^t|Nh_NV9g;OUWBdUN_F58sA+X&Kyy*Kf>$d2z^8?nAP?sv0)T8Il zT)&$8lb8*JU%r7G6W(n*pUO&-yxS*Z z{^zbRy*JiGN~7>Rjb-qtd4s@O2*7~P@xXJLKCLL|{af&A*~vd~?{-hU2wJc`VjW}) z@)c66Gop|961mUxx5_EOUYC(~Uj+&Y$N53@jv^GWAIBwhG8JKi!78^<~5PF5zsVEQ7HBEFZo^V3gMEbJ~i-!ciw)BH>;=m}1 z&&B`)o$ag9(tk%=aQNkpZvjdpgY!dQ$#~|GMKkm{+TxhvV?)^lu^@j_XPFQdyKZ)9 ztik`Xb}NLyt~!=Sk|k1GOhaw~D<3|RW@nQ~R ze^%qi4qBfJWd>j%X^zPmbHAO7T(`DTlFy4^}nYWG@nYEwB6#HK(J zu#oSU``2H7<|F#?I&mY34tZSS8V!cW8$>pzl_4%%Yecc61djGMXGKF6(OONm|ULJPte79-&v-uve zmPqXX5my#itRf*zPMRU_H9-+el61OWMv0+G%esWa%F0(Ze|ZvRz9%hnuCry{VvJ}{`RO^hT1kMr2zJh*#&V5UjRI%fmcUj7Il&@B^Ke@#OU*#(o0gzCiKIY>?gSAmM?D>m)cdmLozb~kY3$BsNdGFhrX#t>QaKiG7Y?{PLt&A=d}!NC4=a=DwM zRr4$L3wwS|A)F3?iuhfJ0ntYLyo$|94SS_b-&Skj z@@`NlX)TM1_xmt%eoBBp&(HKh#nNfj6a0LKQw-eVLwXd1@Ej+M50A?~BSEVYJ{drsu8?(!L{{kD$=V{ZPqsxt)?1kLl_rA_u8;Qo@S zMt9if?$MbGk?6yDE>3H>Yyw-1yes?F!uI&`s*z4j^3!^Udu=Y4&{4esjM!P z8gZK(MkGC9ad`Q_ox7Ix>5t^RIK;diMAEv%=bLwS?E41r6bTR(?%h56wWU6)gxN@9 zkrXFosVN>kG0F=rDoHzSMViD5%MpZT+^bt!eB<_~tqH4~w#^4YU!Ppxkh)nby!kEM zs{ZI(C3PZjI*|vdaU+Wz=|k)wlSUrhk_1VJdVHbDhdtn39>x~mIA>mBbB-0jE zbgBfdNGa$ho@p^u4}isiYh(|e8PjqwZFgs$eP2g_OkMVgsbDh8Sc|K#JO_?^vO>XA zYEY~=5)A|?au7N%{Bl473N35-)-HOgKi0G#VD^@6`>k9@TI$xm zPo-7jjI*MyWMNj-Emjt(T1%QJga{`9N@4deV@XD@v-B1TZ46q2;tP8*S&G{dieJho zzM0s@{8?8Jbwy+M!dP0-Cs8d0apJTeYT?H_N;C|x7Invuq7?**-NpUkt+@TJ-X5cG zXAdLcuRYu8;y({+XHRs_oA3Mn=#)*=?=Zi=Z>j)``1wij_3$0*WSA=4aOBjcf<%{d z@OO)kjLvKT_<5H9)`u%GQs0lMcuAziN04z9?=jBwzD3WZI(O|T1HAtF2k#L|T-3)v zS)ZtL&){vGMDp@CmtkcGb8OOvPfeb~?(We0*tOmfBK&xNG)GpAy^GFy?pRFTr-y{7%ijAPO3Ty0WnG=NvW;YbD3L^TVo zw3XQF60o|E5@j=IURPHYG7GbP_<>{DJ&mp?3%BimM7@V%^U<@%1UUM=pOl2$fS>gq z6C}8c`H8t7uE44Vu{$gpyO8v+0k-{N+ZR~OW5*Ihzh%`Z%C4d*z!anZ*m z;}0j*$*Wxu{maj_y?zA-Im1Y%UlhzfQt2%i^^-|lRq*8Mk6c39M-i}>0{(1WE>Zuj z|Gf;bzq*4d4YId-{1z-zp5;u$^GLYJHqn)q^>J-Z%rmg zBX`uoY%_IQshRhMvs&|Ka4(TF+M|GumHp`KP_`;-3+hMu0CWm-!ff)$0=X55*HOoU zUidR9f9~ANvEP+3(DwaE()z}+in*KRg;HJkHs}@Lrbg+{`E1l#Wv?M8w5ovA*M7BN z_CtwZl4t{98aY&x{SIftAl$>v{q@_gW ze_nRmrdL%~&jD5sU7Q7jVQwcgHvBMbPc7E8_`EjyefEQ*H|QegD##dI6Y0v}Bp)oq z*)EYYOd%|sJ9on4^yex5TqpkB;FSS?4Sj}Lod2+QpO+eeRB&HU|K|1zhqD+^V2cBr z4SaeY7Yp-{7k7d$xUrGZ-2$*W>{D|Vk;4ObVO-gBP=sJmqbo>kmU-El=vKtaMW?^y6E)! zaq2Fz>GlM??}jBm`1&S42R~q+E)7ph(W%ly|0d7OB7MeMu1z6BO1YdsP&wSq#LS1% zmLxt*@xQ$DHw`t)M>AsHZMNG_oKM{qF(qYbedJ@z<}%T^+%^1(fG_Nh^7A zR%szs`!3sK^;A7Ces~QpA7^=JOQ-7IvxOLfM`sn)p3nCgv~ta6FnceGSGYR9YnFJW z7WGAvxslysOE;y=yE1kK=#0}jMAl?>EX(GeUVh2yqZbCx@r~Qd9JHZpUa#z3WRekk zFjMcO@Cj4*Ot~lIJW^}XG=rAfg@VO@JTV0~$_5+Nf^MQI)N5fdz-AW+MX*T;eNJuc zkwE7(lyC2@PFqHNt*$#Wr7VVndgYl|y2nQ)ZC8dk@qMQvm(U++N@2v)wTGAA`4Ja! zh3-Ujo%$Cx?jYiSJsI)`>H1p}NIe#@LY1-jN#xxi;%))?k+kd)C_>uAtQJIq{jg17 zH%y{xOD&mx4?i<2Ru+^Wb1hK8fZViBteX218Lf|tbY=;%EAmf8WL zOsQJ;0(kyjfY8h)u$=+yMJdEXPW9y7)N)=X9j&8`9g(qy18~_pMNEOv#$uYXEm~Tc z3gAis|EN5k+y2Ombi`rCn;B=xQyUNb8VO7w-Wa05erY~mut2PI`D9BIgF+5(GsoOp z%D(w0e)9mIBq=R!+q(AiLibmD&riv&QG|Zrg`AAJ}sn-s_5-;yy1rSQSbD9O~ke_3^*6Jg^u&->Hx1 zx)S8KrMMQjW0^q#QCNQ-*EFP(GK>!?;yM3C>D070^?4_AQA03uXj{z!fZDc2_VE;M zGr8l@o1vV(PqpioD`7QVMa(2~lgtHIK7F5$5-16M=(E8(j%(VTSfP`npGG0l7UC)z zT?|-NNsRq$Z7rKWt|jMq7v;SE@%YVgnim2MBw4lePkY_1jk^SAQbPBX%R4LciETN$ z2SAqfK(*KDH@|6QEi*K+PunJQ<@mHm6a^Cy^a~dZx3!tpiJn2+mw+8_e}?W6d6>)U z(Re03m^u41p>tVa6ME*h@tDGhT2+Wj?=*d@c(&0H%633E?bmg@)V{V23|WIF&W{8D zrmb>!Y{-20&-bVnW{T_J`XiW=pCo6${EWXFBuGY>HcAW$=6^N)TxjVFaOh;XnL8%L zem{=88e1xKU^^K0g@6YT>aF;ma}wcfBP@yjsq9f_fxUTjZBuI z;{4#i)2bv4U$s(ZE4B)XHXsw|t6ffsJqeVjoAX+)^vS@WzT0;?JQg(kj)9OCE%Y}m zT926Tk<1GmgkSSj$=*-66OozrJCTEIbJUG&O82?eo5#aK%hgy1x9cUL`)5of+-ASz zX2_l0o8Hb_E=KgdgW!anc+ID93_AffhjYeP@>z9{9XERxv|_O?T>cObCKpWi05 z;U;w2TH0b&p8@lD4@~JdKs398ckPHL=4n5uX|Vf#|4p`J=oK-e^3zRpWa?!{^;(~O zlh3~Q2SP$K|6{c^_ZS5-RaxHH?kK8OHP-#OWu1>aG4Gl9-CxWQ;!F?T?XdWrTa*mY zW#}wICvp(0B3iod@@lu~vY5%g$-Sb95>J`WGZw4*2NmJL&GV~NHa8{VM825DN@dy_t^ekrvpxrCknmAQ??-2<(>0P$c&ZzeQ;1K z_~lWLMy5Q-t{#BdelSwf&=btUff4(11Z(bf6}Mc5RoD4Lgyo�xCa6`oj;7;Jx4T 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�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�M5>F4P0N@^(DtvDiYMjueD@$tJbXgp7Na&K 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