From 21d6eaa4eade961a05373e4211ce309cc55f192b Mon Sep 17 00:00:00 2001 From: okxlin Date: Sun, 11 Jun 2023 00:18:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0qiandao=E5=88=B0?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/qiandao/20230601/.env.sample | 8 ++ apps/qiandao/20230601/data.yml | 64 ++++++++++ apps/qiandao/20230601/docker-compose.yml | 153 +++++++++++++++++++++++ apps/qiandao/README.md | 122 ++++++++++++++++++ apps/qiandao/data.yml.bak | 20 +++ apps/qiandao/logo.png | Bin 0 -> 15887 bytes apps/qiandao/logo.png:Zone.Identifier | 3 + 7 files changed, 370 insertions(+) create mode 100644 apps/qiandao/20230601/.env.sample create mode 100644 apps/qiandao/20230601/data.yml create mode 100644 apps/qiandao/20230601/docker-compose.yml create mode 100644 apps/qiandao/README.md create mode 100644 apps/qiandao/data.yml.bak create mode 100644 apps/qiandao/logo.png create mode 100644 apps/qiandao/logo.png:Zone.Identifier diff --git a/apps/qiandao/20230601/.env.sample b/apps/qiandao/20230601/.env.sample new file mode 100644 index 00000000..380240de --- /dev/null +++ b/apps/qiandao/20230601/.env.sample @@ -0,0 +1,8 @@ +PANEL_APP_PORT_HTTP="40022" +DATA_PATH="./data" +AES_PWD="Yase308ldibokUbacroq" +COOKIE_PWD="Spaja724cHow3yIwurAw" +REDIS_PROTOCOL="http" +REDIS_PWD="" +REDIS_HOST="172.18.0.1" +REDIS_PORT="6379" \ No newline at end of file diff --git a/apps/qiandao/20230601/data.yml b/apps/qiandao/20230601/data.yml new file mode 100644 index 00000000..7fae5628 --- /dev/null +++ b/apps/qiandao/20230601/data.yml @@ -0,0 +1,64 @@ +additionalProperties: + formFields: + - default: 40022 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: ./data + edit: true + envKey: DATA_PATH + labelEn: Data folder path + labelZh: 数据文件夹路径 + required: true + type: text + - default: AESPWD + envKey: AES_PWD + labelEn: AES encryption key + labelZh: AES加密密钥 + random: true + required: true + rule: paramCommon + type: text + - default: CKPWD + envKey: COOKIE_PWD + labelEn: COOKIE encryption key + labelZh: COOKIE加密密钥 + random: true + required: true + rule: paramCommon + type: text + - default: http + edit: true + envKey: REDIS_PROTOCOL + labelEn: Redis http Protocol + labelZh: Redis http 协议 + required: true + type: text + - default: Redis + edit: true + envKey: REDIS_PWD + labelEn: Redis password + labelZh: Redis密码 + random: true + required: true + rule: paramCommon + type: text + - default: 172.18.0.1 + edit: true + envKey: REDIS_HOST + labelEn: Redis Host + labelZh: Redis服务地址 + required: true + type: text + - default: 6379 + edit: true + envKey: REDIS_PORT + labelEn: Redis port + labelZh: Redis端口 + required: true + rule: paramPort + type: number \ No newline at end of file diff --git a/apps/qiandao/20230601/docker-compose.yml b/apps/qiandao/20230601/docker-compose.yml new file mode 100644 index 00000000..8425a340 --- /dev/null +++ b/apps/qiandao/20230601/docker-compose.yml @@ -0,0 +1,153 @@ +version: "3" +services: + qiandao: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:80" + volumes: + - "${DATA_PATH}:/usr/src/app/config" + environment: + # 监听地址 + # - BIND=0.0.0.0 + # 监听端口 + - PORT=80 + # 是否启用Debug模式 + # - QIANDAO_DEBUG=False + # 任务定时执行方式,默认为Queue,可选Queue或Batch + # - WORKER_METHOD=Queue + # 是否启用多进程模式,Windows平台无效 + # - MULTI_PROCESS=False + # 是否启用自动热加载,MULTI_PROCESS=True时无效 + - AUTO_RELOAD=False + # 发送的邮件链接启用HTTPS,非框架前端使用HTTPS,如果前端需要HTTPS,请使用反向代理 + # - ENABLE_HTTPS=False + # 指定访问域名,建议修改,否则通过邮件重置密码等功能无效 + # - DOMAIN= + # AES加密密钥,强烈建议修改 + - AES_KEY=${AES_PWD} + # cookie加密密钥,强烈建议修改 + - COOKIE_SECRET=${COOKIE_PWD} + # Cookie在客户端中保留的天数 + # - COOKIE_DAY=5 + # 需要使用MySQL时设置为'mysql' + - DB_TYPE=sqlite3 + # 需要使用MySQL时,设置为(mysql://用户名:密码@hostname:port/数据库名?auth_plugin=) + # - JAWSDB_MARIA_URL=mysql://user:pass@localhost:3306/dbname\?auth_plugin= + # 是否启用SQLAlchmey的日志输出,默认为False + # - QIANDAO_SQL_ECHO=False + # SQLAlchmey日志名称,默认为'QD.sql_engine' + # - QIANDAO_SQL_LOGGING_NAME=qiandao.sql + # SQLAlchmey日志级别,默认为'Warning' + # - QIANDAO_SQL_LOGGING_LEVEL=WARNING + # 是否启用SQLAlchmey的连接池日志输出,默认为True + # - QIANDAO_SQL_ECHO_POOL=True + # SQLAlchmey连接池日志名称,默认为'QD.sql_pool' + # - QIANDAO_SQL_LOGGING_POOL_NAME=QD.sql_pool + # SQLAlchmey连接池日志级别,默认为'Warning' + # - QIANDAO_SQL_LOGGING_POOL_LEVEL=Warning + # SQLAlchmey连接池大小,默认为10 + # - QIANDAO_SQL_POOL_SIZE=5 + # SQLAlchmey连接池最大溢出,默认为50 + # - QIANDAO_SQL_MAX_OVERFLOW=10 + # 是否在连接池获取连接前,先ping一下,默认为True + # - QIANDAO_SQL_POOL_PRE_PING=True + # SQLAlchmey连接池回收时间,默认为3600a + # - QIANDAO_SQL_POOL_RECYCLE=3600 + # SQLAlchmey连接池超时时间,默认为60 + # - QIANDAO_SQL_POOL_TIMEOUT=60 + # SQLAlchmey是否使用LIFO算法,默认为True + # - QIANDAO_SQL_POOL_USE_LIFO=True + # 需要使用Redis或RedisCloud时,设置为http://rediscloud:密码@hostname:port + - REDISCLOUD_URL=${REDIS_PROTOCOL}://rediscloud:${REDIS_PWD}${REDIS_HOST}:${REDIS_PORT} + # 默认为1 + # - REDIS_DB_INDEX=1 + # (限Redis连接已开启)登录用户或IP在1小时内分数=操作失败次数*相应惩罚分值,分数达到evil上限后自动封禁直至下一小时周期 + # - QIANDAO_EVIL=1000 + # 是否关闭本机私有IP地址用户及Localhost_API请求的evil限制 + # - EVIL_PASS_LAN_IP=True + # 是否启用在控制台日志中打印Exception的TraceBack信息 + # - TRACEBACK_PRINT=False + # 默认为push_pic.png + # - PUSH_PIC_URL=https://fastly.jsdelivr.net/gh/qd-today/qd@master/web/static/img/push_pic.png + # 是否允许开启定期推送QD任务日志,默认为True + # - PUSH_BATCH_SW=True + # 邮箱SMTP服务器 + # - MAIL_SMTP='' + # 邮箱SMTP服务器端口 + # - MAIL_PORT=465 + # 邮箱用户名 + # - MAIL_USER='' + # 邮箱密码 + # - MAIL_PASSWORD='' + # 发送时使用的邮箱,默认与MAIL_USER相同 + # - MAIL_FROM=${MAIL_USER} + # 邮箱域名,没啥用,使用的DOMAIN + # - MAIL_DOMAIN=mail.qd.today + # 全局代理域名列表,用"|"分隔 + # - PROXIES='' + # 全局代理黑名单模式,默认不启用 + # "url"为网址匹配模式;"regexp"为正则表达式匹配模式 + # - PROXY_DIRECT_MODE=regexp + # 全局代理黑名单匹配规则 + # - PROXY_DIRECT=(?xi)\A([a-z][a-z0-9+\-.]*://)?(0(.0){3}|127(.0){2}.1|localhost|\[::([\d]+)?\])(:[0-9]+)? + # 是否启用Pycurl模组 + # - USE_PYCURL=True + # 在Pycurl环境下部分请求可能导致Request错误时,自动修改冲突设置并重发请求 + # - ALLOW_RETRY=True + # 通过Curl使用指定DNS进行解析(仅支持Pycurl环境),如8.8.8.8 + # - DNS_SERVER='' + # 是否允许使用Curl进行Encoding操作 + # - CURL_ENCODING=True + # 是否允许Curl使用Headers中自定义Content-Length请求 + # - CURL_CONTENT_LENGTH=True + # 详见配置... + # - NOT_RETRY_CODE=301|302|303|304|305|307|400|401|403|404|405|407|408|409|410|412|415|413|414|500|501|502|503|504|599 + # - EMPTY_RETRY=True + # 第一个注册用户为管理员,False关闭 + - USER0ISADMIN=False + # config目录下自定义ONNX文件名(不填 ".onnx" 后缀),多个onnx文件名用"|"分隔 + # - EXTRA_ONNX_NAME='' + # config目录下自定义ONNX对应自定义charsets.json文件名(不填 ".json" 后缀),多个json文件名用"|"分隔 + # - EXTRA_CHARSETS_NAME='' + # WebSocket ping间隔,单位为秒,默认为5s + # - WS_PING_INTERVAL=5 + # WebSocket ping超时时间,单位为秒,默认为30s + # - WS_PING_TIMEOUT=30 + # WebSocket单次接收最大消息大小,默认为10MB + # - WS_MAX_MESSAGE_SIZE=10485760 + # WebSocket最大消息队列大小,默认为100 + # - WS_MAX_QUEUE_SIZE=100 + # WebSocket公共模板更新页面最大连接数,默认为30 + # - WS_MAX_CONNECTIONS_SUBSCRIBE=30 + # 订阅加速方式或地址,用于加速公共模板更新,仅适用于GitHub + # - SUBSCRIBE_ACCELERATE_URL=jsdelivr_cdn + - GZIP=True + # - QUEUE_NUM=50 + - ACCESS_LOG=True + # - PUSH_BATCH_DELTA=60 + # - QIANDAO_SQL_POOL_LOGGING_NAME=qiandao.sql.pool + # - QIANDAO_SQL_POOL_LOGGING_LEVEL=WARNING + # - QIANDAO_SQL_POOL_TIMEOUT=30 + # - PBKDF2_ITERATIONS=400 + # - CHECK_TASK_LOOP=500 + # - TASK_MAX_RETRY_COUNT=8 + # - DOWNLOAD_SIZE_LIMIT=5242880 + # - REQUEST_TIMEOUT=30.0 + # - CONNECT_TIMEOUT=30.0 + # - DELAY_MAX_TIMEOUT=29.9 + # - UNSAFE_EVAL_TIMEOUT=3.0 + # - NEW_TASK_DELAY=1 + # - MAIL_SSL=True + # - MAILGUN_KEY= + image: a76yyyy/qiandao:20230601 + # image: a76yyyy/qiandao:latest + # image: a76yyyy/qiandao:lite-latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/qiandao/README.md b/apps/qiandao/README.md new file mode 100644 index 00000000..32341071 --- /dev/null +++ b/apps/qiandao/README.md @@ -0,0 +1,122 @@ +

+ + + +

+ +

QD for Python3

+ +
+QD —— 一个HTTP请求定时任务自动执行框架 base on HAR Editor and Tornado Server + +[![HomePage][HomePage-image]][HomePage-url] +[![Github][Github-image]][Github-url] +[![Gitee][Gitee-image]][Gitee-url] +[![license][github-license-image]][github-license-url] +[![Build Image][workflow-image]][workflow-url] +[![last commit][last-commit-image]][last-commit-url] +[![commit activity][commit-activity-image]][commit-activity-url] +[![docker version][docker-version-image]][docker-version-url] +[![docker pulls][docker-pulls-image]][docker-pulls-url] +[![docker stars][docker-stars-image]][docker-stars-url] +[![docker image size][docker-image-size-image]][docker-image-size-url] +![repo size][repo-size-image] +![python version][python-version-image] + +[![All Contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](#contributors-) + + +[HomePage-image]: https://img.shields.io/badge/HomePage-qd--today-brightgreen +[HomePage-url]: https://qiandao.a76yyyy.cn +[Github-image]: https://img.shields.io/static/v1?label=Github&message=qd-today&color=brightgreen +[Github-url]: https://github.com/qd-today/qd/ +[Gitee-image]: https://img.shields.io/static/v1?label=Gitee&message=a76yyyy&color=brightgreen +[Gitee-url]: https://gitee.com/qd-today/qd/ +[github-license-image]: https://img.shields.io/github/license/qd-today/qd +[github-license-url]: https://github.com/qd-today/qd/blob/master/LICENSE +[last-commit-image]: https://img.shields.io/github/last-commit/qd-today/qd +[last-commit-url]: https://github.com/qd-today/qd/ +[commit-activity-image]: https://img.shields.io/github/commit-activity/m/qd-today/qd +[commit-activity-url]: https://github.com/qd-today/qd/ +[docker-version-image]: https://img.shields.io/docker/v/qdtoday/qd?style=flat +[docker-version-url]: https://hub.docker.com/r/qdtoday/qd/tags?page=1&ordering=last_updated +[docker-pulls-image]: https://img.shields.io/docker/pulls/qdtoday/qd?style=flat +[docker-pulls-url]: https://hub.docker.com/r/qdtoday/qd +[docker-stars-image]: https://img.shields.io/docker/stars/qdtoday/qd?style=flat +[docker-stars-url]: https://hub.docker.com/r/qdtoday/qd +[docker-image-size-image]: https://img.shields.io/docker/image-size/qdtoday/qd?style=flat +[docker-image-size-url]: https://hub.docker.com/r/qdtoday/qd +[repo-size-image]: https://img.shields.io/github/repo-size/qd-today/qd +[python-version-image]: https://img.shields.io/github/pipenv/locked/python-version/qd-today/qd +[workflow-image]: https://github.com/qd-today/qd/actions/workflows/Publish%20Package.yml/badge.svg +[workflow-url]: https://github.com/qd-today/qd/actions/workflows/Publish%20Package.yml + +
+ +

+ + +

+ +操作说明 +========== + +请参阅 **[使用指南](https://qd-today.github.io/qd/zh_CN/)** + +更新日志 +=========== + +详见 **[CHANGELOG.md](./CHANGELOG.md)** + +维护项目精力有限, 仅保证对 Chrome 浏览器的支持。如果测试了其他浏览器可以 Pull Request。 + +许可 +=========== + +[MIT](https://fastly.jsdelivr.net/gh/qd-today/qd@master/LICENSE) 许可协议 + +致谢 +=========== + +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + +

a76yyyy

🎨 💻 🚧

Roy Binux

🎨 💻 🚧

AragonSnow

💻 🎨 🚧

Mark

🎨 📝 💡 📖

pidan

🎨

buzhibujue

💻

billypon

💻

acooler15

💻 🚧

shxyke

💻

xiaoxiao

💻

hiCasper

💻

旋子

💻

chen8945

💻

seiuneko

💻

powersee

💻
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! + +Stargazers over time +=========== + +[![Stargazers over time](https://starchart.cc/qd-today/qd.svg)](https://starchart.cc/qd-today/qd) diff --git a/apps/qiandao/data.yml.bak b/apps/qiandao/data.yml.bak new file mode 100644 index 00000000..323da09c --- /dev/null +++ b/apps/qiandao/data.yml.bak @@ -0,0 +1,20 @@ +name: QianDao +tags: + - WebSite +title: 一个HTTP请求定时任务自动执行框架 +type: 建站 +description: 一个HTTP请求定时任务自动执行框架 +additionalProperties: + key: qiandao + name: QianDao + tags: + - Tool + shortDescZh: 一个HTTP请求定时任务自动执行框架 + shortDescEn: An HTTP request timed task automation framework + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://hub.docker.com/r/a76yyyy/qiandao + github: https://github.com/qiandao-today/qiandao + document: https://qiandao-today.github.io/qiandao/zh_CN/ diff --git a/apps/qiandao/logo.png b/apps/qiandao/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..33dd37aee369118a829be6e658bdd9aa5e7fd6ee GIT binary patch literal 15887 zcmV+qKJdYbP)PyA07*naRCr$PeFvDOMV0nj_x5y8cTdha4~RsG3P@NG2?{!(f&>#vkR-z+E9kE4 z{_En(5G4qTzz{@1vVvqB5C#xN5SW~E_oSZb>F(*i^*^V+s_)jVTlMAJJ)!$~2DR$&Cj}1uhyG&P2j<`Om3{|Z>-t-LXL}y!0At?0`gP{t*7wPKm6+W! z7xifBWLMF%#1Jb1v;w9HFr_3Dy!5&4vyu^F86f8Kf(C`{S*D!298sRtEwiW9AU){c z*?!;N^lSyRvWBKbRgE{TrA;ZW#_N_t{2swVn_xEY39``LGE433B6<$B&}9I0jOfJH z&Z6j`nZO(b=3uf7LYEclmN~>iYkjk$=-CJKk2|~xT<}>JVb;-NAYJib-NenwhHLAgq+0%K&YL-fRwFnUm)D zAZ|1yipL!GZtHX#c9Zsfx6IL$wVmsk<$f&V&{3&FY1BGi*v{n8VU)wEV#$BHWiHi_ zi$m{1dM*Mw+W1UYaj{XnKA}?> z_QEI@sIx6cx6Ea|QjwXktMu$!=zy?Yl=yJe(3#CCOcG8K?+Xaqb<6B&Iu(ajhI9wg zv(+gKi*l5K(vq-bi!$i5zd0kBEW&i`TmUtn>59yB%N(3WCJ zwMlVJx6CP&7vt6p^_-AH#}HQc!^~C21dr*|TcXgZP8BG^%XV>@Qvlj!VWWnrI@>AK z`IIZ-5;kje%N$`y1w=6_i4D^!j3O!H05?gpexpgq%+Q%}t$0+>H6g%@VvV|GmK=I# z)^qBxT@>_pU(>CD&euRp%ArrWSx^pYa0<&2NnhPE%gH#Bwu&*oC<`Fw?5z5-E3ly` zhhE0O#u#j2HoYB@rhV;(ps-yO2htW6RO7-7`RSi`%Uqu78`O6@nx4BpY!_fKq70H4 z_9pSAapZ_|ZDN5U+!#lWIM+sab>d6n$Psd_yDo>4u3{Ft0$E_)G8ZwGYNas77ObFI zH40G81v2rx1laH`bXesi`TVkKN+$iatvK1}u{l6=5Sp|th(ef(FyCd;I9)yy_(6di z)qcI>x@9gMI5tqaKC|_M%MiuUvwUB0f`1g=X^ui0_tJd@|CtuYK?k&T5k|Ymyw+w7 zTo$5R=F$>uWn5uL)U(%!m{E?zEGgcNQKqVRPptga-7;5R$BGpMtT?+Zv~8-55=Dq? zp|$o0S=%rxYojS9uM4usrjml5XPdEXvr4zj(p<(UQ#;eO=V@XlCW0+GI#aN1WyH=oL(zkAz?UcY*6ss6S6Ji?SOfK)1 zITJO8J|sguSB68|EMle{T8?0IHYj_?_EgilTV^Y;^>{;?)y*;v9XgD%z91u>mbF-c z&+C@CbJU$&&%tqM-Qw9CJKN}TSxuLPHs7JQ#TJ_kiumc;c0H$C=JL`QJAK(mm>T`g|J)S~#$U18wpie>?=OP?ZhB5Sd-ia@`h1ck13K*Cx^PP9}2- z3oSLBg`y1r_hvvJ3EpN7tRzHkBV+<-*OpTiYU%#GM72UUA(?*YyD9+H0D1tUtC$!R z1n><7V5`1o#tc(d8qgLiPqR;+F$~WEd3lUu6uXl68txf`4mr^2|1{{8%IWWtpEv^` z3v5K536+H|3)=+|^5kT_T;ZiFh5Z=NF9)=8U^)GVkVfFG0ru|CaL6EF(jZ`XKVWcg zpm!ZmTLaWq1Nj_~%XtNr3I(904cO8OY~Bj2*#s+(TKMS0zQYnAWs^WE}E9{~SZ_ zoHr{H=t)mo;9AN0z9HF$^Ox0$40KfoDZe9?kG?6M%ij z0Aq#%gZcu!Y6-Z>d$+xVqp2BKy&jmi0(ffy@W4D^-dZj!c&-=2xGJEr0BkI9fc|ja0|?O1~z^*KXi=?O(vJUI$)S%za=l=^#F7vDlV=DLL~zOedld@*)n5$OFqZ za$IvL!TeuM|oV*Ym|N&2^2Dp+S)nRHv!8VfRC2~Z!83EUPum!wBWsfiB(J( zt47oK1UcYQzYF2z7Rr$!7m~^$a1tLQj=Ye7Tn*fM1jEUP03!!!AXbG?D{h>MT2Y}r zWx<&rO?4Pctr!F3O>Sd3+Va zLYj{@1OI&(!#9owMi22WP?lIJiyGdUKLlj;P7x-QJbm+4jwk*OocWA5Q%vf`FrN>={LkaSo$qsu9mKG{U~p@b`UOd*(`JKG`+z=*;nFW{Uw{r% zwgR|r!D)v1XbJG}-+`aL<@NQ1K1_s4*Xd5TdUzP+Fm>mmnvsr1RyW(Mkp7uwl?UXQ z2>q^V;JD^!h6_)mP@88Bi*v~91p$(oc%Zl`U1o94695E;F zOyt}3D*Vzi56?5KZ1=)&e?EiZgo8b#6EJ8--(DPg`Fr5xi1db6E9L>j=M1#sQpM@t_K zGWQzMBi={x$z{Zs88GWR4Es!!R#_}b7x`*hE81E2o7Q^aN{$nL1I%vX7+24*sNHZD zZ4Qna^xhaLCcSIA+tDqwtv__#DLT^J!ZH0t;C%8;`T!%V7?#@%L)dX84sM+ppnWj6 za17`PynPo~r4C-7<`$Jly?#X6`Jr}iJVYfz5h+0HX$x^F_( z`r!K^mWC(PGb|`E3=t?tD4>(Zq2-dTpc$$ey_cR;pa))j1e%n{os zE>p|MSuWn_9rEJ49LM~YW8z>h93>K)frl_?W zfHfO{hD{I|bemf}{Pd~;di4Yb^acj^1qSy6`t@Sk5;7O*rC9)5ZzKJF^AjAGJkK$4 zpb6>_r%*DHw1D4t%l#lCn8Fk=J9&}xR&HVPLC=(uGJB-I$4 zV_4J5aq>`x-+!O-l05*X4b7QhGU|-=O&qfp05d)Yo>>UIMp-YE)~Ldf`tqr=jMc!1 zz6?`F0-v1>9Jm`WVR$i4=Es+5p(kOFt3gL?-rCA>>aT#mG;j>6W@r?-7%D?bH_7&w zWx=7T9VE-^A8`DAwl}zG0K0yws=QqCp4C8~oq4vOFzkQ)?vT_yNkRs zKLIGsjG|kZ4;FIleIv)1ehf=H6qoM2g%uS&xbrU@-}lvoW6 z?!|EIKw!V&z+R()-9{N{y)q1!#cU_gr$vySeT(DxdpITy*7$UZ)iD=Vihsv*3MJK; zP{pvIk>k!28O}Yv$b*tPfgYedCzI#}ISGH70etmsmy$>h7o{ZRK zB*+r}X**Z1oad~qpiPBaflKyhxa znOt@M3mj)X#j)=|h7FYN=J+Y5je46b=!c9$O95C#VF=omLI#2UUjuw`B*T~Y0zSJZ zFlnS`+4NL~r2Vg(Qw8p;rgQx7dmN*B8zIqf3mxz9`g#CO9US}CF}!*i(5Jr0+mbZM zq!^1pF{sS5M<$;wQwxn^H*<|ts%SxO|T^y4006w?L%bI)YD-0)n+UuA! zbV;Wk4I4QIPxF>%X*(6+LH4}2Ola#62BhWC9=N=0!RgO)obx!x_(9&HkC!~|IG5c5 zb^)^GzH)ak+zT+8w7HyMsQFdfzK!7RDon;&s}`Y!4fV0W>4WJ#{K(a`{z z&Hhp=nnbi#uHm@xc!rBkW+KNVHK=9Y#~)wi`05`xCJfeAz+AIrMoys{(3bu*qb#P0 zRDWyAqg%)r^v?k_MwV{&=-ibDFr-7GFK9%V5ae+v73wP z6f&SM1J<{3oIHf#4;KM7J(4e+n3nm4e{dZ8JC2(E06Cog%9|Qw?wK?CHTz@?q-e1ppvHZ^k`ejV`sR*qh@(wogB%R-SVX*%1b0#**t(Z_qFE45~jVHlHVAY;954acotV7TBU&%9?f+dVpi zW6JNn*-q%OB*tGZab!R%?tEx(hG#FOUD(MxU!PXQO561ugZnVydu)iZe4MyWv^MW+ z*7_4Y7(QOf@yvG^K7U|3Cs&2eD1mACwH)E7BDy~2WXS)7(Bu%lPxl1fJf6` z9b*_vv)xLLUw)3^iYY~hF)gQF*Tk{MG+<3TM=b>mLi893&=jd1N86|xIPRaq@b#mU zce?ICZQRUp3HS7J3SvAxhyIL(fu&bcdMjR&d<)WrlAZm)zia{l>th zPjdUy92fkRW9$HiCDz$4PS{SC)uKW$4SI*C-1A1j79Bo=W8whYl5wO7F#Sc+8Km9l zOPe^Z*qh;(-}FXGlI@K&Bhq39MH}9k!*SrvGTK1#ur9IC=~Wc^1jVnxv0D|x>{T2y zE@U`tuXKh%MQvs;<@m&P9HaX(ELZVbhc3e{Gy`Zq>#8jrm+!?e?VHI*o=!F1p3QO4 z%^Z^lYiWa_d^y5YSf+h_%5_Y?64aBc80N0!n0XPyL7zz18Prx-gzb> zUM^5q)IxhEFBF%>3liv=c?O_Qj$va5M=cqMslY(mAS+go(+$FsxJ6f%F9u7q~5<8o$3> zvDTniwbs{EQDMzij&mn4-2Oc#mW7j24#lN!e4OL5m%P=(Wu|q}!e^C>Lp#E-s@+-Y zS;q5Kj?YcUGF*JJ+VC5NAC{tBH-O5?rr0{|5-M}D{Wx?`*p7KM5Xm9j(8jUs3MT4k zB-vuG3-|JS97o^DF?oo?I>&E&%yDnI+*k#jb*Z;~EXm;2X~!EMa(w1CFWRvvfOb^Q zLIMOiZ01;e1;d!3$@C~DG`U#x(PEBIUauL3*cMvqVIUO_^sSb+y+5hd zB2ZI}xo_VNOkct=s3*fZC73RtQ_<13GnGt7j+Hsp6x_qdI<6P1K8clqA|nJy*^`N7&9}qiGTLL0a`JokS`PwrCy4t;bO)FJ0jr!cEgw zj?diyyt&yClMY=el#Lvlhlp<6dkVwZ$0id@w^;8l;MnIzj`1?rLBthRC!4E)K@>u# zgf?nyex}nI)qy6(VP5`I3+=+mGt9Xh7|&4mKDom8S+&Q&<1_B z(c`T3OtrizC#=9RzMA15mwRcvNe!Xm(*OAY$Iss87}1Aem5siMv%X!&y2(Z=K)-zv z6Ip6WOH?U~rIL5X^p~8{W|@O5v~q6D<=dE+ILNwCrKbgJIbOSf;m|$PPnW-bn&W&K zcA_l2vH_gYjumGvhv^WSx(jloljzx4i2K`l42SQXUXPFbjpMY3)FO-B%?*rl&@@>E zj^=h?Ckh?Sa4FT9OBkY50MmE0P=1On z-muefXsr)big9ZCCVBKf=5QSFD~|C485TSIk-$=5B6oul*M~9O|NZ2-8>(YPzVHnk zWBW5K)u)UgE8qgR?H-+<>R!D0jG(_&&PprClwk}HWYBK48cK0gT3`{Ak`Ybp6hL>T zo+)h?z@~PNqxvyCbqP@4Ga2nrv-|S39HXXj^si=ACQ+oin!b>`KD0a*VfiMGpB>Eb zlhcz4qvs0$;T4XrJ*+%_O5wB-VUvUCrq%YHNeXRb+0yc|JkBD@$$6^-uyGs5@~I3X z5=M5^%tR#*hD@U*LXIBf82Xiein3FI9#O0@#U|Nkl*2`sv)42E5F*;Kg=7BZ3=>8q zr>x2`q#6DVHN*RGDB{9dXoi$S7469(yzfg4XC9MW7}c>?Pv`jgdmO`i(=xZ6ONvjs zBFbUJw}tP}$nnla4EyhvyzSHxv_0#~Hv`YE=dv2 za1qCzH-xYB1XGR#);QrU!}7q2CXS!%&+xM|Q*?yfjT6=pm9x+R3Wz`9#Mb7(oVPId zy@?FBeV578%3SO1?#C+}-TxxTS&w=NUyCdeBPWNZJ!Q1jrh{{=naVJ@f3i+hg3#9b z!*2Ith~5%#niVW*bqwBH!b}WqRidg09XTN9WfyvR9m!WneMjv%j&q(+`~0LdnonH0 zg_W+=Gi}@2*v4_fAcjXSqNDiI;pmCiIZk=NE9$dQ58e4Ig$@hdlL5^Ij@@e*-uOZC zl^)fhf0@Z~;=OuMJR?3F+h#<&p>NLHZuaFN3=gK*Zl>C=B0S#4)h^=D(VCv=RkYD| zO9#h(wG6NPptz|z&PxcZw3VAua-VsNhS2@1+ zM?E)K6@inIxRzvH{5Q_hw<{88E`8IxH6+SbjO3IhoEvzwj={vA@-4`qJ6X8RbwGYKpW_)d@Gm`rPMvj{?K6duh;&vYs^{cG;vSUENMYO}(T6VO%* ztywJEp|Y-(TYTjSgl;aUagvDLu4KVazJ zJ6-#qev{)1(+xmta_lfpVFcazeIwJ4{Y9!P7)A_CmP!yE(27GFf>Qm3#ukpV#xVTu ze4r|yu0!v8o{K|wTpTj4(-wz=B>}$zblPk&)e(Q1!Evgh9Gz;RyD-Wja)G>}HN>Mk z$3i;}udh6yT}#wKP<1(yK@Mgz=d;8@U(V1!Vfv#2v?xBKdC38Nf(KF|}dah&pCP?Y1xw(6rCeRC|+u+>v< zaC}iZMGHkhJiyw99x-R6s+Bn~wr8864l}r4%DH;eX3uRLpYPA`r%Qmkl=0I${>*XS zGaO?FGAyM4zaeww0Nu5E?vwMj@0~P=;o*y^bZ>kMEkXz~T6XXA9N&1HW1I|sdUIS+ zpU%VURoL!`z6?)alDx2t66A0HFJI?Av*vT`caxS2t><#Y2B2wmlJVrA*HWcYD%~)3 zFNSNWPDjeZ=s&!hdKT%U4IB@h#_-i6 zljQ>`FjL*|Gj9bRS;^7AhGC;ckIo${gt1{VQ)$Fe)-l>2#br%HElzLX_qi=qn;b2+3CvL{3 z0(9dhjxp1`lng50MyE8C*`lDs>wRG^WH@+_bbzLPc^CZ#xNR=SkXnWYMLBf;NJ$s8 zf|Yc8z25S$0i)$Zmu{4eSN%uvzGZ7UMqf)O>@rZTb>)WZn+vzkFX8ya^`0L>DYzx2+N6x`!|R<%?s4WE?^@*;inBldB0YU^ zP-oE6w<}Vin+(&`DcOSJ)m|aM(!FSTPBQ-`SPH)DG+yqhp|S3+GG!w>J__~rXDeC4W{9L8~NBT9?u#vO3t zdU?NIobttU8IImBd4Uv)aBOSmI7g3g=pC`M#-ZhIrz}dyDcZJhCC7wm9K-6#|1zRv z`lRQdv0?*}R&?cGmoa>DTrw`H7iv^RSLh5nI!3sp6j-QJXmI2xz<0FERojk|X$W&v zYC!DN>6gqxt652%=G3Q$ch-unmISq`q8vJm+Bq$N8=oJaAy;Bx=t1DsLP5Bd0S=IXwC9XBB#(<8KeV4w&D@QI})lK-jPYbrMw;{2Fj2bZs^IG|(IhEAe5EgFL2;Zi5kwyPA&-3l|bW>K=i9tP z?@Q_?yDW67tw9cLnnzMx%y5vbv>LaadYDqhpS|LO0de{E>@ILXlmv-@_OLi=4fXXI%?bLqy!k616DS1T)8j9HRr?!vI!#s zc5@5I7jFh$T*ooEnyLwzXV7IG@HdyWioB033l->IypiLo{Tcq}taNQu4q@4G6ut=M zZL6qL7|5Yh>X~^nc0FSlM1_eOIo`gQ;Q(1aEv`XOK&G-^R9yd=nH(qFs}@rfMogKD ze@8krh|Yc%r(m^kESV~gJxf?(R=3jsT)?sK4PJRvT0tu@%9&eeOUKE$dT**f$2qoj zpqPl2(z2{?;@ImtV8ym*=j(L|pwn7tX_-lXgDDAV6~~{y#c;yGGI)^mq#&7cOXcIf zbQAF0dRY@tVZw?H&p^3r+iAQ+Kc`S%^+_`Ne9u(^Mx5vT5XT8op+GX z)%OGcHA-HIi_xznVAkyp zVM63>yu>k1p2brVGzgG88lWYp)p_6h*E76)8PK~foki29XgXZ+myZBfzr-=@3403=lC^nJTQgfj1*^n>mX2}9r{e{4*wGemC)a<&fBi! zA879nW5--*w!yG06s@6M$n!UFpcZ)LbcQ4L$pFlPqZYte4(&}ZW7C?SVpH4kn6q*} zJo?cAxPAU$@xD=29avV#SwY<;7Fwrin(pZ1o&b6=pf2a-O)REt`X=v-pC80<#u31{ zVV>@a{g*!GOe@Jp(fRMq9Q~`j-92J<(-XQPIfY?>mR6c_9f(g;MM?i4&J+;=@mLx9 zQKbK03pxJt3E+`Abk;5~v8T5?fg0EBh3ZSsDs$kQ>Z-PiLB9AZANwjUi%=r)C+s~bf54TifY;6Y?cPLO7WA9l4 z`u-O<&U%t#&w&&dc6TgIAS5Oou1Wz3Wt4@kD4tA(yeT&!4;(j&;p_VXNACl1kfs7M zH9x6UR(-GgQ$N0se4iQ`B6G5q}ObhJaa)YLGQ zUDdXYmCA`wN>sS00ru?2aO?=+;Bmmd6MzZBy;8V}nyG$D zx)P{^xuo{9Yq2eg!Hq>Zyru|?L=M}eDu#J$IR5%=hR+?qpaS7ZR)lm=mrh|oOB=`g z3xHSt1w1hi_}dz3Iiv;jkt`4{|IzPNKy_c>yQ3M7+8sD(H(;!^Ec(DnBd=$jI{=mk zTK)lSJOIdz1^D8k@#Z~H;FFQB{tz2CeHCB%{atu&V?74-D4?-WJh3`UK>zh^jz`}G z2G;@Y=0;MDX7sEAdgOsVJ%Qe}z`$Nq9TXVSj}9F5O5f^Kny3YRK%b?t$~G{oEX?s# zKb-2eXns#bEPFb4?kRNTMaZX9t~3>kX>J3ST<$HlWC3bhV^xDFH)7Q~V0k03YCX`< z1Z-&mwzdOxRb)Yc0lk1BeSu*EfMNZ;lVJVurJMoMPLn#-Aj^!7^}xE%0DLyU`T~4o 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 literal 0 HcmV?d00001 diff --git a/apps/qiandao/logo.png:Zone.Identifier b/apps/qiandao/logo.png:Zone.Identifier new file mode 100644 index 00000000..45a0c90e --- /dev/null +++ b/apps/qiandao/logo.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +HostUrl=https://squoosh.app/