From e98811cd04fb7a596169c09ebd9de30f18fdf33d Mon Sep 17 00:00:00 2001 From: arch3rPro Date: Sun, 17 May 2026 17:52:54 +0800 Subject: [PATCH] feat: add firecrawl and vane applications, fix lxserver form config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 首先新增Firecrawl和Vane两款应用,包含完整的应用配置、docker-compose编排、说明文档以及logo资源;同时修复了lxserver时区配置项中多余的rule参数。 --- apps/firecrawl/README.md | 65 ++++++++++ apps/firecrawl/README_en.md | 65 ++++++++++ apps/firecrawl/data.yml | 25 ++++ apps/firecrawl/latest/data.yml | 47 +++++++ apps/firecrawl/latest/data/.gitkeep | 0 apps/firecrawl/latest/data/api/.gitkeep | 0 .../firecrawl/latest/data/playwright/.gitkeep | 0 apps/firecrawl/latest/data/postgres/.gitkeep | 0 apps/firecrawl/latest/data/redis/.gitkeep | 0 apps/firecrawl/latest/docker-compose.yml | 121 ++++++++++++++++++ apps/firecrawl/logo.png | Bin 0 -> 8927 bytes apps/firecrawl/v2.10.0/data.yml | 47 +++++++ apps/firecrawl/v2.10.0/data/.gitkeep | 0 apps/firecrawl/v2.10.0/data/api/.gitkeep | 0 .../v2.10.0/data/playwright/.gitkeep | 0 apps/firecrawl/v2.10.0/data/postgres/.gitkeep | 0 apps/firecrawl/v2.10.0/data/redis/.gitkeep | 0 apps/firecrawl/v2.10.0/docker-compose.yml | 121 ++++++++++++++++++ apps/lxserver/1.9.1/data.yml | 1 - apps/lxserver/latest/data.yml | 1 - apps/vane/README.md | 57 +++++++++ apps/vane/README_en.md | 56 ++++++++ apps/vane/data.yml | 27 ++++ apps/vane/latest/data.yml | 18 +++ apps/vane/latest/docker-compose.yml | 19 +++ apps/vane/logo.png | Bin 0 -> 30498 bytes apps/vane/v1.12.2/data.yml | 18 +++ apps/vane/v1.12.2/docker-compose.yml | 19 +++ 28 files changed, 705 insertions(+), 2 deletions(-) create mode 100644 apps/firecrawl/README.md create mode 100644 apps/firecrawl/README_en.md create mode 100644 apps/firecrawl/data.yml create mode 100644 apps/firecrawl/latest/data.yml create mode 100644 apps/firecrawl/latest/data/.gitkeep create mode 100644 apps/firecrawl/latest/data/api/.gitkeep create mode 100644 apps/firecrawl/latest/data/playwright/.gitkeep create mode 100644 apps/firecrawl/latest/data/postgres/.gitkeep create mode 100644 apps/firecrawl/latest/data/redis/.gitkeep create mode 100644 apps/firecrawl/latest/docker-compose.yml create mode 100644 apps/firecrawl/logo.png create mode 100644 apps/firecrawl/v2.10.0/data.yml create mode 100644 apps/firecrawl/v2.10.0/data/.gitkeep create mode 100644 apps/firecrawl/v2.10.0/data/api/.gitkeep create mode 100644 apps/firecrawl/v2.10.0/data/playwright/.gitkeep create mode 100644 apps/firecrawl/v2.10.0/data/postgres/.gitkeep create mode 100644 apps/firecrawl/v2.10.0/data/redis/.gitkeep create mode 100644 apps/firecrawl/v2.10.0/docker-compose.yml create mode 100644 apps/vane/README.md create mode 100644 apps/vane/README_en.md create mode 100644 apps/vane/data.yml create mode 100644 apps/vane/latest/data.yml create mode 100644 apps/vane/latest/docker-compose.yml create mode 100644 apps/vane/logo.png create mode 100644 apps/vane/v1.12.2/data.yml create mode 100644 apps/vane/v1.12.2/docker-compose.yml diff --git a/apps/firecrawl/README.md b/apps/firecrawl/README.md new file mode 100644 index 0000000..b88ed10 --- /dev/null +++ b/apps/firecrawl/README.md @@ -0,0 +1,65 @@ +# Firecrawl + +将任意网站转换为适合大语言模型(LLM)的结构化数据。强大的网页抓取、爬取、搜索和数据提取平台。 + +## 功能特点 + +- **单页抓取**:将任意 URL 转换为 Markdown、HTML、截图或结构化 JSON +- **全站爬取**:递归抓取整个网站,智能过滤链接 +- **URL 发现**:通过站点地图、索引查询或搜索快速发现网站所有 URL +- **网络搜索**:搜索网络并一次性获取结果的完整页面内容 +- **AI 提取**:基于 LLM 的结构化数据提取,支持 Schema 验证 +- **智能代理**:自主研究代理,自动导航并提取数据 +- **远程浏览器**:支持远程浏览器会话,提供 CDP 访问和代码执行能力 +- **批量操作**:异步批量抓取多个 URL +- **自托管支持**:完全开源,支持本地部署,数据掌握在自己手中 + +## 使用说明 + +### 默认端口 + +- API服务: 3002 +- 队列管理界面: http://your-ip:3002/admin/YOUR_BULL_AUTH_KEY/queues + +### API 访问 + +部署后可以通过 `http://your-ip:3002` 访问 API 服务。 + +测试爬取端点: +```bash +curl -X POST http://localhost:3002/v1/crawl \ + -H 'Content-Type: application/json' \ + -d '{ + "url": "https://firecrawl.dev" + }' +``` + +### 数据目录 + +应用数据存储在以下目录: +- `./data/api` - API 服务数据 +- `./data/postgres` - PostgreSQL 数据库数据 +- `./data/redis` - Redis 缓存数据 +- `./data/playwright` - Playwright 浏览器缓存 + +### 环境变量 + +- `POSTGRES_USER` / `POSTGRES_PASSWORD`:PostgreSQL 数据库凭据 +- `BULL_AUTH_KEY`:队列管理界面的访问密钥 +- `OPENAI_API_KEY`:OpenAI API 密钥(用于 AI 相关功能,可选) + +### 架构说明 + +Firecrawl 自托管版本包含以下服务组件: +- **API 服务**:主 API 服务器,处理所有请求(4核CPU,8GB内存限制) +- **Playwright 服务**:浏览器自动化服务(2核CPU,4GB内存限制) +- **Redis**:任务队列和缓存后端 +- **RabbitMQ**:NuQ 消息代理 +- **PostgreSQL**:任务状态管理数据库 + +## 相关链接 + +- 官方网站: https://www.firecrawl.dev +- GitHub: https://github.com/firecrawl/firecrawl +- 文档: https://docs.firecrawl.dev +- Discord社区: https://discord.gg/firecrawl diff --git a/apps/firecrawl/README_en.md b/apps/firecrawl/README_en.md new file mode 100644 index 0000000..7323644 --- /dev/null +++ b/apps/firecrawl/README_en.md @@ -0,0 +1,65 @@ +# Firecrawl + +Turn any website into LLM-ready structured data. A powerful web scraping, crawling, search and data extraction platform. + +## Features + +- **Single Page Scraping**: Convert any URL to Markdown, HTML, screenshots, or structured JSON +- **Multi-Page Crawling**: Recursively scrape entire websites with intelligent link filtering +- **URL Discovery**: Discover all URLs on a website instantly via sitemaps, index queries, or search +- **Web Search**: Search the web and get full page content from results in a single call +- **AI Extraction**: LLM-powered structured data extraction with schema validation +- **Autonomous Agent**: AI research agent that automatically navigates and extracts data +- **Remote Browser**: Remote browser sessions with CDP access and code execution +- **Batch Operations**: Asynchronous bulk scraping of multiple URLs +- **Self-Hosted**: Fully open source, supports local deployment with complete data control + +## Usage + +### Default Port + +- API Service: 3002 +- Queue Admin UI: http://your-ip:3002/admin/YOUR_BULL_AUTH_KEY/queues + +### API Access + +After deployment, access the API at `http://your-ip:3002`. + +Test the crawl endpoint: +```bash +curl -X POST http://localhost:3002/v1/crawl \ + -H 'Content-Type: application/json' \ + -d '{ + "url": "https://firecrawl.dev" + }' +``` + +### Data Directories + +Application data is stored in the following directories: +- `./data/api` - API service data +- `./data/postgres` - PostgreSQL database data +- `./data/redis` - Redis cache data +- `./data/playwright` - Playwright browser cache + +### Environment Variables + +- `POSTGRES_USER` / `POSTGRES_PASSWORD`: PostgreSQL database credentials +- `BULL_AUTH_KEY`: Access key for the queue admin UI +- `OPENAI_API_KEY`: OpenAI API key for AI-powered features (optional) + +### Architecture + +The self-hosted version includes the following service components: +- **API Service**: Main API server handling all requests (4 CPU cores, 8GB RAM limit) +- **Playwright Service**: Browser automation service (2 CPU cores, 4GB RAM limit) +- **Redis**: Job queue and cache backend +- **RabbitMQ**: NuQ message broker +- **PostgreSQL**: Job state management database + +## Links + +- Website: https://www.firecrawl.dev +- GitHub: https://github.com/firecrawl/firecrawl +- Documentation: https://docs.firecrawl.dev +- Discord: https://discord.gg/firecrawl diff --git a/apps/firecrawl/data.yml b/apps/firecrawl/data.yml new file mode 100644 index 0000000..afee0de --- /dev/null +++ b/apps/firecrawl/data.yml @@ -0,0 +1,25 @@ +name: Firecrawl +tags: + - 开发工具 + - AI + - 爬虫 +title: 将任意网站转换为适合大语言模型的结构化数据 +description: + en: Turn any website into LLM-ready structured data. Scrape, crawl, search and extract clean markdown, structured JSON or screenshots from websites + zh: 将任意网站转换为适合大语言模型的结构化数据。支持抓取、爬取、搜索和提取干净的 Markdown、结构化 JSON 或截图 +additionalProperties: + key: firecrawl + name: Firecrawl + tags: + - DevTool + - AI + - Crawler + shortDescZh: 将任意网站转换为适合大语言模型的结构化数据 + shortDescEn: Turn any website into LLM-ready structured data + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.firecrawl.dev + github: https://github.com/firecrawl/firecrawl + document: https://docs.firecrawl.dev diff --git a/apps/firecrawl/latest/data.yml b/apps/firecrawl/latest/data.yml new file mode 100644 index 0000000..6d96ed6 --- /dev/null +++ b/apps/firecrawl/latest/data.yml @@ -0,0 +1,47 @@ +additionalProperties: + formFields: + - default: "3002" + envKey: PANEL_APP_PORT_HTTP + label: + en: API Port + zh: API端口 + required: true + type: number + edit: true + rule: paramPort + - default: "CHANGEME" + envKey: BULL_AUTH_KEY + label: + en: Bull Queue Admin Key + zh: 队列管理密钥 + required: true + type: text + edit: true + rule: paramCommon + - default: "firecrawl" + envKey: POSTGRES_USER + label: + en: PostgreSQL Username + zh: 数据库用户名 + required: true + type: text + edit: true + rule: paramCommon + - default: "" + envKey: POSTGRES_PASSWORD + label: + en: PostgreSQL Password + zh: 数据库密码 + required: true + type: password + edit: true + rule: paramCommon + - default: "" + envKey: OPENAI_API_KEY + label: + en: OpenAI API Key (Optional) + zh: OpenAI API密钥(可选) + required: false + type: text + edit: true + rule: "" diff --git a/apps/firecrawl/latest/data/.gitkeep b/apps/firecrawl/latest/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/firecrawl/latest/data/api/.gitkeep b/apps/firecrawl/latest/data/api/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/firecrawl/latest/data/playwright/.gitkeep b/apps/firecrawl/latest/data/playwright/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/firecrawl/latest/data/postgres/.gitkeep b/apps/firecrawl/latest/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/firecrawl/latest/data/redis/.gitkeep b/apps/firecrawl/latest/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/firecrawl/latest/docker-compose.yml b/apps/firecrawl/latest/docker-compose.yml new file mode 100644 index 0000000..04b41a4 --- /dev/null +++ b/apps/firecrawl/latest/docker-compose.yml @@ -0,0 +1,121 @@ +services: + firecrawl-api: + image: ghcr.io/firecrawl/firecrawl:latest + container_name: ${CONTAINER_NAME} + restart: always + environment: + - HOST=0.0.0.0 + - PORT=${PANEL_APP_PORT_HTTP} + - REDIS_URL=redis://firecrawl-redis:6379 + - REDIS_RATE_LIMIT_URL=redis://firecrawl-redis:6379 + - PLAYWRIGHT_MICROSERVICE_URL=http://firecrawl-playwright:3000/scrape + - POSTGRES_USER=${POSTGRES_USER:-firecrawl} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-firecrawl} + - POSTGRES_DB=firecrawl + - POSTGRES_HOST=firecrawl-postgres + - POSTGRES_PORT=5432 + - USE_DB_AUTHENTICATION=false + - NUM_WORKERS_PER_QUEUE=8 + - CRAWL_CONCURRENT_REQUESTS=10 + - MAX_CONCURRENT_JOBS=5 + - BROWSER_POOL_SIZE=5 + - OPENAI_API_KEY=${OPENAI_API_KEY:-} + - BULL_AUTH_KEY=${BULL_AUTH_KEY:-CHANGEME} + - NUQ_RABBITMQ_URL=amqp://firecrawl-rabbitmq:5672 + - ENV=local + - EXTRACT_WORKER_PORT=3004 + - WORKER_PORT=3005 + - HARNESS_STARTUP_TIMEOUT_MS=60000 + - TZ=Asia/Shanghai + depends_on: + firecrawl-redis: + condition: service_started + firecrawl-playwright: + condition: service_started + firecrawl-rabbitmq: + condition: service_healthy + firecrawl-postgres: + condition: service_started + ports: + - "${PANEL_APP_PORT_HTTP}:3002" + command: node dist/src/harness.js --start-docker + ulimits: + nofile: + soft: 65535 + hard: 65535 + volumes: + - ./data/api:/app/data + networks: + - 1panel-network + labels: + createdBy: "Apps" + cpus: 4.0 + mem_limit: 8G + memswap_limit: 8G + + firecrawl-playwright: + image: ghcr.io/firecrawl/playwright-service:latest + container_name: ${CONTAINER_NAME}-playwright + restart: always + environment: + - PORT=3000 + - PROXY_SERVER= + - PROXY_USERNAME= + - PROXY_PASSWORD= + - ALLOW_LOCAL_WEBHOOKS=false + - BLOCK_MEDIA=false + - MAX_CONCURRENT_PAGES=10 + - TZ=Asia/Shanghai + volumes: + - ./data/playwright:/tmp/.cache + networks: + - 1panel-network + tmpfs: + - /tmp/.cache:noexec,nosuid,size=1g + labels: + createdBy: "Apps" + cpus: 2.0 + mem_limit: 4G + memswap_limit: 4G + + firecrawl-redis: + image: redis:alpine + container_name: ${CONTAINER_NAME}-redis + restart: always + command: redis-server --bind 0.0.0.0 + networks: + - 1panel-network + volumes: + - ./data/redis:/data + + firecrawl-rabbitmq: + image: rabbitmq:3-management + container_name: ${CONTAINER_NAME}-rabbitmq + restart: always + command: rabbitmq-server + healthcheck: + test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"] + interval: 5s + timeout: 5s + retries: 3 + start_period: 5s + networks: + - 1panel-network + + firecrawl-postgres: + image: postgres:16-alpine + container_name: ${CONTAINER_NAME}-postgres + restart: always + environment: + - POSTGRES_USER=${POSTGRES_USER:-firecrawl} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-firecrawl} + - POSTGRES_DB=firecrawl + - TZ=Asia/Shanghai + networks: + - 1panel-network + volumes: + - ./data/postgres:/var/lib/postgresql/data + +networks: + 1panel-network: + external: true diff --git a/apps/firecrawl/logo.png b/apps/firecrawl/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1dc00e6393db2213584086ae26f0045ade5a59 GIT binary patch literal 8927 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 Z$3EUfy5&|M2CEX!NhjfS1o%@>m zexGAM`^)|d-VYocFmT0M=Q`J~R=B3RA}$ss){`esaFw8P+E1RKG$6mg=)iA;2Ty8% zZzwL>iZV|sN2qt7JfVN0Bqy!=>D|AqrwwlM*B5<`h0;yU%_@}dq%Ug6+hmH75wpOL|q3-KAZN*#N(g%@52p4pyjFCHH* z+a76*qWlSYQ5D+30yqJqsVkI11++2${e>Jz74{Acd_s=G^cxEN5S{rNe-QbTDe@Dv z|NF`R9fSYBIuLw|hAc6Q*sF)MQEwKVL-fy&kN0hlWDn=x{CaNMu6lUhmo4*91&A`W zzj5N}x>h~ra=SatdBn+iyxU&4-lBWFQoLH&mLO|A3g(&g+&TEe3Qk?It0j?h+|#~2 z?E1I&c)$E8kJv!Fo*VTQ@@*s!@Rj!;)w!A4J&i+9fl_>*hsq}2M|jZmet>_4J#+0; zmE`jDg`p!*C-6nOx6MK65l_aG2c>epCf1^N`lB)CjOm&es0+}?6$sLwo4jOcz}gPO z$C9UObK5uS`kt!b5XGQ&cetaqWs0Je)Ig#=J*?NeU zYKpqu^Y~p4J(jRVBA$tz_dE)t>M^!kbKmFlm^_@Mg#INOPnQV%Iba4@+{~oVL{b;q}rvQ(^!W~nVy_T&xh=tPP?DSHP(-ASJJAdDQ z_9l_VYOSrn#NEoKW9qdnaDsnc%-gRX`aODGP2@a~NZcKD9d%&Pbsyf1EQ?VX=0yZe z7G`JKZNn3BM6i=I^SoY3NyKXfQUxIuq$M0ddWnETzQQJet zIYCXxaHUJM3+F{Q{=SjRFVgqvwqJNVK*ZjIZLCR08)Ax~uCaaS0Ywz|)3yenf7my} zIy0xFHpazhO1NKLOC~6%nmVu6zxmzUzY05kvF|`1$hPFS9xdGYV)PYpw%^0`(YOjv z&wn2@-W8kI-q7v1G1D4oiC;b6yz=-%CMo<1XmDL!oHNCdEFwbaS=tPYqz}EAiMUXc zJ6w2%+q7Yq_vtUPFFC$9yz5afLO%A<2&;y#Nm^UD%#yBQi1$H71xv!+%9U>wC4z`+hhT)<@&f-OM|kHGFX$8IquS z!v1%|J+91qHmq*kL+ME6?KE$|w+szcz*JH`k`qOa_ zSyw@<1ZB4O$-vd=Tc;MmLd#ytL{8Orfx;b|!IszOsVjqhKc~zoK*hbYMpwCm-Dzr4 zc;%u>D(MNg@Ir|t3hT^|jH|z1ZfBasyxa=28`0A@7A%YTL@QH(8=qbwz-eS4=$KyD zDH_<{K&5~hxYJ8%U)~_(ciFrgJoLPoYvI#+w3hiqi(zw9yx`aKVc3M21FoM)Xj2~j zi;k&J(r!EHn3bK4oarmGpjmQl24j%$WL1&5T!h8xssyA(Z1s@fPt$%SRkDG3c-5q~ zijQ)ch0)cDA+X#(PUY@Sil(}i2tuYBqeSQ%n-7{ejaPqx}g1lci>`~=h z)@OI%)4XjlE;i3k7(}$SV8oKC8l=D4S*A1rwG%Zey6o7aE$j0-Xk<0|*h9MdaC?aF zcehTr-c~zJFKGDc2fh-^ZPSF#LchSB@#n+Lr$od?&(6wxWl67|2eNH7+6k7>{ng_pf+&WGXH&&d^{DM?=&S|ybX)+QMSM}9?D zi(L5)vEja3#rFeiNZz}Cy53CbiuFA!NS5ohMqyN%+9_AVGj1Z@62qv<(~W(T^U9uc zkdg}?(QFC~9O@u_gYFIGjvVJ&0*cfgUi)(4drBOZ1Ffnm%NIBIhkkUzOuEUO>q#2OjR(}6&xg7XO~IH zJ9-jk%-4bR&y^`XZ&@1REmE$3@q?ecu)fgcydA!f7ET~zAzvx; zW-4yp$3FM_^O?{-I=`Q8eUVt+Y)tWHu6aj_YOr8gBLg&+hR)o7Mjt0I)xiYfPuU%T zzs1Mqs*)PAHF}n{Yn)Xs5xNdqps7T}1dYCO0PFsB4X^0bN=c`Uk( z5eYNbB??6Byv=q?UpbMhS!hy)ZLZyyPN%EGP9k+`F=gN%TF$3eo0sn$rJ4$GoAlp#GAmHeS?Bne?{Hzs^-E(g5r1WC$sCkv2kAc>N2{H1 zh0A_Oy7`TQGP3r^p+*fNn(4(L360U=XZ3#j?sWsb;%|Y|P=@|li&&beVS}mckG&MD zKTk&@lM&T1a#jPcRJfygtcqO)nRe6}z8SzdLDSkCf*nbyr|r=KSt|l|Lc;y3ju=-X z6}98atGR)AcBP!8@=p=_B%3Xr>@E`@z%YzZX71pfd!V}+LFzr0eS~S>Y!G9nnSEl6 z9CUvi7Dcm%e?9$+vnUK~d@eKipgvnJEZ1?RF>RvI4_ld!IvXDBDWpoyEkx)upqXa6r~kQ@E8HSMmOtSQ)|!mW z1bW{iP+Fr^U3g-0oIevMEo}`~&l+~|z&0`9ir@`*po#YJzD0C0@Me#RYS7fCIUO8* z&P!eSY?h3EP=M?}_M#nb@MmPG@Lk8|e?L}%D@9TjbcW`QBr+%$f4+M(CyXn6YWNW> zJ(!%tS=hr6d_5t~fuKTXHZT-IUdZDa5*`@05ogNqs`2%Zm_>5`2t!aqLW^k3+KtK- zpH#z#H)g&Fel34e!mROfGm-o{rz^a$R#)Eeo~`=49h8FG#<48ap%>=cMoj&icqw z1Jrp}nsqkCGh^4WDDdq$7ud$f+=g*z;Ez+A_}`YxrPYJx!L_X)D$A zhaRWEx=JBKFqQOy$nxtTuM7LVYap zA`v1Qyid`}sUv*JxjX9CKjpStloC=m{f2XCG_OzxfORmlROIi`ut5WWIjnq zt8YZ?@Tb{!mIt1F`S*|t@5t06)IEU?(kFYcG6xNkfkOu_@2e}Ao6gmfYD}}9Ub2x1 zf(tPALu^CR~TLrEIMq-|Z^%ybp!pqt!TP?bA3z|aV z8=>981O?VLtpWvkL6)G=_laL@OJO&Z%L10DOXb)^$!lScYmq!5;VkKFKyMTaj-_*s zKmP&|xgXgM4vfWnAK^71Rx=`MALZ0Ez>*=y|9)|$Nvbz6K;lIpZqO)U4&9R0t@1sj ztE5vJhL(oJ=y0CfA;w1cbFiQXBW18A(aRqy0^a00=ge--L{=_qa=!fxp+Nv1Wr=H3 z`AC1Qo^$nNhGCsQgM?+*!J&FhM}kiUHaD}ZDQKexlVYTv0p5*#hWH`e>Z*|)D!d=x zMY(T$>0MGLZ&yB5`X!wMK;W;;0IV0=tMp=+SC+HbG(Ah^yVmuHcz)rJ0N9H7e6F$h zKK)8hW#dnK0Qg1kfcFz1DP<}lI;3JWI4UEd}qY}3c zy0IrX&!U}xtqRtp*~VDS_OrO%@h-frTEqN`HXs7rWknw868q-xEp9CH=h(hN+xk& zSs8K0`>?#@A5iNBP{^6f{zfB6;JAtN z95*d_6Y_R!Ms8Qx+3VL8c~~!&EuRG>mc3}1v9Qq8f_z#mtx_`e=HE=z`GLBNnAo3w z>xA2Ox5?A>OL%z!D^sjodh@C(iek3A|HY5rGT3zoT#6jKTeB^#C41Rk2bga^)aiY? z*)3)YhplM3ALLu84aPwc#QrXi^($~}1-A`#v44|{LSVIr&)Tem{0$RwyDuQz5xz4% zSd#@>O<9A>(+ zAV!pfNY(CTpE!;qrY-7FzQ1N+0>C9+yt>&b;3l=&Bi7gbbFb;Nr_nDRiYDKbHwrX@ zF#^o$Rl|o-7ta#5_#oHZb@e1vrDG3p1YAjS>_c28jDI_hDRS92l`fW#3V3ISE5Vx& z-rHbr@6}*3g&~#2KOY%if7!}M(R3xwT*4#{rX!}R;@XdJY}-8_vQb13xO{EPOE$7C zO6s)#)-uf~@Jo?$(V~#N6c3DxsRdzu6n^$h68Z#m;vC{d3`U9{|*- zu}(V{V!XPT#{VN#;; z`up7ssK#g_DhLQ=lcGaTn?6Y4{!B4MkANIO>C>ebbd?hKcJF98C1Fb%9~*^up=xFC zTWHeXlhshVnB=I`NFCSC=V;Noq!%rRK0KKKIMzzvnFbd}NnF@bRYTR78Oxu(l!E2b zU;lNRF(w;OBuaL^+T?q0$Tql4v>VS8yad-2p0_Ee+OKR@uvfx+O^_W0J=qD|w?TH; z_oGf<##SZ#UkYuOeXWcztAWBW8)3pa9r9B3-Oq4jQ*Z1ZRwD+%$9* zZq+_8F^g2Gp;0V54{?tLP_C`|#bNJBD;at+3k0u_JVfN|qTT1ycpv^)a2|qscN;JZ zkOjM0v+jSX9Q5w9f)A06_D=QQW3##o(eb}LtY7vGC^_L*U~_IKprWGv@R5$G*y#X7 z!_O{uqOHZjp}O}fR{7?r3qQ7-C5d5A8jL@ck0Vok0T&aWFQSo*~n@maUn1s~`>%*x&HgSK;C#{cJ#FQrt9neZ=<*|ypnd|hp0{NXAsY1=hd6>*#&;Vi zVRtLKWOf`2Ps5~l5Hu)-O#P_i2ra@;vhg8TEYg&ga{{Ja0_jlC&F3)>rm8{q%JnGt zCp)40HY~`J7_om|fS~Y9Z^f`c%WMnB4Ihk1aJyZM@-8~rk!v;-4e~gj(hp@$Heih1 zyKTjTs-n{dHOY`h$%+R=M&k86y@GBnl(JLsXfxXH_enl{Tpo=^>5uWpd@dFeT_JsG z6ye^no30j%8*bn)mkMR(N{ib+;KDbR%Z*?eEv3zQ75s0oAlkQ5cFZPGEbjK(5Kr4H zWi5HK#ti8F@EaL^RypeZp&qcMJkV}PJJ8#5lwtfr{u>Qcfu;?yUFp#YZJF)zaL@Km zbZE0fr?T(B=#@Op$8JJTfmKn7@RpJt-eIQXY7E*>rmM3%^pHp+JZOPpES@5*r)8!G z8B-i73bD~^5YiKTVkUoI~zC-IMeKfm>26p zw9Nx7(?H}^>AKLq^^dvtkh%uA9gZgo6*KJ$Iz&Cg4M6; z@anNPCHHe>W00;Cje*@Alk#`|_0*5Mv4@RIS-`&Qyf=kbL=tOGo{JYsVYBkJsf>vhB+qq*k)l26S zgh)WChYN)9gFVbtsHG%*qbWwtO2f073YlXUxr;XFB-;XN>j@u%e4BF!ckJOh8)u1e z+FilwzEWruFQI~pi%=@H=W^}zPfh?`?3^7QcytOQN+!u$Fu|%G+PaK1xnuNxyj^zU z|5+5J2I|X`Zg@Bfm5gF{j(C1^_ge@9Lfv|8sNEbL7LgsWHM2YeN>O)eK4Teb$xD7x z_A(x#jqQPPpWGXq8UWg2-hVQtPA&;b(XaJ9vM!KKPe?~Jb|lh-nx;5_Yl#>5`lyLr z+Bb{LY0ErB8+dafxvHV<{Q4BFG!dMCe%}0hr2jnwDwb*u%p%zYiOrfT$zl!=sg0Yq zaq+6(%K4;p)$7)1pT6(OTjWS+M72M7fcozta07Hn`}2apj4SEeC{`u3&agcEtF|my zCuW6WMgFkRH{U;?8AR(W?|BkYBG(oATdqv!_=UtmKDB4zbtaM|`4J8P?i(9Npapu* zY!IiAqD_76F1{Q2S>AfHw|aLvI{LpFX~rrFN}g8$36O^ zo7K#jmw;V&QFqlkL@GCHr5{C+cb|WpVT_xQdf%qwDOnVT!gQ>W_A5^XdTdl5HJHK8 zfRhS6f-(r({a_|B){fV|?f#!rJ=ZO7L7#Bc4ZX^qV^aY~#(IWRE5(;o^9V4Z_A{yk zJnYhW_rgeBymb%?%V5ZXC@Ua193i`P?VGksOw`gg3P~3jy^b7hyiF5|A>t(p8cQau zbM|?UFKjV)+gg+XIU&*H{8TUAt9}B6@h&89ash){=KL4;R}9Z;!hd6`lUNj{iOt^sr94$tu1O0ys#ZnUxd+H(3w zv>jHpal{C(iC41zdnacNx`D6E23@xozQ1jf>q9*PbiuH~5P?n?e#@N=mM1@LxfF!l z`|(cQ)~?kg@6SG>Ux~RDT{^2_%7bE}C|F@i-BA@(e?@sl^K$xSWrpWN-}#y3&DPRd zJvB;>AiDdKZddjn01sD5sGL{Jozd4nzjqSoSpB3LgnMljZrZOKO^LqW2JA-MKhMTh zxWDpA=q^%1bCWmF2HuZ^zBs?{EF;MOV;YEyiYdbmr7z*u8nUq{^~JQ@N3qDUh5bj?zPWno)6PHY@WW!EkjaP*DkqvOR36G1h#t>h{+%eFMI^&&s zSg{IEi-1BW{r3VPB`_AI1|7e8ZI;mQvuwCWQNBgNOf&Gg>#Svhn)xJdrr~a2zR%gs zT0#KofZ|JDHlnBN@czh)qCEl0mKZ0B`)`O9OHKGkOa&HdE}zTSz2%o0RM9LAu9OT} zUWYBh=~5;D$XQ+VSdMOe>wNSYf?*|c@E)`9_@<#I7f&J=3#FOTK*mM@+Fagq(@K@Iz>oSPQb$n&RTEuDuXQhqOW0uT@6$B z<}B>Qm$;&TUAL8PA7bo2#~i|9C!wT;XhrJ?0_=omZ=)QWjP&l zJOJ!{i`x1ZH!^^5C%%p@Z&ps=MX~!@6*i}@J_YIvAgJio@I6U@!fdf}1W4Xp#5aZb z%H@u642IHvW~2VJ5}?(F-(jj1J_WJ*`@JuQUAiz|H_kLZ;b23Q8%rYS>I7;&amxQj zYo5@%2O_vu_-Z@TrMJ1AC6Oscgz<0P%sVaZB*D_VnF#6}0F^Z95oN+{4%;3d0#d)& z+Pu2$u*!Km^Lw3$x>#IjDquL``Znst2syJLGz7nTGR{+!(b`Z>?4ZFyPVL z8Bo^Kk!$vxwuKK7|2o;{??{Sme9MI&ko{UK0z}Wttkf-#Ble@`*;_7Ay5f-;+lSKX z@c`HK!9YAwHi!B}_pzg3Ul&#e>)m&}DMB4?>8qa~mqGf6*B=k78GcWIijQOr*kWFc zh;S!i=hX`VQq7|@dS~2mAf(OV$jXn3QK3h8^wnvtuE5y@k&(4SMgHF?tzuSHSQf#_ zqZdU$HjBvcUE^s-F-`%YJOjhvBjAM{vG3xRLSH9nYfYO4c3)ZM_*{fzzS7cRG?Zy= zA*$>rGUD;O^TC+;Q?tF~A(LB-sa~uh&$xZChvY!)lA6~89dAyQwQpX}dQP7Vxi! z3k}wDgup+k=*10U`GX37TDpDQp>;?fhrO0Vo%>L~nBV2$_0aTp!pI1hrD3g#yWl;s z5d~XwbQ$ti#5T5fqF^{a_vM=s?)`Tp<5(slYcHL76nB$s_E;L4zE$PjTEqAMUAr8H zDgdvCH-M|hTqd42bDGs$QJp_;ZD@IQxY`%GyoAY`Nw7%E)E-9N04BLR zjJ`FX#BtRS`jcj3W(vEToc%zsCPN)=Yh5JKI0 z2QqE*jsi6b}HI2luP^gHfmbv~ZL~XK+gg>fg;MH+AvDqMdaa0H& zfyp;ODE~H`$lS1$&3@?%0iV?Z%KMD~>jLl;1V|4L5PKTK6qW4=unSr1;rT9|t3j2n z;&;O-&Mkzt@{fIRM0as_PGSUqlDZ=QcdHf)I4Ab5`TTc~K2Bw29W7V@zT!$2Di@k? z8Gu1c9wV|A76waaR2)+qbbg{?Od1D?->}Je7$;M52DC2^1Dm|yH>+Lr9q%w_tl(e! zFgy!ecsrs=Ubf9(gUrBdYf6?Lx#1me>PvkOa@0+iaL~0WnHsECZHIS$Ek=_=`6j?pNis|taDCn?3=o&9qqEp%{u1TkAvVgg zE_PW4x(DA0aZ99>2C-2yCBC-52z@P;V*|t83Wg+jRPxa~lZLvTflxWk>?eH#(t}5k zp)<$vwCM-|3Oj5qoV9m{*+JmUBp%ojvm|v}2sE2d*~)x6LHgVejx7eD&*>|L7lD(O znR#5x-Y~$Yn1lgS7Xw<7Zz8@yERuM_+5b`c+^ zS`6S{Z*g!JC5erkMsvI*1yIG+U^uw!c#It!gtog`9!uec@G>FImCw7g_|tE+XNY`7!V4ddCgsYmn7b!nS)NkwOjT%J0&ni-%TpGQzh730TYRuapc zKeS<1E}gC~S;^)eb0~*lozvSXK}wPGG-3gnt|$_MV(Kwdxs{nagzD`LIYM3*%IGF8 zV9UV2R{VH_Q}`3mPk;35P9x^Ne7mVvgH4S}C)1{`ROfDc?8iv0W8&Fjh2sohg&eEU`p1OTxY4|)E>y?5Vpg?S77hlpoRDyAx#>OhV^vR;(a>=V; zl-k3Eq^K-_1VdYGus!H8uXCd{I%ke;V_)e0Y(mijfz)7g(>G!?MwSddYky{*wk+PX zg6{`uwmdq)zh2%oc+3&l2y_gvsw0Ton9>;BN=*&f5zT<@f$HJry%S%p$;07pNoj|T zSjV3FLS4(yWLumi#MO3p@*lU^00>CD)uz;@k(0_IX+8BOjsR-H8bI5BPPdovqooQk zWAbWHm<+>>uBhyk3q{JwNzsTpW$e6823Y??a%jDeI-aZ!*vOf+f>=jK0qY^a05QZ> zqiW#ry{B_hM`KYYLx^4;%Kzc5Pk!q=<;WMa{K!r9nZ}}@C&nFRpZlllDDnH{0 z=cF{7F=0lHPFX1f)zi%jA@^UPT)iF^yi|Y?;!{RbI48jZQJGLj(v#|p5*!p2Sd#Q| zREQc-aj`({WlLTz5oOLu1pxX17N|a`Oby2D|CfbBww=hx>bG!#8FIY>7B8~!>p|Os zn)HCYh1$WLXGd&=N#7hkNKggRr#Sm%Gm9JpoBuu}cZVk~Ntjd;h?UhhM6p32_;r_O z&Ld%6uaymG+&fHefdc7`wxcm)JSURuaTni8wdjlyJ0Q={cE|JKsrH#!^agQt2>Qif z)0icJid_{bO)1;wsVqGvD*uwl;f{Iq(s(RfwPci2EY|T}>991EgKzHDfj1Ck*m%Sb zm&yXGYiAahdx26VX>j5e!046UA&WEo)vRhTrmkO3Zn1z8?Nxra@dT`^1S?Hs(4#VT zQ0BGiY_0krVItM)1zSz_W$eakW6pCS|*R?h)W2dQA*j6+P0lNCwASBylN;wabe01Fd; zJyz1!8xwmnUoVNJVdQk3wVJ^cJ``fI+-A(&5l!)e#T%JJ^Sm!asGi=Q-*330_=96S zgI18t`|4R}NPe`MD$H0lj&2|b&=HBfeH)eGUO;>71VUs}=|M=xh3~BxRZXGj=I@#>v;fnSC8smlOoagqU3-y^qHd+ z2EKk(#C*-D1l3lymm{%J*LF)z2mqUk=boFE>k%y=p0D*_9{}@pnuXFlGe(~i$l)3vt_$xrU-V89Oo6%zK_yz1ZNGsLmCCdw3 zx$Zt;;0D|B0|8I!Di0QTc|G?^i`NdV4tD@%y?S-#63OI6nAfotx#W9v z62JP_V7k@|OnAe9r~L2<@YtA=|D{njef{uBBW)!lG$n^t0$78q7F)tZAdy`l3o40^ zM36X>w_}QQJvQV33-e_cX}LQYLSie2o?P$CMUR4-YRt+PcZ~It_q!UafWVG}bf)Ny z$mCt-8k6HC0}9pXVnp{!UQ3ABspwoq{d8}$1Mm_$NFdH##68R70*8&7#Xup~DxPgW)LnSiG*IKIr@K(t$muq#C@}H+QSmuD{!fxU zzLr-j?@!{7CB~DcM|&czN+hI%=$EsyYqxl=i8AGq$o@z72dHnpTv4F%c72UF1LnVU z`$|keEBA(o;28ZKO~uu3yEj3GxpA2kr0m)O%Y}#QdpA*qw?o8+Ni8#Nv3LKOaND(7 zs?WvT+vJ28`MJeJe!sY3KvW^27pZ=6B)sOyI6(Trrt|K&=OzvCotQd4LTxWc_ZRV(j!BY>`$d`nob zy(m_j`mfrJR@2)@wYA>#7|kmFIOG7fm&L?wVbfAn20%N{;NBvZb(TSJ2Ck4}QVC3F zd~197d>0cD{bLh9W!WY}pBRJWC>_wq*H%GrDj-FX|5cG9_}aYEK$!oN**y@RlxmZl z=j}M}dqu{tETjmebt{*NF~@l6iN)_p1U_vpVY5&F7l^?OuiBi5tgG zfj`-HX*Ti1{t}FcUoKn;gJVyC(6l(M_C~DG_^LbqY4Jm}@RCR-FfTcxal9T-#E(L1 z_7h(XV8#7>#?L@6xCyx7R7gB&liH3RehM24cDKoCmKgt;`FXF@42l0FK3%PyduchS zA9cXw3OInzX_e_AVZ1!T0gm8sLhlL#pd905vBFeXcC?!>;& zv0p!}gB)x)GD-|8EJs3^-vPr2`5gCnDvpnqrw;15SviOWbC47&K%5o%cO#1o2kF&d zMePd<3L7HX-|xXqhpNEos=GNke8moTPrA~Ftu zy?_uk*kIkdoRuLPd52EAp|{>EacpTkO3`Z_g~ z5(C``^wRT}fdJR+*ko2UklYRhq6e=+{Pwot-RJ|n_$RnO&!^vZeea_M2-Ru`+b?PF zVW!8>Cm#vp=3m-F64XH+hb@;OPsxmUe-yK^P{-_~7(c!7+}sj&CpPjmxG+}3vMI+s z1~OIQ>Rmy;9Guwhv7FLPXQD3XrSt6t|R-(o)%|aox!aRmc%g(nZ@O z%|Hgrf%H;B>7wJiC8WBW_&G{r_HR7i4w<}k$nK?-SxX4N^NOE$-Z*Cglyumm$4R%j z`gKwgWOPNeBb6T8d0p!O2oBrudG?U%cQ5ON*O&0^#C2t5Q#X>ToNeh0MN zQ%Z6^)cIQ1UwJEr0I`8zqgj_L%FNCTWQ`ikHB z@u(1PNiHa7bRd}TggG28I^-<%dM~{LntGh;Tj;l!a1%bLwF&qjF%ocqgLy&PChe-R z$rbOyZgO+~tSH|i0m)xv*x|)m(|tbS4m!~7gxRjsPza%iN+g14rAU?)xphMlrWVhB zWq4^>@@=rHTJE2Gp*MB9K9D!&1%!wCUbtLnVmt!n(UN#eC0w*&q4*KSxbE zg0vaztgiiVG1}qtj|~dS@H;kJZ)HN0cmg#b{{9``;o@ot2;17l?;xXf$)B|@rT9zY z21M`S1hc6+;W69Hjn8O?(p>mK#m}02*%>0A`*c^Z6opJv)WZ z%hfu*?Bu^p;Y5-KnrNd`Y%(TI0if^X6FS1~=l{+b%;}Quq~emEI+^R(StOn1dYeGi z8Cw|{^2L=TpkfecPm?o}rxOb7DB9tmP{@!oN-U)uE0-buSxUwCrMhaQHd$zXoBv|M z4_URwLYD}o^Zi8s6fYPJeKfF+i!@k~*5~gJJVKhZWxtD>oSs$#`2I6-NnveZIGE%| z4(o*Uh2{jN8Gf6_v;tJT8%hzu3HGEnlX5py``sL1;t^O|xZ6b`_)OqPK|mOPqOMG`nX(u=*}vW~+5}gCQsE=RbU4Ld zs*Dzg3v&2SnE+xWti5sfZU{tEfQzHZhSfTZ-fK*)B|nZ!=FBEKQU3*9kh;_$t`~-7 z9oX0SlKU*<_q&>5ewD<7Ens=3{)zDjze4#ql$d=fhecpC*2|(THdqxbi*hx{wskVZ zgMYc~=T{p?4fs}nV>_KWUtMFHr(*pl1{E{cv^`h)c_<{!*s6 z_xT;2Y~pb*6^}#hm;#^r8d5`#lh6)~slKa?6H#J|oWG1$qzwRG%I12M!F%i_r+f3^5;S_9|)CmLW+z(~WoQW<%5IxMf=yf1`G2+$fbnLIEu55pHU z1Nh?P;rRS=STZzW5JVXV1C!AELY$|M+_f$=9HHbzWpb4HkIOgH^=o8uVQwtz(w$zL zN&1~0ZMTa6Zo%$;(~SEpQvySMA#dz?p#o)wXo`Tb*1QHD0l{+wrF2$tmizn>a27_O zylJm2$N3lAP;Au*d6QEQlA%6ZZmrDvMWqy8%N0uP3>9!)f#7?FlV2I4(?r;z*w~U+ zmPx5bi%en&IbIJA6yx-{^;0U^34Iju4buvt3p_VDJoTH*L+Ws^z)~=Di|C6v+L2-$9dRPu3&&GtvKQpwHBUI1!z1byCA)GQxyG+dD-8u6sbmUdmD_UXb zyQaI}QADcJW@V*cBJ>9KYMzIPX7z4AULqqxOWAF2E+x(J74 z=C@-oyAl%AMcExcJH(J@O2Mk_EKhZC`Z+M5ITK-*|9rF(eQ(r)5&>k;oP^;d@*K1R zcOrisLQ<&TlUnY4mo>k|i)yGOkBw)bRtX$S;mbg44R*%RBr>AFcWcV|JNe_$3DhLr z4w}JL_I)o0hW_eDF9Bc1p(n#Zf0zr&w)RUP42?|``p}-#UZ=zeZ3~3-021#VrqBMy zOz7EKX4ejdMqOnAcBQ@mmsU4f6jOkD+D% zT?}8Kn%?oNny8t>3tHraX4GWw@_|B0nW^$7bu$;@e~S#5eBLcu1y*R7)&aZiMkGJc z7k4yEWt)EtHJ@^RW#HZdIa3@YG2#4fQ+z927i}5XC1@u;>0OPP&_o=23_J75Kz$c&%kP@xpT;vtZsE+n6O1vrj;s928ZfZC<75Om$P0G`#vh`5k8 zCZM&HzAtr37A^VdW@t>9xF6$dZYo1P0w7E=Wl8O)?x?{Y&rH0Jk2VrC6r6SE^Ir8= zh_82;j_j>;7+AKH1$`^ERBhls*~wF8Ze`;WWhZ#0APD_XYVrrBSC<7ld5ms{0=h&r zNU$vd8?|%{g^IB)GSkNY*F#AMdn|g%2X(s>tw&YDR&?mj=ftup$y#rUt9EZu#^H6CBjms z=ni*RIpd3vE~Gibv56gd9Bj;%y0o%|4NW-1lOvB^AklmHBreW|stW-GmATkxnG4Ij z8XTW=HiXdsA|X^a+zqn9M~t^Xh#;5YB{U2|Yj*0u5s{n-hVVgt+@av~*TIhi;eUJ` z7l&JO*eL<9I0kNhkS6>DfcAWB>2#{7UpkPUUe3DogLp`^G%6r8J0z+Uf;GhHTi=_E6kh|7$&m2u zHjPlz^qqWuO1BV!bibYUGU-92N8HXkK#fXuiW1;95IV`)VIK@-5nR;lNNA=ZfP4o; z9z|@;r^#E*IBKF+_aQiZn%A2=eiRwH=+5!Rv=sFnBr=S%$Eq)Wk+kuWNKZ8Y;S)c* zl2VJ-2fp9SSIefW{pen;Z&mLz3HynGfyuUMsx%_B(cs{ChOe0>Tn5 z)DRJp2-ZbsG!(@_u{aKoAVercNLNIRJtc};`w&5(-9?gIl`lxFt|IsMuC&avTtp)C`42jwrjLQ-N;&s2|NF+jebOd= z$|ZMTzQ1!gA|PO>t|r-Q|4EmW1IL^YmOp_O_(M^(;rcheQ+oP6km7%HXbmZHSi=QU z$_qVX&#t%F&Ulz>19Uq?jo2I^hhrXwVWL!0v^DFZ5ek4>FVI=(*9|sx$B$=lbF+8X zu)q@UX`z}<23VR4ed23ck2kxf$OE%d`Qriymdy~kjEL^e=7`qOh6^A|T?N?WiUZJ? zMFK0@J)LvngE8+ zN)cy35EO?FjkIV}%b?;XDtAJYf)*6K#Wg@?BJRujiu}Vzr?AO>GLO*G-L|6wCn#K- z7{8A+|2FL+L4h7Anq9B$&O6Kbhn)UB@Z^ew}9q;BZtakuv4C`{1gh4RGWFuQwi zJ#SLuCmex&;6wB$-XWRAQE8Uy#KLcYG2%k4;T4bO`P!sKAR-b~Lr3_480uEYoliey zW~{XJ0Y?kEC|gLxCByKF6c7DQt(Whmdfiuk)L>wT;sm|cPiIAinggmA45xcIi?S7P z?byoo=AZ4Ug5%Xvt?2~|@fLj;299wu9!-O0KP-PdVsWXPMA%N-?ZpZ7J?@5vQ9Ad! z0jEJ<(1yjKWARLX$eGUx)MQ}4=}gJ|?itgCcCTE+@mmN8pf3Uv^V(HIbC+<8`M`(5 z7ps?LQoxiy-E*wr1ce#NOcJ3I5@#UbqPR+^orrmj)(^InWZ6^3$^0R*0{l~>vWTwI zOjI*%9&O08IL4m>v;}t?pJ+RKn~2xRpdm-ENs8(R_ExxIR$1&sq@Du?K@t=C6kRw1 z?2`d#S0!2n`C_0T#nq!YWe;Pu5;}fVW`LJ-QXKi(t4r86$=VBdu6TsOA31+cSfv<0 zL*m5tOOD8L0jryDt@Nw8gI#C7CGgtrlunOWNfi#V)xNYUSpuWx>mW+pAD$BCt+cLc$=(((1+6~YHN!IK*t{rY^vM?*l()JJC)nNDHk3~_m zZjcPIUfL3N25i-Pzq10m9^DtIUr#*>#SdIGt+%Xf;;sDo$J_G>%%6>!y?z8DrG6Y8 z+nWE_E|`LTiNx#j&GvWwW*)i{ZNZM;#}jljTp>WPL~r_CO;@x%+?WB;gz#N=?UZnL z4-6GpR@~*||2e@|x$Q>~Cyki_8P6Qvz@%~m&errrzk7O8VEL;$Yg?dSS?6^KG(UBc z*b70Pm?dP#tef;b0*v?A0yrwqi9EAZD5*cw^S>V<&*1lGTI2>qA+7Yco|{PpMPG4L z&$5o^`wRcS!zofoUq`wD1A0KPj`~aHUWE-u?12(vQufF}(Ks3eX1r!$x<$bwa9o=l zkn&Sw3~J(Q1~}Vm#&@^?>dqIMbu#HzUb2QU-YjyDV^;b|Kod$<1bJf?Oqx%Kmz+#s znm!(u*U!p>`|fWNi9P1?y!*Sp(|xp0Ue4wPi#gVuV~+Wc-+d3hsWcBK zj|jLt?5y9C&c8@P?Pcx=vVNz%nOwHlrt|vrTUr^jq{Qhz#2Zk?*(mefHjANh`QKO0 z6F1f}XBgTi?l0rRf5Y+Fl2a1prw)(v&A?NU4`AAfr_;@qYdxaq;=8tv^Sm@;6XF8p zN5N!WZ2Rvi{;&0aAQd?#(i?g}m703S(xq^VQ0TMRWPebadd}%HW+YqX6ZS_lzYzh( zYex7wmkDaP(l!8$cWB$L_-i^k@Opq1%lnnXBtS3b9c|Fn`O>mp!`MmUr(%!wNbX6& z>_3)t1Z{Vg?-3*p1XW#bF9&ZHQh~~PlL3O=quUc!w@PMGy~?$Z6hV@8rHmEl6A# zo0|gvfGB+j7iTv&4Yy}kA?ueRhH0_5_}8gs1SLp|M|mBU8eMTr-OLgY8>4_yEI8=V|t>6a|{a` z#f^Y(sc|eU-#!Y571fw1S3By5;EQz~rEK z;T^qej?6QCQK4r|CsKI^QeIxqkLio#ETs?G@TL+|W0Pnn5D{W(EytEly`rp2d!Mll zVy#i~MUBj#wRM96a$wdxtt$n0oDWhv^U`RH73a-Y1^ol52vzMBWMt$Ja~WE%Ch@W~ z>3g0z;dPcP>Pq9ihxDlrcvj7t@L5Fap_*;)!5|Y;yRxUk#7WEl9@p`eSgJRzQPCC* z>iUUIsQ=ZIqanl!*Jjq5K!AA4zFbGoa54*Xqoa_|W6dsggY@SzaPKi)D@>Y)eBOcmnGdQZ z3bVX~t3;55Uzq-%Cg0s56bf#UguQk@7wlHn!q;vvj~OVIegI@4LO}XA@R_Q9gH2>t_*B5fDuPX)1JEKFY0jgh`1D_{y{b6{UvtvH- z6LK4YzGQCNN8@{xPS>8zU_fo^$T5Nh6ihNWM{535iW-vhewf>KWqW;NlI}w~l~lGy z%m~w-S)lTzhsbuWhBOpY^+2nnSiv&!E>ZnglR>il&m*7d?ieG~{ckz6_-jPX@{yJW zx0RN-$8t2E8%&`UqEwsA)xc>MQKWutx1Asqv8vRU3ko+Y^&nI6d*NUd`ndBy!nf8` zBR6z&3l0RQQNDwGe6U=g4l$im-6In6rWu^lGW!O-P)J?s=+LvzXWketLo7d2Ms1c=hNxd-gLDIQ-9q z;LmNTsXyQuUj=;J!#hvzzWPu?@N^>BFpmWh3p)Kv)b_IMu7pI|?{=->EQDWg+W!$JCy zMfq}GNst1ZKyuMr^&GVB7z`bag^HE)1gv5a#iNZs*T0bAkZr#*d_=uHgcLtX%ox$i z*c@==#R55sw3Orr3dBWOmn<+X=mY7^m6(R*_3-_a44F7O7<#O3LIAoFKSGvALS011(G0FEAN*ArOI=6*MgWvqjU4C3 ziB?MtSw!_eJ%v5#1Hm>0zqK=p@z;rmW_W2lciEG-Q~6_62LVn*xyi~dt>dLW1`nV1 zirTHa_~QTGm6qN#3XTO-RLOw~&bf$pT9X3($WFS-usttkVbgSvpC0?iCWw$ZrL@!I zC$$k%^&(?h zVuOlwP9-~YpEFma%5Q(UDB`WlL_0ZUS@?Btm~(QYu0=T+Wu!;a9cDPgLLEdmyb^AV z{BGa8RrGI*U!)d|iH{rv^THx%whWV^HA-IV5sTnu^nxE?>)mT8_Vn2;D|gm=Wp^-X z6TzFM!NmH@$IP0%7dTC1<3EHsnBA2uEnC_7Szp!w`HPWW+xc3erYf$4X~L!IGS{^? zR!*DfPzeR8a_`NsK^SRaUm{3e8E9{#f))L=BKwXpGdJ5Sg1+US1e+;f6^ z5aUne6SCQRgT}J@?DLXD-##A{m2}72b)l5wYY;%F5M*P3ewM5IKH_1A!16fW+>VF(nYn5scd~d;M=28ypKxyHVqfzTYYQIU={WQmzuMibewV;nKRN2%1znlJF zNstuw5N3!)@2!-H>31l2Nl3_Q(lNjgFvp_pRrW3oJ>)gIm(m6?ke&agR1G0~{5GHDLEAB}Cr#=5jrJx08%pX|gG#htwy@9h3gc~EKic@zW zAFnN`(J|MsHr8)mDodj@I2Nr(DxZ0mRn)1ueUsoT{S_VHcK^7(M_W?ObVZ)nKjVK3 z9^?Y^-e)AKkvKCU!0f|97dfnT&kadpzPOQS9L?Ia+MjewM^{Q(c*$5Rnkw~Cu=98V z;#QJirT2WDK~OA3+Wj50#e~&Kc8vB+F50Iv3pc+Q_<>}5mWEAH7#q!ZfIW>H7LDuw{PSC7}JEEr>$9V*RWit->R)G+XK36p-rA}HZjO(^BZ*V!-ceN8jyN%n1@ zlYA63XNw*-jxCwl)Pr0|aZ0b( zy|ikNNbiUuQ0sthcfat@Q_ghS{%8zOfa$z0s*(hw4jD7}{lr|nrxUcegg0>6v%Zr% zl%Jy9ol}NMViT(LeRaIK*i4~mW|6#k0GyY67ySgl)94%75YCH8Um3zz5+g*k8PB4C z^kvq`Eqm;m8w2vOX~LIt+8=MNNRxM<*nq~h1hGMkyo%B&(D(YX0f+%}Qv)8}_Y!(^ zyneQ|#JO)NE@&v&-)Q5e7xotW*Sb0x?qUlcUFgdQX8)PTfLk}CV_W-7hUtQPLh9f{^XrsvwO2pImX+xUHz*RBYqOx>K z!+tgO$YTa~F7aKXjtfR+-cQJk;h&6nAR=!9;Br7r*9k)8=_g@s%k4ZkdysDzWP_)} zkFZFnntQvp6SfV%3_V|s?^D6!pGtq$UgzLsV5KfCvUqj(3|yDCL8Jj;1b_!MQ@?Ll zZ=SEg&$W?eL$wg#qzjhB@sh@eRN$^{UL26kgP}SP*4MdLrLRm_ zB@ti&xizbU&t74o1EqYW7V4Im$m^vzoZ9Y9#iK0%4~mo}jiO9< zpfM1x^Ds|vvlSKL)c#B?MO_l@5w|C;rjNp@)jodL{3vQ9`L%l$z`t59zvvkpk7CS{ zO^Q7Pcq)W}Uqf2n4iymy@5Hd%5X@iUDMAY@RsuD(J5k?=%pkls``5U3vHBnJ=3@d_7-HZmqs7dchvlsxA(&N;{KoiV68IE(L$;eK$gW~k5enMl|Nn& z;l2N1n5_ZP!9@(NLgY%eVG~X*M(UE9Gd6(t@h=~Uc>ugOSPUS>SFLB+D;=1)YM{); z+`?}9D2f-=Nz#Z0EqjG0x{HPY8Y1I=hxp&C`2RQ;pLDMRKG<$mwCF-tYNx8S7mDt0 z0R0>fJgGP#Aau3p_R3`y{R(*V+62+*c>&57{Tl@6LI!KNkO_g^--TH#?{{Gez}!=k zAuOd1vg5sjzPP@V_MN!}_&LguF52B*&I*A@E>;oz5$Yjt8vt?H?uqw=Zt&WJ3sb-sn~tX9eg}g{(2shs7J{gWOW{M!1si;A@ro$?uD8rcV0w7tsWK zsFAMoHyl!B64;P;8lK&GFO`*h+{uso7>%H;I+9>t)IDZ{!-E8V28saE4u4+hEupt( zkkAz`+T(2Z6s+CGv}FSfi$r1j(LquZc?Z|lr>*`3EMO7A6=8{xIfU#uz-M%HykD;H zU2lMwgRI2ff)xF4kbtl5+TDg^uAI~L1Hae*Io~Z14aTVwO2g=Z>BGSnf-JJK!R?NR zIMrL1e;wSaVN!?&$gB~otNx?2e%hL@_jUbc0uzu41SQce^#Uk|=^wQ6p-RsbonwYb z0#Jw|{h3<;0>TZ5TSfZ4@HxwQ{4=d{xqRXOL# zNxg{44*k=D%hpX*ZLuEb+z#TBvVI$?Bkb%^ru0C|cyiOs_pN}fjHUDH5T@lkko;-w z&if7fI-r{kEN;u@N^u9O_ldud>hO_3JX?#fvS+3owtk>kV^yjCO|~bJrfvDGj!?rJ za-Hpi&fa_AAaG#?#9wQd4!^&05(-&a#|HKih(T?`(#q!Z9-kdsAOh)AC6b@=B^Vls z5~&ZL248&LAPv98XL1_D0Xsh2g!5Hdm~bE&sI2! zo*wQWPa0_QYG1N)hpw|7pRz>m zyzuJBm_6qf2#A0hq86U58zmW%q?Gy2uQYI3btLTd&oO*wIzIyd*W}mAWmy1R{R~2h zT!H}PqD|9^o$P-E=va(}ilL&$O#PNL4G@L7A0JaHwm=Z=+m1tI154VtWY@t9xLPoI znZyuTROxrcn}d`CzwVtk)p1b5l)`b@MM&dUoPF=VBL9N;W_)#Xg4khkX`%AAxl#K6or7|zvyfq zqw7vRe^L3A921%qz)Jc6!_COQf8L8GSSJfsiXHNvamF1j)9h3_*e0+)$XqcbUrq2!vM6Axqqx}VkIQKBYCnf3KV$_t zRAA8WrrDB69J-7(Y*vDGqxECnL7!H_0#HhE0Q!Tm(&t^Zs*icJF2M970zi&?2NrMX zP`MNEEye{ttB;`)q+@2D*o7<2wKv^o5Eaah27h)o^$>&W8nbJK_Wwy;WJ{4FHPc~L z!Zv!&b97j0ywq0hU~ge^-@dUImv>#{OIR(8T?$ShzRHpBVQeL5L__kr0urG0LUuvy zem8snvphvF8`R9F4l&a>+dP=7Eb!HygVJy9^xMkdl|v*4^EB6q77q};;Go}yz%T3Q zaY2`d+&z(kB(C*_*TA6FE(nYKjI>FD^c(bgnf{Xez*y=ybP|*;yedM@(apFxzw4r} z9?H(7gC2=x3&>pow!ic9i`uyGp_p(EStB+f=O1XTsM$K|V|uwvj5aF#cwq712y)5z zd@|yFs*mo%hG0vx0}F+b`--2mZRvj={kWMl(t$uEOrP|ngKy=8r_*Lz30%pVs`Y<4&9UZbQA3SFh9o`V?3AK%7Z&9#A zDU3@|qzijQK7>d5!wa(bk^)*^na)?+w;pW;ducq(7BsM5AU}lg+Y!@dyBi|3l?1;p z47q#2qMS|V$t$;?k^6BU{jjR~#-YCDYdjwBXLU;@=?V=37G%lh+h&V6V43BNxjer; zjLvXX=zhoTu+ji*Ng=<#3U5DVsSO-QvIl)^Q8;Je0`nv&)@iY2$546R10YD{Ra_f4 z!k`e`&x{Ho!cw3o)^}yI`m_}Vg|Y?OBj9N47SW@n6EP5x?nc#Ex} z+!r*8ax>KZypCjq5?2Noo8Gq9odN9(ojA4DWtZpDDvm5#4XulyspNniOMg(vj0I9Eeu*)eAH}6#Z5C0< z&cwu%xZ8?qyCp#YbMmtzYi4(9{x87s66nT2*J`fOjjxRjcLOGgiXD(+6M&f_IHssZb9?LhTaI)b8(DfD#nc5xo`TK-k+O>N#% z^`tfAqYO%|`9=xIWF^>Zs+WHz;6}&tGPOW_QzfG(>kn&h^;#G2JxamZ_(eXYIm6=YV>> z)UjE&?XkPlvxH1FGdkM!9WJU1mO5-PdKe(=-I()AeDwQTUw{W7vPmON7CXF;;!cwv zZPy58=EdjmNq3PR@z6Ngq?8O{PS-~d;94SdgG2VIIA=RsqoEdFNX;w<5uabLp0TYD5-w7ED#0|8q#}d8VL# zcGvG~IKNQhUg>V#f6_y4`M&$fCUSI?>9nzWs&p9Ky71S%fp599csL14%}g~}Y++JE znO&<-<$yx&p@1iavr*M;^LM+eH7enEC`TW!sdv@JohP_N)lbx52}hET4Pq#M7B&rE zs!sIN6ht{0+zw&ac2i6X&VG{xFNhGATHime?XNL0;@oiEC6JH<{q>U2e8rYRQc;!) z=b1h`MdNdxRM7{!Rn@@dq;^gs)LHZ~HzDfb6@S}SiSWLNCyf)e;fK?XMs@t@Cuv-y zbZ$rji8aX$p9g)9M4;fV*Kb5<(e2b%SY}siouFdT3ovjdI&A`F zq_Gk2-SQa*5)Z@tMoKA^*R@mfBDnWGbKR zn}JiD$y9wS%fWD~teH9G+$Rfhhf*k(pq`IX*sU$!3i#U@<{ii9O%(*>g1u^FdgR_z zuQQds4f-Z?i={ciAR40C`Ziah>( z000iuI6Wos$~YwOEX@u@b8b4=5DD!mtay)D%U8oSP4V=1uJ*VN)k|)c+cwZ~ZluCQ znG$e@P1JSv-}lJV?&6D=FJhg`@|X}RfB@S^Cr`EM%fg0GMHS};^TypBXz{ESH8JjH z7FY3NX)tQ3(#)G=zzbwfrL}XlC^v26eN*jWOw2!zXQaocZb z`~!eJG`9(~aC^CBvXbj_m|)$i_eN!5BQoVgslQkg`A7p6eFp1+C4N78KEFq&Z!9?7 zT2ty99Euucw`_e*C;6OL72j^N-;f6<>n?g&Kqd!^1;4;O^tOS247&f^a^M&|&DiEgR6< zU7Pn~qpm6}G0Q}-GnVPt9e9-%d$xg&`j27jv#1cp#&;OApOHhSNfJI6^!J~=2kDNc z9!j83UbRO}($%A+SLbgZGQ6v}DES)bDs~*a^5?3k>u3*j%BLHAW?&e@dC}AcK#Nn~ zPpUKbtenmFBnXtSR^{MXRYc`w(tCuqAkPp2eFFS>S#?iC`QI`9w^_@0zF!NoUj1>p zV=30dU0i2cll%JJw!O5bHoe58m|MqC-sg%frH>Q>i3?&i=v2FRw)4dM3%Mw3oLg}G z@M6-}Dh7vzU+A;z;JIUW5FDjt?&j+tPT$ zfRxy<{DUfm4|U<+*)py{C*6GJ>!Q8}D0TolSsuvF{qdKJ{$D zlFWCnlE6ccL)>%Vkf{!1ve=W}zovZyj~d7FE_U(1_;TyFS-JTpd&MuMPlNS7Fzop4 z7(#xNqfuKqh9F564as@u{Tw^$mgaHfIN5f_`Act0C%P)taTYBs1qB`SPsm?0*BlHP z-<8)KuhXW(8a`20_th`O3qW?HsK!PqTcmb@UaYbUZ0X_SG+BwXIXilVe*OlmS&n%K z>-nBpfbKj*#6O8x)1zF{oK^J2_=nmCJ%~?mDa4Par|ZbCC`lb>OWiLq#aA9n1JkGe z99ah9cCQ`-N@zLba%!(?-o~gTP~tI}vfi$UpO>h`^>|j0;Im~5O5vr)KjG{)e8mY& ztso=5Pu&D@ZEs#?X=91o7e3u+>~(_bL;ipASKjn>ZRkvz;t)QZr#EB}9uULDy!|ni z@`gk!tBMEgp%Ykwio#>nX%6}N3lKB+T|)BHny`(oo(^B7wD;fD#hb$VG0bV!4x=Vq`L*+-@Omb7H=afEw;*R44>0<_|&J+YrG*RrNt|)LeV#jeNq|W>t z2a*uso9(||lVA8E zB+CgI-H_{tuzVfl;o3`cUtmm5T-Zx$5XaB4r8Og1=j zv?LQ#oGF2ADJJsvCfD0F80*S&Y-J!TFJT4dJBQIzh9<_pHt#OBjl6rXh;1lKrbyld zQ}E5P4RJmH?GESh_JIZmB0s{OV_=;q{Jf7kj@Mt!fT4vVVPv(1=U#!0 z*o%IG2BV4M)qmvLfDZ-M3-()@|1s`Rov{tX(eKIMc5(YIcoZ%@BLctfUOLl?W1DK2 z(B_Q=B^6OV5KGl`+@t9IQz6P)4FBuuDSpF&hXgx+@V+U0zEL$KZN;>`s;Q+-@j2eV zyw6}j;OAi*d&@ohw`E|f6!!Yt%JDX`MWwIx2W86n7nVM(6iBTwuYx@vw77L4*gS9p z?h~8TokUU#_&dd#tW=0H7a!}m>KekNyO^t?y)*6wt;ViGo{rB0TC4kHD0wX>qz^>b zE88vG(rHYCf-%TNPy~}&Aw+BLAtf+a)#AZ11>b+!*P8Xy3=~i7s3FMB| zTSNRzlH~&k;t< zMYw09-h$^1@E;=C@8swqARiR$WXrJ9`f)${N9`jJOc6kRr;e1>^;&WmMm5NXeR$QD z^)_RbWJz3W>@Br4uyGsA8XB*r>%yiF)B4gWxebl&Xvqs6N@z#qn=5KsrQmp$4Vm4( z0#jAGsvTpN(Y-E|P4y0fd06U^NkxG#GHCV#uxpQbA+f;qs-FU8X|(-qxVD$uds3RY z*nSytnde5)sbR@ysPjGi_IezdzK#&=*ay3B^rg*^?!tp{!F~op(ja*TC%9t>Hh)Na zemH}}^T;V-?#mxyy6sSis@(_EOZLHfg|~`9VW%+frk}uWJML=Wq%?~Vb8#S8-lnlMObxy1=u;l{t7KQnau(zc%e4kKq$1yM{(cJEGc^{_3o6#IR%qKo>{ zJSWk$7=>w5lUS%MIFNP^kXBYNKM3^-YY z$rSS^o%GE=&EG@Zq1?U~syjV5P>;-iyyI5krV9$l)yK|Y1CjmN!WGN}jYuC9I&xSb zsBy;AJji7k1^yRCJgQBwwY8UG*F-|ReZG0!)hg#pei|5soV;zbsasy@&hz z3KlaK^m~Cg%X?g%>XWIFvB`s9_XX^(%DdYep!m5E*o1OFbiZF~yY z{3jz#-<*0AN08Gee~Aw2V#Sy?){x%u-# z7H;9#xKe*bpv=;NQHny&TmMVAqENB#HUW4Ci|29DIPIhURJaew*P$s{{oF-O-FL*-%h1`6eXFZUX2}ozAB|^X=0p z=fQ-|p$!|NDYrZu^3Sey{XtszrcdER!5h~JGJX;!Ck6Qlff8F&haaglANDxsl+KGk zgj;N5*-1G%-oc{zkYiddHgR*&d82`%5-qoI&9BT3mJKiZ@E^f6(hgZK2h_7N*&Qhn z!j_v=tHH1ST)hgL!OXv7Ea@|=u_~LqX@SejI%e4aZCTX1XdJX&3-I*Qhzk_Bw&MlZ zyV3&EWc*kexeC&!ln))qKUB1+ABqH7VGDHgFmGfK0(d@>N?atsCQZ)~D6%Gjx*_?GCnsP~jk zw$YdM;|c<}MGPHExBa}*%Dcmw6-grC3tCz}dd}-CypCF~NQtjq4@@vv;PQgJtE;R9 z9N(wM;J!}@4Y%8;=s@oI=_upPrJu6E(Pqc!zR5C-B)h9Q-hAzkF9r3^D;6TOTIvu< zJ7KgcM#~?rC=q-%+QX?Q(y2WO?sVkfex#%AWUR5`iTQ{B!ngndI%#lhUPB+ z9-crtiApfIq3UsWv%ZTCqX83LL$|NYYcz0?0+r}xS&`spy