From 6eed5ad531a7f1d838d0b00c5ca8c164f691f872 Mon Sep 17 00:00:00 2001 From: Jennifer Player Date: Thu, 11 Apr 2024 19:53:02 -0400 Subject: [PATCH 01/17] added button for hiding bounding box --- invokeai/frontend/web/public/locales/en.json | 2 ++ .../IAICanvasToolbar/IAICanvasToolbar.tsx | 34 ++++++++++++++++++- .../features/canvas/hooks/useCanvasHotkeys.ts | 14 -------- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 5454c72e68..0a76c3ed1f 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -1424,6 +1424,7 @@ "eraseBoundingBox": "Erase Bounding Box", "eraser": "Eraser", "fillBoundingBox": "Fill Bounding Box", + "hideBoundingBox": "Hide Bounding Box", "initialFitImageSize": "Fit Image Size on Drop", "invertBrushSizeScrollDirection": "Invert Scroll for Brush Size", "layer": "Layer", @@ -1441,6 +1442,7 @@ "saveMask": "Save $t(unifiedCanvas.mask)", "saveToGallery": "Save To Gallery", "scaledBoundingBox": "Scaled Bounding Box", + "showBoundingBox": "Show Bounding Box", "showCanvasDebugInfo": "Show Additional Canvas Info", "showGrid": "Show Grid", "showResultsOn": "Show Results (On)", diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx index 5642269bda..686577b4a7 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx @@ -13,7 +13,13 @@ import { } from 'features/canvas/store/actions'; import { $canvasBaseLayer, $tool } from 'features/canvas/store/canvasNanostore'; import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; -import { resetCanvas, resetCanvasView, setIsMaskEnabled, setLayer } from 'features/canvas/store/canvasSlice'; +import { + resetCanvas, + resetCanvasView, + setIsMaskEnabled, + setLayer, + setShouldShowBoundingBox, +} from 'features/canvas/store/canvasSlice'; import type { CanvasLayer } from 'features/canvas/store/canvasTypes'; import { LAYER_NAMES_DICT } from 'features/canvas/store/canvasTypes'; import { memo, useCallback, useMemo } from 'react'; @@ -23,6 +29,8 @@ import { PiCopyBold, PiCrosshairSimpleBold, PiDownloadSimpleBold, + PiEyeBold, + PiEyeSlashBold, PiFloppyDiskBold, PiHandGrabbingBold, PiStackBold, @@ -44,6 +52,7 @@ const IAICanvasToolbar = () => { const isStaging = useAppSelector(isStagingSelector); const { t } = useTranslation(); const { isClipboardAPIAvailable } = useCopyImageToClipboard(); + const shouldShowBoundingBox = useAppSelector((s) => s.canvas.shouldShowBoundingBox); const { getUploadButtonProps, getUploadInputProps } = useImageUploadButton({ postUploadAction: { type: 'SET_CANVAS_INITIAL_IMAGE' }, @@ -61,6 +70,18 @@ const IAICanvasToolbar = () => { [] ); + useHotkeys( + 'shift+h', + () => { + dispatch(setShouldShowBoundingBox(!shouldShowBoundingBox)); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [shouldShowBoundingBox] + ); + useHotkeys( ['r'], () => { @@ -125,6 +146,10 @@ const IAICanvasToolbar = () => { $tool.set('move'); }, []); + const handleSetShouldShowBoundingBox = useCallback(() => { + dispatch(setShouldShowBoundingBox(!shouldShowBoundingBox)); + }, [dispatch, shouldShowBoundingBox]); + const handleResetCanvasView = useCallback( (shouldScaleTo1 = false) => { const canvasBaseLayer = $canvasBaseLayer.get(); @@ -212,6 +237,13 @@ const IAICanvasToolbar = () => { isChecked={tool === 'move' || isStaging} onClick={handleSelectMoveTool} /> + : } + onClick={handleSetShouldShowBoundingBox} + isDisabled={isStaging} + /> { const dispatch = useAppDispatch(); const activeTabName = useAppSelector(activeTabNameSelector); - const shouldShowBoundingBox = useAppSelector((s) => s.canvas.shouldShowBoundingBox); const isStaging = useAppSelector(isStagingSelector); const isMaskEnabled = useAppSelector((s) => s.canvas.isMaskEnabled); const shouldSnapToGrid = useAppSelector((s) => s.canvas.shouldSnapToGrid); @@ -79,18 +77,6 @@ const useInpaintingCanvasHotkeys = () => { } ); - useHotkeys( - 'shift+h', - () => { - dispatch(setShouldShowBoundingBox(!shouldShowBoundingBox)); - }, - { - enabled: () => !isStaging, - preventDefault: true, - }, - [activeTabName, shouldShowBoundingBox] - ); - const onKeyDown = useCallback( (e: KeyboardEvent) => { if (e.repeat || e.key !== ' ' || isInteractiveTarget(e.target) || activeTabName !== 'unifiedCanvas') { From 489d48590761bd087cfbc322fca83b6290fb38b6 Mon Sep 17 00:00:00 2001 From: Jennifer Player Date: Thu, 11 Apr 2024 20:47:25 -0400 Subject: [PATCH 02/17] added missing description to control adapters hover --- .../components/parameters/ParamControlAdapterModel.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/invokeai/frontend/web/src/features/controlAdapters/components/parameters/ParamControlAdapterModel.tsx b/invokeai/frontend/web/src/features/controlAdapters/components/parameters/ParamControlAdapterModel.tsx index 91f8822352..00c7d5859d 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/components/parameters/ParamControlAdapterModel.tsx +++ b/invokeai/frontend/web/src/features/controlAdapters/components/parameters/ParamControlAdapterModel.tsx @@ -103,7 +103,7 @@ const ParamControlAdapterModel = ({ id }: ParamControlAdapterModelProps) => { return ( - + Date: Thu, 11 Apr 2024 20:47:49 -0400 Subject: [PATCH 03/17] added info popover back to model, updated description hover to combobox only --- .../MainModel/ParamMainModelSelect.tsx | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/invokeai/frontend/web/src/features/parameters/components/MainModel/ParamMainModelSelect.tsx b/invokeai/frontend/web/src/features/parameters/components/MainModel/ParamMainModelSelect.tsx index 9d7a8b4a77..26bf80af7b 100644 --- a/invokeai/frontend/web/src/features/parameters/components/MainModel/ParamMainModelSelect.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/MainModel/ParamMainModelSelect.tsx @@ -1,4 +1,4 @@ -import { Combobox, FormControl, FormLabel, Tooltip } from '@invoke-ai/ui-library'; +import { Box, Combobox, FormControl, FormLabel, Tooltip } from '@invoke-ai/ui-library'; import { createMemoizedSelector } from 'app/store/createMemoizedSelector'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { InformationalPopover } from 'common/components/InformationalPopover/InformationalPopover'; @@ -46,20 +46,22 @@ const ParamMainModelSelect = () => { }); return ( - - - - {t('modelManager.model')} - - - - + + + {t('modelManager.model')} + + + + + + + ); }; From 77b3281f08f43beb190eda9bc32c753d830f1aaf Mon Sep 17 00:00:00 2001 From: Jennifer Player Date: Thu, 11 Apr 2024 21:02:01 -0400 Subject: [PATCH 04/17] prettier --- .../web/src/features/canvas/hooks/useCanvasHotkeys.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/invokeai/frontend/web/src/features/canvas/hooks/useCanvasHotkeys.ts b/invokeai/frontend/web/src/features/canvas/hooks/useCanvasHotkeys.ts index ae23b7034c..e915259201 100644 --- a/invokeai/frontend/web/src/features/canvas/hooks/useCanvasHotkeys.ts +++ b/invokeai/frontend/web/src/features/canvas/hooks/useCanvasHotkeys.ts @@ -7,11 +7,7 @@ import { resetToolInteractionState, } from 'features/canvas/store/canvasNanostore'; import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; -import { - clearMask, - setIsMaskEnabled, - setShouldSnapToGrid, -} from 'features/canvas/store/canvasSlice'; +import { clearMask, setIsMaskEnabled, setShouldSnapToGrid } from 'features/canvas/store/canvasSlice'; import { isInteractiveTarget } from 'features/canvas/util/isInteractiveTarget'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { useCallback, useEffect } from 'react'; From 636ece323fe3ef49400bf9c02607a0740472d715 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Fri, 12 Apr 2024 09:05:36 +1000 Subject: [PATCH 05/17] Update INSTALL_DEVELOPMENT.md --- docs/installation/INSTALL_DEVELOPMENT.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/installation/INSTALL_DEVELOPMENT.md b/docs/installation/INSTALL_DEVELOPMENT.md index 3f42846556..ead6b3bc8d 100644 --- a/docs/installation/INSTALL_DEVELOPMENT.md +++ b/docs/installation/INSTALL_DEVELOPMENT.md @@ -23,6 +23,7 @@ If you have an interest in how InvokeAI works, or you would like to add features 1. [Fork and clone] the [InvokeAI repo]. 1. Follow the [manual installation] docs to create a new virtual environment for the development install. + - Create a new folder outside the repo root for the installation and create the venv inside that folder. - When installing the InvokeAI package, add `-e` to the command so you get an [editable install]. 1. Install the [frontend dev toolchain] and do a production build of the UI as described. 1. You can now run the app as described in the [manual installation] docs. From e724781a80961f0a348a831e6f4014614b748af1 Mon Sep 17 00:00:00 2001 From: sarashinai Date: Thu, 11 Apr 2024 21:44:07 -0400 Subject: [PATCH 06/17] Update WEB.md Correct stated location of Gallery panel. --- docs/features/WEB.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/WEB.md b/docs/features/WEB.md index 765a66aeac..15a489b932 100644 --- a/docs/features/WEB.md +++ b/docs/features/WEB.md @@ -54,7 +54,7 @@ main sections: of buttons at the top lets you modify and manipulate the image in various ways. -3. A **gallery** section on the left that contains a history of the images you +3. A **gallery** section on the right that contains a history of the images you have generated. These images are read and written to the directory specified in the `INVOKEAIROOT/invokeai.yaml` initialization file, usually a directory named `outputs` in `INVOKEAIROOT`. From d0beb454313a612405fdbe1414ecf8527e53b57d Mon Sep 17 00:00:00 2001 From: sarashinai Date: Fri, 12 Apr 2024 21:33:07 -0400 Subject: [PATCH 07/17] Create GALLERY.md --- docs/features/GALLERY.md | 59 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 docs/features/GALLERY.md diff --git a/docs/features/GALLERY.md b/docs/features/GALLERY.md new file mode 100644 index 0000000000..8e26ab93f8 --- /dev/null +++ b/docs/features/GALLERY.md @@ -0,0 +1,59 @@ +--- +title: InvokeAI Gallery Panel +--- + +# :material-web: InvokeAI Gallery Panel + +## Quick guided walkthrough of the Gallery Panel's features + +The Gallery Panel is a fast way to review, find, and make use of images you've +created and loaded and assets that are being used by the Image-to-Image and Unified +Canvas tabs. The Gallery is divided into Boards. The Uncategorized board is always +present but you can create your own for better organization. + +### Board Display and Settings + +At the very top of the Gallery Panel are the boards disclosure and settings buttons. +![image](../assets/invoke-control-panel-1.png) +The disclosure button shows the name of the currently selected board and allows you to show and hide the board previews. +(image of board previews) +The settings button opens a list of options (image of settings): +- Image Size: this slider lets you control the size of the image previews (images of three different sizes). +- Auto-Switch to New Images: if you turn this on, whenever a new image is generated, it will automatically be loaded into the current image panel on the Text to Image tab and into the result panel on the Image to Image tab. Thi7s will happen invisibly if you are on any other tab when the image is generated. +- Auto-Assign Board on Click: Whenever an image is generated or saved, it always gets put in a board. The board it gets put into is marked with AUTO (image of board marked). Turning on Auto-Assign Board on Click will make whichever board you last selected be the destination when you click Invoke. That means you can click Invoke, select a different board, and then click Invoke again and the two images will be put in two different boards. (bold)It's the board selected when Invoke is clicked that's used, not the board that's selected when the image is finished generating.(bold) Turning this off, enables the Auto-Add Board drop down which lets you set one specific board to always put generated images into. This also enables and disables the Auto-add to this Board menu item described below. +- Always Show Image Size Badge: This toggles whether to show image sizes for each image preview (show two images, one with sizes shown, one without) + +### Board Thumbnail Menu + +Each board has a context menu (ctrl+click / right-click). (image of menu) The options are: +- Auto-add to this Board: If you've disabled Auto-Assign Board on Click in the board settings, you can use this option to set this board to be where new images are put. +- Download Board: This will add all the images in the board into a zip file and provide a link to it in a notification (image of notification) +- Delete Board: This will delete the board (bold) WARNING! This will delete all the images in the board and the board itself. + +### Image Thumbnail Menu +Every image generated by Invoke has its generation information stored as text inside the image file itself. This can be read directly by selecting the image and clicking on the Info button in any of the image result panels. Each image also has a context menu (ctrl+click / right-click) (image of menu) The options are (items marked with an * will not work with images that lack generation information: +- Open in New Tab: This will open the image alone in a new browser tab, separate from the Invoke interface. +- Download Image: This will trigger your browser to download the image. +- * Load Workflow: this will load any workflow settings into the Workflow tab and automatically open it. +- * Remix Image: this will load all of the image's generation information, (bold)excluding its Seed, into the left hand control panel +- * Use Prompt: this will load only the image's text prompts into the left-hand control panel +- * Use Seed: this will load only the image's Seed into the left-hand control panel +- * Use All: this will load all of the image's generation information into the left-hand control panel +- Send to Image to Image: this will put the image into the left-hand panel in the Image to Image tab ana automatically open it +- Send to Unified Canvas: This will (bold)replace whatever is already present(bold) in the Unified Canvas tab with the image and automatically open the tab +- Change Board: this will oipen a small window that will let you move the image to a different board. This is the same as dragging the image to that board's thumbnail. +- Star Image: this will add the image to the board's list of starred images that are always kept at the top of the gallery. This is the same as clicking on the star on the top right-hand side of the image that appears when you hover over the image with the mouse +- Delete Image: this will delete the image entirely from Invoke + +## Summary + +This walkthrough only covers the Gallery interface and Boards. Actually generating images is handled by [Prompts](PROMPTS.md), the [Image to Image](IMG2IMG.md) tab, and the [Unified Canvas](UNIFIED_CANVAS.md). + +## Acknowledgements + +A huge shout-out to the core team working to make the Web GUI a reality, +including [psychedelicious](https://github.com/psychedelicious), +[Kyle0654](https://github.com/Kyle0654) and +[blessedcoolant](https://github.com/blessedcoolant). +[hipsterusername](https://github.com/hipsterusername) was the team's unofficial +cheerleader and added tooltips/docs. From 4b171fa6969734fb18b3af818cde5d6bfa3f2823 Mon Sep 17 00:00:00 2001 From: sarashinai Date: Fri, 12 Apr 2024 22:12:43 -0400 Subject: [PATCH 08/17] Creation of GALLERY.md and related images First draft of the walkthrough of the Gallery right-hand panel --- docs/assets/gallery/board_settings.png | Bin 0 -> 23851 bytes docs/assets/gallery/board_tabs.png | Bin 0 -> 2793 bytes docs/assets/gallery/board_thumbnails.png | Bin 0 -> 30894 bytes docs/assets/gallery/gallery.png | Bin 0 -> 226112 bytes docs/assets/gallery/image_menu.png | Bin 0 -> 54559 bytes docs/assets/gallery/info_button.png | Bin 0 -> 786 bytes docs/assets/gallery/thumbnail_menu.png | Bin 0 -> 27384 bytes docs/assets/gallery/top_controls.png | Bin 0 -> 3378 bytes docs/features/GALLERY.md | 54 ++++++++++++++++------- 9 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 docs/assets/gallery/board_settings.png create mode 100644 docs/assets/gallery/board_tabs.png create mode 100644 docs/assets/gallery/board_thumbnails.png create mode 100644 docs/assets/gallery/gallery.png create mode 100644 docs/assets/gallery/image_menu.png create mode 100644 docs/assets/gallery/info_button.png create mode 100644 docs/assets/gallery/thumbnail_menu.png create mode 100644 docs/assets/gallery/top_controls.png diff --git a/docs/assets/gallery/board_settings.png b/docs/assets/gallery/board_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..44c4ef240bd6e0609ced2d9766fe4d9f1102ed33 GIT binary patch literal 23851 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 literal 0 HcmV?d00001 diff --git a/docs/assets/gallery/board_tabs.png b/docs/assets/gallery/board_tabs.png new file mode 100644 index 0000000000000000000000000000000000000000..23e5f8a91cf4b7eadaef3eb5912bcd8f6857b9a3 GIT binary patch literal 2793 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 literal 0 HcmV?d00001 diff --git a/docs/assets/gallery/board_thumbnails.png b/docs/assets/gallery/board_thumbnails.png new file mode 100644 index 0000000000000000000000000000000000000000..1c739d48546cc5cf6bdde7e66af1184dfa8d4f09 GIT binary patch literal 30894 zcmV(~K+nI4P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>Dctc4oU)0TG2jC`%)aW~9lnbG$j<`@Zk5b32SiqaFooX4L=f>QkpqojO%@>i_Ed z>(r^^+q~`a7FK0dE=pN!x~=nW#Y;}0_w1*8q05dhhPln+kp*F9&JwyLk*6L#YkbN1 z7wjqWTvG6P+vg;{v!`;-(6b!0pe1Sfz3r;3%1c_#u1M#Q1syw^mN8WB%%j>d$A6}T zZMW!K9!hD)J(qh1QH*Eno>9)0pEI4Joy9rv_7>uML7uo>SD)>)+Oi5>t8z)m8SVP~ z#~xOTw0l9d{7sMO`lKK+F77V=N7Q>d__AR_qtUokbLSrduvvsHNfU zE|GSS)ml5wS!5NwR^=j=r)kwIl9imhB+fD&I^$eBw)lIBD99B3X=8YC z%p*(PzoeY)`faydmKWoDo~QUQk=P zo+9lyRLsTS!fDH8A+8+%$t@40TP|md@j|($${8`*d0rB9rYs)vYGP^pGh`u-+cEc? z2J8cUTM^#;Y6ORN!k-*qYO7fItfbXMGe3d)*b}H8{T>=qhrI)<^31Zl`M#h7_ib5- zclOxr;HMe3UoIBqoT)v%JmrM*PT@Jo83=P0z&V#JMi&Zs-gC$@;PT{IgIDb3A3=Eg zt=`_MJfBiM_-&N#`;@o0D$gv7P53#1mxQ}dP2#C>mTWwE>RC&JRt{v6#keat>w=f% z*z{BodOBGEEXi5oKP##ff88&w0@n*Ds$13Zs$3{?hUTnP|CZ_AGsa#LUmoY$zKc;7 z^WOG(CGj@rl4k-g$$2xcGZ|Ou;CE5je+McP2Z2V-3tg4-l0XQNf$d1_dLv@nZ}tLL z8QA&B61H;Qbmfc_xO?^_o+;kh&srM1A_mr$Wlm%P0}F+Ghy{HJ`kTC$?l#)|BDxke*zfb3ze&FuMEh9#xX+H0e6xZ05ny~O2GdcP zJMP8hfdIGGU>IHL1?`yPHC-B%_Bq1XxmOdSFB)sY99GQ$veUR&LWGUJ2rRXL$`0m zYpz|-w1P}L!g5AXt;bQV#Zjq;QL6>eXtItPLEfGqPxRxF7S83QmTBqk%B;)h1dcKO)5- zf_dKCVjaO!nR&`1hZ3S?=BM05k^Wksjyms+T0n#Mq(U98ws;W+g?QaI*s8u7%y+ff z-naj3F99o;?kSssSGNs|?_<01^Ji(Ot+1Wy9?0I)aotqjW#s3kFnjU|l;&rZ=%Tn= zc@}X80$n}*ziGY|Nc4(#AkZ^xelf1%6W>5O7GxpwmWfq)cA~lqHj0RZf+$R%hCh-- zsArQq$ktsS+2j06Bt+0kgz5%3rm)s%bW@#E+c2d!w+IO4bdq6~!U5rymea`HFXs#^+EBenzFXFOfsUC>Kq@t+Ihu{PMaL*6mU zLf+2emzZ);1dJ{}Zh!gK`NN?Ax;x{@l_~@rcEC(x@k&d@h3?qYflvIxZmj8vS{*kH zh;&T#7Dk;wRj)I=MSvDat8VQWc!Vod$orJGug$j<~u~CfoU83vqR& z%PW8Fyh#{lWpIBc+P2hDStrPSwJkLmze_`57E5XBIDsz|PoQJXCY0tTQ7^LtQ5=hR zHd#EdBqz@-daBqKnTldut8DA}6V;{aRCU{yrFFhkA_3m~Wp`MOWw}%PaN({YwjKX5 zTwAv>FB_LTq~=Nw8=V-JoJChOwKr2JCA{dwz7`rd8^8Qw6g4Wfm`0P@)@)Eks5CWh z>x}>%sDw@_+W;p76U+Y!WTC7Szm?&coF7AdT^7GBXTOpUAH1~}fo26k z)ZlMuOJ*ZK9ZP6TI1nT|C2*=X-C0t##WKlj<@7>Tb^|Hxd&dk&_$L4sa4Af1Qz5e{ z(G?k%t2I#0SAe-XI;SdFKVQc7W)K_0LBu0uadfp5Q0`<7V-e;n0be+RCPB_ma0?1N z$c%$bE6DW2+9#0lsDm?)6>BS?R)!YpjA6_rU7e0M)Xy!Q&&REgIiI`snHJL};w1G#aqRfXT z!K-1w#B-G}|NJt4s5}8GSTGo5T2u@#F9A~)Im>`kT#Eg-KzEHcJCs-+b;!b992c-C zI;Xu=oOV8)-wv5Pyzi*zqj=#<4x4=K|JjNF*;*(NXMG3|qG*L8tj`n~k6Z_;4VsTt zx(dO%&hoWF2Ix&P9$u8JNi|HBXW}i@9qY7CL|1+qj8YS$qQ_zhxT>s6#$|09RIv6D zR#MD-$lpK*BZg(JMR<)w6oqsYDN6@#lVk78P0ee>Q5nA&x#d#i@iqF?FR z{j{`sPZ_4O%=BajqjL{@`|n*k%fw6DllI&IFDc~}v)}cnujhv;zyRJ5-hNNTqb57^8^?N59yRrsHr!;hqo$ovX zA6?TFk8zDXaVzG~pwiVfZd0$IKocMr2%2geVhV_=Ik@ppt$b1Fysd=oKox^ag zjG-V9itsv#5DKvn%29$Pw}EH`(P#(>?)RtTNJLu9LLDLIH%5~;-XQzpg#yY48&H#Z z^pjQjb$?XfytcqdjSvuZSTQNZ+;uLz4kQ*WCf;OE|LXQYsL-)esa2OTg=ZqwSi0K&H{)j+`vlp;ElB? z(@V`0t1AXA+q(1&08QFgZ0~!by79bi3D#*;ki(h9Z>hSJIn6LU#$u|+rG%z?{z~*Wm>%&bXqr7ec$fxSa#ap~)2v!VV z0nO4VI^#9Oqb_QpJLms^Ij zkgfyaIo!4%NVp*f9cKwt-MWW%gw>@08wzQQ#dKcEf^RYCr2$@-qBzCVmJPz3YbKjl=L{QO_HTBLan;a8f z$S?Pq0hdSZdwz*EVEyB+f}ZMJT)Fo6&Dor!y`|6FdZKhZucV@Z{fZcf2Dk|bVvEW@ z0YwzWk1*>b42_isg9Ir8gg+p@M6;0E?I*BSYbBH_1vIK;Y2_-SWH=$#bC`7*Focx} z-9WXTN8j2sHuQ(lm>VZ>GEH_&N`n{W)^BXJK_*zCnVGFt=&Hz;Ysi%daQP~db2+Tf zWU<{>!eFAv&a#1WoTg$dfC5eTS}=?<@v>U1lW~O+CMZXUPV3gMM{q#3NVewD*(lnB0`&;0I>k{%*%NE|y^e!NUEO+)#k8$9YIABov3MM72Q=nr2kD$F z+gl7aSp_djy_mzXPyPx{fA+t7AxNUL{zRbB1}f*I)NQBsz^%d-+@hiyNGT1)^IY2yuz2>o+BV*W= zsI;4&T8GxO^z%;PGC`K{*mus>f3*Z%G7Buls(g-N08Zjx3|Z}bLzmdeM#ZyUUN%j^b5al zpw+CfcRhU&PyXi*A^X_(y`#^M7)WWWA8)=n@3(lj7sHm``=v4T&w4*9u5A^>wq}h^ z9zlr|ObTjdB6o!@JTB#JGY^S9#^=Gezx^G!X5%oLWu4bTwNgc%z?CnRP^-y2tRYVT z$Q24m#u8Y&{c1$FU5UI*N3sV2m<%ypUFDL`HGe1V@=81$b3$bi602qe0EWsI-j2kr z{4wp*z%Ii)CQS{!($aubmPtrS|7B&$jqs6jEBk7n2jz%-?WCKg#2ae#SuTY;CW zdOtxRfEty&PLMKYYZ+Dg2^4E-jOBvp+`0{so=(;e>zTC9m9t#{4GlC=qg`2HdWD7` zxv~$LQh*FBjB3G$NVbUnSprzKfi;mBSydEux?(tt67NI7Pd~HV2nA7PUgirqZjeUnNugns}q$dq)s6AQDr=Gge% zN#+a?v}F{70HG8cXB#|ps``6Dl>;pYPMUDp;(m=ie>|SRJSdkgZ>NTd# zdhrvue7*|J#wvV)D(V`KBg+XAU_xYJ0yJG)ose?M+I0C++5$&%AhEf6lR)B&BJWEf z7m1@1rkTiF-yle}1OV)GwBPc;!}hr?^WJGHMTX32ik-zwnanK5>rV&KGgl>m)!lRo zGQe^)iflNBd@zC+an5Y-*{wcjC252ho+%||^+tS$F&j=EW8OW(sOgM+_pg{z-pM&Q$p_;_v5h`I#MZ6 zWl<%VRj5SyS{0K7uoKghc>L%Q9G{s)k=Lk@ew2byBzxCl?XIg3Ter@}Zqz`9n^q35 zeC={AZPd%k#bfPqSeY26a_Xn*apiRTs2Wcs^buyq}8vxZ9C&orGTdJTL>qa0+^P_JNS8Uyh zzK$L@cGkYO6+-%`edjE*o~SGVDhWMKDR_>Y`5DnBSt<_0TuEFUS7!crY@u#EcXn~- zEC{n9z7Zf;H!EeE&Jb*r5GGiKP(r9xVgtzXx>?pi4$)u{u|Sb^kz*C;X(Yjo%t?$! zPfj&%ru%6`m*B0Az!(|-+LLz$4yt?AyY5BHIu&&usuPw=Yg*K(OhT=IMm$JG@?YK+b;yGeA z0v7d>I#0mmn1qyuPJT96dy+{;AjYLZ+**UZJHg!Ezhf^d&{}=Do}^=gL5-1|LmbUyXUM%^_6JA=E4& z*vb>oW)a35T?WxWj$oQ)nab=?nMTA-%nXpZXkxB@ng(G{8U;?wYr7n-EUsKuOt~dl z)iHa}VXRf<;C~O~1bj7`s+vcZp_`+*ny&>>DY2gORmA7BSW_utO|XG*w2nfE0LI%@ zra4)xw=g!F#Z;zjUtG!WjPP|7^$3CENb}C&^A~cFxg1{6%zLeKXd)_vgH$&yQH6@YsSi8gAVf zh@AXwM=)FJyk6Rvi6}mmM9O00Th{6YTmmdN2~|9-PDQAZbyZm=11w`;E}mx3*IJsa zSwX&BfWIq+TD6Hk{odX9^C$P?p@|uqEIy2~moF45D9@F6WiqmkKKN2S2*=~_$D%kr zJ&uXfClC&+1v|zh6NHy{4b}Etn3b1#v#r7ugIi|Vn1;3*ye0~BpNv7RoOQv%S{-Pb zf#0^Q1J;*I*STjF#^Xf-WH^4hTDe5_RUy48pjpkLQO&U~$gl`te&iXKK<20Oai3eC zpXK-K38cowbUlKWDYPrInX>{j=2=fa+s?q1u?0wGt`jh1rYl^GOkm}vuvje1qkhV- zxLA$pRftzbGU9S0hGI2AM=&bZk>WjBTdiYVBuoG!JC68Kj)YJTMA+sNMA|4C?A+yO zTF{9p%I`WFHw4kHM_!xPxBI0$C_B23%!>TVp8*%!P&5+3@Wyo*Uek+MBZo#YWBEOo zxDvU4=l6QhhZd&-jQqhnFfg>v+k5Vk?(Ri8-RtcE$B#bg`JTJ1`OVLJz6)1IfAig* z511G`jkO>DM{kep@UK4P`4*)sE+As#V8hl{3cH}#*35NGaiq6)yX~0N#IF~I?L4t5 zHF$>*rXXx^YJTpO9_=e!Y)LT2MycbBE)!bsEZP`tl&MC8sK!Eg&$~Z}_rB%*_@#gT zGG=38+|aug1MHz&30{}X?5?kVALvM6=Z!a^tACA|^&Q87q#$BZ=i>;7bq1m~2H5gN$WD7~)roR7MN=$> zN=>iskkQr}bTq|Tr*-C2ELHWaF~A1vPXiWpF*QqXot-Mc~gh5h^fk0(70A+h~zx zR@KH_TVN|;nV34A0h70NPfK0hS{@RZby5 zQ~UN`_#Wdg7v*_Dmh3R=t8y`l1DZuA#au8O7n~ZC*Sb8nU^?l?#?Jm)t<3F9S>$Bi z(PWT`SeFve>AWTtr>rN1>@|ZONpuZwz|gLp7`%KphOfFFKlT&<8Xx}AkDzCu9~)yG z*cgf9mdmfkE3UZ~mv7s_^Ze-8u?y*KmmxhkfX-9`U0oe$jEvyW7yr)YKB;jEbeVn2 zlR#F13uV<$2NkR%@@p%`V$kf$Xyx_xt#pXrN^eR(@=3=E-K%J&; zt58BMH;YPc8r8xa*;s+Dj9Q6irB;5>sw>Sr&CN2xfht12BEn>1QGXtxV1e0WJfB`K zV&zLC2~xZRbi6<6UEZQth#pO@~eES zF8PmQPas+E9qA~BH}zuMa2gwif*2kM;F>KRSeGXF*QViXln`W|+M=tp-SVA9c}akm zUVgri<=N!VdNq%cnEAs-Zf1wMwqIK{G^fI*$_zKNifNd7$j?S@gYMQiTrX{A2`Pz> zfdMjta-oQ3IEaDmTe0KjS7H0DuSWOo?HJs>6SutfP59Z5{TzPmogYN72F%VDaP9Wp z*tup11MJ%8YdL)88+YNm2To$k%dW%bE3P0jiJ(Q7o6F*xpZG7xjGRC;PUgbvTV9Pd zdZ48+`rFRR%Q*Hv9rG+UsH~e`$JnY>?zZBRgYg(mBrlTv?A+x}EN&$tR-<*dG-pju z_G+~XS~R;_{ZKw=?h~{Ldgb0Bm8fzlR%G0V^ zHVfa%FXzhT%0fo~GT`vQLFKhw(MQ!3K}+#fA#H{!XSJ$2Aed-`N-toOOCdub%aT!5 zDhUDVa1%agUcg>ZFxZoXJ5 z7NOMuZ0hx+FIqwrS=7sOWT06Bsrad-=Kd}0oK4i8Ujm|48!l7;Yp*KtY^2>I+dY;7 zv;C^UIKTOp?|aUeht8MtltOGvCWjumYvQ4FK~%q7so6Nm+N&#p9765~Jc z$R3*dJ$Un*--_4V`Udn4uEW$^9w$!E;&b=jkMB>7Vx|?xmmfWizq$Jm_Kg*RR4)yO z5T>#<939W1Mo>BM*uyxu_aVd+aViJ%M?f|V5#!RI8o%=5<&)XxK2=d=HNO<4tuTyh z&MA(zZIe@p>A%V>Q4KJe#dJNl5|P^YY1(RBP;93v(@oPOXvRgDpBM`e6k{zH(I}I3 z)d*B%V7?}Sj6k7T_n}}3;aCarR0W-#P1a=qk%)jt4?vW=b{@%Q)R7oVCJbwQjODU1 zF0m`!D>{kGzVgI&#e3PaVue&fy0LzdSS1XL0Eup(y!y4M$NzI-Q zvExdFP>jS-(-;`*(_O~?dw$kG|5-gNZx&{`w-{=tdI~=?HIKQ3+^{p)QId&7oaboKS( z*r^c=Z|TRDY93$w`JZ6}o<$;=utfo*Oeaj|UcQEnds#1TS?50ihv%0Q&KZcStX3}l zr}9d1=~vlY5dR4PsI-bHMVC_?18R%s!+nn&vh&X+U;4mWUblh@^Y5d%r}e8s(U1X} zpJrB&?7|lmtF0r-a`|Wu`y*k5Qr&2VddYhAq%BCuVD3Xnb`~iVa{*-M{3w?KD2l8x z|5_Ty;#JkT2#~~;ojI>@E)Drtsx(Vw4pKCbZ{w6ampEzw*M5=Srd5~;$2d&Go#9xw zOuJMwf^ITGo0Ap~q0pJau~q;hl@PLZnvP`xEzRRZSx=a&OhGH3Fh6988qBtIDpz*lXbOrQvy3S45Bf80++4#V_g^1nI9!&)d1j?9WclmfpGCi!H`b*f1R1Fcd?RPK{FYw`_F?DXBFkw%K-=+JOF9 zBUf8yn4B7-##%fj&Npi4-LVxL$h0Qr=CJqS$8g~BCvoEVX%y!3*uHf)x`sC3?!!lL z&xvFB?4u9kj~=-fcTJtfSWZ3cDV&-cM{->sMsiuq`BRvt4KiIUVwUWq74u_a{~pXA zK1_2d$UIO5JkXRGD1d7B=E}0MDIHVR`OlonV-a0Fw1HU82J#p7-MM-ayI}6f@l==Q zVqLC8>i!TaRP3gYAVdYN^1O15KvEBI+aTx@mRN=W>$6@dP{&zbEosvv`wV6XY$aot zQT^&Eglh!uMii+4+g6jt8SjfDHoRv79>#S~PnndX#0C&z$=WKanfi7Y2~w;`UYYGd z|H-oCn8zB=(>h)1oa{-l#n%cIV0mgZAGvK1g!4Xh%vG_bStp=1kRY(c0)$+v|dq5T`IaCZTD2+B`-`Fq+*<}>**iz&OU!RTYBemFSbZ2**@g4hN!I@3wf#& z04(^`5Jc&%P3V|0~KQE~Da95^|R#}18PBhMe? z@%tWp4ApoNHBk+U6p*>JycuXw36yoquVr6buN-p9D|Z!zK6j1>auRiBHuXRe6mQA- z?X;Y8>DaLqNQ2C&te2OA5h73$&0vh+5GEI);Twp-uh(p3wlO`;gVVGbEiBlm>WN*M z`4NrcwKQ$MLV(Fv&?r>MZZtE$PGefj%(Tbu7*C*~eDd1rW(4$hzqmDF0oyqj&{+p2 zXXPfq=(statIA+x9a7SA5&>C-%&kHs6AKTNYUm;38(?_CUq>*&@Q4qUFhSAY5~w1{ zlLx|a0$j+})>o}t^1Ok1=u&HB(a~MUj$K{2Zs#C2^weoCmeCg`;jEHYY7I03Uzm(F z#x!DnP4KpydG6eD!GhPbkpvYXPWO@!Ym923ZmUKq<#i^OV-cqO9soGSW?a)!?u(7^ z_G{e67?^_Tq!0B(6x%Pm48Q#0kK+IQxu3^--||j^*IV#gzxb=TZuiv)CgR8@eR%A| z0bId&)nXZeTm}79;ND0aS8m#Zx4zS`ibn&Cpq2V_Pn zMR#tyJ}it%=$zYsCTaNzRCFb>qzb}R<^)3V6gqnQZQJk#Q6>ne7`&7X?8|Hu*k}g4 zg=^oYn^fQ@xCO|3f-Qo6vxYDgI>cORS!OM96(Gn7WNe&^0K+{iFGFmru`er?!mKe^ z35j{CFN@}!?YK=F+zilINA^-U{d$tDcTVffTO?mb7xz2$03ifa!x2s8fc^Du4 z$WP&A*Is4gC=s%kX0?V?B8i{=>5t<5@B1Jw8|q~*>ciaJsJ%NkPxENk=B@bQSH2Fn zU-@!uj5iTGbp)qJ=THgt;PNXr;9YOM99M1ZLUCpeYu659B=YP#O*sV6WcUP@s^ygv<%!_{PsC+-@Ip)BAIEm?nh_W z0M=~Wiop$ANWi*LC76|&{hAmA%_=Ps)F4w;hay?{G7`%b2+~~D^%))t2(0Re27QQy zd{*CKnx!Fvk3cL$sBtTmx{Qg@IkVWc0o9R>U-Fo>35Dxly9_R1i4%Z2*WMRf(?nK% zNvKNjs?-T!?399~9MXXr;;g4|AjEt}n3o7mJvYEVoy{W8v-Koec~kkUv`jV@>BNb{ zleqKFeYkti3?4f=i5fwS@JL`Kd(*w}GFc_#ER;0uV&!tdfLFO##Qgm9vvQSc*-M2D zAsDi!VCO4mOLwKNK$GZST8wFUuI<;>er>6>HO}PrrC*xl80k*qhi-ox zc5k^1`6A62DoKb9GY}3TTgakZB1rAnfz6%W*u8EY>a6>CB!un5o6*ye#!yc$9(nKq zeErM+fE}BLaoH7D<5kyg#>W0Gl*i{XhdMW1on3`ZZrCy9p`A`q0Q3(>@!(@3OO$T9oa{*gJpXB|#ZWF3K6Ba8Aq*psiB>>N&R`V;i4-?Q*sAfy}{MY{pH}ATd z=HoEFf9F?`-Z+5c_wUDv#}3*Pvw^`bGPVhf9C#A3WE7hQyAcm1uztt2m>46In;In` zs)x6%yE5q3YM;)6y>dBO>UUyA^hBjLX35g1MD1fLn~oZ5@v7wX*o+-pD!SCt%f0>T zP6rzd%VhH`O9mvS_Ks#E6-B*SMJy3Qv?Bz6l%PtJ%O9x2r{!$IDQaC5L6$c_6O055 zKE~HLmmV($iQED#jfZLOU4slvFTdAOW(=BE%xIk;t9e=uCUibQjrWju(efoRkfgYC zRaOC1d)u<%wkEG_5a?`Ds{rapJw$7>3wPW< z&9ql0PTMbX5lH1SbKag4nU9yUvjw#Nx-U;hFMpZZTY^@(4>{@?p;^o^fJvXaHU-~KWl zec*nyav7`{Sce;Ldy6e+tR7sMwIVTpwxu%+^UCF%0DQ^*0%$MB6G*jxD!NP09b5L( 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 V$D(Di>*4?a002ovPDHLkV1l)cO=$oC literal 0 HcmV?d00001 diff --git a/docs/assets/gallery/gallery.png b/docs/assets/gallery/gallery.png new file mode 100644 index 0000000000000000000000000000000000000000..89f2dd1b463eaada3c8ee88474f56427f95b543a GIT binary patch literal 226112 zcma&Nbx<5%@GnY&2X}(AED+q?-Q7L7yE_TG$P(P$-Q9w_F0R2Hf(O5Re|4+gef91i zuXeYl&Y7O+>F!hg`ShM1kg}o_$`^t!P*6}PGScFzP*9%)p`f7M5a2#$7|g`6J`SH; zRi#9ss;7vKKL#+CA_^iIwuteaLdsY)_-1E;h$*gUlwIzB$vVS=9B$0y|{AK!AdEiHo$;uAvcMd2W*PoMS0 z5q#G^jxeoO=;%ftGmN}219)V@K~bomu3!<+|Ky7a`~7$N=x=35dz=$Yo%rWjs}NuE z!>=DgP=_c4rJA;-iL#{&w%J>=+_Jk^$3?8x@rH@MpN{{#+)sRjTV9_^F#|~oBZs{! z=o$NP=42-Ttgk~8f zrRcHQ#>}*npiA(deboJ+)*ZX+k+Na|rX8flt`AR5z*Fx;HjGk~q4B;a^@PU0L$*x(?C?qd?Qh-rLBnu&{F^a)i#y~cpx%x1_x0Qsdb^|8+?@5= zT?@b**Q&g~KNz~2@?9O*`JB1-4flHF&_%o6ZC?eje)|(|H+jv__yX#aBF@&^P>TGi z52G?IuE0`*bAByE1PGaXd(I}j+U*?ub8?z}+4eaz%FAVqV*W((3hVNj(r&%eT{47N zNf3+}R;AmpdG9H3gYED>wIq)uUhv~G;FJzHy8kUD^502{VDMtIM`M$__BxZ_fsy?h zWG&YBvYl8-;0mAM<=Cr;3F`^G*7GBrv=e^i4EqU>L4JYyBWl(8%^gPzY>M!%qvf*OY)>&vK{==4U_;L7i1XW}=s{=CQ0QsxEJy}z7MJN^Alf*l3>a&GkI$p7^B6*u4^Yim&G zeZwf#*TfGw@O>#TdIPAlUCq}Wqx8NeHA(#EB}m%w5Pa@+vlcifeq(3!I9Jj&6FNNn zwq0W(tyuUFsnxS7?jT|u*`SONarwC~=VjY*YUF(DvHXxPs^jt>qb|3}+knzL>*g&u zr!Oof#fSW6*mvvQmecd!Nbp0xD&sEo=5v(SF;~}L zbKHBlu&x)4nj2LFr|N>V+ovbI41T=52YmopHxk0->xxlEoULQ);7wL&L|NeXs|h{p z6h_aRpc@HZhzWowf06nHA|)8n^Z4hzuSD=MwpoauKf;}miRI>>T+TDs%OmMKN%unx z6J-6Ho>!17VSDe4ypLe|sFE`-!KL5ybY6+$?++jQ&LC(4T5_2Ob-uw2cz(*O>T;Eg zA1(YaQk^$g)!L(bR~&0-_*wHutQTvjHvf;7p3_%0KwsC{*lD!()}2~U(1ZUUE+@z& zQ!mWqVeD(aQ8xP|l#t)i)baHD*d>XCkKkTOZNi3u0P(l;!;M>jBii!)Q81MtHm6p$ zBHpJf199y(A7a$At>DYR2U{fS7f=ilW>yz}oI3jDrS-pGfdYk9%%IhDWup9UMJZ)9pfzJW(>bS_q+(aZIQl$<94Hr-gIs9!1~ZI zsYr9cyVY{Knl=m}iBl0k%L}gVI5IA?k$7r$cHjIScQU+AYS*~9n;S6*3Bn9 zUZ-~Dbk>^KPSI(&ohg&KeXw=cwM&(|E?b1I`Ig|eh&tF zW8@f~6aDE6npjWic|vLKb~wdZB6$cN|MWQ%RdE2vGC@j_(VwfB z{!6JpxkdGz`7;?vcvid*`#KF(bK%1uF4sccc!QG{Jwp0>=f8ho0+Bes?(<`ox9oWdBe0{SRAa$;rC^!!t5epCMR{~Fo>U7OuS{{fs+oUp%v zzoGxT-_TcUzi}-G1nCd0QRs6o_vhYYYrdR5&u~r)9Mk=C`xWQ{V&Iw6lG}WhF4s%( znjBsdT>V|7|B=U{K6wTR_+zSWISZ=IVI_vmsiw>NlB2J$f56=DpQ7oTqUf7-%KtO> zKPZih&FVOfi%WYR^zXx}+FWkJ)$G_%S-$_P?Pw@ULQNZcZ9}e-ezR6E23f>Mr{^rz zj*eo$>vjJ@qeF*Lv(BzviZuC&J(amNNX+6QF4OH z$%W$1*+<1!_4!#U28p9qc)A(crB`**JNxPm@l7`Y+Yxa`Wd}{V6}r50v`I@A;@rZC zUY*xv+`Nn*%NE*4AP7q#P$vB~8;Rd?fEvZo&5bBntbg9*I%3d-ZB?6_NHTggMu~HS z{gQnemrCW!*Yt??(cD@rYin64n3Dp{iZmGk=!!p&##UYfW@c^^jPkCA8PnwRCma;+ z+w#}CjuRJn*AftP4(Smh&6f{Pcvh~}e&yP{&Ht*?ZPFyukh7C%&rjVYb5PaDMLOqH zI5?2eNN&w3xFQWkM$LeuoKyz#NHEC0v69EabGgvdmoKDS`%ZcbkSJ2tPzSTCpd zK$^E^0|I*Bz6l4pB2FV-NdQ#bJeo-*0@9BjII>+p7SxFSIq#6n^kk2tt3-5;EZQb= zjDi`zgl%p0QjHTLUc(ulLhmdZcCO{jrGhDuD#o#EoZ~=RZvjr?wC*^nD#d-R)VZ-Z z;i6ASV^KR_(rIT@2?NK3y?Nr2KR7N__+iLDcCDn6`{E2jK>k~|VPU+Cyk*u`S`=kx z_V*Ge2LIXh%*}qvDw)D>fukTz-&Vd_2|hz-Jw4rMc13vT*Df|dz4g?o$|2d6)o9eU z@0hoF+N+y7Y5VcE*zu$BYWW+?AXXj{KrwCcEhwK582{l&yxV&QPVZ`GNhW|n(>>-i zM__5fYSv_N2I{18YYhvB*ju_>!m&52H1ynLT-%(^x6C7=l6WoawmfC8sV6VSF$}Wb z$0iR`AH><}@nUzp=b-5BEb!SSzYQe&!e`v>ppI@4$p5r5#lHUDb*&mC5_;BF!!GD?mpE1S% zHQ)V5#Q)#9KDj|(IO4Wi!tYKYf^jv(NlvK7fw?*hm%x3#A-I$z;Pbx0mXy6$3EoG+ zGNAuKs&_hsf3;t1MAY;wtRdC@`gZw`^UH(Z{2G!|H@Wt(=MRAYS`B=mCvIN51~GiA z6S|e(ArE-r_6uKk`1*ZK9(yZvDe=3)(kI0rX=Kpb-H2TPjq0i6JwNp1rQe{d#mR|p z>y`G;HGIX}-Ylr$@a{w%YUd<6N{84ta1GkzaZ~5nL#M#^Yj{!#>n&(2+e_hgH}t$P zif(kKpW-=N$l-kli=IkHd{_tJr_ZFAaI-`a%z`(VE^mzMQR6`fEs>>1vP?F{ky@VC z=x;2OIdAjEF}&}g_(~=9yV%v2u_0cHvdjCB06Qf{)Efh>RYvgC6!BWlWXGk$eM>5v z_utpo+JmZVLo|t6N8V71a8$DH7uv?He-3<#BLR14V7|i^a|8Izn^lz7^Hm)FuWJF^ zqb^h`W#(SQddihUDpdp8S{Up$Duy}u(wvwVZ>G^V@}x{_L;;@?_o5_6ypWb#J=Y*b7zC@{SbaLuNqN_MhV zQ<;O0QI)c>y1ex2))nMSs_iEr@!z*~fQ z^nLAHfAaDX3m7Ybb;`MN3-A^cM&lRnDF*%`LmRFzkmOb(Sqqd4)*#Q z)ec$ivBm4VLN?i;V?bq#J?Rb4>Of4XwC>+}Juuf^%-9P;zlWpC(t`ek7z@;@n(dhi z$n#111!X{#cx_4?iA=Xzk6JRaD>4YLmorbN>DSXP0>JB2*o089PYkLEE_wR|Q-&?8dZ@3U2J?_1ZyrKF*n^!mN? zo1A*PxK5&ue?)uq3Xgi+{e6*_=SZ?*Boj*fke~PFw!cXEe#&m&_9!tVj#Ex^AT6ci zq0ik~e8Kz^o!73OH3hrTbw_^FoRn@@y7^K}#L-tEVGnuaGx;0(epFMnmYRS9fsI4n z7pYGurmj1REDoy}s)kzw5_G*Po=C@Lh1mD>O_ib+E7CC(8=}lIiT5CcX2r(MTl>4H zmpt$#6-oUg{;STSwn+5=0*>{e&>PygpBA)DWnAqtT}U(<0zvBN<+x?k8b^!`4&PkD zZ6m}_9E4Sxv~?0w3dRqk#u!`@nh!7K)~f2_8*5%bw|m2@;y;!I#y`1~YxbL!MZTzG z#Ke8!Ma8T2sSJ|S?y;2)N)!KjXZF>c!1EFOP4*ZDFpC?qBQr1YYo4IMtbw~mB5{d! z%ypni>2q}4FY&c*PKU){t*|s7Q+(IK$}9f4>yc9TI$GBi1nWRevMLvg@gZ^~;qye@ zTrq?$Tc(F~q$pS}cSsti#pW7McwF~OsFm*(ABIK1G{?NFTI$o#@UOsse9hAyVE$LI z#PiyFn$}E=0ld(Q5B-IVGy49w3l7mc=C!{$>;fG#cE7J1oj6SJL=^eZs<81SLFsMz zt?ULzMF&UsIBkp@GZ>@^>ZT7(G8A-KRgCsh$3DdA#HGD2qai6CeS(9#8*P(jQN!rQ zhmi2Sg|fobZvy^S8`h=CpH97gzH%wS8`0s=$9~!Ip0rPmSwqf|e({?cN>RifdbspP zmfL)=KJ4{V3V0d*Sj}7S4JZ*q6cJKvm9a4Sb=Xps*rKzX$xSf?Mtoy;xQTM?zT@nA z6&T4pQ#YdnlsfhD7Tx7k$6A&fWiAy!!Tk~oXc(E;=WuV?@XnCtQ>=>mh;)*ra20VYWp=; zj87LZT?RiFTRSW~!~fE0L9HTOqUf@~A&Bx(L6%aP&`_qI(XXhj&{(cJ<$(BQ!X2B> z61m*)CtAiOua8j#Hn@}5ktylFV1aUf?3HGSPr7f0L}1$=w8%D;s}wbhRn2EZ9oe0&xYbo~*i9_&x{nL`T4~dt54t1qK7IK7#+mmKVr6qs_E9EJVsg5J z3mA4~P5_8XeRggH_LdTx(Q+#M6q5JK6!NEK{3%-z_Ut7o=>mu~#_1#($uIbZl->)Y z5m>;k`PKc_WA~c=*zUUxuSvo!P|Dkpp3``RQ7oa+n@y$fHc~W!%^*$T)G97+nWaUN&>HcoehL<0)NaxqfTABg5## zNgS8lf=3dx1bmsJ?TBhIjdp_RvHPJ@`~!D1Yj$?~El}Xi(8!du(sre|eU;%l6CmI0 z$r2im;mRPwDN9q2Ll{JmE^)yi!re zZw$>%HwHfc&y+U00F11`5X9-dl;??{@q&ASmhUmT@2zw-mQhi@tQarnqsjo4l&CpB zw-n9&17=|qeFEEpp z;w3w+ejzfg#Cs^ID}$0NS{!M{yhlY`4PeO+%ri%#%w*rr1^&)r&`42#9sOKSOoYA zJ;8q?@f*4^;4U?I1Rjcq{6Xsf$M!QLZbi`nri2}P8ta77F4vI%+1e;(b?LgbCIlr? z%ETO*4@=4wGPjIKb;ENDseIkodJ^c|NhgdmE1}ht{gxDYrtiJ?g-4cT5Bk>A!xWOt zpzZc(A($hJWBG5Ncm{7&WBaKL%^1`>CU1qqR2yYgTvfW%7(@iANeY9i3j|l&(ILLaqPX*|;=!Sh1 zjaN&aHJFrT?)Lq&N_;~HNhRN6j`SLwnqx)taG(vXOY-T8 z7=HJ`4+jg)AHIL<4J|PY&8u7Z;y9f7arun;;>&XmuZ_{jxz9x5*KomSElICC)lZ?& ze1G@e{osp9y84j}@bP=CD{{7+yK3wt*>p6Xk>a^x{ z95xnx6vHed!2I%dIr2*!sW(csc3tE_8n}RFP%?}1*c=H~eVK=&BxUk&g~ruN#=O?- zbzi!AEwXZALw8{$R*Dv0ld)~@epX)fM2n3%LGOy@Bm(p1fx@{$=zM%UMJ*)F!$V5V zoGNdy43=Y6dlNTaIq}#QmvOi%BHDpMC_Nm=Z!MR8T99O$o@*^TQFD=dG9;QtRR}57 z*plyw>vb!GhNmj9+G<4vZF(#^!{THcHC4AiLW<y)o69EKW$wGDqRtwW6^OFZv(^+qus;4!`QE1iOd7U9jN${d zUd%b@d+ZZ5dNeNw9ah8NOq?_~_dnT_IN9ee6#ZK3;k;Js*!eRPpZ7GXn@XaWT2oFO z74#1r40`SX-OJ^KI{_pV&MUGnL9_33p5GUg-ZAFJxl%_Mgsfx5w*JAu8Qx)O-yo3= z3~fDXnQ0nD_P;+GUyi{3TpBfqir3b=Cdd+3|AF zd#0X&lCeThvD*POt)PeCMqRWOhI4cy`mu1)rl`WNy8?+ZV2M-dz+X&X!%+rIa7Y>X zY+=#;5`r}%!mD=1ob#PpcV#m}KXAq;I$a;TNEuVjYS4^7MpWMQN97H|bU%Ltu*uPE zw12OJuO8MggQ#YlyJj@bV!F2+LIDEm;R~lpcvY!jhdz3#vPp*u5eNj`vGzOS@ zmU3+A0cRBssM3s7*$^2qL8g~S*xh$WhJJUm(ACPWrwgLf%@BKWEDGJPLjcRp&=WjW3lWAhP_i3qO3~rB3|wlrAVN zv{rM?L}B8BxYK4;aY+{`a`HBU|PKX7Z>fc zqY{^sk`w2Bw`Wazg<;NdzwZ`|wwem(XSAx_RjkHhu$6nltXrVc!t`EG^@v6d+{V69Pi>C!gwEf3@ zmbQgJDZPUMeyH(V41p_KKErSGRDr7Rl+MojX^*DM@*7^POw2LgC;@$RxK=y37*#mJ z!SQeDJ$qzYX=au=!u0H+;=u62i))kk!(2pp1!YfPduL|iIU;v~D#Mi_iUGr4R zsK-es03np}MK-Cx_r!db`92k7aP;ogxe~b%=BzC-z*faImA)!l(%F9C)$Oakq(zYq zQesMz5DD>iu2xy1@|0q34JCM=SjMf0Np$Dg*!cQ~BVcoOI1FDb-}d*!#_VO_X5XAG zBO8jt6X;omzcGsHiVOXcsJ3>Oyv+({r%TT1FC@@-SYFVNZ|LF$u*%dn8&${bbY2cZ z|E5@hF3l0Vu_w8G}DF^spK9k-T^O1oDeqUE8WsR;$-m1*Ie zY(`ckBmP?`4&$bn)YUe1)HgwIhc_{Jr^BU#wVl|VzlhB@8p&Z(YdwJiHxhb~pj-`> z{o1_UdMddDqdJ;GHw}Oozjp$OP?y56jV1>p0{hi~8;Hp?v1a8zxKAa<1|QVDET&BR&e;@303e=C^fU!S~p2`!jhH>Mk0F zWd*)9cTjMdLl4FaESt$JQ8=mU0{eDaWj3)peoeH;kS z#1;4MLknl z2^KKx2S4Ic#SVM=Z{*=}KuDmC7!4V0(vI0j?oq2>9kSC}yjh0Wd{P>^$(&zbjL@4jicE+@676MCCBw`)s{G|h*WA=72IixyR?K{d0n zE(7WHAC;V%8U8`+!?77|#}Ga*lZ>fRnabBp7f+fiRiqHVM&f8K5*Njem@h*NyXIF) zdqg)aZO;m`EBbR>HIa;GK*y8SbFzk!4!L$ikzY%|Ej@;7yMuf$vOV@1L6B-eciS!e z&1zYIvR6T4Cim5l2~)c{dU2LM8FySeIf6VJp#UE(?^muQE>-Wa70Y0Jsj6>{DzqD0 zCP8Ll*64)!23z1nRf<+yqG!7SRKEuLn~wJ>`)ip3>-(tqXIo8%;gdlDX$>9EHpJq# zzuJGL7FijPT9{i4D&UEU1vW`)Ete9qPbca=xcP3|lmXGx>ykGkSxVM!T$ASnV-n9l zuA1KZH_fHi<-8^h%N%mpCQc4<3SKFKpMCR#eLiFxUzxOrk zpBl|;kHZLOS6Y^f0jur0PM0M@;0~c%JbW_ep|da%GfBdD9$Rw_9xqYnU|x3rXm)v9 za~=!0Pv)rsKG<>=t+JQTbk*+CPr3}VIpM6*?l^rd4uMc|oA0n1DaO}Eo7-&`SCgI$ zqWlLV3HS5>`oO}fq!U5VPyJkKqQ*C1wme0;{4A5TYj%t>W}OwVaHES8@v)2DIF@lf8{F2{JSrgJt3D=)UKyJo4I zb0T`xwm|He#IF-WK^#fm|B8E{#l=0wK#qJbUYDS|^n-r)AOS%suFyrk;}`Yuewrj~ zUj1sSEs`B&vxYlCnYUiYY~M|(puM4zxg~T_H7L6p8~1@hG@HtUN~3o%>3q2!_|wdp z39wJo`S)aSV&PRd^NpzI+76;ShKKr(>O+Q0EOSgR{$Rt^r$Q#Sn)QOIuXA zlSP6n)cR>o!1Pk5R(eRhJi1J)orusWcD?1})k7VdH*8*qu|0$vum0L`HvN&}1TFe5 zJk>orvikK76tPGJ_PZ8tm1{xZ9|4Um7Bed=VXM8tUQajg#t9oIX#hKmt!p4_16T|V z>lOQ(W9Uc~1ETUiWO{-DG~4;uYKmRWKF`vWC3XNEr&OlweEL|gW24}mSR$#CP9Vv{ z2WC|mX65L0$u4#(3eh!BPvVX7Dio$su^dw|8UtWtQwdq5c@H63-zOAWc<<(lrjzY| zr6FwlOI@Yt%^ssD*zQnCisA#{KvCq!K#U!Z2P!~gKk5MZHJ9R+st1g!lUwkJ_hic3 zMDgoDv_6vc+JmQSSOpe2^kf+h%FhKX1dBIcak5p58?}05V-LU6)w%L^#f#2qF_hCL zSsI<%o=ThCl^a$XZGdp1D74wohcs;0>M9e=^hp-Qx%2PXeA&jYoMtg|3}KuYcipZn z3(88ir3=^^7F^fF-r4j#0^GgcqT!Ali^(9$Y8+gA85_B|dR6m_vt_%|QTdjIeW<_2 z*9ZlkmTCrvGICwcIQtZX}=t?a&4wGl^T{|4Dr`*#5Uj*tNV07xqyDxAviOm9BH$bLDx z9~>L!_K_lcmq*fA++Wm$NYl1ZuoaCgZ;s<(j|O<0HJA&|WLa*A|7zAK(^O`}Q(;Q5 z`(mzsEir%1{)$8?e5pl0ip$`#7IHJpjsa>;4+VlBwcJ1QF|>~=_#;x z$xfNHmNbr$D$d13^htLc;ijb*v=ryiE2>{Bq6qn`gP1Qh`MfV>qn7M*mG)%@r<^z`-(+Sls};A5)&I(wwt(lJu~(k+`lZ$eJPS@E}~skMRc3> zFzi?~@xKzjIyn7@=eoSVeKRNCVHQP*1t{?FF zY+*sX+&TwFeuzskC>nVSKc_#6}CpOsd zdK@!N_hNnn9suqD<`f-^|&yu+ovj(`6x3gz9edA6VPOWoA(8z zl+`YY3A{SC2A3wc6<$lX;LgsfNLgyZAa;?CEk5v=BuHKyoUtSDv}_C>JlZQN8DEzm z1iW#4w_2S7kK(HzQbH*V$6&_Kv+w zZx@cHqjUT0E2?K?D$y1tS0meEUf;bC3Ru1?Eb*Rs`w*P_kK6SHK30Vc~Xida8K05b0xLie_Z>O5&7LFv+RIkB;^+K^W;(- z9ZpT<4^Sp$6}X3%Lowrd_e!_nP+os%fAPTFy^=c?_Qr^o9JA_ps&gdXx|L!en4ar( z?F7;76c&ahechU1huD63A>w-=O<0*tBG6DcOgFGNm+#Rh?&qe7SOaI}Z7O46xdjT3 ztWi@Xo_XoyLYW4mK~nEQQj`kuYN!GofZaLm5)`Z%u7QF;gv?&r^~g0{Nt*TG>Nl$X zlsL!`$}KRFv&Rj=LSfy9f)Fr3Ag(`(@Cxw}Q`jZPYH zc=b1K)Gv+h*Bmc1nK%-z@x};2V(5a=BB#rMTMOFH`r%<7AqGc~pDL+?3Rcc&k zzaWzd2A%5zSmUtDz)R9FrPtiotmpb>jDZ*#FZinF5}MXSi>0&2D2$YdwsjLP%LuL<4MfU2C+50qirrq@Ny?-sJcnyA!*U^ID^6;AD-zanuh9mRXmbIoGX-C zwXAZt2Zn2~p!@%hk-Jqh%PE=1A=m`#)ipx;`w#iaxpNgfelxQ%%;KMfgG>%Bqg-=tbs^iaZoomI@1-<2UaVqsZ2?mIi^tHvHmZ2O~j?!FJo$1 zHO4QsTv23x3{wXx-=^r@R--V&rAWZonYe|?j5lF*+}CrlStFe^XL6+$@!CDc&~H7S z-Do{GQ9U7C-PcXPZmk`(fO9VAh2(LJ$wHO|%)SEOoW7!HttmW=G{(HxtRCvPp~WQI zzvZWn{iiiusG}6q-(`w_N@UGL(NX~CH0iCU|MYfTN_lNGX}{j*47o|+6;lmkm>Z=U zC|QN>B?C65ucxWbQi6?Xqx2WI_p@nA;{T2_un;&o@bwjK4>vVgQmv=K6Kr!gb>d%h z2!P_rFwD^9TJoAoVl5o#9_eL2Z+|tnxu$lV&xxvt*RJ$(8JDlZ#wb3Qd|x@z&*x`7ByF7h#S+e%u#c3jl<=+UPmjA9G`A!Q`q_4UGXu<;9kySqH$2a!Bq>B3N?74-_`tq9P%Cc5UZ;hg1n{={MEFszcFsHM{T*R;+< zq;f=HV>}W28sbVry%rrYPI6^l`1kp5Gdz4a>#%7xc{ z0(YxFnp^w#L0eu!YhpI$33#4z@qHVZa|3AYMiYjolp2Zprl?{dVl0d@V#BW5DVB`J zN?BSx@nObNxu3v4$C{Nxhr~kkBJ1?;4GOdT(QHaAsPaDajODFB&W*ulx745r#mB`a z*HyvMsjIw&w2tic2FP{JpfxT=F;<|F8W4w7JPAe{@R(fct?3FYj-+-JtzLTP9ZNPh z5EFt4w4402#KO-5vS#Q3vF$SYf~`^=XlKD2d~jD)jsjt8q(r@9eDEq%)|!Og*L8;F zCrO}h3EvyMzwRK#x~Bh&eB`I1l2nwF-Oo??f*v(==CE64Qtfs~$CK{-(P2=#v7xXu z@>=!k*Ft?VBh}{JdCHuw<@&q_eX0zqMtxbPGmK%d<*X%FMKV5|Pw4<$;TOB8eZ!S@ zBIGi0_r+_bH;AM?70ik-el1@(ayb2+e?h|U_U`}hDMc_mhEB`4zbIw*QLB0=vRhG) zm4#gpG+JhTw$UmpUq;J8|1~J z!etcOA$0aJcyTEzFb9o7pxpd1d#c)X1pvx)c+qeFVjBQ2Eeq(gOo#j=n?8MhlfESN zbi(3ftn}zfc_b%tEG3I7C|7v0T7GUZGY3VT-*7KA=Zo=?6H1aO8Y)Vta*RhV_WqyW z^_uwr$DtB-uk-r(`(lfZtDh#lLQKabOuG2$E7FmnFUKIwA1zH8Y1BYWnj5Y3o56-T ze%Q3r1P{y4Wv{~k@0D0@#_vzvO8H$`#IjjQ=FKwRk#|t;N#!*_q zH7h$>)_&=QJ#RyVSIHkcu4(E+9I`_Y;-T3x=QDv?_^qzjwdF3)7J=-=xw**ws1))c zo9=*D+IVBSF*R7fgVT3V2A7dyf+x_shK!Yg#vJT|=Z-!ker z8yS;*VZ6CIf~q9R#@$?j zP~MxFOfQRRkw$|XTqHc%*nlb5$sG=@#%c7Sfj#!2Au6k>&-Qk~X^YsmPyf`Z!p!uL zw}FT{Xl~-=>ypX}jqwNx5w)Fh-&$x>CiM3sbz=?v(BqyYX4%Cxrnzk^mS!Qfi+|L& zL3bxKhW>P)=#tVf>_J~9!}pzw=81idRcM>wu=aJvzuTBmPrk08poY4P#}LM9RgX>+_RLg_|BnwuOrMo9ZOyNH^~p;_hik0PqH=_Z5xz zE!T2KH)F?EAEX%^M5Z^$8!&j!DF8M_(3H0%YtB^Fv&C#n@VY%Jr>qi4S90k0m zsegLNzq@I`!|XfwmGlM0?tT0{W|IPbMm4=}W9to*r0vp>{i7ADHIT-^Ym`n!wPc2@ z*snr*BFCO)DA2GiGvX!V-Vz~@GaF&*z3hll0MBDy34RjV*oN-oJtkpKPcHaek4oJJ zRDWpy2`+^In+ErTGWq(kxV;8oqH46RaXU(q8KI7Fj^{+~kVsK}5g9O1I=)aE1eE?Z zi&>TYg`0{l3;jM==;!YmEoY0RW+WNE}>$5uC%ncyy8*m_qKQu z=DYvV6qrNM;=z?_9id*-yDw90ZcAbetl%&ksi9$Yrw0%$sN!ZMHreKnQi2k>iz@EI zG!~`WRE3osku;fXMf60Gb#r%Q>#Ke-^W>Iao>bSP(q~gf^755sQ>5bat?nr(6E3X& zM#5S2&VmHn{-H7qQnIs&IKlUbKD_S-0={<9m`Ec=WWadH)D4dT&2R;-axNqXb@ z!=3;B5%KMi)E`%(HIF9d4-r^vHr|LI^k`|(EHfd?8n{WW5sjdV-#JAL=j?J3P#5;4 z3KjH7e}X*hrcDQ8c3m+W-n|gA_HFqhoW*ZIr-ob3VwY@Gse^Vxv;Y;oP9_bKKkQ5!Q+8a zwm~OH-5oM^v_Ube7e`mjD2*P6vClrFJNqd{po?mU^i}iAHGG|Pa##l>_Twn&VymHr z+xT%>**n@VgP*}?8?k*y_^j-%q$?dr#2c^6ZSPP7b=;`uLJ`$qMK|gli_Q7l=2)ln zy_wMM;0|UM?&$q2I&>aC^dt;f^4OOn3=dT0wJQ{!gAB9NlppW>Etk|x4muW5inZKN zj#;{AWhvj|O-d=RZhgWtDJx73N?KBQl*LhRMCb`b=n#3c@(wiftYv)}S1_gW8GcOt zAfY#EgNsU5L(*@AJ+4-WXm%9mX!tbvkJUn$DP@MsD*^j}TtpOb9GU~&jVLXxF`OFr>UdeM zKKHrYXze;b#iz%S6v@-54ATGlb?XvhRTrra(j|RWn-J4KoUgd)`Xq5zc0Zgj7wfK| zI$z-3Ul7jBT8}pBl)S_d?nLRBQyD!sRh?XV9w&d-YR)Rs&||(`JeBU;i7 zIGxw=aJzJ$#Z>!Nz3E_L2xmKwZJWxbOmWv|m$FI%$}6Zq%HVX^ldkS?CD;4u{BH&$ zIwpFh<68Xt>0)(J8eT&N);&FwT55XgfEt=mv}AXPhMeY(uae-;Je%GNIH87{ua)`t zDWwh2xMR}g{q@0`()rsGQO@U+Oalg<0a1q)`3VC&Gn*iPG@%GLQDRx$D0!+SW6MLP zB!NlWv8~gI6FUb}b5p!Mr2xz%qv45*ih{Nbk@BFG@(d=;YJKoHV+X-0r(IvZM#YRE z^Y5oqDO)|fd?F$O5R6S7(B{fRox-4W2u?YgUW&0E88S=qu}Arf@)1YOIT7Hjj%7X1 zfhT<(1++R*-I)htvU@{-zvN598Zp2JN6=YImF|#e2}aF5ajNA^BVFzN$X7#@pcYSwuIcTY76H-qr-9J z-beoSl0HKglTMS`-gu2A864HvKP#XQEr_gLCsH1l!`w{>a}Z*az4I_E+6ce>LMsQf zCws&zQCBq~pE64JQRJzN(Hm(Dgdu-vLLRa`=f*zn-F8BQBecht;2R<&PW{r9muU5A zjy+CK+Aa+8%2aJoU6Yq{+P+U|3NHjnJ`eZl*CG+^iCk^&G98Pg7 zSI2%t>n2t=8KRy>QbW|;OMJGIv-!uY2Z<{2S1Lcn<&dO62%DS8baivf*)+>3My>X& z-I~p3;$-7f`>nQv(x|T7|E`~x!BBz~=u)qOCToOFkD{FPW#l7?VNB6v{bK8r`llz9}>5F+uuk4=hh15dNw#x<^ zNpxCk3NZkVE*AsaHg?)@WwZYGi{02=Q=_*pf_Iab`KHG8GhZyS1fJM(N*^sJZwoNC``8$ z*LgswhBU0}eK#s=5K98F^^$BtbFZJ6<-@-!3Rz?@i6{|K z7u#FUf4gzSe4Z;EV1t^pY^;m62exSXJ8EvRSd(QT$Kf4=!+!y<25DH^Bs^5oCkWI{ zK=|WwKkXdziXg!nwo9hRbNk$Wf5~bVN>PCA2UH$c8c0)OjB8rN6Z1*MV%m!F`4>;J z4F!~7vnDVj=5ypG-cxxiOpGQP2Z+2-S|4_M|S}Iu@K+liiC)tsLGb(qU7?FO)TaxTLsoB^Br~lfNUz{PJqmQ^(k@0^9q!_YZn3d8*`0G~i$zY`T|edRVxRNF8~^2_nKlHP*S!t2ml zLL*f|I9W8)H$|dL@r3Cp&0b0}Od^t*Df3eG#mb8D+O_C0xX~#*b=QM<_}f3g_>mzb z6LEVbmc7P{bzr8xS7Oul=x-v^*+N8wsuPbgRAof0QA38-R2S1)+TM-?2fVGTmSbsK z3afiN@sjJV#>Pc`xP19CT)Udrv=T;VDUQ@+6tQe8swBT+eE@@{UOc$3fxVL)4BEPp zXiM8O$aSr~ISaUGh))udwDWYiE*!##nX=hbO1-^ua;I(yjJglGcIcXrw#w>F?f&&)j`4 zZh7Ua@z&SB0nu^;xv5DTa7JkMZripEPd&aJFTLSr`z+y}@o_9$z8X_ZxBIdyv3Tuf zJoVUkNMLmLs9-T7r$-Pny~)0XAb z1iKxoh%BokS z?(+Bq&zB;ROA;hPX}Y@jEQaM>1A!43_sb-uLOySIu=I*|)Aqc2@t@kTIX?bGc8=V% zH~ZfWF)m2%2-8pTxNe%Un^!DBJGITF?QOVW%Vw`~UjbtyBiQxSPVAtGyrQcYJNE3w zfp8r8ftAz(UyR|sd#I65p~@DS?CHUZWqmmKz;_X$rl~izh>-Zt$V}aGmasf&Cc|U= z?GA8LxFi1N{aLZW;ux6^s?f8nBRsdv@&YxzBF$bs^Ga>6(ZY*E6PIRfxE7;3YIk50 zjVjt|6?@6&Kq!V55{RD5EtB}hsqu|eTQN%VoMyW%huB6rNQX1LVCgd1jwDOXFOe)6 zfhI_v5)4vR}q~o zqA||AmLsT6l~J1}kxx<6oo>O@Fm+yPx~toIu#$sZFRyp3Qf7ahVpYvrX$y&qiui== z^rXEj&&TOL&UP-s8m8Y_`Nw8_9GQhhHB#^n;eU}~Ok~3jQ6kyp3kBpzev{lD8XrST zPd6eoQ}x_HBOXOElSYFhyFL&!l&j!h?|%&A1D$x=yWWG%%hzCXa?I9Kj*gDt$tSmA z`{NJUgm>E&*WlVW{RGm94EAh$6zMkI`2>1atVX0#!okPyGm|XL-m51DA~X*}_H7W& z^N9dGa#9Z$A$sJdT`LdE;mW5lKU}2e?Mts=+B1IY4oc6``Mu^|#)q@JR7L`{>V)?gvs=NL&C)V^9P4RnNK=%h)jN7HnPO7#Ry-4spV1hOQ? zd?kfiSnB{a=SLE3VI8#85KmW-ib?aMglN`MQl#M+Nl1&fWXh^cN;b?m;YN|f7sryt zi>cMOBArfS(V|7}rLVdfLh>Y^nZ!*q)x4qVpG2zT=@;UDoh+&O%pxV$)rmwpWeb@T zB*sX!fM`C4Sb+pRRY0AjSDPrJIF`lq$Q1JQ%TBUQjn^n7!CVc!)QFeI+R+te`KDw- zr)kcUm_@W_0T&(d2{L(`(bm>w^GFv0)J;u%M>DJwc+MHoPY&PAVFPF5&SeY87mKJ+ z`zuiE(gWjT95lvr(-@<3} z8n=n`klg{KrYG%<K?7Sot6x3W$-*hE@T;XqM|#!*SKbnzOsH4-QZLeKQ-6D0|flwODxXL&Tw z=Wg^+G^eTcBCMA%&vEIc>#&rXb-A2lUZ^Q@kkMWBL`?I4ar?lNmZ@mHV3LDQTy;;z z;I6e3m0H_4m4|kkvYL)aB@;X^2Z6l4kDEo6ZK$D_q?W7p&c=z+2~15++LJ%i(^JS! zO}o!=>NQ;BMQVDj$V3-0-2tYzlBqA|c@`cQCGqKz7`;fK8Qpznr-GkrxaR0w{<^Fg zUv^@f2V-ZjK44olU1}!c5Yvb_VpF4vHY#Caq0p3S*_Ui|aVB<}((R|*sZy&Zj z_AuHz+HmC!*I?C_P3T^+3X2x6$D-BQ)`Kk^ui5lsWfXFbuA}JQs{3V zQrBHv<(xlie9A+f1Bo7YiZ#K&G*G z;YHHAb4vv<9wK4T0;YzR=D?+;B{7m;Oy;V}X=J4Z&S7fa!`SiEHjIuO;dLHExs+vy zyD=id)6Eerc$PsfEmc}$g8Oj}N~S>)x(04hwBE=<(&E6VAU*S|Nnt%-TrZbUn4ZSe z*eH%1IDjJu4`XQX2!@UfVuXHE(>!mrf#P@;I+atOeKXxi`SdQfVfwKn zM576Gb@pK8s#RFBavA!T_M^&^a0N}@E3UX2(?f?bGBiwWGK<3G zuzU248i^jdpCvT*GUeO#L)#uLiX#GRBC#f6Vcph~W5b(eK4_5iNH-L%k&AO*8eZ7e zk5(#Gl1r6DLru9N&Dzy-xy&%i7>TGr?MHKd841ZM!3(0bh&7tLzlYFqFcjA75-UF-vSnz+(R z^_*;tdDrU+EE+XF5h2s(^^fr&?Mn;P;^;_}i87ryHN@o{@D>dW*fG+kWt}n$B+d{j zY)4v0JA8Q19^=d9a>!DqvpKUU%0+61xdKWYM9WjOFs2(ce;XJd6G6u?IeB(0v2*(E zEN2^4nsChvnd9-KecQrb=y;A{K5u8~>d4G!FivY})^_MN(%?Ruw&u;upT|mMb_puF zv^%Zt?;lu#Yp=fn>9!VR+B#_R#8Jps@c5HYV6u=y@8UkRw9~|)CJ;}h(A(RK{*G>0 zZa6eLjt(}3r$6%{6c0Ruk=;W`EM1MhE3V+EKaSp58smHSBTG%;nWuM91JFER33@ZJ z%;n8Dyb!H@OOT^UG(30!x#U(Z9XZiGFJVkO_ zy1ae8l3zdnkt!W?Jd)e7bN@--&hqY8-OP^Pf+{o@N1=8n@|&2Z8L68VB#d0XfFw;p zEfLb4a#k_&g)%jtDOw?Qw4^euV-kzBL5d!46_LnHE-{ZqF$*=w{RbvF*c8ymK_pZ! z!``Y)wYw%^nM^}xSsJwnDrRQu5jAJ}i=BAsSzjbbn>MiGGmfkSCa*9$9MMtd(_?O` zAMV>-U>(D_9W5>B?dq~u$gfz`qf#Ty^CrvG9LqI(=U|S6mdzGv&gN~2Qv~<4d>~x12}Z>0J1z!S$F=#(k{bRP8Gn)s}4?ow^mQ^w{)>%TWRT~POlIhdM0Ru z^p@pTcHRssb#`h!cgjSQ$(T*8lsU+DbaX-ACN38B_GJ-G)Sex0Yw04vL@iI$qmX2V zx=1=*B$*cFkp-$Tv`kGhS5A>QXa<(z)B+=@#%NMg>kIK9En1F6YDmQBW*N1RnNGXO zA@b5Sb$4oAX{}9=jKU;DX?D>#B^G5GJdSCJ1SK|v=x`pV=YI7paH&*4F`q?-*FM5F z64ebAvbkQiqL(9-s%4TLwK)=CrCOzEo><>sE+f@Ob6sgryUlapE7qwIGY=(_U%oj6e1iL=rK# zOo6?pg&iTo&e0YNW6eN6mi6`_#F2e`-$6|7-iyOeK80r<-G+mQ_M;vTp{=8x$_dRr zj_%cBj*U8p@V>{f_Y?n$VtESP*IbS0rj2;$@$Co|YAEH^;Pdu;=E%?pc2cW+;Nb^x z@Zcai7p=h!Kl(Pj^cQ~%&wKYTA+!Dl9L`m6aB!Gfl-{u@GfidC-CpmmuYV(fWpYp< zotxd=whA*}mHPxTAJl6kIK)X%+}8D2SCj;(6(|{MVl`S4tOII2B5ILwRFAFE1kPur z1*R=$njTZ`!ZbJSW(O6XH0wSQsgqPlIu&Y)C7QFz4C0wqn!O}Z5@d*ErT1NGy7LvtAsan+|$r*S);J&EJ^@$FkY<2J<5e!G$?9R^h&dK&Q1EH<0LNN))ZF zEwqs07^h}GH8ExBD1M#43du_*ydE)>wks2wNwZ(2vFVca80hb{{OCI_A|M^Bx==ky z^!k0RCeRZ=dehC>z(sB93L5n^+1~tF%p^^Y>8S||J6A9tQ@6V_;~J|*b~aM$vuspq zSVoF!;QCo$GbuQjIm9^9Mv82#S6+J^ZhhV@)(NCoP0%FMJNS0)+HG&?NVlXBrbeS> z4SK{aU(TZxDkI;}@|O}?X$C*F?GX|{4AHi3M0y5LN>D56=|%U3%aD&`P)t&TAxVr) zWl@|iveDBdqPbh8$yCahF*!Yn;n86d#3TtJN{w?15?ePTw&hYItKMw%>ZgXlfwqHp}MWnY^~Qx7G!vlRFs2~KJF6< zRZK%n>V|^m4{09Pc>PRwWcs3(idazTS%U3Q#J1vI_ zHNQwaV#`(Z%&)8s-G5iv>~S~|pxPmep_^uRJoS)e@pLhlse92ApHN|Ei^Y>Rf(g3V z`W|Y5s{FZv`OWcBb6`X98>=HhM|^6#`X`sd)yQqD00|qKG$Av8$Z~oU#|v(`6<2S) zOh?k}&0}zEm}cmcxa*GFX~GU+>&oSL$xSz6bn@R%}GHe<{idE!Aj6qrHnNOAL7u zc$ON5UfelZ$YXqb0*A&%@Bq!>*1pBaTzV<5TLy()PuemJnNO}Gd*w3Cmrj*m9bX~x zAe^?t_@29YtAqS_!jn($Jvs5c{Kcq;qa-TkL-Ttg9%^bjt!PZ=7a?hIiN%uE(Tn8* zNkLC3)R5u;5F>er`0NOFdjGDwBLk8UHA(lPQ5UAKp+re-N&2ODj!1z;byAR$uo+konfTfGk7`FX@=ahaxq#hV;p?1ic%>ipy+2cs#pao`(h z@31v|`p&MFuheKk={<~8#M#XBtZ;;iMH00THQZ93X>bJ4wTY!{K$SVHl?0jt)Z>x% zML3p8<Q^=A|FBEC*Ge`~|8qp9(W z=v1Paj?9fr77Le~UTj~c4azi;$tZIy%(n2dSG*i+m#?I`QNz&a7!C~{!QFS=j>Efm zkkaay9vh;jQN`N6K3qluyJYcFY#CTaS&sEx{aD)4i6tblE|Q>bT1-!kVe;SsOdmdo ziJ=2@??ra+0n|n((UDHr$A)?-i&iX0&&nm}TD1Zl%aTYE^b?lUlLflA`CH^)_p*S<_w2B0{=q zd+DO&8ft_})rq}tki^DjLbuM#bojGBN-QP|fbEWEcQmS}K1iZuQOzGN?(D*bWlOQH zw-;SJPc5HAQ8xxjcx*^U=F(JYd!s?yJDN(MKodA;pJfm!Hc)0Am!#n{?-k~^KtfeL zg*X_flxmAwe|gW|$5q9rjk$;~)HkrqU2&qNb=KTFT{N4FX9~@IB-m+A7de_qr$St9 z>ZIL$-X6(@$LdLs(}704(>-=B=x+0|Xn)7QcrM`J-@FFvR`<+wbf4I)k<+b)%s%e*12U`U=Jl?K2Il z$Of#tl3{k@zJVoJOyZN~tnWeS4ZZe7F{ZB4Rh^=m`gDTGHnB?%jj^d-ri5S%t2}%SlKP6s8ZMk{?5V z-!db@n3k0=2m0yz7Iv+e0j-gnqUd>}Vp-D=BsOVgm_j;IMh7*iOkJ<}uOTwU>sp{z zR<2_tS3r>(SB3ElWf5T*CEAX9pPm-2=!4(-cCNmkqT3U?Gi;inLg}ZQ9`;VZm~PON zFr}%8GR=6pdpJ;CxnUy)xD8K_BVWwfJe}74)eBWy0AHx+{d!U6RWFy&YrBff7fG0T z*R#@DYJ?NnoN2-~-^q5S`j4|6gm_*(JFZgx?H!+{@99Gyt2!3CGUqIk=`=b!drn(U z^-arDlVi_%oNcaj=Ofgly;Pn%%#xlb`pxBc?2rEZ=e8WB-5enai)PDoAQ; zZkql!qF1YC*2GAZ?eQ?ptTIOTKZ8de_yHb${9Zi1<3T*LXB+k(eg;PdcVm2TKk8GH zh;wuoC$z9(r+KP0&lRC5qfaNcaFlQ7`O}QkQZLh8LMyU}ltvKE4kCJZ7t;H7V*07a z(7U)FvGx`mK6DrplN0D%y$P+0){?NMAEIm?Z@4;hPWWu@uhaH~-KyUvdOy>(YJUD{Mi2^1jir7W+9y&6CyYG2` zaYQ!EkF*@+i9fM`h=2)mpwUwl4g1uj9!=9*QIa&NV+}3&h*4{!R>||1NS+NX6_MG< z>m&_V=Cg>zh+p~Am`F2R_loP(BK7=jL)xT15Jb1u`)PTQ9%IXJu#pCv&E;({k2I?2 zZEMAfMFYt2+KU8L)&85Gm2H`-I=AXwrmU8Y>9I$(Ck?K;8(-jlzQlcLe2lC7Dok(d zG2&-EC^1&uS;09?d_N2v`#9Tq4R#=RiP;)$%f`=!D3hmI*yXK}nyBqEQngyf@W>FR zig^;>G#jc$dv+wIsY&Y!&8bQ~iZZnXaiMN5gyV74s2$W2F@!m2g=pf15=m-=`Z^l5 z6lyKfg)-D86YXt?=ow!UMT4D2#!Zy1Jj{llBgq~)au|a{hcPxbjM0e^lp_@+V@4EtnU<$c;o7(|VT>^*!kb^sA8oHMf>bB@s`?dEIG_4-U~pE!r!hk~Cer zNQNsH_1gl=R{QkuU3(@padCa$*uClA`AG zMEr`c7g8kHUX)+uSQ`4-KtO!QV6Mm6&M&B;s4=?^H)c?M!B=DQ!ecJ3kZ zjpMCve=9D({0hs1mWkMPGLmvyw=GFxV1(qQ=Vj9zC{paT8D=Za@@WoGgHgR9^5a0n z__;~}$qY?rt!p8fFgeSc*6`^&m71fA@)&(mKs8kq`H+nCh*?#OtRoz_ScJ)mDGUt_ zQ`0Yy^kf99{;D)fOST49H)nFR0`%00UO}eS5e<^JzR#jGHJ7J0qxn27VAenq5fSse zS_u%1YuQhYaoN78{i)3I(;O{zK9-53%JQ5IoYOZqlBx7j@5?)KXrIlS%~v$3X$}4q z;eQ)~?jwTU#xQ;vPmZ(?Gy4643R%D>{RvL{3Ex|~) zcVP8~&30#Pnj`-B!~}Nl-3NWcwVkF;mliFrTaP7c*P~-#G1`0k(9zRNQtL)*dlxcY zy(GH@v?nyuEp7Jhzt*-65<&;ktu6Lch1PF1)Nx7`_dO2g zO=e`0$8>l0p+SxEz~~@GvQyZwVikH5DI9q0K}2+?RBx7H9<7}GneL$8Pi=z^mX5w6 z0LOzY#m4JwH^wP$K- z$yUUvIjvsVhc&Ago37~fRF;0 zrsl0DFG3^^p-w{7(;byi85Mo-r%uvo=p|BNlAVRzA~ZjFh`TfGF*4$W!BpB+Pt=TGO5g4 zX^SX7WpG;8zhpn9W9hyzxH=3Sz#jRe?%u|gK1R7x*h$K>cJO1i^WEFw=*%hT-1u`_70 zyG%lCP>a;DdWKZ`R;gI92kQq99iRqs2*vyq7Pq#dlO~bAzP5MxFskgFG3KMrbl7iP zd9;}+FAF9z;MVOctV#GYg0!F8*Va+d$)P1Gqyg7qb)=>1Qjw{t*FPORa1ej_*MEU+ z+qc=A;KcY8O+7u_uRN(U@<(#f)^$y4M4DEpkWfihyfWr*YyE6+6KU&oIt!0t`P^J1 z-6Ran&1p$WoJrYQM@=j6Tvf&|kreg8APs8zs+k7IG_Oxa8a(S#YYUyypc4opqdNLH z7+%i7uq(mqQ>OOFC>l7V4eDu)ioH)zI=Jr6l5DFbbJuB3>sL@eq2?LW^TpIi<4M*T z2O-^|*4<-ilyb}Trt)WUHlW%KaDl+r^qMuiS<$8TwtnZ==<0`iq+oL^WIe6MD3%Jy zQuG8zh+4}fmtBU9G|O812T-F{Pzc4TL8MTNrho*sH=1ziu72B}W``}a^VQhlCTR}k zNnY*Uo!I~ME{si0;PBWe4v!4sAZ72+5Oy6of?bCPacFFs1WApEmV@Tpv^+#_&DP6M zWjbZEOskMXf&?3<`BY$96O|&WX?F62OkGzO>a;4;QFWm(k-JPO?mLs#uLJd95sB|N zTOad**4ed@j9aO}N@Em->MbWazn+HBWd5Q>{dng)-h{^}N4JG>&jAjVK3< zI!R5BxK&6(q$%jR+w8R7UOhq5rzx2$+FYSt+okzKi3SF}BtY*@)T`rF4)K%?U|ujU5fO}lcc0|#h6b$p_5D|X|=T4{I0Yl-ObgVX)Q0YnyFNOeplPk8DzRH2$(%B`T7WhT z)^{4*3qRSZLQzbQk72kxg+~t^LM7FK7)dS54qD)GRca=&2u&)z6Db+Dr6`cbKy$Zi z*$PBD+A)$ZU|L#1stv2wZDMDtprj=%y-U~=dJv@v9PjHxV#xr~%NAkn%2jyl%U^}p z-}+K)-MGm}%D(4HO+$1b^D8VfHdI9`J5MP)Zj)UbSFT3ksV9-wQyffRMU(bpPXd_E z=0s&SEyk2M8Ilq&oabq<612$IZgO}(X;SmSRN9w`LWl%3O#+D%m=RtwK!Q}(g?M5N+dE#LdoX}^w+W?N2ujuorIr5A?LmDK-Wk_ zWCTZY=2ir2-`SAHN1}4#p1ak{P3>KJj8o%vt?>9NNlJr?nc_CLs2y^V>Wy_I(UgJG zP+dCnJ%VX{Fp7jZ#qBiBQ{6}@Rtt7xE2`&`so6!Cwq9B~nH@!~&hXMS2d+s>OpTyi z&r{nYfu{5wVp<4AX}zp7ks!&kv#Z6Vr6o=xmR9Ih@B(9gS2e(S0e_UA71!7$y3pG4 z-;AF#Z9U<>8okUY`!INoqdv8(@u3MkeQ*q4ee?-@_Mu1don5)7q>ZK#YNMvfiq(yN|_ z&hc^V{EyEd%}%Iq{MsF6m6hdU;Y_R!BN`{O=Vc0rlb{Ug9gc_PJ-0^W__Y4rooD&86jKi6$e%ZO=FU0qwxl{L26wIYTk60 zsCk!JFM6!b>V%Lso1~hRpy<`}D!5GG5H(2=qR3BQZPSYjv|J@Z)veBfj z&YJeu%>f~qi6f$~#fk`yc6Ppr6A<481lNh@5dDkPlvFY?JwP+X_?O>%bq&LQGb*s(Fi-@7`3_)nw=xr0){81F_F(9 zo=jj-dnb-Od=H-a&L>gWb~_q7??r9forvwY7nvOoBL3J9(DU>o$Ub^MCZ5=ho_G?E zZ+jHq{nocIIW&wENiWWh+S$^9p3ZJ`WIE8^(P^(vzw1k%#q$1MT)AX94*dJ4pzl0H z)oECcqrS1BpI=T-RCpsnZ(jspVgAqa=RYU&K&8m~7%F1#?jh`c`Vh7~x)TrHw*wE} z&+R==;|I4tj@!TeFuwN1yD>RlL^7SS8%QM*n%>r;*L^{+)n}K~oLiM)S`wn`QIm>F z)(BI>uG0i=kR-$0#;7s6w>fibpQ>cIG+L22c`QQWYs9E6vMwf>c0sSfCq>3Jz{$n> z72)X(%DSVh8#B7;AOe$St@_ccsqAgc)a><0U5NwN*!VPxT64&Ot&(iP6q$A^L=qSI z#h5>ut&z4QGVK|ABXc*k|JBQv+1sHjMLpKWobVdyhE;E87uwUUW{P)rlK4ohX}!gn zk+m)`YKy=Z9_RFv8+tLQUfXj%LJOe>5AXB#&K&c3a^up?OW9AoPOOeke=~*HIn1;b zjP%sK1a)xsH@T=e*o!FH%?2`Th*3RAuNC(p#M$Vjsg)u%jM9Y3vtfowQqdSSFvd-^ zv?7wCO(Irx{E3z-J8PkU!DpVt)X*NLuSK_R?yy0k)UpS4sJ6~F+_irM8=wDbyyE4z z;5*;?1`h4siwrxNmNMurU>h~O4A0Zv)rYkk*5H{tZ^r==q|E9N^HCogF>_5utN7dI zqpb8QsytkIRTeXKJ-19ayNOK`SK)Fi+{M#!3e6LS@R`qju z?mi36KN6UpZ&kkXr3sX3Io2<)Ut0pNe8r1wZJs{DF0)dvuTtLSR!;Rc6fOMCWVFH| zVcM7GVC|Y&+3Zw|r+wWhDUuMW6>>nT$}G*-F_w>GtU}_e$51EH)@^Q2kBzyTe=2XC z`??V#?sP}c+u@+rrpt+Mqd~EI`fyE8l?uye9=m1lnP|G8d8x2 z2QIb|60RO!%aZJl3?0GVz5CJKt?&D;r5UWcj^OE?JMC>O>({Thyr?W?=3Uo7W%~J# z{=4P#bTQYH8v*g1CHydmZ|fz?*idGP&zW@GXQMUZbG@I9*L58A8qE*cT$Vb$Oi!8_ zk*OR8_aCu&C#|~YArwtk!ya?e=Ns!Zuk3~hj}Ph28?^+v8O!pJ3CEG7DHDpvP@K;4 zoO*AGv<zVqNq^=m025)q}fTBG5#r!`lmd*EgkGhzIJExR|?WTx8|n!m?b_p z&n5S#KKJ#L65ne#zYv`?>)YEpsl~A}SwA+f$e(UXNV{vW6H{N}$e^brs_5_Qz|Ajw z9_v^)E_9PYcX4a(#*UKU`L)1T8Ek25_3|wfo83yKP`tvS=yNsSGvP28M@6n0_5? ze|MIveKTZH8+S77L|M{scaV~D4d(09c2!EUV+t1y0D9hs(-ksZry zJy)d60?m+~6^>iae^wOT+bRi@+24FnDCMZp?8o6FhrEyJOtZsHV>&y5>B0mib7Lr0 zawsxhG_FO(Wt+s;6BMPQ9^99PBY$;#5|o5wC{0{({NQb9T%O6A|cL8QO|RmKRZuSozohh76kt= zo_SpeRH&+t9rF#}Gr@c`zN;=@&Cctz9M_TkZcO4+Bsv`lh#2^%xb&7bD2-2Ahi=Z+ zM@MkzARC><(LeRUy4~fI_G0gQlZNGuo2DJ{c%4&m%}k_5qXny}bOxE$R-QL%YuUoo zYGhKy*f|bRvz*Ly;)SpMF+6tXz3d2O#z~pEm}q6E?Ce9Pdoh*_^dk4z!x((>ahlZ3 zp!ePh_qZ7yT1+OMz8^Ovg7QX`zkC&H6vWSWfpxv#ey%W210Ih>Yvl*aejuboum zd)|^YOphHt-Nr$LgMrFfVttW#${J82RHN$CXh~1Aj4WR=iRa&R1N!=V-BS%Z7k|1F zZO@o9tNK7uF3-V4gA@s-T$R?Xa*5$p6cQuzSEH6_Z`NT!^!_`Qs77ti*PfUv$_$Kf zWYCzP^6G3nr7JIgx`0YUfocz0UQ@57&>&%vnwd6777cRTMmX#w>6eMs(awP?l$)jr zKTKlO70~RVzR63?lKHFB^sSYsnU|==WxZ!}ISA@`Ufou%hf215Ce+Z^^h^zX zFz<|`XNN!Vm1nHHr;GE>)D19;`4Hc=SFK~iZz4Vg*uEn;^(L*s(oahnY*L@T_Vj|a zcD*YOC=VUMkwb?OOQqQOX*yMCGVwTRg<4Rn32teR?3%74v4L7AvM$9AC9{|fw@6c2 z=4yrmm?qJsDTolPV<%I1EMLI2FL@cpp5Bd#!C`dj`yGsz5<#}Np?}RL`n6&5fxA%L zwG)k$x*W;M7+FPQr;|fk5;G!qSb1PxjhE%4yeaQ0C-?ow)r{P%@QP=LxH9mc!nC6x zMfudHzj{*QyP+#ZQ?~_WYGE=L^;VNcAw_Mg8?oL2yV=m1EU;{otj|2Iz4m&nTD8JV zTg|2FOgzlaEiJrGZOU#YRJ53v+AU+qEVU z?B!WoBW25>^EWpWFmqQwh1;QCT#6lU$60dtk57I1q{R3Bs~6+SEh{iRnZ+bcU41wy zUrJyKofxUooXlj9pQLF=)9>0Fu0~%kwb<#br$xJI3N0m)MospBo_MhJb2c48^D#qB zm~l)KidaFZt)|>{U|BSuXeuB5MS{AP(%@7s!8Ae=j$ZAqTCnwnn&M#kdXWLGZ-kka z=K1XPQaq+X%`Flcv-(gfQ4*ciO}I#+k`_2^FD6Klw89(^YX!!y$5AWmMHb8{)6{dm zl5(NMbL)nYYiA;D`>wFGQs!S~v@~DUyWR?;x)E4py#GtP%ze5D=J+mfNSl%=DY2JQ zvejs=&&~O1g@4SnhbTvQX<$(;Q}F$`)g4r+aC#-U8mJm?RULt%w`u4xCf#B59|d$o zp$_5*L!_q;sAa?MSy|l#Q8(sR{ZelTj%F}Olcuq3CE^_T4{v)MEo|sYNOu;iu@KU0 zmfCBnhVJT&+O=zOqhQ3^{sfvs!1aQ&rA@WSiX;Z-l+jOX7lfJNO^w53ZZ zO&`V;>(^sRTQ^4b9zs1=wC7w4*=dw%5*ABEWOI`k9UCHfj$?dc7=_X_Nia|M5dHN= zmtl;I3}R&T2)73?Jv~A#YMNR&rIJOVJY^bXxl&+#>a(1B^}Qb7Eb`h`NiPi>P4n@390q|}Qr^*EC51{&#+NNoKU z$-^eIxgVFmCa`Imy1S5W9!9T967fl6kTxlTP`HRrYJk)5M0f7zLvvP&VuZ%tO*syCdsu-t=95syisy_5^zx4S1h|)CDhpaW1<<3n4}9>xrb0rp6tr zR}c-+#HC**rPoT8Iq--S!btMkYO!;Ha~$}ZUUu3mKs`_rm9{NQDeRu)WFL$af^tM5MwAgGEC}K_+6==aI_=AX$~;1FT+ve)V0!_BpMWwv*JaWzgUXeH@9a4!K>%b6U^uBEF0FYVh5t; z=H0cG7Uw!SH6;15hl%iJL|T;B>Fx0(N-7mcZgdR8!=q*fiM;f9m6pAjS;j`J89Xx^ zJu&k~7Lc?&GowX(Bu)`wO>cAVKzz$JSp1S#pmXD94Cb;JzW;HwvP|meQO3BYQ{G0|WZP4yYYoGbGaF$tq(tPcKei5AF_!^+4 z$1<6}+>QWko{(j+x--&Lco+{qvi+oQXL;TF4%DczRcNm1gFl+$Z^^_+_;HMmSJ6Rp zzcyV*Piq%C5+s?*6uLTFP^nKLArhd58&fBzCZt!sC*xssWRl2^jbLKXZ^Y#kbqMJCHZ=}|1=gk}O ziEJ|&)_;P;n_#>o@c9QOtd36?=iRI41I%JRb9`5P_{=`M9AIud^uFs(I>&eYO)vFa z0Tvo}fB$Qq>+}%J@dXGFAOH~%Uw{AsE;=l@sT-*LX9shs`+=$Z+#oP@f4B%t-2gun zEDa~l3keWlz6gjfK!5-j9RlJD5Fo%shk*D3%nOfx{^R)8pZ@kyB0u4qfAU+{eb=|m z9bjSctH1c(XUX-~Ug?FN9tQe*5!c%&E@C{V#Ft5@(9_-N?K!l!wVMC=h?m~>f-`PF zI{w%?ITukbuD{lPBU!IYTFMh3sUHQhJ!1AkaGIxN5MJk!ZcfNNQ{_Q`$Fe8sW zerBIreDmvHjTOt6dV3cqo>Stx^72dZs+YgW+jDr~%{Q9=LgJ_2^ES_QcG1?}>bXuI zYJkVq$+?P1Jc(3$*Nnt7E#^P5e>bL%>^FC#R>jlb`zjv%kAJ|C?GNG5wg)i2-#ui$ z>&|b^xP|6@xhD_pH!V`f2-%@Swy(6t_8t9(jzf>#Z~oi9@@bUv?t%6T6;sn$96U5Q zBe}eu9|L-Ny71apzZCC$>+A567tIdBOBVIxWiPoIS6_Llg(;37_WIYp!X96I!Sk=R zIKuJL5!S9=fw#QzH5Rsc(>n9JT0T+{Za(>R!He^Grow zddUXQ*Wuc$FMpQ5G(~A$Z(ybCI6-N&wzlx%T#t@+w>(E-ilYm5>_wITjn`de$NBLU zM{%3e6%=RXilvqh;lP2z_7Rv3>sH(Od{I2%c@2rO0&k8wuY1vA;&onvGa-%}pe^f5hQ! z4_e%3?)V1w-1|MOd*LgQ?&!vyAO1h)e=$LA^*!%=lRbX-t?%A}#RL7;o&>$!Ny4`7!%q`-2ZZW*0~o@xZ~u&});P-nkq3LcuP|%U*H| zwr$^Gg!8Vqzrl`e_HSv;;H59R8NI#T7WURR{D`HcbYDXMYp=S@{4d{n310BL>+r~< z+im~4Yc98KGd68lXXd-0bXqbgOXn3Yy%k%xYE7K^y*O+ST>B`a~+kG=!(fM4#I7H>SCCH}+=Kp&m!Y+H0IP0zA#VP;-!=aW71GB1`90s7nV6iyhd%OgeEM@= zHZAb3dmkjhby=980r?aE@p&VoFMsVjHm@frp5BM|)YH50Fx&Bo(pk1-5vH?QJj8h0 zpL`mB^`U>lObwm{PQP1gGV2C#Pgwl_*Xpi$Tk#4%W&^~58DO(`ZsUK_{5~8DZ$C8{hsuwrtsGVS*Zlj%kJ( z(RXjZ+aA;|FdyH$;~q;#FVyt&_rSxC;?gY}%s)*n?@M3#wxzG|^99SVx(T=a%Kw~^ zmYxAG#Gy1fj!aL#x95yMjPtK6+!=L?UBUNGTO)talyS{^O{>g8e zDO{WyH~$M2YKwpJ=YMCSHt*w-P3!UApLnYg;%i_1V$at>eZa@T!-LRQ)Q*SarE~v- zkJ!8Oe)$7GW#N}y>MR*yC$+%M8y)ejSiS`J-2aHV&lj9i#CIZy#Qd$uP59aOz7ubI z^N-@1tDdcS`OvG(H*Q#q+irQji9Xsa=*=GE9PNDg>5Dx5IKtk22hc(SI~g{tUxUlG zZn9BUP&(;!a^}2iR;|S7*tq%Y#f(0h^KiaH@3PaU1Dl~2Rh}-cdF#*2knD?o^$&6L z2Y$!=+ZQk6{{O-Ye&#pP+P?(f|Jy%8r8s-dE(Tn6`4$_zWuA%8MY9 z_#Z!kzx>;e(h7SRH(Y<^jJ5U1<4+mkN$V>X^=hm@<2x>P?cR&-?v9zexH3Igvhv0! zPW;-La;0kX4T1_2cAAETxyd1m(>8vzd=8Jw9f z)a0&j3dlrO9+fxYx~s3i@aUMij|atl@vYCNc6i4OfhrxD1E2i#f7*F(zw;jK-o5`> z>91P3%(fQ-G#@uTau~xqokp(hXwyvzy<%$O;9heVrzSAAZ>PEELeE;7Pxs&M?E!}# zy$?@(-3=;_P|K59t(z+=ue}MeR2ro@-d=MdL*Fl%%I0R~)i$hKW!w2c?^E>WmQR$< z4cA_Y*S+TDb~8n0v8<@pR;L7r=q9J8@uC+#pBB%Vy&C?9f#;O?L^zK;_5|Mlz8^QW z`jxwrcrOi}wrfe>avcS!8j(bNgNP4G87q^}M)4BeRq4cieR!e(rtm!cV;OO}O&% zOU&Fo5nle1ThP|pidVnlHcQXH`El2M56-0XV?Xk8*vFoUd+&P$KmRlDvOEp+Il{dV z5KE?U<4^oDp8Uq=%{)Eu@ZIQMzQzl6ChDPW58jUA)Lgj<_$OiG;rSoja(N&fb}t>wKq!Br;mTi^Eo@Xpk7jNs-!2(by4O+ zdV&bXCp}>?wZXT(!L3jFx%a)(zI5MAdcv7DCLhO3XTGF&zMx8i`pyS`-`3U*J@vS4 zCyyLJ@A}!L52p%|=v<^HXf2^ndKW9y{uiR1o+zEU!gQzknya?r!G|CBe9kYNH#avH z8hiF0z@Po)-{b4wx*h-WZ=b_I{p)AEkN~HPXgq-z{=)AgL83bF$UTTe<9Pmif6Ywb z02dClGGStJ5}*0}m+|NsK1K4wLhwGm^8|C6x^Mqy-7zrt!4JP4SNzQ#<_@s1c%=wFZg&d0pH01E}x zsp{58bDcLMX!mCaXRBTpocIpzKmHPh0H=rJ)oJzcteKJ7oV{gGTi+YU+0vFmDNx+K zxVuA(7ARKSi@Upqmf~KDTMNalKp}XFrg(7)E(snSLLk}v{<|}~JF~C$RVMdj?wmRI zoO{0K$@6?a_aA5x%itEDxeHvcp^p~TS_VM5yu&W4x1I9R5@uH&8^zf?nF%?0w2CrC z3PS!7J^s7qpHw<6wB?8H3Xs@Zr3K1i$Gp%K{|2SaKN&e)HyZE!@EPa*FG)x-vFqu} zYry%W4qo8*U7wqR8l5({t(N9mL{{T7vQB5}%ZSu$u za2k3ZeRYjhpp7FZ=J!c~?!)rC$mS<=?r%aU$gz^)SPDM_dADjj75t{yzL?!PW_3K3 zP!>4|xG@wL8tLpwUH0j~;6=0FNKCU@u;6TsAu1XvqY@3n{6k zju0|56%PUA>1$2J=+Vf_|G=&xjL$#tzm7hF5h(1G zb2o$+0mbFV5^u3I|Ko_mgnl9lUwqD|`G56&?6Cf%Lmm+Wlaf6`RG?Ev_RioPx0FFw z+9m!E25Xj)cvKakMmPMZOHipfS4b$k3Um6v^N8KR?(RnvQgWBsfSvY~A!mTw-upPu z5b%>lLOwNx%GR+N%lX{DSAvj%?<|%r$wll;@(dHG@uo9sR>G&lfM8P-wj!b`A8co zg z%<`qjn3C%Lg<)38B-sS@869G4T`v*xHd~Ja&rcqe-!PbgzMxw~PNMtowJ4HZ$maIF zXA?{?-5QMf(c6D}lZuw@dB70b2XFuWv#yom8doT4<#aw@7$`y!ja7(svy$b9UQ* z+vkWPvqEfD2nfmSA+TCP@Nd>bW23__T+#9S`)d48D-F5Y9;B^W1O|1@Hz8JmKV^e< z{v{!m_MaL{C<*Z%gW&B%+OK66ruHI+rDYfH1p~4>(|Bp>OOT*fTCE=+8c@7=M0vAV@(8L2>l zA%YJB-EqQhdo&EH9yemb6;ci1oI`LlTL21Fyt_n$qq;rogeJIhc~(c$FjNG%wa8m# zXxZk{>zBAhfRrK7Ln8P=AQizWPi@i4al012{4EOj9uj&Gud2x+U33(tZfZs@zUG%7 zxO0D6*Z?4!GN$DRT+y6vJje^^g)E)VkzZS(5e#j}3HbMxI=c21(jN3`gY9m$e=E8H zeY+5311a4*IAKbs8z@{yvemcUVe2~=hTS%xQ+M0DyGbBw1rUbtzkLDn%}-(pk5y%g z-UMpP8`hZsR{Tn)a(0>ioc(xg%lALxY$D7}ax@|Ef$ziUe10hFYN2=+@s$GkDBvF0 zcm|Z$nx^^nYev~;ipvefP&_oWjt+!O*7lGdMqDWxUnBxPVXNvohg*vkwSZ3Fy4@ZF zhN_EEESKH4bsS%VL>(m%{{qLmcalM0M3b7&0_9Rv%G{iB6|Ei|iH~{KBOgx?P~VAaF$?i)5s_@$QoerczWDnYU7^L^KFuFJ zZI26us$4p$xcVZwP^E)9_&rtESslDF+&X7@J+Fo4EN`J3-!mADJk7$G6HmRH75S^) zo>UwJ=Qmx<4;ous6bO)gc z?Bl#XBqengaiZzo5om%PDphfV*V7V*WmsIcs{ha`W`|I1C2#dRp7l4X*~eNOG!i3henpJ_pU!& zp$B`PguY6Y);wB1^c-*%!wL7^jPVe#S#)K}cI9ZMd~ z4RXvY8e5n4M3Zak0%s2qz%EMpn^92W!u=xT-}G`q0|4PG;>w^Plglj0c6uGy4NzG_ zHiKeD>$@gWq{+b=?0@>UYDug<+qEJH z@h+!Ycd=70iD++c(Y-q?>)VLU$w?cC|w2`@%HPYF9?@lEh>`O6c| zSG2g-d7K<)x7>J)4i%+;h&EIENX7r<>1rpbtK2E9(r9$?B7I$@w)BQWFR&fTkzG5e zhuNWmF0(zF^EpS?&e0}|TMOZlY?qif^b>Jgi04D)I6pzx0Xq-RpFYLctRy<(Me6^h z=tCZO&cd6edXiXOY`8EOW4d6+qbcGM>RGX(G6Z+ePSS z=(!NLxb4;CL+&wNLPdMGZ7RjL`u8^Dtk@EQMTx5OTk)?oXQF}3zc-BYmd$-Vr&p$P zUo!uuPl+by2DZp|u8u{Ml#zV&D9}r-E#yzb?R*fo(x8)2AnqZ4_VuH)le{5n7OlXp zxs6#z8~9_G04!{P#T7cYVj_eIf9lcKRj2zcuO(g82Ryxc$@qe3e(845PA!dd|GRdmnIbK6#1}iEfJ8 z2YVW>6`zBNth~{Bi)ac491+l?$5;h=Y2`QV=-WkHd45R>=!3;7=HgQc2BMWY{8x-` z9x*faU@n;Z{eMJxF}iPx>Hlh$INs$+Uu%hL=)s**&VS{xzu@ZHo%ZN)oC@955o2|1 z@tfd<8(kW?mdvZiSUjX!$YUNbv;S%*krki@BNG1%>#m)-lb#?d|NG(_`^*HK-E+L~ zWEu~HiO<)C;J(^0|HJ7V26hRFrdwC^KrZM|uRNapykPs>N#S*j5<0|A3`AOWB_3Mz z2}-fi4yM9nJkGcVFTsOD|LhRTB}}g&)16&aJAx>QB(`P_|0r&z$x0l-#XWZ!3~AeU z!Qs+F`7D>)xZ_}smDJLxOa%$j#z~xWHxE~D9(z_-4@iYb+tgHqbvXJJ%bjF8b>TcC#uN*6}X3 z&p<$fZ>8I}C~y>mDr9@GI9U&1SfDQZ<)Qs`3a!kSfrOfW5!;>JuNaYY@)9QnR?I|i zjY6rb^s%OX1&-(P_-ctyQdKwiQ0iXo7tR#U^JgEN?zR5x5aOWIP}&!$uYWRF{}OF( z>ZbQzmA=D4c;D2r0P?k|4JFxqsr?w`9T9R7y)|i$+%7;a3alR^@qCYwr`xWFo#6n0 zG>ugR3NcF%*+HT01>Q6FTi7==TWH|KZ%@^lK_G%RyMZ z9H_()I)^ZK7a0@e-dld5Xr!YKJ_TNXA%1}HSXTNCJU0Jw$uY3xm zAntR+6wq_lnlH!NosY@2OL}h2tePSZa`=8Ep4j&8fctr<$U=Q}6A zcVF1|2d5@VMd1$d)L+Iqp)_W_i@~O1T9P*j_1X6flt|!HddQztI`q*Dlfn|5JDv@x z-fXi?8PvreMJaqgD|?l(7;x{gK%2e z{^$JX*Z(jNDP4WAP|@Fh*N)yvZv4efet!ya?~Oe9JhOh3%q&TnZQreMi4-|5Ldmbd zbtitqGnKH=#B0CvqSN<_0_~&BEQYl&&`TH#`2wmY#Js1NW(+#h4x3od#X-xC@@v*? zych7?Vi^r0C^3B7W?9nDUrPwu+%IvNP^Wn7ORP0}+V`5f#VmjQf@?U%Sv{twIeN#t z)!>T&&C9_E7n!8PX&+~)4=h!;`+8v|zqZLHep9Z#e($c1nCa3rwh5jw1gqui^qRxr9eD!IrdiuWdShuvM$+Ex!Y`bR!%TlNB=a_r7%H&}ZPFv`olze$KiSJ;X z$1v#t%ayD^&jgd{?&>`CJnWprz7LrZI~w<-v&w5ZanvZFM(T=#_QWaPS5X+>r0j5< z=M$}K?`FkLpAEcA(z*~=CDBj3V{nlDkmK0S%TS-*kpa1K4EB4_%mG+Aj7XU=dI z#$m;OR!zZ0J3=dHF-c|ky5t?IB@05)!a^rR!gjmqW7-DG`p0|jI#CfgYx0>ps^64ZN4`TawnM_mBr>o!C0P+_BUsmpd zBkr5^YZZ9;qQO+b2%92iwuH~OlY@bM02Ok7h)cFvA!g{5CB1yZ4oEL;Ny|#>K7kJe zl1otUTs(?^YmDjXVZ2yqjKd|C8m}rStSy0AGq+kqAKGlp#bm@$qR)ma1Q%s9ur_y& zP|1?9+?{r2a}}M?c@+mGaK~|N%=)(*+iS;rTtH~p-koIj za?V79(6G;ULIAVkLjB$^0C|b8*Wt1xT4}5YO}q81gO^DjFfqA|^8QH$K4D0-P4zXy z#PP=4SyjQ(Apn)G?Qo*JoBU{W(XJ!PF>;1YPP#oVmSQSBg`ZDPD@w|g@*~A+bSO(? z`x0ZVu8y0Mj!4<$0HHU{fOheJOsqSJ0gh#NEd{4wsBBwHg_c`#K4hP=nJKu$td}tuHm~s zRy5nB>g_%{=nZa@3Th47wUx>$2hjU!bP4UrNRj>U?P!(+g4_d&U&^#VxT>2Dc4Lho zqEa`G?pkKbi80J^91RI2haT8ildj8^1tZxSs$LGiAPb&DJG=9faP#Sx005h2+1!qY z+{C)k>D0-R-`=lqm<%*bDu!kqzIgfn9`c7B!}9Pm;WCBJI(PuM4f}|X5YPjmW(3qe zGRPt_(A$+cWS4(|Hi_~{UM$pFdq0AcKA#v*vq^SzUiHS^T=lymN(w~mg&Tq}q?N+0 zxT<%9)Uk^5g=;lwwy4?+?Sl+xc8OU z*!OtO*k_m(r=^wIsQP;~qFbGAjur=qi$`3;Cjy3e46$L}l5@;dI9NB=kU=tZB= z^}tD11>XXy8$o9rRL>W5iqr%q%vWAq74+OpKF9V zR{3O;oBtDB4BZpypbIa6+>L7OF_mxbLEDyq@MplO2xHsw4<#JkzXnM}u(*1Tg=IyX zq%KN!tEKvaPbGwzb__eHIsGGm0?YST#oz^w69?5OyE5S>PDAxLe@y)=nOUR9gG#Mc z4?(UScga-SpkCPOQKdfD?9q#yf}B79E;+D$GdNN-t!>bcX+xk?zt2Q;^Q~U65O2O? zNNfwyi!g{0c-Vsr?Yqh~`!jFub94xndKsZVJJc>*5_CY=XR9vq=4jv31xuew=|mCzupXoEw!UnooXJR&vM)d}tTqvhan7 zUW_O@F@9+0E$_P3rUAW=2+JHzNoW3fS05VXl|vu!&<<}A-|g*7;RIJHMwPMM8>sr! z;5&OP@9I9h`RANi#xq=(R5U^0X5LBe>deGr(uK3h(ICsBt*vbv_u+F5HQ-V~-$Kk;tu6y9vU@#qwvAY>Sc#yO zRzUssy7#@?m*K95HQf4e%0|ngcI03H;)1CR8Zhzt*4od)0<|%_4_+Q*1FWt{C~?=2 zQue@LCi>{?;FRn826(EcbLL=6LVn2LIWWlMumYA6fRtgmG0}xqZLbm)f#0uD_M;}9 zLZHxME(kSGG?F%3lq{Kce8$g_y}on*SsNl6XtVouH*Q`bX9SkcO}=VjncF9$b%>bV zm^&SL-HRdqB_$<)l#%`vj=bJFwS~Om&L*;b66d=Sr=k|w$U)PoC;Ce;Upk~9oj_M(7N_@d-7hMG7V^$JLjxRk{KNqQ3kQGTa9B(cRu0O z_^QB_Owo1A8U!|5|3qOK$`T@UT)xCvWTBHzN7FXJxHVhw@rRB`MyqUL?}+{A)XYNc zCj)LLX3w`NrmBsGjlr_2O;RU0c>E%g;l_obWvyM}$9NuA1Smw97)=<|NeljR=DMNr z;hX0TSjrzYE@Wm1v!7Z8<^C!iOx!M+Ew=MDlxBAy(IgI*3_suO6s&&CnE5q>4T;cPS2p$uR!V$goXpqD<%BDe-QMFOQgD_T_|6QoHl*Hv>o`n2F?QcQpE=!x z=NH2OZUr!`3e7O#mg+ifu4)_)gD+6^^TF><%L3B{B?5!?%D3P#T7FN6&pI060jSx| zc_Q7!X;qHPF;HX2zOvvQ;88ehu9Z7uCA!{?P<-LnFbKP#Fny8gJrHO|DHT1;q^ zR31K}_B}`#e*_}&e6$LEA84Z+ehU%K2v(#}j20#8vUS9+e-;UNQO4QmJ3$y>lES;* zxCPFo>)M-&GlmF!X0%zE)re~I+h*=Uhr|2JYb+y8C8DW^|CJk3PALA1>)`$QcQ|#m zb&Zi~2-0}|)%CPI5cGUO4o&T1L8kIu*2bH*7C-2Cqw?AdTjzygI5Av_D|<)jSHNNK z+;9~xnywoo7{j;pY#V(w1`UKrwF}dLToMXb3%Rxv=EA1}iR15l;|_OwI!BpAB5a%$R~GHO9)SXGfF@^()Wv^9*!!W+ZNduzvlkD z_Vdar-0Y%r8iIY3ISI%+>O^e5URO(m%Zk@9^(@{@M^n<)a>MGez1&lfYysEN{o4HW zzbvF_mi^9=LLC>GfL6nQ!J*}*CdE%^oQR%4q#em(QabaB7;Mb+0SK|LFw zs1<+4xQ&j8JEgOhZqAlzsrUcpu!sA=sZBDK=QDp_KiI87UGn#I>;5f)!i z1cBV)_oo+81J~pHWs+{Q_$*@Z55*YCnBEF>z5hUxPL`;=(3kv3+<;1vE19oBX-kuKoHV-d849{{903>{X0#P?o;oEc2(mRdaGZK~z*pT>^dM z8Q3aUe3qS)MwLTwsh>I9`I_u##5P*n69&lmFto0tW#7|wF_4tr{1AG0st_F>r>{y> zuca5yLew4V`btpBW@;(=puX(`{r_a21byq=jxA&Y3v2F{8B8kX0#MR++q z@C+vny-_01j{6*(iE%*fFo!6 zUG6l8e=?E`f@FU%dz7cJ!@+D6$kS&3?>PSG&b7lT^k)tPU2&eT0V?+*oCqWrhB*vC z!;Y2!Pu&-~1|d)WPySg+4NE_It#b0|QP9Jg!X#Un7tBR#JrELOlfU$F@)#=|Ag!(U zv-HMsb=>=lZL0Iy#2;7T<+ita{$s9cRpROrK2FagpcQM8H1%z?==*f-txrgXKc%U% zUqaz`k57=jgr`qe5yRnoPR@+E@42M)N0b56w7DsQ1T&=1eQ4r`mfpk)gzr(&N=bZH zm)L(PNMDIbqFvc7TNEu&T}r`ga7#KOzF5h+PRg!vL`*0(0< z_KyoG?YU^debvz40*Y6fHn|yp_o=m-$8LQODgH+EKuGcfFIxQ;=g0MovDmJ+5f4_) zVttS39KZ)2)#$xk>hF*{*utMh0UMuko)#Ww(+Jc}i#)*|^s9;+4kOSL@lQ=kwSl3!7sZ1pO=2>0x|vl^UI3XvF5j{vO)b|; z$SPX`zlU#2eNzgsq!RTqvuLxK{B~w+{r5fnv%oQ)-28u5y1VBsGVvEbAvLOHwjK{V zaKzG^(#ou~!hu%R!fgp5h8(tP-=%hctc$DG6F=Xw;{iHAEk}RE0}k{xRI49X(c*Pq zfHqb(YRXI_(LD}-xXjskfhbW-K&thLk!3r*X9RMRacVwF=J_NzfcB3#=t7_eRrma~ z41Gr+cjk#skw;$04_Q6TG1!7zLvtO5@e5?4S6Q!~KS6CTwI%!NxPiB>NwfUCKXPi# z*nEVP88dN=WXJFNh=Kav7m;P3u8t#xPp8vT4Fu_0J%_z3_H#;q?$Zhf=T^{Wrm#DH zo?(}}!WvfF5UNa)(wmw*egETfCX3}O?&>{Eg+p7U!O=#wL)}54_T8N^t4^Ts@q5kw z8d8b@JUFywPYA&7^2);%IsG?BmW8T(0^fFKJS^w$@rPfK>qcW*UE=TO`ac|o^@R1T z^{EW)mAVCV#RW%*=}YsORELJVKAz&JrCPskrB-!X{ZRv!(n%@*2MQ7l>EsO8AS!Q# zovT_;-@&AsfbcGdZJnLc>I>_uJ$Hlb5nvc;hMcf(wO9j}^>=KFi|rIlj^)OWa#7cs zr#z_l3Vw?{*>XVPz9)J1a%m0~t|fE1&8mNQcVqmI_+5Q298i+&_N3i)s)xH_jli2A z=Z=>bAjnu@3@iZV_iHud&m0JHw>7=fyEYH~os+6An(FjB?gl-k?ej{rF+4NfEwz+f ztF&@=WUjg;xAmI*_s_3EJ4K$wnug53ukgQ|UjKXKEe*_x}y9*!4>osQ@4Z%?2PRC^L0N7etV->!^|Q;XCnS)LaVYESLd+)(=Mu`joinaW_`E$L*vm82PE< z+wqZfb=FI%+?OM(Ph|X1Dw!|oUKHzK3nHuMA4dg{ER3;lNd9^%A<7l{Yjt9O5_u-! zP*SdJyb_p7J{4sKgr=msYv~^To_$y4;k&~?O*go>BQh)$c@vx|C&wcGynM?0kU{&R%(#Nq z1|JR5{=m^>qN?SvY52uM$0lQ*u%5NvhOy5CZ-PT$00i@4Aa>5z6n#s{LWAKtdi!r;dq`UNaIQMfeSPP z0>$BzZ@@k*44Ik)A(B8V&k28hDJZPnUrzdzLlQd)wq5BbBS}&qb~bMJ2E-;#SO0P) zp%%Ki_g`J{HQsws=Qtn|3p zU(Wq5JF2n2Twxh)eutSs$EiJ7Rem^2ZUii)CLW_Xd6ip#)4h}4@1(gM51x8GV?dmO z&(2csd3(@S=*ZX}q;}9{3ZQq@3Lzl(kd974p4?N5)mo(5jS78%h;3v+EHO1_Gd8*; zNXxaZLulu!Lx5}W^(yr6A8m!n?WB_XfCqE+goQr;m@o2Icnv;W$30&;LUUhyuF9%- z9J74fxAKQ0BQ!mv^!XqYW9hOQ#&1Bn6HN6}9hWJ0!>P}aPY-?*Hpt;dBatcr&@8p1 z`<>Qs`osKqVR5CRGm~7oJ)TdDI$$xKG z08a8nRP=1=_B!)@_VhKZ+;cY1cDvRvCTjM*Y7zd0K8(WLvIG@c-3`-Lsb`V4+Cg{JlzJS^PGBM{BjsN~4htOQMxT2vBr!|rrF2mcR`J~| z>~tzM94lU*mPWi@sZmFf&q$%l+?Hm#z#{jJWoe*{%uf*XJZ<7@Kg(E%_K{ElnHKY!Ruue9oG|ep62)&eDPOh1T6B zVbA^bwBfgcnyL7zJ4UQz2SydaA28=AU0$2BG8(U4(S`3S%$=cdIohNBLE(2BxmDBz z6bd=@;6~)>E0yM8yRx^2x#$<;c^~MeUW<06@XcKJb-ewW)O^G=&{mkDB9NK?r%07S zg^RXXXlc;sp}NS#bGajWp_WBm3B`uGN{iXs!bQz{N2X*Hue=USSY`SqFKdvWa%)U@ ziD73aw&&K;IqfgWP>XjBg~Ue6YPgxj=dU+P7TNC1T2uJb>nxuvM=ccKy9FFl+hpKe zXlB=q)*Nmpl)ud@;~Xn4Z3%F>8W9@|m|t5?q2#XVZXt^$Ox<|2JFOvRy;~yZXGeVf zREL>pcd38&oK1&kHz+xwygk|RQ+Q|1B7iZqzh94*gWKu&q@T>lDz+}$GS$vTaFS#$ z`Xe&od!2BfuY*PAUWeGOHpSFA%pyP6b)e3p-Z^x(&&Fy8U|O=B%L7S;eq{LuZ8z>d zTiN1-n~o?0&qG@`fH8V8R-dk2easv(tvvjvVC068SGDbfRo#5ur4i@NQFFTf1P>&n z<+eM1XNyN&G?Y+h-CgjgC#xuc(4yN*b908NIg8Xa?g|efQ!U!Yq%a zxVaj`O(=JLBko>!#x^C_j-VmOMx$eqN|EDA@JIP&B+?5~V-=tMu!yM+$@f(L*@BlD zg!gq-iDr4F9mIY^fkKIb6Z-T`tQA@I8n}OSrP(5GL zKl#APyWN%8x?G?A(}LWDj(#DE%KxIIxsI+>HD!a_>W=vNAhy) z;Yf5mlF(^1DWYg zw8-k58e$tNIr8=^t63Iny3JGEw7-ocQWe?0DdMp=C^*D_A{B> z;<~Wre=u96tdo>Fhp&2-0HGclA{P|;opfwQeL4z4dEa{i;I6lw063t39gRdkk9cqe zePS;PBR(!Htemx!^QNFi7J>8V-Qwcght&ZQ-R9J)ib7>_=g84!c~hOn4j8g`eBYuB z?K5T}EXVLEAhTVZ%QdG5KkS!xm518ls^X?Xg74^G&j%$=%`r`O6`g}pRadv4qQGuD zi{~%jb?D{1(ugq{UP|BHsq8txPb6jiV<(pQ`=?y>4}&`1y_I%6Bs}yHopeBn?*;k& z{UnMxWzCncZ&QHU<$&lfbc(cL$d;X60q-GH+`WHN?m~G52*(Nd9cT-wmvvfh!b3QT zzA(`DmfSWnSYRYiY)(q6YIjleawah9K~hwfi*Sjq(EC)zTM`btyI!=#WSKy`W}O{za-qk#ul86 z)YVK}RZMEjO(}jkye-NG7e_b3Wnl+s!bj`hI>YtoOZJFY4sNKfc%h|7a6wBYk<9+0Ap%_ogr=;PG6p1z$pB^gVM{mN-@NBw_ zzEpeo%cMxecgAy_{=<{+8=Fgvn{P{=N_q5!!N?Y%!ox1KIo+Ol4fR?eoPZWLcLyQp zY*#sErnAd@H|>LEL!abew)dL{Z!h*C{?Usza0ytH$Ai#c{_o^`MJh{!xCg z@HrmLuc>uyHwlkLAeq6i2wmhKt#v1Qmy@hzHWvb_VZd9Tis??JG8>cduB2#Gth$9KIqtVg;G%(0g_Cl)Sr9#fX4WUq~~JtNhRoDOdlz zJm8!;Tf28lLws4x-)^okf>)^LMIa zz0f;9SZSy0gm+R%4<7{-v{8(Awlb@Viu59P^`5z{chCTiDI##KkcXgz?r!NcGcD$p zyrF4zYO{`zM$gdzzZMb3j;u#MiSJ<9jbA6Xjz*qiUjF-1Wb$p+vS^B35Gcz;ap0Zem&$2ltw%&X1x;2oEd1Uisp7$VQ!3N}!zi<7p3mj4i6go-XcIRy z{8=|xMcPw75I6MCe!|My#F>6#VObEWuJO<9-SW+h6J=a*`QLASS96QONAyR*82m|)g!hVxR=^v+tdF@n?AV=m`O!Cy`)kvNjK&t&u+>wdvBZkr6X-@ z!^cYA@_q=Q%GVg_By&)7^(ywxDMZq`3RAbZ*ykZO<}&0}D*}arvJE}5_5?feA!V7z z9}rKW8tN&yA^RhdfQi=M4&hGQ2TI$S?%C~RJ1g_V%Mr2`605+^o3*s}P4_-BEb{!> z{h)$IGl8|K>`~Z^>2RGNc9*_($Yt6)Led2FX7a5a8kXlzscD8QCHB`tFFA_tX07e; znk9noG+h|f#wJrY|D6zo9gs**tzpxG0x6bFsde8qFoHTFuP(W=*sulUCBHb?(cxcUR(I3kcs6V9Id-h1EXzpY1*bNO1BSO#FWIBsd)M>FdhGZQJ?T z_4b<~@c4L)wI!WjY5qBpm3)2iQ$wuLhsrSvh7USMbl&(s8WVyug(1GC(i*L%uwc7< zv!K&HS)Bk?_47Lld?E*&7Rr#^pYJ@%**z1Q#knZ=a!SdzqNg;~)Zvqc^FviWC;f)i zg$DYPiM@{>E$VEXU^E-;(^f{0F;vG|ojEbbmUu z;T?VfE!~j1!OO%N$=8Mnl;(do?oY8MZc=RpYyA5JnDt%z&!~CQm<(e|DJhHI*!pr; zGh4sTCQr+u>;F^3|NZk7UW`JkRw*5d*`TV_FYh=IRX4D)0`>9WueICLH;H)#qP>B5 zg|?!`hUG(FIC?xMcNH5wyZ336zEeRI6j!Nx z&^ysuK22+Z}v>_I%cLcaaJOU$56K&1onSMfRb z(FabQjZO=#OljFpyAwhop!Cm;6K%(;X_D788iv*ej!(q+Vi{S_`<;=@bywH`pU~{| zZsM~^%EIhEhO!o%uwkHI1U77}34<-MFG9URuwAz%^X zuQ@6834?}6|B5(uL$xQ>lfrCrY7#qVVgUUwQ^EwcU0wd|^N4gbEWiUyWJ!4-oSZ($ zR%hJuwd$g*Lcl~1)jcM|Z<2o)-18gE_*fC&uPU>IpUsXIq7*X29hRlFA07SGY~LVe zdWOJBkS+2}2!8LFz{wIx-*zg)TMgB0tsDhKchO}r_uiiFo6;N(W}SDX)m&dv*68+5 z_WuxC-IAZTzfg~-qs+-sDk6>8yl4I0(o)hY79)TE;JE<`6 z2sdG&{v_S`6@r&qZ@`dnr8%O zE~TzrZV23-7l($AbC>HzjTz(hxa!uz82OcyMUoT=*HRVPPZVo^q;NU*uI1Cw(Db*A zW_v$uiSne3V^uMSbc$sllzx3R>sRlIo6{$6uHn4o<=aU96cKiK$J!+#ndF*lFy{4L zvnCGGGWzMK4t20I71bIH=m?XnkJpzk9~YW93*_7T2} z=Za#)q0!vi;INoWlD#rS_-N&EF>gD{<=6Ch)OPVE9`2m|aCjc*L7f$n981dh7aATI5 zHMq53UyWvJZCdNb!A=h^hqm(zudJZkx@mMa=Uj4<`2Y(cTrpHnlst{CqcT-AV z+;mo8Wb)-jT;`PHF5bGwcuK3gdO$o+@;S%En|*!aLlu8-rc8xjKghxIC_xeTld|8f zUmDNU#x%!mtV8I1eesNqwHOsoa#*)&4)Pj97vz*&57IWmwRNjIl?<*e)PvSRVMOSM z6{@agiKyN%YDGNXoI=*-_m010MB_KBh$55$(Y9`+agUjM+1beTis6mWt%j(f%wc7$;Ae);Pl)cJ zrVH)X!j)qSn`^_s7`0LXwMiZ30?xYEQnF)s%s&BZ!j%<8z{y&&Euq{OFEbX?PH`5+a#y^e z>dLz}?xn{!npKlBX^p6#5T_};i)48W{rJKJjTF&2LB+ozoG`a6rLeXF8qsolylhx$ z4e97usS5_U+&*GalCYD2{OLRr?D6to1i`N(+iQFMgi9%)_hmtrTr=d-{(?FlWJegI z?6Sa)31Xv^~Ip1+$pu%34Uu2w}gW?3@?Ux=6!;pOr-?B z=D#hPb^w|6*T3{G1)DQvbTvt(4!69F`Ax3s9~|Kwe{k@Xju*otdROxDX=yaZ*@)PHYYpIv2SCEkue;wa40j4ON4JZ3w*~K)8xny4*_eJ-{w2%SkBZnSl#}v--qpj{I0WfsmNoes~DWX6B$`UIR^qB=^KjXoB6597`+Whi} zSIZWv%6pRcH@#i34);1`67@Wb8x@^_9t}S(fzQ~r@i$rmwU}s=b+Bmrwx)SPIGKhH zs7=<@NhO%9Bm(gbrb3?fza^Dy(p-k^=Cr$R7e*Ght{5X_eO>Pe@jE=W7anErigf#! zoz?RNx}Jn2H}njJTYhlzpi|JJEWL5683e9oFv~T-Ss%Y`Y zYcn_gWGU&-DOwN0{q$28C0Nw#^PMZ^;f8+bcJJu{GsZ3G)HZ0RSM~I7e5}{b29ZAb zyx0Cwuu?w}F^<_Q{O^g=Yen0sB|3V^&Eet398dw^*EdDGYWNoA`FFzS&xqxcmo0vH zx~H8vyL($Z6G6lRZQB2Ii(hG-05^@37defcpR#T{Xgo7cHZMq3^}Ty2m6$BIk_h-v zoR3`LIoJ~agQvGNAY14$Z*WuTx+sncN#hgZ0Z45`USOEK zBVuORds}O++MT3f|09szzP+clE+pQf$R0CSCK=Q%=Xk`uKRRJI~ zYOw5^4twDV5=%kk(qg$XnahaBD>0{L>OW4V)3sBRubP#Tdl-ZLLZ2$e4ORc@>PUgh z-mrOGPL|X-k`&!u>c#2I;4uCl0IWb$zlZO9^M@Fj%OYMCXQeCcO{5LFp>6%`+~!wQ zncptjVwj35H>EzN@%y~I?~RI7ri|iL4xLKlf_!>oxaW2es)FuIx9TFx@+zH|#!B)* zmdaVj^z7ZAzlb!#G4K|_(Nt-0mY;Po3IhuNNAU=oY(_oSF|W8tnO%dbD*Z+Iri z76N@+Wr_ji_`hY>PE_QI`1})3<2QfhH*omSJ=oOUgLou{j@EV@JABk037@}k!S>V@ zIZJo#*@w>k2XJF-kcg@lfqq(NJc7E_xTMNv zDNN#a1(ocLG8BJvnR2=?+!5o`!wsVif#2RT@NQb>_uN(=)zGV-4;nXRewWs>%knFm zlZstZ4Sds$m?MUVHh!;n@BAFig65;Rk0>$OSMmoX5=kI)+A<(6hA@o3=J$W|5NI zmU^^x)Zy~QIZRDvQQs8Au}40Ee7XX^^V|Owp-=-=<&+(4@W{vS#mP5*1V$oS)qo$o za+-{3_qN7@j)88=Mv(%S(F`LI`TQHac&J zxnd+DQh7AvxI9Xy(~WDl_n^9_4!`u}U%(fi{TvyJj)_{gr@Pv`oJnO+#-Z)IaAR-?t5j{P0%0_A?2RF5I)@ z0Pfwq3%e+(OkO;L3(voTk(E`TwiauV5Z1}ec68U_zCGR8-rI?lxp@rT=trnh?_w4a zX1Z1~zhXRsnaL4^vME#}j8Gs1ePPR(p72DX)YDyu6Q4jes-3jwQ0Bsgv~nEESQ_W> z;#|DT>t?@nC1Ji)q<>Ect8}mOk#;1l_<*Yt*lR2q+ zT2xmBgdR>KYwO5+XWk*WUQEy&!yQgbo=qDu-sPu2N+et?kSJ* zd2ah#C*%9z?JUid_#AC)(8LBfI#6AGHA&&tUJ-#_OHqAwyD|{t^WBCwI+@YswP4YZ zrLt;U4%R{2KP2H*l95$VnyOrz$BFy*;%9#57qM&C1BlgjFbyX+iH2)=tQF>vm_Cic z3*SfoyU*d&5B~(0PCk#R@f&#Tv14d%s>XBQ`vG$4b!3u3EX?K6*j&Kz6Rn6x1DKu8 z;ne9#tgL8bay8=BVIJa9sE>BEMVQg>|)6=t9 zr8Kxksk5b}8TEDbYKmSbA=3_^Zc{IM_V2;M;uNwA^Qh)MP0G_|W?RQ|_%Sei`$Q{G z8DY?NGx~;I%4g{uzBl|zQJ#iwU9wB=I{+)imE$@1WBEq373d%OV2Q7h5}yk4%evVp z)DgV-{QJl#j~{-^CEB^kuQXOS7iY99#_4|MR=tZHEU{1}5(^Vpm>R_Pt+n{l7e9yX zdrpwy)q_*2W!Gsw6}bh>jlF>@l<@k`y^6kbZ)4)dCH8e1k39YmdN=pr8-M;SGCOJ; z1$KFU4Gql!JoNAmG}Xl^?JtuCqFBvV;_bKRap}Sgx_VpDyEBdsGQQ^49^}`f2*qo0 z@?0M#r&p07{p$NJ*RCyKVtf(LJo6}i=I1_!tCuh0;I3^*uQ%YvjWIg`$QYhlFT%A( zI@(aPMLRyzlPTfmCo$fbmGQ@~KThATtWr3Wdv~_~4deP@qhy-0vX%eCFg`a5?!u^1 zHdC^`<~Bdw4AX3)%9X<32TZE--E0V58}UMnwbMcwW~i`q_70>X_0R)FWQ%!JH`JrM zryEZ^`Z(gDu;q~o;qthm^bjOhbm#G9@)0t*xzAiHnym;>8z#h{?$bbhT5;q*_x?NoR!vsnER}_x_dNK=sxgSY2MW z4;JZ@mfEdo2%s^7aTIHAd7WD7T^9CU;NN?~ZVx`5Ez517JngM;oAj)!;_k%wJglH_q#+t=_%e=vk|=aP8m^fV@B z(+F`wee{t|eD!B{;pYjTf2J2J%L)9A|MkD(cmL}T@CfhOv3obFt83XNsnNon!(TW%;LEf#`Go0!wYwDZuXH|#=?>$L~3Ua3F*rnV-#YH161Wsu+blRuZd(6)Y^x;lic!ltc!wl3e92r~;FD>E1ov zJy@7oAOnqIXID42wl-o@V+~p&F*3ax+!*Y~cV7GfdRkiWZ;oTipKq_Qc@3=bnqRl2%1j`pT{G{oXmn=_~k$FOhz z5nR3AXNOS6D76|+*+$_}NHNO?1?b-&*ybgHsNtTyfnzV;j0m+nt`tGzClt6@S5I|i z9J8>x;r6ku~k4GOrgiv@LC(oRv zCQ!umTqUL!fSDDLUW&NqXdQm(S3ixOuAMk@Y8a=_4B_7a z1Ad-zBZlP1m7DUg^87Nwx$`UBEZQ#2^On-vzrs1Te=4eOEg7F{Kv^Y8`(kb)3i*Ac zlqy}u_)1}AZW};Kql<1jotP%dG#O7@OWbQ@%xUW|`h;T>rK$b<_TljdA44nEQTtv+ zKp*?jM}r)r)QPy6LKgE&oV6+4y?gE~E?&G~TTPa!@+OlB`*3qEn?oZRS#3=n7N+OW z-dK;SU=j5Z-fKCDsp)C-j||}INFSbj;C}3GY_}6J`fgms@bC>Bd*pu9B(wOzzxg*9 ze*I-ko;!t^tLKqhn8C`@G{%PevA&W(h@Fw8v^k$zMv%nbR#%G_LOzv6eRBt@>*{dz z?3=tV8DFJ7EbigTb-lIUjF99rAuq@*5uj&p7=^f5(;1iH_Oqu;D-ip1TMJaC+=?&D zp^2o!yXAW1cUdF^k3KKJAc=JI_&s5m{$ByEu zXP!n)OD|UEC-K(X=aEOq*0y<5Ykz5tPafI=`9%YMoQv{s^kcx!WAx+s{jgh&()-5G z?;C%slqyx4z)Q@~yozw{GJA5Gv&9{lkCyS(M2JfsH)<>^P1extE;&drJ#Dz~+K*6?qk2Q>RbSvT-1?J@Z?nD% zm)oDE-!tJ@xSy{)?Dl>K3Ui>oV90yirL=yW+2$~_QI^*D?u_xtY?SHB^2_i|dAKM< zY4tPkiO&P0AkS^($Z7c%Ai9&2gO`0435LlgvRGOe!*BnCe}GL}dXQb6!;KpkDbXcx z&pr1cTvKZd*7hkeA9V!g3nI9dLf`psli8g{eSIqq9Xf1p%KY6OoEJ+6LVn=2lvVZyOSeSsXfe47+#lGuq7N)-f?Y zjuh#rsl5)z9@vLZeCimE9NC7s2_14Uf3oXch7d!v6;goT&>TpC5l>%!^w68==y_{@}5LdMh} zUX_&6OvPXeU7OS@FOBC=oHd-_yA`D}RIc*4ucB?FTeqjVmdGA9i14CRAv)UHv3utp zGVZY3y5ccAeM_T2f=Q>-SP>Ijpk%k2z|_OuKExD(^rr?$HOz7xaJOZM$9hd9PN1bXx%Kiwu>c(`G7D722**M_>iNG)esRGu^t!n^OD$J=k7LSthU zzVh==<1?Q*gyp4W{G;FbPxxp5C{0Pj#j0dV`^SP_b%OL0{b!O8rW@0ph3IXoT-} z4*fj0a@&uWb)a5XW0{Jkoyq0V)!l=`hmYXCR?1My9hg}CzJtnhjYHmSYO*Mvw2GG^jiOI=HTjQ(J8Y0_# z>Dm=^Z`y?ZzCK*Mav67)a^N0Jj!jdV%wfHlBV$gZwY3H9)j_=W?XM%qHpYTc;+ZOy@GZ2M*}&KBjM}kb zTTRR_BYc*;?~`A_29}P*P1|iRP`Jxveay~Kd8Pg{qjbvPIcfI~ez3%+?JP1rU6j*C zdHLnxzOgjU@t$~#le=UqP>jnkL8GVUVr4n3E|24HeC^lS2i?d~eO$|>n67~DeCK7H zK79@6-aSc4eHN`PHK=WBU_N~qiYhWE-Ia+q5f2ryw3NmyCA|w5`!GE>gMItAV9(wr zd+2rP(hA;rV-Z7xdY~3V|8NpJc17{)zw#)SX9p3j-Htu?{R%4VjgLi6){~?kov;!@ zO-(zVdis<2^rs%fp59vYG*j!!7x2m}=kX`sJcHJrCLDe2e_*~k($YNMIe7uI3uy#H zQsYTGzO;8M@Dfs-U-+=UQoQf>jc7`K-?lLO-!PW9++E7AJPLDe-|rH8G$Uhae2+8b z_fXu2QFZTH;uFKu*{S;X8|Lqm(lOh{oM^1_`gu&xN4}3Vi!V>7i)p0N+NvJY*)ku~ zh`{*AyJ}s5ccw(u+R}z?+qTC8k?FhG%!r2 z8$vZzo7!MCD#&!T2aE_|gMw^xz_!*DazWd?TwAq<*_l}s)9Y9rn#1a~K?LTU^tY--#*5{Y^%UOw|^iZ41#lnY?f=qNI$& z8QJwS`@(EjhMWA+v1=)n&0^QCt=NCyD2k*3eUn8G&$@fJW8c9&Hu+8rFXHQe{Ac(#|LPy&-FLo? zih^F7DpG=|M{WB9WKy+gALd5lZgLsPUysZXX!u zL{^uMf!3Cr(h!6g-|dol>AdoM(O0p4I$tD-pH+R;X7tV=sv47o0D%|6(Y zO=rkR$kr&ysWWtBwhl4S9=c{qb1GAkoqfMR_h(*7iJ5E$X{xo;R9}bsZeaVityFi{ zF*7@d8s2Xrxq@qh{n$rh9Uq^>%+wU?x{lViHbg^VGOUcL$5fJexj}3a1?!MteHIz^ z(4$Wnqkj3-msr0dBB2nfqWZjG7>(6cnCu&%Sd>O2q6tMusH=Lej$))HZL>VLIop9r zgl6kK-*RyGR@)6czp11uSXi|>3LN8cYp5>Xo}epE{os<*&!6E;QGQ>#GMqZYH1aD! zDbtTP*6+&i(ZGhG+ZE`%jw)_}4O5=i)r)=)%+GMuNY(P&tYwJ;C%vPG4u&UwjS!Pa@9u5rKK2;4KlFKg>=U2DfqU!G-W|mnRb!PIjjSP=SVB!*3?U>@ksC!eHHpQg zX@po-Rip-UlOsqBU&PW>Kb99}v18j_)HHVBd*68lDf$oWqXrfvz2{d^83`Z|ilerc zg|FqwSH#@P`>7lkitu0qGnQ7y(w5mWe%$ShU;gbu@s2(W`R@xV$d&h(W$v2s8Nv9M z5sw2G>4A*G^ec-mw{HrwpYzKQRldW;Sz6^0g9EB-YSGc&f#$|0PZf5OpyE^MEGDOB zFgLqk5?qLkB_59>79kby9H$j2}TGOnL=+l}6l?T4EwbIUe&DbBM$z?5h~mtWY2G_H;; z%d3zs-}t@&X(mkRPV&#r9XqU_EQY_zKnOW%35O2t!|~$>D4}JMNfj_ZmBXpm&f>rP z{=dfCuY3df)I37*&FJ3sG&02yC)XIF%)ftEJ3jr%&tU)Fr_tW_Fej)6%+4m*?|D?! z0d}}bg+3fUkL8s)y!-mMksN&stFzaU)j_wFVFZg|gx7P(td3CWkgi%PUE0dS)8u&Y#0|N^W{hO?f)IyU^9qiM_k`lMsWZ0;>x8 zf;}gAy4R3Sr?9%Rh}FeK+Y>c#qYwArcO0?WDlBAHv1$8ejExLpdUA}Ds=k+6k4`cz zsig_3$)&*~C7L>;)@hO?&M2AZy^lRkiL((mu3n%D>=w6~5z%-Jy4pLDUYf_ym5ZpU zqWUg;Nas|u$dr?H-?X2MDTqxi0o2u0;{55? z@akXuXMFd+{7Zc2yFbLcr&cgOCy8(!u_~aeyBSNQwS}c6Ts-#%PQLu#G17Miec=>IHa*tUrBh_y2kzb|uMps` z9WsP<(8l3%ur*|=@w(OR28Buy+8mHRWqZ}q5n$QuGHPllf$=YwTx1!PwgZ#`^}1p( zihQ9Gd-w0dU;pJ_L{)td3EpF&0L;#>;q5msBsq^e(3D{a*=ltGNKSZQp~g)>f>oYDYl~1v0+2j!kH) zZzSrdfv6v?&FYVv>BKSljlL>(|0E!KEQj}|*;rRJ+dyvCOPA4&h6 zFlK}Md_+bhXBFcmb87{CqAU-;)$JIcH^6jxZcE1~J%9*BBlcjUo$95Ss5U8U-B0U# zVmdlUufRMMyvPItm`o&aZDInipFM{^{qA%4&a1CujjHmAN1nhZKmH63?7fEsL)ABx zF$plE2O%76t7L*RGx|95ihc3^#)XS$tEtB)9(&9N+{E-G03W>*+pVe6gfci zjMq0+^|{UEOaWEho3QWT5vo-ooP7IjB45-PuqVoqnmTm%_97N6;Nm;4*#j7RRzqon z&0yO}1ez>_0*wR@S3d51_xppgYPgB9$#!9GQCa!rwxV3TID>A-F!h+_H?C1$CQDR= z`o?AbOE4;#_qF~PxO%)7{5mPAYJ9U%DNI%d`cn*XuVcuTrm=hXHdI&D*cPZ9C$j=o zN4?~)_0w=DPOTz>r#|^{GQY3rnH6&6I+=V0=4OD?@ATvU{l9+)m*0L1)vfz*?^AyZ zTMj%<6xL#LrijtGEC$Abi4lruWSC9$>)5uLs_^bMN{|KOF^ry`El4JFn3`NB&5hbq z*gv$0i{~fN+R$wuC@-d`$q?62SKDA8C6~rQ z@^LsQ;pwLcx^4o(Fy_I>_D}N@>Cnh>~ds!S?$})<&nS5qmpM|mz*_C9v_RvBx#Iap0-*~LYB@`}O5whg9%nDL|WgwK#^taCXcVf!xz0oeK znK4+ib$_$VKz^lEJ5;ClyPtxs9ZXAn>Ko3%Kn3Y1gKTCQ51n{`?G7`tk`i7Dnam0& zvMi-cm8-4F)=YfmOJBxUzw!)%R8>g^$g!VRGXY#a*@u7i+y4ktq>s8y4`A1czlP8L z+*hz|S1oePAF82r*V%}j+w?t+Fm`OM=e(20^5QZIw%Z_z#)eu{GhJP6JtFk$9rC4> z8BXFUEUnIBZgCPtGG#qwNm3h$M?&2e?mJB>b`7C$*q-p(1gqMs z-G(C{x3@Rt(SG{70seWVxN`Vk<~CPZxa&)QoLjj1%8Qec>!UJv&G`Jvm)bz1>M2}c zgXs=I18l=>r5LCTc{y~17O#9V0(NFS8DDotC;e`dvZY{TmIRc@q>;$xXy>t*OylD9 zetY@5A`(ZEv*mJT4T;nmMkeR*^&h>2*ZZ!cp=T5BKmHIt_36)|qrHn#ADJd4OKpW& z6EoF5KoZ*W@-pUTXD~3(k7Y`MpZoF`@$t`on(7861nnEl(0_eYf4Yk!Zj3F~41gKusw``{BUW?Ojy@<7J#&Dvx>rhf{h0)Vk8MRSJ zD96{W?viapB)c4lDHUP(6#+Pg>c8$KBU?@ZvshZQ`FAVu&+^D9w=3ah_nn$jy>)qY zaX!E91mVTEeJI5#-+SwLGq`&g_vTMea~Bt9v3*-F?!W&y@|>h9*lT){p370npBW?b zqvS^kUi&;{)E{5_)nCGApFWOQgi?KQ9m|{`7t(8Zo6iEj-Hv$LeL zd8*q5N`EQR-yA2)G>VB4OpIS9lUzqzTNP4?Ec*NVIAPYX{4O%^00u_}FitH+C$w0b zX?*qZW}Ms%C`rjL%=A zQw4pas;Kgs>G|i@UFd!<2>BbpTqU<_j~_;-LbL3}B`ho~konDFsDBVw&R@Xe$4=n* z!9%!k{ydgZL^By@b!{D`p*)rnNz`tk3f0}inSVddpSy${nQ<%_QO#}rE?ixU=GHn? za^@dBdlA*~7-`d$+utHPe`-t3{< z7XEk-%cFX!KB|`wUOUX~-9uI4pI%v9O)TMKAA1tvSPP{;(ia(7k<2ceUnNr<$MtLH z*&jJF9Nv>Nmzd((S^{7F#ZTc^{@OFxv$+9PEKd(eQW?_IcYcWP|JfgLppxDik6_!q zPvDoo_C<8H29V?gnPC|#%URpxOo0#Cw4M}a?0xY(rMX;=(xzTxT&9LHIfTWLOUNYV zSzYE&uG#~Sz8e>C;qq(v_*2JF$R*L%8p5-m`xN#cx|htjn(YkZjaM#nvM$)e8^fiC z1L4TW&F$9n%5iu%W~1*!YOWlgCXLbAeN-R6E`bd?Qpc>*?}wNA%`%w%lhD-r8Ik>6 z8CA&HW|{E^rd9Gb2z@_rjrT!_6QVpKXPnBl*~20kLPBqB;H=otWKXP^#8lHvCQJ1; zV;=y|7O3jd9vqvXv==}q7DX@?N0baHT33%~6B%Gr3nFBIBEHwpyo>+x{0}fiCbxax zA$;-kU&7&C`%p}~BdoF{e61ns^*4QRXnuYkOJsh@xn+!98^HeF9cW{nzV*WQ5g=1; z>g>f53AwVR1%c*P>^pMA9+V9A4cI%J8YH9w-oFOTo$VYHag3injl%2_Vp374Lz%j4 z_)w#X8{w3ynZkU6bp)ko&nF_=DrNj8F7tak_~&39@do{WxZ_9R5Au3mQZ$fpt|m zY%QhoBErE6+;i|K*7Ff7r=n8d)zIOhS<+Vyvolk;eCd)+Mp8$0uA-!?0_o!O&pw6! z{kMJE*PG%BK%NTe&MK~Tk} z_Mwwt^sqwjYR@mMQmQK;Nw>CQ4G)gs@|knE^45x zz_afJn7GXE+Fjl*Hw)0gNNF2-5?W6NrcJ+Mcw&B9{7q})v1VN{K2p^z8PrlTiAXJp zAsRJ;h|(RatK}>hBynq&E+7<&qLwPcrR&%6d(V9rXQ$>+)3zCpf8rCk=lD@uyIZ0p znYMvYFcnzmrARIW%3ui)HneB() z1b(RJHv+u5Eaz67m&nhdesH-;Ao8~7AnG@TStdo5x$n^EzM=t@*_O?z78yp-|BN2Dj+N-M#++ek)Q*C5K>7>f%65BWU;tfiRr~8-hAg8-aRvl@u_J9LTlK6??c$j zN%_0q{u9#Q7=Hd|pT$crzKr(P2G-$0tX0;Mp4w1R9l^sk5*@g5347Ln(@iF zo0nC_p~=7z;rqeOro0U*#|EPz#7butx^>A<&_aJK8skjKS%Q*Lp-?c;8yMLNwpzI=}-?S0yR|_pIyXjmj>{IEB#2< zhw z;Kx4sG%lSyi+M7~NIZaC1yyGEp^0ftD)d2qBLCZ#x#pWyD|*X8y=j%T*Y4Y2RiiBY#^Z zdOb20twmjJGc}8LZ0+5~$+n)--;BNcT1$5{Rzr!Ak{hMNaC9BpcD7^po~_njQLjbdrlowA{|AU$=>P`Ayk6%Zt0MB{N1i?*L| zrU^$m2sU#{ufaJ=ac_=~V=7a?i3cCYm!AFtHnnykl}Z~S7AR%v+q$`28Y@dW{(A&7 zQ{%R&xtkKgBhP*woqG@B^I!P|%r4C1!n3FBKtJQ zaw(2cffnvVl7oIn>fp(+^}eUWKb6A4UAO`@-_9}|-^NF{Pu zUP@zZcpNXi@C{tO{3Di^Lb!&^v*QGwdG-s~ytRSZ*Nq-hsVo*36J&a6tfqi;u?APJ zb7D;ZsUj;&n#kl5C@d}F```N>9)9RP(n$f|{N`)evu`W5Y~M=_B7|6N6B%$VwU9Af zyV1w?MIHWh86L}U?12|(>E0JSyxp!}Zw0^Ha(4-YGS6Ke?;Gn|FRVQLFT;FfjL)PB zHjU%bI#e>6V_4;2?IPTq_r2hyx6QP)bw9hQ)+#FO{o7Sih4$|08Jxa#E2&KnH}cxr zLZq&ylcw%!LvtdjJy~n^#Wnlt8snuJYt2rKud2EZb&(oG)%{qy2;Ei8bQT&i%Ik z@0&mP7FI)?-6H`Mb45fXwXr#M4b7;k>Ohpt`qHV32(33EyB0=P$0lfd9S4@ATWh+2 zZE@1y2CgiQwx0U>{@WRmuMKF~R+tB7%JMN+VxogJ!PukWFU%S zoQ@ka{8Q4Wh{xPI)MAa3RW&6wGOKKoj3r=OMk1u4+S*36wQa)oZ9B1Z_ck;%Mlhes z;oU1k_|doj40C<&u+Dh|+xMV**8_Os@uzItioUeAR;a-8Dkth>9_c^>im^io*7T^A zNM!;9)`>Iak6!tfeMtPVM?Z$&`~5$$`yV-a9~onu(p`iTIn`QfLKiMv!oqwWfp9e^ zB(_`Qkxka?ljRRHG-eGK408{_ZUM&WTiMpfcF9&Zs1I&$tX!i}=l1U-P+s5m8Q;x@ z_wvi8E%%Ru4`W;n@50=!B6hJpB{f9$OOWQnlW)yu3n! zNRuE%&>m?UW-IN8`RUmi`?f|pm*LFm7LA#^bl@l{&N@~vk_RJU)KTT!w0R4{lmcT^ zWqMm$&{0iwCKAP4SFYf>iV>ye?98VJNtS5t@frYbv=ukRvN6O;C|J5}!tvqfq% zp`?ncq5Lb+3&YJLzu`+>M{KtO|2(&ni&0n)ZG@HLH-LYoe6ocvySy-6Dn)TV*yYEU z!JU{A9jGxSB5>f}M|4Do*>?Cuhk($n2~4NSs1828qa_G z&ykuPG)5P0*oVz~pTvQC4^z!eA+egp+)5F7(q2t-H+g*w5tgY_q1Q;%*>n^mgGs#p z=1F|%%b&tGzx7RAyEbR9sWmruu@2Q_q79tHwfwV&bMIbdK8hhh)!U5^HQ$Xv562$x z&%jjL_XQ7c>PN3X-w*t9%iSelHGJETztt$*bC~J=nE*E1H;peJz8D=`p0pkQS**Jl}T>lPu@4;~&H0 zC!RumBUPmJ0`$S6VxAHm@0+5EJv}pt8~rypi!b58&fPe1=rH!}--j*xcAXWQ zAA1Z(kM8AUruDfwy!!gf_|fx!idv4U3 zuZR#QUm1NhGo378sDBBc|ID+va-k33{QA4->5k)`Lx=31wbWRut6Qke#IZa-gG=WJ zP!;FI%=&4vw|1%>WoCnJJS_Tl2|QzIZVGYv-p7>3`S&P+AMV-jXG;Ahy#6JbyDr%{ z_bp&EL&+^$jlW%5BEixUn4lb#fhpWYuZhhJQxr2;euXVj;u{_rwYuoDk?dnrd&T_p z?ru{{D|)wX#-^=Xu$j=*)?!lLN-AX%U?Q0`i7`W_wN4!%$Ju`=k+6m9DoS~_ZK0UO zY$n0HZK#VkVD`)aUj6(i(%Va9J+)c*_s%HQ^S)Ba|kN~FV2FEuKc*$8$Y%jl#RDCw~R-gUb#OW z?!??AVR(J*ODRTAMiU-=ut-0R-Gliz^0=D4=f1)bFGUM1pQRPJdTx{{hM{{YO8D0C z6FTBcAA=`dl9u$DP<^jOhhgYYTN%acRPaqb-FWQr6F743K18SvPfm^E`5$~8Z@>N= zC)8Dh8@Hfy`?I+3*eB7^)rtzH3DkCw0>Z|6i|l7fYkD)LKsx-=&wLRzHTC!pzxzG= z4(|gG97ZfwV_T!Nd=m=RU_DlcE7vZPk>*IpF|j{y{t-T=|-TA)>{O6ok&Meo7;$$<(X|I+5?TTu?aE;t-}Nn2#372mIgG} zH={OOg?KPRfozS0Q$SrqE!ulJP}fvvC!uI9aG4Bhkqk7M&bagVXbPFE)k7z)EH05j z=GL%zQ#UH7Z(#K0Z(!)n=kWRq-^H6}PNSh?3m*LB7f`!(E0%04O&XPXAVSG+X>kt2 z1O2%0&M6FC?Z<+BnvgSlBE`X`w*U$V5doQ04!a-v7*f$%%rCAY&$?6=8BYPQm=i-K zGo>`CHi%fHU|W5R5*TE(CYo@4S84-6#t$zUG7@3WrBS_= zmjtL}h8wdi&Tz#js|N{2Z*%ChWxZI>T8Ka>&81M^u!g~b3+$@`f}%I(*IKtG&feaw zc;aJE;of6MD8WTAG%$|8__II3yQg1d{v-koo6xxLlQ{nA&!eWLhm&S4HJBj#n)M0t zt`X8mq==vS%H!CwqXqx`pZ+0Mm)3FL1D%ub?GVEpbUW2UNp(!T`ZW*?p}oBW2Pp3AzydKnJ*d$8jiJhrF^@c%-sJQ&MkmIR zNR#1k&{o&i+8509F06=AJsJp+X>!(Vrux!QQ-@fkHV{`}nkq_$qU5ek9XR#%|BUqL zWmJo4l7R)1YnUSwi*|LPeakk?BokPkTE?M!?#0^NEEZ=e2~<)=URc2V%q*s6rYUKz z*lTTu6b`@wr9?66UHgt;+dW4SVZBzCl2|3vOr@6W{o{2FxU~QxS>cO*(hjS}dW$d( zQ=W0eBAnT2C5$Quizo4jfw?}jOh$|@kLx29sVM&*Lb~oLTNdXcbIW5%m`C|#WczNJ za{u+d(GUKhcvE$$ZY7$rcIjqD35Em5jNHBb`}=MmWXi+MIAUX4DYelZq?DFeoWc{2 zK7j6?E%r*79ooQqYB@xP*isG;*92QLV|*@wiN2E<9eN3~6BjW)JdB?9O^A|~wAG0> zvD13=ecQTvs;}(JIj#SWO=6lf+1tAbEgkJtd+VvHR$)D#$E9myWOQu^vA!!y!ziW} z@Yny!0etqEkKy0{yFbD^Z_Q!L)+mmh*vxxWpt-3NRW%WNkXP44#>vU_zy0Z-VI@gM zMv2cYk+90@Tf5}hz)=Zw(N@3neq4qC0RQw!L_t(;xIG$D^Q{jo$kKRSdXo{ZjhT6V zE2GSo@o7y)p&H9F3iHEdtSp}%WoY}Ql$Sd`IcM$cG%=RW%u&J~$4<=+<{Nbf#ZtXQyq7*3s}fc05N3ZhUqE zwT-oiXIF9Z>wkjcz6C^h7FHa*J1OHJ&pmkG$F+Swz#VIgIBOdDKKD9 ztJh2=*VAYbP5Dt!4tWB#Y$I$VUZ|tnh4SBHEJT#+BWEnm(s`HfwzOq#UP|X1h55!$ z>l?YR^^JV+H#ZuqRH~J&R+v#aDo-)4`#rxi{(Z{rTiw3jwOODe<=4riNFNK6c=GXw z(M86WW8Y{efd-!FN4fkhKbi*Jt4{e`bJn)1VANXhYlx?|gv1M)z)4xr0 z=5ygb`2JEwW&3ruYLf9y{S+8qLtWev1pP#blO)(~$EKXy@Td;(E3fgz3|dlGgXQ)I zo!?lQjfSi9n3wtW1XY9G!WdscMxvwM?QKYGkY~Q{GtAl+QcWUTS$cSxPJW%9{SYN*uHZ&&YeHSd!-SSiqHFsF^g!j z*({RDB+{I%wf&}&bu~#r$8Bxej_n8TL-*c8h_rSh84O@*bsP)n6_PXo$CdNjyXGdy_WMu&qB}XXOd;Afp1`2-$$3ljLFS{C_{vpXwo!GHk?n{?whMIXiw2#K zB!SWh!E(CvYOFQN+-8-++zaV0XMyEw-%>|s7w$WD+%djTkU*Bo^hKSlVw;&MDUr~m zVkDDUGP$6w4KC21O(jUbd92e9GD&^qER)o!%PZ7o*3s0`NR_w>jV;Ys81BQ^>9-JJ z$7#c=J|dl`E38LuEGwVMp?Y&KVr{MV&E7~&44ZfFLEnvj409mF#gLg)j9X{#scpu< zsYB|R`+SP`O(&3D&zm$XZHp~LxV8zcJNKb$-+t^kxEGRAc9oWSqb#8P(Z~*U`0U3%W_4`i_Tv=R^<9s^SdmBx5aN zXn2S!?-Vl23G{B>j=I(zXsM|tLo1;F#!Gnisa5mTZ}VG$H!4_OLOA9tA7VxePDn zGJC_V%QAm}@l%-XmF2r-vnulFuas8CzpsqD--fv<&dXKKTYf5xuepIlO1E)wBG)R! z%E;^LD~FbOc@qnF$kiI4NgTEgB{Fu1C^gdBrQUM!HmJoZn8%%1qAjaHC?3PMZ9DMb z{SVl8Po+}m9uk_eWF{G^Ejq9?v6{r>%#<+*y}}a+2N7XABP9OHJWJ1!dFZ>lR4FBa zX*Yi`7B-1eDrKlTj_P;>m)?1e=~HA!k~&yJ>8NC`VQrqCT%no^^xSupQeq|IwQaWP z^!(N9RGW*aELI|~`db?$k&<~5tRZZ+_G;yG>m=kPR`jrij8G3VY(0x@2(hlUb)DF< z`2e=>JC1C11JdCNtYpY6DZz$`AHDYJW_#P*qpNg)3L^?dSTCOs|vHgXm}rA-Ob%`gj#O+M96W`en>b zE|Q+>5aJ|x`oba>S0V_RcA>u0LjjE=O@=ZGGt`*dXM{d|$oRI5;Y|r71(Qa+LTEP9 zY?zJw0+#ID#I?4Jx$IV&B1$Ec?o04_gn{SxjsK-S7o;{-U~J;2A@S8aRaZ51)njG# zh}IaO3sd!7!x(0maNx%|hr_0i02${b@{~<$EcA(C$QDT5tke-w2M*!E(a`UYINcox$WlN>NHq_svA3?mnbBNeVfv8o1(WU3YIEvTq&MnlIY zEK_O=H#edXjsfvF@~m5t6i^hiWn;7vwnz!j)-9>Fieb9}1`>LT^`5r}GIpA@1|r+l z!h415s*&xfM|}5g)b(s7V#s)>XA$Or6_L3QtvkHCC+L!09J4l*8_o%`O12zI;M_ix z`%7-ww}6bFMyA{?BmbQ-zN*qa=y2t*;u^TZjd@FV+%QImCF9~<(5-3ZS0OBggIULo z>6rP?Kl==-;`P)LsKyeH!kA_y_gbGoOjx@RDi9$~bLk0OIR89W=4WiHN@Z}Jv{lIo zSP#j7+8S+wuR!1ROUS3Q=;`i7G^TxZu1_@1dU|^7jK{tkeHb0rXCd?0wPz=y)$M3# z+>NS+4%9Vovg7Wz?`%bPS0ibF8UgFp*g{n{xQ7105lWz}Uu6i3sSx@`G&ZU^Idd{& zGlexD1-3>>C|!n3CE7@{fihv6KDm{~f;RHGtiJo^FjtDpQ|cG9SsUI3%oee1IZi@9gJ2rrx z=3X>#@KpA+A{4F0GMREjgOk#s&}aCk7%1YmnbaqGF%cn*Y21v;cuF6_vG86FOtm4c z({1+cz>D*ZAMP8uuU`LP#@E;=EyC5wI@>d%1gUN&ff$tC+q;i%`;x008%nDC=hE!q_zc(?OU<=;Bg!{dLNnJeb~DF1X??GAQrF1%6R^CewErbHYkvRy&4`UrJ3{MOcj_q>s&MoY-ELK`c^e6h! zX!mhl4l=$rq2sUw%46%p)`wOI!O@$HZ_Ak5bso#ty`6CqU)ep_un!~gRkXJExVzBk zbB*t3>c0A)Jr_Cczj_uswz%)oS|i<$e`<^>#XlikM5bWH$+k!~$Oa+h5cP`njA6ve zbB&ftsLrAa$WGNmhay!-J+M$%ij>&8WfT6|SN}Sme(VW*iYpZ&%W!?EYGQVp3?s=I zaRA@{{`c)^Zje%%K05yRC!WILWA~E5kVzUd$=QR3WilB(N!6z&wc|ZN)mdvn6>F3d zNz;Lf0wu*L)fGvNA!D+N*SnB8)+@*SI{lf#8`guB$g-U|HZ5OKMO4I*<-nLC1DlmI&a zwu@Jo4Q&-+QOfIiG+-&E71;O5`9b`_fBctdYS@BIYMK4bK_V%7jeW9Ckm{?a@u?NY zk7IGR53fA`5++DnjkO^sqraq9dQvr&dJ zOAwKLt8p1QX(*5S#+9jHCrK-b@_Y6zraVmfe40`_Toi4NPsP1;`nm!>(CCGNTg_cd zd`*q+;f5i`{XDmjD5=9pv=r~B_5GTWoLdN2Uz8F#+m{HvhHK)mh7&jsqocPQk39Sc zI-5CII5UWpvbj7KmY2!=7LlZ+bm_u53=LcZwGft1LZ@UmK01WN@)BxeVYD_h*x{kg zb@k||Z^V|y7Hn;5!}jKOY;I`9rkX}{)iw|s?E^zCkt)=MBlhiFTT`Q2oTrqST3JSx z5~d`@#OfkaIKU|7e_ z9cbFT8PS$zs?1d=kZ~oll}HsrWQ{RI+uJcPJb*L@<8a?Fre+q<*wu|tbsajk?8M^y zG;)(ewwF2d zU1jw1>;3}A>}=T6C~l)%-#EA8+#r_i!d*F*QXUt;$%_+{wh2{c@s*!>mXmSJCLNA6 z@;yR<2{^#kiYcb&1espO_{6&y9C`=Y#0nbXtyo&fP@70#ex`ucr6Q6^F{*XMVikzT z!w5xmpGvf~Q%wz|@y6?~PzA2Vj;%XM%i7*lNwqkJEoAu7s!BWAWsLNiU7bdOOn9C3 z3EM==$t=jRsfjkIrIU7q>NcUNa~F2*xgV{)2QZzfuoGSqnIy+Tjyy@5t|@y;Qsd>e zs&JIB{l-5`FmX5&P9#s2@Izy1=q};f7@Zt0+#DswC))=xImOH6^6N4``^4pN|E`}L zl$+8$X}grS7zQeC>_a@&Rn^wvdZH?#)*h=M8CdtGP1r^v>}46Tc(s$lC@R@W#k{xbsP}$zIlYHVwTSmk zQ?g4^I-6(t%Ve(lxRE5jJf*#CCQUnQ_tM)WBE5BrmZl}Kemc-}oho@)o2PXmG#Q&7 zwgf1xR#N?rSJhY_R99ECK5i*0*EFuHD$VcQ=|_ zT2SBAf{F+Wtf(g5DFWp5O5+;uy@cW6lQ@0$6waL;z!K||$~X;)NFZ7{S!*km-hv>G z#Gn;tnBkw}YrK?}VDTQV>@6TkaE5m)&dWe{sUT@(><>kY>8%x|28)%t^fJ~LvdvA2 z&AL*)n~mRRe%yw{$2iiLF>mE(nzv5<6eK=vHkI)aC8BdcHwjgjKZr^apa=ALd0igo z_QDK3w7pqF%tsA(5}*Ev40d8?Zx4QgaKG?l@DYbA$}Vnk4N6Z9+bQwH*C=XtFYo z+`=4k^Mr+Y6z1lzzPNzG)C>v}GssVJ#-EvI*b?f9%T4V~Xz6T5k&HE1Q-$H75&N!! z4r0(JEL&S!(NbGS)vFfMBmKzF&Y&hhX3xBuWSsgaQ~qCubK19tIpfEx4_seb2YBH= z*_zKQ!!a54v;O6FeSh`(&<9F<`cAC7hh=tddHH8+!d{q5Bid1%tHnn6`@892YPofs zR0w0E*Kp$4J$Ur-k5h6_bAU`>X!sq>&R(W8ILkJyl3o&sgw`o}g%A(dpu1xehHs4F z^jq&Dv9dySIgL=Lh^pEOGAy8mz;2;k0V)!xZ>Yrn1DmjAGc}2A9XNJmCr+Mx8&|Jh zM$e`$JDQBMo-Iq%R);CIFJg5uhndM)3|=3_)k~Lg>Czi`_tdKxxN!k1WRSUZ3K33f zv2YxfQ9>ZhiLREC z1S!F^b$8<6!9%EF$LlOU9X`66Ok$2|t{!e=QYnlL57~!U^ik#tJvOD(RzbJ6iAXut zV}IQ}O@dgZnmSL$x4c5exx7G?S&P=o)KFLLEeq}H*DFnVeNBz`BGs^5)<+AyQBLoa z3=2yus3Zdpu>1PH4xxY_DUF+nTt_Mkt-tMk>@3{`hu zxdX=6(inH?3F>X543#I#%H_R1zsj~75mX;%6zS+m#@af%iQg4mx_BPH^MC&nyz;_ZIQP~yT)l7|6QjdaX(w4$lB#Q-{S&~>?cJ29rpTZY zP#5TZ+HkmN46-_2Va#sRrh07K)_^U&4LEdYD`M3FPP}O>FAcJWSq$`#;>?+Ih}A{W z($+yHR*&wkP1wJ07q)Kd!Iqv)XsDqE5R0Hd+SA(}6C)!S9pD5#Jc7yo%UGHnB;Bo0 zO%B+bOsI^Zm=C%`Q^}yW?%j(c$ByFI{l{_N@q4lNz+N;q*Rws-NRt8Ttz1n4h9*Ou zu<}&)5&#hk+ZoUoU)1RgG+{cqvx5ZbfX!L~bC1~D@ z5G3PS(<4NxiteCEigRj$s_tdBqv7ch1JhTtf+WrwZC6O8S@$A|P@Abkmd2^QdYWh} zF7_U#7^comTVtKIcy3!Js2b?wTW`LNt%nXG zozREQ=cp!!?dbZR_BJxhID#a?xxPV4nkhDhjL(=mD=wVM=Kc9|{bX(rT&x$apBgO( zbBl4(?ItPt70$NNYwXDgUQxoPLzI}L!mMQe?nL5iX|A!d4a6-4beqJgdn??lM=71v z$qQq8KV0}`ZfBQ;^G601#wxXf*190R_O-7e&;HD&=kfdh>5uUBKRZjcGmEQ(i+K0y z6y7*9gco1Gj5psrkIUySW3X@7p8U^JTbLSKg0@Gwe$sjx`-pU<S@AMUw#A64T+ z*wo#Pw)$2Ca%;$}EKwrt$Kc>aYBd)yIdt6^aUrvcsBPQQl2wTK53}tomD)j7T@%{7 zw&UPE_h9edUaT&RVQgs1Xj4ehNieLr!F>94dvfxo{<>QzH|GnwrsNx#b^slCZDsXw8>NwsiZyz zoyGh#XEv(5LROIjQHL|CZmKp}0?XC_m0(tYZ9F>J*S3hTlww{Rt@X`? zjD5UZYniskFPFFVMoCSTWWE7H6;+|CKm=JzmIGtswt0J)5%-yCK7_ml;6A#|2~nLPfWsE$Qm<`3-jE{$nX-83gn<)cy!Vu z(^@zU12u`s{gW_0E7Gqd!RW}qtB?A_qP#d7bF1!NSgB1ng|k(xbR-nO#MlrXe&7fm zd-{`91oF6Yle@B#+7pz8@!5iW**T9>y=r??8G24)Eolrn?Nvz`sM~4q-3dY$Xva4gJEIP ztNKoBXCe_Hmwl%`P-8nXQeiS) zJX6ZD^gk8GceASNA;k#H5uNHOd~L+b@4~I-YJi111X#nJ!`Uto2MsSFO(V-j7cD}B z1l8HqiO%*;`>L8wT~4Pm&^IxXWPJKoX=-%^E1Yfh03oZlB~&(NXnW8=#20jbZ9t90 zP!Wn^jm)JO4AR!7R6Ui8Qu>Oq@5#u5l;DC91em6R1EL}z$uM9KT51~W>|sQXQf7da z(=2Kos7p9e6KSjC#RN(Z0Sq5xz+`wCGVQdE$S1?rD|c%g5NkOdT@|oxEjm#o7OAp( zXE^~>uwJ!|O;}8<*awx`JK9mp{;Q+Zx4JNa`MyhtGQ2Y2Bu(Mf`op_QE;(sbFALTm zf5NeuQkbRijNG1|mY>9|Qc|%*UAngz-{74+)ur+4r6R3Z;Z6a>8Tqz%XNxf-vM|5b z7>8FeW0$flDf3d2Xa6itjpFBi=8HCIq*Kdy?zwN{2j6=QLEcNBn_SOJbzMV!9ne%? zf$C_H%uMPyCtdQZSd`Lxe4P^!nO~MnkCP6`kP{YAS6_{Nhj!zhdk*2?p$Bm2(Pyyb zp2yL?>o}s#oyd?z#|F+|b@>{ynI()2%@bBJJ~4^O!67oK8N_Q@&v+G8;SN?`AH@pW zp}Gx}>^rFnZ{5BN+jj0oQ)`F4ZB#5|Sl%3_hOgU4>0f;H1zb3P2G4)*yZHK_{3)f= ze$>W_sH>({5NqOCZ^VvWTd|Uw!tl@lD;|VCl&)nNBUl3ur^2O>w}E1hK0N%&R-Cys zR!gBb*)o>jOHdluo>5*uu{}_cL-A#4Omg)6KNZHeL8R^}5ycoIP|W}uXpRXgffynE zx-3is-m=ox!Z-6O&a>5WpKxVL$WViwgN%c~__mG?bai!8y-?%G_{cnDO9Iq)YxNXZ z%r8i_wSqIaHVE6R9$tPcTHUbs;lb|ud1~Z zRAM!CR2v#mRU<#uTS^a+hHAtpEf#tIFd3A6hk?v09*@~^;M%OJBZ|TVEvj2ziuv&p zlMr@vo?DKLTRZ*5_}mj=jw-ex&is`+Oo5@1P#o2)(<)V|cw;@5$oNJl$I;N*g3hKE zRFO&RP{4_I-$sb-mD=sp4Tn>Au}{Q=%`XX%|E!eJI_qOK6P`4K(`IVx8pllNr&olp zEfPka>MFU}_u9|qdP(IfCtJsSSFR2G#1fx#yZRdFJ}TTCqC0xzq-{x6P5rSR3bytN zys~_^zHyOVp2pAp{Fl(w(nWe%zz?4L7S6tNgA!VpeHmomNhJlgZmGuoCwAhCpM4a6 z^=H3;`wkyOXKN)|n{rIMhPv7UYHK(?qI&I+6Jc^4GxIqNj?Ccl)nN>d&0=z98KWbV z%%&zWGH?zn(}SoeOdzp(16M8&+Q-Esp%~_8K$UnMvy&X6Y? zagCF3AciVRgLRE9=-#vy+jj54);+tiedkt6l2vGHuSfUhc1oo;@al^vF*QP!c0GY$ zaR#Ba3kW!72?%utP^tQ~pjUtiId&N?Z4Wouz*9ZDhTN1hrBTU zxp0dkp3SzxL>o$~FqhlKJLC6_in~?fbEV0x{N}PcDDI~&@u^Z)dGotJ*&;tb-2GXN z<*)&y6wd7$w88xu=P>LLCWd9UL$Ez+r({;&*o+>k1VPS*VtD$jq}KVw7{!DWiG&?b zpO^ZmfzEVsow?WEj+V|YbTV&adk58Ksv@mzXlNnhsIRxz)MC|SY@Bhm#l#pMAyQlG zm?Bl%8cJIgp%9XkG@H6QOns`%<~d-r6@~fq@p1wEZoQ6fGBAbfc=AY;xF&8Sh3XtN z3Vp_av~IYr^&yre=|gA`lM0fV>U#|lJ;@`}u4!(;*!;8|#IP*&o~m*$+tL^%6A!Lo z{`z%fR~9L~h=pz##~eJj*EiOO7GNal5_oa059tujy>yzqN=D4lt_|ZaVp}qTtSfgS z@iqHTb#)Kj*LS-=8(dZ&!L4aLHwT}0`%+waJV>Qq~TLU0N-&zgtNMt#T|?#;Kz%L6$;ve( zmkXE}p1_SuCowvB21~Qk)BuX8*91(-U(#8Kk}Df&bXeC!8s@~OEm}Kw?!>O$U93wG z1AW&~71OJn%g81uNouu+2x;o+WIj%$;YRG-wiAy$vKPHudNDt@jKzf|N|==X*d|j+ zJ>2SYTALy)*rC>Q%VERXjOSp4x}!Xu+$zgV8C_XI&v?V%g~{!u@$K>XeD9PQ&OxZRs!8U|3j4E{*8M^vR7#yXI!k3pS`_ovDKoalDAkq&u2LgU5-r^d(*P0)SCp>RhG|YdHSvQ)mNNk6i1)+m(EUe>R?4NWAD|z@%lO9 zJ!Ew*{^wL9e|P~`FORd088VJaPIeKrwbi1vEsWaQ zAX@4vl}CfN)DYqQv??5B-|3-MCcR2YYy=lB3}bX+k#rEorp+DLzHKvF8ltEQrQo?F1h%l)L+u+ahu z&(R6-DW+$PPvoN>CUMyN`R3M`l$_6a`h9v)rx{IEkS-YSUUyTl7^23v>n|C(RkXlY zbFWRc9`Moe9Okw)7ct5>!meTre%kMIn zTSj;hLTu0y#~P|CKvGDYR5I%9k}G8;*ZI^B7lovq!cl?2&Asu;H6m{OM*qolQkm1RuN z%~Rs+wH@};BO|tD#x`5C9y&izpR`=pHW$|24jW)xc8x&YJWIEI4wHjSAGTI=bqcT1 zkv4=HvsXEJhbLZQDXL2a36(kts+*f|@!~}r;MyFmZ#`6TfYoufUYr_7Vx$kzkk1^1 zHuedbh3MJJq(f06B6Ijimn{nO+(ze0Z)xQ8())SLDYs|nzS&Dv_l_jKo1f~I+&<_k zi4+?*C^0+xbKy$wODDc95aY{cspu7xc=mIjVgJS`Nu`lkn#6_k?^4y&Da`5un_h{p zbutF_IYqkq7@2czCAM@%v42kkcI~Pq?bT322vg!tV`er_W|qa+R0eZPR9TnEux2xu zoX;SU3v$46lBJreH-4Kao$cMbAG>yL#u_F38`p*~Hadqi8Ey}0_S(=i`i8WDx&o;j zX`A$r_MGJe1#L)IVmV1<>h(XvxoK0g6|M7wGqm=W*b>ePd}nH;vN&bQm9rR7OOlfyAn~ zcBppt6RK{{_kBWO^hsjf&pZKKL6byN=&$ZOC)Jd7wMv%LrR zqp__GF{-5$lTg&G#!k$T*%iguLJ?zdI@zLvQdA}VYxL`BuO55|$dT-g3Q1^MpR@Wg zSRW-H92(+`T+f-l9aEGnbzG1n1%2aJpTE@Wb6KjvQmaxLSeYD&E{)X;2LTCKP*6K4 zsU}wvoT<}xCZMrEspi@TNTajcLcxfw?-=>8PT^>rOqh}%Rp%krV|r!^(WVBru>ze` zd8#SpEliGKb>NzvCL-ch)qOk*ghyit7GB;@emdSwZVNL<$u5Blbe0P+qaX`3qjK() z@lgsEFPxLmoJQ9Y-E{CJ7OOnT3d^wZzP3NmzFq2<`EB7prg4C7v6mZ z)05Y+nG^ULVjNdNoIG{W=u1c!r5OJ7Bbd|B>G1B{8dM$K^8ZvBpAndIl>F8{UZ(z7Fx~#l;iZ$g$?XxR|8MK0G>+$a5}$_+&HDPD zh8|9IZQF{f+8U}Db;wa-5<~3j>S4=*l;W6JPhTn3t&tgM%SxU>MM-&-nCv7Irqfmx zNp}%460Pg$iEWMyOj4vChUiJK9^U9XrIOmlC&q2PuA`^h7NDoe__V<}$=Ov0o$4Wr z)*4f+OOlY$n@FKA)JHc1d zp4JM(^otSe$?o+V*Dy3TfVLgmQPtRpW~$IlRK1qQhOyj#g({HRD#qt7cT|;Qdd5U_ z$u|7UO?>OmpQY)RkY#z~_tLn03Rj=Vt<(gy&%#CE>^EMz*X284e62ceiS?BGCZ*w@vzf-V&&%V*sa?W_-r5P|m&y1(OU6fukLu^-&{ZrfjABb~H~z{m zd=*bV@hKcRavb~i?!?h!+wsujM{)dt2eGMlAL^U7qp@=bI(HqxzGEN5!DFAmz4t$j zdyan`hwpom_9tk697i8`5(keyfgxieqX`zB58tSH=WT(wq)xRqIE1M*Rh%eCs9g;SqCIL z`k6)tb+Zdr(gkeVwAsE-b8UDIBMU{|f0YyUJPse-kDdE_v65V|Bd}V#w%VHJ>36TF z*N8;Xh3G{%cGxzGk>8{`jZ2}{**3-*?jC@-c!zrBR!+JZZh6#6o-tZ6hyD~UFpphM!xd~GeYt|6?zZGo4q*D;a&{BxOUxq;<{+kkU!x$J48f`wRx3rh+&L|ZnB zL0YV(_)mOoJ+K>VRS~2qZDpza*VMO=phBj~+CvTIaH^)(+;lrJJgT`Y$Q`vqATwZ( z*xFe{>u=F2M5}8|LQGRSP&uYvicndG-kI#(vKgUh$U8J3kM(F66w9zq=}hW$WjscS zjLb?R1VO53B_SRRqn>F_965>y4j;vqj!x87MalH29?i~L+qJf5Ykq1k@2Ne4an?uM zYr@9-Vzz0yA{4{<^QSPDoJGUV?bz0_83)_jus%D5!Ixjg`qBb)GPO`_Jt7>lO(H?V zs)uVKR<`1ee5&pZgQK8 z7a6(y)+mCCR~=m!icsit15UwfT8ENbhIQ1T0Xe<;S4`k@&pt!^M37pZ!O6E@!VjN+ z5xe&sz!Oh>nYeC5EZ&Hoo*me|{}{IIxEEcUD9LR)h~8c7H!{86?FZ1s_}2E#XlUw0 zbzKW$RSl${T7&|Wm~2&wbW@>iP*F72H(>waLx_h1xNz}ZN@B}s@7aqJk9>xc)=pNI z4SxvL;WM6Xa-h>P^qIlA*(HpRP9U%rAfZ$B43J?)^o>(Jy(OcH ziBUzUYExQktf8vYfSTrJv^TfnQx8%K*uMv)VI;_$Qmd;N?C(QjnW~B5%t+H7Xozu1 zDpZ+~2+O7F9?E zd@{Ux#_Iz!CEN8;DUIh+zihaPEbABkm4({_5OX-jr*h=hrTllYoyB$vs5p%wS6Io| zT^Oc`%cmW`{!WrpoJ(Z)mYd*@Irqmjq>WrEiRy43pMUlC*36KTQ;Gks~h=T1x}s1Y?_m;ar?OT7@zQHmWNNp z3Ej4hi4OI(7*^@EH5pUiNYi?-VO=8{bDeCdZ1R-Dv;BNp)HmW&9bAxabl;x}tnxm4QX zM(3t6x41y0tVlWEeBE)0m%|wNrcTII5K;dwEv|B*8ZBHWOTNgOLD`O4md(XXyGiNT~)XBH;*2!0K>h!C)cHs<$uV2AP|0Oim2C3aF5)!DY5#tM? zrbe_N+Neft9VOFP9ql$soxNyl-$^F69hqVqzWt5U$R>&ypISs!eFYBe@4@D_P7L(T zP)*L053L~{P2j%!k0P6|KwVR-9j*1|Tj!7|6iwR@)6y`OF?@RX6%K5Ybcj`~g;}IV zCItw^88FyzW*HsEOe9jA+zPg|^eB~cl>9EtrSXm2BV*H^@5h_lF+Q(JAI7+f`Id9K zOU8F;JeQc9F+7JDGiK?}#Tmgf-iK0J&Zc_ouGhP2YihBjrw8GD5%naz$^@BIVjguQ z3a$C&DV43H@>ojdFrUa!#9zTEVPIw+1JiQ`BeRPbT@cet5)znRq)ka~VrCAr%d1G_ z3y4t7Y-(;q2boH0W(3pMP9rtZhsvdK#M28XP7k0+e}Hyi@&-ba1Bgx!0)rP37`TLr z8y8VAHiY2|=de6DhHk1tqNh1B&dG@hynFhzy>b-QIwPeA5k!b8QZy*W7q@qjtD@CZ zcdHR6!xJ8wTbeL-{W{)x<#}ws=OCIk@4~)K+cEpfJ6L_^ENY^9GbK-^=i!kvzGh_p z8JevRe9%?yzYTDrCWE0{J*50*E6($mKxtf_lH0rP$au;8iC|Nf@Fm z8;s7c3^xrr5BO(s!iSC!tE;OsqSW#4d-or~mw)!xaQ`EpK%G7VS*gQlodl;XIxLt; z$q1x7khxhHnVC-fDNt(CQDmaYJO@~w{z8!x-3JREJlf)lOgkIzi2R|Hfg`1 zw2>f!;d(SQZ$o>>0W!qx9O&)%(K{D0I=+CWrZvQxfw#{NVrFm(o9aUN>X#owLwy9R zi5wYT4tw_Q#_m!-Nbd{pMH8Q;y7R;6?~;$#b~mWr2cs)*TMW}0%h;6n6=4~{= zHmFTv?DX=V(Q2@BzZ9B-KqP7;it}h+y zsk*ilF;o(r4itd47LlQWw6$JHQ>x1t|7;t4(!;f51j)?k338*WGCik7V%&I=-YVt#dkQtR`H&q8{y8IWaMX?ZVwLc!hu__ z69v$|2^44DM)!uXltx3e8R0Ymmi2RK%%PtVtR7Y(tD)tqeyzYLvMNL zNpmO~MTErI+}?t^XbA6o=R3&F&!C!l)+QzaN(R%X-a-}Cp$d*{4PC7j>H(47RB*=O z*YIz+7S1YgTTp5;zMCzC*@1lDUjNyrLd0$JafuaDqjp-4tT>W5Gw@ox< z_jcv_bmf;_8USAXN&|oiY>>)tlp&{!v-}+6#A0hrv?cAaznwZOW=H%O_;+PK)qP!TR{g5_7g=te{UIrlY?NxQ7@v+r z)2og7;wpN#v|-PlZ8&mh4~`z%hvWA>fP+VlV%P2+SYDaLtFJxBYU%To)I7SjVⅅ zv2*YJXzJL8TxB(usm=}z&EfR*X$;R%bD5c;bT^2)I8a|7wfDUX93%7dtJu1u%ia>X zc*w~#wx}xcVU|D>2x<>S`n@SJX`-F1~-s6v$H%I#c1&A)K?)!-?h+ww$|z@Ob?G^ zQHOmJL)!jfY8dm2ysbV&Xe1JVzL1vJlT@k+`n047M`^S#PcMAi)6ptQQ*|}QSR`!; z>FN``$|FI)0TG1B7^^82D()gBwA^aaR2;48Sd&?QigT0zR7ZiHyhRX;MNvaFHO;c# z=o>|}Z7Y7^ul!Y1M=LQhGKdRj&!K{9x_u8rn`Hy6n@N3CU7`_0SwFq%CW%CEc{EYg z?rNyV+2^0fY~Kw#7fzd;HK2=Bd2D+Nsm*9g{b0yd1s#4=e-GnEG>)M-0KeH*H(+SUilWKu;(~o9>k`eom5@*{ofE~mQq+qWiU3ggt4(ntS)7d zTo)aOFy40_W7p52t+s+%O~l?j8XI3Ftp@STr|-vuj~>S4L<&!Q=5q+5);&;*7U@nzyboCc=Z-j(YTx&&xTWiV@bjWrC6gO;XTX?3C!(nl#^*xxtqX4l5=}RXMRiU1|V&B z^oiU_3}@VwzJoE3Rg7P~iqZalT)T7` z<0B);EU(zdzxBnlB4?3`{5k?fZCD7{CoWZ6y+7I1&|s=elniy21buCO1&8l{5ZktI z!qnIhE?+p$8CYNIVr9wD#aHYMKQiSA2c}*@(<^d0K9RqHHb4hdkHY z_9x>zobA+G*#f`sJh}=MVElllWKJB3+VvQIjX;I8u zV+ZF*Ks@VBd)0eaU&)II<+pa^dxm2V_PSWG*BUdw39vpo)@JZ8VO$ za18a4Dl`%rLNQaR^=_>_`d?bb?7#>r(m4dg?8s}V5ZFwp?~3^EDNAx_sIN2WQT?NO zPb@8=fdlN``|hRcyNrISw@XyZbpV0XC8??Yl^ z5btCUrpRrumQP?|W(1cmzJoVj`3_!t={ek>gnszG<7jAYCezE1cJoN3lXT}1;sjaG z{%vV(u~#qa8k$f|O`)c$8reh!we`(t>e`F(*>zmFK7&&iM+n0>b-oWnWPo`}c?ecf ztBG(d29aD@Af4$Qa*%;mqN}Y6J)L#vY~(~rHM^%dicvD-?|=Pw?ctgo^vgz&ZQGKn zn7H~t4HNG4XZU8DZ^FBUTQosPb+kYq!8e{;(dHJzGtW)N<@S=9arw;8KbP~p@L`Nv zcvr^F%nku+y=+?tFt==}4~!yXQ@oJr;zX1LsdjXWQEIQ+`++f1W)F%7Ol74>_zk{s?Q--M2yOqJTJY-EeTB4s@{&C(ve$@WP}%f_#zgD2N9?0 zs}2trd4CQ%wKSx<7bC1cOTw_1jBw}vnFV9;BcWPXE)zt^~7z0&Dw{~pFEUX+<3o$%@>rN?*ZqcJdiY5r1 zI~PPIKS!F$c;%5UI0?Cvz6n&XHY6C8LcbV-wxvh{Boo#-;1y(Gntmu!ppZ;pX1pJ# z-})h5{NbPDt+&2|;l8s-aN>LN6Q9S<11Ibd4M~w;8OcNv2|_p;ri2x?ttnO7w!}$T zo2uDVWKsz%t>$p@(hQz|>js{C{UTmF*N1_bRb(pSsEpLGE+O{0Ccp?nY-cX3ufnaf zETF!zNJycpDTYVx+lC!Gw8yjx72$eRMgs_wcJ;1!flOX|6onU%(c2g`ycr72cDN*+ z8z^4mk~ZT@eqHAFS)Z1jbONJtGLRL-*gP~-3&}8+m{xl+DbJDQ!2{q>6i$U#cQLe z*4ES%`!0vKCQt&E!nC}rmFc7pm92Vekg&5^kX|FxMqfoc5V13ggkgii)@}T9HB?j{ zd8h86_Db5|j4O3DMfG-p>h-zNG3+~d7+X5KF?{tphOXbRW9!2KGAkBsU%eve0hdgwNKTPz2S2f{dD?3 zUQvpYZEaS#S;m6A$-;&CwgVS$%$8t&*|&i^Gb%@xXPa@3o1_Z;Xx{`DXh~g~l5w?G zkV1tot-;RD%&^ZrMyEdZBs^dK@#&=0-vm`*y_mszewDmy3E9*bW+yM>^2Jwh@}2ME z?bpAHbEjUy=+GtP(u-JKUBPv_I)hcO=k<8uSgF*^s2+pAM}14(2GBV%xCD+ev(LVDOh zTg{QW>oYj#)<7nwS03gUgD~PF^U-nJdSa>osgz;89wvsxlJsCf@3~4+)V??6(--i? z7Zq>JOdV;qZp}~+G_XYSsPddWu1c@i1H{Qv%jeX~+|KPj!X{xL$<|BUIaj zk<}z(TQ=j^iHEQ_K80)N&QaA~M?4&|#a%I3F>-CF)hW*vRI#Hq4T#rKYMHrlTbkBNSmo?b9U3a64&-!PfVp6KWjU#VL$lKZ{du`~WXL_osOErElS#w_m{3 z%cn6vJB8)>MJ&#&U}d#{{fF=4WEi#YbgbtHyiY!tx39D5$f`v$zSX69)|HYLnPLT1 z@I3FKH#?S><}g0KOwERMj_IHbO7#xyHa<%DAiiu&Ffy4;TWpZ3cTFsS-rja>+It9{ zJ08T5<4@tihaO@a88M`lyER7o(FQ{bv za2bo!J)Cx;Vsu*zFDuFqvWZ!4?|$ahpBH|&ro2i&kuiowxa}GrZFPt~#BvkU6GLNz zovi`OJd~0wuNdMj;BUNj%+E0jNmTNOC?!=@*Vx+>{vgy@cRHF$elf^Gp(44b5op-i$yti?LHDQ8719>5!UKrPi5r zPghs74WAB#L)RC=w>JrSY5nv!gR8%}ncw#t9`!RkIlNihtUN~0E(b%EY{QU4irlhQ zZmD3w9he`-)Kmwiu%At;w@u^7nNIUtW8@dmsrqVTvewWpU%qDBKAe;H5Q% zyJvjf&Hc()g@iP@X{$kOl1Xv4ZUn}tc2lK3hrBglnfxRFev^WZ(`YT1q( z?_QwC&4OW+PIREYi#G(<~N+PBxur}%*MYhSfUx7>^ZzK|ASz-{&ON-D)er9KvFgw4B zshK3*SxgJ&)0kRJV0da7EnQm?iq|2Nq?AZCRi_7KIjI%$l(JMC*4It?Arx{2+v=j% z9knsKxSl4ptfDeZ^;oK~)sKHn&qlenn#~|i5hOC}2r)x)9uY`56t?m;Q?Id8T^!4!G?pRJWHh_7a4|M9NBdft)rUpW z+-&OxKB8Sm$oAh-*r+?}L$}TR9+>K*I?<-gib9b@9IM5s7P@QeaA5yojGeuTrIAT{ zax9`$F@D)bSR}yJcqOXZ+OV~w6_XdZvs~bzpcKz1iaKQvZXCpIvUw(f{U@Kjvg|Ax>mgK!t+>K9%Z70d)lg90tIbM zFA%b*%w^aYR6CdFFh6z$gV)}|>33eji!Z)}a~E%*Z*(5lMiyx&FfftD;ADXeuYkdc zG$!ZP(AKlV`XZ5#x~kX1bgH)2Mpz5gm2vCzx^I=RKUq;pq?&+JX-a&-JSu~F>L299 z?;bu#STMmsXcreYdeTEYg-PoW<6}AG)T3jI7#W^MiuJF+5}Dr$(vl|A%Y+4EX1X`4 z;8r)uX^bLRhDM^8lT>Ke9~*sRAROQ1Cw7^cPU2j&seCT4?!y41J36fXHg4&=$yhoS zKsV$4@~!VZw_l!>`5}yIa#zL;Iv>ghp(-icYdHOeG^PpInwC0HUo6wZ1oz}t9jeFr zjkSgEH?+Dl3%eNWf`8~L0VBE10J&XQJm)tB% z_b;_!quiT-_w*^+#)ZleO==S5zw6(1J0vz7smFy2*YV;@KcIgGML~83+0}8(O)<6FgCT0rPT_=s+*8VEg?l!wzx(HO6F(Za#rO$klVh@XTTuq_X3ueXUHViFfqP_ zz8k}soS4Pp;tFyZN}tkZLfU~qTF|(nWNYnbS$e>ya#hMgq5@N_*W&aPikV4Ds-rk_ z`ZR_|#*imt*IrO#zM^+;oY;CZ%M#h!HZ8A?@9len#VL(IYvFD^oY}2DOyuxy=~OMR z3@eXxMLG_M7m%5|&ZMI)}as=MW8%g^}^8RChZvO#Tc#W8 zaPAbYUOtDu>sN5)!X;e2GK8zwCvf@t45hgQ`o>cjoiAc34WtV}WQ!4G3IY3ypWgM= z0k|5RU-`;s(cBWDdb?^8Wig*KzU=D8S`ja$c9t%xriBC<=7cf6KmPi8T)IAvk&#hK zZ^IZK9mT@@A|=%omJzVGgEZD8B?c(@&5_BiEX^TAcTIH!^)-6P7r-P{^RIvXIehn< zKg8_RJT~=iMn`8aX-gZY<49$bIQ{MoB-7f?;>M=+qkbBjs;}QS92`FG9aCf?F>cw6 z*XU8W+-8|ef7T)9R?!-#h64+B^ylNnMy$(3@cQ1rzryGq7^Jj*2j(MvW$nqwj~jz9 zv*fYqReFjq?|#iowk362rX0;Dd_+)&Po?fo?_={ z4TR_*qMQ^ZVcjt-m2DCcZGFGi8I>tymYV9)(zX;rxT@}zXVM;H10-Ut<%v0_^LfN- z^&lcnh9|~CDX+O1;qER3Nqi$qOX%+2g8GUGuD$aPD$)rwHCG`>)kT=lrfRA2S>80# z+Jv4x+t3h;Vts5D(bYxbh65PSeS6BmMKhl zv0z1dVQQ}^Pr0OPFfV~YMWJ&Q ztD{R1yjsuA0Bx3nSmrbjgn+;adO?JdxUs;*r)h5l=2Q5~+pmW~K|J7RVK z!r<5{7M58=f$DHRjW2%rGkEODClRY@MRR8t=2sW+hyV2jEG$q8v^q(vp=QGS+1jF4 zYq`{NtF&wv<$MaZIM2;|)+_1@L8%;n~2ia(+E%khp4UE#3NhQYVj;gPzJpC`IXn5cv7u{3+&3ecd zzS%ZYjYQSfzuJOCdLSJQkB;D#mtV!{(`T@fNMe3@3FA|fNRpf7gN;~PYsO5r4&$jR zj4a17x>|>+OcUmcjYvnEQQ6pz%9?sIy%423mdlAsW!s?D{yQ=(qepwOG6)KQMmdF) zUT@U9-A)QJI@ACcbEQ{s(M@OlG!E^7f?^{3yNEpDyj8-!R$oxj5P!-} z9x}PW^wD46gtl!e+Kbd*GU;dTjGbtG$$Z75bQhA(HI{7!8BEKQN`&5|eK~N+seNFu zvPK*cou(1UkDI8I4LN(*{vH|Eh(=;r8XJ&|pE2og1oeD0czpKOGR4>Yw3w;A2=%T6 zpiEP{S(Y9Ok9$_~&&@*{$6}cHD3%1G?fDoZD!nB!^od87fK~=)-Sjdh=NGZ|hU-v$ z(^W{d)??GA&A9T4z4mP7(PPKaKRQ6Ij>{Ehl4hDYnyIA)GF%GD=}8oGxwD4tshHJg zAd6ATpWfok8XA3!fysROv}FnD;DTS1L#bhw&Z58Djh2xaiS`*v(K^u6>=KCP$M76e z3@SR=7Dcf8OE@(c0}1q_g_H|+pPh}K!Sry&w-}Z%_jfU1s|N`@>vQkNh+YQmI2c)qVpI|qo`q}Ms=F2CAr!Zeg&U%S)3oA`qKpt4G-NofgLU9DF))o>+L zXyamqV=k?CP^PV|NkOU>vN6MUNf6c4)G6 zwHxcv)>($PyzK`3*azQ*?)6=a=fZb^`3;Yan=+xXEP};IV?%P@#gKVu( zbk^85e-}&|pFUA*?8PvTXG>f5hfJlnC3LVGGM-I*udJC%+pcvO zpwV1^yJjR<)wLsB{4R77U{(q96ULRFMM?$W?5Iw^J;^VUVr@! zxc1uXuzB+q`*8T~ox9P!p_}#RM9;WITs53Jbqq^$^Qf=M$8}e3#LhjNv1R8LTye!7 z?A*ECK4l=mR;bS;l$E2Xv=T>7o;Q=F0DZa?0cKe>Amm{-~TDQ!D9B&r`ujxw)qNb6ZZ6dlB zV#`;XIo$2bEt+IBp~9unWaDavk;W4I6px)#BF#tV@yM`xh+ngv_8v%sKp-D*VsIT5 zNO4Bg*UbF9l)ihQZy->e55iHio9^_=Zt08(#k}MyqD(^xP5Bv*ib;VPy`+H5GCwnq zq6H3WPUMd~@dO_G{`ax9dp$OEb#b7u3~G3@93=WqFGnPbD=VxnofLR2wRIdgT(VMw zC@^HZxO@=<>TNDr^lbopJ(ZcO-TKCdZx`r0zlJd^x>qB^9c9m=Y26Y48qgBH5lsu^ z3`?P6%T_X_A^ju_aL#lOv~Em{k53qnS>?1m5I-v9%0if>hlX0 zIiZhXa0B@4bH(?m2o zlgVsW;0!>i?*l|LsMhtYBnhV3I1UmU5De4akqr=PGN#?g&OxbtKsPn`E4b`)!RM;C z@9}BFl?B?-7CpBpy+T?^JP@s!K_BbZ4vLznL#y_ztz5j=P?0HQ6gRby%g8yiWCSY{ zXtgqvoU^4yIqQ?p*HKy{?c=XA~@c2UyqK@@R_6}lfXcTOq38#gHB|E=WUsZ!O zRrOflK&z~-Luo~&JtSUS&gCwJk_kI9MQM>UhP|SSe#Ir6ky)MzC_~aq3}7Z{CMGH> zqg`njUo$xch=hpIS11ii`z16*N7tStuxPT+?6?fgh|w)=)MjMsU(%IswafgOhxS$3 zc^1dCGltn7n}iRAj!f?l*)I&fU+Mg#IykaDW=7%aZf}F)1!SFyg^EKyD4|(Oy6D(P z1%;TjAwA=*gO{b{C1~$x!=5XzpkP=)GU?|(^=VMOmR{08f>TT0dTNUG_4PL4PESuW zj$SpdZ)#{lyBq_Blrp88XHT0Sa=rAY%bp+bJqQn#+YnQaAmZyEFCH#=Co z%zofF(HK@zdPo9xdxDVoNp2}&p)Bf19ZJmV`7j&1(p%Uz`v3NrUCFA*+T z@U4){)_66VXcC%4G0euXS-}V>f(ezz<2j-ISwy)lZf<;r+lxJ`s?A?_hs88vQhgO) zU#oHkW5q~B^{UOZ<`f~_t_Y^(1-IGxTMgMbK09k4#Ozwq7rCNho_9+5;0?ezZ$KiGd?o zZM(rb=E5MR*DMp4J>Czo|GZCZkgUQuc;ZsXmrzWHrSL2*x4c|4 z6K2Pt+`0S_(fA{x_(^;qUdy1@%Xx-%l|47T(&VI#c|{%*+V+Mmk=d6->r1ueGQfN8 z5+F)<7j&8pG&4|mQDcb>)XZ$l7jp*!n5oW^pp(FpW~XIaG?^F8GHQFJWx{f^mlV@Z zf6elm9kujaBr}N%BLkA_IAdxV;&<4@sA5DB$}~RO71sxpGpR7zW!h4NapQosqb>5I z;43W7!^HRidXFDO4Vfp^KY(59He!r}D8I4{6ywbGLtH+3N9Qnr>_!*0*=JU#uS`u6j*2U0)Qt?=3l)QyR;@d~g+ZvQKU~Ph0U}dz zMVoVBWHz6{rOA=$n4f84<}WuHkp8w5Hl~y|=$gOkpti*NmXHoIF9xD;vi)G9X_4}? z^4V6_DI>&Iq1Rn)2%2E1e{Ng7ZJHc>z^cw#{{& z4#P{+w*$Hv4c2)kE?u2})Cyl+2+s8M+EO{KXLKojB>e1)Yvj*G=BvZ^+BQ`9;NWR2 zu#En}IXtoNEKpub?Lv29m$6~P2HbM%ttKedM%6vDN+6c8o;GgS=UNHW);6$u`Iwzs z#?<6Ig{vO9^ru2}#7lRZH35j0^4DXadbOHOj%=Uq$XnkBx~)XfP_*>1Z5lY2&BdnK z(ckD!UQ?LHy8Oc3;Mh;rH`Yh$)79wZcslPV<0J7c+a|s$=eW=dTrUSMS@7A6pb8m- zy8zRhQf%g-pWfmc_n=(Eix>tti4yNrT6)uh=%)@11J(Dl9QAez`v}VNBA3n_9Jb8P z&ITf`2A+tf4wV+DeKmoYQhu5(B@`p0@?zlvF|9K%8Crwb2C@bfnL|>RsN*Qh=~)~< zun&1N6Bsyn5VggX*tm5&#<^V3DXm40iN!+BsZ5tNOKEF1}f9{Bur&z zC$f|E>TNNWn9-O|njY2s(lUj|JoKUhG8el~v!va~n4f2P+B|oSPK+mJkcMLWC`5I( zmP0y9pjl5hIHd5~8;i+&dQ*lSZIPcCSVB;HgxbJPYYCl)6x}IpoTL^|#x+Fx)EP8V z$UXDD2XWK3U8rto!YG$T$ND!@cVF;XoZSiAE^l-0FkiA-F&Fa&}fq zsLl=aQ+w4`U;4Z0Ohe`jam5^BR1+|4t1*RyscF<g_oH` zy&0N9OcOu`gFB{^-IzBFm?(IK3Riy!F9xDua-kIkVBiVzh9=24Fl@jF+KFGB*W54W z6a8YiO`viU_3aJ4=DmpR+`DHF+FM&NJUED1eH)qlA-*&oW%<%zL`w-rZ;#hEF0Hlv zwY^}P&Vw9S)Cz}&W~j+gsN|EU^xjBY>e9~1S8rj~%LDW+=Bc4!Bqzo&$K~crhet6o zGKVGdnNCc1b#-CumMuoh3a%D3c3g0aPt;xsnZQFtZFOkLs=d~QB^|t9!n_GR6L%aw zv`F}p?=?xKm!ui8zsNVF&77D#Pz$HJ`cFvY!A~BelZI&~Z`qTIMmTf;q z!a*P*rd#rh>}ZAAL02-X2}S-E0~6RR9MIoNL1vbn@$$$(TKWpOP(}$Oo6-Fctgf2KQj?Hoha9kn86@mCjf=GQEQEx03>Mm?9ntx^1 zKNGK_(w4E+T+Zry#Z?RwmXgo*?!AIb+62ZYMlm!zU~gX;9~;NqoF>*%yK~x5-(dV` zH#EdQ3e@JSR`Py2Q|ZG?5R`3nng{}Em8Ps6|$g7JDp_SlbB76*>_!Z18O9> zg#E`yxcps4ip$SM3cs$dZdBU$H#j~d^lZFv>=;TARs_?>RHbM`dZ|8Q*?9^+P4t@5 zwX~N6v~j?C7m=oODJq)Kc-5E@e`r#6!QyW3$0&rHuY@iH^;y(n@fJ-JY%&4kR7U{1U^fOIb8eGZF-+E{QxpMSc2Y6 zxt&prDT3S5$_&hDs5~{>=9-zXoOr8H@eE~;{>)c`Oa5`zUWtq&)6y`G1f@&~!yJJq zycp0C5)*1NgI#-XLb-LM$-g)37=>OGY|(A|bfohNH&MdSkpB9>P81-b>DDcq(MqjP zFA`AOv^O`-iEU_T2>pG%7#$n4eLlsvn=oVw9pV-*<)Ro$EF?Zl)7I11XZw4cVHvI? zFteCXCG4Gh3$#y9jNmj^56cB*I5VC^?}VQ@bN+@c!>ejEj;NusEtRah=;Es*jUSE= zjtvtSK>-oWrzl*xVo7tAqNhCk&Ysb0L)z7R)HH{6!@(U-56?;mC6V;{-0Ds+Ek=MB!`ciI)SHEcmqF z7H1o60-JE-a<-gy9Ul-Xjy{@PCR6dtD?>U7L3SED&(c!(xe#=;{XUr{_@wc%b45Vw z6uqg%g_ul9FD*^Pbef4J0OQ+Q?6`np1Z_=B>5@!LDnaJy%+E|mdtm|HK6`s9%8${l zT)pZ_>{G>opWio#UCqsS`ibwMrLhJLTengjF2`bd6=ukU^VCk~=Vwq_SA+7_Ry_LL z3#hHCM_qM;O$6G^mjUMPxR$g;4Jg(-I{=9cw~16Y(P)n=lZcA%tCMV+dTMjc>_^?qP@N-v#RodLJUKOm z(a~}C{j%||Rshyt8T9@$U>dQLV0>ztD-ykrj}x&bOnro$+Fr_p-z0i_&d_@q>4IV$ z?w!QUtezrKdNLcKs;a^Sez^oY1)l`AX}dXsyFAB~zxY2*O-~x0zNeuVCx~y<7VST3 zJlGv>4*xXUV=Iu@|LkvnOi?^SUJL$q+{}cUO!0)fg*H)#u+^B!SK&&>vRvB>_P~cL z;s%UmJHHaePl~THXWyinT}>@WK4yH za1p{b*KOeGz$GQTmK9R*#8vv!luQ$ki4kQQ@**un`y4uXuYEmZN(D;97=x}tEpLS) z3FBE2j7Oc)+&T)SP+jGx@TJ9BEG339KiGqI3ccqZe-wLn?m;03#v%vLGEtAJ%~JcE zo=>8ALpL6H;W_---+Tcto;-zdY7m8F=vpqL>MDqpHK^i5AjVL~lyGTW!Zz!p<6_i! zqrwGa6fCQeX=%DfCM45pAk*Kpw}7j)zo?n{GB#*z622-|Vf449Y+yoTOr(uv}@bnabgp98)6vHkA=MM3ZIK)_tFg7-cG3MrGFfh=AvpuIt=VDAGfirzG&TH&_*D6(hp4VBzi1myblnbWN4>mE$&2YBI zzY*hUwc@dTJ=G^xiVolI;rL)VzAV+G=6Sl%l3;Q=dAV-J@EA8!2bteifd`SZJE`L`3Ez`A^Jq__0e)#VV47!EclGcgr=EMD$k+H0UIAfF$ zbyiIcE+v75Ch#IdGoHB>p9C?cC4p?;Ak4acynzj7eBJVvz_TyeOX{&>7bqY!Kbn5V zjP^*hwMe)sEBXeAe8; z3{v@17&vnntt@AmOYFkQ8SLcp1TzT~&CX+XEWufP9`j6_WHAMu9eD8cN&L}QzJmYo z*I&SY`MZ1Y#e46^W6$l!{u4du8=tYqlxiC4(bd@MS|x?Om?a(;Fh(HFqV^)8Wd31* ziZ7vF+T}17mlK@ObI+q6#nqP%qaBqC={UAmFq3iGWAJK+vBw z=AnFa+{9_;8~<*X|HXjc(1=HPG%1R|!bB>b3T?J65sRx8LDnpzAhd}%pyGT|Pm;x=K=evVrsQIOc!2$POp zDj*(^P@10BM~%Ejrs0J;`U=LHV}ehgN?0VnOF&uQiZ>*floxp^pEQfx9^$iDwlKbU zMB#c!Aqqb6o8Q!6zvsjk+D$m2cr~B>Nj}whmYG>)6tYir6vpCso?2ztDn{iP-|DE^ z#jPUF2bUrE#Dp%iOhXHdnaiYcgF5RDekQqT4=A&h_us&m~;Q=8JOymhQa`*UJYF{&+LIVct11gJ5n5)qYH7#Kts&FrRCGOhe{GeKvt z=4O+a(_=xiT)xbvag>_e+WI=Yxc>!oZd`|IcH&~s5R#)47@JO_cX)zJj$*9axD%*s zz+6Q=hD&PjVsa7RINgi?{>0Px_h0`e{`KE}3BUE}&*S$#{aJkD`Dd_PQ{hWq4g}jv z;{eo5?)zsFKoWXnH2P;XGck#42*!+L9ACD`6cdV>R-!Sdg$1Oa2}euMLBM=X?6duv z8jMEd9+el->SX1+-L!0i`srdID~!UVnj@G@a0yN52?O5|qmVPSc!4hi+H&_isJx}Y zi6(l?(S(HYg`?`O8wJ|xPGPv=NsNt* z5hs~{0p?SSTt+96n4GgoCbtM3pf&};+Co!pwl+Ct=n~t_HjR#s*-bj*T?$SKQcd9KXw*3-Eboc$aEs`7=>it*eIGiJJCRmuWi#N z%#l$?QydI5(@hP?U$+M3TQ{O)(|V++=^dS2!vA>SyZGzxejAmwwH%!OQ6;t41Px8o zx`aVkMd9Q7f-V5m&K$EE6N>f1X$~1MR z)pm%+mpy74_(gq}J1*6BjmunxM&n$QOCdF3J7Z`5GD$x@&|rs|sZlG>@Tw`_ZV6hZ zko7U1F@NVD(cao8o|0*8cm9)kIk39-E*fH^FAhZn5r=j|F`EXOhez`j@rjy&^dd#J z*_PFXT+*b}fvmdiziBy2qUiRn3qfgU+8~ZZVn@=R3+nh>%oT(t2I&`pG7XDNu8$z8 z12}DBVJ<}`PD9V(>RH-`x&|~mGV+zb+Er}vHA~kwqkP?3JbU;czIpFAtuBp? zb*QeX;;g47q?SYaOeL8_gMu`$w(zIHrUMMtDz?qq7tHfvY_r)-n2D?!SY$E^J<-r; zDh7 zA~B7j!6D;I6I{ed3xVwRdZ{pp@_&A?BuXpBQ4X$oB@&z{Cq^(iIZB+w)Ff98GmCb} zcx-wWY36B1sfbZaK63bonRe!t<3>lmw6rgil0l)abFNXz&PS2;{D?mwEB?={=O8vN)2{@xyFzFYUm61n+ab8e7?Zw-VcIBC?dCRo1 zO;g)fnLbpw`b5ZatMn4kI(D=A~{|WXT|#m___2X{#FrItM7hYMLXu#HlI2=21 z0?$4940>LC8ArbUx4`sSJpJNR*sx_gTH3pC;%q+#s2TPp$oxf>I6ITXIK@+SYbzQV zUf0ly;yh}8!;?rJ?ZNo*aXVop7iNybwFU!$>ZeE_=gd<*&uwgzNW18H3e^&Xs=4E4;g4S;) z=@7XzIr2@|lXH4kc?qT6F+ZXB&IF;%sI7``lurF4q}}?*{8$gwMIT0I`>gLM z59}z6?4j+K1DE_hzK?wPLsqy5;~nC}&s2T*anY{bd$9Y8E3kdXPHfw{9bId?(AwUH=B6ez>Jg)wYCEK=!>PK( zufd`vggQr^st&b1J2IApp!Q!}5E8{4EL(QXl+J{Cwp>Z-NCGRU!Kl|y=^4)P(J}kX zr8KaTqI@hSlSmAYp_27EH8O-f+je7VE)QqU3}ZU6h?1%Xlr=YFh8n;k8EBTO|8hkY z>&XE}4WN0M12H*;hQ$P`Q!`vbPouiB6jRfact{l>$M@wg--Bbv zj@$V^`xGPjgI8;V;!9{)TGCBINXtp*As2v=4q_frPPEW_`PMYm;HsUin4e8xc76sk ziAj5LKq8@=9^$<`lvb8wBDI9m14)+UcUqO3%AT7~8joLl&9&q=hTFsWE>>gN_M=_e z((up_KKq$ZL2p;qH(y#?igESc9cXB5410XOrBGH`hxw%%Dhs9T*CP9(pRJfU;!H@X zuUU%PZhfkW&P=+=Pd;e`eq)_v`pvB@4@5M-$Qu%JvIn=9CDYv|6otX9^f5g4h0@6X z8{hnvD1JeBO~1ME;Ciph;g9q@T4}F+)owu`< zn%ERCPKxSe-N{#8qFr5W9ZsJu0_Fd>V7LJoJ3{HP>8+uYBbzHh}f0rU?UM%9LNrK$4+H;+7TBqUHfX-LV}rrBz&SRFb*MFi%NVqC?%) z6_{B{VUFc4(6cNtj*htzG|!HrWOf>Pdd8Acc7j@9zUs}vF-`5yma3XvsllrMCnqLx z{S7zbr$6>Hc3zMTCyh1ONn8CGM{P5dpVc!8KKm1ST?hhGu|Q=sr{ciNgf_aSp3;k9y(fTvFVz<_`|;?f1jDO zWuhiM23xsWCV%L|KZ)P{-G6V}H{J*0Ip4AoHM$bSQ`MU-vD#K!d>Mg3VP$!*Q#CFiia#W-y z7o(rXvGtGQ$Kd$kOhlwaq1xH1#gENjowiqAf^6(taPAP%kwQ!_Up@*WXHRPX20%b1?!5{H6Q+Na)#u|!R^gv%Vg>b#~nA5BGzC|{aG0oyh`k)%LeMtN}+ ziuK`f3PTAjEip_3X5C~?PbIK<%NG1!zx>Nc>3L8it%xjwvSxBS(Vck=T*#RpnaZrj zT%Jhr#q63)oG<0iJSjTA@+G02}3yo1dVaEK$fBq{M6ntO$+rJ97EGWOoUvV(V zZi7(u4`so;C!k?+x_TBxzAhHiMO0X{>j<8&9vmLP=4bP5PI zZvdk}T)(XOGo4-pAUlOn9vfOwREVdad<^$~+Z^@WqSiMGEHx{&?s99Mv zux8!@+gR1PsCg?-ekPzO{8DKNJAF)AH$CQwb0#eHJp|vsqoAR{QhdGKR7X})_WEwc zrN7$6rg(?CK-FN#oOhyKoABjaj_R|Rh7@eYg-k>SvNysoEoGhwZQ1oKrOH-$x>F}E z8XX~wyF-4JEg`X}*llEKIAFpD`oTX}POA-z#gnwoonBo&8Y?#CP8Pb`13mpsF0`Y%azpKKfQHr;_;Ycb-J= zz!cta*R{C&9dE@6ws~r<5_i1e!^khJ$Lzu^7W0F)YHiUtc3P_JtY#Z&toq1wKZRLc zXbPR5VqWrd1t(6v7Ee5tlSUx-iZ}s1pPY20@%w)K!{&D(cufW0Gv9w)&7n)I$jWLj zjg5^B$xMa@As*c#i0{XEBRrHQ38PJ2Nf*tU1ZED zskG59yB@ibHdawf3qd=Ob%ChrhdN!8= zO=qMupzJOc-FD}SjFp_7!Q|MO)l-60%Nhw)#S`5$09Y*(LPk&0LL1(jHc{jIm49Ix zsFzDx#=cOC=vK>=N>}4s3M?_0`oNe}d4@hwbS-Ujmn`zvlQNcv;s}G_qnx#Tqrboz zpJ71&{^CUlzOR4n9%W?p7AQ~gmdp&u>djdJUbfOIz#}Oe4OoHl6kYX_f=3^D3?Kj4 z&)Qp9D#$bb;J>~}QN>jGHrY)~OxP+z?U1n3(GFkkF0sFpwm<9|QK+jIE{nPKWwh(J zx8p^eH zlRthdS{mx{mA`)wBO}x3>h8of*Y3sctFJ_|pqfkWIdpHh5)F+TkVwsN!giYLZ+oRG zJb?L|g>BTHi0Eu~?<3dc=+-!CwwzivVC8(|zPE=#$%58)|ZjZo=d3%_I(2+w2Ffl$BGRov+{}3(X z%mCwBEP8s!Ipb>pMAS^}cGn8sPp036QvHOw>(|-Vid|baqp`k@LMoqHm0nPwGQCul zV;xP41fMiW2|~SId?uOTvU?0knki}kX?=e~H%+KP&MPhjXRN$5j#4gZCAjA(Y^6Qw zT$U}lxNKgcFtx|0GyyQK9?er*wG8W8+l^oOwO_S8QoUPH@+wY3Q2-guX(|ip=z7?atGM`20)L^TV}%_gKN2{A^2w^!L?_ zG#_v4xj;F3cFU-%EJRa%iS=_bF^9&+W~^DW279)*p{kU%(gt z?#pPYt46`%3_4qjaLd*0xc!z}(R+3tU%uxXTsait&2PN}KlG#T$C|xw#@NUiJoEH3 zC@8K#clRFlslH93k01G+`A8$bkrQaDrboFK!UefBkzJTeW7*wb9?nNuKZXa*LrKKz z)?S-{SLPGl?|Sc#n%{-sT!QbCkF%^@+hz9HY^zsv1n}9{Jv}^!6+=VR0Q=DyeEiSG zY1yYo!$Q;y*kq$P@+XR3ai1r~RoV9Az|`RM-cJF9(os{I)6@Y z_F#QYkg;9HT4Ea0|HK4KsAc}wUw=L6qPvbR+{7Ffl@9G|O2{b>(ZP^(FrgLlkSRu# zpPo)JdJ*+Zw8HJR6zXE96UXRH{Nj-PMtc06tlbH`a6&&zaKw- z(mpLYqJ3&@!Gup;`b!SxY)^Y?atbfM{4(zO(wA`j#BnZP@5JcvF#g?d{Wie3l_mKU zx&^2%Tfmx@5>B*9u1J<~mP_59{$Wf^&EjwH9cQ_0!DqmVIAkTW8?3Nh&jFzU8OU|hF6$_Tj$XeV^E3$2%*RxbjEkT_Ear1C zlNS**<|z*=$}i?4P&%Ov{2(0cEzhsoIQ04XV08LZ_ioV9~$WI z<1%8%Hl4@DMlnQFhe(Hq-9612M_PsitmUVrG&KncNWGm#OK*L&TA%;Zjg}e4nbTJ#_K%_pJ0Gevx(luIbUMPNWxKXy_U+q;_x;!h@Y3_o;R|2<5*kYKP*;-1 zn!0?fZ7D+c+D24XE~97gEcPE6z}N)PKa#|;(`P6IPob8=dENT0Sle|q^Pb1^FFuU2 zvO=^pw{AZ5`hK{vW~CEnD%x z0}tY>U;CO7;<{_E#k=0|c9d6E+IhMMAN(Hv_`m)aj8kw(?N%kl$C0sQMizhbo8N@D zy!kEkj7`b2{g2=H&EK*Cpu2bP`%#v;bsHX3ng8$)jI)gEue%oSe8=7Po-^&)Jis!) zecydyAnD?zd8YwQ=vIRND616^*F;=(AG5$u4hLFicZGC|dpTgPg|!0|C1?Ey;g z4Udjtmb1O+A_lQEw5t^T#f(e&er#iIHidQF>+q95^-+7Gg>uI0!+Kd7nkImh3H{Y1 zp9s8tQQ#}%jGd892c%tj2s})=WS6>jH(ps>`wd5UoDHP=}G>RonPIehkWe~nLl z`ctHbw@au#(GoXHE7q3udgB}KB2T?p&E?-|uRXut_zl++YU{|yEOQI_cm+>gdmZk+ z`|W6JtEVt)!Sm0*gs*?=+Z3L9B~>zf4@0yge-swrBk$8 zN1Bdc@1860Q$P6=CIp^%;z>&LLOaEO^Nlw$RMg2sE0+p_NN~L^S2m&EOso82S%btO zs{Vp2nD=k}Cd;I0PjOh8%U0$`eu8Bdm*D%~f5L>+yMO3ixRFanfe346=p07^-4bjz zD`jRt-y15_tfXjUNZaqD0AHX0OVQLaSj*=boj>G~dO9&pEpY_By}fom@aWN__Eg3h z&cxD6B)q&hb-9+Su03gBGSrwu`+M3`oTd5VOE2R1v7P5GuT+WT4pW1bQf3JPcQv!Y0&RzJ8fBSDtIBEisRF`(P zW7~Fo;KyCVy#Ij**xot(m?TkBTkHvZ>^vnt-iwcrk99NT0Q*vp!oB;4eh9bTd^35w*!oqdM>9n; zY0a&zZFUpxi6@@GgZF+DP3v~zM?Uytc=y}ZqP{3)Pkg9;I$5A2Q|g0=qP6V>v%C>b zmIAV%)ltv2TRg5Bw4Yf<(%gQ-2E60#8?a+b4ay6bG2Anxia-6M|BUhR zQ)p|w8bAErk8{Ox3ZMJy|AfTUNiK==NPqUl!n~gAur3mxn{ZNb)@Sb4gfH-k-<5!s z=>7_~Nk=9zuYh?ezku$qc)@N@hh#NC#lIZ5^rh}PE_JQdEAcvNQ5!dIz?Z-L_gsU2 z5syChxS`?oo~1uEv>Ei%fI|I9(?E_9653fx8HWF z35JKh_dR^*Lm$8gKlowW+c%uj!Yn%)BxJjZbBt+$wfdG^_7t-fkf1lcQ`zs(_GMDm+c z_7$B%6lC1`<@hNsEg84XjCATepKgNab^dn4Ak2U=G{_ZA%Si1}Y00EJzH2%=QOl+7 z*!Tp-Cnqy^BW-y-HEnmDC9L%1iI(gs4mb@6U&iajni}-JloQ4!p2`p{G*E5Hr$HO` z1#SOMVVtRD*WF!dcosi|%dR`)64c7`;fEf*;8ItD$7ghRyRnRGxfajHsLS+$0zaK`|rnr1BYXj@xfHIz9R16PTUR0d&0> zpv)!@?V-Nst-EmS=yCM*j@ZPNo|(Xw?N{Qqn{GiV#&GatFJ|Wayr_g}f=@z7jQFi@ zf15L^PQ!EAOX0bF`&K;l^iw8;j-NP%y;tmE-dCb~-8##2-@g6$%2&T?<=#w&)~va% zb1i=2CqB&CejBx@lhmpbWMq~30JgJCeZSxYne^ZxFZ14SeanQWYOkgC_U+rOyrV~s zX4(@$?kdivoO`S%DCWFJ_}4r7Waf6X{X!-&FNL}+^G;tf22gw#n(S$627Y+j?s$bb z8aQ^-fQe0bQ8R0y#;Y47I)-6ySEg{+GC4j=Yr>T|M1icOlJ?(RfJz{_>4Jtx;S`t1 zw%lV}56_}npnS|7OeV^>{YipsI+d!w;ynDl$1Y0n8O@j`nu4puQ(bE@J~4)$q?T?x zH8Scv)$jeA;VJg71m8>K5AoD+(EP8z{yOZ~v7N%|IUJ#O-9Ip7+Wn2>9eu^@h8wQ8 z8wT2Xk&qV;>MUOuCzcO?=!4inemr?Hm#6N>_HE=TmU+S^aPid3__p|%JT*HrM{RTm z(`~^s&pwS8UU-^9cA5fAck64|r=$)wzMp*e?Wn71z%(bWAue-Yd|^M1A9>zBhIGfR zH)7L<23&h}D{i`KBW}HJ5AM9<9k}_{H{!-yuD8b(wRNO6ZsNqy-**-V_8+sSlqP1< z7@kU_e{2E0!%H~XJC8%BCUCYt$*>eP!aQ8Pql2{F%)UxeTiuB3uH1&HpE8e(Z2nha7U45e-@QiQ)8nVsV){%hrTjiBM&+MxjTYeeO#EZ zqbZF}mR#*mlS54B8lTeSno6H%TNf7t=MsEgyUPHtp4x3goy*q}o9Q=h*vO^ZVVePe z?&m&ELD@}JdYm!UYOlDPxtND7n>XPd?|7RD!NeBu+Iuww*T?ztA?gIWcdU?6HqEn%^RjQ@^z-i=`{ z&%geSdo7OI6FW1SI@MmVxQwDjnoH~e`l;Rm>ktXBkWSvl4=mIASSBrs=Wb8qLeOGc zhil0t%}YyY~(Nlt5D)6UxDiVX|AeP1%Zfu^^hrl#o>&I3aUs zC_0Fzv_g>3|HLPprzW_B&kh(LH2wmD?28Gub0U2AyWfQ=YQYkcdJ;lQ_douVKePOA zq|lR=_g8=O*Qlwfv2bmD=+1l`X!4$t|L|ir;(evsQPQa@tW&y z#v|W<4uAB=f5z2{J~Fg~BYCbpL~7K z7e0k=e*KHMVoM#~_m&-a>-FupeoHCpiUu(|-H)ELJrwfCs4X5te{UcD;Tzwiz#Tyu zm+@0`c^FLO6U#BRv^>Po0O&WUf#A{3mQ#_Q(J2zuDnTeLSV9xf#Fk ziJ!x5x891H`g-i%y@vz640^41BWI?A6tEAoycapk?|=EA30u9nMNc)H?df6X=!^MV z&_%7`(4ixE@uhvN4+RVbWB0mleEesBmP^7}{NW$|k==cjFjD83$v`tYSiFUp6TW;6*W!GTQO#|2w1|6T!1fr#=9ZIGK zqMYm4_RcQdC9GmHc0LDokzN%F-9WN&jg?e z4>xU=H9yCUcB+=DomO?#&fAx{>TmJXK2YO({K9v2o120yo3B7yBj5byy?B_*+vmko z4BWkIm+dbeJaEwB?W8s*?Ms^e!9#~L^_4dFi@*2_6m%*4$)EhG-6>aFMUVIW=ntDv z)LvwJ`x@KN)SY>)9$sLX-?;Z)+ctUfsi*8nlK4|w38&ATwlcLs*hHam>hvjUk<_#T z4OQkp`)9vs_4~s=`eO_Xj>5iXrim5{?B}!zKD`R+EpNTj_^76?6&<^7#`bHj$BqqK zP*&TBd3}g{c>(<=PGfFtnoH7C=o{=oQ^yVzmet#yruND0{2}|cf&8&$>ke$+xrcnx zjoP{<6qZ(CF1>`Y#56{yCXk>|T|g1$mMbtYx`3yjIgH01p~iaPFea%vCP({FR=_yP z0X+Heckt9>PoSl#8td1!lTB0D_tcAMY}vv;*$tO^WAnPlldMx&v%nM%rS3Y~ax3WeH@)#L?Ao;hhrWxZ(;74h|YK33iZSa+kVF zE2a{I>iNh|e)3aft}_-_0_KO``ySkN=bc>MzKlQp^S{6~*Itd=ZoA!>SnuT1@^86_~L{bc&Mr&(3-f+hoxZJsc%cTiha@W+>a{0U$zw)cULdIXj zUw-N{ICbW15H!9|rDGsMg{SE^Gc$qIBCtT_)^Sc9@}=Tuf`MFZ=bm&MUcybEnatCR z1lWmcgP2=CiLhKj>ERmXe&|@jOm~^J6!jYi3-*X!`Zj9(AoZMPYUVYV7hLckiAfsaxgmt)u@vpx6YQ`T$4>d;JG}*If4}R^}e%U70 zPyXenaN;!inDx`w+2&H@B}sJh)7;Dy7O4zuYRtzJ1BiifiMT z^|hHYBlr#+vbRP2;y?R&8ze97+ea;~5j%J8z?!yp948}dKSqrF$xnY8dI`bv&%a0k zP=c>h3y^?#&%57E#=XWgf$G{C+(qH5!T0&U`fI!Us6nm|M(>~&ILN`$!vUZT^WXmM z-$YAGD~0k9cCfrV@46FLazIUSb`&FtxvRPKDX*yHlCgv{={A(t)MA;!AVu*tM+Qz% z_)h6A?aT}&Cli=VBr!9$U@sxi>**yhwKu0bv5U(T4kk<}Xee;>Y_i>|XWMkwN;e4X zhzo_7jObWevXa)vsCGbfe)a3c{T`c9_u9>P2=5JxxHmOW(1!6ML`Ri>{6ids!`60ZDyy zh!e8z((0HNZ?^)1Ab(;OZOShP~Il8Q0wQ zHu~Ryf?|DNSdX8EC9V42`pe}(G+zN)-AGV)7dr}qzbDHz&ySzF48eEt=lDMO8OD}U z3-tc?AI1&WUBdws?wy+ebf~MV$H#u=r?7!DkHWN!xR*;x9^K(x|<~Q2xjPop=aMGaG6iRTFhqo9#I9Eyt=v? ztrU8dl~s1ePs>=_t0QyE)N;%}@u}~tQn;CB$1s`_YFd9-SrS%ioETJooQ(XfIUcSy z+tHao2D8&&TB(PtPO?*g$1tM83_X#eDW>_!t~dgbZ#prD-~M;Mi!~qrlKCnAKl9VZQ_5cxLWZXlk8S(m_q;dDQ(wNv+&YW58pKn-L!R=s zseYP#vW2-_E0B%&@eh2!p0uH-9r5|nm+ryCk31r$f${BKci~(2-G{$p*n8jeZd;is z55IXNS}oz^$y0WwG#+5r2ZZ!Qj*hdm6%V1IT;I?2zAL3hUQ*0SgZ0ujk0#SoC#E{Or@K?a9@qI4P=v50`92T@13emGB3@|9i|y=e)?6Vk%=AYHDE* zPUGKhq%1CDAw_L(A&nVokCRiAc7|?zd;%k*BN*nge~bciWO#&vanv58ve#&_u6k9s zUUb>g)@Dl>JEKTVPa1}1^l~n5q?zmdm;|6+nI%(im{wh+!HH?TPuMma7pg0nQFRpa zDU@XyX%vSH9osDbY1piVwuyW}{+OPCJ~}Q9sm!iW zX_Bp{Wsr#y9TA_$|MK7bW^lbaT$bP~yY3?>-uwo$&mQ?663=`AS8rd( zStmZ7z^Vr6q*vQ`_eb!CWFgwm-6(-##L!&(4+N`=G55-v2{N^Nm4ei1fA|N#Pn$=G zcQ3s|Wf$`)RHolNP*nRWKJ_PalCkWzy}imyD!3o~mC)09I~^)^hVdI30xflnXDK+lfwLT(ZHA61;Bs(&;OAQy$L9dWgYZh z4o^mq4|GOXALP+f7F-h88M>wUG?hJRXZrq$`rQkQ`9+Xjbd;$cQ9m-4LV`)&2$P^@ zM^72)E;Bd&#X+otmARrmF`ro8`Q!Lg8eZqsZHgdm@8^EupX2c1qrvCZ;j#o@LDNQ5 zz9lPRCm;V5Qm39m_qq<$mluX*@A*KL&lE$5_E$D40^6U_@^bBhnA`bM$1qEhlWt`y zAE4R1oY;c%5&XaW=ilQsn?B+z1s_clMw;byXLf;Z2_WWc$6)kcJ>5VdKXZ8_p=M0T zbV{SMaB}NS&uI#sWqVfE1+8wrc>VlQFnd3r%dk);?JUFUq@6{@S1l#@ED|ruTYHZj zThVHcf$ZiV?B=E`6HjQ`jqH{rnhaT_z{mpNPO$J zu{eAzxK_g2u1-4~ufx|`hAF??zF6&!;C>!o<-aD7VZ2wC_o|>e2LbWS>q75!_+JHn zV2v+=_WX+1--5!nZOE@|VNO4=41FE`{~4B-u#_0YLjOUePCRnnJ-yfAb@<1I*JP>t zI=l|A!|U+B6TBu%-PhrDcpYAc|J~tr!S_164zI)iaqzm}dmUbf*Wv#-cwO+l4zI)O z@P8a!*3FHQl6*AQmZ7|?*xoK8@Mi(zqcnQ_ivIeCQ`~-{+aIOz6Wtyb!}W%TT!{WF z^Nnc=Lw^3mfImCSaN6x5Y??0F6LeIdpn#yvI}Hi?LHqUMr?-cGUc|4 z28eZ$X)h&k-xdD3B%lN|Wsy`Fi`}bE{U0C3BvWU1-lbGrq_5 zw7I6m3H;$tM=-$bmgx@ws+8ALcG@y!o(tSt+%AlDm%r*yw|&V>{iA?vUa`N*=PR##ot;)6UDWr<+8Qz>q7$+#Vqtmh-g7;u5A3v*;h4Bu`!Z0~4?5%?$~?HLVq> zsG!ixc@WwO5b+-y&R0(82oX4h@ zPYDf>WtVSuNB13%f)k-LssFHbz3gr45Jy3NS`=fgmOE` zMhr8daf?Z~U=K0KQuJEQkQYX2K~WRZn_FZz2DSV=Pic#ea{Ftfyq;NRk7z(k#?6b> zTveu-kqaS$48OdF5c0MXmt2$1dagta zLZCRxQExVJL9rUe)1gc&B-g$=|KPu(+>k~c66ul~oC8)DmKn_q>PM58;Kybw4)YP( zTV7~UIpmay5(G*> z{c`M{e=IAe3;z1a?X}^LWip-Y4zjcUdgYV(D?ElNPq)iddAVi=t*!K@-STA?a@z}S zEiZ+sE|w9~J31(`+r2%qJ2zRFr&LiWvJgRKu(CqcIdsr#29~#&iKa1?21oFZSJ|{ zu~Z*N%a0!BN7O}LQSezaWT$Bu{Vox#?FO-MWghJevp$fy3fUSjUGXjwGI_}!(yFtp z@#@p;0LcsvnX3ff>NvTmK`K*mGpJvVJ!(*lmSYcSbzpgc24-gHAqZ`c0zBj`h~>t* zM7zMtS2FU1CR1C&%0pp_!=Y+Re7{*?#V8HS6{>uzeay$u>FIp0vfO_)Wa<*^8S@80 z`>7uSvX16MyXqDNpW7XI$=EY~Ic5K2!et0PZ$#(;dC;I+l%-U63ZK97=jwo01^{_Q9qTz z3i}?aHNxB(v_gdzK)hIBT-H0b%abx6Whid?aBN+-kE zw@w(}idH77PsqdDpng|g>Kl)vxQe6j)e!w-+oInOf^jvI@neDZqn)|ANwoHbI96h? z$Dfs*<64cc6a+$cs41q>g6_a|Z zpGxp@+*G|pTQRP}J&mVhm{p$nuD0_>G4IU{KY?E_9%7pXvfDsX{;QA|<{f78oH}}e zF^`PLg&}A(N~;vgK~-@9WG!P^3iI-X9y8b#Hz({|=`MN4eSzd3ihd@^MlPk8%{k#nk1#Z_* zf0ZHn*s3K6KK)d*MYTMgE_UOEVg5#P`7uh&RvKb2PV}=ViX-M$SR_D*M^Jvb5dGsmfaj|`3%`)A{LJrvKGQ}wi> zEj$a#OzvosdB_~vKagp6(ky-mR|e`pN;Q3fj3r@-45}E~JJMIXv|QC+ACgJWr&+GP zGFHmzyFg!5RS_oAtnKPu6IFWsJN;BimZxxy0_%KQ8Pmg5AKA?}2k2DJ9yfRdoAQ%2 z+l)YS{#G)O+q3i&4ZOaVh21mUnvgF{hJ`sj?np?J*R;{xr?w>L3>TZi01fA^BKgJbAdu*?qF2sy_iV*4) z@}tw^czzyFdvG2W{oQ03&HUxG!~qs4@btEBq-IcAR*3rA8Z1-CF;SEY%53J=~H zc!dX3Frxmdn=Fi?^6k?KV&0IC?={jv54l|sdOej$VYxzCrqWm$8gIc)iy3iTzHq=l zL3<&1P2bM4X??9#$ORuEFs3RL8=ygEglB{((7a({XcEYH)YHdsrHv5nmWCbX`I?W} zJs-w1;?c~+QMku@b-^c4hC(q)mhkq9cg@7KE3L}_h6&jjdFeS6k>6U{n(R}C?QO00 zH86eZPjM1c`T%qA8wJ4 z>cx86%>$-ayJ)qWGz59;2F#+;=*R~>Jf{#L2gFQ~PP7Ja=FFu}bX&Yt_FRxlsf@wp z(%j4xSA~q=gTBzu>3~(Y+AzJUrDAn}*vGE=p8cA`7e0_gFXye;mW*lF z9QQ>CKC4fTpTPQNMY*D}@=&8Az2%nOClF1H$}6+9Wm%{u4q_yfACKzjnOywh$SHoZye!P^Su+>BF6u#1$f(5XM=ja~p#%bF#QX&c zxeDBJ-B#@0u@Oxz9jLACKv`)6v!>wFQ&DX9!h-mPIj0vW{H8EBGltVA58=`8e;+Tt zd=yE2KDM}o#c=ZFB%4oR6~~R&H`H7I;OA|1+E|dq6Usl=6gp%>_=`MgKs)IZ1z&Co z;}Zr)!6&}=i6YBWu|6_=5>--9=cTFdX$^w!ax}h+{-F43XsGjZG)6$T=;Cg(JFE*#*bKLZw~ zmYBn?8UVp!aR-JbgZunYSMB`gf=})AxXR80_-1 zoO6QAPP8)2O`aOQFi#22^+EC1SnvfiR$M^4h-y+kj5TkVh~(jJc=}vIthS%e9cr-B z&pIVLNL^UOIPT}B&-zMcX_-v3WURktCNZs+3Wf8-Xsyr3`#$_ZY~6haQj6u*_a4`m z8Dcfdk1p-uNNZHvOUbnBH*7~kbv+IrK7yI#ESD$#X-A=hGmVw6nbWv2)Ws^O5@hv4 zjThb9E*4Y%Mrcb#`NRB_fArE?fiXRfz~e>JhC? zbYG6(i`@U3L1;=ARYRiu3$#+9DTwB44^p4Ctab2Cly+=nx8<1j7u*yRd6=2J*a2ml zeuRMLVjc>a$^85TrlyXeslEaot?QXn0T%M+k;P+<5ctc<)#kSHII6PevM11*g-0fot*_$rV)fX{`w0zjyNrdvKX;55eBZl74h2^RyZ zPpp%d{n|ljZ&)rH23}c-7Y4Oe;6mN$a6TjjvhihTQd2qPoto+bG?W5WMMWqps6_cf zK1vp57-y6#f_XdAA|a8t#QqOAkkkZ~syn!gwB(mnqq?ab4NXnxY-zymP3uuqz_OXf z_)z<9Ol0-39K6n1kliZw3Ut2GK4CujTGWxyX8qY7+gqk7VXiT*JJHrYf|bLI@h0O) zSSxNs84|;69_^Nxyy6(`y8CO$@Iv-g0Zok+@fIVvc^UAUYkaCutd!d1+KUCa5LA$* zp(SIN5z+)xu-bk;x91T3yn{tBqrOZT{D}=^Gc{zDliP&qp{RF~rDkwX|C8)Gch zK^z|1V}pf;+1WwnpdamKwX4S!swig$l@`KymD^Gg9P!kL5ADl4ztHDZ*&&`-$^z-(}o)ae%->!zT=jLOSv!H0Yzen-@ zkv&&PuS}nX=#F%f86oRdSfGtvRF;GZ{g>0IC|yQFO%ZB}@=(P1#iiw#PbM)pJI)Dl zg6xz){=z&83n=tBN#=1023pFNTxV* zbMBMy5=j(EjAlHf`dAXX(xEnZJ`n|OhB#(ZpxYG~qPd?ra+r%HX=aWedtOavK^)kt z{iEAL#rPqf%+-EB*dCwfYjtr;Xp`(32xd`8PMuV5H|s&sbaIK(LC) zjP?NLT&Mz^8Gie3cgS8=S}-BqF($LtQ#CO?tJsH$`tZx#|$1=Ay#TObOGmgXaq zmi~+2DZ&2~!I#naSW7ifcOTU>5k{shLKSWul1(3pw1QZx?B{YjG2ApMXHitPQ^~bV zE;G$v;Q`HVi5OjWdAU0lBc@rHo#XPM4R5>S3Jmt0!s*keF*P=V{!^#1|M{oz+*1$X z=>BIgeD(-xs)|umUB!e2T&5IJ_7*Z*EkCUimT#Kw!oo829DN>RgT0trEFgn&87q1S z*oIIm^Rv6R`qR@WWo?##av>P)ae&$oquor4ue70!23eY^AhTOOEK_BNd{kEti{UCK z=HY(lG~HnqE5n?xjmGCSMM(gB@}3y_JER7-RxSzJhio%`B@}p6BrmC zz+iu$-NBXME6CTmP-=e^blUcyYUo0bLNh%(iQ&F8n3~}#f*H=v6=8x}pDiB?^qMah zOsuW7UoA7cY-+ps-fAxv4E!Woke06Tc?zR(v<9bd!Z@I990+%y27Fc}Pw`18_zMeSz zD298EpuD&gKI3#mnn4vkV19O5!Kfh8_!m$_8VTbic^n8w0fg7Pnc`I#w7qXJ zctXqC!0cukHL`ioG!I?u&r2r%07@*we4HQums{%E>_F5Z-He~LL`3pVkZ^H|d3xpJ zQ9~NSYWum|<|RThFT3xhnU+PErX-}@mU2RiDtjcn{6s{es;BrSbd(pDAgM`g-`;{7 zZ@dMir8TIosYhqWT6Aw%j{x03BEL-(cwOr{(AZdy2IBUu+fZCogniFEZ71%l8=8<} zUIkos*mj57&vLc*n75R`_a6K^%#4YlT| z&9o@bKm$R>u75DCITogiRl>}STL$T7GqE}Nw?KD9yUv^09o!J4lrbzDes$Vv5v&mFn(P0`xPTgd>w&s5B?OI_*@W~#+a?`0S+jlj8*K)Fg&f}d|@L9VQ zUk-JW=O@mQmu2r6yPf_^`31Z#qKWNnZ>%IgRid=00+r=7%S&xvtblQfDfEi+i%?!t zj+)9^6qlA_dOCrg)4e!*<_vnzp2nHe$8q}9ahy4M9Mcn{SXi7h+O)NGbF!|+#PlGh z67!gvUbLr-Y^9~X_G+?Dv>RhO-Q*v6OZ=d5YSmT~WE!0q&Y!R7l%06i{mjgu(kRT+ zi{~XaZ2}@MS^0EZzbS8;x~V9CCDM&W)gq%f5tOf`Q#_)A`Ud~0m%5?C8MpmZd23T> zoctIryP32(N4kGb`UtD-=W;t^hP1&n2v*fYcEz%a(r)Q2z1#{kPe!mvqkisX_UMT1 zUk%=ZtZ8wL+q0-LJYT1u!bJ}gZe%+1%VeF&$=}QV!axL7NMSVdm*>&l)`0q& za@4i7psubJ$+-oLPK=SS$~j0=NK7Y@PNz{`M!{E8i^{4>%cifl52q>kjvqgTvuAr~ z9!F1aFDK;^G`F^*rM(L+t=;HcyMasIarE_%V|;>xo^9bg$|~rdyV~NyEB;hZnYIce zSo>sG9GarL1wGjjEzHT`aV))p4HY2=t)qh}!!H?dmsAO9ddgQ5ifF2d*85RN zUt1wc_(p%<%TrXQvwEsNvgwG;%5r{CxNMEj1f1$5Q+1K4N(H;q$4!f1=nG1-sF4<= zYt|I3wx7$bPBOPHveFU^>o0TD^k{YoSFeND!~G0JT-IqZox;w|>u}>uH;_t|_V$ap z*(ow%l5U;No5P92&*136rz!B}P~XtOS$6}#%wA7JEdnq^uO_g=O^gjUcsD$olHwsq)uyO-$nLT#a_qh^E>{ zo7)4J@Hgkm@C+&>*qzBkJeh$wF+4)X9lT;#G-E$R+RB+5=b|*eDz;zsA^n+1e?zOA zUvly^BgcK7`UZQ1^Z8}mva2A|323T8nJ|xQ)<|Q+Xt74q6gVX;z71TO6n+(@1z6wJ zg6{Pj@#!yo8Grc4pTQGP?ZbwRT_)s4M~1LS4W+oGm=kU}%FFc_-xB%;25|VuF`PNu zhv}Il<|zzQ3n^^ev>xl$Z$Mpb11c(NY*nE$$ESvHjDmDvaN2lR643ZbKZe`54H)Zb zp>o?lgh#&+$AZl%zHxg7E$&J?4Ks7eXr2a6BNM{Go{3}$Ldcg!h0g93rg8H4lQ{I!qsA;H zrA1bjo{>y1RG_J?8#A*N`262KhQIoo@8a{Hx)%ezlepp9JMivzeHib!`vbV)y1TeE zz6$k?U0lvoBfm&b?#@xD&XSORmp993G6Un9P>6nFf*`muK)aF18Cm-zZe~%bqAA*~ zOz&WEgITD(DY-d#3Y1?+YfIyhKIUO{qF?ma1MybpivdM5WFJHfFJ-teD9**ido^I) zbyJFM6zcmYF5md07H+MUTW#e(+jcsss+h?-hhQ@qh50C*D5i(+Dg3Id@!0pD$KQYD z0bFtQ9^7)r4L11|6qH~-wSYO|FMvzSEMp!=5sWgfT3Q${J zi*milfLhR8au&;rOg}q~xtRnf=>_t-4#e9C@IGXntp8{+&QK*)SJl|8ilZBAYL|RH zj=Wf`w=)-6KcA#&S{lYt{8h+{@r#upKb9}rWFXiru1x;4a&*4ugs2xV*iv1UP{8Gh zuFFf!%BsF%1~Yk4wXI$u+}fc)^9W#(+lV>nJbQ*JsJ}fRwql~lh*vK$WojitAa-QubbCKcGT*@r7wYN0Sef3z;|23v7|M<5g)v>0#y==n ziTsDOG9z9P6z5{%y&ACYYDYl*RJOM_v{Cke)^<&((a+*23jK5kKl+)!uB;yiueL}Y zdhlUte}y=D_y``j|9kc}pNi5_)K%Bn`y9oGyc*~!i7B1&8yVq*Oc9q)K|piOnl)%> zswbaPAgExbOU)&TvlwCA=|sZHwf0vr z)Z9fQ@QcTZe3FaNUkPG7p*g$+RnqL21D7uNUZwm?%``T0HRgt87?J3NB9Y`xG`6SP zOm(oF!6lH7e(tLT0aw|5Un36-oP`$_hVa-U{|%2m_y;(0^gEbL3?QG&i7L+8Bf~>D zdEz7)w#;5hRasTRSyqo4mEt`=@nN*JwIeyZfFF6^+pxBKEtj=bsHkd2L2)CNiW&f7 zMaz2BH8e9_%4%wNqh(X)Uj(S#Zbpk6D%{YMaw1wVnJ$!7d#D+pgbxSfJddwvv19v=BLgwwQ@ z2A4x~bMqLTm~d@uF^$RbBv%wkYHUgJ+X6MC0xnytP+C$>dy&QO>FGsdV>7mI--)$r zH(1QT4*3^Ah_r32k|hdwvX1t7BQ3f8?uxMaZ>3%7cUK}fi`5$dyMh@+pG!JT6l zadHVBrT%J+LQbdzQj=vDHSIzyDATvvy11+5Sk55h@F+Ga@ zo)@q*GmO!J!*mZ~nM;wiYdX-;*@mIvY4i{DqrSc#W##2aaJjKz>rM=vK8*kJ2Y-x? z_6FR3+YLy~&a>=7=39#85|X`8_2z(JyHi}A=n!*Zf%f?HcN%(|qnSlDhPL2V+k?Lo z(M^xxVaiWwEKi}b2x)@9OhfM-k7s7cV+ATqw91CdF39!E#ft%@U5%=f498c73sql6 z3@H1BAjFSt76w1H&3=}z%G552Zah&NS9vDfB*;9@c`>B5i=q87OChHHIejH;evU#g znMOlxDR%ALhIQRtEMMQOE=DP}Ki#b@Cr^!xjH0|kf~}eYZ4@(!DYP^-p}e>R3*@We z{vp#GPaHc;KAYikcm}6?dN4Jeuw|>)hy7xFO&be|OK-QcZYo&hGaASeXu-5*=3sQo zT!F?@GK1aBY?#JYh9}HF>*i&J+c6u5myoB>^Sd0lWWlEyMB6Xcn_3>)U;6{Jm|!w5 z^K+BPxQ4Qaw7K;ck!=R0nQK?Wo#B*#CTC5vv-+B0l_zDOf~;I!ED!zUNpq=yc}dW) z(n8;t&;edIZBd*tDTMNh(0^tUi>XCy?cRm){&`?-2I-+=SRNZeQ(YHsz4>jZs42$T zzFs>%keCJP*X+dT_yE5A`9DHOTWUL;HofihsRoF-~}pp!u~Ga$DL46|$IB?TeK{E50fC^VKJT^WJY zvFzeYAvMuZN3k%wMmiIXIh8W(`$df3622I);}%5mQ2g$#Dk_8CnF-HP=fd#hFQ ze&-_dn@-H&rkid=eN81QD~i$DRE>fDvz#Pb(bCd{(z0?2Jz_;A`uYcO`0z0tId&X} zj~r&3m$80b2iA71!TPSX*wnodTQ+P#N81_6n4ceA3Cj`K*0U(kq&Vb_#)QWB&F65NmU2yO441vzWw8-t?Eb zwCMB|MPpc&pUs!3Eg%i_Fxb@=nU?{Vd{?)zw#@2eM0M(#-Ih33F$T-7AMJwRa(77U z&&ASCPjBoiAr2;i#}4s~VMFHXq+rc}h@+_Tm!uA$cv+XbW1T#{hI|obxCH5HtH*|} zIwTYQn42BO^wbd2^V4M52DEpsM{zk5&P}7Mdp$Zf--N~46z=)#A7J3vGuY8xkG9r2 zYJ+Q>nX4*M$fa&!VKtEE5`}e|7(R-x{Qb8uJT{Gd6MSli4?3Af%V2klIe1|V`_mq2 zBY)b>R21`64ARL4vl2KhP1e!O406lDO|vV#=&Plg28=wkTr+>hvwXeJa{Db)U-{FF zVHa};uD-_k&v_{3PXzG+9?}qV+op6zD}v3r z2C{g5E;v0PL^B%MBqo2+i)AdN=TTg|j6J({VP;1DA1E_p*+&s1jCb^WoM11`1=K+pGb>EmSMas(fq*}^F#+K>XxwaHI*oZ1L4N5bPWSE6QV0sZ}b*mBJs`1ap^3ZMP+Phx6xj7yYZ z^bPFC$mm%N5ho`5(0ld-meXUXswzW1m%GnC^*wy=k!O(Bt#D&LuX${**EdUt7$LB! z+084&_b9>B9T}@-W)8(5;Vg{{FnOD{9w1YGa0{G%xqcd0!RkF6AlO5o()15pm`Q7^ zi;Vsum0!)!#oaQaFv^10!`pAQG&}c6B|n@BogDye~GJtLTp&S31#J# zIC|t5HNim&z)AL&P7EwzCOJY2mf1fr?qL^z*HrK|=03S$(q4Zjq*a{%S7>}8Oeltsw=_O+hS{A%R=|q* zGzA__{!T>q7lU~?J*-?s6BA2JD89f1Bu#y=S;;(a7mfniwX{>-%Ou!_^<}v6+V#}< zW>H$+iMBNxkeC|5$%D_KqP7a1+pa==Wjh{v@O}*Uo4P|RdW1_kGH0v<>u5i$F!fo^pQTwTa;8*UXH>=Ke-jd^N`&XD#Z=) zE>GigyPFmzxE-@@vjumIn~fuIdyMOXKyG=+&zd2sss4tvTNH)oo6z$BE#c^Afl9@A zB9lk9II>D8njp0({$9DYoh{h8P0Q0(q&bl`kdJDK)zuZKt*J##T?3c86*zeKC{Ca4 z!M1HXO$e@AzY!JH_2^o=0sHnJLr;Ga*WGj#60=Es=fMZ?)N{|{=p8&3oP+p7^mU)yyk*w}6C742 z52u}NaGn(p(vS7(yNJnD@Y+cE@OsV9OT)8BC|2 zjCl02j{}(iB*FCoA)DSg!f}_tpg0bGisA#H3Q*#5p`;E_Fe542KHf}{leJl1{bq%`KZ6o1JF*{X=HEVX` zCw}Ue@$pamrrq8B%;&y@=bk@E%}+NqLVIPh4q1kXW-d5WKeYqu6Q^v7BHq#+UdkWF zO{1c$fPBzOB}4m@i@5HZt8mLrH&GaNQRA(re;G>3N-&*FV3JGWQ>RWNwUEY7{?t#C z7uVscE3e_Qc0HH6No!?GTPLo&@kX?DbWq4uVstvqRS9cBP0vMy(@R3b&b6vNIViW< zCUbSz4~kLgS&6CvYhtvFs3Ol5H(L)!>l{Z}brC(y=6;t7ubJSBY-UJ@Odm+J?Pwre$*7Az^iD_NqlPCWs_uS7}l}P*2A_=FX24oC>19Ki07v!f6 zT5WV|L%5jc5}F#zuy@aTjE|kcc(M=k%fn>2vzVKnK}{v)=iD&<>d${4|M1s;iiP=6 ztX*4&>4`y-{ z9h&17#<43ii%Obfk}oVP7Di{lmH9+mW?hzY>SJaIi}};x=4F7I`kH{MVf`*-3yq*w zNm}U2GL~03x-WzgqTR0HV!vz@kE3)}C_7rslYk2-M$ksDGlXsv`dz_7a*&-47p3Xe z`Ms&hFbGo9hq!REl4;3Bm0@VP+Jmf38(8?#{aen2}g3AvIr`h=_Oizy@otQx0{4BM#aioZI(_=`^ z2*;72IW;|unb~n>lR{N>8Lql&8<~6u&K!Rc^Nc?}(2s|{@eQ0je2Cgy8T4WZy$7+F z!mqQdn6v*Z#>SIe4&RRVeBdLv_U1cq@K_HSb{M6MGd_~S=1o_kYs(dwN*u#t{uE`b zFSE%D#Bl6Ge>1|5j&q^4-Kk+_beSpItiV7bg_Cx&+r*$e3S8SXtxjgZj30lDW;uu4 zElimh#jP)h(Js?#9_&gd^CH2b@)GmSAiYC9UMX0GF==#X`Apz-4ra(-Hp`k8-_O(* zho=?LX4l2^9M-lq;5~1<3!B%kLpwFBy;og>ANrwp;S-F>2WxI=>jICStJP8>hU z)xd;3a+a7$+6yzfyVs$ip$Shs@f2ofmrN6!pHI7>V}0l5W?ge*W4zY<(QdaiIH6}J zFtsw%Zn6+% z?Zfx(`x2@u3vuYs84M51+x}p4b1UZ4OZI45HS?@*sKD^>EC)>)c3%AkG_Tu=xtVEv z;q#xwn4Ygp!1nsOHtfXymmkH!gJ0*8<}{a0z+Acz#f3T=#7@;Q8rEOU70c$*!^bge3QZ95=ioN?iGB`hm8MSdv~7p5zl#eNaLY}5 zQBt^!?sc26_qsQtqOt`w)pclO-(Pd}E+i&Lar)FryJ@C<7JVG3s-hI#9WB_twcBoJ z?AoyflVc-z?BR#)dn?C|9;0BJu>;N1Q`0P%0xXr{WIb;O+UMpMFt^|ul3r?2Rb7Mo z?t9n-Un-TxTyly2ov5p?!Q)Rojlz;DHm#8IMOvr!6$|a`pql7($eMo9-Cheee>vi$ zC$PAd*n%>qS)=`&7oZi1uiYBYD@6+J->qo?)@6m zFW_wN42n2eH8hlVJ-yR-;n@+aU*CZ+3bbU;5$~aP;soj1Et7={o22 zp$em;R8>_~C@w9*Ofre-WC}xELClk-^{{?NTQkZ^OL5@f8Ef8_E$dNQmX9m} z`R$s4Abp*3Ei3K`qYojG?GdhnGbI4O9(Gr-k1{2y_UhAzSVm zn+OuZ4QSGfe*-gf9PVa((p%|OQe-F=<&iY9yf||kb6P!un?H+c^^D~zNp3xq-t97b z`!75@*VSl$O1wisr_pP9Gfx&KF(jw5w0td|(?%fE>JsDd7YCKl?DFF;=5MrMT#pwg zX>Xymj9Oa}QfR5GKzmyaYmlTe=qgGYI32PCB%d?ms?8D%hQ-zzZigsj0Si|i4UCYqj?^6@+)in4ABqF;=kW2b4n zt-6L%SWS{vOUAdlb#JHJBZnz*7%@9>XG+txSZ(2I|ApsYt?E+6Au_ZAkYuG+H^qXvu(j;0x6NjF6!4_1KNZO{g{ z`?*`cm2uRCq$7oZX+`u?zVuRt_LGNXkf)WugXa?B7=#+-#EGD?FG}!Li>EwK%O{`- zINKkhJ)?PK3sM^l%*$F}e`|9!Ii5<2i?RRZm+_Uaehnv2 zox<=4R~{o%n4VccYB3Kf^6vt1Hoc4l1>sC`5%Uy=?d@yu);HaWcf9=$+;YnvTzS=I z?AW;$UF#Y+K~S*eC(+L3^Z10`vOF#hM?RO?MR_IcTULzpa_(^SG4G8KXG z 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 z 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 OQh2K@Qz7*s@c#h|bL*)9 literal 0 HcmV?d00001 diff --git a/docs/assets/gallery/image_menu.png b/docs/assets/gallery/image_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..2f10f280acf3d4335c88a34a21c9bc1e15992571 GIT binary patch literal 54559 zcmV*kKuf=gP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D)U-)NK~#8N?0pAd zoW-^EQQeiat6pr$w%m<-!wrL}E)-J?F%Iof(x^#DC6G=+@{#}{l=sr$C4WK^N*di% zV+R`A&aB_pMg4Y~+r`ob}!5^A+tJ-#ayC;E<7Ru&_9as0-9O zzWtHcyN|m2ig&Bq89sli@ut=nfcIg67MNmFis zZ_am-IP@IE`g>b~v)CWEX?9{QECg{0@Z=4(BxiB-ajZy=eQ-2UUDW*NaWw8&j~F#rbTpXcZ?mwpH9%lTXrO zV@+MHt>)fZB~x4+(@mH#@5J%zm!wHK7y3+5E=|4mvX0B!AKw#Qps6(u`=Rci<1W&MRh?Fl^R@ZYgm5Z{NLSaJZvrWYuJhFq5*Ub<`ao%8lCGArvsdPtlzzU zMA8ky)P5^fO(?lGw4=%m6#54~6(DgSiUv2}SX{08e+W?r6aNTIQam>d$99PZG z7IB#_VQpA0oH&hl)9A8{>z98bgsTBX`=dp*Gbu;2l0?EfG|ssoNBSLM-NUNhgwX}*0 zYN--0<-`#&_3F1<2em5EW{n0%zpK@mG&i4HKkMObXu8%TBr9*SO|@b6`H?*Mo?Smh zf&?E~o{g`8{eZj|Ms|2DU7|g&YTfilzb7Z@Bca*l8F&wJ_bxHJKMOvI>EC33Vtb#W zlWbveGQ(*o{L;>Cina)mXg}e)(QsRslh18@k+M!BjkI>ciF4!KYjp5CUWUYTFi~>j zhhbho721jAJR*{w#H%=&2(itW(DuFup zORoXx!4REloRUG!YI$_J?mLJkIrn}$!sKH;hLKFzxU99SGF?EjE5XS%+8{N;%GXO zm%=j4!)u#((-@i8ZFFwKiw;M}E1YX-eXa)PT$37DOAB3UeWw3SwKo-)v_z=QiJxJ& z&rZ`->!TQQYnS#o_d2d$??$iBXQ4#j6T{|i3HLdo<4k#`F@}DV;<_y3`lAua=agZP zRp`5R-n}6@`5T*D`swJmBxi9FgJxAklw{ZnqBVt%h;D$cOX)x`9pE;k0}1PF7haR` zT2kX&zj33l=lY{1nsnH3UD7e+WwbE*O?(<*& zb{$ELqKc+Ihj|up^$DG46gQS>k^JrXqW#hDA==+LjN>oBxBm*Te9c5+N=7{M^G2!+&LuT$hMc<<# zG{&{38FBNw@5qHQC(XMxV&1i;>EFtU*RUJ!=Iuh-+Wqq7gvG1%xMk_`y3u0dEy-D& zv~YjSv2?ZJ$JAVvU$kGt4jED0x?GoO zuHTKPXnCi8!X-BSXkN0NxvpCeg=9oimC34ou^-Q=uSE!}rKJ(Iff`g-SEHt;8g+Gb z2!=vhHkOlv<)bF9qm@OQq;6R6M;wOR(eBqYema+t`yk?+cS^X=Yl6n*-%Gq2&j>e9 zbbe}q9N37JtZ_nU9OIxrmgFY+;^bR3#YmlUP5$ZQ&@%-ysSe%rg zSrQTb`D+U_67jT)X-uYZ5^h6v8(CLiR=4qel(==dZdZPasn;P1AuHo|NK0KIEfNvQ zFNy%=PP8mZDlXQn&Zw!WK`tSjx>KRP~O&!d-M*uWh9A)Eiz zO=BRGRM>zd%}goaPu%?IHH{6$@e`fn2{(-n`}|DUX*A;3#?~n>;nwA*xnMXtM#Cf& z4H!aUfHCY-i;$Z%R+1AnE*&A2cxs^a_4SBPjK_>K&%y=gUxbmPMxl4FJS6-4QlYum zriKPoR+MA?hV^*stvB)Jo3CSU@m{3*(-0q@sP%LC7vB|0iS-&1q-μaDM54#2q2 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%0Do*rhjC== z!EoR@`Mk;S#yLTY9*ba5NI|rWf}CDRPfA91Y8vXBf~ah$MWPT|v-}2jmRDhKbrTvy zTZ>Oj(gvC(){-YVSxwl+rZ!0nBNWqyq@KFG+(5)$&j zE9NeR=ONFYJqs6Ha3OZ@+N&e6_4W0ruBt*sX(`H!i?MIdF6`O04SRR(z`o+$sII6$ zZB+&8YO90|fM@ z6mjFkl;#<)^s|hnIeD~9l;4yy^Y3)Z2}Qy>A(?eE%zQdB?8Z}bG?U(SKcyc{9(%*nX`>(@Q-Y zH{NjuQdWF`oz(h<%*Ab=orKsWtFfD9#(oNSUfK`4-`k84SKorMEg_7Ve*-Q#XB_%9 z@4@OlW)JXTXIz53(tqM@JvqjU!fBtvHCJDVbEk|zdSDYamU4|Ck&h|!7U0T@XX4Cp z{m@dn8M|F|GpP_~UwtDM%$bG}snrPfo{ro|ozdX)_D93ASMc7xskr8rF$f1oWBv^n zvwmYwB%1RG7?22iiuZpp@!oT^}-Y1D%x7APR0#2HXsZ(exLY*qG>gu zZ{K{;qIhm<2)nlLK}Ag?DuXSc&em^We~cJC3XNi7Qj_6UPB}TbNJ~r8ZJP)ZLG*wD zcRLv~Y9!uU{w~VP%SBsEG7Iv>RHa544mTkrW^Y|xjgXoUrxHq>E~%oX#ckF(bwo|r zAw$H9>!)2-1$~56MQh}~>D?m#$gI;Nhcg)m_1G)x>e4U?yv@VLoSF(AGQyTqSU zI0hGe=2G}qJ&)JcdNBU;U%}_PI6S^!?w$DhmHkn*MDlG+#MCc*2cMh3A5ac1_~t#h zenKKPzWx+mD;|KWzJ4ptQ*CnyuKV`gxU_c(mb_ksis4sbW``4|4}=^Pj=ccaUEsk7 zudhIG*nE8TzPoXme-&O^vJW}u-in)NnIG@Cn|>&S-COVLxz%wv{pP!HopV<0&}+Yg zdoJmXk|nRBsA4#-x_K7H7CL{cPVcUM@YVSG7te<|i_PL#!qXB&tB^pvXjRlY*e{nY z#E``0U7`r(@wEv6? z=wp$dmI_|aRVh-9 zO1VyrXl@O4wWzEt#V*n6iudjje}(qPRaZ+sxxXMMGzS~R6i&h5ApSapQ%6xungbLO=J><3I=x%Aw2qrqkdXT;J> zEMD|8Jh6BUik`b4FRx3%z%c`zG#68F*~~nwfAT*3S@S)D2j8s2q`4OfDU{)bN4|}3 z|L74sSF{yH&%T6p&G{HOREkZXgUOyEJTCY3cF|%ybN?SvRA*}ZNF91IBAs%~Y zCww(4@aX?7M$zIY@Q;=C=v6pOv#tE|PjJ__&3&y|_ym>~_d?%Om@*x6CVNoyIMa&o z_OtinkE=p3y(Z?}jW7Kd?seYX6F>hOHWi$K3pzi##Zd>fBJSuLYL>r8k{4;|sb~&{ zL~|1I6O*$>%tj7IWC?LJ$?rYIn1&6x;45GDK(;iklL7W6Y!0@?m<~)4azEN(GUuwvWmo3h4QKz zam6pD^PXM1uw~0eloanpARyWuM|^|zsG<2P&%tm=G(H|O%@J48AmXWt1cfk$PK$U+DFv;z}`(!XRt2AjuN?#TwvqM zEokaL0^^dVVo1hzyz}ZdQRzlwK+dTcBcH{1w|J%>DHSDAC-!d=GsE$IBw8W=;kQG~ zmguu)BghzpS=ZfzA3tEuRK1{|6OT;zQz}rr$_WZK$`95B-<@ah#rV10^TU*%&c_I8 zMEgCu#ZgB~*mUAk^9s}k)Gs`si}JZ@K@3C0x5Xk+Os@=|581v{#B*OJA(IS$BGQuL zgyf_=7x{~sNiA;ux^+5rgpHchMmT_=(>T}{6_=vp-$T5Q|0RnquFZV|1o3dP06 zV)B-uuC^L2LUts<+CZ(Y*hooELUMAl5^p5<=qE?9{}Jw5J(DbK|+DHc2%% zF4@wNQ*k-EOAU>tC?_YIK05aOF`oT$PG25fk#3V5&t08y<_sqUJz#p>y7embyI>yX zJ(?IdaR`$4Zi^5HZSHpP&<^g0CEisZU~9qvjJa?qdhJ+`C9B@W2G0;oJ9{v4w@cU* zI0VQKCVIewWGg?;FwVj)x1ERN)lcF6yKl!WxBd^7S37wKdGYNu&--({M+F0M)h*X! zSk24$pL@TC+itxL|K9E-$(^;fd63lJlK^k0i`TyYd)#)%?T*}r&)xJD{5pyhEshPe zVJF1t?jJ4e`(mG$XdaxD>t(~1#z{@iF9epYC*k|hBza2r?Gr0jh%VJ98XXt9w;>p6 z(vi`(-h3N7x9`yYuApdyLD3AkTEZh{8-)kwP^j&&?@JgEF+zZpikbkfSnz3l{|EPC zk7$HDcJ4z(We|Jzlw;?v671enjNQ9;i^;lM+W1;5S+WRA-&rE0w^g*mAeu!=_U^`> zo!cb;HdI!WiwRw-Bd?q);|>aF$G`a9NyGH(paK0PDEc+8grm}RgjM|7_r^Fr1GO@Z zGijz?C%@FC8k}>@_G=#k$#n&iTQtEPbtGkB{Jgtx!=y$m{@1G-weo|lh#NfzbMrL_ z?}TeHz27cuDq?6E-rtmp(`ODs$;QPJUWK*W({aX`dDym^;X}bve7K_@re8C`A*_7N zoihe;+r>nLA4y47*e>QG&n)$h7>|MJnn{Xn#EyQ`ah>+vNm}7$7(YP0M+ts0T^doc zuE?CH>Ys(-k)DF(ShXn!Q?EJ)g+k8W!gKJMX%RKgyt@%IaHgxd<VGZ=)7{26KRr~8nZn;~u*ViLS)ZjM8!J|4d0 zROIJmAUi8rl&NOKH^-y7CWtp*T!>vlbhTnGHa66WG0>tN@ifzPiiI@(7||9voq~;C zqC^AYV*MCY)>dM{HS_WGvrnVnz`>{x4YQ%S8MSh6RaJE;-c^BpyGl{IV-Gg0Sc#YZ z@pt_3*N@?uKmH$H``174;qqnpVEMaPBg#ejzEa&7Kvz+SB}Yxo5R)-2#1of<+)ja88C4Oj$-})$@q1F*~R^lzR<@$k>#p-05Dd-OY)I4ZpuFP-Py?4T!eQbgC z3Wp5Di1EWQ`SepUZN_Abm^d24#*D+zF=LRNm5w$~JZc*2QPWV1+F&jGqRqv!lRe3g z#&C>ieqp4gr(i%{G73^+ki=a{ViK`w%WnMk4}V6{`|qKmx(fBddNhfqsK*OR>*l0h z&RHWVknA|8PUpx;dV<84SCnD=sT1(q$A61)qeo*3k}G+RYuWjB`T ze=}xmM{(1W^w1m~v~VTKxHPpnu#o6ACNEF+*M2>{j_J4SAbJn-+@r@&6N~+$F@F4b zOr0`C>~x1s4uIU;94uWX8rA#nJ2A%yqUH7LortQfA92e5QGmbKKx8!U-Tx$de{T%T zY{K3h71)nLd4IW({{_29I~q99^Gl=fOH9D&+w)#}4;~w_3OD@t-zGxgNAH0?)E$R+ zXJK&bf*D9pP1Q!H#3PaQ%(Vb<(9$S=s(=^@+`mxCH9KEG&pawQ?Q z#>PfnA(1S^!POV(>3&pI2Snpbz=om~`13CxMtXAyDd~x*X$>G0Y|wr__9arwq9(;r z+tk!_G$(nGQP39&DWYNa>VsYdg=lVRQL~s6l8pvMGugQOZ~%lRwHYswZ;fb`dnF+o zVSFU45!_{kezV&OLF=2(qlZ_UC?$5T$Y6xoqd@Y@r`se)mK`x-xH9I!z-^S-PsfoL zi{p)S%>3%Tn3ujDi{AVYOJc!X#PeoZ(mA3uN%uF%&JUURp9f;F}oX7*!)fGq;f-5gAMs{W{ z_Lh{OQB2-CNAPMbOvg9i@4-aR|?;OE@z95uNDbv4pd8?^Iqsi)7tm0!LMQV=OZLRq=lYC3WoCN9}(;yMO=6CwCns}x1rmgqViJJ(q&WD5jD`7hl?6NbJ)#LV3lYU8ry<58 z8fWjm=r>@9YETN2n}Bopl%Wca*j z3pOGzFBb{EM5N~Vkw2g}S{j3>*|8h@Hf>Xq*tDYrd-hf#H8&lVwawVMFNo%3KT@)GK+Dv;MJTg+(=PQ=2C z1o*^yYZGm*Ij#xui5}4?o6%Rutgo1;%|b4vqJg%EHX4_dsw7u9a41@Zee@$YXT)rw zPJ%NeCt92n=gw^jw;9b$B1|43DWj<|A7e%2KLs9YW8#@^2$MUoD9Q250as?|nXB$~ zEy-C}9D9t;;}+fGVZ-HeBr!=_TbiA1&$%KY2L1czV^IG*B*(XjMpcDyC@AKuPqeXg z_|p>6Bm}5uB{Vc+-{$S2UHK88oQfqytFV1{2~snK1mQt;PA@czS-Y=fuTIkC#+B^* zOOhK1R92u(G`Kv`@R}s{{Y~4^D1q<0y91Obd(SfKY7( z5;%F4W)=I9gxI){JyGIXgsgP&xim;_R@u@l=AktD6d^ehPf1B7mapA|p_z&BCB$Oy zmR*Qx3}f5ot!NhWx3a7XC3~yI6y1w(eGM|biKyJY6D8X=qkdnBP)9QYfeJKKmjX?7 z=$Dm>>?AQW!!78YohJknFB)Sqn#1+FI6o;V9ywwrCnovf^=Amd@sJ$Rp2W;1S2xISY&9fTsE?ZTM70*!Xnar4R#2jqQ^J=bQe(*@3$H1|cPh5VC0EQn9*bgqxbtM+hu8%Zu!6AAF(} zHiqi4cl&n4Nge*gWCTj9l{l-)s}L(>#XiBz85dnJ2eW3+ zLaLaUd-oPg18&9e;lpwDf=}xnZPTVs)=e&V@7bf|$0G)5)=~Q*Sya_GV_ZQBHi-sD z?Iua*x&`48jjNn%PQ@h6%}hhMIVf6^kfWH1Nn%zO@8fc-dJG*l+%$U8$V3Ojp1r%B zZInnNZAeYyj=@r|5MNuI7nO}bSX`ab(b}wawFXL%#&KdWm$f-WsQDd2q`0Kz5}Au=Vl$JFO7wm$FSm`GHeuM1p}2DX6*`}5{f8S+kYAv4QK_YI?I=ku-op-j zG4;Y?B8mnyWk3dMt839BcA`(TCTZrvQ1Loa+7@mT%`6^uVj9=g*P$^S*2%dEo+N~Y zAL504{FxaDGz4_@K#N>A*wl!I#(Fd~)CnQPin&^^bKzPNJZMVrp*e;J?{ImTXjDqL zG#yDcG1@2BCWJIVo+Dk%TYqZ0_SunOxW8SBFGUF0UC|&~9m$UxY=YTIL{~%5mi8>yL z6CW$26%>wnQ1;GCne}SHXb?H)*6Gvv^4m0bC8yqsf5?uCR!r<0fj7L;^Xv; z2Mz$Re=I3EMXnh_ORSJvat2!BleAvW>*M@5;YBr*OZM$UoS3L1Mvq2bp8~ACWmsL| zk|mr3C%C&?f(5q&1b0t@y9U?b?ry;?IKkcB3GQ~#gS&I^IpofCPv5!SGyOf^4;~Kt zVY4^yes|TXs#UANQ`0dYp)=!-RQxW(nxv54-<5V2!C8hTQ4DInPdX?RLp=c_jLjxOuRVvEX#(k~j*2oEdoz z%}ha)07fx;KU$bi$ka~ZLj+n(I|@vVDa7Ds>2E=)Sz3w;%Iq3xi|>YxcsDWP$!UXl z-sE~gm>X0yn4B#|6C6uvd3JRniMdkJk!34+`4gu%eNA3$k9zw0cCzSZ@Z@Ob!rGD} zB9k+z3k}p;=$7WKhZ zK*3%Kt$8)=sV*p76dZ)XMy&?rwJ+&mzSBaPqoJ|-kr?HndG6wmO)@fmm;aSS+)!RP!SOM!9tX4?utNe6dcHoKUbD3 zDw?Z;InUuvjoJ`>TKXgw{trVNkcZVv<>vIxIwM9)>=y|&_N*|G9B+qJe^X7R{-OLM zxP!FwB+h4U!mE2Ck^QL|Ox!d^3qYQ&*FyEMTL z*V=Z>qNN_1PiVBDW`9mF572Y40fiWsp70Mac00ITi)&~E<(+SpbFLh3^`LU;?`HBh zKmXJWQ&}k~{w-!j7w~Qp2#btwo){+O3H%mn+GGDb4uTHI$CIpq6kOK4E zteTF-_weSLoyq)1l<4COkWN0?X!d$eR{V1MifIbZh89W_!Y2X88M0XH$jW8{@WsT2 ztIlTU1A8?lDr`u#c)Z)ob)SZHpZ!p|tiP1Wq6VU4{>&``m<72J;a=~$`VC57Q_Lz% zPrT1Ulgf=DQ)t_*3ZROtbrjSPzLvc1g^XXqnR4Hz{3aQ*-Q*UgqT*8fYiu0zU2(;4 z(V}t`@<|LHNX5Ul6!=zTB5o4*E2GZQQkABv4i;h)GT$~977orqY;cuuBh{z5L73Y= zzcv*?5#P6c;GI5;Hx#0uRMR_um=}T={`jAk>2ku8GOSYXh@dC0OO&G#2w86X?)$u# z)N!XwA=?%U4Xt|*v3-l1A0uWtq0GaZTF3iR4l=}s^u=j~qu8o+dyHRB&RpYsB!Fwp z?fr&rcyff5fk_a$HAQG3i&HnZ9O{>EIn~Y5qw_v!U)qv$ow{JzXE?~ZzOMmb*!Ve6 z@C}sjRpMhmF6ko5@v&G;E31eVLJN11Z3bFSwE=)jF=E!%Oa_lU3(6}I2YQ5V*JA@k zN|Z5zdT;D6FB~^IR;zc!hsDuyLWAFxcg_RAH*$|N=ITH;#^Xh_;lvq05nj(fH z4(!SLs3msDBM9ls)sN9W$Vl@1)yaTUj8EgY;4F~K@WZBGRgFvIxCErz-S0>3(@<>n zjNNUGyhA3xrSwx!XGhi(d~saA0!CXQJs(UUhsxu3D6!Y7IyPv<|=Z_N9Bq)0$d({ znfV~++TS@sWDGna4 zEX_Y=t~*W11Awd@bXL{a7;>Jb_HRSy-ysYiL)2-e$a$+Yf*%xozxYMmSnTUX(-h!iN;Mo$p8wwKLdLxp)bKjYbqJDgI1>1-YG4(=Pqo-&6DKu99u3 zbUI+Hn>CrW$qHKWva&U*>{s>VsVJ%*?2*EhF%g7cDHL_AT;@b3LFLRX|mB@XyH9gLo)$>Pf11@;rjnW(x9a#f34^ zSQzALQ9EQ+rl&er=&zl5N! zABPT73HY&+x5Q$Iq$GiL9As4Z$UE6h!;q}vby1Qd$-*$P7NJO_Jd-~Zzk?xVbf(PA z1Np^;{nx{z1k-23q0v#Eoux_$Z{Cm69D!X)MdeA@%w3VNC_x;*B-q+=xp~EM(gRD0 zZppyG0ncK-?CYj_lYM@2oK*2sK!92jGxJpK(&slV5P6VM`C)9Fk13zZN=uPSzLiaZ z%R3!A)(X7@a1}62wWRIC`t$Sii%lf1_EmgFH6iTLJW&L*3N*UVaWRM-CZ{#9XrD>a z_Go&!Qr|x_XY64IXBL=lyL@xp?CHdgax+3T7ZKq&DuH3*7L*$})mmOer`i$NM@zgy z(`3m~275*N%e`${lzO4DXf|dY{$}8Kp$SxkNhE|>CNwf+#?B7i2as15RG<)a+7vxr zk0!xe$BzW048oiyxoKy2?}|7%)$QbSs%dBxd*wig1Spr87MA@z8QeupTKdji&{-tMJVxNiv(1pS`907#pMK{n?K6^}VeF$+h~Ri5Qd zmvNq{nO4H|UNjuVg9(pb%re#P?Mc~|jEd8cccNZf^62D32hbOnDt^Z7B&D581S?|r z&)5N)M5Cucz{!t$^kv0Ttvclp)_ni|TP5xZHq|fRLhuPooF=JEl5gX)vY0nSNb#yF z_kQo;3{^#k8hz8!D(w!Eb{LK1BPl|=WLByDFpreKFEJVhXRGL-FNiJ2=@+n-(g4oC3L_okh_e|u-^M@X*sUJSWB{N8e*P4HFuXBFq^olyhf+wiM3Vk9_s z6Tc^yN4}XagltJh>1%wta>fwz;@{Z1>e;aiMukUV0DF2JLvZA;J)P&q!s?8N706Yb7g*)Gel+?BvAiUITOs~4%NtTB z02aP^Fy0Q6yfqlba2N^aIlXa5~AZV*41bS`q~K75EvNPH-Nsf%I?q`g5GR=JC!eEw_2JqI6M?} z6m)p)qNqaHnbUxyKRm}s;Ovqd$w%4@50!!Dm$1-$!U(u*n6EN?$@qhcTDaybVLjLv zN4nxKXyddgfS6m}*OoQhzsX0^DI@ zXQ_=A@gbW|n1=P7R%N4%zf7`_)>Pz$L`UB8rtbnfvV?vCZG@F=;`Twopi%`? ziO0CvGi`gmazfnx2aE8!C_nYA9$a~a{`;?dlN-?CI+!f(=7{z5Lvno_4G}`z+ys|4 zjd-R=H+rZ2_E#<7n#S`@hfkapID~U8(5e3$qwV5En#+*u)K~Ij@1p9ZPNBZ2ImbJZ zUC?7Gg@@i)4bQrRMtXWBmGkDru|U&>vIA1)Kzzt|mBKxq!VDqg)1sa%=-W3!rvc-e ze7ebDy^$55ChBWEkL&rf?f3TVjAeRg1>-F^l=L{DI=S!Mhc~2~?P>klkH_;>u#|Sk zjPE~vaoG7~tCsBnMfhBUpUGC<>5<8h>>yCy;sRg%tsU8cWZsu-dqBtMkm+pQe_oZ0 z+ftz2ZEdA-qyw>naWOdE!KQDtrZx4{&t}#Cke12-bf~aVxB0g5;ILs6!2jO;pSfI8 zDJ*pC(e@L&wUw3J?2c($3-dSY%%ow1vDa5ge-Z5^ z4|!crK!)6bR3zUaGu+j43p4ql+UlR*3W7%wSx7HqQ&K~^k{*#z1+VB6vc?5rhBB%0 zc&Ih|ep*XV3PUs=)vI<%I|i1k*jT(LXaLu{C!dHW!xHy=WBSRK6x6JO8^(=BTJ9de zDZs?u^<#w69!I2$BB7^M--VN$z`geabX$BZFJ&^s*a z@v0EqB{)xEw}2(9gc%M0Pkr_@VGJlxcZG&(CNO^t;q*6cQ&S|~n{Fg7kBM9y6xzP5 zG=LH{U*LvIGV&5RYZ1QJWo4g=X$5!mvbe}YhRD*Pq--gxs1WP&{eX1;J14dgrYOf{ zxI5lQ3s>-ma{UPg`C0T!n_+*mitGzvGwJ*qg1F;_u=et}IB44)9Oa?q22wv`c;aY( z8gIk9-nU?35iXKI6pV{2uJk-7z=8|t7mpa|bfo=lM$Kug(8Xbji`eF>g&U6vL9 zLpF1|dow;@cpF%Xs1vCR_wxqRq_--&`d$K+N4GD*Ii+{t zzFc+?NsqIsse#NSA1RBXtsd4$8wuO=YLD)7qZIr#s!O{81CAD(klC)89=VRj<^T+; z0K@J5r<0C)E&?Fb*|1J86lw?ZczVU=F6t9fgWQroGG7LJ*Cb>kge$P3+(CP$=CF;W z`__IDBp@6WMTpb-u8xn>e(~{DCBYx#aIS2+*6kx)b~Hj>q$+F|{?S>oVri}R_SNAO=l`?S*Yp$!Pt zBAw1)rmoRh;0!W=8GUjxI9zG|2~C%Kmfw~r-ValNmL7J-HQbW$QtY-OZq}w>==P zF7Jw>w-v7ENS&)a{XzW6tt8?1IE1?q0X7EjS7h}=bmjV@dWVvoj~699PvuJam5A6L zP=JE8_%9yrxtRKs@p=jqf_8hHL!+4-n2@JEplQ=qX8l8+(;VvU(^{x0pcTA1OrU^7 z0zi{VVpMs_*2go^nj%FW=8e^=2u_jvmAT%>UU&{^K=iCFINA3tO7i57+L5*LXVmEXYAavXI%!?yWyImx$C z10KUIps)iSx>!q5BUU^Tw6k*QUKU^@bziy88yNK&wAOz>HeGoZ0Xk1}|Lk~bPM-Vg z>^em*U0J<07StQ>rlG1p*Sl4Dja*Dmb6mDCCBGL!BOm-eS7Je?2F_96X8(mddzujvhA(*@tmSZdkZKx7WwqNeRvs>BI6s=xxYISF&wP52QPW4Qfxt?0 z$kv;kf&F9vw$&0iwNC)1-$3Q<|9t=kqv2|eb*Sa{eTFXU1GnpQ;Xys=Z_>iqb!iHK zV>Qx|Kqqk~3;-NAW3wLY$>UVgS8HBA6dBTHRPTkYJOm95piqd1Q2}hFvkKNF!*VEw zZmQPgue$ucbM#1qINsHw0Ad2&!1^qNfyhk6XPW4xQ zp!Sb6VFi}I+sTSZ+eMOC>EAZFAIy8{j&ApYLG;63P`@I|RM%z#3LU70p*mmnfMwoi zV4k%lyG-*py06k96AOIPpPf@{Dr};gsGM;hb-Y?>LO3-CD|SAxdAdrb`nbls8Sd_E z(*UP}>Z!6EkRjk9H&Emx9<+bQwQAdzT)`1L`Nfa+&>JEz_Q`DG4S7osB=Iinay=P* zCO*Q`xV!Pvm5a(Bq5HBajvwd${ZnahIf{Nlwf z(0D$eMt5z*eq5Vdlts2M)JcnSW4jLu`Vq(XnK@ewHR#oE#oHhbNrj_U?XB4u`eRl@ zaHBwF>Z@+B&nzS!drj&6yFdAF#8Cgy5&i2EUvp-5JCHDo#rO}F!&3Weq=g{ffSM$L z1|VUU=XauD%H+c}?2izJjIoxKlM|7bAJb3I5hQdLaQwIas#mXdTVF-z34#)pAQfn( z13VA_y)NaFz0YBiUHd}-6Tw&n-h$3OdK58 zp7&T}v@K6~!nidiW4+*W(Aiv$n9Gs3S0tSGT}`mcJ&G3-o zH@civE!vVxKo29`hYypNBs8HoxAPqWfsoU3UA9u`u)#GT^HwSY#!MrZ-DZuSg+ev%x;nv16{~GG-JZS=PTax;7YyPcCWy`g-eli%p!5c0M z-To+I=y41U3SqUEowf6NhqKGB10J=df9@;c9lw#$P)j#+4Bv9OpM!XT z>-9bM4qb%<0zPXZNGm0Wv6QW5y=52udt8I`WK9|rr~6qedG zXsA!?^x!~}LoS%4QCYD`%G-_c@cCbRO>k$!T!bult(US*bUy{3RDdrgXqYdD65!bv zfrzY?Cv`3MKc{&lrJ4Tuas%l@Bv|}owG^#SM^9kG$ylOVD@d)1eS$G=x!INe!oK>e z`|vmCMiK^X9gU#cFCr*ufios!>7n0MXbdNF8u*A*UA|Q9h%o?{;8dSBSpa7sciTg; zp4ei9Cdo@0B@0y5# z5%c*cA{O634+bIqD=`YPJP%}PA5;oI`Zg8)M*dY_fJ0Jfm_cI>LCJ}Xp17LzBqwH@ zj==L0`iVzy()j`+Z5a10J@`7^9B@^)mZEYMn#XWO$bp=s^8-ET$d#x;FfP2sTM);> zrVaOHZ!>-FhfAz>a&*9-GU74*3~(S^<*&O2@X{$PNgfFa{lXLbY5whc6?%znPxLW) zK$hczzok4;^9pT)<-YRczJfxS)cwayuY2{`nfn_?MdgRftgIQOug$>jXuu{WIiJbjyA2f@=Jv8Jth42sDhp(JuRM3tuzr(3_RfR9kO) zMs>mI7^^4zEg1{BK6xsiUdA*(Ip|TO9`=OX_ET0qXSwWo>-3_SOG;tdu4r>@ULA3= z2ZGRXYX~d&uP6bdLjI5Hkj{lm+pt1>ImyokAXvcDCEWQRow6q4J2uH;bE)UkD43ub2ML6$ZLUvLEz;7 z#c2P3j#nf^?E#j}B~XPB^v58;#7z;G25GZM$PIpNt0moR9vfhdXvVpHUe`GC*62Z} z*kuJ?Pbi$|B%FQ|J6ccHa=|Ce3X zz;o-uLORRSpZT4k#&qCzo@qqo9(9xO3OaEiqLfS>1|-&v8?aX&7G8{8`dK1fqc~av zr)_7;);hU5&W$}z9#zugYyO4<1PxvyQzsDupPK0*+G><>XI+B0xn3jt3or2IkfqD? z5uxBA;Zf817DXR0$keEH{9s88I)Ee!YOd2t^a5qVf39 zZR4$>gWF8N|J-*os1-(n4G4^mdnd+RieQ z^gs!=!!_uz6a7w&`3HJ^rUyL6#I}qLiun!j=kpRwvuyu#`O<*g+d9nD69IOcK}z)r zKl)q+$*}g2$7-3Io5M}l)|SdrF9jH9_DE2_yRHg31f0dZVo>^Sf`xEZl19v|r%isB z^;3Fuu6uEh%Wux>dbB#v{l|^RC=%9pMAmzodZwqP)1QjV2;|g7SR9KaArhu=h@TE* zhas^uKXS0By{h*0K1#uNL&JFKS_Jp&uc|yvsBr%pXsY#`{U1Ox3d_5IilHxzppp#q-*7pR{?Nt(7zy52(zJpgsFw)k|4$$(9eFI78Y)%z#o%~3Egjx}qGY&=+yZNiXj4=TQip^m znnbuy()DU;9tSv3_5OGRb~n_Me`g-ib0)vWrTxPsu*tW7pnA9(Y6G0(TOtgG(S?vcOT>v_?{jcIVAb(04p6CJp)^y8}7LV0Qa^4p+t>($z0CU$la& zN2$&9a3-&q?kh@IY<5!cmMgIHHGkv=B@wv1wQeIr&0pMI|6fqBVlBe{ma~Z5>jqZK zevJFdqFiW`?)ycFPM7;bx}%@dNLGN?;^H2^J>b5cp$o2s`uX$xQNU}@`CH`Svx_iK zJlihDM!E_tbWnB0>(pqT=^!%wQ&>x9`k}0dVcd}cYVFyzjrLoz z?NSSt`gZuVVk(HQo)&OIE^j&`k|l}tZI&ZcS~3a~v-Qgy;(N5za@bBtc7R~t!J>iw z$b4IyQ9*MO0r#FhZf7k)_S5r?BZ~nt#ae_}*`qPGjDVtw5;055QaY%M4eJD@G~?#~ zSp5%fMcB#S5mdJuOa=b(^|ytXl5B-60T&2m^YQtd_6!V)&aGkzFwMMcX)ULm+>=&P znTJym;KTHPlAl?1K7W)s%}syKLjVJv1)_h4rkyQa$|wqg%{`vNcPZ1pKfgobwR$VS z)=p$2qhb84<#9LcAg3|q3O-P6&>D@9fkxLqr#)+CUff?ENm!LD zyveIwQ+y`vp?$#ki5exO)=wx|;8Y``R4rnjGk>FW**oOHnjrY1L3eU#B$xTCti&3?vGeUPwFZVb=9qO^`VQ zURt0zFO4=nERkyj-vTSvJ8Uw2lIto!b*P@no&)b>@xS=6%N_5qLFoAJ{z>h586qI8 zsHu6FCmdSdT1xc&w-7J4yRRxGty)&MSaVke_jiHpz2CE8?|b z*z+I#(6nC9T$UfXp>UDd_sw+ty@98BPv?R~3`E7qRPHDEcvZV%D&>1$A9r?{_0v8~ zq8p!r#3t2JQ*Sn&I$nrvY*^>hU%RUv%kOp}O3&AAV?D+y>8x-`Ni}d zUhI+Y{OrAk#>A#eRUND^H0ofq=afeg({gBx)LXv?MeSX%;Ja26y;GW8sgH^J5}~Bu zo8-^P%n}~HL#id(I@ABApPad`54caUlXOx>aa(Kper7D&MSRlYviDbwS)n@K3ytW( z^iS_E_4$ouL9fqQ`_GpTJm+_kx3j-2O}9ePmQ*7pu_exAad6;-8>FlcW_}m_F6%ns zcem|9<|-1OFO0_HHW-WkD`K3Gki?UZg8saUhldY?^s5m9@*i_m6#+&>G!{gP56`D| z%ftB-YggrhQ7RyRHjo*7IN5 zR8JH#_nVI8rSZzjF0zz^CBhEDlmI`|>dHOD6$+l43S_H0!o;i#AWC;FjQi8k_R(}-DtJK_n&^~tHdIZviw8q_p(&Y zY~_Dy{c6;BK=~DpbaUi_JG~;FuL2dBtNw}zuRWJT^d;Dwz27G}b1?333#w>HV-SST zXPZd`nq_;9@a9LySK|zGL9=+wap09jvlFOlbAQZfBAJ4`#*UbO6?l)^CDJ^euL@~r zwIVqsL?R<4xyeyw{@ME3k9t!_q0Ds_e49my}fZdYzbQ$~`frPCbvjjis=!;>CW z+8Ki(da(t6fn?j&FGdxfNV*T&T)f{D3|`UQD_t!ZQubg<=fDr z{OAf?7u%@4WN}|oG@_Zw-f9zb*_oXk5aoO3{->(dN~W-ZJ_IkacK=so3WI+63+p@6!EB$@_l;mJrNVuDjL_zG*lWvaja1 z+EVLYD`Bn%YHvVrVsm8jdAteH!E%=a5=8)WoC6-38vo@<1}{ajZ-x>O{~&Bm>)m4 z9M#X7YddkEjz9?sy@f$#f@uoaAhDi!Ipqm@YaEm!1YK~dIpFFwa5=)(VQr_;jf$BKGE{*1 z2>Sh)c|_qP<^C2@h8A!QQnxiRwFu{N*j-;V&GgNxU`8~8S-9we!{cB@^F6}B#PnZU z+If*sVMgmxNF#Hbb`FUdCTIR5WDpi1W(Q;RyJ>wO#4-=Jb?-ZXXM+Xl#17Z>w>sT# z!|S#JgT9%Q!5ZRVQxk>mkhh6+O^Jy3^Zgs*Au_mzJB?j?N}BKDeV=@W2hiOmEO%!s z2N=XzoNF$+L{Htcz_(Js^*1EWS@P544>bx7L^bLEXw$y_b!>&V8k*ubS?BT8wfWT^{!$_+{VSKf$h;O z%ljzXq-Sr`xNhG7uCD;Hq+Cc)d3}wE8lC-#89gg4quymDS~`eOP*9wBdftuXUvkmY zH#0jx(%lB}#=besx_YVX=KQSF_1>oW*OFu7^U*Iz<=$&v;M@rR3mrt9B`P7cmOEGQ#z*-~S--x#lrxT9f?5z!E9~J;WA3L5 zczGH^L+}Mx<%q&Sc2x7z_7Wh2oN>5sbOd9j(&vw?yto_sycudkyY=R!@}-;Ec{W5O$P}c4Xw5gNQhvtmm~8!wsAGpCMga)&|<0a!vB6i-l*fY|j*JUZV%t zS&QSk=b}z#k*Wng)E*%yl8EsLl~P{_@TV3jRLs17;KqG>N!@n*iTDA9R+!ZqSqE9k z(iiRcJGOnUc$BEw9%66bz-1SX-3gHq42%Ii_*Y9t3WB>PpCbn*^TqE3GmrZXoxFwU zfnn04?kLo?ei;X-b()=!l`B2)4rzCyH;K6HCXYwUwP{{sL^oDnuo*|_LWj2H!v+9x z<-U@OP}8QL4r!40W2rL>k**~_Y~OYi2N#lptZnCYmO!rpdT7YqT1O?QmPn-Vz3T0J zXxNh#S$L04m21)OA(5l!7eB%`oCPP>6OTL(os;!g)yoG0S3frf1=spDHJ<}TaBV1d z1SRas`Vrdh!$$jgxNEL8MX7XpvyV$hTWMPt1qPpSgB@|1BQ|u&_+)RLByQ^1EG^9I zcQ;Vrfc=4(xOQyk&_CL4dF!8YTIU4Gm!`P48gq*rc1HS}1|>bNXRWUrBybDQ@djjSdUK&F@;Wle)KC{^shL@RiGcKb8C7XM_i~Se{nQUjz1DaKl zEmkRkZ%qnf=)^rOizjT+!D-YnglRtE8m9Cg!i*ah7ev1#1aI2gsT;278{5I*Kf)Qm zQ}5?ylv6kw%`sM}{TW;mX^ z;ftuK!SpO!EKf$$hwk5Bm6f?-hU6$IwDl6usod07(y`%^`hLd?Ey(-v*r_yq6;+NT z42|(Skv*H~*yp$J%kv1O7OJ=Ty+r3LbOpV5$0N@O;E0^_zS1g7T-hJekQmX4ob>g8 z9fuLNu5P*%+oNXtkNbx$bkS{?DX#+O&-#q3l#oUI`xRz=68gl-Dz6E~r>UJPf=$NNgYrrZ8n4s9on09l<5v9zuAU21c&%rfE{<|w z>}9UD?tcrvzO{)QP_DCIY3#){J73hn|6adKC8^j z?Wc{#SqB=O3_eAm?oD&Fb|~75TVB7dgVBc(DltjZX~&ahVBA~($>Ffmh3a_pMgxAL z@#xB)>p{@wpz`QV5JT_s;WPAZv9M9)%a)g1OqbS@oF$d0J3*jUG)eg*zq92oF^(nB zvF_ZlwmPT!`t5+!Vz^DzEX7$}bftfqSD~?EaDQc{@hY()fX}{?M@0 zdkSSp&@1dzr4fbpOfwIrz^gXW%7XB@y%QaqAWIN8GF(c$lBGFnPqIpSNsJ$-ye9Jm%R3{Foa3oA~xNKOn?0s=ltux^j{sF=G~H& zqqcQ&`re2xEGbcNU7_K2vuLVs`~h30Gs6Qvij+UdL%kiccc+BN)dalR0Spm7fA~Up zE*NjpWhJoZxy{g5GoX$ZuNX1FtHc8{sz3C^6{>s?v4G7%XZ$U8A2mzO=~daMw}{2bY@N)nf%v;9?~8+wf+BMA9mV|SU?ceA|3Ewumue*UusLrN9{(a$}jCD^elHs@UM3>5{G5@{Pd*U2-sl6m(wqK*siKmXpTD_OXEA7+ z+tj^jU}R!^&P7N__*3;889iJ4X+_f;26gNZKmN2zkSHu^oGZQ^cY3p~<1E|4Cay)Ty7o8l}sU%_eD6W;r z8ey&~P#ebT5xrRW2LZDIlc1VtL%#|_^BM-U+Cezu$sxKOf>9tkw>vowZ1jLFGvQ!- zJON2Xl~-=o=kckvs@-0v`cv1z5N7}7D?8f}K#+`UssGY3Hzk=7$&P?PC_gRN%x*qe zO~7&sx*FaA6sSD+?5Z_(FA+0xivj`Yk7I!E{_LxhNLTLIP4@smY(j|;E`Kt6Od;YD z<9E78x;cIb?6|!k=!9ESAy?>{pT{j9W2$VZ5z(?Fl9rL_tE**SfFp6PAgA!lO8!WF z+Hb+^5dbnk#}PN+%(HodW)d_N*6L?$L4NnC4`KBk9zDi$-)C-#) zS0N&`0qGgW)b3Lb{1}@~e{;%>N19PL@1tkFU^7(^s2BOYtU4R&+f1g)P0b7zhvSmu zU7e5+kqt>!(#YAg#I7V86$M@o=zBa<^1v+BwFcsNbhWDQJVD8JRyWDd_u>GMjbGkb z8+YvV`^%RL3Ysvh6Ms{^4QPigs(kW7q`ek1OiqD~0APr%C@xaxV`#aSgs>!AE$>-O zR?@h*c}hrRWFM;FV@Qc5R#M8SxXor6S6Z|EMj;!Q`@*1oEFI3*;?@Y=hUYN0Nz?P5 zn>D-THs*It_u$j>u6wSk?SUFeN$#KuCZnEg32!fKd8cmgv&k+qs`Qn}id@8vRp(D7 zbps$nShCB(mW83EoM`W$j$qTSFKU6vOfLaL-&hu|pQE|s(IWkq>p{20`pMivmL1X8 z6Wa^;^-z3*cY*t`=rNgHo_A>5Y>tk$*nZ+g zp6np%n$<9Mx!V3_6j5VmKFst8K1A30LmK$IM-KgI7U$8Hlfcw#G0Y~{=}{ptM(|CB z0{Mox#cpm+Dv%q<{>?Pdn69BJm^JZBQ3a%NFyxQ;@E+{=Q26CXv}aVq!jE{QN8iU_GUKG=2}4Zo7uUVrA$95eX1JAn&B3ahfQnB&U#ed)=WM(Y z;(K#Gw(SIOraV(~UsO1s?{bu&xt%30iq0iC{ z8-?rTOeiJ`e?lLyPR?GN@D)z*C8z4f7@wGUbM4$TzS2+bI4kPdR*kF4RVuz0{vwL> zqW|k7?5C~5>URjsDCBvrs81^_F>=#>HSk+C%c10h;EN7eL&0u;3@_r&%9XAkM#TdQDm8aBeOui zv(!y;-FMn&oB2Yp<#ITlvMZK;77^}Pyb9&X#Azejo~y?nIeO74478jh?k= zD-|z3r_t5?yAAPyZ<*nj@2)CT$U^T4vMw*@4Y@JM`>w3`0>9r-(0-|`w9pZ_@%-_I zHES2WKKyuGg1L)@nq(=fRAi9Uzn>PWLhbw=6@jcsQ*H&YD|9Ztb8H26cArP_&dUa; zA(JiQeIR9QYOL@_Mv;`9ju%8rO~vSyLjjR=HEPQSzL=!9>OH%L%`x3WJ+O5=qm~i} z(9zZ$gF6yAjIL@AA|x=p_>E6yMD~e^iIqP&Wj9m5YHL3!cHEs6U1_$$c;7IK^-h`@ zbzwhaN^~-vtF+#Ww>KLsBD8jk$)QH>IaKHykp$14EHcNnzm(6yc`Ed&!b$ikBo$BvP6 zbq>G(Iy>7q@N7Gb8aYF#P__~geMfKT=@Ti_-_y2{!w9tLaq`#B4R74DoS(P#wbSpJ=cZ2*(fJukKXk_swmqn@ANFg42k*e- zz2>g(nRD5|B7KU_r7eKN1|>6@9mjv=go2p^lN$K-8BhS~+ed)}{k;wfS7O?|*z8Rg z0U$J4eElfRhjB8gqcl@4lHnbB-wu%vmWen_*Rk;yvMVGIDZqkRcpFP;e;cxXC-#Kvva(Iy+BD zfBa}gZX4j|pf-A?2ZkFxQ+c}Q+u*2PVaULrJmX(^1t`=F@i9M@;1?8n?vckk$EomX zZ-OWr<^kJ93J34TV=pW7ydkiIRk71X7N*?>9>;aamIi=72h!dti-a@dh?tQ5fmc zONUloUG2Q6+Y_H;j?WgA(V={a#VpD7p3E+m2tlJ_t*&ebwasqrIm zIE+8CEg7pEkUVGHjB4JConYvzs_F&=^@^F8;CQpwH7TVQ2Gg!3rl$V6-JYA2y7_*z z`bh9ipaaGGfgFPa3U}i=sh~^#e>8TU(Qs&698YpdTqTGygmDc~qC_9Ukc8;H_nr_8 zF?zy?-bM>TwCHAH5QD@h(TRS;F#6SFbfdTMCij)K-dgX&JD<*nbJp4Gth3f{{r5h5 zZ>WdHjqwE#1^oQC%hx4&kX3XOza+Am<8aXdvAtnw$OFj8O2OV%?dhu{g8XUl*8K}e z7MNdZdlP5fFb{RAz8=?uLb-CG29TYUzo;^{;*VKicPZ@>1tsVyFo720S>QWAe?2WN zozw1Vh#7i$W3|5yDDS6r9I{j?x9%ax@yrf~BZN=XpYnU1ojAzY`scv}tDFiSR&LHl z9lDu-4r~GM0FfRHOLPscTn#pphzd3n?t`v3Tq?wn!(-2+$aGSJCQ<0#y3>5!xQXM~ zT_W=tZ8o`C%H*8Vy`d1N}6D>BoZ-Xm9gUc^fH7sVE@7cC`2 z0U?o3wxPNc!MB7v)TA*qzqod@g|8l*NT!tT-WiqrBq)|{#IKg}p`qdL4b#&~=^05O zA=iZ9N356K!p^fp5#e8fbE?k0fmP>qcgZ{`I*>E9+o_^Z>W1j0#$(Rdo#YtY>i&1< zHt?pI1ief!8U4sdis`Pi?Xz3Va>n^-JL4va3u+OJxVo)nj!kQzgCI&nOykVb7Ovb_Or64gs2pvW+}bR#CU4ch|8<}>ByAgHVb zDg7_#@`AisfzwWgt;5&;x^o!(JlMXdftSyX@R*X1Ht@aiGPiKuiY7!8C~s$&oe+Nm zi0qwOEFGJ5P0qCm=}zK*t1&6ms8yai-W%|E0z` z=r6q`&UQE7{zvr7auO}emOA zWN@@rATHpZbKfPPx{e@_KH8sQn%_{VBjnOS^GRWah8AOFY96;dExkL3euXs_F)3S+ zm!a6FM;sEn919fyx`U94=?W8rziE7PAk2?03B$}Q3i|{U z&g$*wR#!zp;_~~UY|`#43K@+#-l}HmZeW%Tcf<&rDXbQIQ+cH%=Igt-zHKG3ISfm* zcz>ivH~#(FBbJ);h7Mhe1Ud2*ekZvf%QI}jJ?#rn`yk#eJXL>GfPI{*Ki0HHzo3cP zcjSYa`~Yy9nb{NL|2S!VIwk}Cmy==prEzg7XXy=!1J)ZYSsK(whu`vETeKDH-ON;e zSx!MnicP$eHgmr-x3N9T2|r}ExRJ2-HCL<$#V$>W*5j7M{M_WObPSzRREqz@A*p)6 zVK-bk;Rxa5v$AKv!cuhwG;e?v)$+E;7^0Rpx+v|<&FFrox@b8bgBgvXmALC~FFi;s z{ZXjtuNvU3tYlf9bHt*;y0S2_BAF&f{q0Ol-u};HWAU2fuDLLXT~2oV6|Zs8pFN!A z`;z3YeaXD&$J%i65%0a^p_S68=_Xr$IlutR8aXchS?8#XLtF936Lib{#mW-Uc=aP2 zj>+GgtW@RxXp$ZS=&ZP$?5sdp4uA>T3h5W%ff?2LqTf9pJBcT*ytlLXPDdtd))D76 z3TvSNY2+?3res-+`iR-3Dz`R&lD^PbB>IhNTk#Kc0r*5fA1z;!NoRtx9ZGF!m#rbO zRcS$1y*jPufW7&tKN&d2$Vs32sil0MV|}>Eks4C7PTuj!*>@s$s`rW0k&-jw=%)jj zWI4?pUtnwCW&D@+G_&-O!4~$eMpG|X$u78AOE|PB7w9J1#qcvXnU!yIHS!>!DbK9a zmAqjGFihnx(`t~ocwoCqQ6FV5Kkxb=v~w6>nMc`;oZ0FHvAk%9oACP0XLjHRDBw{# z3};o-_-lMVQeb)&wc}xE_8_`Na7gtPsbK>%AX`*9VGaZ;p)~|;(tF`5dA2Qx}8!6(vXN<`_74;%^$~ZPt_#C$8Ay4cT zm+~Kj7Po!c@`H!;1~#qE$n5q#op&8kubCgHK#lk~c*daF4K?CYD!#)&t9e~>v34V8 zHcSc2aHj9>-ccCs@kBS?OlG3QzIGCSt~?c6mhTE`<)8DxU013URMENJR<}RtJ|ro$ zkLrl!UYM}v0(HW--r9L~UTs&uQvDq9@SmSlp6WP`CC&XYFo1B_h8VL*SZZFh3!2C8_3% zovqr=GKRqLnHc z?)A3I`aS)F5d{VG5r(SRmYGM3%f=AO@4HMQDlY(35M|ruR!JA5X?%_fZCC9~iv&(! z8T(THq)|4ub*YWgS3LkH65-88MhOWuyLc|7f9JBFdZv!Qmu5?67>9aq$-1X`sxi6{w z7r$}^bjpR6g2w*|E2qCfDIEE)_-LV;{#;cLzZ|N}R5^%6zyGIP;}DGGjDD?orBwQr zgv&h?YEXi*@rxozwTHVjM&i<@1BxpZafwq*Og{R45H2PxUtW9eSjDn69k-xHQcOLD~%V+u`UhFbTS;`UEdaT3w52 zklmIR;5Uey6}<5YbYjHwzU;NJ#rCHG3-`L&S0qzLqOkf_^-W~f)De36Pc>6xh6P?; z$}AjIkyt-+6YGhtsCc3dQ&@L(v;Q9XbQ~3 zzbAxR`erf&)C9Qb)SJj_<_M+ebQJjUzqyfQ5KnAM`2a# z75YLo=T5bhSruy)J-h$ayuV4k_*I6;zCR5UyRvmhp_;kgcxl{;o>o8nP#K`=EUjP= z@#Zd)3L*8*z6koFIjN7y*PSa@&G+59rk|z7?=4LAwZ*4s?`(~ejcga?t!d+amFEiA;4}DVdVB`VY3|yxl1j6vBtm1E#u&)?Id_DW zy8b?hPYfr#Tw5}ko%@;U4V#OR>kEdBlfCeM8p9D45E5$|zz9PAeG|0vSJy@22jFdU Rxae!7p{}g+v{KP7>>ugXgx~-G literal 0 HcmV?d00001 diff --git a/docs/assets/gallery/info_button.png b/docs/assets/gallery/info_button.png new file mode 100644 index 0000000000000000000000000000000000000000..539cd6252e0cc3f095bdcad345ef65ec95e86f46 GIT binary patch literal 786 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∨MwnGlFDSQm*aQc>ih(j4cq>SKNX!#}50 z_8Kvy5{*PEZbv^P(oJ;4baO#ca(`U{GXjx9H2Ki+>p8Lwy>*ARB0({2Z|F@@iNd*( zO1y{SIrenEl-K5GVgi5%>c<{@>-&7@W&(ev_;5o|dl z)=7>uWL|t1MUv5dW-pP-X*iSou=h5S)1wKUPjm{n=46ghTJ58{DsvyCCYKy7T3!ksz{r2E*IvAQcyg4zhqll*GHt%;&Y(6Cje_!DN;%o zP@xdow*C$wZztCj2hz~r%(8Uce$_Pdmhx!9ld=ZbLt#S6bXno_HeQf~!cZskSYeR5 zcsnHhEx5ym;Pkg5-I)w;&3<@KZzr`y#8yV0i?lHbuCfI*;voWRt`tH^^;E&uT}vJ! z&(Cm&(IRnGM!tnSC@xLlki?=wHn32KlnzJblup|iBDF|$5>KYO`6I+c9|KaB!Tnha zPfUmUg5r6xH>HHqw9m?#>Y;Khn$<+OW|{am;)bv;oMy1jh%;22$wLT)H5P0%qU62zkX^C7EgDZq%vCYT^<8G;T`NQ)#$q!$cXNhm)ug`_(<*TV`fO+xkXw&_pe{Y3VI z+N8zscqFd(S;c9ebUJ)2^nMvSD;>YwRJ$BouE)m5nnJaI3LNDlaO)-6AWPVi0_N~1 z8s{?n$++`3{GXI~_0MiaUcuxGf>hj#)+7D$yO5NUrZsVplUXA=t~*PtiV|8u-9W;y zfrL6QY)7IeMWy4&pos zhOX*L$9usYofB%G2vkU#%V}2dZqgUOJBELXz=wc4B!fen&5C531r`g1R1fuQs!nxs z4%Mb9{3Oq+`Pus; zbwvdae`OkM4h!rS(^DBe^gmJ%8(!KkpCr6cQnK4E1j!s4d($;nHi2}pHaE)#v)Qk>IVm$>fKv5esk z>7w0veubl4<@v|YG>nnSRwfhDam^g(xfEr~Arlypla%3hkqy~N*CH>5v=rkeaChXk zQrG3a*vA&C1M-Bgx;37JF25J9(n2h~aw9feyBU{nx)B#|xCSfNZ^Ytt>ruXP8C)gB z=%u>--hjNkIuz8Moa^9YA=_cXV$C%o81%v4;LGomt=!X1bbYLb>i?i}1H#DF@b>hRK8NqFvt?NxUq z;j6jWMs*~vBl;uxs=TU8nQ~`l$S=`&H9mxmJa zSf&&dprULFmdssyLVUmo5Y^z1)QFwkON>4f_R3>;%3n*WXM;we};rIB72!rHRQaPPx!bA)LJ)JoH zvoE7+%lEZLq5hfwA>9vj3TWH;EUN#YZ0etT5T}3n6`c9yS8?VSBosD0_j}3X)30^s zb2#&>uc7k6Z^K)AO6xVGgDQ!TPydrxo!C+Ouqk&f66*MdaPO8*D8fb*GI@}mPkbg1 z-j6QJP)lM)jZla>g@c`JrO z+MwfxcV_Gtr`q)P8iI-cK>Dp%b(Av7e#x zcmIYEccSX!IQs7&L+8OaqD(kK!Xcl`#uYLO>LliTp#z;JJAL9S?}U?-V~9`(*QLvn z7$1QVa5*C>5mrRVhKYy?h9in-sH;;4l4%!17~HpsNR0WIP#+CrD1P~6mt*ea62PxW zAP@+mmxe<;$HK4DWMN|I?(K!!m4d=4bKoeSjUImh0U{@^jc+v-sJN!Kz zXng)56l}a3Q$BGoW_+q?NSsb*Da>i5 zqrN7cOAn8O*TtsZD14|d8fXh$;o;a0{0#D9zr)MIO=TGPp z461D~c{p8eOrJiBiuIwFhBQ4r9{Hv6v9qUf^vo&Lx3$7UJ+9%79ymQ zjzL{Sgj8IfI~j*0?D}(^T#p+1DB=+E;E;M13+uT;o^&Nn5lEbb>*kP&geO*I9!2Yz zNOluIyWh%6Y3;365*Ie*hqy0i5bMAi6k=I(E-~_2aM`0+;O5h4;SHdh~rd< zzlDg1L6Ws+V$>nshU3(Mf;<^ZArlQh*v1Y@kV?zE4u||Llb;s)e-k#LQ+og6=^^{f;v%6F$e=l*@#n zJR6FWP9||FKl}_1>m^?w3w=y@g4Q@j0zSqfDj5$xVpgihVv>r9L}-8OS=cl4sUz6n z$SRZ}Q1e!`P`G>Q0{C0%&~^ANcxz6fZP#PBOI z3wE72NC(6Mr`<_qt;)M0&IpB);7@WO$(0RTdM;8@(`B(SUc`*=&hP+3Iz8Xj;ZU_y zeH;5g3E6+vaWYJ{Y^~bLcH!e9r71>=$Z?ZOByN193N492gpy=Ol9!H6SMNk16>juc z%D|8VB}acC#Md>n$p1kL!`Q}{h^lgYK=nt9>TG@RHdLXf@;LH0-Gj1^eM^MrR@!zw zFU9h%cn?yDSWf)tZ*cfq?;|h7hVl=7JyKURqUxRY*&omq*M}qben9RJrPHvg@TQMP zPE;u`5mhd%lL|N`-*V1Jo!zQKXfWv*LNzck@YA>MAKp!4@ zb0;1-c^n6t+t3qCMniiCdOUu3JG`_V@?g?(kd&GYJ9&~8w-fbkO=zmCRx25D`$U)= zc<-qFloq1lHgiaA3*W^N3qC#+(w{nRM2^YSdKTs>eJr?23+<$Zj|tgJU6jXl$@Zi! zL!uGUB@roF$ZJjV(>BKcG5v9_J`P=-ojTSZ`Gsoj+6MYZB|>UinvM-0>39BC$AFrj z+!Wr%SRj*J;LOZiodQmujJ(rgw3zhOhjc800cnhTl!54Y7)lq;G9pp7Qg^?4qVhQ% z&gVE#ci;PTn*L|?wJ7@FZ?#DuI=6gU!kkTiFJa@>2a)No(Va{Qo##4E7P@NgBb?^` zBx%m4Pcjb&D9&DiA_p~rp~zib*VUu-oTus&GNBwMAvWhbIDG-`v{bKy>T}T0#%aT* ztFFhjmtBW{d;WQ}Q+h#mA@Ye-`rNc-@?^HZ_$H9%!t}*Uk&#mXr_+U$OgHvE`6zb% z&u@@Nq-3KWZ?#&e<5NfH4lnzm_LDcr`=wf{$e@oWQFs@$oivyNzCk0m+c`_?)jSf# zDb0t8?Tvlp_?u^Yk$>@>Ql{z2??@<>X>jb3I||^i(XpWI(k90e+@yFhalwO6J_FJ5 zfneA~+49NWzn-WxBb?8+I;s)Qkw~;1$E9`xop0O|C^Sfly$lvU(G3w>b?FWZcS!DB z>~W|&INT@c!}BIILic(y5O0%ru1R z>v8ItC*h!>k`STMQ>l&e918D=+EoSKPdXOrqsT?>UJ>E&M~H{^lgp`Z*<&imDFWAT z)JGzRPk$8HDq0kbSdfm5m%Xl@9;xaa5!HgQ3?KS`KISqSB&u&Hq3yiRsOKL@bXvt#S~>xzMMv%H>7qb&4>4uva?#t7HtTZo z;WL_&d?lBsM>$TNO^Fd#9g9B_Bc0s&p*T~8x(meBQ`e(7Z&ZF=OdlpI8D{v2OnN*B z*(}JNT8?R}mSgHgE08&RD)MH}z^aQb#Ru;GFmBy=BW%GWbhLXgf9h<^D9lHGiUl2k zZv1KMcD!-224#!pqjb(}!0JFBiKn9*+kX83I_s+7blGM5+(yGYk*-cVZcM659*O)o zK=zqL2!!p`(UGAIRS>2L8u#%JC6xi&M(PsLb#q-@o^3=lIHvSU`gkrW5FoPYiV&d&Z$8*0!sC(d{Vn0NkP>G@PW6X?1lul03Xd{V7(tINGJ5f7d{NHG; z4k(PX=Xi9Ae-pzRu`)Uqe>l!pYx?lF>U5EhF*hSZCnyWgn}|?cP0mstjj4S8AiUHc z3+Bv3#ieU7Y3^)zDSyxY1LS37WBvLouzJlU$jzUG)=m#<>)Y|NBW{VF zQ_;aNpf)ry(cN|Kb1EsRBcD^rxa+@kjOSD~kHefwj!yBM$`KuV`yj)L0Z=w&mW}}) zPY)euegi(E|0y%wF~#2}=g_J?v3t~3Ft-hMK%!3`Wp3?#~9IS0fXm~*USK=2haQawMJIZ{!#BhL*^mn(rJ-VO_Q zW23QrMH6xSVj3>Pu9Jx1+DH>W+oFlFRK>N{3h|PYr3P0uHI7h>kDw zq!&+y0?r_BL|&jI!yTTA<*Jg<6AB=E#uOCKorR|M4jkTp7$=UNKy_6udfK}&rF<6B z$vb)T^cn1`s>EZ5_TzU4cj1lZTGV%UpsBVNHEj(@nUssV?k=<^r=ivFK%2*dHU#K^ zThMg$AlgrzlB+&%oBO+v2)QHjjEN8kQw8rY?I-7PFQ)wz;eDZym3$n;lcE1dG@+0+ z?~#<{=VVkJinO@6;mxp@!`loWcMgqs43ZGE*vMP6(DAl0sl-B`6Jfc~5a0f2F_0*a z<=nspm7IGW10b%xg2Iv!OLktNE6mDbtXrT-yAPzY#U6iY56-P@aEYEegCb2|-xI=ekIWbzYH zxY5wwii|7^N;8w;@9Dycnl>Cf-GJhPOyt{A@Ydc#@VinG==D)!xE%^I#NoD3yCvkd z%B~pupoIyB)UtcD^FlyG8bTnX6M{0xgADn$xe$#Js!G+L7AYtjWQm8;1!04a8X2%U z6{#47RRt#ANl0<0!tGAcsqsSW$tLGtLga=P2)Gc@8b07W)uD|>$ zB9+VW_n-JI7R;UtD|vBUDM>g~eG+q~&w$_Kg{9k%oFp5v?M}=oDaVGTYjNG;rEoT$ zL6JLvf{YNXfo7Byq@ge)1^eIHi{zCo_(TIf>eTwZB}>ASCuA`NPFHpOtE^CEA8W3MK;UBYAzvcKDO*@C0dyX0-L) z0ez&$5_|v+QHn7W{!XMHsbuEl%M~h7-uMY)5WR9CMED9D$&VKWiSfzK0mlU@#+^Vy z5@kn!(m`~b%MBo6F7^_Ye8T?zF!m?7_^PW4gXnuvvu{ii8PyQfMiL~#& z`ySkI<7P}N$VQ$!3GMB5=!Fj*z8=gfn~LjJtiu%*OHk|z!C7-!CT@N9Y|N@C#-W;aa*Zz+(0G~?R^NbNXYxcaS9EQ z{fmg414fdgyw6fjk*+Gw!ywjiK80e;X7TmKf`7~83nU{WyFhs=CMG8Mo_||g^Ert( zYE5aI)kZFNWWsm2Xm4*pJJmIi#BQ@CMh051T0x(bQRimjQ#AqPY>!wP#K4gLCc=cE zukIYzS7rH-N`^+XH8mNj>R^?cpyhcCPE#kM-of43o|TDfFTWCVrp|=N7lg%Pf!%I{ z#bHBtZzpIQl1Bi5vR`2 z^B-1fubKm4y+IIBL}QfG`G&B)K^n3JvQ;l{A{iz{Se!lQh;oH~6B-A&C{OPMK~SyMnu$p zM}{;?FQXqF=K~=`D+foubs3IR898=J6vQGXCMg|BwuVqrQi7bE9BJD)f&WWmArl=F zx2OhCxFi(G_fD&}XI&48$e%Zs_AIEWyHYRw#PnE4i`1nkAIz zikL8DXvA&iPDufGE~$&lh&kKydOUrYLPMB}*>mLe13tP6dr7*evo|(1ppi(VuC`7M zhe-PTKD5=fROq*OpX+MHQLisKSRuq>aiAbilwiZEu0BMe7*phmY;dUa=LM=V9 z8>gRm6uI_fY+SVhT@8)cM?t)$cbMON^da7`l$Q6E+f!I>yF68NG%e&v9_4&>e{1 zjS}`;L3=|JiZe@Ksjowzr4D|o&(l&5epuhCJrMemIS*rBRL?hvfkQS?$3PO4 zr-nMTUoz66V?-enFqcf`_qItjOgfr$DP%EzSSgT-bvzC>s|D#qetf5q>l`MG|6;TZ z1Br?aQ;fbUlGvo5435FAqU#y1#HV7@Z@>6_UUJi0C>Hr-=kl{FiS6HhF+g$d-G&Dt zP#uJmhE@$%qE37bWyx1=qpX7Asf2T-F78n}E**!x6d*k_3p1xrr_QWis^lXNqrR>I zt<7z)+iXM*8JIeC3c3C^baZu7nE(+}A3EDRaN@uLggjo97M0-DV+YU_AOaz8=k&?b zC?&7O9;8n1^?{%2unC72bj&gCN>0O4L8>+~tCRI{Hc`DB4?E;1B4<$_et*`qXn>_h(=jC+XNA zs-AFEA7j}@{C1cW6k)K)og8h)r9>yUeYB3FdUV7gza&YK4R<)TC|JRyNtisjREqS; zn81o2pC3n0pT=7U_o1=76BQNnaK+losnfe?sM1ZIieG-B(9+zDlLrrrhf!3RFNCvm z`!@0vf+!}UNeYDEB~K@rZ`r_)HX2qfx#DU#999~(*210YL~hX}xC1??IeLhO7cTHi zpZJc9cpwC|CoD`T98vA(*BkIFq>_>hvZZ|^o!H3!>4)O@!}@TXi6~l>J~3Dy$>TP7 zJbmb;O(q}})i5OkAlif^E*X}$2Z>su#fV1hVr1lqEluCiiU}gTc5h2#U5qX(JD*M( z>L^jVu@X5E6X-`ST#v4czqr%KcqZzk=Z_);<3#7Q&f$(hDi-RGVPPhb&P8#~Qyby> zRXjl3C@CpJZdMKrcLMNJhvvyrepRHG>VEa`5o~$(IsEzMSCL*+hWFh1K1`odL1fY< z6S>`9FKTEA!?%*{9v>Lb*McfV(ZuO!=VvAF3X4i5=uhl z5W**TSom*Ze)#rucQ?OIKz;ZG$<8eZr^ouk=UsGqbRP{lm-*xmYxHq9NQU)Vs8bn3 zBPE=Uh*)!6Y^l@9Ri2fQcc(b)c1)d8CeMHH8{T*+jh3z+ba?zYa;6H$>l)GO3E}la zC-L(?K8BOj@o&EK9$dcuN+Jm#x;>rf>FGiv6AKMrnwlGN!{(c?;Gz|1_xHeVcfjp- z(~u|tuPp$hLoOjfy^p%}O6dP-#2Ne) zFu%HiCwO^1A@(Hr@F`NIV<^Xf2}B)FMMe~IzT_w|pa^APB=z;eVhyU_Druc=nHG(> zN`4cs%NBcJTt@f!vi!lyES66FnBxOkN3Vdx`i+8ZJT{-4OyiCmrOV|17SgdfLO^-viG z>3HrX#hrrev<&$CK6rY2(N11U4|yw<^$qY*hjnITz?qqW)Z83cQ&Qourr?d;d-02> zpFzRw#n^n)O>m~AprO4*ZbP?{2Xf}vNt`%*7$rHmIDWPg)k!vZ3QDnX&829rJPQwb zHvGFKM|KWMCg-7c_cmDlez^<9on0Etgh9lho`zMOUL=YL*iJ&;9n#C4qNx0S!=)%u zBoixqOol=*$%lZyne4lTvZEmXjR7PMaoPM&NhtkIqh$D>M5PnUz=+f}5aR0^hR6x6 zMKlxp)78~36N$z@$ZD}7BQrC~V*EaQaz>{|@=*s@wV8!ABAQfKBd)yaQ}m@Q6yb-9 z^%H57(Wy8|->m1`x9q`qJiX|qp-p$MhrE>@)VH@HB|8hrE*E;aetzGH+a>Q#Np?EX z)a}Q^ZyiKyUOG14eg|ewE=LEI@%g=IX=%o>V~26%(0*i)ZTf;GSaQ>yaFMro_V59? zQtb#@f!xw^SOY%P9NY<~!%m|!MIyYkhb;aszcQu{&mV3#5r&YBCJs*WG2o$(?2$aK z&%z|ZWp$e0702}%I=;2cj{VQ&dh< zN{&c42oZT0$2wdmWvB@RNpe~}3?`9?NSXqPtEhw&VL=kVmzMJAc(CKv-Q9~G55KY? zD9@yL1Aep;A-8sSqP4vP0bh_j2=X+@3*pO2T6zXD)3V`mrof$*jjmuGj@0(z(oHvF z`Rdi^@OshJ+YKK{?U`dZynheoO__}uGiTx1x3-}($&Wyf4;HH(rKK~`eEbxetGf}h z*<`%Q7@jiQDvyoQNldm(x}qdIv7kU5pYSm!Yx>1>oIN7mqtDa-ECls`B9Lnn> zDIs^jCC+wKMh|1yQoI@VVx%6G=A_i8(=2LZNjTl;Me39#67N3zlG4ZF!&l9sZQ9Ah zOGVPWMXTkmk_i(g#tGEH@}^D0)Oi&+c;qeeR(jz|FM!YC!p!-LQCyUdJ|Y>5%MN!+ zE)i5ap8eVV@YElJn@A-!H4lyy7wk4CkqFPP@ZDP;WRQ=uD%$gVmM^OF>b|*RN6 zzr6z)i{_v&CkM{#EF9T$0Pyr8$-?t_WI!VtpVyC$whr-Lcme#ZykeBlFsW?WGUSxb zAWz4FriME7c6Z5I%`$OIJ==I~raYs8&bARUQDnm~h{wRG22Vdy z;cP<~@7uTzp(GnM-)fSI2@~fVp27m;RxClU#f@I46Ev_vTW2?UAYKIgeguNNC|4hR z9v?coX!z682v1KtEFl|am(GJ@-fY+^=E_`%x3Us;E8lJ=av@@pITzXn`y$fmi7ymM z@Rk!3N21V(GlW#8@@H+wq@bvD z3bIRPz?wH1erF2&_B0?P8*tj-N$x{eUjW^GedL{Z(AL(Dy4EJVb?TVRx47q3z-mu{ z=hRU+>{gy+(PW@|JwJ|5QSn~H8;KBy{L-1?Jp56^s7Pp#ii!g#>wChUN>9x2hcdO? zy=enNOe#sHr((jyc}H4a4tXW5vaD%ORW*XGoyc(6QCL)fyuv&bmXsj7tcaupnZ+e= z=jS6SH4EKIE_Bh*=J1ijICk&|9Jxi9zH%)*4OQr^Jp%{T!S6O9z;g{)KYLK*n+pgV!AZ;{6++~uA2@~fTO+gI%;-pN1D}*KCAJp3P0SYo`_}gU~=I3mGCWR%?XiEk&P&bQ20&~ zmnRy+$%byEO<79mf$#p@e$D0TP7*=+L?%p_IB#%SEpYL@lD-g53R7{vS&v3e3u%)HI z;&Reu-6Fp#wh+NsfR;v#r@ zde9s6BPAmn`SX^cJLo0C2nlcSFRt0w5Hca*ITQ|=I9QC|`>OUO z((}&`n0kf-H9te!Ardl4#e|9T44c~lcWNq9($kTin}gKM3^-HMV0AdC!>hNlg*-mA zRyU&I!N#WZEYgo*PCCy_@6kwXS~7+E<5 z$S<6Pf=MNqR9c3@vNHJEJ#vdY&Ny@Ru!#|WA z4w!uUWTMt26%!`TGdkPa;q`mbR$kWNRIbf%bf3~p}0UEN{(y|a@QXw5f4PA^O5chUb)5_wOHp44S#;hMNIRbfKd_;*R*S2LKTV#36EM`uqLn%djY*wTzTlIrFroM~vl znffNwwRIuMnF@!)DRUel3kiLCeO`GDLw9#KJf3bMlO))CeeiU)qdnk7AjJZ!lYhmm zNQ9Xs*+Qg5M8Z$pif|skBSqdK$7={_Td^n4g@;XHogyG6m*F53v>-h#4QcPXWlv3* zm;kV*=KyJ$u+R|5PQw^`elA=^`Iu5%jLnx_iR;&0hPl&cP{&V#pE^6QC&Yu0Bz~6) z3BR^6jR?fs-3GXmF{^9}dXF4NPh}-+{8A^fWfGCsj_}}y#y}kM6pPHQ@W_X()Xa;@ z|WA_;6fI*)w5No+yr#Q(n)|Xdy4F zzOEH#&(@4JsU*t`w#if`ObiT5)nT~K9D?oWTgW<19>$@)=r~r19J>RDj~u|OFTaA0 z#%4H)Kx|1CWTvDeCo>xv?sOuT47i;(Z2!w+D9O*mqDdvF`NN~I_&Q;6+tqM~-wH>} zAcPSnj))LjD1y;x9^#0eoEXwX>MpsfKfSqBd7U~)vZ2Vz=R1C(Qx`&fu3%8skMU$;B;d<<}be(ds?4;YI}=OPqzAm~4rhu@OyY8{e5hb$g# zNN0~9XgY)wr;p%7WtTQKVZuZ_g5ChE>ai~f-y2~mV16dDG}%dROe zo@7|U&$Lh=(MT4FA{tfNKy*A7m6Z)>YwbqBOG7WM8!`M1d$4EcD`7cYO+@0%Myfjl zX=&OBR-~1!z`~_#F{dmGDU+8|d>*nmD`y_Xm!r^FcE&vwv&pVJCn}zwg_3z|F?({V zm{`)MV&?MK1(R+nKx+^Qg?iMN2U$UA@cGgo%j=hs_SBlZGnRB%EnzqH}#Q ze4ZX0J$MLqA{$F`A8d|fI8)su8A#15L~&^enhxwk&EbQv6UhX?FT!@C&*Ffe`g({? z`98k?%tIL>5)RpIG01^K^)xNn8AGG6u(=AET{xgr_!9v!&j9dvyHVFriQ2lco>Q@A zAt%2GnJ!KwBV*2$SYAGQG(q397wh+hvEeY_y6d!I$pl$5=v2yJ`zqw(NDICqdYjPNGYV31 zmS2I(H{GV?5=_$i2+B}iMjl4ne!Q{uMeN%8G){MMuOB}A)m!n(bAQ5)V}2A*Erdna zwP*WZ@zxm+TxD~Rj|`-z*=VqL8vEWPuj$p7uxrOwoa!7~zBFNCtk6d!;7@X*+3LpZ zRjYA&-$8iWJK^GGO^Fzs4i~Jh3}j83f&#kmw(j1Ej$=p2L!tAWSV10E0Sw41_#2$gsB|)OF(A zNu{^?RlNG*Q(E3Yz1D}3PD3GTkGHKJUQu|^+UAkiaM9h~q;9FB02w@_N}Gk1m*0SO zB#Vokw9~0bakrxKWF7n|GqGypEx2U;DwJi@n2Oh`G+|-_B01TCDqj%!6${W)-;KuV z8aV7W>EITN1tB62{^fB7b?TPwFTmSSjU@6=*t;OQpz~f63wtPJBd;_dh7b=VnJ(Nc ztfBlqc_x=1prdj;B;t@5q>sHC%9D~hPBr!yDKj({PtC&SwbOCUiV`YyuJHH3OoLX%}Is42?{fn0RRIOGaNo5o~^-@z_zg`Pa&QeX@p7z)GWlvLd8Y?`hom3IgQ8 zSghos@a<)*Qx-7e^{J9=Rw5KqGogs^vnl$uk~$P2lH&K+ik|FLK6^AO&BSDs7hxOed&!@ySN;|){{7WtQtL3 zBFVz8q6rfd51zbSWTxhz=I9YvogwlOc;T}Eowt72N^+1*Y473Pum+Q0rw-0P>f>uJ zdk#zzHX;@qU99bPJ8b0PsL%nc%^oHKwPdLx3NFJ$qzJ}J#AFwuv62n1cqsW|LqcRF zkN2}Z3EK|`lM1uo@%EszyL}u<1?@Ps{Z&-9B_n6{GR&UjMO|&w@TYzkjyCvU$(oJD z%ND@aQmcnai4a1=o>y?PGZj---+)W6*oYZ9J~STKj~3M6)RB4wa~5FrmAB#2OJ>2< zb^?cv_8X9yFfkzzN>4-0k>har0-p}0FCxVy_q z-{1G0bN)-NE7{#7n`dX{o_ikarJb<2Z4C(Uo@MC@@(|E3_KeEa6xpG%m#jjYUIs|W z@fbYBh%s0e`S9eK3_jT$2=<>SlzK@cEWjv{|D;5x( zo~an7_7#~7ZvaiHv0~z8Q!yzuS3#Lbg6TFewMeXQ(2rnHH6bviZg_+_Xf~BHH_T_C z2x*=bI6_sxnmLAXE`jq>ZPdS<2tA_7{-_a5o;)=5c%=yBQTX5x8mxIw`Wa+Smh9D6 zWSGuITDjmb$DY|p$f}j7Ru31W>Cj(+Yg_Mh%dN$?9Q?UYo69D~RjiJeqJS;L;Jb=~ zf**nAJ#9gLRX0FJE#rexo2+-`zUh^aNmi5%{|;uV*2r%xcF90%Q?P z1o_HLp8QCls7pipSDK)~G7Pa0Bih||qL6zVfbK}=d6S02czYf0=>0_pii+in8v!jQ zRc!PCfsKSD{9s+|APiW60YXH8(qSsGD)7-?)x{!>SD`TS$i}&&*d#m%Dwy}-{^2Dr z!O#9_ZT4X}PoCQu0g6#?c%kBQu?;6S^P2JVrK)`Ddi0jaCNc1PWp42*2#SaG{9j0SeSnw%DIz* zG-&#firVR73$y*@$Rk_G9gi`crJvZbQ}P%5Gdk(Om~NA)!GOZ2th}u7-`}|T+*^?* zyB-(<9<$zOxlz!;ih}Ki|mcE5e)*^4VzLI(cEjk#l|IB8& zfZ})eovfRgS3iz~G85)Ll#;*^FDg_P@|(4z0yAp}jLx0iE{|4|s8%{s(% zy>=|-YWw8)^E)9NpS?%T#I)_fG7%4S)WEaBnSpDkn(#4K$Dd5`_i7v%{X zakG{cPDctQJBl!|;AhC*VoO5E)NXNVU3>Cp!1MNu@@b^f2Y;&BC@Z8MI1L%wO%@b8 zx}|@i+00N+Nua&bcnP>=z(_4KxvCDK7Z%?i;q74~`mh#(cq0PYiVD98uMNfHPDSSu5ZW2paUe#un zGwfxwD}CPg`tF78;_kyI!Q%dAwJrtk6XxXO zdjK5sZWH*LO#A2c5IT<~l3o=0q98Ql(~H(x31NbuFhF0p&hlqG{((&z8|I3xt{X}n z4o<3{;*fNBbTkqoIzWILq}AiSY_XQxf~-8p+Fwx^>gC~BIiVfi_6EXgZaNkJrq}u~ z5!j9U+cimzjTqU|Jl|)C{o*H={YInLyFRaRU#lcND)*MwH$kkfQw`G@q&2^1`)1=l z8Z9j%vA!sV24dKmJ@8(F-v?ejDfh=!<2+vCrE4yaQTdk~dfh;Lk(=B&E&Zf;9%amh z9qujVT9VX4IE}c%oTyQObccR1d0anN$Np2zuUW_fP7f;3erBTH%Z*y;h6#Y7hldj5 zx5o26eO~)+nix4y?MA|pQaKOO@4B-H4!8D)K(9L|Mjhe_6HiM-9(^5Ph2@4Abk-Dm z^PRt^iEAO4bE-behg-zm9jdidKN5YD4IAq1y=AoSZ3102OS6cw12wmhd)V;-dmC+0 z5KgH~H*FS}o2W=Fl*8a0FIhq;C4t$4D=)9eLd*B;Br)WM4)HiR-mq!^GLH&uX{x9O=c@|LoTnd83^* z7i#VIn{b^fsHY_fymK%et_AP^$&q|&o!q)^`bm|-?oCvxs9{=?=^2RFfOz6-f}Crc z8Fl{-E~`^@ffFavsQLjVJ&t&?Uu=sg@-&}dj7yeB_otxoMEGHQQ@<=iIuy{>Fp}Xh zed@J&;y@zogEyWL?Av)|zNV!fX+L@X`8r#$4&)bG&!R%GF%0xi#>6v1-`&b2dfH<=28(+vX%;}rKF z-d@^m>lFc^w8zcKpfKi>~3j>orLSMj96>Zg+~jc37)M`j{7)rSD@5 z2VWChbv=x_M2SUPuW76NPKNlj_;9@){+Pl{ef7mtj8g`^)jC9WwGeg`uV1E@X!-8r zB#MSq94{0WK7I1L8cL{ae;s+)zK@d);%>GHhZYRDRQ6I?X@S1AzTcKd6d09ReT2)h zx?x3TbH6?Dh1v8sOE13PRqBJr?I-n8n1L%*o{(MzU9MTMurPYfwxkTJdRP3}+AFn~@F^AoS6zv$O&2@a4`2E zQvGp^Q-Ba(;C zyw@#RFt_lW6u5QX5(t&ehuiS+(Wx3wf#o>^}9>}Cu4{YKfYA!)zv+oP5*KQRo((b$(m zq+B|uLc43RlzJU10;HZCo4=ALJ-OdUw472&ufM;}v@PWCoUo(t$tk$@E&Ke4KoBwn zNemQzVhhl(_dS=@+B1YTt)MzhcK?ZB7;Q**{|CqROs7yFx)LP|KV4plGPX3Q-aIk} z%kF7y@$!;e$!+0uh%s<28e6!0m}zP`l-zzmEM=A0=}zL^bW6{LcOgY%dkKw)Xg@;Px>uf42pG>gwdxDqv6A zD&Ps;>h1Vm_6=Gw@R9UK-V@7@+!s$S;adPwSLh&JC-cnBgFp3s;pJtZIM_7eg^}p} zg&9fq?S)nDt+*JZys3UQxFn~H0XJMW2fTmi-{+Vy9vFot|u zUwXY^nfrDwEo-HJCU2M;69 zhge$*AO}lt$x?HoW6IZT-dWc~IH4HlYry${yQV>SrN%?ueI0<%Ub)Nk{LRhNeYp2f zNVuDmyx!AIVkEF?%dvhM6BUwsgw>k_bsI_{WY4Ma+{0$k_1f}i!Tn`SJU0r(Qt1=z zvX1jF2XdY$SW%<2-P)ezy$cjM7;DLlA2Zya^_6zgcA-%%r;F2)Nin5XCX%R7CDnd! z?aLmzS{V|sT;au>SjDwMn;T7;;-l9@qAwD1w>&FJiR;s#I@`|#&WBYNqJCH3HWDff zJaeUopnX9VLtRA1E+^UHFo8>;Yueq35?2#3rdVBUz&T&W*u z^UhuWSMB}qkGo}%6AVieCT!ls(*48!z5N-z{~)|V?5F=xfgltsmKXlzuz$P^k^+bH z?>%hnrT@`1PlAoJuc`m|Mh1b}zXC#76nl6}Mh2vWOE{w0j$Y|A*=qv2ztGyjAA4~i z(pFJmWk~Bsj-x4;9Hi_*RTX%Q!+4J}pp+YOKTfp&_H)J#8yBNFHXbSVgdlQCCS-N(ZR{4sE+eh-5|Gtgo(;kTTobdlc{7(DrF2!24&4h!4!u7R zO~mdgnp1sX?b3GM;(XXJY&1b(bIPfIMpi~vBK1Rizc*wp(y1Io2G{4&!VL=g7kbPU z_d5E4(>W!-M;8zSYWmUx-3bK(pQ(fb(vtbr>d&rh>uL8t1YFJMneKa&ryai?YHHP; zhdyYW{NgX_?RFnLt@XuPSoed+n|r~@dw#?~2E<|gZ+I)2-E`4MQa_Q}3LwVW!Yh>% zU-rY!=F4|EtB=5o?uVq&p9X&8JCHcQb4h7Sx~m%#llFovhju7BrECdh<&(-3>4;`? zURx!T`vrWE_C>&&NEf2=>D1!6guG*E?GU_Z8{Vh3yKN@cMt-n>-xJkXk{wf0>xG8j z*`TWWsZe~hplDQhj{#HjxK?ii(en*a{_lm2ppc8JETxp{PF&A*Z&VgT?cl!?rhF^i z$k80M#=Co~m$}FD9ECj*;GY}|?<9B0xqBQ%=XlhL`eECjeKREbp{J>nWe((9g@!i0 zZegpmo1o;=4a1gQ@lDW1PP}8-BF)bz)epQ30w|P7MMLIo7mnkIiYcIij~BiMCy^DA z;6N|O+bD&1B$efP<7qlHi)qlCf%uLG_ve#4yzXwrWf=0{wS6q|OL%oB$P??~Dp``n zGJe@`r%mX@;o7SEOh%j-tx)*w$?9wALM#duEv`p7kKGdaSeAkB zY2(j|3M?#Vz7t9kOTd0T>Z(g7ySOH+U;k0NL1q2T-hJQ;pU25&H2nFiFdD8waF#}H z|FQInia`%ka^&tTfX^vEbmlLfTD?&;^pFQ}3~=S^^OfgCR`qi|`0^Z73$MoJ{>95e z+?2*)MI}hQ>z!AK-a~Zo-teUN>bORdh3Il8p(~`;?|8_|Z%Fn8f>!ws^1{m753YYy z*7epyca?f{{4!-EecK2$mG+|PlTaCp-FWXK0|n>3emG}ci!*$s^vIlkdzQ=mC2_2I z!J6&q0#EujM&U(QZY~AulQ}I->JK|4wML7Ljj0%S>vdDGxt)qX=s{W4v=|DOMlULB zBZj~4DruzZ1Ip5{^5VNP?g5*MvpKf5dP2o$nMf>UNMGxj(+N2*mei!-b$zZ6&af|1 zHI0&NaV^Yp25l#EDbvkGN_Uw18XBmUS`_gqV5}cZ^UI5fJ<4>3g+lzyiWk5Nb0&j| zLpD>HxirW4f-#y#*L0on=NN=9`w5~U15%fmtcTVtoHiz28G5P_%7JHj^^bq=>zI*{R6Hu zh100bi+`C-(SVf-S}IWpUlXH%arz|kc*wZ5(FD8sd}VntqWlWuI9QWV5kV1x$@IVV zez5bu)PA`{e~*)Hs(VS>>ADyemm_`a+61=Wv>P-AhVglLkwNk>>-T2jk~g|of9)K8 zPq6P%lb{XgLa(k?d>Ee$4En*)S@}We;rP9OY?86oT2HBLJK01%F_NRSk5m&4&+!dQ zq;4&yIxs*(J(Q(GR`aSUz689DI;-O8##nN{)qSW?)lvMR?9SPT8mK#p^WACv8?q69 z2ibEHTzVyLnYEVss;vD_t=RHGqP!x#nOQxHISG@Sf?7ue{z!cChNeIHot=1`mXnee z8ayu7$j&<#P&vqRi|SN@ykxu^KD-;g_e0LB0J3DRqNMgT>sd>1MAkXU<2qS@O&VfR zMJvM#j(z*h%|-Fn*W%)4bN;zdc=UoIHE*sy>9t>3nugK*gzjFTvdw{az;u%koUYGz z73-{sxUrz7fNLhS8x;Y276+}h7<*A~C~0@xdQUHmMjCp zYahxc&&!jvasiJMo^T8CaGsj+OmnD` zOj%z6cWBY#@jxj0n~0DC5kAVVn>{Vl?h+wy#5p@M8!YBk{-@K(Fz69P6ILfRTVE{0mzK^m7Ug^83ike@sbz}cw z)Trhg);c>P(;FJJsi7Z`rMP~9bW<>Tx7Rk7Ht^Qjx+iHNNyPi=1($Sp&lih`jwyINyPWZ#TY>=A3~>-p=&lQe@Gv}U`4H>?@r6~O(%m|Dx~8nGllg=4q07*~_a7Le#UmwJ{+H%5vWf#UyZEM)HM|#O_W=X{ z5Ch*PpJBq`DnQB4hJXVx92WAvNBB6>TnIX!S-hqxqu8Gq6g7@mA#S%P{h^r|%qgeRi7Y zw0yp*j`e5TzE+vN&rdyU1!r%?ZP^fC5)gAClg*ftT^*iOaUbA6M5dhmy=eyFG27Eud~5&O7k-` zp5Q1Dnz+@UV7V}|{xr0Sn65H@yJwvn+^KLlk8c>-GOxTPSk}~UXy9!%eXBo zm=}Ix>$cQDfkijgcdsP>$qQf;k>5K)^Si!RHM9)!I6C|BVXwsdr+{kN21vlJ|IhjS z4>X*=S`k^le?)BT(SK$47m02|1C`)avpIh$XsZ-A@a%r&RbZg55R6g1(J9zwC@i47 z0+gAe6qBJi3YH_tsxUSizHi6rdz~tL69pM#Oje#$$5o+naF~ITANddXTriZI9;a5; zgPWA{g6IMX&*<&?u)nR3{!NQIPGjn?<{Ycz8;^O~b7=V57fq`;WO79qi zOVLqvnr??}E;B*W*wvYyUy682#DQD$ZgvOxt>JW`I?US9wQ^X3imrcS@T~(GD)z6! z<(-C3O#aHBi7D@??|5buyA*6^%SaC4s*82@Jpp_EZH}~Jm*DkRM9?9&yUZwSzn_wh z%SDtTzG++|)Z~e9)L97b!%VBo&u=+Y5MJ2JyPzCieMa!+Hy1;QUp=&6#{a>PPKoEX z8~>yya|JHjIG4yG=hb+i!W!18fy*?n7(&gGZ<{%r;A>BWBl;G~ALdFWwFc$y`9?1% z7pr7r8*Pt$$yd;`R!NU84$_mp4Wk7Si)_Wi-@DuUN^-m_>Z8h*;`{;-SO=EUVI zP!pwXG!=Y|m!5A7Q941FQYV$m3BFCd`CbcL3b#Dqs8OYdk2y>3JA4L51P(cHdRhU8 z++JIIwinl{5D3jVnY>?WsgA_x^i7I6;J%lleQgFfWUv{%?=$Ayr$EVhZvC>Q9QbYZ zz^*^dzwyFiUy4~xC+^+fSoF=Q7*CpRyq96s`X%JJytXe*bEE(65}=<+V5x<)cd$f% z$%8TFl!Ht%g@4S!L(XzC)3&V3&9}^ zK)6Cl)K@th1TSdd_c71w0nyKF4E!MLE+W!k4TaiWsa?9hlFCWUEebE3)gJYMrcvf{mnHJi{RbLPM&dE8u% z)rndVTYqAk4F=MQ!qV!bq#Of~x2WxjEQ7ze+FAg0&5atlPuyZX7Su&;LDQUMqb8-jSXV z%?-SpZrJZg)RODgZrLZGm%1M5Un?4Xo$f z6h?*dS=CK=E;qrUm7p>kiU^0MsI3JMe}ncC-BGqC`2Zr?TKt+jw?l{z8k4^=D!HSE zC9bQcKrV?3?BR{KhQ`LnX|>pZIsXF>)CHnID8fyh0e1Z52@=)xI+-~mqL{*7zIPPH zn6vmQdid9*(c}?HtAm*)4{&1Mj}ZO&#v=06r0!^0YYjJ#tJFY@rR)p~)U7Z}K6EhZ z?+J>Y+a=KP;TN?vabN2ib+hXny1XyRpf3ga zV*LSDtDvoH+3>syeO0|;wW#{aiaV0LQf}kzoR~}M)Zm-YFOJb{LeB+kM`SoZAZM}J z!H-75jq3MuAXT&ib?F;5^A|1S?y1P4uzy##UB;Xh=2d9usUyG4k6TI6N^(W_*5;KpJut<^88O75i)Il4N!5k_}KSf*^_Q(y+Nueh8C4dgfB_vtghL@ zs%ZG-qK<)t=YKCRWc6i8W_pQc4<&C9)R zHWlCrcnbr{*b%u-7lr6Cj9wYjtEZ6c=;xJqW%FWjpMLz0Xd^}s7 zLvRy;jf%vpb(mtW$~3*CP_H&-)|aXw6p{1pvEbs;a$W~__doIk=xwH3l2h3+jH=PAGPr%=1O!(w5guqJ9U8lBepAlji3cJ0K*HKp zXJ(S-EQ z$;3gr=wNT-QK$f1L&t+D&R)rM00Y+7cdXZhf*|+yfu1)=TCcNMIS!d&jhZ`8c_hm7 z&rk+IB{j!x)P#R(% zh?+ymMK;UcBewyi=ZjgV`4}DvUo)A5Cz89xih#RB43lY3+K9{_6&dFZN1I{+(rkS0 zAbdch^726gn)i7#ZPeJCES&Xx{VtbdI#nydmsJ~BGTCL4vd6@7R&!;;BZMoSC16jI z$V!4437=|I`}n;oxN6P zGqijL$!zG44kg=3ii90~i6n&y=T8ZIk|b)CD2XO(Hd%EI|Io8b?q|+ zsqCKM)C~9xd;$P5tV>RkHGqaVAy%eV`W0JS8C1b1a zkLl%EnN}OF#<{|ZBPL8_Z~8fn$Ke1;u?_!!CLi}$ndGRiJ5(N{#HvFHCJ~z0cMc7? zl^Db|DPSp)sEv36S;2>;V~*mehNz}ViYQt^^CB^5l3gKiMskdp^?ZC!_pOZa7rk(3 z;|m7(9)5fh3>UL`C8u31H9`Agn$ZF*@k!vqP_!8~%BlpFn_Z{c(O2ANoXiSc;2}Rn6VK7o2~zMy}Mz{T}KuE)MvXMp;3Ee$5yA zi*p7C(^n4IQT%8`T<|7hm_Hs*e2_uV)(;;^hoA6?R*JsyU5ZbYs>~REvr1 z@b)#Khfs{?)O&2#z@Oc>`sUHmcgjfhLaW-r9TY>c2bbxZ0u@^-}Ekr|Gv(4`}z z8aGZ+n!}Ql*c~_ohj&s^rXB@0PLR1y>&nuLFH0<9vvS}qi2d=K=cv(h3Hhy3hB-}_ zkAxi)USmU|I`2d5*IUk}su6BC=8ZD1^i7KLxk{TZIiSU!P&DktVBZEpiCXKXX?W6TzIt&CAd2_3B0lKCn zI_;9o_8F*1>f~{X-C34$5Ipyc*wFfDLI1Z52?6(PZ7-9IcV3NA@afcL$uEUi1(qr` z52lpKq3qG$2+L0X0z0O(&a##EY=;*-C8#cFD#9xUqpH8>B}bMJHHJ6I34}ZgLlROp z_}%l(L}R%EW$0|CkN-O5s+POxxOGyne|q9Lfqac{X-hg2+Of)oLNuX4O2E3r>V_;O z>Y`V%j{>BM7~+WH%N2RahEd0OA!FS(hHWpoHbu$15r#<#QwG4XoRGN`E=v3+jMzSql>BUq^b_;Q&S+b zDCffYGMHHw2$j$!ojS2BPUgn0)KH?Q(wX(^<_lda0gdP>tfvp{>kx{CP6fl0Q37dt ng9wdpSVi43FX1oVq0DD`x{cR2-640Y`XDQ*BvB(~6!QN7N@MW| literal 0 HcmV?d00001 diff --git a/docs/assets/gallery/top_controls.png b/docs/assets/gallery/top_controls.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d3cdc854bf4b7b1fe1990ebaceda2f7c80db07 GIT binary patch literal 3378 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

!d+3li`%gtNvLg pyH4IFBwE@Pe`S0?U{LQFy-Gn11Bj>k?fE~4&RE|Jg3-Mn{U3V%o|gas literal 0 HcmV?d00001 diff --git a/docs/features/GALLERY.md b/docs/features/GALLERY.md index 8e26ab93f8..85057bc023 100644 --- a/docs/features/GALLERY.md +++ b/docs/features/GALLERY.md @@ -7,43 +7,67 @@ title: InvokeAI Gallery Panel ## Quick guided walkthrough of the Gallery Panel's features The Gallery Panel is a fast way to review, find, and make use of images you've -created and loaded and assets that are being used by the Image-to-Image and Unified +created and loaded and assets that are being used by the Image to Image and Unified Canvas tabs. The Gallery is divided into Boards. The Uncategorized board is always present but you can create your own for better organization. +![image](../assets/gallery/gallery.png) + ### Board Display and Settings At the very top of the Gallery Panel are the boards disclosure and settings buttons. -![image](../assets/invoke-control-panel-1.png) -The disclosure button shows the name of the currently selected board and allows you to show and hide the board previews. -(image of board previews) -The settings button opens a list of options (image of settings): +![image](../assets/gallery/top_controls.png) + +The disclosure button shows the name of the currently selected board and allows you to show and hide the board thumbnails. +![image](../assets/gallery/board_thumbnails.png) + +The settings button opens a list of options: +![image](../assets/gallery/board_settings.png) + - Image Size: this slider lets you control the size of the image previews (images of three different sizes). -- Auto-Switch to New Images: if you turn this on, whenever a new image is generated, it will automatically be loaded into the current image panel on the Text to Image tab and into the result panel on the Image to Image tab. Thi7s will happen invisibly if you are on any other tab when the image is generated. +- Auto-Switch to New Images: if you turn this on, whenever a new image is generated, it will automatically be loaded into the current image panel on the Text to Image tab and into the result panel on the [Image to Image](IMG2IMG.md) tab. This will happen invisibly if you are on any other tab when the image is generated. - Auto-Assign Board on Click: Whenever an image is generated or saved, it always gets put in a board. The board it gets put into is marked with AUTO (image of board marked). Turning on Auto-Assign Board on Click will make whichever board you last selected be the destination when you click Invoke. That means you can click Invoke, select a different board, and then click Invoke again and the two images will be put in two different boards. (bold)It's the board selected when Invoke is clicked that's used, not the board that's selected when the image is finished generating.(bold) Turning this off, enables the Auto-Add Board drop down which lets you set one specific board to always put generated images into. This also enables and disables the Auto-add to this Board menu item described below. - Always Show Image Size Badge: This toggles whether to show image sizes for each image preview (show two images, one with sizes shown, one without) +Below these two buttons, you'll see the Search Boards text entry area. You use this to search for specific boards by the name of the board. +Next to it is the Add Board (+) button which lets you add new boards. Boards can be renamed by clicking on the name of the board under its thumbnail and typing in the new name. + ### Board Thumbnail Menu -Each board has a context menu (ctrl+click / right-click). (image of menu) The options are: +Each board has a context menu (ctrl+click / right-click). +![image](../assets/gallery/thumbnail_menu.png) + - Auto-add to this Board: If you've disabled Auto-Assign Board on Click in the board settings, you can use this option to set this board to be where new images are put. - Download Board: This will add all the images in the board into a zip file and provide a link to it in a notification (image of notification) -- Delete Board: This will delete the board (bold) WARNING! This will delete all the images in the board and the board itself. +- Delete Board: [!CAUTION] *** This will delete all the images in the board and the board itself. *** + +### Board Contents + +Every board is organized by two tabs, Images and Assets. +![image](../assets/gallery/board_tabs.png) + +Images are the Invoke-generated images that are placed into the board. Assets are images that you upload into Invoke to be used as an [Image Prompt](https://support.invoke.ai/support/solutions/articles/151000159340-using-the-image-prompt-adapter-ip-adapter-) or in the [Image to Image](IMG2IMG.md) tab. ### Image Thumbnail Menu -Every image generated by Invoke has its generation information stored as text inside the image file itself. This can be read directly by selecting the image and clicking on the Info button in any of the image result panels. Each image also has a context menu (ctrl+click / right-click) (image of menu) The options are (items marked with an * will not work with images that lack generation information: + +Every image generated by Invoke has its generation information stored as text inside the image file itself. This can be read directly by selecting the image and clicking on the Info button ![image](../assets/gallery/info_button.png) in any of the image result panels. + +Each image also has a context menu (ctrl+click / right-click). +Info button ![image](../assets/gallery/image_menu.png) + + The options are (items marked with an * will not work with images that lack generation information): - Open in New Tab: This will open the image alone in a new browser tab, separate from the Invoke interface. - Download Image: This will trigger your browser to download the image. -- * Load Workflow: this will load any workflow settings into the Workflow tab and automatically open it. -- * Remix Image: this will load all of the image's generation information, (bold)excluding its Seed, into the left hand control panel -- * Use Prompt: this will load only the image's text prompts into the left-hand control panel -- * Use Seed: this will load only the image's Seed into the left-hand control panel -- * Use All: this will load all of the image's generation information into the left-hand control panel +- Load Workflow *: this will load any workflow settings into the Workflow tab and automatically open it. +- Remix Image *: this will load all of the image's generation information, (bold)excluding its Seed, into the left hand control panel +- Use Prompt *: this will load only the image's text prompts into the left-hand control panel +- Use Seed *: this will load only the image's Seed into the left-hand control panel +- Use All *: this will load all of the image's generation information into the left-hand control panel - Send to Image to Image: this will put the image into the left-hand panel in the Image to Image tab ana automatically open it - Send to Unified Canvas: This will (bold)replace whatever is already present(bold) in the Unified Canvas tab with the image and automatically open the tab - Change Board: this will oipen a small window that will let you move the image to a different board. This is the same as dragging the image to that board's thumbnail. - Star Image: this will add the image to the board's list of starred images that are always kept at the top of the gallery. This is the same as clicking on the star on the top right-hand side of the image that appears when you hover over the image with the mouse -- Delete Image: this will delete the image entirely from Invoke +- Delete Image: [!CAUTION] *** this will delete the image entirely from Invoke *** ## Summary From 68d8a2497e378f9b1fc9d54db7b9868aabf2b831 Mon Sep 17 00:00:00 2001 From: sarashinai Date: Fri, 12 Apr 2024 22:19:41 -0400 Subject: [PATCH 09/17] Update GALLERY.md --- docs/features/GALLERY.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/features/GALLERY.md b/docs/features/GALLERY.md index 85057bc023..641bf37433 100644 --- a/docs/features/GALLERY.md +++ b/docs/features/GALLERY.md @@ -7,8 +7,7 @@ title: InvokeAI Gallery Panel ## Quick guided walkthrough of the Gallery Panel's features The Gallery Panel is a fast way to review, find, and make use of images you've -created and loaded and assets that are being used by the Image to Image and Unified -Canvas tabs. The Gallery is divided into Boards. The Uncategorized board is always +generated and loaded. The Gallery is divided into Boards. The Uncategorized board is always present but you can create your own for better organization. ![image](../assets/gallery/gallery.png) @@ -16,15 +15,17 @@ present but you can create your own for better organization. ### Board Display and Settings At the very top of the Gallery Panel are the boards disclosure and settings buttons. + ![image](../assets/gallery/top_controls.png) -The disclosure button shows the name of the currently selected board and allows you to show and hide the board thumbnails. +The disclosure button shows the name of the currently selected board and allows you to show and hide the board thumbnails (shown in the image below). ![image](../assets/gallery/board_thumbnails.png) -The settings button opens a list of options: +The settings button opens a list of options. + ![image](../assets/gallery/board_settings.png) -- Image Size: this slider lets you control the size of the image previews (images of three different sizes). +- ***Image Size***: this slider lets you control the size of the image previews (images of three different sizes). - Auto-Switch to New Images: if you turn this on, whenever a new image is generated, it will automatically be loaded into the current image panel on the Text to Image tab and into the result panel on the [Image to Image](IMG2IMG.md) tab. This will happen invisibly if you are on any other tab when the image is generated. - Auto-Assign Board on Click: Whenever an image is generated or saved, it always gets put in a board. The board it gets put into is marked with AUTO (image of board marked). Turning on Auto-Assign Board on Click will make whichever board you last selected be the destination when you click Invoke. That means you can click Invoke, select a different board, and then click Invoke again and the two images will be put in two different boards. (bold)It's the board selected when Invoke is clicked that's used, not the board that's selected when the image is finished generating.(bold) Turning this off, enables the Auto-Add Board drop down which lets you set one specific board to always put generated images into. This also enables and disables the Auto-add to this Board menu item described below. - Always Show Image Size Badge: This toggles whether to show image sizes for each image preview (show two images, one with sizes shown, one without) @@ -35,6 +36,7 @@ Next to it is the Add Board (+) button which lets you add new boards. Boards can ### Board Thumbnail Menu Each board has a context menu (ctrl+click / right-click). + ![image](../assets/gallery/thumbnail_menu.png) - Auto-add to this Board: If you've disabled Auto-Assign Board on Click in the board settings, you can use this option to set this board to be where new images are put. @@ -44,6 +46,7 @@ Each board has a context menu (ctrl+click / right-click). ### Board Contents Every board is organized by two tabs, Images and Assets. + ![image](../assets/gallery/board_tabs.png) Images are the Invoke-generated images that are placed into the board. Assets are images that you upload into Invoke to be used as an [Image Prompt](https://support.invoke.ai/support/solutions/articles/151000159340-using-the-image-prompt-adapter-ip-adapter-) or in the [Image to Image](IMG2IMG.md) tab. @@ -53,6 +56,7 @@ Images are the Invoke-generated images that are placed into the board. Assets ar Every image generated by Invoke has its generation information stored as text inside the image file itself. This can be read directly by selecting the image and clicking on the Info button ![image](../assets/gallery/info_button.png) in any of the image result panels. Each image also has a context menu (ctrl+click / right-click). + Info button ![image](../assets/gallery/image_menu.png) The options are (items marked with an * will not work with images that lack generation information): @@ -67,7 +71,9 @@ Info button ![image](../assets/gallery/image_menu.png) - Send to Unified Canvas: This will (bold)replace whatever is already present(bold) in the Unified Canvas tab with the image and automatically open the tab - Change Board: this will oipen a small window that will let you move the image to a different board. This is the same as dragging the image to that board's thumbnail. - Star Image: this will add the image to the board's list of starred images that are always kept at the top of the gallery. This is the same as clicking on the star on the top right-hand side of the image that appears when you hover over the image with the mouse -- Delete Image: [!CAUTION] *** this will delete the image entirely from Invoke *** +- Delete Image: this will delete the image from the board +> [!CAUTION] +> This will delete the image entirely from Invoke. ## Summary From 29dd1bb35bbc9c90e128011f5c025d2c2669955e Mon Sep 17 00:00:00 2001 From: sarashinai Date: Fri, 12 Apr 2024 22:22:45 -0400 Subject: [PATCH 10/17] Update GALLERY.md --- docs/features/GALLERY.md | 41 +++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/docs/features/GALLERY.md b/docs/features/GALLERY.md index 641bf37433..f714f3b21f 100644 --- a/docs/features/GALLERY.md +++ b/docs/features/GALLERY.md @@ -19,16 +19,17 @@ At the very top of the Gallery Panel are the boards disclosure and settings butt ![image](../assets/gallery/top_controls.png) The disclosure button shows the name of the currently selected board and allows you to show and hide the board thumbnails (shown in the image below). + ![image](../assets/gallery/board_thumbnails.png) The settings button opens a list of options. ![image](../assets/gallery/board_settings.png) -- ***Image Size***: this slider lets you control the size of the image previews (images of three different sizes). -- Auto-Switch to New Images: if you turn this on, whenever a new image is generated, it will automatically be loaded into the current image panel on the Text to Image tab and into the result panel on the [Image to Image](IMG2IMG.md) tab. This will happen invisibly if you are on any other tab when the image is generated. -- Auto-Assign Board on Click: Whenever an image is generated or saved, it always gets put in a board. The board it gets put into is marked with AUTO (image of board marked). Turning on Auto-Assign Board on Click will make whichever board you last selected be the destination when you click Invoke. That means you can click Invoke, select a different board, and then click Invoke again and the two images will be put in two different boards. (bold)It's the board selected when Invoke is clicked that's used, not the board that's selected when the image is finished generating.(bold) Turning this off, enables the Auto-Add Board drop down which lets you set one specific board to always put generated images into. This also enables and disables the Auto-add to this Board menu item described below. -- Always Show Image Size Badge: This toggles whether to show image sizes for each image preview (show two images, one with sizes shown, one without) +- ***Image Size*** this slider lets you control the size of the image previews (images of three different sizes). +- ***Auto-Switch to New Images*** if you turn this on, whenever a new image is generated, it will automatically be loaded into the current image panel on the Text to Image tab and into the result panel on the [Image to Image](IMG2IMG.md) tab. This will happen invisibly if you are on any other tab when the image is generated. +- ***Auto-Assign Board on Click*** whenever an image is generated or saved, it always gets put in a board. The board it gets put into is marked with AUTO (image of board marked). Turning on Auto-Assign Board on Click will make whichever board you last selected be the destination when you click Invoke. That means you can click Invoke, select a different board, and then click Invoke again and the two images will be put in two different boards. (bold)It's the board selected when Invoke is clicked that's used, not the board that's selected when the image is finished generating.(bold) Turning this off, enables the Auto-Add Board drop down which lets you set one specific board to always put generated images into. This also enables and disables the Auto-add to this Board menu item described below. +- ***Always Show Image Size Badge*** this toggles whether to show image sizes for each image preview (show two images, one with sizes shown, one without) Below these two buttons, you'll see the Search Boards text entry area. You use this to search for specific boards by the name of the board. Next to it is the Add Board (+) button which lets you add new boards. Boards can be renamed by clicking on the name of the board under its thumbnail and typing in the new name. @@ -39,9 +40,11 @@ Each board has a context menu (ctrl+click / right-click). ![image](../assets/gallery/thumbnail_menu.png) -- Auto-add to this Board: If you've disabled Auto-Assign Board on Click in the board settings, you can use this option to set this board to be where new images are put. -- Download Board: This will add all the images in the board into a zip file and provide a link to it in a notification (image of notification) -- Delete Board: [!CAUTION] *** This will delete all the images in the board and the board itself. *** +- ***Auto-add to this Board*** if you've disabled Auto-Assign Board on Click in the board settings, you can use this option to set this board to be where new images are put. +- ***Download Board*** this will add all the images in the board into a zip file and provide a link to it in a notification (image of notification) +- ***Delete Board*** this will delete the board +> [!CAUTION] +> *** This will delete all the images in the board and the board itself. *** ### Board Contents @@ -60,18 +63,18 @@ Each image also has a context menu (ctrl+click / right-click). Info button ![image](../assets/gallery/image_menu.png) The options are (items marked with an * will not work with images that lack generation information): -- Open in New Tab: This will open the image alone in a new browser tab, separate from the Invoke interface. -- Download Image: This will trigger your browser to download the image. -- Load Workflow *: this will load any workflow settings into the Workflow tab and automatically open it. -- Remix Image *: this will load all of the image's generation information, (bold)excluding its Seed, into the left hand control panel -- Use Prompt *: this will load only the image's text prompts into the left-hand control panel -- Use Seed *: this will load only the image's Seed into the left-hand control panel -- Use All *: this will load all of the image's generation information into the left-hand control panel -- Send to Image to Image: this will put the image into the left-hand panel in the Image to Image tab ana automatically open it -- Send to Unified Canvas: This will (bold)replace whatever is already present(bold) in the Unified Canvas tab with the image and automatically open the tab -- Change Board: this will oipen a small window that will let you move the image to a different board. This is the same as dragging the image to that board's thumbnail. -- Star Image: this will add the image to the board's list of starred images that are always kept at the top of the gallery. This is the same as clicking on the star on the top right-hand side of the image that appears when you hover over the image with the mouse -- Delete Image: this will delete the image from the board +- ***Open in New Tab*** this will open the image alone in a new browser tab, separate from the Invoke interface. +- ***Download Image*** this will trigger your browser to download the image. +- ***Load Workflow **** this will load any workflow settings into the Workflow tab and automatically open it. +- ***Remix Image **** this will load all of the image's generation information, (bold)excluding its Seed, into the left hand control panel +- ***Use Prompt **** this will load only the image's text prompts into the left-hand control panel +- ***Use Seed **** this will load only the image's Seed into the left-hand control panel +- ***Use All **** this will load all of the image's generation information into the left-hand control panel +- ***Send to Image to Image*** this will put the image into the left-hand panel in the Image to Image tab ana automatically open it +- ***Send to Unified Canvas*** This will (bold)replace whatever is already present(bold) in the Unified Canvas tab with the image and automatically open the tab +- ***Change Board*** this will oipen a small window that will let you move the image to a different board. This is the same as dragging the image to that board's thumbnail. +- ***Star Image*** this will add the image to the board's list of starred images that are always kept at the top of the gallery. This is the same as clicking on the star on the top right-hand side of the image that appears when you hover over the image with the mouse +- ***Delete Image*** this will delete the image from the board > [!CAUTION] > This will delete the image entirely from Invoke. From 9ee7b951eb46397a80f8fe96e995697807c8e342 Mon Sep 17 00:00:00 2001 From: sarashinai Date: Fri, 12 Apr 2024 22:23:26 -0400 Subject: [PATCH 11/17] Update GALLERY.md --- docs/features/GALLERY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/GALLERY.md b/docs/features/GALLERY.md index f714f3b21f..eeb9891fb3 100644 --- a/docs/features/GALLERY.md +++ b/docs/features/GALLERY.md @@ -60,7 +60,7 @@ Every image generated by Invoke has its generation information stored as text in Each image also has a context menu (ctrl+click / right-click). -Info button ![image](../assets/gallery/image_menu.png) +![image](../assets/gallery/image_menu.png) The options are (items marked with an * will not work with images that lack generation information): - ***Open in New Tab*** this will open the image alone in a new browser tab, separate from the Invoke interface. From fbfa29c2ef0ecf9450f477203794f86f4fd62d43 Mon Sep 17 00:00:00 2001 From: sarashinai Date: Fri, 12 Apr 2024 22:23:55 -0400 Subject: [PATCH 12/17] Update GALLERY.md --- docs/features/GALLERY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/GALLERY.md b/docs/features/GALLERY.md index eeb9891fb3..cc84dbf704 100644 --- a/docs/features/GALLERY.md +++ b/docs/features/GALLERY.md @@ -44,7 +44,7 @@ Each board has a context menu (ctrl+click / right-click). - ***Download Board*** this will add all the images in the board into a zip file and provide a link to it in a notification (image of notification) - ***Delete Board*** this will delete the board > [!CAUTION] -> *** This will delete all the images in the board and the board itself. *** +> This will delete all the images in the board and the board itself. ### Board Contents From c2e3c61f282b2a30a0f9ec267a90845bcd3edcf2 Mon Sep 17 00:00:00 2001 From: Jennifer Player Date: Fri, 12 Apr 2024 14:34:30 -0400 Subject: [PATCH 13/17] fix recall all when loras, controls, or hrf arent present --- .../web/src/features/metadata/util/parsers.ts | 73 ++++++++++++------- .../src/features/metadata/util/recallers.ts | 16 ++-- 2 files changed, 55 insertions(+), 34 deletions(-) diff --git a/invokeai/frontend/web/src/features/metadata/util/parsers.ts b/invokeai/frontend/web/src/features/metadata/util/parsers.ts index 9f5c14d94e..2a3e3158e8 100644 --- a/invokeai/frontend/web/src/features/metadata/util/parsers.ts +++ b/invokeai/frontend/web/src/features/metadata/util/parsers.ts @@ -156,8 +156,13 @@ const parseSteps: MetadataParseFunc = (metadata) => getProperty( const parseStrength: MetadataParseFunc = (metadata) => getProperty(metadata, 'strength', isParameterStrength); -const parseHRFEnabled: MetadataParseFunc = (metadata) => - getProperty(metadata, 'hrf_enabled', isParameterHRFEnabled); +const parseHRFEnabled: MetadataParseFunc = async (metadata) => { + try { + return await getProperty(metadata, 'hrf_enabled', isParameterHRFEnabled); + } catch { + return false; + } +}; const parseHRFStrength: MetadataParseFunc = (metadata) => getProperty(metadata, 'hrf_strength', isParameterStrength); @@ -224,12 +229,16 @@ const parseLoRA: MetadataParseFunc = async (metadataItem) => { }; const parseAllLoRAs: MetadataParseFunc = async (metadata) => { - const lorasRaw = await getProperty(metadata, 'loras', isArray); - const parseResults = await Promise.allSettled(lorasRaw.map((lora) => parseLoRA(lora))); - const loras = parseResults - .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') - .map((result) => result.value); - return loras; + try { + const lorasRaw = await getProperty(metadata, 'loras', isArray); + const parseResults = await Promise.allSettled(lorasRaw.map((lora) => parseLoRA(lora))); + const loras = parseResults + .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') + .map((result) => result.value); + return loras; + } catch { + return []; + } }; const parseControlNet: MetadataParseFunc = async (metadataItem) => { @@ -288,12 +297,16 @@ const parseControlNet: MetadataParseFunc = async (meta }; const parseAllControlNets: MetadataParseFunc = async (metadata) => { - const controlNetsRaw = await getProperty(metadata, 'controlnets', isArray); - const parseResults = await Promise.allSettled(controlNetsRaw.map((cn) => parseControlNet(cn))); - const controlNets = parseResults - .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') - .map((result) => result.value); - return controlNets; + try { + const controlNetsRaw = await getProperty(metadata, 'controlnets', isArray || undefined); + const parseResults = await Promise.allSettled(controlNetsRaw.map((cn) => parseControlNet(cn))); + const controlNets = parseResults + .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') + .map((result) => result.value); + return controlNets; + } catch { + return []; + } }; const parseT2IAdapter: MetadataParseFunc = async (metadataItem) => { @@ -348,12 +361,16 @@ const parseT2IAdapter: MetadataParseFunc = async (meta }; const parseAllT2IAdapters: MetadataParseFunc = async (metadata) => { - const t2iAdaptersRaw = await getProperty(metadata, 't2iAdapters', isArray); - const parseResults = await Promise.allSettled(t2iAdaptersRaw.map((t2iAdapter) => parseT2IAdapter(t2iAdapter))); - const t2iAdapters = parseResults - .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') - .map((result) => result.value); - return t2iAdapters; + try { + const t2iAdaptersRaw = await getProperty(metadata, 't2iAdapters', isArray); + const parseResults = await Promise.allSettled(t2iAdaptersRaw.map((t2iAdapter) => parseT2IAdapter(t2iAdapter))); + const t2iAdapters = parseResults + .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') + .map((result) => result.value); + return t2iAdapters; + } catch { + return []; + } }; const parseIPAdapter: MetadataParseFunc = async (metadataItem) => { @@ -394,12 +411,16 @@ const parseIPAdapter: MetadataParseFunc = async (metada }; const parseAllIPAdapters: MetadataParseFunc = async (metadata) => { - const ipAdaptersRaw = await getProperty(metadata, 'ipAdapters', isArray); - const parseResults = await Promise.allSettled(ipAdaptersRaw.map((ipAdapter) => parseIPAdapter(ipAdapter))); - const ipAdapters = parseResults - .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') - .map((result) => result.value); - return ipAdapters; + try { + const ipAdaptersRaw = await getProperty(metadata, 'ipAdapters', isArray); + const parseResults = await Promise.allSettled(ipAdaptersRaw.map((ipAdapter) => parseIPAdapter(ipAdapter))); + const ipAdapters = parseResults + .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') + .map((result) => result.value); + return ipAdapters; + } catch { + return []; + } }; export const parsers = { diff --git a/invokeai/frontend/web/src/features/metadata/util/recallers.ts b/invokeai/frontend/web/src/features/metadata/util/recallers.ts index 88af390a20..4f332e23a9 100644 --- a/invokeai/frontend/web/src/features/metadata/util/recallers.ts +++ b/invokeai/frontend/web/src/features/metadata/util/recallers.ts @@ -177,11 +177,11 @@ const recallLoRA: MetadataRecallFunc = (lora) => { }; const recallAllLoRAs: MetadataRecallFunc = (loras) => { + const { dispatch } = getStore(); + dispatch(lorasReset()); if (!loras.length) { return; } - const { dispatch } = getStore(); - dispatch(lorasReset()); loras.forEach((lora) => { dispatch(loraRecalled(lora)); }); @@ -192,11 +192,11 @@ const recallControlNet: MetadataRecallFunc = (controlN }; const recallControlNets: MetadataRecallFunc = (controlNets) => { + const { dispatch } = getStore(); + dispatch(controlNetsReset()); if (!controlNets.length) { return; } - const { dispatch } = getStore(); - dispatch(controlNetsReset()); controlNets.forEach((controlNet) => { dispatch(controlAdapterRecalled(controlNet)); }); @@ -207,11 +207,11 @@ const recallT2IAdapter: MetadataRecallFunc = (t2iAdapt }; const recallT2IAdapters: MetadataRecallFunc = (t2iAdapters) => { + const { dispatch } = getStore(); + dispatch(t2iAdaptersReset()); if (!t2iAdapters.length) { return; } - const { dispatch } = getStore(); - dispatch(t2iAdaptersReset()); t2iAdapters.forEach((t2iAdapter) => { dispatch(controlAdapterRecalled(t2iAdapter)); }); @@ -222,11 +222,11 @@ const recallIPAdapter: MetadataRecallFunc = (ipAdapter) }; const recallIPAdapters: MetadataRecallFunc = (ipAdapters) => { + const { dispatch } = getStore(); + dispatch(ipAdaptersReset()); if (!ipAdapters.length) { return; } - const { dispatch } = getStore(); - dispatch(ipAdaptersReset()); ipAdapters.forEach((ipAdapter) => { dispatch(controlAdapterRecalled(ipAdapter)); }); From 34438ce1af2da2a0c879a83e6fe2780a9d49911c Mon Sep 17 00:00:00 2001 From: Lincoln Stein Date: Wed, 3 Apr 2024 23:26:48 -0400 Subject: [PATCH 14/17] add simplified model manager install API to InvocationContext --- .../app/services/shared/invocation_context.py | 98 ++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) diff --git a/invokeai/app/services/shared/invocation_context.py b/invokeai/app/services/shared/invocation_context.py index 9994d663e5..176303b055 100644 --- a/invokeai/app/services/shared/invocation_context.py +++ b/invokeai/app/services/shared/invocation_context.py @@ -1,9 +1,10 @@ import threading from dataclasses import dataclass from pathlib import Path -from typing import TYPE_CHECKING, Optional, Union +from typing import TYPE_CHECKING, Any, Dict, Optional, Union from PIL.Image import Image +from pydantic.networks import AnyHttpUrl from torch import Tensor from invokeai.app.invocations.constants import IMAGE_MODES @@ -426,6 +427,101 @@ class ModelsInterface(InvocationContextInterface): model_format=format, ) + def install_model( + self, + source: str, + config: Optional[Dict[str, Any]] = None, + access_token: Optional[str] = None, + inplace: Optional[bool] = False, + timeout: Optional[int] = 0, + ) -> str: + """Install and register a model in the database. + + Args: + source: String source; see below + config: Optional dict. Any fields in this dict + will override corresponding autoassigned probe fields in the + model's config record. + access_token: Optional access token for remote sources. + inplace: If true, installs a local model in place rather than copying + it into the models directory + timeout: How long to wait on install (in seconds). A value of 0 (default) + blocks indefinitely + + The source can be: + 1. A local file path in posix() format (`/foo/bar` or `C:\foo\bar`) + 2. An http or https URL (`https://foo.bar/foo`) + 3. A HuggingFace repo_id (`foo/bar`, `foo/bar:fp16`, `foo/bar:fp16:vae`) + + We extend the HuggingFace repo_id syntax to include the variant and the + subfolder or path. The following are acceptable alternatives: + stabilityai/stable-diffusion-v4 + stabilityai/stable-diffusion-v4:fp16 + stabilityai/stable-diffusion-v4:fp16:vae + stabilityai/stable-diffusion-v4::/checkpoints/sd4.safetensors + stabilityai/stable-diffusion-v4:onnx:vae + + Because a local file path can look like a huggingface repo_id, the logic + first checks whether the path exists on disk, and if not, it is treated as + a parseable huggingface repo. + + Returns: + Key to the newly installed model. + + May Raise: + ValueError -- bad source + UnknownModelException -- remote model not found + InvalidModelException -- what was retrieved from remote is not a model + TimeoutError -- model could not be installed within timeout + Exception -- another error condition + """ + installer = self._services.model_manager.install + job = installer.heuristic_import( + source=source, + config=config, + access_token=access_token, + inplace=inplace, + ) + installer.wait_for_job(job, timeout) + if job.errored: + raise Exception(job.error) + key: str = job.config_out.key + return key + + def download_and_cache_model( + self, + source: Union[str, AnyHttpUrl], + access_token: Optional[str] = None, + timeout: Optional[int] = 0, + ) -> Path: + """Download the model file located at source to the models cache and return its Path. + + This can be used to single-file install models and other resources of arbitrary types + which should not get registered with the database. If the model is already + installed, the cached path will be returned. Otherwise it will be downloaded. + + Args: + source: A URL or a string that can be converted in one. Repo_ids + do not work here. + access_token: Optional access token for restricted resources. + timeout: Wait up to the indicated number of seconds before timing + out long downloads. + + Result: + Path of the downloaded model + + May Raise: + HTTPError + TimeoutError + """ + installer = self._services.model_manager.install + path: Path = installer.download_and_cache( + source=source, + access_token=access_token, + timeout=timeout, + ) + return path + class ConfigInterface(InvocationContextInterface): def get(self) -> InvokeAIAppConfig: From c140d3b1df3fb256f2baf789b7968c6f941b4ef0 Mon Sep 17 00:00:00 2001 From: Lincoln Stein Date: Fri, 12 Apr 2024 00:55:21 -0400 Subject: [PATCH 15/17] add invocation_context.load_ckpt_from_url() method --- invokeai/app/invocations/upscale.py | 13 ++-- .../app/services/shared/invocation_context.py | 67 +++++++++++++++++-- .../image_util/realesrgan/realesrgan.py | 6 +- .../backend/model_manager/load/load_base.py | 2 +- .../model_manager/load/load_default.py | 7 +- .../load/model_cache/model_cache_base.py | 1 - .../load/model_cache/model_cache_default.py | 3 +- .../app/services/model_load/test_load_api.py | 57 ++++++++++++++++ 8 files changed, 131 insertions(+), 25 deletions(-) create mode 100644 tests/app/services/model_load/test_load_api.py diff --git a/invokeai/app/invocations/upscale.py b/invokeai/app/invocations/upscale.py index d687384fcb..e09618960e 100644 --- a/invokeai/app/invocations/upscale.py +++ b/invokeai/app/invocations/upscale.py @@ -1,5 +1,4 @@ # Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654) & the InvokeAI Team -from pathlib import Path from typing import Literal import cv2 @@ -11,7 +10,6 @@ from pydantic import ConfigDict from invokeai.app.invocations.fields import ImageField from invokeai.app.invocations.primitives import ImageOutput from invokeai.app.services.shared.invocation_context import InvocationContext -from invokeai.app.util.download_with_progress import download_with_progress_bar from invokeai.backend.image_util.basicsr.rrdbnet_arch import RRDBNet from invokeai.backend.image_util.realesrgan.realesrgan import RealESRGAN from invokeai.backend.util.devices import choose_torch_device @@ -56,7 +54,6 @@ class ESRGANInvocation(BaseInvocation, WithMetadata, WithBoard): rrdbnet_model = None netscale = None - esrgan_model_path = None if self.model_name in [ "RealESRGAN_x4plus.pth", @@ -99,16 +96,13 @@ class ESRGANInvocation(BaseInvocation, WithMetadata, WithBoard): context.logger.error(msg) raise ValueError(msg) - esrgan_model_path = Path(context.config.get().models_path, f"core/upscaling/realesrgan/{self.model_name}") - - # Downloads the ESRGAN model if it doesn't already exist - download_with_progress_bar( - name=self.model_name, url=ESRGAN_MODEL_URLS[self.model_name], dest_path=esrgan_model_path + loadnet = context.models.load_ckpt_from_url( + source=ESRGAN_MODEL_URLS[self.model_name], ) upscaler = RealESRGAN( scale=netscale, - model_path=esrgan_model_path, + loadnet=loadnet.model, model=rrdbnet_model, half=False, tile=self.tile_size, @@ -118,6 +112,7 @@ class ESRGANInvocation(BaseInvocation, WithMetadata, WithBoard): # TODO: This strips the alpha... is that okay? cv2_image = cv2.cvtColor(np.array(image.convert("RGB")), cv2.COLOR_RGB2BGR) upscaled_image = upscaler.upscale(cv2_image) + pil_image = Image.fromarray(cv2.cvtColor(upscaled_image, cv2.COLOR_BGR2RGB)).convert("RGBA") torch.cuda.empty_cache() diff --git a/invokeai/app/services/shared/invocation_context.py b/invokeai/app/services/shared/invocation_context.py index 176303b055..e97d29d308 100644 --- a/invokeai/app/services/shared/invocation_context.py +++ b/invokeai/app/services/shared/invocation_context.py @@ -1,11 +1,14 @@ import threading from dataclasses import dataclass from pathlib import Path -from typing import TYPE_CHECKING, Any, Dict, Optional, Union +from typing import TYPE_CHECKING, Any, Callable, Dict, Optional, Union +from picklescan.scanner import scan_file_path from PIL.Image import Image from pydantic.networks import AnyHttpUrl +from safetensors.torch import load_file as safetensors_load_file from torch import Tensor +from torch import load as torch_load from invokeai.app.invocations.constants import IMAGE_MODES from invokeai.app.invocations.fields import MetadataField, WithBoard, WithMetadata @@ -488,13 +491,14 @@ class ModelsInterface(InvocationContextInterface): key: str = job.config_out.key return key - def download_and_cache_model( + def download_and_cache_ckpt( self, source: Union[str, AnyHttpUrl], access_token: Optional[str] = None, timeout: Optional[int] = 0, ) -> Path: - """Download the model file located at source to the models cache and return its Path. + """ + Download the model file located at source to the models cache and return its Path. This can be used to single-file install models and other resources of arbitrary types which should not get registered with the database. If the model is already @@ -522,10 +526,65 @@ class ModelsInterface(InvocationContextInterface): ) return path + def load_ckpt_from_url( + self, + source: Union[str, AnyHttpUrl], + access_token: Optional[str] = None, + timeout: Optional[int] = 0, + loader: Optional[Callable[[Path], Dict[str | int, Any]]] = None, + ) -> LoadedModel: + """ + Load and cache the model file located at the indicated URL. + + This will check the model download cache for the model designated + by the provided URL and download it if needed using download_and_cache_model(). + It will then load the model into the RAM cache. If the optional loader + argument is provided, the loader will be invoked to load the model into + memory. Otherwise the method will call safetensors.torch.load_file() or + torch.load() as appropriate to the file suffix. + + Be aware that the LoadedModel object will have a `config` attribute of None. + + Args: + source: A URL or a string that can be converted in one. Repo_ids + do not work here. + access_token: Optional access token for restricted resources. + timeout: Wait up to the indicated number of seconds before timing + out long downloads. + loader: A Callable that expects a Path and returns a Dict[str|int, Any] + + Returns: + A LoadedModel object. + """ + ram_cache = self._services.model_manager.load.ram_cache + try: + return LoadedModel(_locker=ram_cache.get(key=str(source))) + except IndexError: + pass + + def torch_load_file(checkpoint: Path) -> Dict[str | int, Any]: + scan_result = scan_file_path(checkpoint) + if scan_result.infected_files != 0: + raise Exception("The model at {checkpoint} is potentially infected by malware. Aborting load.") + return torch_load(path, map_location="cpu") + + path = self.download_and_cache_ckpt(source, access_token, timeout) + if loader is None: + loader = ( + torch_load_file + if path.suffix.endswith((".ckpt", ".pt", ".pth", ".bin")) + else lambda path: safetensors_load_file(path, device="cpu") + ) + + raw_model = loader(path) + ram_cache.put(key=str(source), model=raw_model) + return LoadedModel(_locker=ram_cache.get(key=str(source))) + class ConfigInterface(InvocationContextInterface): def get(self) -> InvokeAIAppConfig: - """Gets the app's config. + """ + Gets the app's config. Returns: The app's config. diff --git a/invokeai/backend/image_util/realesrgan/realesrgan.py b/invokeai/backend/image_util/realesrgan/realesrgan.py index c06504b608..7c4d90f5bd 100644 --- a/invokeai/backend/image_util/realesrgan/realesrgan.py +++ b/invokeai/backend/image_util/realesrgan/realesrgan.py @@ -1,6 +1,5 @@ import math from enum import Enum -from pathlib import Path from typing import Any, Optional import cv2 @@ -11,6 +10,7 @@ from cv2.typing import MatLike from tqdm import tqdm from invokeai.backend.image_util.basicsr.rrdbnet_arch import RRDBNet +from invokeai.backend.model_manager.config import AnyModel from invokeai.backend.util.devices import choose_torch_device """ @@ -52,7 +52,7 @@ class RealESRGAN: def __init__( self, scale: int, - model_path: Path, + loadnet: AnyModel, model: RRDBNet, tile: int = 0, tile_pad: int = 10, @@ -67,8 +67,6 @@ class RealESRGAN: self.half = half self.device = choose_torch_device() - loadnet = torch.load(model_path, map_location=torch.device("cpu")) - # prefer to use params_ema if "params_ema" in loadnet: keyname = "params_ema" diff --git a/invokeai/backend/model_manager/load/load_base.py b/invokeai/backend/model_manager/load/load_base.py index c336926aea..41a36d7b51 100644 --- a/invokeai/backend/model_manager/load/load_base.py +++ b/invokeai/backend/model_manager/load/load_base.py @@ -23,8 +23,8 @@ from invokeai.backend.model_manager.load.model_cache.model_cache_base import Mod class LoadedModel: """Context manager object that mediates transfer from RAM<->VRAM.""" - config: AnyModelConfig _locker: ModelLockerBase + config: Optional[AnyModelConfig] = None def __enter__(self) -> AnyModel: """Context entry.""" diff --git a/invokeai/backend/model_manager/load/load_default.py b/invokeai/backend/model_manager/load/load_default.py index 6774fc2989..451770c0cb 100644 --- a/invokeai/backend/model_manager/load/load_default.py +++ b/invokeai/backend/model_manager/load/load_default.py @@ -16,7 +16,7 @@ from invokeai.backend.model_manager.config import DiffusersConfigBase, ModelType from invokeai.backend.model_manager.load.convert_cache import ModelConvertCacheBase from invokeai.backend.model_manager.load.load_base import LoadedModel, ModelLoaderBase from invokeai.backend.model_manager.load.model_cache.model_cache_base import ModelCacheBase, ModelLockerBase -from invokeai.backend.model_manager.load.model_util import calc_model_size_by_data, calc_model_size_by_fs +from invokeai.backend.model_manager.load.model_util import calc_model_size_by_fs from invokeai.backend.model_manager.load.optimizations import skip_torch_weight_init from invokeai.backend.util.devices import choose_torch_device, torch_dtype @@ -95,7 +95,6 @@ class ModelLoader(ModelLoaderBase): config.key, submodel_type=submodel_type, model=loaded_model, - size=calc_model_size_by_data(loaded_model), ) return self._ram_cache.get( @@ -126,9 +125,7 @@ class ModelLoader(ModelLoaderBase): if subtype == submodel_type: continue if submodel := getattr(pipeline, subtype.value, None): - self._ram_cache.put( - config.key, submodel_type=subtype, model=submodel, size=calc_model_size_by_data(submodel) - ) + self._ram_cache.put(config.key, submodel_type=subtype, model=submodel) return getattr(pipeline, submodel_type.value) if submodel_type else pipeline def _needs_conversion(self, config: AnyModelConfig, model_path: Path, dest_path: Path) -> bool: diff --git a/invokeai/backend/model_manager/load/model_cache/model_cache_base.py b/invokeai/backend/model_manager/load/model_cache/model_cache_base.py index a8c2dd3e92..ec77bbe477 100644 --- a/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +++ b/invokeai/backend/model_manager/load/model_cache/model_cache_base.py @@ -143,7 +143,6 @@ class ModelCacheBase(ABC, Generic[T]): self, key: str, model: T, - size: int, submodel_type: Optional[SubModelType] = None, ) -> None: """Store model under key and optional submodel_type.""" diff --git a/invokeai/backend/model_manager/load/model_cache/model_cache_default.py b/invokeai/backend/model_manager/load/model_cache/model_cache_default.py index 2ba52d466c..919a7c4396 100644 --- a/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +++ b/invokeai/backend/model_manager/load/model_cache/model_cache_default.py @@ -30,6 +30,7 @@ import torch from invokeai.backend.model_manager import AnyModel, SubModelType from invokeai.backend.model_manager.load.memory_snapshot import MemorySnapshot, get_pretty_snapshot_diff +from invokeai.backend.model_manager.load.model_util import calc_model_size_by_data from invokeai.backend.util.devices import choose_torch_device from invokeai.backend.util.logging import InvokeAILogger @@ -157,13 +158,13 @@ class ModelCache(ModelCacheBase[AnyModel]): self, key: str, model: AnyModel, - size: int, submodel_type: Optional[SubModelType] = None, ) -> None: """Store model under key and optional submodel_type.""" key = self._make_cache_key(key, submodel_type) if key in self._cached_models: return + size = calc_model_size_by_data(model) self.make_room(size) cache_record = CacheRecord(key, model, size) self._cached_models[key] = cache_record diff --git a/tests/app/services/model_load/test_load_api.py b/tests/app/services/model_load/test_load_api.py new file mode 100644 index 0000000000..b99cc7d824 --- /dev/null +++ b/tests/app/services/model_load/test_load_api.py @@ -0,0 +1,57 @@ +from pathlib import Path + +import pytest + +from invokeai.app.services.invocation_services import InvocationServices +from invokeai.app.services.model_manager import ModelManagerServiceBase +from invokeai.app.services.shared.invocation_context import InvocationContext, build_invocation_context +from invokeai.backend.model_manager.load.load_base import LoadedModel +from tests.backend.model_manager.model_manager_fixtures import * # noqa F403 + + +@pytest.fixture() +def mock_context( + mock_services: InvocationServices, + mm2_model_manager: ModelManagerServiceBase, +) -> InvocationContext: + mock_services.model_manager = mm2_model_manager + return build_invocation_context( + services=mock_services, + data=None, # type: ignore + cancel_event=None, # type: ignore + ) + + +def test_download_and_cache(mock_context: InvocationContext, mm2_root_dir: Path): + downloaded_path = mock_context.models.download_and_cache_ckpt( + "https://www.test.foo/download/test_embedding.safetensors" + ) + assert downloaded_path.is_file() + assert downloaded_path.exists() + assert downloaded_path.name == "test_embedding.safetensors" + assert downloaded_path.parent.parent == mm2_root_dir / "models/.cache" + + downloaded_path_2 = mock_context.models.download_and_cache_ckpt( + "https://www.test.foo/download/test_embedding.safetensors" + ) + assert downloaded_path == downloaded_path_2 + + +def test_download_and_load(mock_context: InvocationContext): + loaded_model_1 = mock_context.models.load_ckpt_from_url("https://www.test.foo/download/test_embedding.safetensors") + assert isinstance(loaded_model_1, LoadedModel) + + loaded_model_2 = mock_context.models.load_ckpt_from_url("https://www.test.foo/download/test_embedding.safetensors") + assert isinstance(loaded_model_2, LoadedModel) + + with loaded_model_1 as model_1, loaded_model_2 as model_2: + assert model_1 == model_2 + assert isinstance(model_1, dict) + + +def test_install_model(mock_context: InvocationContext): + key = mock_context.models.install_model("https://www.test.foo/download/test_embedding.safetensors") + assert key is not None + model = mock_context.models.load(key) + assert model is not None + assert model.config.key == key From 3ead827d61fb3c935e3396d43455c12b6b59018f Mon Sep 17 00:00:00 2001 From: Lincoln Stein Date: Fri, 12 Apr 2024 21:05:23 -0400 Subject: [PATCH 16/17] port dw_openpose, depth_anything, and lama processors to new model download scheme --- .../controlnet_image_processors.py | 45 ++++++++++--------- invokeai/app/invocations/infill.py | 18 ++++---- .../app/services/shared/invocation_context.py | 4 +- .../image_util/depth_anything/__init__.py | 37 +++++---------- .../image_util/dw_openpose/__init__.py | 5 ++- .../image_util/dw_openpose/wholebody.py | 29 ++++-------- .../backend/image_util/infill_methods/lama.py | 39 +++++++--------- 7 files changed, 72 insertions(+), 105 deletions(-) diff --git a/invokeai/app/invocations/controlnet_image_processors.py b/invokeai/app/invocations/controlnet_image_processors.py index a49c910eeb..12a2ae9c96 100644 --- a/invokeai/app/invocations/controlnet_image_processors.py +++ b/invokeai/app/invocations/controlnet_image_processors.py @@ -137,7 +137,7 @@ class ImageProcessorInvocation(BaseInvocation, WithMetadata, WithBoard): image: ImageField = InputField(description="The image to process") - def run_processor(self, image: Image.Image) -> Image.Image: + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: # superclass just passes through image without processing return image @@ -148,7 +148,7 @@ class ImageProcessorInvocation(BaseInvocation, WithMetadata, WithBoard): def invoke(self, context: InvocationContext) -> ImageOutput: raw_image = self.load_image(context) # image type should be PIL.PngImagePlugin.PngImageFile ? - processed_image = self.run_processor(raw_image) + processed_image = self.run_processor(raw_image, context) # currently can't see processed image in node UI without a showImage node, # so for now setting image_type to RESULT instead of INTERMEDIATE so will get saved in gallery @@ -189,7 +189,7 @@ class CannyImageProcessorInvocation(ImageProcessorInvocation): # Keep alpha channel for Canny processing to detect edges of transparent areas return context.images.get_pil(self.image.image_name, "RGBA") - def run_processor(self, image: Image.Image) -> Image.Image: + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: processed_image = get_canny_edges( image, self.low_threshold, @@ -216,7 +216,7 @@ class HedImageProcessorInvocation(ImageProcessorInvocation): # safe: bool = InputField(default=False, description=FieldDescriptions.safe_mode) scribble: bool = InputField(default=False, description=FieldDescriptions.scribble_mode) - def run_processor(self, image: Image.Image) -> Image.Image: + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: hed_processor = HEDProcessor() processed_image = hed_processor.run( image, @@ -243,7 +243,7 @@ class LineartImageProcessorInvocation(ImageProcessorInvocation): image_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.image_res) coarse: bool = InputField(default=False, description="Whether to use coarse mode") - def run_processor(self, image: Image.Image) -> Image.Image: + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: lineart_processor = LineartProcessor() processed_image = lineart_processor.run( image, detect_resolution=self.detect_resolution, image_resolution=self.image_resolution, coarse=self.coarse @@ -264,7 +264,7 @@ class LineartAnimeImageProcessorInvocation(ImageProcessorInvocation): detect_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.detect_res) image_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.image_res) - def run_processor(self, image: Image.Image) -> Image.Image: + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: processor = LineartAnimeProcessor() processed_image = processor.run( image, @@ -291,7 +291,8 @@ class MidasDepthImageProcessorInvocation(ImageProcessorInvocation): # depth_and_normal not supported in controlnet_aux v0.0.3 # depth_and_normal: bool = InputField(default=False, description="whether to use depth and normal mode") - def run_processor(self, image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: + # TODO: replace from_pretrained() calls with context.models.download_and_cache() (or similar) midas_processor = MidasDetector.from_pretrained("lllyasviel/Annotators") processed_image = midas_processor( image, @@ -318,9 +319,9 @@ class NormalbaeImageProcessorInvocation(ImageProcessorInvocation): detect_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.detect_res) image_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.image_res) - def run_processor(self, image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: normalbae_processor = NormalBaeDetector.from_pretrained("lllyasviel/Annotators") - processed_image = normalbae_processor( + processed_image: Image.Image = normalbae_processor( image, detect_resolution=self.detect_resolution, image_resolution=self.image_resolution ) return processed_image @@ -337,7 +338,7 @@ class MlsdImageProcessorInvocation(ImageProcessorInvocation): thr_v: float = InputField(default=0.1, ge=0, description="MLSD parameter `thr_v`") thr_d: float = InputField(default=0.1, ge=0, description="MLSD parameter `thr_d`") - def run_processor(self, image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: mlsd_processor = MLSDdetector.from_pretrained("lllyasviel/Annotators") processed_image = mlsd_processor( image, @@ -360,7 +361,7 @@ class PidiImageProcessorInvocation(ImageProcessorInvocation): safe: bool = InputField(default=False, description=FieldDescriptions.safe_mode) scribble: bool = InputField(default=False, description=FieldDescriptions.scribble_mode) - def run_processor(self, image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: pidi_processor = PidiNetDetector.from_pretrained("lllyasviel/Annotators") processed_image = pidi_processor( image, @@ -388,7 +389,7 @@ class ContentShuffleImageProcessorInvocation(ImageProcessorInvocation): w: int = InputField(default=512, ge=0, description="Content shuffle `w` parameter") f: int = InputField(default=256, ge=0, description="Content shuffle `f` parameter") - def run_processor(self, image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: content_shuffle_processor = ContentShuffleDetector() processed_image = content_shuffle_processor( image, @@ -412,7 +413,7 @@ class ContentShuffleImageProcessorInvocation(ImageProcessorInvocation): class ZoeDepthImageProcessorInvocation(ImageProcessorInvocation): """Applies Zoe depth processing to image""" - def run_processor(self, image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: zoe_depth_processor = ZoeDetector.from_pretrained("lllyasviel/Annotators") processed_image = zoe_depth_processor(image) return processed_image @@ -433,7 +434,7 @@ class MediapipeFaceProcessorInvocation(ImageProcessorInvocation): detect_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.detect_res) image_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.image_res) - def run_processor(self, image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: mediapipe_face_processor = MediapipeFaceDetector() processed_image = mediapipe_face_processor( image, @@ -461,7 +462,7 @@ class LeresImageProcessorInvocation(ImageProcessorInvocation): detect_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.detect_res) image_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.image_res) - def run_processor(self, image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: leres_processor = LeresDetector.from_pretrained("lllyasviel/Annotators") processed_image = leres_processor( image, @@ -503,7 +504,7 @@ class TileResamplerProcessorInvocation(ImageProcessorInvocation): np_img = cv2.resize(np_img, (W, H), interpolation=cv2.INTER_AREA) return np_img - def run_processor(self, img): + def run_processor(self, img: Image.Image, context: InvocationContext) -> Image.Image: np_img = np.array(img, dtype=np.uint8) processed_np_image = self.tile_resample( np_img, @@ -527,7 +528,7 @@ class SegmentAnythingProcessorInvocation(ImageProcessorInvocation): detect_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.detect_res) image_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.image_res) - def run_processor(self, image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: # segment_anything_processor = SamDetector.from_pretrained("ybelkada/segment-anything", subfolder="checkpoints") segment_anything_processor = SamDetectorReproducibleColors.from_pretrained( "ybelkada/segment-anything", subfolder="checkpoints" @@ -573,7 +574,7 @@ class ColorMapImageProcessorInvocation(ImageProcessorInvocation): color_map_tile_size: int = InputField(default=64, ge=0, description=FieldDescriptions.tile_size) - def run_processor(self, image: Image.Image): + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: np_image = np.array(image, dtype=np.uint8) height, width = np_image.shape[:2] @@ -608,8 +609,8 @@ class DepthAnythingImageProcessorInvocation(ImageProcessorInvocation): ) resolution: int = InputField(default=512, ge=64, multiple_of=64, description=FieldDescriptions.image_res) - def run_processor(self, image: Image.Image): - depth_anything_detector = DepthAnythingDetector() + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: + depth_anything_detector = DepthAnythingDetector(context) depth_anything_detector.load_model(model_size=self.model_size) processed_image = depth_anything_detector(image=image, resolution=self.resolution) @@ -631,8 +632,8 @@ class DWOpenposeImageProcessorInvocation(ImageProcessorInvocation): draw_hands: bool = InputField(default=False) image_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.image_res) - def run_processor(self, image: Image.Image): - dw_openpose = DWOpenposeDetector() + def run_processor(self, image: Image.Image, context: InvocationContext) -> Image.Image: + dw_openpose = DWOpenposeDetector(context) processed_image = dw_openpose( image, draw_face=self.draw_face, diff --git a/invokeai/app/invocations/infill.py b/invokeai/app/invocations/infill.py index 418bc62fdc..edee275e72 100644 --- a/invokeai/app/invocations/infill.py +++ b/invokeai/app/invocations/infill.py @@ -38,7 +38,7 @@ class InfillImageProcessorInvocation(BaseInvocation, WithMetadata, WithBoard): image: ImageField = InputField(description="The image to process") @abstractmethod - def infill(self, image: Image.Image) -> Image.Image: + def infill(self, image: Image.Image, context: InvocationContext) -> Image.Image: """Infill the image with the specified method""" pass @@ -57,7 +57,7 @@ class InfillImageProcessorInvocation(BaseInvocation, WithMetadata, WithBoard): return ImageOutput.build(context.images.get_dto(self.image.image_name)) # Perform Infill action - infilled_image = self.infill(input_image) + infilled_image = self.infill(input_image, context) # Create ImageDTO for Infilled Image infilled_image_dto = context.images.save(image=infilled_image) @@ -75,7 +75,7 @@ class InfillColorInvocation(InfillImageProcessorInvocation): description="The color to use to infill", ) - def infill(self, image: Image.Image): + def infill(self, image: Image.Image, context: InvocationContext): solid_bg = Image.new("RGBA", image.size, self.color.tuple()) infilled = Image.alpha_composite(solid_bg, image.convert("RGBA")) infilled.paste(image, (0, 0), image.split()[-1]) @@ -94,7 +94,7 @@ class InfillTileInvocation(InfillImageProcessorInvocation): description="The seed to use for tile generation (omit for random)", ) - def infill(self, image: Image.Image): + def infill(self, image: Image.Image, context: InvocationContext): output = infill_tile(image, seed=self.seed, tile_size=self.tile_size) return output.infilled @@ -108,7 +108,7 @@ class InfillPatchMatchInvocation(InfillImageProcessorInvocation): downscale: float = InputField(default=2.0, gt=0, description="Run patchmatch on downscaled image to speedup infill") resample_mode: PIL_RESAMPLING_MODES = InputField(default="bicubic", description="The resampling mode") - def infill(self, image: Image.Image): + def infill(self, image: Image.Image, context: InvocationContext): resample_mode = PIL_RESAMPLING_MAP[self.resample_mode] width = int(image.width / self.downscale) @@ -132,8 +132,8 @@ class InfillPatchMatchInvocation(InfillImageProcessorInvocation): class LaMaInfillInvocation(InfillImageProcessorInvocation): """Infills transparent areas of an image using the LaMa model""" - def infill(self, image: Image.Image): - lama = LaMA() + def infill(self, image: Image.Image, context: InvocationContext): + lama = LaMA(context) return lama(image) @@ -141,7 +141,7 @@ class LaMaInfillInvocation(InfillImageProcessorInvocation): class CV2InfillInvocation(InfillImageProcessorInvocation): """Infills transparent areas of an image using OpenCV Inpainting""" - def infill(self, image: Image.Image): + def infill(self, image: Image.Image, context: InvocationContext): return cv2_inpaint(image) @@ -163,5 +163,5 @@ class MosaicInfillInvocation(InfillImageProcessorInvocation): description="The max threshold for color", ) - def infill(self, image: Image.Image): + def infill(self, image: Image.Image, context: InvocationContext): return infill_mosaic(image, (self.tile_width, self.tile_height), self.min_color.tuple(), self.max_color.tuple()) diff --git a/invokeai/app/services/shared/invocation_context.py b/invokeai/app/services/shared/invocation_context.py index e97d29d308..0d27b2520b 100644 --- a/invokeai/app/services/shared/invocation_context.py +++ b/invokeai/app/services/shared/invocation_context.py @@ -534,10 +534,10 @@ class ModelsInterface(InvocationContextInterface): loader: Optional[Callable[[Path], Dict[str | int, Any]]] = None, ) -> LoadedModel: """ - Load and cache the model file located at the indicated URL. + Download, cache, and Load the model file located at the indicated URL. This will check the model download cache for the model designated - by the provided URL and download it if needed using download_and_cache_model(). + by the provided URL and download it if needed using download_and_cache_ckpt(). It will then load the model into the RAM cache. If the optional loader argument is provided, the loader will be invoked to load the model into memory. Otherwise the method will call safetensors.torch.load_file() or diff --git a/invokeai/backend/image_util/depth_anything/__init__.py b/invokeai/backend/image_util/depth_anything/__init__.py index ccac2ba949..560d977b55 100644 --- a/invokeai/backend/image_util/depth_anything/__init__.py +++ b/invokeai/backend/image_util/depth_anything/__init__.py @@ -1,5 +1,4 @@ -import pathlib -from typing import Literal, Union +from typing import Literal, Optional, Union import cv2 import numpy as np @@ -10,7 +9,7 @@ from PIL import Image from torchvision.transforms import Compose from invokeai.app.services.config.config_default import get_config -from invokeai.app.util.download_with_progress import download_with_progress_bar +from invokeai.app.services.shared.invocation_context import InvocationContext from invokeai.backend.image_util.depth_anything.model.dpt import DPT_DINOv2 from invokeai.backend.image_util.depth_anything.utilities.util import NormalizeImage, PrepareForNet, Resize from invokeai.backend.util.devices import choose_torch_device @@ -20,18 +19,9 @@ config = get_config() logger = InvokeAILogger.get_logger(config=config) DEPTH_ANYTHING_MODELS = { - "large": { - "url": "https://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vitl14.pth?download=true", - "local": "any/annotators/depth_anything/depth_anything_vitl14.pth", - }, - "base": { - "url": "https://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vitb14.pth?download=true", - "local": "any/annotators/depth_anything/depth_anything_vitb14.pth", - }, - "small": { - "url": "https://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vits14.pth?download=true", - "local": "any/annotators/depth_anything/depth_anything_vits14.pth", - }, + "large": "https://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vitl14.pth?download=true", + "base": "https://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vitb14.pth?download=true", + "small": "https://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vits14.pth?download=true", } @@ -53,18 +43,14 @@ transform = Compose( class DepthAnythingDetector: - def __init__(self) -> None: - self.model = None + def __init__(self, context: InvocationContext) -> None: + self.context = context + self.model: Optional[DPT_DINOv2] = None self.model_size: Union[Literal["large", "base", "small"], None] = None self.device = choose_torch_device() - def load_model(self, model_size: Literal["large", "base", "small"] = "small"): - DEPTH_ANYTHING_MODEL_PATH = config.models_path / DEPTH_ANYTHING_MODELS[model_size]["local"] - download_with_progress_bar( - pathlib.Path(DEPTH_ANYTHING_MODELS[model_size]["url"]).name, - DEPTH_ANYTHING_MODELS[model_size]["url"], - DEPTH_ANYTHING_MODEL_PATH, - ) + def load_model(self, model_size: Literal["large", "base", "small"] = "small") -> DPT_DINOv2: + depth_anything_model_path = self.context.models.download_and_cache_ckpt(DEPTH_ANYTHING_MODELS[model_size]) if not self.model or model_size != self.model_size: del self.model @@ -78,7 +64,8 @@ class DepthAnythingDetector: case "large": self.model = DPT_DINOv2(encoder="vitl", features=256, out_channels=[256, 512, 1024, 1024]) - self.model.load_state_dict(torch.load(DEPTH_ANYTHING_MODEL_PATH.as_posix(), map_location="cpu")) + assert self.model is not None + self.model.load_state_dict(torch.load(depth_anything_model_path.as_posix(), map_location="cpu")) self.model.eval() self.model.to(choose_torch_device()) diff --git a/invokeai/backend/image_util/dw_openpose/__init__.py b/invokeai/backend/image_util/dw_openpose/__init__.py index c258ef2c78..17ca0233c8 100644 --- a/invokeai/backend/image_util/dw_openpose/__init__.py +++ b/invokeai/backend/image_util/dw_openpose/__init__.py @@ -3,6 +3,7 @@ import torch from controlnet_aux.util import resize_image from PIL import Image +from invokeai.app.services.shared.invocation_context import InvocationContext from invokeai.backend.image_util.dw_openpose.utils import draw_bodypose, draw_facepose, draw_handpose from invokeai.backend.image_util.dw_openpose.wholebody import Wholebody @@ -39,8 +40,8 @@ class DWOpenposeDetector: Credits: https://github.com/IDEA-Research/DWPose """ - def __init__(self) -> None: - self.pose_estimation = Wholebody() + def __init__(self, context: InvocationContext) -> None: + self.pose_estimation = Wholebody(context) def __call__( self, image: Image.Image, draw_face=False, draw_body=True, draw_hands=False, resolution=512 diff --git a/invokeai/backend/image_util/dw_openpose/wholebody.py b/invokeai/backend/image_util/dw_openpose/wholebody.py index 35d340640d..3628b0abd5 100644 --- a/invokeai/backend/image_util/dw_openpose/wholebody.py +++ b/invokeai/backend/image_util/dw_openpose/wholebody.py @@ -4,44 +4,31 @@ import numpy as np import onnxruntime as ort +import torch from invokeai.app.services.config.config_default import get_config -from invokeai.app.util.download_with_progress import download_with_progress_bar +from invokeai.app.services.shared.invocation_context import InvocationContext from invokeai.backend.util.devices import choose_torch_device from .onnxdet import inference_detector from .onnxpose import inference_pose DWPOSE_MODELS = { - "yolox_l.onnx": { - "local": "any/annotators/dwpose/yolox_l.onnx", - "url": "https://huggingface.co/yzd-v/DWPose/resolve/main/yolox_l.onnx?download=true", - }, - "dw-ll_ucoco_384.onnx": { - "local": "any/annotators/dwpose/dw-ll_ucoco_384.onnx", - "url": "https://huggingface.co/yzd-v/DWPose/resolve/main/dw-ll_ucoco_384.onnx?download=true", - }, + "yolox_l.onnx": "https://huggingface.co/yzd-v/DWPose/resolve/main/yolox_l.onnx?download=true", + "dw-ll_ucoco_384.onnx": "https://huggingface.co/yzd-v/DWPose/resolve/main/dw-ll_ucoco_384.onnx?download=true", } config = get_config() class Wholebody: - def __init__(self): + def __init__(self, context: InvocationContext): device = choose_torch_device() - providers = ["CUDAExecutionProvider"] if device == "cuda" else ["CPUExecutionProvider"] + providers = ["CUDAExecutionProvider"] if device == torch.device("cuda") else ["CPUExecutionProvider"] - DET_MODEL_PATH = config.models_path / DWPOSE_MODELS["yolox_l.onnx"]["local"] - download_with_progress_bar("yolox_l.onnx", DWPOSE_MODELS["yolox_l.onnx"]["url"], DET_MODEL_PATH) - - POSE_MODEL_PATH = config.models_path / DWPOSE_MODELS["dw-ll_ucoco_384.onnx"]["local"] - download_with_progress_bar( - "dw-ll_ucoco_384.onnx", DWPOSE_MODELS["dw-ll_ucoco_384.onnx"]["url"], POSE_MODEL_PATH - ) - - onnx_det = DET_MODEL_PATH - onnx_pose = POSE_MODEL_PATH + onnx_det = context.models.download_and_cache_ckpt(DWPOSE_MODELS["yolox_l.onnx"]) + onnx_pose = context.models.download_and_cache_ckpt(DWPOSE_MODELS["dw-ll_ucoco_384.onnx"]) self.session_det = ort.InferenceSession(path_or_bytes=onnx_det, providers=providers) self.session_pose = ort.InferenceSession(path_or_bytes=onnx_pose, providers=providers) diff --git a/invokeai/backend/image_util/infill_methods/lama.py b/invokeai/backend/image_util/infill_methods/lama.py index fa354aeed1..8c3f33efad 100644 --- a/invokeai/backend/image_util/infill_methods/lama.py +++ b/invokeai/backend/image_util/infill_methods/lama.py @@ -1,4 +1,3 @@ -import gc from typing import Any import numpy as np @@ -6,9 +5,7 @@ import torch from PIL import Image import invokeai.backend.util.logging as logger -from invokeai.app.services.config.config_default import get_config -from invokeai.app.util.download_with_progress import download_with_progress_bar -from invokeai.backend.util.devices import choose_torch_device +from invokeai.app.services.shared.invocation_context import InvocationContext def norm_img(np_img): @@ -28,18 +25,14 @@ def load_jit_model(url_or_path, device): class LaMA: + def __init__(self, context: InvocationContext): + self._context = context + def __call__(self, input_image: Image.Image, *args: Any, **kwds: Any) -> Any: - device = choose_torch_device() - model_location = get_config().models_path / "core/misc/lama/lama.pt" - - if not model_location.exists(): - download_with_progress_bar( - name="LaMa Inpainting Model", - url="https://github.com/Sanster/models/releases/download/add_big_lama/big-lama.pt", - dest_path=model_location, - ) - - model = load_jit_model(model_location, device) + loaded_model = self._context.models.load_ckpt_from_url( + source="https://github.com/Sanster/models/releases/download/add_big_lama/big-lama.pt", + loader=lambda path: load_jit_model(path, "cpu"), + ) image = np.asarray(input_image.convert("RGB")) image = norm_img(image) @@ -48,20 +41,18 @@ class LaMA: mask = np.asarray(mask) mask = np.invert(mask) mask = norm_img(mask) - mask = (mask > 0) * 1 - image = torch.from_numpy(image).unsqueeze(0).to(device) - mask = torch.from_numpy(mask).unsqueeze(0).to(device) - with torch.inference_mode(): - infilled_image = model(image, mask) + with loaded_model as model: + device = next(model.buffers()).device + image = torch.from_numpy(image).unsqueeze(0).to(device) + mask = torch.from_numpy(mask).unsqueeze(0).to(device) + + with torch.inference_mode(): + infilled_image = model(image, mask) infilled_image = infilled_image[0].permute(1, 2, 0).detach().cpu().numpy() infilled_image = np.clip(infilled_image * 255, 0, 255).astype("uint8") infilled_image = Image.fromarray(infilled_image) - del model - gc.collect() - torch.cuda.empty_cache() - return infilled_image From fa6efac436a40d1ef890467dd338f78589185828 Mon Sep 17 00:00:00 2001 From: Lincoln Stein Date: Sun, 14 Apr 2024 15:54:46 -0400 Subject: [PATCH 17/17] change names of convert and download caches and add migration script --- .../app/services/config/config_default.py | 9 +- .../model_install/model_install_default.py | 17 +++- .../app/services/shared/sqlite/sqlite_util.py | 2 + .../migrations/migration_10.py | 87 +++++++++++++++++++ invokeai/app/util/download_with_progress.py | 51 ----------- .../app/services/model_load/test_load_api.py | 2 +- 6 files changed, 111 insertions(+), 57 deletions(-) create mode 100644 invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py delete mode 100644 invokeai/app/util/download_with_progress.py diff --git a/invokeai/app/services/config/config_default.py b/invokeai/app/services/config/config_default.py index f453a56584..4b5a2004be 100644 --- a/invokeai/app/services/config/config_default.py +++ b/invokeai/app/services/config/config_default.py @@ -86,6 +86,7 @@ class InvokeAIAppConfig(BaseSettings): patchmatch: Enable patchmatch inpaint code. models_dir: Path to the models directory. convert_cache_dir: Path to the converted models cache directory. When loading a non-diffusers model, it will be converted and store on disk at this location. + download_cache_dir: Path to the directory that contains dynamically downloaded models. legacy_conf_dir: Path to directory of legacy checkpoint config files. db_dir: Path to InvokeAI databases directory. outputs_dir: Path to directory for outputs. @@ -146,7 +147,8 @@ class InvokeAIAppConfig(BaseSettings): # PATHS models_dir: Path = Field(default=Path("models"), description="Path to the models directory.") - convert_cache_dir: Path = Field(default=Path("models/.cache"), description="Path to the converted models cache directory. When loading a non-diffusers model, it will be converted and store on disk at this location.") + convert_cache_dir: Path = Field(default=Path("models/.convert_cache"), description="Path to the converted models cache directory. When loading a non-diffusers model, it will be converted and store on disk at this location.") + download_cache_dir: Path = Field(default=Path("models/.download_cache"), description="Path to the directory that contains dynamically downloaded models.") legacy_conf_dir: Path = Field(default=Path("configs"), description="Path to directory of legacy checkpoint config files.") db_dir: Path = Field(default=Path("databases"), description="Path to InvokeAI databases directory.") outputs_dir: Path = Field(default=Path("outputs"), description="Path to directory for outputs.") @@ -303,6 +305,11 @@ class InvokeAIAppConfig(BaseSettings): """Path to the converted cache models directory, resolved to an absolute path..""" return self._resolve(self.convert_cache_dir) + @property + def download_cache_path(self) -> Path: + """Path to the downloaded models directory, resolved to an absolute path..""" + return self._resolve(self.download_cache_dir) + @property def custom_nodes_path(self) -> Path: """Path to the custom nodes directory, resolved to an absolute path..""" diff --git a/invokeai/app/services/model_install/model_install_default.py b/invokeai/app/services/model_install/model_install_default.py index 20cfc1c4ff..f1fbcdb7ba 100644 --- a/invokeai/app/services/model_install/model_install_default.py +++ b/invokeai/app/services/model_install/model_install_default.py @@ -393,6 +393,11 @@ class ModelInstallService(ModelInstallServiceBase): rmtree(model_path) self.unregister(key) + @classmethod + def _download_cache_path(cls, source: Union[str, AnyHttpUrl], app_config: InvokeAIAppConfig) -> Path: + model_hash = sha256(str(source).encode("utf-8")).hexdigest()[0:32] + return app_config.download_cache_path / model_hash + def download_and_cache( self, source: Union[str, AnyHttpUrl], @@ -400,8 +405,7 @@ class ModelInstallService(ModelInstallServiceBase): timeout: int = 0, ) -> Path: """Download the model file located at source to the models cache and return its Path.""" - model_hash = sha256(str(source).encode("utf-8")).hexdigest()[0:32] - model_path = self._app_config.convert_cache_path / model_hash + model_path = self._download_cache_path(source, self._app_config) # We expect the cache directory to contain one and only one downloaded file. # We don't know the file's name in advance, as it is set by the download @@ -532,8 +536,13 @@ class ModelInstallService(ModelInstallServiceBase): if resolved_path in installed_model_paths: return True # Skip core models entirely - these aren't registered with the model manager. - if str(resolved_path).startswith(str(self.app_config.models_path / "core")): - return False + for special_directory in [ + self.app_config.models_path / "core", + self.app_config.convert_cache_dir, + self.app_config.download_cache_dir, + ]: + if resolved_path.is_relative_to(special_directory): + return False try: model_id = self.register_path(model_path) self._logger.info(f"Registered {model_path.name} with id {model_id}") diff --git a/invokeai/app/services/shared/sqlite/sqlite_util.py b/invokeai/app/services/shared/sqlite/sqlite_util.py index 1eed0b4409..61f35a3b4e 100644 --- a/invokeai/app/services/shared/sqlite/sqlite_util.py +++ b/invokeai/app/services/shared/sqlite/sqlite_util.py @@ -12,6 +12,7 @@ from invokeai.app.services.shared.sqlite_migrator.migrations.migration_6 import from invokeai.app.services.shared.sqlite_migrator.migrations.migration_7 import build_migration_7 from invokeai.app.services.shared.sqlite_migrator.migrations.migration_8 import build_migration_8 from invokeai.app.services.shared.sqlite_migrator.migrations.migration_9 import build_migration_9 +from invokeai.app.services.shared.sqlite_migrator.migrations.migration_10 import build_migration_10 from invokeai.app.services.shared.sqlite_migrator.sqlite_migrator_impl import SqliteMigrator @@ -41,6 +42,7 @@ def init_db(config: InvokeAIAppConfig, logger: Logger, image_files: ImageFileSto migrator.register_migration(build_migration_7()) migrator.register_migration(build_migration_8(app_config=config)) migrator.register_migration(build_migration_9()) + migrator.register_migration(build_migration_10(app_config=config, logger=logger)) migrator.run_migrations() return db diff --git a/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py b/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py new file mode 100644 index 0000000000..df341a6f2e --- /dev/null +++ b/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py @@ -0,0 +1,87 @@ +import pathlib +import shutil +import sqlite3 +from logging import Logger + +from invokeai.app.services.config import InvokeAIAppConfig +from invokeai.app.services.model_install.model_install_default import ModelInstallService +from invokeai.app.services.shared.sqlite_migrator.sqlite_migrator_common import Migration + +LEGACY_CORE_MODELS = { + # OpenPose + "https://huggingface.co/yzd-v/DWPose/resolve/main/yolox_l.onnx?download=true": "any/annotators/dwpose/yolox_l.onnx", + "https://huggingface.co/yzd-v/DWPose/resolve/main/dw-ll_ucoco_384.onnx?download=true": "any/annotators/dwpose/dw-ll_ucoco_384.onnx", + # DepthAnything + "https://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vitl14.pth?download=true": "any/annotators/depth_anything/depth_anything_vitl14.pth", + "https://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vitb14.pth?download=true": "any/annotators/depth_anything/depth_anything_vitb14.pth", + "https://huggingface.co/spaces/LiheYoung/Depth-Anything/resolve/main/checkpoints/depth_anything_vits14.pth?download=true": "any/annotators/depth_anything/depth_anything_vits14.pth", + # Lama inpaint + "https://github.com/Sanster/models/releases/download/add_big_lama/big-lama.pt": "core/misc/lama/lama.pt", + # RealESRGAN upscale + "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth": "core/upscaling/realesrgan/RealESRGAN_x4plus.pth", + "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth": "core/upscaling/realesrgan/RealESRGAN_x4plus_anime_6B.pth", + "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/ESRGAN_SRx4_DF2KOST_official-ff704c30.pth": "core/upscaling/realesrgan/ESRGAN_SRx4_DF2KOST_official-ff704c30.pth", + "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth": "core/upscaling/realesrgan/RealESRGAN_x2plus.pth", +} + + +class Migration10Callback: + def __init__(self, app_config: InvokeAIAppConfig, logger: Logger) -> None: + self._app_config = app_config + self._logger = logger + + def __call__(self, cursor: sqlite3.Cursor) -> None: + self._rename_convert_cache() + self._migrate_downloaded_models_cache() + self._remove_unused_core_models() + + def _rename_convert_cache(self) -> None: + """Rename models/.cache to models/.convert_cache.""" + legacy_convert_path = self._app_config.root_path / "models" / ".cache" + configured_convert_dir = self._app_config.convert_cache_dir + configured_convert_path = self._app_config.convert_cache_path + # old convert dir was in use, and current convert dir has not been changed + if legacy_convert_path.exists() and configured_convert_dir == pathlib.Path("models/.convert_cache"): + self._logger.info( + f"Migrating legacy convert cache directory from {str(legacy_convert_path)} to {str(configured_convert_path)}" + ) + shutil.rmtree(configured_convert_path, ignore_errors=True) # shouldn't be needed, but just in case... + shutil.move(legacy_convert_path, configured_convert_path) + + def _migrate_downloaded_models_cache(self) -> None: + """Move used core models to modsl/.download_cache.""" + self._logger.info(f"Migrating legacy core models to {str(self._app_config.download_cache_path)}") + for url, legacy_dest in LEGACY_CORE_MODELS.items(): + legacy_dest_path = self._app_config.models_path / legacy_dest + if not legacy_dest_path.exists(): + continue + # this returns a unique directory path + new_path = ModelInstallService._download_cache_path(url, self._app_config) + new_path.mkdir(parents=True, exist_ok=True) + shutil.move(legacy_dest_path, new_path / legacy_dest_path.name) + + def _remove_unused_core_models(self) -> None: + """Remove unused core models and their directories.""" + self._logger.info("Removing defunct core models.") + for dir in ["face_restoration", "misc", "upscaling"]: + path_to_remove = self._app_config.models_path / "core" / dir + shutil.rmtree(path_to_remove, ignore_errors=True) + shutil.rmtree(self._app_config.models_path / "any" / "annotators", ignore_errors=True) + + +def build_migration_10(app_config: InvokeAIAppConfig, logger: Logger) -> Migration: + """ + Build the migration from database version 9 to 10. + + This migration does the following: + - Moves "core" models previously downloaded with download_with_progress_bar() into new + "models/.download_cache" directory. + - Renames "models/.cache" to "models/.convert_cache". + """ + migration_10 = Migration( + from_version=9, + to_version=10, + callback=Migration10Callback(app_config=app_config, logger=logger), + ) + + return migration_10 diff --git a/invokeai/app/util/download_with_progress.py b/invokeai/app/util/download_with_progress.py deleted file mode 100644 index 97a2abb2f6..0000000000 --- a/invokeai/app/util/download_with_progress.py +++ /dev/null @@ -1,51 +0,0 @@ -from pathlib import Path -from urllib import request - -from tqdm import tqdm - -from invokeai.backend.util.logging import InvokeAILogger - - -class ProgressBar: - """Simple progress bar for urllib.request.urlretrieve using tqdm.""" - - def __init__(self, model_name: str = "file"): - self.pbar = None - self.name = model_name - - def __call__(self, block_num: int, block_size: int, total_size: int): - if not self.pbar: - self.pbar = tqdm( - desc=self.name, - initial=0, - unit="iB", - unit_scale=True, - unit_divisor=1000, - total=total_size, - ) - self.pbar.update(block_size) - - -def download_with_progress_bar(name: str, url: str, dest_path: Path) -> bool: - """Download a file from a URL to a destination path, with a progress bar. - If the file already exists, it will not be downloaded again. - - Exceptions are not caught. - - Args: - name (str): Name of the file being downloaded. - url (str): URL to download the file from. - dest_path (Path): Destination path to save the file to. - - Returns: - bool: True if the file was downloaded, False if it already existed. - """ - if dest_path.exists(): - return False # already downloaded - - InvokeAILogger.get_logger().info(f"Downloading {name}...") - - dest_path.parent.mkdir(parents=True, exist_ok=True) - request.urlretrieve(url, dest_path, ProgressBar(name)) - - return True diff --git a/tests/app/services/model_load/test_load_api.py b/tests/app/services/model_load/test_load_api.py index b99cc7d824..59b207f2ee 100644 --- a/tests/app/services/model_load/test_load_api.py +++ b/tests/app/services/model_load/test_load_api.py @@ -29,7 +29,7 @@ def test_download_and_cache(mock_context: InvocationContext, mm2_root_dir: Path) assert downloaded_path.is_file() assert downloaded_path.exists() assert downloaded_path.name == "test_embedding.safetensors" - assert downloaded_path.parent.parent == mm2_root_dir / "models/.cache" + assert downloaded_path.parent.parent == mm2_root_dir / "models/.download_cache" downloaded_path_2 = mock_context.models.download_and_cache_ckpt( "https://www.test.foo/download/test_embedding.safetensors"