From 3c78293f4db2ff651063b9b360cb3f6989229d74 Mon Sep 17 00:00:00 2001 From: DelLevin-Home Date: Tue, 16 Jun 2026 03:30:57 +0800 Subject: [PATCH] feat: complete local version to overwrite remote --- .idea/.gitignore | 8 + .idea/dataSources.xml | 12 + .idea/inspectionProfiles/Project_Default.xml | 23 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 7 + .idea/modules.xml | 8 + .idea/python_script.iml | 10 + .idea/vcs.xml | 6 + 99demo/base64-de-in-code/api.py | 70 + .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 1768 bytes 99demo/base64-de-in-code/proj_utils/utils.py | 34 + 99demo/base64-de-in-code/requirements.txt | 2 + 99demo/base64-de-in-code/static/style.css | 120 + .../templates/en-de-code-index.html | 149 + 99demo/base64-de-in-code/templates/index.html | 37 + 99demo/content-to-tag/extract_doc_tag.py | 139 + 99demo/content-to-tag/main.py | 40 + 99demo/content-to-tag/test.txt | 13 + .../__pycache__/main.cpython-312.pyc | Bin 0 -> 17527 bytes 99demo/down-video/bilibili_cookies.txt | 2951 +++++++++++++++++ 99demo/down-video/main.py | 241 ++ 99demo/down-video/templates/index.html | 380 +++ 99demo/down-video/x_cookies.txt | 35 + 99demo/pin-img/pin-tu.py | 687 ++++ 99demo/tokenizer-demo/api.py | 301 ++ 99demo/tokenizer-demo/example_client.py | 62 + 99demo/tokenizer-demo/jieba.txt | 37 + 99demo/tokenizer-demo/requirements.txt | 2 + 99demo/tokenizer-demo/usertoken.json | 6 + 99demo/tokenizer-demo/useruse.log | 6 + README.md | 14 + flask-dev-api/.claude/settings.local.json | 47 + flask-dev-api/__pycache__/app.cpython-312.pyc | Bin 0 -> 1589 bytes .../__pycache__/config.cpython-312.pyc | Bin 0 -> 1314 bytes .../__pycache__/run_desktop.cpython-312.pyc | Bin 0 -> 2123 bytes flask-dev-api/blueprints/__init__.py | 22 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 879 bytes .../__pycache__/ai_dubbing.cpython-312.pyc | Bin 0 -> 23675 bytes .../__pycache__/base64_codec.cpython-312.pyc | Bin 0 -> 3330 bytes .../__pycache__/chmod_calc.cpython-312.pyc | Bin 0 -> 562 bytes .../__pycache__/content_tag.cpython-312.pyc | Bin 0 -> 11375 bytes .../__pycache__/down_image.cpython-312.pyc | Bin 0 -> 13961 bytes .../__pycache__/down_video.cpython-312.pyc | Bin 0 -> 7899 bytes .../__pycache__/fen_ci.cpython-312.pyc | Bin 0 -> 2384 bytes .../__pycache__/http_status.cpython-312.pyc | Bin 0 -> 566 bytes .../__pycache__/json_format.cpython-312.pyc | Bin 0 -> 566 bytes .../__pycache__/pin_tu.cpython-312.pyc | Bin 0 -> 22449 bytes .../__pycache__/qr_code.cpython-312.pyc | Bin 0 -> 549 bytes .../__pycache__/rvc.cpython-312.pyc | Bin 0 -> 21250 bytes .../__pycache__/sovits_tts.cpython-312.pyc | Bin 0 -> 19929 bytes .../__pycache__/stt.cpython-312.pyc | Bin 0 -> 15730 bytes .../__pycache__/token_gen.cpython-312.pyc | Bin 0 -> 558 bytes .../__pycache__/url_parser.cpython-312.pyc | Bin 0 -> 562 bytes flask-dev-api/blueprints/ai_dubbing.py | 440 +++ flask-dev-api/blueprints/base64_codec.py | 60 + flask-dev-api/blueprints/chmod_calc.py | 9 + flask-dev-api/blueprints/content_tag.py | 196 ++ flask-dev-api/blueprints/down_video.py | 184 + flask-dev-api/blueprints/fen_ci.py | 49 + flask-dev-api/blueprints/http_status.py | 9 + flask-dev-api/blueprints/json_format.py | 9 + flask-dev-api/blueprints/pin_tu.py | 447 +++ flask-dev-api/blueprints/qr_code.py | 9 + flask-dev-api/blueprints/rvc.py | 415 +++ flask-dev-api/blueprints/sovits_tts.py | 342 ++ flask-dev-api/blueprints/stt.py | 338 ++ flask-dev-api/blueprints/token_gen.py | 9 + flask-dev-api/blueprints/url_parser.py | 9 + flask-dev-api/config.py | 23 + flask-dev-api/config/ai_dubbing_config.json | 20 + .../dv_cookies/bilibili.com_cookies.txt | 49 + .../dv_cookies/instagram.com_cookies.txt | 14 + .../config/dv_cookies/x.com_cookies.txt | 61 + .../config/dv_cookies/youtube.com_cookies.txt | 16 + flask-dev-api/config/fen_ci/jieba.txt | 37 + flask-dev-api/config/fen_ci/usertoken.json | 6 + flask-dev-api/config/rvc_config.json | 16 + flask-dev-api/config/sovits_config.json | 16 + flask-dev-api/config/stt_config.json | 3 + .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 1773 bytes flask-dev-api/requirements.txt | 10 + flask-dev-api/run_tools.cmd | 1 + flask-dev-api/static/echarts.min.js | 45 + flask-dev-api/static/font-awesome.css | 68 + flask-dev-api/static/qrcode.min.js | 8 + flask-dev-api/static/style.css | 104 + .../static/webfonts/fa-solid-900.ttf | Bin 0 -> 419780 bytes .../static/webfonts/fa-solid-900.woff2 | Bin 0 -> 156532 bytes flask-dev-api/stats.db | Bin 0 -> 131072 bytes flask-dev-api/templates/ai_dubbing.html | 1243 +++++++ flask-dev-api/templates/base64.html | 232 ++ flask-dev-api/templates/chmod_calc.html | 174 + flask-dev-api/templates/content_tag.html | 753 +++++ flask-dev-api/templates/data_manage.html | 529 +++ flask-dev-api/templates/down_video.html | 796 +++++ flask-dev-api/templates/fen_ci.html | 376 +++ flask-dev-api/templates/http_status.html | 267 ++ flask-dev-api/templates/index.html | 1186 +++++++ flask-dev-api/templates/json_format.html | 223 ++ flask-dev-api/templates/pin_tu.html | 1622 +++++++++ flask-dev-api/templates/pin_tu_manga.html | 100 + flask-dev-api/templates/pin_tu_search.html | 561 ++++ flask-dev-api/templates/qr_code.html | 231 ++ flask-dev-api/templates/rvc.html | 816 +++++ flask-dev-api/templates/sovits_tts.html | 1258 +++++++ flask-dev-api/templates/stt.html | 740 +++++ flask-dev-api/templates/token_gen.html | 185 ++ flask-dev-api/templates/url_parser.html | 249 ++ flask-dev-api/utils/__init__.py | 1 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 178 bytes .../down_video_utils.cpython-312.pyc | Bin 0 -> 14234 bytes .../encoding_utils.cpython-312.pyc | Bin 0 -> 1777 bytes .../__pycache__/fen_ci_utils.cpython-312.pyc | Bin 0 -> 7802 bytes .../__pycache__/pin_tu_utils.cpython-312.pyc | Bin 0 -> 3909 bytes .../__pycache__/stats_db.cpython-312.pyc | Bin 0 -> 27893 bytes flask-dev-api/utils/down_video_utils.py | 316 ++ flask-dev-api/utils/encoding_utils.py | 34 + flask-dev-api/utils/fen_ci_utils.py | 149 + flask-dev-api/utils/pin_tu_utils.py | 72 + flask-dev-api/utils/rvc_worker.py | 121 + flask-dev-api/utils/sovits_worker.py | 108 + flask-dev-api/utils/stats_db.py | 589 ++++ .../__pycache__/config.cpython-312.pyc | Bin 0 -> 725 bytes www_comments/app.py | 287 ++ www_comments/config.py | 18 + www_comments/data/comments.json | 296 ++ www_comments/requirements.txt | 2 + www_comments/templates/admin.html | 725 ++++ www_comments/templates/login.html | 58 + 129 files changed, 22814 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/dataSources.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/python_script.iml create mode 100644 .idea/vcs.xml create mode 100644 99demo/base64-de-in-code/api.py create mode 100644 99demo/base64-de-in-code/proj_utils/__pycache__/utils.cpython-312.pyc create mode 100644 99demo/base64-de-in-code/proj_utils/utils.py create mode 100644 99demo/base64-de-in-code/requirements.txt create mode 100644 99demo/base64-de-in-code/static/style.css create mode 100644 99demo/base64-de-in-code/templates/en-de-code-index.html create mode 100644 99demo/base64-de-in-code/templates/index.html create mode 100644 99demo/content-to-tag/extract_doc_tag.py create mode 100644 99demo/content-to-tag/main.py create mode 100644 99demo/content-to-tag/test.txt create mode 100644 99demo/down-video/__pycache__/main.cpython-312.pyc create mode 100644 99demo/down-video/bilibili_cookies.txt create mode 100644 99demo/down-video/main.py create mode 100644 99demo/down-video/templates/index.html create mode 100644 99demo/down-video/x_cookies.txt create mode 100644 99demo/pin-img/pin-tu.py create mode 100644 99demo/tokenizer-demo/api.py create mode 100644 99demo/tokenizer-demo/example_client.py create mode 100644 99demo/tokenizer-demo/jieba.txt create mode 100644 99demo/tokenizer-demo/requirements.txt create mode 100644 99demo/tokenizer-demo/usertoken.json create mode 100644 99demo/tokenizer-demo/useruse.log create mode 100644 README.md create mode 100644 flask-dev-api/.claude/settings.local.json create mode 100644 flask-dev-api/__pycache__/app.cpython-312.pyc create mode 100644 flask-dev-api/__pycache__/config.cpython-312.pyc create mode 100644 flask-dev-api/__pycache__/run_desktop.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__init__.py create mode 100644 flask-dev-api/blueprints/__pycache__/__init__.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/ai_dubbing.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/base64_codec.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/chmod_calc.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/content_tag.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/down_image.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/down_video.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/fen_ci.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/http_status.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/json_format.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/pin_tu.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/qr_code.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/rvc.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/sovits_tts.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/stt.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/token_gen.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/__pycache__/url_parser.cpython-312.pyc create mode 100644 flask-dev-api/blueprints/ai_dubbing.py create mode 100644 flask-dev-api/blueprints/base64_codec.py create mode 100644 flask-dev-api/blueprints/chmod_calc.py create mode 100644 flask-dev-api/blueprints/content_tag.py create mode 100644 flask-dev-api/blueprints/down_video.py create mode 100644 flask-dev-api/blueprints/fen_ci.py create mode 100644 flask-dev-api/blueprints/http_status.py create mode 100644 flask-dev-api/blueprints/json_format.py create mode 100644 flask-dev-api/blueprints/pin_tu.py create mode 100644 flask-dev-api/blueprints/qr_code.py create mode 100644 flask-dev-api/blueprints/rvc.py create mode 100644 flask-dev-api/blueprints/sovits_tts.py create mode 100644 flask-dev-api/blueprints/stt.py create mode 100644 flask-dev-api/blueprints/token_gen.py create mode 100644 flask-dev-api/blueprints/url_parser.py create mode 100644 flask-dev-api/config.py create mode 100644 flask-dev-api/config/ai_dubbing_config.json create mode 100644 flask-dev-api/config/dv_cookies/bilibili.com_cookies.txt create mode 100644 flask-dev-api/config/dv_cookies/instagram.com_cookies.txt create mode 100644 flask-dev-api/config/dv_cookies/x.com_cookies.txt create mode 100644 flask-dev-api/config/dv_cookies/youtube.com_cookies.txt create mode 100644 flask-dev-api/config/fen_ci/jieba.txt create mode 100644 flask-dev-api/config/fen_ci/usertoken.json create mode 100644 flask-dev-api/config/rvc_config.json create mode 100644 flask-dev-api/config/sovits_config.json create mode 100644 flask-dev-api/config/stt_config.json create mode 100644 flask-dev-api/proj_utils/__pycache__/utils.cpython-312.pyc create mode 100644 flask-dev-api/requirements.txt create mode 100644 flask-dev-api/run_tools.cmd create mode 100644 flask-dev-api/static/echarts.min.js create mode 100644 flask-dev-api/static/font-awesome.css create mode 100644 flask-dev-api/static/qrcode.min.js create mode 100644 flask-dev-api/static/style.css create mode 100644 flask-dev-api/static/webfonts/fa-solid-900.ttf create mode 100644 flask-dev-api/static/webfonts/fa-solid-900.woff2 create mode 100644 flask-dev-api/stats.db create mode 100644 flask-dev-api/templates/ai_dubbing.html create mode 100644 flask-dev-api/templates/base64.html create mode 100644 flask-dev-api/templates/chmod_calc.html create mode 100644 flask-dev-api/templates/content_tag.html create mode 100644 flask-dev-api/templates/data_manage.html create mode 100644 flask-dev-api/templates/down_video.html create mode 100644 flask-dev-api/templates/fen_ci.html create mode 100644 flask-dev-api/templates/http_status.html create mode 100644 flask-dev-api/templates/index.html create mode 100644 flask-dev-api/templates/json_format.html create mode 100644 flask-dev-api/templates/pin_tu.html create mode 100644 flask-dev-api/templates/pin_tu_manga.html create mode 100644 flask-dev-api/templates/pin_tu_search.html create mode 100644 flask-dev-api/templates/qr_code.html create mode 100644 flask-dev-api/templates/rvc.html create mode 100644 flask-dev-api/templates/sovits_tts.html create mode 100644 flask-dev-api/templates/stt.html create mode 100644 flask-dev-api/templates/token_gen.html create mode 100644 flask-dev-api/templates/url_parser.html create mode 100644 flask-dev-api/utils/__init__.py create mode 100644 flask-dev-api/utils/__pycache__/__init__.cpython-312.pyc create mode 100644 flask-dev-api/utils/__pycache__/down_video_utils.cpython-312.pyc create mode 100644 flask-dev-api/utils/__pycache__/encoding_utils.cpython-312.pyc create mode 100644 flask-dev-api/utils/__pycache__/fen_ci_utils.cpython-312.pyc create mode 100644 flask-dev-api/utils/__pycache__/pin_tu_utils.cpython-312.pyc create mode 100644 flask-dev-api/utils/__pycache__/stats_db.cpython-312.pyc create mode 100644 flask-dev-api/utils/down_video_utils.py create mode 100644 flask-dev-api/utils/encoding_utils.py create mode 100644 flask-dev-api/utils/fen_ci_utils.py create mode 100644 flask-dev-api/utils/pin_tu_utils.py create mode 100644 flask-dev-api/utils/rvc_worker.py create mode 100644 flask-dev-api/utils/sovits_worker.py create mode 100644 flask-dev-api/utils/stats_db.py create mode 100644 www_comments/__pycache__/config.cpython-312.pyc create mode 100644 www_comments/app.py create mode 100644 www_comments/config.py create mode 100644 www_comments/data/comments.json create mode 100644 www_comments/requirements.txt create mode 100644 www_comments/templates/admin.html create mode 100644 www_comments/templates/login.html diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..f1b9c78 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + sqlite.xerial + true + org.sqlite.JDBC + jdbc:sqlite:D:\UserData\Desktop\my_proj\py_demo\python_script\flask-dev-api\stats.db + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..0077c35 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,23 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..f9cbb17 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..757243a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/python_script.iml b/.idea/python_script.iml new file mode 100644 index 0000000..6cb8b9a --- /dev/null +++ b/.idea/python_script.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/99demo/base64-de-in-code/api.py b/99demo/base64-de-in-code/api.py new file mode 100644 index 0000000..b9ab9b3 --- /dev/null +++ b/99demo/base64-de-in-code/api.py @@ -0,0 +1,70 @@ +from flask import Flask, render_template, request, jsonify +import base64 +import proj_utils.utils as utils # 导入你的工具模块 + +app = Flask(__name__) + + +@app.route('/') +def index(): + """渲染主页模板""" + return render_template('index.html') + +@app.route('/en-de-code') +def index(): + """渲染主页模板""" + return render_template('en-de-code-index.html') + +@app.route('/decode', methods=['POST']) +def decode_endpoint(): + """处理解码请求的 API 端点""" + data = request.get_json() + base64_input = data.get('input_text', '').strip() + + if not base64_input: + return jsonify({'success': False, 'error': '输入不能为空。'}) + + try: + # 1. Base64 解码 + decoded_bytes = base64.b64decode(base64_input) + except Exception as e: + return jsonify({'success': False, 'error': f'Base64 解码失败: {str(e)}'}) + + # 2. 使用 utils 模块中的 detect_and_decode 函数进行编码检测和解码 + decoded_result = utils.detect_and_decode(decoded_bytes) + # 返回成功的 JSON 响应 + return jsonify({ + 'success': True, + 'result': decoded_result, + }) + +@app.route('/encode', methods=['POST']) +def encode_endpoint(): + """处理编码请求的 API 端点""" + data = request.get_json() + text_to_encode = data.get('text_to_encode', '') + encoding = data.get('encoding', 'utf-8') # 默认使用 UTF-8 + + if text_to_encode is None: + return jsonify({'success': False, 'error': '输入不能为空。'}) + + try: + # 1. 根据指定编码格式将文本转换为字节数组 + encoded_bytes = text_to_encode.encode(encoding) + except LookupError: + return jsonify({'success': False, 'error': f'未知的编码格式: {encoding}'}) + except UnicodeEncodeError as e: + return jsonify({'success': False, 'error': f'编码失败: {str(e)}'}) + + # 2. 将字节数组进行 Base64 编码 + encoded_string = base64.b64encode(encoded_bytes).decode('ascii') + + # 返回成功的 JSON 响应 + return jsonify({ + 'success': True, + 'result': encoded_string + }) +# pip install pipreqs +# pipreqs D:\UserData\Desktop\demo\python_script\base64-de-in-code +if __name__ == '__main__': + app.run(debug=True, host='0.0.0.0', port=5000) \ No newline at end of file diff --git a/99demo/base64-de-in-code/proj_utils/__pycache__/utils.cpython-312.pyc b/99demo/base64-de-in-code/proj_utils/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe32a0d7df616e5403f36a0fd79c55fe904fc1e2 GIT binary patch literal 1768 zcmaJ?Urbw77(e%4OUva?3(N{BUN#u%7$p`mT?aU&yex(nf(q6(ZSRGZL2q;a1UqjH zGfQN;7#~#PHZtaP>#{^^;tU$d5_t6GB26Gy9yFtXPb0vCffvvH*L5uHBZ1rw49*=KMo$7E?;AGRRFp9!@WAk=5D6KE`40{n$s^E15Gaj3Ft}5ggmMiwAc0}) zK_&nsG|z<#Hq%ez5_$vBgoNDyQ@DvhfQ0vgAwU;>home8Xxmdn!Kq!c!00?bjJ5>8 z2gdoa8Qu3?5RIlehdg&7uA~T0aueE3Xpnz z7KwPazJ5SkQ^d!_HC}&?A!Fb}tRIXaFJvpx^pzgU_R&E$k3+17vexDvZG4rcq8Gv( z%?Q-`o$>XDpKr{5voU=+_uH?V_wGPLDPrPLmX5`T6nm7755{P?XE?RFVl7-Ks+rPx z^zht7X5;!5orG!>-4N19txtTJ`|OrZ_+<9l#@vr&9ubYJfKpErN` z!B6#g@Joa!3^u>6U_+6Mie)I`Ykk$H5Yfcx)>ER-$ZKTOf?D#VYja<~9J$QY=1*Ve zW@a|;UDnm)|9LI8=BE?RJg>Wd66c}DPqDM1y$n0$>79V64$8+bL`uQuRdICDc3oyfwf-p+C z8OetPHY9LK1%oHNdeczG*y{=SgMB>11z_f2fZ;C+Y$8ZAqiisd6fUsw5Fh1Y2_fk7 zM#4OEs;!x3nq%>1ReLbOvBM!zh>h?;ZS^LSro2!%PKR_w+)FSY4kz!2ch)%AwSd}& zTj#$$pFX$beoe-!S6tp@mv7PK%lMaEoibjv;%HoUG%Y%s(r?eyEjil9&;4U{ZJ~ti zePqSmxa{^Wy1jDC*(LXz6FsY>L$376tpVBBEq6!c=%^ft%T6{+CRQryWU_AC4qRts zymA${$z*31KdTuh$08$kKdZGb?j&noMa-+5Q=drx-uFOvg{ z_EsC1$LhLj z(D^o7mkXQkaCB8*3l#*k7iw%>Zx9RhjxIm3;3uH%K{@rl)>?2M>_8K6N8qwo)IQ46 g;t12pRl}|NFX2nz0!1OnU!ZiyQj47AUWO + + + + + Base64/编码检测与解码器 + + + + + + + +
+ +
+

输入(待编码/解码文本)

+ +
+ + + +
+
+ + +
+

输出

+ +
+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/99demo/base64-de-in-code/templates/index.html b/99demo/base64-de-in-code/templates/index.html new file mode 100644 index 0000000..65622df --- /dev/null +++ b/99demo/base64-de-in-code/templates/index.html @@ -0,0 +1,37 @@ + + + + + + 白荼 - BAITU + + + + + + +

恭喜你,来到了一片荒芜之地

+ + + \ No newline at end of file diff --git a/99demo/content-to-tag/extract_doc_tag.py b/99demo/content-to-tag/extract_doc_tag.py new file mode 100644 index 0000000..5d04042 --- /dev/null +++ b/99demo/content-to-tag/extract_doc_tag.py @@ -0,0 +1,139 @@ +import requests +import json +import re +import time # 导入 time 模块 + +# OLLAMA_BASE_URL = "http://127.0.0.1:11434/api/generate" +# OLLAMA_BASE_URL = "http://152.136.153.72:27009/api/generate" +def extract_tags_with_ollama_from_content(ollama_base_url,model, article_content, max_tags=10, min_length=2, max_length=6): + """ + 使用本地 Ollama 大语言模型分析文章内容并提取关键词。 + + Args: + article_content (str): 输入的文章内容字符串。 + max_tags (int): 希望返回的最大标签数量。 + min_length (int): 关键词最小长度。 + max_length (int): 关键词最大长度。 + + Returns: + list: 提取到的关键词/标签列表。 + """ + if not article_content or not article_content.strip(): + return { + 'code': 0, + 'message': 'success', + 'data': { + 'model': model, + 'think': '警告:输入的文章内容为空或仅包含空白字符。', + 'tags': [], + 'consume': 0.0 + } + } + + # 2. 构建 Prompt + # 使用中文提示,更符合 qwen 模型的特点 + prompt = f""" +请严格按照以下要求,从提供的文章内容中提取关键词。 + +文章内容: +{article_content} + +要求: +- 提取最多 {max_tags} 个最能概括文章主旨和核心概念的关键词。 +- 关键词必须来源于文章内容,准确反映文章主题。 +- 每个关键词的长度必须在 {min_length} 到 {max_length} 个字符之间。 +- 输出格式为:关键词1, 关键词2, 关键词3, ... +- 只输出关键词列表,不要有任何其他解释或前缀。 + +""" + # 记录开始时间 + start_time = time.time() + # 3. 准备发送给 Ollama API 的 payload + payload = { + "model": model, + "prompt": prompt, + "system": "你是一个专门生成文章标签的助手,请你根据我给你的文章的内容总结并生成一系列的标签,格式可以参考[关键词1, 关键词2, 关键词3].你只需要给我生成这种形式的标签即可,其他分析内容无需输出.", + "stream": False, + "options": { + "top_p": 0.9, + "temperature": 0.1, # 较低的温度使输出更确定、更聚焦 + "num_predict": 64000, # 控制预测的最大 token 数 + } + } + + try: + # 4. 发送 POST 请求到 Ollama API + response = requests.post(ollama_base_url, json=payload) + # 5. 检查响应状态 + if response.status_code != 200: + # print(f"Error: Ollama API returned status code {response.status_code}") + print(response.text) + return { + 'code': 404, + 'message': f"{response['error']}", + } + # 6. 解析 JSON 响应 + result = response.json() + if "response" not in result: + print(result) + return { + 'code': 500, + 'message': "Error: Unexpected response format from Ollama", + } + + llm_output = result["response"].strip() + # print(llm_output) + think_match = re.search(r'(.*?)', llm_output, re.DOTALL) + ai_think = think_match.group(1).strip() if think_match else "" + # 移除 ... 标签及其内容,得到纯净的关键词列表部分 + clean_output = re.sub(r'.*?', '', llm_output, count=1, flags=re.DOTALL).strip() + # 7. 简单清洗和验证关键词 + # 假设 LLM 输出格式为 "关键词1, 关键词2, ..." + raw_tags = [tag.strip() for tag in clean_output.split(',') if tag.strip()] + # print(raw_tags) + # 过滤掉不符合长度要求的词 + # filtered_tags = [ + # tag for tag in raw_tags + # if min_length <= len(tag) <= max_length and tag # 忽略空字符串 + # ] + # 去重并保持顺序 + seen = set() + unique_filtered_tags = [] + for tag in raw_tags: + if tag not in seen: + seen.add(tag) + unique_filtered_tags.append(tag) + + # 记录结束时间 + end_time = time.time() + # 计算耗时 + elapsed_time = end_time - start_time + return { + 'code':0, + 'message': 'success', + 'data': { + 'model': model, + 'think': ai_think, + 'tags': unique_filtered_tags, + 'consume': elapsed_time + } + } + + except requests.exceptions.RequestException as e: + # print(f"Error calling Ollama API: {e}") + return { + 'code': 500, + 'message': f"Error calling Ollama API: {e}", + } + except json.JSONDecodeError as e: + # print(f"Error decoding JSON response from Ollama: {e}") + return { + 'code': 500, + 'message': f"Error decoding JSON response from Ollama: {e}" + } + except Exception as e: + # print(f"An unexpected error occurred: {e}") + return { + 'code': 500, + 'message': f"An unexpected error occurred: {e}" + } diff --git a/99demo/content-to-tag/main.py b/99demo/content-to-tag/main.py new file mode 100644 index 0000000..3010baf --- /dev/null +++ b/99demo/content-to-tag/main.py @@ -0,0 +1,40 @@ +import extract_doc_tag as ex_doc_tag + +# --- 方式一:指定文件路径 --- +file_path = 'test.txt' + +try: + with open(file_path, 'r', encoding='utf-8') as file: + my_article_content = file.read() +except FileNotFoundError: + print(f"错误:找不到文件 '{file_path}'") + exit(1) +except Exception as e: + print(f"读取文件时发生错误: {e}") + exit(1) + +model = "qwen3:1.7b" +# model = "qwen3:0.6b" +# OLLAMA_BASE_URL = "http://127.0.0.1:11434/api/generate" +OLLAMA_BASE_URL = "http://152.136.153.72:27009/api/generate" +extracted_tags = ex_doc_tag.extract_tags_with_ollama_from_content( + OLLAMA_BASE_URL, + model, + my_article_content, + max_tags=5, + min_length=2, + max_length=10 +) + +if extracted_tags['code'] == 0: + print('思考过程:') + print(extracted_tags['data']['think']) + print('=' * 60) + print('文章内容长度', len(my_article_content)) + # print(f"Ollama 模型:{model}") + print('=' * 60) + print('文章标签:', extracted_tags['data']['tags']) + print('=' * 60) + print(f"总耗时: {extracted_tags['data']['consume']:.2f} 秒") +else: + print(extracted_tags) diff --git a/99demo/content-to-tag/test.txt b/99demo/content-to-tag/test.txt new file mode 100644 index 0000000..23779bc --- /dev/null +++ b/99demo/content-to-tag/test.txt @@ -0,0 +1,13 @@ +今天周六早上起床,心血来潮开始刷视频,不知不觉时间就像被偷走一样,和游戏类似,两三个小时转瞬即逝。我每次都想着,诶呀一个一分多钟的视频算什么,下一个!于是在百个视频过去后一上午的时间也消失了。 + +从喜羊羊,到情感生活,到家庭育儿,到程序编码,到机器制作,再到科幻制作,再到大黄蜂。你可能会奇怪,喜羊羊和情感生活有什么关系,家庭育儿和程序编码有什么关系,机器制作和科幻制作又有什么关系。其实这些没有奇怪的地方,喜羊羊里面的喜羊羊美羊羊沸羊羊的关系引出情感,儿童的幼年编程引出了程序编码,机器制作的炫酷效果引出了科幻制作。 + +一个视频就像细胞上面的无数的受体和另一个细胞上面的配体一样,他们那种概念的联系将一个个视频连锁成宇宙中的群星看似毫无联系,细看却是万般变化的星座。 + +我在想是什么变成这样的呢?标签?模糊的标签?也许是这样,但这这是一种浅显的理解吧!因为这种标签,把他们分成了不同的种类,划分成不同的视频,然后用一个概念展示给我们看。罗翔老师讲过一个他的一件故事,他在上大学的时候,初入大学很多一个地区的人会互相认识,他去了他们省的聚会,然后他突然发现下次的聚合没有叫他,才知道是一个市区的聚会。具体内容我早已忘记,但是大概意思是这样的。我们每个人都像网络视频那样被打上了标签,我们用这个来区分自己的同类,异类。我们会和同类笑着说“看啊!那个人说话好怪啊!看啊!那个人吃饭的样子好丑”但是也许你在你同类眼里也是个异类,一个嘲笑他人的异类。于是你不断给自己打标签,做完这个做那个,加入这个加那个,最终像一只蝙蝠一样,鸟兽不分。 + +扯远了。其实这种标签带来的分化自古就有,可以具象的堪称阶级划分,就像盖茨比赚了再多的钱,举办了再多的宴会也融入不进去权贵阶层。可以抽象的理解为人们的闲话,谁家怎么怎么了,那家又如何如何。这种东西就像是无形的线,勒住我们的思想和手指。大数据的判别让我们困于信息茧房,让我们只看到自己想看的(比如追星的人会刷到自己喜欢明星的一切,不喜欢那个明星的则会刷到各种搞怪的视频)。我们的思想逐渐变得狭隘,三分钟的视频让我们的喜欢和伤心都会变得特别廉价。我经常看到的一句话就是“原本很开心的,看到你这里绷不住了”,“挺难受的,你这评论给我笑嘻了”无数的视频过去,让我们的喜欢随便的说出口,让我们的痛苦说来就来。 + +很难不否认短视频在释放压力方面是对当代打工人的良药。快节奏+短视频带给无数人不一样的生活见地,可是这种方式终归是饮鸩止渴,浅陋而自大的。你再也不会记得白鹿原里的白嘉轩,只会明白他叫大壮,我们再也不会记得南海十三郎里面的江誉镠,也许他的名字会叫作小亮。真不知百年之后人们的思想会是如何。 + +我相信还是会有下一个鲁迅的,那种《中国人难道失掉自信力了吗》那种俯首甘为孺子牛的鲁迅。用笔尖刺痛每一人的脊梁。也许我们不是愚蠢,只是不想醒罢了 \ No newline at end of file diff --git a/99demo/down-video/__pycache__/main.cpython-312.pyc b/99demo/down-video/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f03399524ccf941598dca72a047cc4f81708830 GIT binary patch literal 17527 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 ba8LGU4q1oyjn?:\"/\\|?*]', '_', title) + files = _find_files_by_title(output_dir, safe_title) + + if not files: + return False, "下载完成但未找到输出文件", title, "" + + # 确定最终视频文件路径 + # 优先取合并后的文件,否则取最大的 mp4 文件 + filepath = "" + candidate_files = [f for f in files if f.endswith('.mp4')] + if candidate_files: + # 优先 merged 文件 + merged_candidates = [f for f in candidate_files if '_merged' in f] + if merged_candidates: + filepath = os.path.join(output_dir, merged_candidates[0]) + else: + # 取最新/最大的文件 + candidate_files.sort(key=lambda f: os.path.getsize(os.path.join(output_dir, f)), reverse=True) + filepath = os.path.join(output_dir, candidate_files[0]) + else: + # 没有 mp4,取任意文件 + files.sort(key=lambda f: os.path.getsize(os.path.join(output_dir, f)), reverse=True) + filepath = os.path.join(output_dir, files[0]) + + # Bilibili 后处理:如果存在分离的 mp4 + m4a,手动合并 + extra_msg = "" + if platform == 'bilibili': + has_mp4 = any(f.endswith('.mp4') for f in files) + has_m4a = any(f.endswith('.m4a') for f in files) + if has_mp4 and has_m4a: + merged, merge_msg, merged_path = _merge_mp4_m4a(output_dir, safe_title) + extra_msg = f" ({merge_msg})" if merge_msg else "" + if merged and merged_path: + filepath = merged_path + + return True, f"下载成功!保存到 {output_dir}{extra_msg}", title, filepath + + except Exception as e: + return False, f"下载失败: {str(e)}", "", "" + + +@app.route("/file") +def serve_file(): + """提供视频文件访问和下载""" + filepath = request.args.get("path", "") + as_download = request.args.get("download", "0") == "1" + + if not filepath: + return "Missing path", 400 + + # 安全检查:确保是绝对路径且文件存在 + filepath = os.path.abspath(filepath) + if not os.path.exists(filepath) or not os.path.isfile(filepath): + return "File not found", 404 + + # 只允许访问视频文件(防止任意文件读取) + ext = os.path.splitext(filepath)[1].lower() + if ext not in ('.mp4', '.m4a', '.webm', '.mkv', '.mov', '.avi'): + return "File type not allowed", 403 + + return send_file(filepath, as_attachment=as_download) + + +@app.route("/") +def index(): + ffmpeg_ok = check_ffmpeg() + return render_template("index.html", ffmpeg_ok=ffmpeg_ok) + + +@app.route("/download", methods=["POST"]) +def download(): + data = request.get_json() + url = data.get("url", "").strip() if data else "" + output_dir = data.get("output_dir", DEFAULT_OUTPUT_DIR).strip() if data else DEFAULT_OUTPUT_DIR + + if not url: + return jsonify({"success": False, "message": "请输入视频链接"}), 400 + + if is_twitter_url(url): + platform = 'twitter' + elif is_bilibili_url(url): + platform = 'bilibili' + else: + return jsonify({"success": False, "message": "仅支持 Twitter/X 和 Bilibili 视频链接"}), 400 + + if not output_dir: + output_dir = DEFAULT_OUTPUT_DIR + + success, message, title, filepath = download_video(url, output_dir, platform) + return jsonify({"success": success, "message": message, "title": title, "filepath": filepath}) + + +if __name__ == "__main__": + print("=" * 50) + print("Twitter / Bilibili 视频下载器") + print("=" * 50) + if check_ffmpeg(): + print("FFmpeg 已检测到") + else: + print("警告: 未检测到 FFmpeg") + print(f"默认保存目录: {DEFAULT_OUTPUT_DIR}") + print("访问 http://127.0.0.1:5000 打开下载页面") + print("=" * 50) + app.run(host="0.0.0.0", port=5000, debug=False, threaded=True) \ No newline at end of file diff --git a/99demo/down-video/templates/index.html b/99demo/down-video/templates/index.html new file mode 100644 index 0000000..bd35731 --- /dev/null +++ b/99demo/down-video/templates/index.html @@ -0,0 +1,380 @@ + + + + + + 视频下载器 + + + +
+
+

视频下载

+

支持 X 和 Bilibili

+ +
+ + +
+ +
+ + +
+ + + +
+ + +
+ + +
+ +
+
+ + + + +

下载完成后在此预览视频

+
+ +
+ +
+
+ +
+
+
+ + + + diff --git a/99demo/down-video/x_cookies.txt b/99demo/down-video/x_cookies.txt new file mode 100644 index 0000000..141ba15 --- /dev/null +++ b/99demo/down-video/x_cookies.txt @@ -0,0 +1,35 @@ +# Netscape HTTP Cookie File +# This file is generated by yt-dlp. Do not edit. + +zhutix.com FALSE / FALSE 1782047186 X_CACHE_KEY 0291346395e7ad60497281e3e38d4231 +.x.com TRUE / FALSE 1808747867 __cuid b00c4a6e73cf471e95c093aec1d1c0b0 +.x.com TRUE / TRUE 1807414323 personalization_id "v1_X+OVgjnn20lE7ppYGHrXzQ==" +.x.com TRUE / TRUE 1807414324 guest_id v1%3A177285432573681062 +.x.com TRUE / TRUE 1807414357 kdt aYTMkoEta2sR2Cbrf9TCU2vL6NQrNTk6xP26HzJA +.x.com TRUE / TRUE 1807414357 auth_token e0a16f1e58541f609e0b26bfd2759c5508ad67c6 +.x.com TRUE / TRUE 1807414357 ct0 0699cddc947b9fa7e4b226e70d7fc69fdd46a9d4623aea18b98cf8ed9d99fd308a01fec0e531ae1bb50b602a0ba9e87691d694888c39440c7bc8bdc3e35afd1d0757903d5bc702b71fa81c648a0108e7 +.x.com TRUE / TRUE 1808748895 guest_id_ads v1%3A177285432573681062 +.x.com TRUE / TRUE 1808748895 guest_id_marketing v1%3A177285432573681062 +.x.com TRUE / TRUE 1805724895 twid u%3D1051785185509822466 +.x.com TRUE / TRUE 1777215667 __cf_bm k7mwLxnd0mtyuyQLThqb20Oyb3q2.yEJfZw570X8CEI-1777213867.2375512-1.0.1.1-GAwpDeSYeFaRo9HzHK2Xf5tYtXiD4SzQj_L0kFw1S1P7FZWwSnOuJZ2JfxMxlG7vnUjDS0lBbszszPUWdOFb0upzl1YbBdE0jf6q0t7nJB0qvN9MElSi3lTTFOdf7HEs +www.dropbox.com FALSE / TRUE 1790090452 gvc MTk3NzU0NTUwMjg0MDYzMDYzMzA4NTQ0MjEyNzAzODM1MzUxNTYz +www.dropbox.com FALSE / TRUE 1787066452 __Host-js_csrf ee7vG1QZzX2hhBoptjGNMkhg +.dropbox.com TRUE / TRUE 1787066452 t ee7vG1QZzX2hhBoptjGNMkhg +.netflix.com TRUE / FALSE 1789916349 nfvdid BQFmAAEBEKpkhEFXmQMTd61zb4rT6FdApPuZS-qvyP3HIzl9d5Tk2rjxE6wW5b--LFBw-Ebbcmp7rJ640s9P91ltSiy8DTzu-0gEy3Ob8B_JHniDavIQXQ%3D%3D +.netflix.com TRUE / TRUE 1789916349 SecureNetflixId v%3D3%26mac%3DAQEAEQABABSSBFH4KvE6qPl_-6UI_re1LAdlfAy3rZk.%26dt%3D1758380348892 +.netflix.com TRUE / TRUE 1789916349 NetflixId v%3D3%26ct%3DBgjHlOvcAxLAAb-lG8nEmlB-x4EMpdZG6gG0_ZGe7HgQvUbBUgbe6kPr6Or-1cC94UaN0RbSzxx_OYBaaHLg2MvdKRvw0dKlWwzRJyychkiKImYRxA1PHETG8KjG86tx5smLKn9QcETtqecvyrKl04PUFZ6KuO8Y3LrCO8posa-VMj5U3gonTjruh63uy_zFQYQygkvrJIShQ1yQjNxCropJEzK536vs46y7MYjt_KPCIK9E8tpT80whmRDQ7DgBniSOyGTtiKKyFhgGIg4KDEsJyQjnvm9ZXXKI7g.. +.yandex.com TRUE / TRUE 1795878312 yuidss 3388071441761318311 +.yandex.com TRUE / TRUE 1795878312 is_gdpr 0 +.yandex.com TRUE / TRUE 1795878312 yandexuid 3388071441761318311 +.yandex.com TRUE / TRUE 1806578318 my YwA= +.yandex.com TRUE / TRUE 1795878652 is_gdpr_b CMWxMBD63gIoAg== +.yandex.com TRUE / TRUE 1806578314 i Tl5C1iTbvBz58B4Pigqm2d8QgUC+4wYSpsK4t9kymsq2s0hX0eVihjDkvNmLxPLd8yXet7JjFuW1h5SeT3bJ+65Aepo= +.yandex.com TRUE / TRUE 1806846551 yp 2087646552.pcs.0#1792854544.swntab.0#1787786326.szm.1:1920x1080:1304x732:15#1774610321.ygu.1#1772882321.dlp.2 +.yandex.com TRUE / TRUE 1806848331 _yasc RfaPS2g6xVw7Omhl+7/4pXIp30Wti0n8MwSiKMV6meOJl3Phq4TlP15XKqkV+MVJhr3OKmKyvTnS0m3SuMVVFhSLDPGFpWauk4yqACQuAydoupgmirYCoa16gRa9L3hZv/kc4QnkyqvC3E2KLQ== +.yandex.com TRUE / TRUE 1806848512 bh EkEiQ2hyb21pdW0iO3Y9IjE0MCIsICJOb3Q9QT9CcmFuZCI7dj0iMjQiLCAiR29vZ2xlIENocm9tZSI7dj0iMTQwIhoFIng4NiIiECIxNDAuMC43MzM5LjEyOCIqAj8wMgIiIjoJIldpbmRvd3MiQggiMTkuMC4wIkoEIjY0IlJdIkNocm9taXVtIjt2PSIxNDAuMC43MzM5LjEyOCIsICJOb3Q9QT9CcmFuZCI7dj0iMjQuMC4wLjAiLCAiR29vZ2xlIENocm9tZSI7dj0iMTQwLjAuNzMzOS4xMjgiWgI/MGDD84vNBmoe3Mrh/wiS2KGxA5/P4eoD+/rw5w3r//32D/68z4cI +www.kninebox.com FALSE / FALSE 1800025226 SITE_TOTAL_ID c9a65e54de60ac4fe330c0ff3782502c +www.zabbix.com FALSE / TRUE 1798733253 bblastvisit 1767197255 +www.zabbix.com FALSE / TRUE 1798733263 bblastactivity 1767197264 +x.com FALSE / FALSE 1788406355 g_state {"i_l":0,"i_ll":1772854333755,"i_e":{"enable_itp_optimization":0}} +x.com FALSE / FALSE 0 lang zh-cn +www.wmmflix.com FALSE / FALSE 1805607768 lastvisit 121%091774071767%09%2Fapp-index-run%3Fapp%3Dsearch%26keywords%3Dtt0817177 diff --git a/99demo/pin-img/pin-tu.py b/99demo/pin-img/pin-tu.py new file mode 100644 index 0000000..ab24041 --- /dev/null +++ b/99demo/pin-img/pin-tu.py @@ -0,0 +1,687 @@ +# app.py +from flask import Flask, render_template_string, send_from_directory, request +import os +import re +from werkzeug.utils import secure_filename + +# --- 配置 --- +# 请在这里修改为你存放图片的文件夹路径 +ROOT_IMAGE_FOLDER = r'\\192.168.31.92\ubuntuShare2T\学习资料' # 使用原始字符串以避免转义问题 +PORT = 80 # 你可以修改这个端口号,如果5000被占用了 +# --- 配置结束 --- + +app = Flask(__name__) + + +def atoi(text): + """辅助函数:将文本中的数字部分转换为整数,用于排序""" + return int(text) if text.isdigit() else text + + +def natural_keys(text): + """ + 辅助函数:生成用于自然排序的键。 + 例如: '1002' -> ['1002'] (其中 '1002' 被转换为整数) + 'img_10' -> ['img_', 10] + 这样可以确保 '1001.jpg' 排在 '1002.png' 之前。 + """ + return [atoi(c) for c in re.split(r'(\d+)', text)] + + +def find_media_in_folder(folder_path): + """在指定文件夹中查找所有图片和视频文件""" + allowed_image_exts = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp'} + allowed_video_exts = {'.mp4', '.avi', '.mov', '.wmv', '.flv', '.webm', '.m4v', '.mkv', '.mpg', '.mpeg', '.3gp', + '.3g2'} + + try: + files = os.listdir(folder_path) + except PermissionError: + print(f"权限不足,无法访问: {folder_path}") + return [], [] + + image_files = [f for f in files if os.path.isfile(os.path.join(folder_path, f)) and os.path.splitext(f)[ + 1].lower() in allowed_image_exts] + video_files = [f for f in files if os.path.isfile(os.path.join(folder_path, f)) and os.path.splitext(f)[ + 1].lower() in allowed_video_exts] + + return sorted(image_files, key=natural_keys), sorted(video_files, key=natural_keys) + + +def get_subfolders(folder_path): + """获取指定文件夹下的所有子文件夹""" + try: + items = os.listdir(folder_path) + except PermissionError: + print(f"权限不足,无法访问: {folder_path}") + return [] + subfolders = [item for item in items if os.path.isdir(os.path.join(folder_path, item))] + return sorted(subfolders, key=natural_keys) + + +@app.route('/') +def index(): + # 默认访问根目录,subpath为空字符串 + return list_folder_content('') + + +@app.route('/browse/') +@app.route('/browse/') +def list_folder_content(subpath=''): + """ + 递归浏览文件夹内容的主函数 + subpath: URL中传递的子路径 + """ + # 从查询参数获取显示模式,默认为 'list' + mode = request.args.get('mode', 'list') + if mode not in ['list', 'grid', 'manga']: + mode = 'list' + + # 构建当前要浏览的物理路径 + # 注意:这里使用全局变量 ROOT_IMAGE_FOLDER + current_path = os.path.normpath(os.path.join(ROOT_IMAGE_FOLDER, subpath)) + + # 检测是否为漫画路径 + is_manga_path = '漫画' in subpath + + # 安全检查,防止路径穿越 + if not current_path.startswith(os.path.normpath(ROOT_IMAGE_FOLDER)): + return "Access Denied", 403 + + # 查找当前文件夹下的媒体文件和子文件夹 + image_files, video_files = find_media_in_folder(current_path) + subfolders = get_subfolders(current_path) + + # 构建面包屑导航 + path_parts = [p for p in subpath.split('/') if p] + breadcrumbs = [{'name': 'Home', 'url': '/'}] + cumulative_path = '' + for part in path_parts: + cumulative_path += part + '/' + breadcrumbs.append({'name': part, 'url': f'/browse/{cumulative_path.rstrip("/")}'}) + + html_template = ''' + + + + + + 文件浏览器 - {{ current_path_name }} + + + + +
+ 🏠 + {% for crumb in breadcrumbs %} + {% if not loop.first %} + + {% if loop.last %} + {{ crumb.name }} + {% else %} + {{ crumb.name }} + {% endif %} + {% endif %} + {% endfor %} +
+ + +
+ 📋 列表 + ⊞ 网格 + {% if is_manga_path %} + 📖 漫画 + {% endif %} +
+ +
+ + {% if subfolders %} +
+
📁 文件夹 ({{ subfolders|length }})
+ {% if mode == 'grid' %} +
+ {% for folder in subfolders %} + +
📁
+
{{ folder }}
+
+ {% endfor %} +
+ {% else %} +
+ {% for folder in subfolders %} + +
📁
+
+
{{ folder }}
+
文件夹
+
+
+ {% endfor %} +
+ {% endif %} +
+ {% endif %} + + + {% if images %} +
+
📷 图片 ({{ images|length }})
+ {% if mode == 'manga' %} +
+ {% for image in images %} +
+ {{ image }} +
+ {% endfor %} +
+ {% elif mode == 'grid' %} +
+ {% for image in images %} +
+ {{ image }} +
{{ image }}
+
+ {% endfor %} +
+ {% else %} +
+ {% for image in images %} +
+ +
+
{{ image }}
+
图片文件
+
+
+ {% endfor %} +
+ {% endif %} +
+ {% endif %} + + + {% if videos %} +
+
🎬 视频 ({{ videos|length }})
+ {% if mode == 'grid' %} +
+ {% for video in videos %} +
+
🎬
+
{{ video }}
+
+ {% endfor %} +
+ {% else %} +
+ {% for video in videos %} +
+
🎬
+
+
{{ video }}
+
视频文件
+
+
+ {% endfor %} +
+ {% endif %} +
+ {% endif %} +
+ + + + + + + + ''' + + # 获取当前路径的名称用于显示 + current_path_name = os.path.basename(current_path) if current_path != ROOT_IMAGE_FOLDER else 'Root Directory' + + return render_template_string( + html_template, + images=image_files, + videos=video_files, + subfolders=subfolders, + current_path_name=current_path_name, + current_subpath=subpath + '/' if subpath else '', # 传递给模板,用于构建文件路径 + breadcrumbs=breadcrumbs, + mode=mode, # 将模式传递给模板 + is_manga_path=is_manga_path + ) + + +# 新增:用于在新页面播放视频的路由 +@app.route('/play_video/') +def play_video(full_path): + """ + 在新页面播放单个视频 + full_path: 视频文件的完整路径(包含子文件夹) + """ + # 安全检查 + full_file_path = os.path.normpath(os.path.join(ROOT_IMAGE_FOLDER, full_path)) + if not full_file_path.startswith(os.path.normpath(ROOT_IMAGE_FOLDER)): + return "Access Denied", 403 + + # 获取视频文件名 + video_filename = os.path.basename(full_path) + + # 将 video_url 的生成移到模板内部 + video_player_template = ''' + + + + + + 正在播放: {{ video_filename }} + + + +
+ +
+ + + ''' + # 注意:传递给 render_template_string 的变量,可以在模板内部直接使用 + return render_template_string( + video_player_template, + video_filename=video_filename, + full_path=full_path # 将 full_path 也传递给模板,以便在模板内使用 url_for + ) + + +# 统一的媒体文件服务路由,处理图片和视频 +@app.route('/media_file/') +def serve_media(full_path): + """ + 提供媒体文件(图片/视频)服务 + full_path: 包含子文件夹路径和文件名 + """ + # 从完整路径中分离出文件夹和文件名 + folder_path = os.path.dirname(full_path) + filename = os.path.basename(full_path) + + # 构建完整的物理路径 + base_dir = os.path.join(ROOT_IMAGE_FOLDER, folder_path) + + # 安全检查 + full_file_path = os.path.normpath(os.path.join(base_dir, filename)) + if not full_file_path.startswith(os.path.normpath(ROOT_IMAGE_FOLDER)): + return "Access Denied", 403 + + return send_from_directory(base_dir, filename) + + +if __name__ == '__main__': + # 确保根图片文件夹存在 + if not os.path.exists(ROOT_IMAGE_FOLDER): + print(f"错误:找不到根图片文件夹 '{ROOT_IMAGE_FOLDER}'") + exit(1) + + print(f"Web服务即将启动,请访问 http://127.0.0.1:{PORT}") + print(f"根目录路径: {os.path.abspath(ROOT_IMAGE_FOLDER)}") + app.run(debug=True, host='0.0.0.0', port=PORT) \ No newline at end of file diff --git a/99demo/tokenizer-demo/api.py b/99demo/tokenizer-demo/api.py new file mode 100644 index 0000000..1e5b50c --- /dev/null +++ b/99demo/tokenizer-demo/api.py @@ -0,0 +1,301 @@ +from flask import Flask, request, jsonify +import re +import jieba +import json +import os +import logging +from datetime import datetime + +app = Flask(__name__) + +# --- 日志配置 --- +# 创建一个logger +logger = logging.getLogger('user_activity') +logger.setLevel(logging.INFO) + +# 创建一个handler,用于写入日志文件 +file_handler = logging.FileHandler('useruse.log', mode='a', encoding='utf-8') +file_handler.setLevel(logging.INFO) + +# 创建一个handler,用于输出到控制台(可选) +console_handler = logging.StreamHandler() +console_handler.setLevel(logging.INFO) + +# 定义日志格式 +formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +file_handler.setFormatter(formatter) +console_handler.setFormatter(formatter) + +# 给logger添加handler +logger.addHandler(file_handler) +logger.addHandler(console_handler) + +# --- 从文件加载自定义词汇 --- +JIEBA_DICT_FILE = 'jieba.txt' + + +def load_custom_words_from_file(file_path): + """从指定文件加载自定义词汇""" + custom_words = set() # 使用set避免重复 + if not os.path.exists(file_path): + print(f"警告: 找不到自定义词汇文件 '{file_path}',将使用空列表。") + return list(custom_words), set() + + try: + with open(file_path, 'r', encoding='utf-8') as f: + for line in f: + word = line.strip() # 去除行首行尾的空白字符和换行符 + if word: # 确保不是空行 + custom_words.add(word) + except Exception as e: + print(f"错误: 读取自定义词汇文件 '{file_path}' 时发生异常: {e}") + + # 从加载的词汇中筛选出需要特殊处理的复合词(包含大写字母的驼峰命名) + compound_words = {word for word in custom_words if any(c.isupper() for c in word)} + simple_custom_words = custom_words - compound_words + + return list(simple_custom_words), compound_words + + +# 从文件加载自定义词汇 +SIMPLE_CUSTOM_WORDS, COMPOUND_WORDS_SET = load_custom_words_from_file(JIEBA_DICT_FILE) + +# 为简单词汇添加到jieba词典 +for word in SIMPLE_CUSTOM_WORDS: + jieba.add_word(word) +# print(f"成功从 '{JIEBA_DICT_FILE}' 加载了 {len(SIMPLE_CUSTOM_WORDS)} 个简单自定义词汇。") +# print(f"识别出 {len(COMPOUND_WORDS_SET)} 个复合词汇待处理: {list(COMPOUND_WORDS_SET)[:10]}...") # 打印前10个作为示例 + +# 预编译复合词的正则表达式模式,以提高性能 +# 例如: (MemoFlow|MookNote|VoceChat) +COMPOUND_PATTERN = re.compile('|'.join(re.escape(w) for w in COMPOUND_WORDS_SET), re.IGNORECASE) + + +def tokenize_text(text): + """ + 对中英文及数字进行分词 + - 复合词:优先匹配自定义的驼峰命名复合词 + - 中文:使用 jieba 分词 + - 英文:按空格和标点分词 + - 数字:单独提取 + """ + if not text or not text.strip(): + return [] + + tokens = [] + # 定义正则表达式模式 + # 中文字符范围 + chinese_pattern = re.compile(r'[\u4e00-\u9fff]+') + # 英文单词(包含连字符) + english_pattern = re.compile(r'[a-zA-Z]+(?:-[a-zA-Z]+)*') + # 数字(包含小数、负数) + number_pattern = re.compile(r'-?\d+\.?\d*') + + # 当前处理位置 + pos = 0 + text_length = len(text) + + while pos < text_length: + char = text[pos] + + # 跳过空白字符 + if char.isspace(): + pos += 1 + continue + + # --- 新增逻辑:优先匹配复合词 --- + compound_match = COMPOUND_PATTERN.match(text, pos) + if compound_match: + matched_word = compound_match.group() + tokens.append({ + 'text': matched_word, + 'type': 'compound_eng', + 'length': len(matched_word) + }) + pos += len(matched_word) + continue # 匹配到复合词后,跳过后续的其他匹配 + + # 匹配中文字符串 + if chinese_pattern.match(char): + # 找到连续的中文字符 + chinese_str = '' + while pos < text_length and chinese_pattern.match(text[pos]): + chinese_str += text[pos] + pos += 1 + + # 使用 jieba 对中文字符串进行分词 + # 注意:这里的 jieba.cut() 会使用我们之前 add_word 添加的自定义词汇 + chinese_tokens = list(jieba.cut(chinese_str)) + for token in chinese_tokens: + if token.strip(): + tokens.append({ + 'text': token, + 'type': 'chinese', + 'length': len(token) + }) + + # 匹配英文单词 + elif english_pattern.match(char): + match = english_pattern.match(text, pos) + if match: + word = match.group() + tokens.append({ + 'text': word, + 'type': 'english', + 'length': len(word) + }) + pos += len(word) + + # 匹配数字 + elif number_pattern.match(char) or (char == '-' and pos + 1 < text_length and text[pos + 1].isdigit()): + match = number_pattern.match(text, pos) + if match: + number = match.group() + tokens.append({ + 'text': number, + 'type': 'number', + 'length': len(number) + }) + pos += len(number) + + # 其他字符(标点符号等),单独处理 + else: + tokens.append({ + 'text': char, + 'type': 'punctuation', + 'length': 1 + }) + pos += 1 + + return tokens + + +def get_token_stats(tokens): + """获取分词统计信息""" + stats = { + 'total': len(tokens), + 'chinese': 0, + 'english': 0, + 'compound_eng': 0, # 为复合词类型添加计数 + 'number': 0, + 'punctuation': 0 + } + + for token in tokens: + token_type = token['type'] + if token_type in stats: + stats[token_type] += 1 + + # 重新计算总数,确保准确性 + stats['total'] = sum(v for k, v in stats.items() if k != 'total') + + return stats + + +# 定义用户Token文件路径 +TOKEN_FILE_PATH = 'usertoken.json' + + +# 启动时加载Token文件 +def load_valid_tokens(): + """从文件加载有效的Token列表""" + if not os.path.exists(TOKEN_FILE_PATH): + print(f"错误: 找不到Token文件 '{TOKEN_FILE_PATH}'") + return {} + + try: + with open(TOKEN_FILE_PATH, 'r', encoding='utf-8') as f: + tokens_data = json.load(f) + + # 将列表转换为以token为键的字典,便于快速查找 + token_map = {} + for item in tokens_data: + # 确保数据格式正确 + if 'user' in item and 'token' in item: + token_map[item['token']] = item['user'] + else: + print(f"警告: Token文件中发现格式错误的条目: {item}") + + # print(f"成功从 '{TOKEN_FILE_PATH}' 加载了 {len(token_map)} 个有效Token。") + return token_map + + except json.JSONDecodeError as e: + print(f"错误: Token文件 '{TOKEN_FILE_PATH}' 不是有效的JSON格式。{e}") + return {} + except Exception as e: + print(f"错误: 读取Token文件时发生异常: {e}") + return {} + + +# 程序启动时加载一次 +VALID_TOKENS_MAP = load_valid_tokens() + + +def get_user_by_token(token): + """根据token获取用户名,如果无效则返回None""" + return VALID_TOKENS_MAP.get(token) + + +def authenticate_request(): + """检查请求头中的Authorization token,并返回用户信息""" + auth_header = request.headers.get('Authorization') + if not auth_header or not auth_header.startswith('Bearer '): + return None, "缺少或格式错误的Authorization头。请使用 'Authorization: Bearer '" + + token = auth_header.split(" ", 1)[1] + user = get_user_by_token(token) + + if not user: + return None, "无效的Token" + + return user, None + + +@app.route('/tokenize', methods=['POST']) +def tokenize_endpoint(): + """处理分词请求的 API 端点""" + user, error_msg = authenticate_request() + if not user: + return jsonify({'success': False, 'error': error_msg}), 401 + + data = request.get_json() + input_text = data.get('input_text', '') + + # 记录日志:谁在什么时候输入了什么内容 + log_message = f"User '{user}' submitted text: '{input_text}'" + logger.info(log_message) + print(f"Log Recorded: {log_message}") # 控制台也打印一下,方便即时查看 + + try: + # 执行分词 + tokens = tokenize_text(input_text) + + # 获取统计信息 + stats = get_token_stats(tokens) + + # 返回成功的 JSON 响应,包含请求的用户信息 + return jsonify({ + 'success': True, + 'tokens': tokens, + 'stats': stats, + 'original_text': input_text, + 'requested_by': user # 添加请求者信息 + }) + + except Exception as e: + # 如果处理出错,也记录一条错误日志 + error_log_message = f"Error processing request for user '{user}': {str(e)}" + logger.error(error_log_message) + + return jsonify({ + 'success': False, + 'error': f'分词处理失败: {str(e)}' + }), 500 + + +# --- 以下为原有的分词和统计逻辑,保持不变 --- +# (tokenize_text 和 get_token_stats 已经在上面定义过了) + + +if __name__ == '__main__': + app.run(debug=False, host='0.0.0.0', port=27056) # 生产环境建议关闭debug \ No newline at end of file diff --git a/99demo/tokenizer-demo/example_client.py b/99demo/tokenizer-demo/example_client.py new file mode 100644 index 0000000..d16bcaf --- /dev/null +++ b/99demo/tokenizer-demo/example_client.py @@ -0,0 +1,62 @@ +""" +分词接口调用示例 +""" +import requests +import json + +BASE_URL = "http://127.0.0.1:27056" +# BASE_URL = "http://fenci.iletter.top/" + + +def tokenize_single(text): + """单文本分词""" + url = f"{BASE_URL}/tokenize" + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer DdzBgb8GEkBpA8gtCJXP24hGJz9bXpEOi6z91fHm25X59q5968XqtLxPi1MfiTHJ" + } + payload = {"input_text": text} + + response = requests.post(url, headers=headers, json=payload) + print(response.json()) + return response.json() + + +def tokenize_batch(texts): + """批量分词""" + url = f"{BASE_URL}/batch-tokenize" + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer DdzBgb8GEkBpA8gtCJXP24hGJz9bXpEOi6z91fHm25X59q5968XqtLxPi1MfiTHJ" + } + payload = {"texts": texts} + + response = requests.post(url, headers=headers, json=payload) + return response.json() + + +if __name__ == "__main__": + # 示例 1: 单文本分词 + print("=" * 50) + print("示例 1: 单文本分词") + print("=" * 50) + + text = "MemoFlowMookNoteVoceChat" + result = tokenize_single(text) + + if result["success"]: + print(f"原文: {result['original_text']}") + print(f"\n分词结果:") + for token in result["tokens"]: + print(f" [{token['type']:12}] {token['text']}") + + print(f"\n统计信息:") + stats = result["stats"] + print(f" 总计: {stats['total']} 个单词") + print(f" 中文: {stats['chinese']} 个") + print(f" 英文: {stats['english']} 个") + print(f" 数字: {stats['number']} 个") + print(f" 标点: {stats['punctuation']} 个") + else: + print(f"错误: {result['error']}") + diff --git a/99demo/tokenizer-demo/jieba.txt b/99demo/tokenizer-demo/jieba.txt new file mode 100644 index 0000000..ac3e9b9 --- /dev/null +++ b/99demo/tokenizer-demo/jieba.txt @@ -0,0 +1,37 @@ +MemoFlow +MookNote +VoceChat +WireGuard +SyncClipboard +floccus +GitNex +Bitwarden +Immich +牛逼 +安益强 +张昊洋 +王美丽 +李冰素 +清华大学 +人工智能学院 +自然语言处理 +机器学习算法 +康嘉超 +王震瀛 +张钰 +贝利亚 +朱益广 +好的 +小程序 +问一下 +曹婷婷 +好滴 +鲁桂娟 +安兰兰 +李春雨 +王娜娜 +telegram +Telegram +v2rayNG +tool +root \ No newline at end of file diff --git a/99demo/tokenizer-demo/requirements.txt b/99demo/tokenizer-demo/requirements.txt new file mode 100644 index 0000000..739a8df --- /dev/null +++ b/99demo/tokenizer-demo/requirements.txt @@ -0,0 +1,2 @@ +Flask==3.1.2 +jieba==0.42.1 diff --git a/99demo/tokenizer-demo/usertoken.json b/99demo/tokenizer-demo/usertoken.json new file mode 100644 index 0000000..fb44779 --- /dev/null +++ b/99demo/tokenizer-demo/usertoken.json @@ -0,0 +1,6 @@ +[ + { + "user": "admin", + "token": "DdzBgb8GEkBpA8gtCJXP24hGJz9bXpEOi6z91fHm25X59q5968XqtLxPi1MfiTHJ" + } +] \ No newline at end of file diff --git a/99demo/tokenizer-demo/useruse.log b/99demo/tokenizer-demo/useruse.log new file mode 100644 index 0000000..a56310b --- /dev/null +++ b/99demo/tokenizer-demo/useruse.log @@ -0,0 +1,6 @@ +2026-03-26 19:23:28,016 - user_activity - INFO - User 'admin' submitted text: '安益强,张昊洋,张文灵,李冰素,王一' +2026-03-26 19:31:03,289 - user_activity - INFO - User 'admin' submitted text: '山东省信用金桥中小企业综合服务平台' +2026-03-26 19:34:07,902 - user_activity - INFO - User 'admin' submitted text: '瘦了10斤了,我真牛逼。暂时不考虑收徒~' +2026-03-26 19:35:47,899 - user_activity - INFO - User 'admin' submitted text: '瘦了10斤了,我真牛逼。暂时不考虑收徒~' +2026-03-26 20:04:52,096 - user_activity - INFO - User 'admin' submitted text: 'MemoFlowMookNoteVoceChat' +2026-03-26 20:08:06,572 - user_activity - INFO - User 'admin' submitted text: 'MemoFlowMookNoteVoceChat' diff --git a/README.md b/README.md new file mode 100644 index 0000000..83ba30a --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# 个人python脚本 + +日常生活中的突发奇想,为了方便写的脚本 + +1. `content-to-tag`调用ollama/llama.cpp大语言模型管理软件,使用对应模型,根据文章内容生成标签 +2. `base64-de-in-code` base64编码解码 + 1. 编码接口(post): http(s)://网站域名/encode + 2. 解码接口(post): http(s)://网站域名/decode +3. `down-video`获取x/bilibili/ins/youtube视频 +4. `pin-img`拼接图片上下形式 +5. `tokenizer-demo`分词接口 +6. `gpt-sovits配音` 配音管理器 引擎版/接口版 +7. `stt` 语音转文字 +8. `rvc` 语音音色转换 \ No newline at end of file diff --git a/flask-dev-api/.claude/settings.local.json b/flask-dev-api/.claude/settings.local.json new file mode 100644 index 0000000..970e1c9 --- /dev/null +++ b/flask-dev-api/.claude/settings.local.json @@ -0,0 +1,47 @@ +{ + "permissions": { + "allow": [ + "Bash(curl -L -o webfonts/fa-solid-900.woff2 \"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/webfonts/fa-solid-900.woff2\")", + "Bash(curl -L -o webfonts/fa-solid-900.ttf \"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/webfonts/fa-solid-900.ttf\")", + "Bash(curl -L -o fa-solid-900.ttf \"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/webfonts/fa-solid-900.ttf\")", + "Bash(mv static/webfonts/static/webfonts/* static/webfonts/)", + "Bash(rm -rf static/webfonts/static)", + "Bash(cd /d/UserData/Desktop/my_proj/py_demo/python_script/flask-dev-api && ls -la static/webfonts/)", + "Bash(python -c ' *)", + "Bash(curl -s -X POST \"http://127.0.0.1:8080/v1/chat/completions\" -H \"Content-Type: application/json\" -d '{\"model\":\"qwen3:1.7b\",\"messages\":[{\"role\":\"user\",\"content\":\"你好,回复两个字\"}],\"max_tokens\":50}' --connect-timeout 5)", + "Bash(curl -L -o echarts.min.js \"https://cdn.jsdelivr.net/npm/echarts@5.5.1/dist/echarts.min.js\")", + "mcp__searxng__searxng_web_search", + "WebFetch(domain:raw.githubusercontent.com)", + "WebFetch(domain:www.oschina.net)", + "Bash(ls \"D:/UserData/Desktop/my_proj/it-tools\")", + "Bash(ls \"D:/UserData/Desktop/my_proj/it-tools/src\" 2>/dev/null || echo \"No src directory\")", + "Bash(curl -sL \"https://cdn.jsdelivr.net/npm/qrcode-generator@1.4.4/qrcode.min.js\" -o \"D:/UserData/Desktop/my_proj/py_demo/python_script/flask-dev-api/static/qrcode.min.js\")", + "Bash(ls -la \"D:/UserData/Desktop/xiazai/\" 2>/dev/null | head -20)", + "Bash(python -c \"import py_compile; py_compile.compile\\('blueprints/down_image.py', doraise=True\\); print\\('OK'\\)\")", + "Bash(python -c \"import py_compile; py_compile.compile\\('app.py', doraise=True\\); py_compile.compile\\('blueprints/__init__.py', doraise=True\\); print\\('OK'\\)\")", + "Bash(pip install *)", + "Bash(python -c \"import py_compile; py_compile.compile\\('app.py', doraise=True\\); py_compile.compile\\('config.py', doraise=True\\); py_compile.compile\\('utils/stats_db.py', doraise=True\\); py_compile.compile\\('blueprints/sovits_tts.py', doraise=True\\); print\\('All OK'\\)\")", + "Bash(python -c \"from app import create_app; app = create_app\\(\\); print\\('Flask app OK, routes:', len\\(app.url_map._rules\\)\\)\")", + "Bash(python -c \"import webview; print\\('pywebview', webview.__version__, 'OK'\\)\")", + "Bash(python -c \"import webview; print\\('pywebview OK'\\); print\\(dir\\(webview\\)[:10]\\)\")", + "Bash(python -c \"from config import BASE_DIR; print\\('BASE_DIR:', BASE_DIR\\)\")", + "Bash(python -c \"import run_desktop; print\\('run_desktop imports OK'\\)\")", + "Bash(python -c \"import py_compile; py_compile.compile\\('blueprints/sovits_tts.py', doraise=True\\); print\\('OK'\\)\")", + "Bash(python -c \"import ctranslate2; print\\('version:', ctranslate2.__version__\\); print\\('has get_cuda_device_count:', hasattr\\(ctranslate2, 'get_cuda_device_count'\\)\\)\")", + "Bash(where nvcc *)", + "Bash(dir \"C:\\\\Program Files\\\\NVIDIA GPU Computing Toolkit\\\\CUDA\")", + "Bash(python -c \"import torch; print\\('torch OK:', torch.__version__, torch.cuda.is_available\\(\\)\\)\")", + "Bash(python -c \"import torchaudio; print\\('torchaudio OK:', torchaudio.__version__\\)\")", + "Bash(python -c \"import torchaudio; print\\(torchaudio.__version__\\)\")", + "Bash(pip show *)", + "Bash(findstr \"Version\")", + "Bash(cd /d \"E:\\\\AI\\\\GPT-SoVITS-v4\")", + "Bash(python -c \"from GPT_SoVITS.TTS_infer_pack.TTS import TTS, TTS_Config; print\\('OK'\\)\")", + "Bash(dir \"E:\\\\AI\\\\GPT-SoVITS-v4\\\\requirements*.txt\")", + "Bash(where python *)", + "Bash(conda env *)", + "Bash(\"E:/AI/GPT-SoVITS-v4/runtime/python.exe\" \"D:/UserData/Desktop/my_proj/py_demo/python_script/flask-dev-api/utils/sovits_worker.py\" \"E:/AI/GPT-SoVITS-v4\" \"GPT_SoVITS/configs/tts_infer.yaml\")", + "Bash(echo \"EXIT CODE: $?\")" + ] + } +} diff --git a/flask-dev-api/__pycache__/app.cpython-312.pyc b/flask-dev-api/__pycache__/app.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a873700fb6b5a8eff112e53f988a794ca5d6098f GIT binary patch literal 1589 zcmb7D|7#pY6rZ`>z1!RS)@ntYAM}t2U1*Xvh}zH=#54haNJY~hvK(DDx07U({l@HW z^^O)UG;PmXX|RzL(qc*}oQHLzI?KL! zZ{BC-&3m6W-(@laAY)dqYZe2*BWgs0YbuTVM41LEkbnx+m=2AY6f+o!fz)Pn*5D*A z)LA`lB&3AFOT3Ykl7=7&WSyG;QYr>eYOZ;pltvjfKDG-0{3cn?s);%H#05cU^PB9= z{v_gNfGS*O{uzhTqc1hXZJ5-Qnnv6gnK_ax9T1eVrL36qju1mw{&YT=tOg6$f>R5t zGp8Tlz8jpn7M#B-1m~}>%zw5re>JGi1b6S`dvwJa%LjL+ex0g4s*EpxSqn~|Te)yK znE597?@f(Jn~O-3l2t7)AdpGX0;=%x;Bz4~R_P zI_&scWu7JI#tTGjtjyDV$-Y=$S}5bCLfH zM#Gxpl9n3OJ!E6eba9*@F{J`imT-~?(t!*Kh{F)HC-QlmBa<&Yy$ybjEKm-dAtEZ^ zzL1;ZKkBHwRgZ&s^31^aK-D>UbS(zCwgv;@JL*)c^MK=jVq3mvTQ2QeVqf{0O>Ai$ zSYpM$`W~jTmAAv>XjXErT+Kk0C`;v=jz-a(LfJB4#0b3TJT6VqFTbqN_-=l2_y z>gnhp&JzcH*^WmumpQPpxfHcw>p(*K`o7&h(D=PPSegsP$KRe`GuB8NjxL G*ZKnx36OmN literal 0 HcmV?d00001 diff --git a/flask-dev-api/__pycache__/config.cpython-312.pyc b/flask-dev-api/__pycache__/config.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b2db36b576e8e39a7aa7d3729e027d4d88da1475 GIT binary patch literal 1314 zcmb7D&rjM=9B;9f-ykp}bDrl+6w%B;3>yQ%trLY|$tGiaDYR($RYHpaPVAtWhsAM1 zvxD1>#mu;ym;D91kZ>VAk!;48Y>A6EPixWQqVvGFdGGsupYQkcd9UBse%ESMkYLVd z*2M1~2>Kx|BttKP(_b(IRUr}zLnKVfQg9fi-~=L-UHXLlGM1tnDwR_H(o?;=!akx& zK8)VL)}Pn?J5wmxLn37F?!~#nimth6hpX(GEAMbsU2_#3u9{SaHKZ!6?NUQcYC0Oa zuDRL{S5NA~eMQ-bK0he*R&}^mJN#NcUVC@+ZSVNQ`p<(eM|+=+-mj~U#m+DAXpG6k z>1AF;u7ViDBx#B*848vdla`hiuE3SdQ94D7<67o6onbj*IY*?gr3Q*jp36t6Yl%V6 zbR@)5IS;`R5f8;CIVKw^&_s!#OJcQSQ0Fgq2HPyXvDzF0U((e0KAN0c_d44E4-Yfa~UE{@p2-{wh;vY zaXLi_RSLIj(F;6SkVg^>o#A!(a}3A5K``U@&tYC(@5X$XI3%DCTUf+hkAtpx3DGV2 zLwLyTmDWa&ch(j1;Xr@`A-pZF355KG8j2UAy{>SLK@wsZNs+d+;DD9?%1|% zJI-xq&EB|kzoDKgD}(~$t?EE!pgL3;+FGe8_DAcF78?eAjgO5j_|Tzi5$AGn!!382Hop591@$2P8&Pmi;#vCS-qk?rY0NG{)QXoO{nZ z_jk`d=XdUJ6%{T7qqBE?#LXjghc3#)UYg7eG6!#;h^Gv?puy^0Se0iHe|ff`F%zj;Se0kv5EUI|%@m_^1zivg zA9cq(K@Zrf6k(7FRw(vC6!hXs#nID<5ZMb+aS_o1cuZig;+$}e+lt1ZANwP#A9Ju4 z<0TV=0H*?bCfo~AfW;Mg`k#9gj{=^j&}p0ERVo$Vgnt||PKSl!iZm2gi{-*OXbiUO=*;QQ3&ZCNAC47Hj){L}M#SlnF)@)&;r+cTPKkH39~XYk6po*n9yv38 z?nEK?g)5OZ!dhG;$+)Coy~ofJ>k?_PaO}H6?tBrd1pDI%V7X>!7;UD|MYKK~ZwW9a z_g4F^j!>zrR*)P>x}MumBnTx38eok_K9N!yE$@;jU#Z{L2bKZue|mF0fJL5hqJB0~ zO50-8e$>x&*%WqyE0=D7@8=_B3NLakpU2I=yUk-^aQCaU1?|yo$@Zs6QG<`vmVjUix)$oehRM;drawfmY+xy*#p5_+s9N0Q zLs3n~roDaln}le@MfP;Y(o%wGkX7>+gfepgWxZR%LZAolPHkZ*Ole|Yz@ukos{X{aghsmQfvTaRwfS1+FxkjMY<0grsk?<2-p zf6L>`?a1yJ){nQ(vap_i;70DsGW1oK_)w=$(D$pG>d>XSl}%gNORq2>LtuO~C<86# zx4{ISMvM6|X25FYepKez0MpO>8(S6DpxL#C!cFky#}YV+0z#WrdMLW9R8TpQn0Ib` z?xl4b;J2|Qz!Lg!l1dP!C#hqJ;HV}mm;^YJ1!uC9eqkZ$gtlnFW*JBg%yr5tQ6%&| zHQl-)6DR{M6Tt^D1!P1lMI}m1oHTjgP7-3TgW3@YMn2s16r>lJ!GO!Gg)ghqF3_T;T#I#G2 zqJ<>MWc9Re+BBUwX_QVQ3|*n9@ov)&0m_B}T@VT@DgpM(0B(nAT!!{>;R867H01qJ zXqeJNY6{RyU23^)*D>y6jz&f)aG4vqs^l) oUUod0_g3XAtMdN3zuW>Z%z6=Dm1#Y^^We@y?X#;8x5B#N-%Gj$IRF3v literal 0 HcmV?d00001 diff --git a/flask-dev-api/blueprints/__init__.py b/flask-dev-api/blueprints/__init__.py new file mode 100644 index 0000000..dfe8873 --- /dev/null +++ b/flask-dev-api/blueprints/__init__.py @@ -0,0 +1,22 @@ +# blueprints package +from .pin_tu import bp as pin_tu_bp +from .base64_codec import bp as base64_bp +from .down_video import bp as down_video_bp +from .fen_ci import bp as fen_ci_bp +from .content_tag import bp as content_tag_bp +from .chmod_calc import bp as chmod_calc_bp +from .json_format import bp as json_format_bp +from .qr_code import bp as qr_code_bp +from .http_status import bp as http_status_bp +from .url_parser import bp as url_parser_bp +from .token_gen import bp as token_gen_bp +from .sovits_tts import bp as sovits_tts_bp +from .stt import bp as stt_bp +from .ai_dubbing import bp as ai_dubbing_bp +from .rvc import bp as rvc_bp + +__all__ = [ + 'pin_tu_bp', 'base64_bp', 'down_video_bp', 'fen_ci_bp', 'content_tag_bp', + 'chmod_calc_bp', 'json_format_bp', 'qr_code_bp', 'http_status_bp', 'url_parser_bp', 'token_gen_bp', + 'sovits_tts_bp', 'stt_bp', 'ai_dubbing_bp', 'rvc_bp', +] diff --git a/flask-dev-api/blueprints/__pycache__/__init__.cpython-312.pyc b/flask-dev-api/blueprints/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a8ab2fdd5898cb60418adc9f9dc81aab9002aa1 GIT binary patch literal 879 zcmYk)J&)5c7zc2t?WM12?~eDEa!9;L6)IvtNFW4DXCwv~PLV7paoe;>Y#uvB9r*&R z>}-4scD_NRPKbdGaobHic73#w;`|;zPTYT!A3@L|c)Wi5WbwI9$WK#T95sit?}#rX zA&Hlf+&is#Ti4MI=L59w+(fsW+vtvS7u|CX(0%6t`q23Zee8S*ecAa6`l|Ca^mXSO z=$p>B(6^n3=sO;nk)-z3J3U#~M~&Ye#u#~3Es~=_)s|^Nbx9*xwIinZv!{kZB0d&$ zl_p%+&XgB4P7V99C^RoL)of;0#`9bxG-g?B+Y2QMIu(#JZR*Ykps`4}?aj58RB5J5 zWp6DZqmqH*V9K5rOWbCLr}+g+tWvG0#uH0lY5Tl@r8Fs{C@t*nKCH~PZ$@`3e;Wkw z?Gb3;Q1x6MvwsW+W~#Hx1-_Z^x5=Psitb)EXxa6kV+j+Gp3f~gs;X-reTzoTtZrC6;hfOsiyR? zT%WgI;_EFl{t6!AHs;e&&vE!u_dM?xxwj#s4SBRN7+c`@;KJM1(9RG4HX7a9rzYIT GyZ-^%%LwuS literal 0 HcmV?d00001 diff --git a/flask-dev-api/blueprints/__pycache__/ai_dubbing.cpython-312.pyc b/flask-dev-api/blueprints/__pycache__/ai_dubbing.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7755e20e15fef1f1d924679ebdb2f4ae7db7bd22 GIT binary patch literal 23675 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 literal 0 HcmV?d00001 diff --git a/flask-dev-api/blueprints/__pycache__/chmod_calc.cpython-312.pyc b/flask-dev-api/blueprints/__pycache__/chmod_calc.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db3190a67c18de6b6138dad3ec0304f84be9e61f GIT binary patch literal 562 zcmYjOO-lkn7@nEkRntnkNztj(f@{z*A|gC@i9lpw*mlO$cHLoijEoLNLH&WSzfgAQ ze{_-RG`A>-ZiY8c&8&(IydMwqzR&yhvapZ^>OJ0-ny<=!YA}7)#2HqU(**<&7=RE~ zVTh^-0t6@|h#JIrGJD22wrWzdnVS;KEU|iUj7aJl^d=wGR3~j`el)U?oZAiBl<`JO z$ULVlLOB*RWPvBB%=+~(BG~r=|17tj07nBG%50klm~mQboQ~kSKcP;HZc59rpi~!# zNee&?GHqvHRo*+x&*)2a5e7Eorb>ALL#4r}Qr>hAV#>>&@Z2(uk441Xu%oI*O_y~r zp<$$~s7Eav`@F$~TMNAS*dg@9@mRw>oK6dl+4KC)x8FJ6>-aM>7w4a186l2&@Jpa6;0E z*WkiaQX>(b(i*Aol-0=KDQ%Ry6*UUCvPS7v)u`O+8a0mk$r?3oZH?BgtI^?@1S1uM zoYWJFE6U4Kah{qKGQ|ZrBqu_38RkccP=6o0EM~D9<20=`gti{PqPr{+8xs12KB?38 zNtx8gkkBV>nm$Hia-Ysp~wRbtq<{%I`R995V08g zJ;(&mjWJP%0+zyK%vFWiC0pB!2@@0_WZaE*oRUGGOV|T|*uz~F<$HF}Bvs*LoO>!r z`ViCHvd4WCrfqiZX*ud3NOv5s-V&{urI;J&9Ab z9OY##&U%tE!Yrxqqf-F1W5e1kF1skGE#_p!6e?;{m&8dWUALwh)~$4tFdsorS~1$Z z!itL_GkL`fDi>00GZB(rNdg_DTdOZgcqQ$rt0QTeSH&i@ODF~Oqm&5f5kMGG1^~Pc zeb87#$^u1Z_|XWURiyPWcS<(|OE(2fn}gadoNSBGmzO^M?-Nu z#TMYjSd2C@u@g%;rwHl9q6pamNfpK*#D&CSvE|}eLN7U^jQ&AE6exG?#O1}osR5n$`W@oK{ifi8AKg{WnKbG|09%l#pw@ zNC1f|PW@OLEPk4MaTcdjCa6zH2^k?zq&$nev=jYeIYL1w<0rk!3dLRtD*-9(=GBP>VKZQi}1(lr+%SW3kaIunu{h zq#mo2)B+v6a#l{HAbh(dr_?gctMDf99${b=gfVgTlPHrqHJ<0OHzkv4RtI#ilX&Gv zu$dTxxK>E6v{-K9=|b$9lxAU6I_!@4j(~5H#!8cCsgvx&U}vFyE+ptx;8iB}V$d>$ z#42OEE)h>O0%7thk14C7&m;H|tW~-TJA&KOJvQh%`s&ZZ9k0jaR=A^o6~rl(;&lo2f}Z*Q&~{)P%a3)F|^|- zbf7#`3k4v8=rN=UU4rwJX>gOx9%k$oyz>fir|_~Sr<<&XBM|L%YCZsuFq42<6qz6W zWb~(Rm)rh=_$1Qpk9_dj=#94`uf84j4V2rq+V#S5K;@uerEn(ja+(1VA)E@lf}&d* z8yH>{m6kNGr5PvVp+OQ7Brikf2d^Pp>&O;C`0|F;%}q^Y9eP=V4jx{;CRWKyVPLz8 z%0;N!&~&Q(PMQ=bq(Vy-ayZ4~Zeb-nPSWU9vPF}46loh9XvQHfpIQ#pv*1UU0_obZ zKPxbuDd8vz8B86mCtG{eLBovOhI#(|Ln$SJl#*adY5TfAYSV;ciYwa?uxtz(HgT#= z;|k1Z={R=sSWmtGxuC(`R}e5PXkQ;PSb7QrhS}}w$7LG%^1Hh9j?E`G_hj}hyrV1j z;UTTA0G%@5h<_nR-7FK71WT*?_ZcvBLzul`*|g@0wIvqy2Jfy=1ytp#w` zl;vjz4hOPV1WiwIx~GQW-NQYx<(Bie?l0W89Ngozf$Y6OlY`Sa{`!p)Gq1t_^Uo?w zmp-J;3uyC(w8a5!@i!PQug1kiEM9xF^`?s}+ZM2F4;rd&tE%p5(@}%vLj6z62A=z1 zNx)JbG%Wj4wd}vfrBL&beiBIc>CBa?)pN0*7wT5ekp28|1LS|9%tCO69KpH8YcT0& z78Qc|=89#~&lck-zf2Agl!Pk0K2n^ePZDRU1aYQfRYXRDI8%F732QbJ76zS~LSof1?l_MTnQuy2HDT?I zb4(S+N}^noMPw5>L~gI79w+jM{9dV7lR%rez=@5EVJyySfI7CALHUR;h6H*Ue6L4P zz^i4oQ*$>fiSvYR(kcsBo$zI6Bywg#3k5NAY90bg%$k~e2#hdfVKAy}^4E)sc2$yS zN9IjZav`yol>SDvD~Q=Fp3Id|(T>EGkOa}LPh1ZZH`iHx?5if?DTsE=t3Rd((Jnj_ zMEjhrf@q=&U~pb8h#4?7nh!8XoD|8c1WObQ(Y4eJXdno0UePR+QZrErl173Er{J%2PqG>;lcOB-gc>I6M$_-)5xwv3Ii`gM>sF@ zfC0%%4mN<1C8L@f!9tFjf@4ULhOR46V^y>(&1>AwRtM93h-{+4)>sIY6fiL6K~`20 zD&p+rwwRu>3bjLuGtz@bZ=4OEf6LY;fu%2iGP`j?A)$((fI`NiXrz>&++zro0zjCz zGQ!lnw2^EAW3?Gnj51We2!X{2ECFConb10fbx=>CDmWrB>Inpv0^ng4R5^MR$f9g< z9&K!P5}*T-w5O2~C`~Pcdcg{gX(i%Q)J;@~k`54tR24Ks^rAO{I+tuAJxVPJ=~Fv) zp4{14AJpgF*3a_K7}6C6bcI1(QTv)$KaC&sm6G=LQ>rksO!@MV*3{XGv=K{Q_pz>H z{`$V>f|k;Of`Da_Z~a|kX1A_O*R!*ax?^1ETNyGKJG>{oe(7z)Om1%Z&4SP8d^#sE zcl}*UUf*Kw$x80&owwS!Wi^5P-9gJ9&bTLJ$@doqEJZL>s9z96~D_^Goc!-L8{Rj zK{evaxBR+}+rINxhi=t!H3YYmYzrE;-&Sq^HX7U0z*C>DSedu3 z9Q#G?Qh=YCXCSy#w{EfQm$F>Q|8mC4x$yX0GatdlasDpO&c|#iMLTq(?(0g zeaBv9lG>>!QV2t$a0jK+C@7sqRx-(dp(j$4TFR2@(~|0^rj6+zqK#^rHKqSUqo`RG zC1F)fIFaGiuxiMwA#WBGA|y(Z5-Vfntb$cuv0Mfd1SPL7PL~u`!s?J(27j4^l>nu# zS4!mcD!lq83y}*odA$-MpVgsfy#!iWpy>-;tb~$7e?1{Z)@Oq97x!fd(+MD^ zxO!8->w`R!LYhh;2Q^Vo6kM4RR}&4aVJe>pF%v2FRAGX`qX#u@%C?}u&4wD}5J*a( zz|D**aFaR5;6ma%DaBV|j8m|THBPC9&LQGz=p#LAsnhhACaAG#O)pH-YVL%}?=`U| z+CGUI^O*P=TvMo?tP#|4du+$WDIrPXd=oJrnGRE~valiUL7TE(@z10JgFLN5a>bS2 zSP6s*7O<&IT$y$u&umhPb5uH;PUW-dE~MHfC88*{7a#T2V82Pc8436x9XKfw#e{@S zC5j%6)0L9TQSa=d=JT2p=0b{fQX(E>&9UzYo=i*B^aDNIYhf*q8kxpVr9Zj_ctB@^ z2Q<@bVUP|lr1(Ct)??l*HnRe&1=SwS#aa*JFs6#Nx{$J;lvqoQx;VyWxeAl2;We?v zsX`gXAiY;e-|l>2Q`$h&Pmm+o2|J>c&0;gyG&Y-9*ej1=QUyL(!4GQ@jJ3Fj*@cwt zq~t;xcT)NrV@*$#MUAzD6D4Y_J$iIxIwU0+J#~_oS5GWT+@H~Lk&-VYXg|xFldxtz zv6z8#QcP@4Y}JA>nS>vhfH}u<1XB>638vtZ1XD1z3f!2?S7E-hTg{TsYMrtLzCmMNUz3rp#d{1-_M@_xX(TT{z}Jmh3SnIsD&oH$zTN@O@ZoE3hdW*vZGUlh`1l87XWt*~KV7;20=Lop!i0QT zZ86Lj?s!im0!)vP5JSW_&W*f#I{fhuVbJ(A;nN?$1cHhC;qbNB!@idyZ*@jd?DnHU zfLJH47JKdjEzsHq-v+cIr%sL>e;3di9()Bz9r?)%Fv9S)S0f#r!=IdwuT~sqc<{$i z4(|Op!hdRiL8D2ef4S!QsDbR&Xv6`_HAObDTco!={G&H)&&N2#D;VK`*^3`X-gzPN z$`x^>;lXQ>?mh@{NBo1~8!tjt_{P5?ddJ9wW-XeaTKLBCv5VItZ@wM5+Btmn)kJg< zIZnJZa`F9e$LUCqKR*804|~KxBK;k}4)Kv;ma*4vgs;9Mjv4Ol18n0A?6pC3Ktx|; zU||8_A9s&jd1v^eSH`-3Dh?`ATKwq4gIB-4{ziO)X}|UYTXAtQT2;q;V)u9#F>ZoB z%iw85(cY88*RBnJ{95=p`p%>8{>#{jmm|K{!zWLVTyF;i>@r~^QafOeP|qN+6F~iM zevQ(9JXQb3Ig~znssRHF#xCXM5Epl}@LF^U09`NefJ;Z)%D%ird=VT}ZE4XesEJj;^#^%fvj?t9 z$l-24J?%k3%H0d#V=Vjn`uROgwT0ENKy(^`+XbC@`ynfm3pt8tkDK%${Uj;Elo0AF zw+Rh|b@%@a_TT7-$0OYzetq3ny6~})cYpBp^^+bXDPYG!rRd{=1?Eia4&oIDnklyv zd{-zoCi;ac5mv}KL~TI;$rfHtc-$>CxOYhSlBAQWJIE_4Dyvs+-ptGEsb)_LM5a9Z zA?_uFx}BS}5|wTjN*f#94hRgkco<&itYbXR zMln1_9YEDu;k!G4Ot5T~v%w+qu&%C=bT-BMN#TnE<2jEA;*6KkB-uo{P?^8L}LP|sD(%Z`Hi)*4`!|H%#N6_#Lr+VhAcqnmWz_KZ5*vzRm z-^;Le@9f&y(-_Psyq!_nM-8Pf4Wus(rkA&G37IV2OS_i#Yz&&_-ZmBWEgVW)6i8bX zOk2{v>5nr?x^l-cY{_?J?Hj+ES=_Y=UKZD?+PB;@1H zi^t_sYs$C^v*d)b^FkS!p{%_7scMtPr@Wtz=~6@avwZ71*9CMr!$2}?m-S3``^Iru zvAhz$Ys&6^vg=8|rSHg1=^ayrPjycVvDf^7Hs4=%TRR8&@gStR>DKz8&HDnI_i>w? zoRi>4_Yg@1NQ$G6aLf^oY~_ff+~aM5?B|0fmeaBKz@?bmm3t=Nr-1Q9FQzsBLe{w~ z|Hc7H&{{TReIj6eB4}Oa+Zf6&xKMts9Ne3pVD{pZo9~%(x?No^zqM~w&|KnM_mwFt z>cp(Rvt!rL4o6^zgWGq2^R(UB@jQ^#i?5Wx>aWY0Sghd9PsJx78dm{y|k2DRB^L0SXlKt zQ=NY`_iWA3v-<+i?)&oD{hh13H*{@yZ4+mz^Qiy~8`56!_+;R#1z^hl29v4_e5*r- zw4PZne>Y@I?^boGdQ4~aD68$#_N@NWXd72Tqd#jfQ)aL1g8H2Lyw>juWIi@f5KLR- zQw|%o*oGodAdEoGBcldt(mKZQS-< z+_oC7Yt*X6?SW1j|&k1PfBu2ddHq;F~Dcn2S``PMS_%GJpT*{Sg4p_DX z4O_odZ52Y^mH0y%X$b#Turjr>82h|zl?)zVEM1)qkKdRwD($l0*wYYPW`UA_H?7Qo z$8YU&1dEHeEs=70^8p4lDg@K4+e)Q@LLB8wZU&2=$pdfz|?6hQom_c{m)rWPghwix}}jo^YRy zLKeSp4?>7JQ0S~px&`-8wH)GDoZ-4*tG=rK9>1^nxk@F+;QEcZcF1ePu>XS|QWufTJRQO@Y!)N2 z9*o3EfeY`!`MaP;z~6;EBDf1(#IU$WJS^#v3`={Y!?GS3j_5@$`LLo#F|6!S4y$@p zI3`QR^@>j7QJ*j}yKw3!Ut9XwQ?kc#OsGOnN z)DSawQvEKB5?!R`RqWkF7VEJ*gIb%W)@4!WK7%@k)DPhA8Qv8nx+RTSZStPc#;mA9c#e*edBSi44@UN1%0c3YQjeP`(hfdtvo-~G=7WumS8 z5gK}jO~lFexO~(I?R0xN4NbX8ine>H;Sra^OK}pKI`5+xFDDsdJZ@+IMVpYzX=~rt zdh&3W{piWAV<)@pZ3mBYvSY`OcAvJNJbsu{cbz)e)zyC7zW3pCV{sNst=5o;r(cx} zNmf1b52^L{3rHa=xPXn}j0iX_LirPzjp(4!Qr^TlDU4{uK{M1iF;>&(86H=76YN9} zz%3=zyPUl>JPoaeMx5A9d0n19j&ONKDH=E=1e#t@Qg@s zrDo(Jr?ER3d-7Fw)ZPe9Oz>l#gJc5xU!sloRK`HxrLzmFlBlX=LA5EW+7wgSCicY@ zIf4F&qF`RJJ*1j5MXcK+qU}$i6}F0}=jjRL&;r?TBI(-ao{qdhs%$D z1+@^U@f7t?N=_si^C>Axtr&@sL>~0W;;;q+wA+FIl8$lX3r)?9rL||yuq~Uee@mZiX-@q1Y8!-6enbSy&S=KY3GPdz=_677jp6Wz$`f+94D+Hb!(Sk&L4KU(YtwRC-hnpZpw~OX5h!IioL<4pR&d!P zB$6JX@8S_!Mqb$1a2herrs0GjWjVoL)`{8yr3XkLMifLdZ~FPS!rwM~!%)ZyUkM zQ12I!gyAGi@{M>uCvrL66i0wm^D+z?CrGQ*x1+K5(G+L{dy<}Rg8EYUF-wr3k4Ja; z+|;>C!xQ`ONwo2@s=15Nyw*v{v}REvdwukk(br#k<)t^>cO)B^1#+2gQD=P99qNne zHZNlmRVN;H#0v_aU}9Y-9%zf_7hi9@+IX!g&~`7sIJEVhmK!Z|^>@m)$1T=)f%W?H zSDz1gV+B=#_C<4Eu;I#hsPoFpaZB-a%~j2Ur7~)%47bmf+&nNx-D>^O;QPMYoga)v zER}aH#~!QD8$J`FS1ubcrGBDga{ENbXU438&p#zFZSE5cm+9h4EqvV*9m@nftT5YQ zrXLX6y`|U(##Y&0qwvFG8>An}q)_yck=R=-`6y3_^2K~wD%)Et{HO+pv@iV$Lmz1M zd7;n*J7N|afX|J@{X#DkC$0ca|AG|of5Nwfei4h)1SmWaDMDQLru+K3iqD%C7U>UC zmMMdN3Dhqs_7fl)(n4e?Ejp6Jf?MXp1R)`2#Y1U9l0}1&lJ}&kkIGMwV)U1KhL4GW z`JG{jbw!4Z#8Z@@8cc|KT{`(HI;28?gU_HZX+f98HCd`h5KhNP4J*BX#NJ6Sl3e`7 zN=XfRNYTM8z&Q6SSjAV)LdhzjFUvFDtW5QYMBVfoB5XP!!rYgh!Ohj&S$}o@Q@P`A z2JR5R$;K?+5dRgtapNM46$Ef*gEy^qz~o69QGOMvC3PgY1@O(PWf-ekZ(TsGt4YIq z#+0Gt*RYzQv`R@XHQY$kxe8Dc{|2>1nbK6wul1Is@LKwYYN#?Oi*s%ne&)@NBlrZdYc|Oqlt?wd=*xrE$z~!M{i*DFrwoyA|qME8n0n*3;ZV5G*p>tnYok2saB+w zHxmpOaQI4!pD}JziW+!m7^=?nlgfR)w`6*m?h+x{Z_dmrEiVkb`E>^Il~sP7vHLBo zg*Cu8fln7aV|3{i23g6k6`fC(ptYjS&v-{^YOD$VkY(dARTzgCqQdPyX!HgnMfRSM=ZhVfx`ey}5Ml&#e`_&wz{`rpoGddR>%_!@9tSAkO=o zU?C~o9{Z?+c01hz45wnwIY;csO?7!3B-ljAVB+KnlL|Qy9s9s@m1YR|4mkx$F@4~N zAUlhbP;T%^D2C2~F>*p`%zKmIghL|(oM>o-8sLN@Zpe;Oy(64(z}e5qy@S5tUbn;P zVpcpyJmXH6%Te1<#fZF7;8tDbxU1M-7YH>Y}>laI<{@A&DuIL;-XGby@#CM z+J^e=HTB!96^9OV9XVWObve&b*8No9Igib{caZiBQ?*;3gAUN2^@O9}K|7O8R$9C; zzS=?Wu&c@e9Xk6QXb!bwsHAdiZRxOU*ZJLbH9M;|*KX!>J66<`yZYpbD$1RxxhY(c zpJXVyx^)29z=>P?koh^TN!+UsJKO_405KjR*>+RFNd_qgfDQ~N@j8bokI(z)HdKt) zHVso=#~G#)_&-9?-iy0SJp+wAuS=n{&*Sz&@4HJYUien&+0C}nM@SSuqZPmW>$X}^ zjr1}#;CBxX@ZP@4>v3m2+ITa*v9=bd&LqmuAiCONigY?^;oWDL((;zGm9|x`p9qFh z55K3#yF3J%bru}Dv*5xYw-xsnrqS&W6%qOw9iBA zw-eZWUQ76VaLe`WSGR}iuQi47w_BolE&tA-sr*5a6(29iVnv2SNk-7$0y2JlBUgL(xIA(9(9QvynbVx^YCC+)-ulhfgNIx99B!wPIHhY)f>6AKk0ZY5 zwUe$9PIemhgRhrrJIpCzlhTepuifc}7iz1qD^5yN7ho$HVmNKp+1_P6B(1M{*9JLflKg2zPo1O1e?9 z0TSdb4!byfn3H)1l1s(O_|0W^lF&6nfjcK0c9NW^-{*311Ps;T;zYd;aK_M1L2lZ* zR|5A?t=a|j1hhbtWc~@9kO}P9I{n1+aiw~q{r`$FsX1O)GPmKjA*%0~l-^Sq;#S+_ zfxxM#vT#wMy1adA`{m}T=C^9@C~S)x>!IdMR9X6Kjeb(JED*^oi#qdyt|Y1}301^& zmCG2e+8t)%=DY>-rl@&SSU5*T%$s87rhw=(A=EvQW8h&KEVBn@4g^nydSeFLyrCo9 z^~3I)-E+h5ACFZZfalwLCfnntyxGB-!QjQ1$u_zFp2id}-0%dG>&gS|@uITp&a2Ka z5vF5B&jt3!^R3r+Ufmfw8OyJn&)*WJ7xH#Q^LE7Y8UuUpnTta8kIA@tCzP*vb`K z>pBH2z<%gohhvJ5!1;fUuVPk0EuAwGwED3c*jkd+YjUh7J z6fNHoE8Gd=F_s2#@RYB&Uu_R<4CjCo9K^Z&f_OpsLP2%3pgQchQ&4xWpk!GFq)*hC z(zKXU60*f|swO4NA}s%~AZ|JpFRpzo5$WYnB-ewNt2NImW)#7_Ve_rhfFh>dJ=q%9 zXfOMx{2}4IrYvr@%wCwe5D+aIOtS}P4n~TOMUHHJ%1;!C1!33h~oLM_#$0HU~jx|=dH3^#z=k( zzy`qQ@tN^Z*_D?==c8uZoMGPFka@#~JC@qGrQo{ssx)MHC+|jHc<*0xM=jTdp9F1#rvyvG}P#V*ggi4~?4IwtFtp~&=(imW7b}{L>LU1x(yiYEcxd(bl3zBU`d{u= zbSQ=Ys=!gIk#*z?|1}SXbOo>NgAUUdLMeEp0@T(jxEMU-qy_`vR?so7L6%Sw$VSo( z6ckb#H!&U(O^6|Yu?8smRVWU?k3q2c1a@DM7s;=RDXJr)YMypnS_`p&3r=cu)kxBq zNfnF-fNN-+xYh%%*9D&e%uabkUm6_vUHTRRjG07bNCNq70G6i)h<)u5iofOv0hDL( zixNPEAap?kRO^;OUYtR6+&C!(JSmOjuxTLHFCt~6oK%oX@KFKnVMXil3Vc+8RFUfU zH1DESgp0>|*1>~F?K#klH2A%M1+7zm4I^{j76Pa$9zyHA=JHEOJ!x=3SkN!!gE~^6 zLs0#iE49}Ejgbu@jD5`oZ!tm*+N5hP@c)Enm7_7MJCDn=KeH2goNX5P_(C+?^zxzqxj~>49w@a75^U1ZpdJuX&;V)T{ zrvOgU{hwU3I{Rs`)vQZD`qNLo_xB02rx}`ZG9N=hfDU;;L_gS%$c&-LvyKxsG&J6}rB(2XaUr+^ zN${yB;fL$J7yO4{TQjI*f| zJLr#4wI&^K0Ly*E=jFG~8Z($4P4&--`M@ekzl_>S5tHp+#{egGx`$w?Ih^8^$7+i= zp<^I!!s`zD3N-yw_%VM8dTIg#t3r`;xoWCvL7o?tL(m{p8k28akXJ_Kl`(ns#NI_P zf|N7L1+6uzwTAM;12OHkTjf#hHzp1)nhIxKGp+?wdDK)M`u5zOm}&chX?N7LJ7#K` zIQkofI<7hUo3g4O70+m*U1vYO80i~;R_el_Gp4SX*bjD>`G6pvb0VH!33iu83`I%{ z(T~TK`pbu=4h4mwQ**tyH%uOiDUX7+p-^7lJ+(WycV1B(Hx5JwoeP7$=%6n$a3ONx z+Yvn*QL@M)xiEEMQnVzs-P7d;ORjIcy75Z!q&S{qnXR6w4itxkp?&Whxp5@a64BIy zbuPwCrJ)TWQ;3P^D<`FKg+AboD)Pa+m~EPA3Q5BibKPL|-Z~%Cw@!iWV+_O<@R%qKbkPnJm0*?qIYs(aU5T@(UEdT~rvrl0nneb>BICCUW*$vD5ZQ z_luDi$%ux!E2TaMQwFM67=%lHxUs%{3-(d&9y8oN-Xhzl7k=ER-lrD+vlNH?KdT8y z$Hle0U(1P(9X-(nK#T-nfIzsP7#0FBEYgY{3=7OJ%8nnSuvE(QIRkw56JRP3Yx3-AaE!uY`? zLE#PnBBkran#ptkhg2eWmsIgUqzsg?J~{2I8!KgHq&mX^fKVC$X3lU(!-^rCCWhFr zHV=at30R5OnCgI)q&P?F-bzQId4-%dJOHfR;Fo9hC?a#RLJ{&*4+wnDo;k0kF~9sJ zIjCv=o~5Ss9T|;FBcZu3pQ}drSuu7qk$bAHW3{}#5@op=8+MGBl5Md(AEIK~s)>UsUtbY3SIwKBn-eUUc1BG*W2Rla zqFB_JLJg6I!%_2*n5H8l?N|h-vHp&tI9bsdH6M>@PDG?9zMxN*MS7wWUo5bN%fc69 z1v{hC+(~(${hlUwQJ)v`MRuNu=6A*PCnL&}farj1*5!kbEZYVyr@;sSilzwMP;llg zxz{CEB_U}HkdKn6r7G-?TABhxT$ywE$kdTgNtlY}ZM~~(0FPL#XbGCGyzp2?SmaMJLaSKD2$|xyK&~_*VGjdEGo5?sr+v3eKI(tJ zJJQe*H6M*>j@^|W9~wP zD21T-RT3V3)4YV=09)wym+%8vN|FIYyS{8r%hjZ87Jiu)02&BtWZbf6N_+^wr{64m z#+$_{sq%H+3`YjmAAef9C3}&6+4%i%=l~>n+KnU$csuhEE%2FkbW8H5_#6Sp)@Sfh6V7m ze~n?hPEzn;G^9G#T%;z&RZ@$p!OhY^*ft&9&5)z8Zfc~Y0nviKGCqS=x0V*PjM1-# zz^~~7P76@pi_Y%wS4Jz7dOqX}`U~7T9joS@SB+c6Kbu(vsYiM*T}Sve-n3J_UXXaG zB>9T08!KQnsd@Odq~5RliayG+8Yi<5l1+j?^uROb(FQ^n4m}{JJ2URLg>Iac`E$PF zjq8s(hwn?5nSEv!Ebx0A+_K+uF8K5S03wq0>^4>jhc7JeWgr1Ps~_6%Mb40U{0jQK zn^JYGmdsC$6pqXoAUK;2Vy9@}SdD&YbLJ_POK}+jqifHp$=3@&e+6GrWM$2jSxHu# zwUS>t8nWQ6G@OLPS2q1OB8-)>cju)}=_3BCMYHMuu z`Ml|=bV#`_HO18FyntX@oCZTmI(Q?2lS4=e{7^f92Q)Daz|ZJ}=lw zk0z!bT)LUGlV+g|IUQ2|K%U)mj_!hz@uuG=WSfbdt>88ED`-RrLU{E5;Gz-6OCLlD zvfp?tgg%9GJ&6FL6GponpfQ$A!UB}Se+`psKpJ_KVtm<%la@%2Qp zl{ea~OaBl`5HC&6SyLw7RrE66q8PP|G0eJMSn%;(gE_blid zqPm8dZu`9M$emqBAguQvFi+zu-R177?!Z7yRWz@%g*GiH>!QlKnDV)a_TMOSlNRc} zsCj=(b08u;@C6HXQ6zr-&?|=m@=(`Z(dPSU{3EW(j}*QTQJ;bH)Vksj5!02!$WYYr zzNt8*j+ttoVugfpN6~;fsEeZNq97A$jj78+^t^g=dBX4 z3NV1@6=m_f4Z(s?XNUg2c`xtyQkd2?mO!8#rkb?FU9Kj-PX<5KObxiR)rj4JluMd2#rQ9 zwUJ{zlLr^gxwE4)qqFP`3-O_ybCtI`Z;jq^zJLC<{x%V*>xh|;P96X}C~$u2@Z|na zC74E+dBt6I`LbLgGo}J{`@^Sh^`bys>*_$=qA@pE5o(JWZ4i0YZ3=gS*Ucg*co3-e77MfUSu63G8TAUmufexb%8wc#DM0#0Iw<2rqId*Ubo zvf$7`0RA6W7#b;8z^+{m<{XV220l2IkYY$;abl1v{mucJmtnm4k|8SO=F-UH;1mak zM?AE*ou)lBC$-!8Z{5xbdPfqDs})i5c=@pcOP=Y>g`VUcppafn5 ztVo-NJ*3Y?HPgubL}nGU3<+=o#~+J?xag@A!{xuiWWT~p{~K$LVa=al--u%0SQd%! zf?tVr5E!30`dEsIHIr*H-u*rZ7YJ`3?7)U#PE%e z1y;P1rz&6Ov&;L^RFxrda12pZJQg(K64aHA&;54U1E&o1;3VP&aZ~;u97QuNSYdQ9 W>Aw{3slYz0knDL*_~8~D(*F-^39GmO literal 0 HcmV?d00001 diff --git a/flask-dev-api/blueprints/__pycache__/down_video.cpython-312.pyc b/flask-dev-api/blueprints/__pycache__/down_video.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..57bdada03a48ccf2e48d1fb2d48f85d7333ac3b9 GIT binary patch literal 7899 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 literal 0 HcmV?d00001 diff --git a/flask-dev-api/blueprints/__pycache__/fen_ci.cpython-312.pyc b/flask-dev-api/blueprints/__pycache__/fen_ci.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c485b21ea7e4e8948d87b6cb8470502b5c1d4ce7 GIT binary patch literal 2384 zcmah~Yitx%6u$G^$85W8q3uFxvt}(YyebiVG(2J{Bw|w3R+Da;jLXinow6_Q%-U|V zH475lKSl^>t3cdDNH9f#ghXRdkzYjk(amDIO!~*r7ynvHqQO6&JF`=^M#KGa?wxzi zJ@?#mzVFPPiV8P^vG=VP2JUhQJs=^AuOpuAPK{m<- zIg0Ev5kBe&I-<^?lR`97Xqi=9GIyCDXDl~Cx9m8Mf`Z~6SYz#!OW8S2S>LkjI2tdh zf))Q`?Usc;>au5?E}f|;J5!me6urq>(71b**w(P>pUIw>zw*ia>GLyZe|A44M?}_e zwMCLj0;@6I@M0wW$6h_1(@*cF(=>SI z)3og9r8|-6Op0JP`*mjatBdnjzMs8zZ05rC=^wtG`|`N|HONsMtHU8(jmP|E-i(SB zo5PMaC4?317wL{cp1X*?Lv&!0bHmZEga8ei z!SpG*;nwsJ*0n(uYRzehh^k{Jv2ub^N@@xg8AAxcD<$ig!C8-FiB2Qs_WS)$y4qWN z-hqwwkRIx3SF|H~Jkb+P0ZQTnJ&BYgE73U2kgJ%ag|V8@dwL@w?Z{SH`Cw}(q4pfM z!K(FGfZLWx85Jf3m6)!E0kzl%myyb8?}5mm>6$g8EvH&0Ynt;l&AE7?=B3OV_l3H# zBa=-#@=ZIgcHe8-Tl6N1p882oW8Tv^7S3%ic$#yeyk}!(|CCTWDKzDUrmPr;3_B%ZVi5bz*j?bz;uAWpENX*%p`F>?)^G}t!}b#?*w98m?5 zC~GUiA_X(U>W6^J!?OEK4-jw!D3C^4l};?pAyaAScjuPrBr^o=`Z6&Gc-!*nYl7RPLBh4;ba%C^z(`=ecLlcl4=Q!J<69tf7WjlBt;q@bY z*%?Z9>Z@#Rnzv7#Md#@i*>LsJVY(as3nTo8d}nDMqz2It(~Slx(cN(X+NMKGhQo@c z8JvPKbb?b*0>iDw5=kBU?T~JuE|J5}!F>jARue3Na=KqDPpKy>vUE6= zTnz`Twmx&=_}s}8GZ(JSU%%MuS096a(QR@8lloYkHrYygIVSJMq-z?^W$?HNm#s@( z`-j3xf;20G(R2(wp^n(P%;2S{)@QIXa2N-On`R=`6FsG9#3xXl3=_k66VVbuV65E) z0T8YWoQ@wolxfe3K&UBiU2f;qSM&9|3*J39nF;T{3Fp3Pp=MHO$O{bxp)u25tgapP zo$`%sxkMMLH)jqmumTsPrmELYRtNIcf!x7DbxW3?s#-Hy706cwat8`ko3k7^F4i{` z>(&)(*A^Q$6xaC|1>WagLVT65fOwbi*W*g$seObf;*3NwvGeu2f!m=w>u>ueUVJ-W z-&yc>O}yJZ;qCt2+5PtdLkyp2P4I|c9j$FNx<$L%wllYchPExtt@RXHZ{a|8h+e}X zNpd_aNd{;3FiZ$#QrxVCSrwxusjCrfo7Dy+^TVu4skus0EEHA11${VS*3#f`JPAFH z;8@nhF9Ur>I4irr1AuMC~o0J#%QsA6#X2Xv}v> zy~n+hp&#)ss&2uDX!c{@QC~LjQR5;_QJa<+M0*#=YQbsiHs|=Up^UFUZCs>RQ9+8> Jh}O~!uxtBS+RnkDA+$B^)F~W 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 literal 0 HcmV?d00001 diff --git a/flask-dev-api/blueprints/__pycache__/qr_code.cpython-312.pyc b/flask-dev-api/blueprints/__pycache__/qr_code.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..57555b3c908b17c77786bafe01a88c7e0a8847bf GIT binary patch literal 549 zcmYLGK}#D!6rP#gO`6EJ&JfJIeQU7!osj-o;7hdJHDNiZca*t`Ugt# z6KvBzQhE{eG`CVgdQ)=C$(hYAeek~b9`ok=-kbT|Xe<+BKfZ1Cf0_8#7NvPbGCMNK zmZG3zi&7y&96IKuhqPMt+>#|5`vFA4rf;Z5nH5|t}5Ee<-Btm@bP*~({n z=|eOGiM@f+s|W)D$Q8sg3Ki(;Ir45IU{u>a$Ck}}s+Wftafxu!`#h)H-GVd^b{y-o zrhze0g*Y)Ql!F`?&Hd3zLA-UU;>f4yn*Q%(W{}Je+dIKw3fK-+7_=chQ;7`X%t$8v zKxSM(oS3LilL1e=*pn(aiNf@(CE!yll)d1%Tqq4n8JTHUh93b}j6&6T+AwfI9_s6p zy}SD6t-Fc#NA~@y_Hs6~d*pNJ8s~#B2F^7*mfFK)s1`)HWP9vAw2wcp?Z$~1MzDu# zrnJka?+rXTl+s7??vMBCI-9(?8Qpt37woA*nESPP*}UHP^7@%k`gZ0Jwwh--=L?_? Bh35bO literal 0 HcmV?d00001 diff --git a/flask-dev-api/blueprints/__pycache__/rvc.cpython-312.pyc b/flask-dev-api/blueprints/__pycache__/rvc.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b62ec70ae896a3e6a93f6e50f92d71c996d5b9eb GIT binary patch literal 21250 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 literal 0 HcmV?d00001 diff --git a/flask-dev-api/blueprints/__pycache__/stt.cpython-312.pyc b/flask-dev-api/blueprints/__pycache__/stt.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8d2c46892074bfec25f24e03aecddaeadc5f8dd GIT binary patch literal 15730 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%0A` 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') +def task_status(task_id): + info = _task_results_local.get(task_id) + if not info: + return jsonify({'success': False, 'error': '任务不存在'}), 404 + + resp = {'success': True, 'progress': info} + if info['status'] == 'done': + resp['audio_url'] = f'/ai-dubbing/audio/{task_id}' + elif info['status'] == 'error': + resp['progress'] = {'status': 'error', 'error': info.get('error', '未知错误')} + _task_results_local.pop(task_id, None) + + return jsonify(resp) + + +@bp.route('/audio/') +def get_audio(task_id): + info = _task_results_local.pop(task_id, None) + audio_path = info['file'] if info else os.path.join(tempfile.gettempdir(), f'ai_dub_{task_id}.wav') + if not os.path.exists(audio_path): + return jsonify({'error': '音频文件不存在'}), 404 + + @after_this_request + def cleanup(resp): + try: + os.remove(audio_path) + except OSError: + pass + return resp + + return send_file(audio_path, mimetype='audio/wav') diff --git a/flask-dev-api/blueprints/base64_codec.py b/flask-dev-api/blueprints/base64_codec.py new file mode 100644 index 0000000..a78702a --- /dev/null +++ b/flask-dev-api/blueprints/base64_codec.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +""" +base64-de-in-code 编解码蓝图 +""" +import base64 +from flask import Blueprint, render_template, request, jsonify + +bp = Blueprint('base64_codec', __name__, url_prefix='/base64-de-in-code') + + +def _fallback_decode(data_bytes): + """降级解码:当 encoding_utils 不可用时使用""" + for enc in ['utf-8', 'gbk', 'gb2312', 'cp936']: + try: + return data_bytes.decode(enc) + except UnicodeDecodeError: + continue + return "解码失败,无法识别编码。" + + +@bp.route('/') +def page(): + return render_template('base64.html') + + +@bp.route('/decode', methods=['POST']) +def decode(): + data = request.get_json() + base64_input = data.get('input_text', '').strip() + if not base64_input: + return jsonify({'success': False, 'error': '输入不能为空。'}) + try: + decoded_bytes = base64.b64decode(base64_input) + except Exception as e: + return jsonify({'success': False, 'error': f'Base64 解码失败: {str(e)}'}) + + try: + from utils.encoding_utils import detect_and_decode + decoded_result = detect_and_decode(decoded_bytes) + except Exception: + decoded_result = _fallback_decode(decoded_bytes) + + return jsonify({'success': True, 'result': decoded_result}) + + +@bp.route('/encode', methods=['POST']) +def encode(): + data = request.get_json() + text_to_encode = data.get('text_to_encode', '') + encoding = data.get('encoding', 'utf-8') + if text_to_encode is None: + return jsonify({'success': False, 'error': '输入不能为空。'}) + try: + encoded_bytes = text_to_encode.encode(encoding) + except LookupError: + return jsonify({'success': False, 'error': f'未知的编码格式: {encoding}'}) + except UnicodeEncodeError as e: + return jsonify({'success': False, 'error': f'编码失败: {str(e)}'}) + encoded_string = base64.b64encode(encoded_bytes).decode('ascii') + return jsonify({'success': True, 'result': encoded_string}) diff --git a/flask-dev-api/blueprints/chmod_calc.py b/flask-dev-api/blueprints/chmod_calc.py new file mode 100644 index 0000000..8a12815 --- /dev/null +++ b/flask-dev-api/blueprints/chmod_calc.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +from flask import Blueprint, render_template + +bp = Blueprint('chmod_calc', __name__, url_prefix='/chmod-calc') + + +@bp.route('/') +def page(): + return render_template('chmod_calc.html') diff --git a/flask-dev-api/blueprints/content_tag.py b/flask-dev-api/blueprints/content_tag.py new file mode 100644 index 0000000..cab6495 --- /dev/null +++ b/flask-dev-api/blueprints/content_tag.py @@ -0,0 +1,196 @@ +# -*- coding: utf-8 -*- +""" +content-tag 文章标签生成蓝图 +支持 Ollama (/api/generate) 和 llama.cpp/OpenAI 兼容 (/v1/chat/completions) +""" +import requests +import re +import time +import json + +from flask import Blueprint, render_template, request, jsonify +from utils.stats_db import get_content_tag_settings, update_content_tag_settings + +bp = Blueprint('content_tag', __name__, url_prefix='/content-tag') + + +@bp.route('/') +def page(): + return render_template('content_tag.html') + + +@bp.route('/settings', methods=["GET"]) +def get_settings(): + return jsonify({"success": True, "settings": get_content_tag_settings()}) + + +@bp.route('/settings', methods=["POST"]) +def save_settings(): + data = request.get_json() + if not data: + return jsonify({"success": False, "error": "缺少数据"}), 400 + update_content_tag_settings(data) + return jsonify({"success": True, "settings": get_content_tag_settings()}) + + +@bp.route('/models', methods=["POST"]) +def list_models(): + """获取 Ollama 可用模型列表""" + data = request.get_json() + api_url = (data.get("api_url") or "").strip() + + if not api_url: + return jsonify({"success": False, "error": "请填写 API 地址"}) + + # /api/generate -> base url -> /api/tags + base_url = api_url.rsplit('/api/', 1)[0] + tags_url = base_url + '/api/tags' + + try: + r = requests.get(tags_url, timeout=10) + if r.status_code == 200: + models = [m["name"] for m in r.json().get("models", [])] + return jsonify({"success": True, "models": models}) + else: + return jsonify({"success": False, "error": f"获取模型失败: {r.status_code}"}) + except requests.exceptions.ConnectionError: + return jsonify({"success": False, "error": f"无法连接到: {tags_url}"}) + except Exception as e: + return jsonify({"success": False, "error": str(e)}) + + +@bp.route('/test-api', methods=["POST"]) +def test_api(): + data = request.get_json() + api_url = (data.get("api_url") or "").strip() + model = (data.get("model") or "").strip() + software = data.get("software", "llamacpp") + + if not api_url: + return jsonify({"success": False, "error": "请填写 API 地址"}) + + try: + if software == "ollama": + base_url = api_url.rsplit('/api/', 1)[0] + r = requests.get(base_url, timeout=10) + if r.status_code != 200 or 'Ollama is running' not in r.text: + return jsonify({"success": False, "error": f"Ollama 未运行: {base_url}"}) + tags_url = base_url + '/api/tags' + r2 = requests.get(tags_url, timeout=10) + if r2.status_code != 200: + return jsonify({"success": False, "error": "Ollama 获取模型列表失败"}) + models = [m["name"] for m in r2.json().get("models", [])] + return jsonify({"success": True, "message": f"连接成功,共 {len(models)} 个模型", "models": models}) + else: + payload = {"model": model or "test", "messages": [{"role": "user", "content": "hi"}], "max_tokens": 5} + r = requests.post(api_url, json=payload, timeout=10) + if r.status_code == 200: + result = r.json() + name = result.get("model", model) + return jsonify({"success": True, "message": f"连接成功,模型: {name}"}) + else: + return jsonify({"success": False, "error": f"API 返回 {r.status_code}: {r.text[:200]}"}) + except requests.exceptions.ConnectionError: + return jsonify({"success": False, "error": f"无法连接到: {api_url}"}) + except Exception as e: + return jsonify({"success": False, "error": str(e)}) + + +@bp.route('/generate', methods=["POST"]) +def generate_tags(): + data = request.get_json() + api_url = (data.get("api_url") or "").strip() + model = (data.get("model") or "").strip() + software = data.get("software", "llamacpp") + content = (data.get("content") or "").strip() + max_tags = data.get("max_tags", 10) + min_length = data.get("min_length", 2) + max_length = data.get("max_length", 6) + + if not api_url: + return jsonify({"success": False, "error": "请填写 API 地址"}) + if software == "ollama" and not model: + return jsonify({"success": False, "error": "Ollama 需要填写模型名称"}) + if not content: + return jsonify({"success": False, "error": "请输入文章内容"}) + + custom_system = (data.get("system_msg") or "").strip() + custom_user = (data.get("user_msg") or "").strip() + + system_msg = custom_system if custom_system else "你是一个专门生成文章标签的助手,请你根据我给你的文章的内容总结并生成一系列的标签,格式可以参考[关键词1, 关键词2, 关键词3].你只需要给我生成这种形式的标签即可,其他分析内容无需输出." + user_template = custom_user if custom_user else "请严格按照以下要求,从提供的文章内容中提取关键词。\n\n文章内容:\n{content}\n\n要求:\n- 提取最多 {max_tags} 个最能概括文章主旨和核心概念的关键词。\n- 关键词必须来源于文章内容,准确反映文章主题。\n- 每个关键词的长度必须在 {min_length} 到 {max_length} 个字符之间。\n- 输出格式为:关键词1, 关键词2, 关键词3, ...\n- 只输出关键词列表,不要有任何其他解释或前缀。" + + user_msg = user_template.format(content=content, max_tags=max_tags, min_length=min_length, max_length=max_length) + + if software == "ollama": + payload = { + "model": model, + "prompt": user_msg, + "system": system_msg, + "stream": False, + "think": False, + "options": {"top_p": 0.9, "temperature": 0.1, "num_predict": 2048} + } + else: + payload = { + "messages": [ + {"role": "system", "content": system_msg}, + {"role": "user", "content": user_msg} + ], + "stream": False, + "temperature": 0.1, + "top_p": 0.9, + "max_tokens": 2048, + } + if model: + payload["model"] = model + + start_time = time.time() + + try: + response = requests.post(api_url, json=payload, timeout=120) + + if response.status_code != 200: + return jsonify({"success": False, "error": f"API 返回错误: {response.status_code} - {response.text[:200]}"}) + + result = response.json() + + if software == "ollama": + llm_output = result.get("response", "").strip() + actual_model = result.get("model", model) + else: + choices = result.get("choices", []) + if not choices: + return jsonify({"success": False, "error": f"API 响应无 choices: {json.dumps(result, ensure_ascii=False)[:200]}"}) + llm_output = choices[0].get("message", {}).get("content", "").strip() + actual_model = result.get("model", model) + + think_match = re.search(r'(.*?)', llm_output, re.DOTALL) + ai_think = think_match.group(1).strip() if think_match else "" + + clean_output = re.sub(r'.*?', '', llm_output, count=1, flags=re.DOTALL).strip() + raw_tags = [tag.strip() for tag in re.split(r'[,,;;\n]+', clean_output) if tag.strip()] + + seen = set() + tags = [] + for tag in raw_tags: + if tag not in seen: + seen.add(tag) + tags.append(tag) + + elapsed = round(time.time() - start_time, 2) + + return jsonify({ + "success": True, + "tags": tags, + "think": ai_think, + "model": actual_model, + "consume": elapsed + }) + + except requests.exceptions.ConnectionError: + return jsonify({"success": False, "error": f"无法连接到 API 地址: {api_url}"}) + except requests.exceptions.Timeout: + return jsonify({"success": False, "error": "API 请求超时(120秒)"}) + except Exception as e: + return jsonify({"success": False, "error": f"请求失败: {str(e)}"}) diff --git a/flask-dev-api/blueprints/down_video.py b/flask-dev-api/blueprints/down_video.py new file mode 100644 index 0000000..9452337 --- /dev/null +++ b/flask-dev-api/blueprints/down_video.py @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +""" +down-video 视频下载蓝图 +""" +import os +import json +import queue +from flask import Blueprint, render_template, request, jsonify, send_file, Response + +from config import DEFAULT_OUTPUT_DIR, PROXY_URL +from utils.down_video_utils import ( + check_ffmpeg, + check_deno, + is_twitter_url, + is_bilibili_url, + is_instagram_url, + is_youtube_url, + download_video, +) +from utils.stats_db import add_recent_path, get_recent_paths, delete_recent_path, clear_recent_paths + +bp = Blueprint('dv_cookies', __name__, url_prefix='/down-video') + +# 用于存储下载进度的队列 +progress_queues = {} + + +@bp.route('/') +def page(): + ffmpeg_ok = check_ffmpeg() + deno_ok = check_deno() + return render_template('down_video.html', ffmpeg_ok=ffmpeg_ok, deno_ok=deno_ok) + + +@bp.route('/file') +def serve_file(): + filepath = request.args.get("path", "") + as_download = request.args.get("download", "0") == "1" + if not filepath: + return "Missing path", 400 + + filepath = os.path.abspath(filepath) + if not os.path.exists(filepath) or not os.path.isfile(filepath): + return "File not found", 404 + + ext = os.path.splitext(filepath)[1].lower() + if ext not in ('.mp4', '.m4a', '.webm', '.mkv', '.mov', '.avi'): + return "File type not allowed", 403 + + mime_types = { + '.mp4': 'video/mp4', + '.m4a': 'audio/mp4', + '.webm': 'video/webm', + '.mkv': 'video/x-matroska', + '.mov': 'video/quicktime', + '.avi': 'video/x-msvideo', + } + mimetype = mime_types.get(ext, 'application/octet-stream') + + response = send_file( + filepath, + mimetype=mimetype, + conditional=True, + ) + response.headers['Accept-Ranges'] = 'bytes' + if not as_download: + response.headers['Content-Disposition'] = 'inline' + return response + + +@bp.route('/download', methods=["POST"]) +def download(): + data = request.get_json() + url = data.get("url", "").strip() if data else "" + output_dir = data.get("output_dir", DEFAULT_OUTPUT_DIR).strip() if data else DEFAULT_OUTPUT_DIR + download_id = data.get("download_id", "") if data else "" + use_proxy = data.get("use_proxy", False) if data else False + proxy_url_input = (data.get("proxy_url") or "").strip() if data else "" + + if not url: + return jsonify({"success": False, "message": "请输入视频链接"}), 400 + if is_twitter_url(url): + platform = 'twitter' + elif is_bilibili_url(url): + platform = 'bilibili' + elif is_instagram_url(url): + platform = 'instagram' + elif is_youtube_url(url): + platform = 'youtube' + else: + return jsonify({"success": False, "message": "仅支持 Twitter/X、Bilibili 和 Instagram 视频链接"}), 400 + if not output_dir: + output_dir = DEFAULT_OUTPUT_DIR + + # 确定使用的代理地址 + proxy_url = proxy_url_input if use_proxy and proxy_url_input else (PROXY_URL if use_proxy else None) + + # 创建进度队列 + progress_queue = queue.Queue() + if download_id: + progress_queues[download_id] = progress_queue + + def progress_callback(data): + progress_queue.put(data) + + try: + # 发送开始合并的消息 + def send_merge_status(): + progress_queue.put({ + 'type': 'merging', + 'message': '正在合并视频和音频...' + }) + + success, message, title, filepath = download_video(url, output_dir, platform, progress_callback, proxy_url=proxy_url) + + # 如果是bilibili或youtube,可能有合并过程,发送合并状态 + if platform in ('bilibili', 'youtube') and filepath and '_merged' in filepath: + send_merge_status() + + return jsonify({"success": success, "message": message, "title": title, "filepath": filepath}) + finally: + # 清理队列 + if download_id and download_id in progress_queues: + del progress_queues[download_id] + + +@bp.route('/progress/') +def progress_stream(download_id): + """SSE端点 - 实时推送下载进度""" + + def generate(): + progress_queue = progress_queues.get(download_id) + if not progress_queue: + yield f"data: {json.dumps({'type': 'error', 'message': '下载任务不存在'})}\n\n" + return + + while True: + try: + data = progress_queue.get(timeout=30) + yield f"data: {json.dumps(data)}\n\n" + if data.get('type') == 'progress' and data.get('percent', 0) >= 100: + break + except queue.Empty: + # 发送心跳保持连接 + yield f":\n\n" + continue + + return Response( + generate(), + mimetype='text/event-stream', + headers={ + 'Cache-Control': 'no-cache', + 'Connection': 'keep-alive', + 'X-Accel-Buffering': 'no' + } + ) + + +# ===== 保存路径历史 ===== + +@bp.route('/save-paths', methods=['GET']) +def get_save_paths(): + paths = get_recent_paths(limit=10) + return jsonify({'paths': paths}) + + +@bp.route('/save-paths', methods=['POST']) +def add_save_path(): + data = request.get_json() + path = data.get('path', '').strip() if data else '' + if not path: + return jsonify({'success': False, 'message': '路径不能为空'}), 400 + add_recent_path(path) + return jsonify({'success': True}) + + +@bp.route('/save-paths/delete', methods=['POST']) +def delete_save_path(): + data = request.get_json() + path = data.get('path', '').strip() if data else '' + if not path: + return jsonify({'success': False, 'message': '路径不能为空'}), 400 + delete_recent_path(path) + return jsonify({'success': True}) diff --git a/flask-dev-api/blueprints/fen_ci.py b/flask-dev-api/blueprints/fen_ci.py new file mode 100644 index 0000000..64a1c6d --- /dev/null +++ b/flask-dev-api/blueprints/fen_ci.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +""" +fen-ci 分词蓝图 +""" +from flask import Blueprint, render_template, request, jsonify + +from utils.fen_ci_utils import tokenizer, token_auth + +bp = Blueprint('fen_ci', __name__, url_prefix='/fen-ci') + + +def _authenticate(): + """检查请求头中的 Authorization token""" + auth_header = request.headers.get('Authorization') + if not auth_header or not auth_header.startswith('Bearer '): + return None, "缺少或格式错误的Authorization头。请使用 'Authorization: Bearer '" + token = auth_header.split(" ", 1)[1] + user = token_auth.get_user(token) + if not user: + return None, "无效的Token" + return user, None + + +@bp.route('/') +def page(): + return render_template('fen_ci.html') + + +@bp.route('/tokenize', methods=['POST']) +def tokenize(): + user, error_msg = _authenticate() + if not user: + return jsonify({'success': False, 'error': error_msg}), 401 + + data = request.get_json() + input_text = data.get('input_text', '') + + try: + tokens = tokenizer.tokenize(input_text) + stats = tokenizer.get_stats(tokens) + return jsonify({ + 'success': True, + 'tokens': tokens, + 'stats': stats, + 'original_text': input_text, + 'requested_by': user + }) + except Exception as e: + return jsonify({'success': False, 'error': f'分词处理失败: {str(e)}'}), 500 diff --git a/flask-dev-api/blueprints/http_status.py b/flask-dev-api/blueprints/http_status.py new file mode 100644 index 0000000..d0e9c6b --- /dev/null +++ b/flask-dev-api/blueprints/http_status.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +from flask import Blueprint, render_template + +bp = Blueprint('http_status', __name__, url_prefix='/http-status') + + +@bp.route('/') +def page(): + return render_template('http_status.html') diff --git a/flask-dev-api/blueprints/json_format.py b/flask-dev-api/blueprints/json_format.py new file mode 100644 index 0000000..a868a56 --- /dev/null +++ b/flask-dev-api/blueprints/json_format.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +from flask import Blueprint, render_template + +bp = Blueprint('json_format', __name__, url_prefix='/json-format') + + +@bp.route('/') +def page(): + return render_template('json_format.html') diff --git a/flask-dev-api/blueprints/pin_tu.py b/flask-dev-api/blueprints/pin_tu.py new file mode 100644 index 0000000..7ff4998 --- /dev/null +++ b/flask-dev-api/blueprints/pin_tu.py @@ -0,0 +1,447 @@ +# -*- coding: utf-8 -*- +""" +pin-tu 图片浏览蓝图 +用户自行指定浏览路径(root 用 URL-safe base64 编码放在 URL 中) +""" +import os +import shutil +import base64 +from flask import Blueprint, render_template, send_from_directory, request, abort, jsonify + +from utils.pin_tu_utils import ( + find_media_in_folder, + get_subfolders, + build_breadcrumbs, + is_safe_path, +) +from utils.stats_db import ( + add_search, get_search_history, delete_search_history, clear_search_history, + add_recent_path, get_recent_paths, delete_recent_path, clear_recent_paths, +) + +bp = Blueprint('pin_tu', __name__, url_prefix='/pin-tu') + + +def _decode_root(b64_str): + """URL-safe base64 解码为原始路径""" + try: + # URL-safe → standard base64 + padded = b64_str.replace('-', '+').replace('_', '/') + # 补齐 = + pad = len(padded) % 4 + if pad: + padded += '=' * (4 - pad) + return base64.b64decode(padded).decode('utf-8') + except Exception: + return None + + +def _encode_root(path_str): + """路径编码为 URL-safe base64 字符串""" + b = base64.b64encode(path_str.encode('utf-8')).decode('ascii') + return b.replace('+', '-').replace('/', '_').rstrip('=') + + +@bp.route('/') +def index(): + return render_template('pin_tu.html', mode='index', root='', root_b64='') + + +@bp.route('/browse/') +def browse(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + + # 记录最近访问路径 + add_recent_path(root_path) + + subpath = request.args.get('p', '') + mode = request.args.get('mode', 'list') + if mode not in ['list', 'grid', 'manga']: + mode = 'list' + + root_abs = os.path.normpath(root_path) + if subpath: + current_path = os.path.normpath(os.path.join(root_abs, subpath)) + else: + current_path = root_abs + + if not os.path.isdir(root_abs): + abort(404) + if not is_safe_path(root_abs, current_path): + abort(403) + + image_files, video_files, other_files = find_media_in_folder(current_path) + subfolders = get_subfolders(current_path) + breadcrumbs = build_breadcrumbs(subpath, base_url=f'/pin-tu/browse/{root_b64}') + current_path_name = os.path.basename(current_path) if current_path != root_abs else os.path.basename(root_abs) + + if mode == 'manga': + return render_template( + 'pin_tu_manga.html', + images=image_files, + current_path_name=current_path_name, + current_subpath=subpath + '/' if subpath else '', + root_b64=root_b64, + ) + + return render_template( + 'pin_tu.html', + mode='browse', + images=image_files, + videos=video_files, + files=other_files, + subfolders=subfolders, + current_path_name=current_path_name, + current_subpath=subpath + '/' if subpath else '', + breadcrumbs=breadcrumbs, + view_mode=mode, + is_manga_path='漫画' in subpath, + root_b64=root_b64, + root_display=root_path, + ) + + +@bp.route('/file-info/') +def file_info(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + file_path = request.args.get('p', '') + if not file_path: + abort(400) + + root_abs = os.path.normpath(root_path) + full_file = os.path.normpath(os.path.join(root_abs, file_path)) + if not is_safe_path(root_abs, full_file) or not os.path.isfile(full_file): + abort(404) + + stat = os.stat(full_file) + size = stat.st_size + if size < 1024: + size_str = f'{size} B' + elif size < 1024 * 1024: + size_str = f'{size / 1024:.1f} KB' + elif size < 1024 * 1024 * 1024: + size_str = f'{size / (1024 * 1024):.1f} MB' + else: + size_str = f'{size / (1024 * 1024 * 1024):.2f} GB' + + from datetime import datetime + modified = datetime.fromtimestamp(stat.st_mtime).strftime('%Y-%m-%d %H:%M:%S') + ext = os.path.splitext(file_path)[1].lstrip('.').upper() + + return { + 'name': os.path.basename(file_path), + 'size': size_str, + 'size_bytes': size, + 'type': ext or '未知', + 'modified': modified, + 'path': file_path, + } + + +@bp.route('/media/') +def serve_media(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + + file_path = request.args.get('p', '') + if not file_path: + abort(400) + + root_abs = os.path.normpath(root_path) + folder = os.path.dirname(file_path) + filename = os.path.basename(file_path) + base_dir = os.path.join(root_abs, folder) + full_file = os.path.normpath(os.path.join(base_dir, filename)) + + if not is_safe_path(root_abs, full_file): + abort(403) + return send_from_directory(base_dir, filename) + + +@bp.route('/rename/', methods=['POST']) +def rename(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + + data = request.get_json() or {} + old_path = data.get('path', '') + new_name = data.get('new_name', '').strip() + if not old_path or not new_name: + return {'success': False, 'error': '参数不完整'}, 400 + + # 校验新文件名 + invalid = set(r'\/:*?"<>|') + if any(c in invalid for c in new_name): + return {'success': False, 'error': '文件名包含非法字符'}, 400 + + root_abs = os.path.normpath(root_path) + old_full = os.path.normpath(os.path.join(root_abs, old_path)) + if not is_safe_path(root_abs, old_full) or not os.path.exists(old_full): + return {'success': False, 'error': '文件不存在'}, 404 + + new_full = os.path.join(os.path.dirname(old_full), new_name) + if os.path.exists(new_full) and os.path.normcase(new_full) != os.path.normcase(old_full): + return {'success': False, 'error': '同名文件已存在'}, 400 + + try: + os.rename(old_full, new_full) + return {'success': True, 'new_name': new_name} + except Exception as e: + return {'success': False, 'error': str(e)}, 500 + + +@bp.route('/search-page/') +def search_page(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + return render_template('pin_tu_search.html', root_b64=root_b64, root_display=root_path, query=request.args.get('q', '')) + + +@bp.route('/search/') +def search(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + + query = request.args.get('q', '').strip().lower() + if not query or len(query) < 1: + return {'results': []} + + root_abs = os.path.normpath(root_path) + if not os.path.isdir(root_abs): + abort(404) + + results = [] + max_results = 50 + for dirpath, dirnames, filenames in os.walk(root_abs): + # 搜索文件夹名 + for d in list(dirnames): + if query in d.lower(): + rel = os.path.relpath(os.path.join(dirpath, d), root_abs).replace('\\', '/') + results.append({'name': d, 'path': rel, 'type': 'folder'}) + if len(results) >= max_results: + return {'results': results} + # 搜索文件名 + for f in filenames: + if query in f.lower(): + rel = os.path.relpath(os.path.join(dirpath, f), root_abs).replace('\\', '/') + ext = os.path.splitext(f)[1].lstrip('.').upper() + results.append({'name': f, 'path': rel, 'type': ext or 'file'}) + if len(results) >= max_results: + return {'results': results} + + return {'results': results} + + +# ===== 搜索历史 API ===== + +@bp.route('/api/search-history/') +def api_get_search_history(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + records = get_search_history(root_path, limit=20) + return jsonify({'history': records}) + + +@bp.route('/api/search-history/', methods=['POST']) +def api_add_search(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + data = request.get_json() or {} + keyword = data.get('keyword', '').strip() + result_count = data.get('result_count', 0) + if keyword: + add_search(keyword, root_path, result_count) + return jsonify({'success': True}) + + +@bp.route('/api/search-history/', methods=['DELETE']) +def api_delete_search_history(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + data = request.get_json() or {} + if data.get('clear'): + clear_search_history(root_path) + else: + ids = data.get('ids', []) + if ids: + delete_search_history(ids) + return jsonify({'success': True}) + + +# ===== 最近访问路径 API ===== + +@bp.route('/api/recent-paths') +def api_get_recent_paths(): + records = get_recent_paths(limit=8) + return jsonify({'paths': records}) + + +@bp.route('/api/recent-paths', methods=['POST']) +def api_add_recent_path(): + data = request.get_json() or {} + path = data.get('path', '').strip() + if path: + add_recent_path(path) + return jsonify({'success': True}) + + +@bp.route('/api/recent-paths', methods=['DELETE']) +def api_delete_recent_path(): + data = request.get_json() or {} + if data.get('clear'): + clear_recent_paths() + else: + path = data.get('path', '') + if path: + delete_recent_path(path) + return jsonify({'success': True}) + + +# ===== 新建文件夹 ===== + +@bp.route('/create-folder/', methods=['POST']) +def create_folder(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + data = request.get_json() or {} + subpath = data.get('path', '') + name = data.get('name', '').strip() + if not name: + return {'success': False, 'error': '名称不能为空'}, 400 + + invalid = set(r'\/:*?"<>|') + if any(c in invalid for c in name): + return {'success': False, 'error': '名称包含非法字符'}, 400 + + root_abs = os.path.normpath(root_path) + if subpath: + parent = os.path.normpath(os.path.join(root_abs, subpath)) + else: + parent = root_abs + if not is_safe_path(root_abs, parent) or not os.path.isdir(parent): + return {'success': False, 'error': '父目录不存在'}, 400 + + target = os.path.join(parent, name) + if os.path.exists(target): + return {'success': False, 'error': '同名文件夹已存在'}, 400 + + try: + os.makedirs(target) + return {'success': True, 'name': name} + except Exception as e: + return {'success': False, 'error': str(e)}, 500 + + +# ===== 移动文件/文件夹 ===== + +@bp.route('/move/', methods=['POST']) +def move_item(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + data = request.get_json() or {} + source = data.get('source', '') + dest = data.get('dest', '') # 目标文件夹的相对路径,空字符串表示根目录 + if not source: + return {'success': False, 'error': '缺少源路径'}, 400 + + root_abs = os.path.normpath(root_path) + src_full = os.path.normpath(os.path.join(root_abs, source)) + if not is_safe_path(root_abs, src_full) or not os.path.exists(src_full): + return {'success': False, 'error': '源文件不存在'}, 404 + + if dest: + dest_dir = os.path.normpath(os.path.join(root_abs, dest)) + else: + dest_dir = root_abs + if not is_safe_path(root_abs, dest_dir) or not os.path.isdir(dest_dir): + return {'success': False, 'error': '目标目录不存在'}, 400 + + # 不能移动到自身或自身子目录 + norm_src = os.path.normcase(src_full) + norm_dest = os.path.normcase(dest_dir) + if norm_dest.startswith(norm_src + os.sep) or norm_dest == norm_src: + return {'success': False, 'error': '不能移动到自身或子目录'}, 400 + + item_name = os.path.basename(src_full) + new_full = os.path.join(dest_dir, item_name) + if os.path.exists(new_full) and os.path.normcase(new_full) != norm_src: + return {'success': False, 'error': '目标位置已存在同名项目'}, 400 + + try: + shutil.move(src_full, new_full) + return {'success': True, 'name': item_name} + except Exception as e: + return {'success': False, 'error': str(e)}, 500 + + +# ===== 删除文件/文件夹 ===== + +@bp.route('/delete/', methods=['POST']) +def delete_item(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + data = request.get_json() or {} + source = data.get('source', '') + if not source: + return {'success': False, 'error': '缺少路径'}, 400 + + root_abs = os.path.normpath(root_path) + full = os.path.normpath(os.path.join(root_abs, source)) + if not is_safe_path(root_abs, full) or not os.path.exists(full): + return {'success': False, 'error': '文件不存在'}, 404 + + name = os.path.basename(full) + try: + if os.path.isdir(full): + shutil.rmtree(full) + else: + os.remove(full) + return {'success': True, 'name': name} + except Exception as e: + return {'success': False, 'error': str(e)}, 500 + + +# ===== 列出子文件夹(供移动弹窗使用)===== + +@bp.route('/list-folders/') +def list_folders(root_b64): + root_path = _decode_root(root_b64) + if not root_path: + abort(400) + subpath = request.args.get('p', '') + + root_abs = os.path.normpath(root_path) + if subpath: + current = os.path.normpath(os.path.join(root_abs, subpath)) + else: + current = root_abs + + if not is_safe_path(root_abs, current) or not os.path.isdir(current): + abort(404) + + subfolders = get_subfolders(current) + # 父目录 + parent = '' + if subpath: + parts = subpath.rstrip('/').split('/') + parent = '/'.join(parts[:-1]) if len(parts) > 1 else '' + + return jsonify({ + 'current': subpath, + 'parent': parent, + 'folders': [{'name': f, 'path': (subpath + '/' + f).strip('/')} for f in subfolders] + }) diff --git a/flask-dev-api/blueprints/qr_code.py b/flask-dev-api/blueprints/qr_code.py new file mode 100644 index 0000000..e9d7b14 --- /dev/null +++ b/flask-dev-api/blueprints/qr_code.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +from flask import Blueprint, render_template + +bp = Blueprint('qr_code', __name__, url_prefix='/qr-code') + + +@bp.route('/') +def page(): + return render_template('qr_code.html') diff --git a/flask-dev-api/blueprints/rvc.py b/flask-dev-api/blueprints/rvc.py new file mode 100644 index 0000000..0d81857 --- /dev/null +++ b/flask-dev-api/blueprints/rvc.py @@ -0,0 +1,415 @@ +# -*- coding: utf-8 -*- +""" +rvc RVC 变声蓝图 +通过 subprocess 调用 RVC 自带的 runtime\python.exe 实现语音变声 +""" +import os +import json +import uuid +import glob +import struct +import subprocess +import threading +import tempfile +from flask import Blueprint, render_template, request, jsonify, send_file, after_this_request + +bp = Blueprint('rvc', __name__, url_prefix='/rvc') + +try: + from config import BASE_DIR +except ImportError: + BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +CONFIG_PATH = os.path.join(BASE_DIR, 'config', 'rvc_config.json') +WORKER_SCRIPT = os.path.join(BASE_DIR, 'utils', 'rvc_worker.py') + +# 子进程管理 +_proc = None +_proc_lock = threading.Lock() +_proc_stderr = [] +_engine_status = {'initialized': False, 'loading': False, 'error': None, 'device': None, 'model_loaded': False} + +# 变声请求锁 +_synth_lock = threading.Lock() + +# 任务结果缓存 +_task_results_local = {} + +F0_METHODS = ['pm', 'harvest', 'crepe', 'rmvpe'] +F0_METHOD_NAMES = { + 'pm': 'PM (最快)', 'harvest': 'Harvest (高质量)', + 'crepe': 'Crepe (神经网络)', 'rmvpe': 'RMVPE (推荐)', +} + + +def _default_config(): + return { + 'rvc_project_path': r'E:\AI\RVC\RVC1006Nvidia', + 'model_dir': 'assets/weights', + 'model_dir_mode': 'relative', + 'index_dir': 'logs', + 'index_dir_mode': 'relative', + 'last_model': '', + 'last_index': '', + 'f0_up_key': 0, + 'f0_method': 'rmvpe', + 'index_rate': 0.75, + 'filter_radius': 3, + 'resample_sr': 0, + 'rms_mix_rate': 0.25, + 'protect': 0.33, + } + + +def _load_config(): + cfg = _default_config() + if os.path.exists(CONFIG_PATH): + with open(CONFIG_PATH, 'r', encoding='utf-8') as f: + saved = json.load(f) + cfg.update(saved) + # 空值回退到默认值 + if not cfg.get('model_dir'): + cfg['model_dir'] = 'assets/weights' + if not cfg.get('index_dir'): + cfg['index_dir'] = 'logs' + if not cfg.get('model_dir_mode'): + cfg['model_dir_mode'] = 'relative' + if not cfg.get('index_dir_mode'): + cfg['index_dir_mode'] = 'relative' + return cfg + + +def _save_config(cfg): + with open(CONFIG_PATH, 'w', encoding='utf-8') as f: + json.dump(cfg, f, ensure_ascii=False, indent=2) + + +def _scan_pth_models(directory): + """扫描 .pth 模型文件""" + if not directory or not os.path.isdir(directory): + return [] + files = glob.glob(os.path.join(directory, '*.pth')) + files.sort(key=lambda x: os.path.basename(x).lower()) + return [os.path.basename(f) for f in files] + + +def _scan_index_files(directory): + """递归扫描 .index 文件,排除 trained""" + if not directory or not os.path.isdir(directory): + return [] + results = [] + for root, dirs, files in os.walk(directory): + for f in files: + if f.endswith('.index') and 'trained' not in f.lower(): + results.append(os.path.join(root, f)) + results.sort(key=lambda x: os.path.basename(x).lower()) + return results + + +def _send_msg(proc, obj): + data = json.dumps(obj, ensure_ascii=False).encode('utf-8') + proc.stdin.write(struct.pack('') +def task_status(task_id): + info = _task_results_local.get(task_id) + if not info: + return jsonify({'success': False, 'error': '任务不存在'}), 404 + + resp = {'success': True, 'progress': info} + if info['status'] == 'done': + resp['audio_url'] = f'/rvc/audio/{task_id}' + elif info['status'] == 'error': + resp['progress'] = {'status': 'error', 'error': info.get('error', '未知错误')} + _task_results_local.pop(task_id, None) + + return jsonify(resp) + + +@bp.route('/audio/') +def get_audio(task_id): + info = _task_results_local.pop(task_id, None) + audio_path = info['file'] if info else os.path.join(tempfile.gettempdir(), f'rvc_{task_id}.wav') + if not os.path.exists(audio_path): + return jsonify({'error': '音频文件不存在'}), 404 + + @after_this_request + def cleanup(resp): + try: + os.remove(audio_path) + except OSError: + pass + return resp + + return send_file(audio_path, mimetype='audio/wav') diff --git a/flask-dev-api/blueprints/sovits_tts.py b/flask-dev-api/blueprints/sovits_tts.py new file mode 100644 index 0000000..d61ead8 --- /dev/null +++ b/flask-dev-api/blueprints/sovits_tts.py @@ -0,0 +1,342 @@ +# -*- coding: utf-8 -*- +""" +sovits-tts GPT-SoVITS v2 配音蓝图 +代理转发请求到 GPT-SoVITS v2 API 服务 +""" +import os +import json +import glob +import platform +import subprocess +import requests +from flask import Blueprint, render_template, request, jsonify, Response + +bp = Blueprint('sovits_tts', __name__, url_prefix='/sovits-tts') + +CONFIG_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'config', 'sovits_config.json') +try: + from config import BASE_DIR + CONFIG_PATH = os.path.join(BASE_DIR, 'config', 'sovits_config.json') +except ImportError: + pass +_sovits_proc = None + + +@bp.route('/') +def page(): + return render_template('sovits_tts.html') + + +def _load_config(): + if os.path.exists(CONFIG_PATH): + with open(CONFIG_PATH, 'r', encoding='utf-8') as f: + return json.load(f) + return { + 'api_url': 'http://127.0.0.1:9880', + 'gpt_model_dir': '', 'sovits_model_dir': '', + 'last_gpt_model': '', 'last_sovits_model': '', + 'sovits_path': '', 'start_cmd': 'start api_v2.bat', + 'refer_audio_history': [], + 'refer_audio_folder': '', + 'top_k': 5, 'top_p': 1.0, 'temperature': 1.0, + 'batch_size': 32, 'speed': 1.0, 'text_split_method': 'cut5' + } + + +def _save_config(cfg): + with open(CONFIG_PATH, 'w', encoding='utf-8') as f: + json.dump(cfg, f, ensure_ascii=False, indent=2) + + +def _scan_models(model_dir, ext): + if not model_dir or not os.path.isdir(model_dir): + return [] + files = glob.glob(os.path.join(model_dir, '**', f'*{ext}'), recursive=True) + files.sort(key=lambda f: os.path.getmtime(f), reverse=True) + return files + + +@bp.route('/config', methods=['GET']) +def get_config(): + cfg = _load_config() + cfg['gpt_models'] = _scan_models(cfg.get('gpt_model_dir', ''), '.ckpt') + cfg['sovits_models'] = _scan_models(cfg.get('sovits_model_dir', ''), '.pth') + return jsonify(cfg) + + +@bp.route('/config', methods=['POST']) +def save_config(): + data = request.get_json() + cfg = _load_config() + for key in ('api_url', 'gpt_model_dir', 'sovits_model_dir', 'last_gpt_model', 'last_sovits_model', 'sovits_path', 'start_cmd', + 'top_k', 'top_p', 'temperature', 'batch_size', 'speed', 'text_split_method', 'refer_audio_folder'): + if key in data: + cfg[key] = data[key] + _save_config(cfg) + return jsonify({'success': True}) + + +@bp.route('/refer-audio-history', methods=['POST']) +def save_refer_audio(): + data = request.get_json() + path = (data.get('path') or '').strip() + if not path: + return jsonify({'success': False, 'error': '路径不能为空'}) + cfg = _load_config() + history = cfg.get('refer_audio_history', []) + if path in history: + history.remove(path) + history.insert(0, path) + cfg['refer_audio_history'] = history + _save_config(cfg) + return jsonify({'success': True, 'history': history}) + + +@bp.route('/refer-audio-history', methods=['DELETE']) +def delete_refer_audio(): + data = request.get_json() + path = (data.get('path') or '').strip() + cfg = _load_config() + history = cfg.get('refer_audio_history', []) + if path in history: + history.remove(path) + cfg['refer_audio_history'] = history + _save_config(cfg) + return jsonify({'success': True, 'history': history}) + + +@bp.route('/refer-audio-history', methods=['PUT']) +def update_refer_audio(): + data = request.get_json() + old_path = (data.get('old_path') or '').strip() + new_path = (data.get('new_path') or '').strip() + if not old_path or not new_path: + return jsonify({'success': False, 'error': '路径不能为空'}) + cfg = _load_config() + history = cfg.get('refer_audio_history', []) + if old_path not in history: + return jsonify({'success': False, 'error': '原路径不存在'}) + if new_path in history and new_path != old_path: + return jsonify({'success': False, 'error': '新路径已存在'}) + idx = history.index(old_path) + history[idx] = new_path + cfg['refer_audio_history'] = history + _save_config(cfg) + return jsonify({'success': True, 'history': history}) + + +@bp.route('/scan-audio-folder', methods=['POST']) +def scan_audio_folder(): + """扫描文件夹下的音频文件""" + data = request.get_json() + folder = (data.get('folder') or '').strip() + if not folder: + return jsonify({'success': False, 'error': '请输入文件夹路径'}) + if not os.path.isdir(folder): + return jsonify({'success': False, 'error': '文件夹不存在'}) + + AUDIO_EXTS = ('.wav', '.mp3', '.flac', '.ogg', '.aac', '.m4a', '.wma') + files = [] + for f in os.listdir(folder): + full = os.path.join(folder, f) + if os.path.isfile(full) and f.lower().endswith(AUDIO_EXTS): + files.append(full) + files.sort(key=lambda x: os.path.basename(x).lower()) + + # 保存最后使用的文件夹 + cfg = _load_config() + cfg['refer_audio_folder'] = folder + _save_config(cfg) + + return jsonify({'success': True, 'files': files, 'count': len(files)}) + + +@bp.route('/test-connection', methods=['POST']) +def test_connection(): + data = request.get_json() + api_url = (data.get('api_url') or '').strip().rstrip('/') + if not api_url: + return jsonify({'success': False, 'error': '请填写 GPT-SoVITS 服务地址'}) + try: + r = requests.get(api_url + '/test', timeout=10) + if r.status_code == 200: + data = r.json() + return jsonify({'success': True, 'message': data.get('message', '连接成功')}) + return jsonify({'success': False, 'error': f'服务返回状态码 {r.status_code}'}) + except requests.exceptions.ConnectionError: + return jsonify({'success': False, 'error': f'无法连接到: {api_url}'}) + except requests.exceptions.Timeout: + return jsonify({'success': False, 'error': '连接超时'}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@bp.route('/run', methods=['POST']) +def run_api(): + global _sovits_proc + if platform.system() != 'Windows': + return jsonify({'success': False, 'error': '仅支持 Windows 系统'}) + cfg = _load_config() + sovits_path = (cfg.get('sovits_path') or '').strip() + start_cmd = (cfg.get('start_cmd') or '').strip() + if not sovits_path: + return jsonify({'success': False, 'error': '请先配置 GPT-SoVITS 路径'}) + if not os.path.isdir(sovits_path): + return jsonify({'success': False, 'error': f'路径不存在: {sovits_path}'}) + if not start_cmd: + return jsonify({'success': False, 'error': '请先配置启动命令'}) + try: + _sovits_proc = subprocess.Popen(start_cmd, shell=True, cwd=sovits_path) + return jsonify({'success': True, 'message': f'已启动: {start_cmd}'}) + except Exception as e: + return jsonify({'success': False, 'error': f'启动失败: {str(e)}'}) + + +@bp.route('/status', methods=['GET']) +def check_status(): + cfg = _load_config() + api_url = (cfg.get('api_url') or '').strip().rstrip('/') + if not api_url: + return jsonify({'running': False}) + try: + r = requests.get(api_url + '/test', timeout=3) + if r.status_code == 200: + data = r.json() + return jsonify({'running': True, 'message': data.get('message', '')}) + except Exception: + pass + return jsonify({'running': False}) + + +@bp.route('/kill', methods=['POST']) +def kill_api(): + global _sovits_proc + if _sovits_proc and _sovits_proc.poll() is None: + try: + subprocess.call(['taskkill', '/F', '/T', '/PID', str(_sovits_proc.pid)], + stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + except Exception: + pass + _sovits_proc = None + else: + cfg = _load_config() + api_url = (cfg.get('api_url') or '').strip().rstrip('/') + if api_url: + try: + r = requests.get(api_url + '/control?command=exit', timeout=5) + except Exception: + pass + return jsonify({'success': True, 'message': '已发送停止信号'}) + + +@bp.route('/synthesize', methods=['POST']) +def synthesize(): + data = request.get_json() + api_url = (data.get('api_url') or '').strip().rstrip('/') + text = (data.get('text') or '').strip() + text_lang = (data.get('text_lang') or 'zh').strip() + + if not api_url: + return jsonify({'success': False, 'error': '请填写 GPT-SoVITS 服务地址'}) + if not text: + return jsonify({'success': False, 'error': '请输入要合成的文本'}) + + ref_audio_path = (data.get('ref_audio_path') or '').strip() + prompt_text = (data.get('prompt_text') or '').strip() + prompt_lang = (data.get('prompt_lang') or 'zh').strip() + + if not ref_audio_path: + return jsonify({'success': False, 'error': '请填写参考音频路径'}) + + payload = { + 'text': text, + 'text_lang': text_lang, + 'ref_audio_path': ref_audio_path, + 'prompt_text': prompt_text, + 'prompt_lang': prompt_lang, + 'text_split_method': (data.get('text_split_method') or 'cut5').strip(), + 'batch_size': data.get('batch_size', 1), + 'top_k': data.get('top_k', 5), + 'top_p': data.get('top_p', 1.0), + 'temperature': data.get('temperature', 1.0), + 'speed_factor': data.get('speed_factor', 1.0), + 'seed': data.get('seed', -1), + 'media_type': 'wav', + 'streaming_mode': False, + } + + try: + r = requests.post(api_url + '/tts', json=payload, timeout=300) + content_type = r.headers.get('Content-Type', '') + + if r.status_code == 200 and 'audio' in content_type: + return Response(r.content, mimetype='audio/wav', + headers={'Content-Disposition': 'inline'}) + else: + try: + err = r.json() + msg = err.get('message', r.text[:200]) + except Exception: + msg = r.text[:200] + return jsonify({'success': False, 'error': f'合成失败: {msg}'}) + + except requests.exceptions.ConnectionError: + return jsonify({'success': False, 'error': f'无法连接到: {api_url}'}) + except requests.exceptions.Timeout: + return jsonify({'success': False, 'error': '合成超时(300秒),文本可能过长'}) + except Exception as e: + return jsonify({'success': False, 'error': f'请求失败: {str(e)}'}) + + +@bp.route('/set-gpt-model', methods=['POST']) +def set_gpt_model(): + data = request.get_json() + api_url = (data.get('api_url') or '').strip().rstrip('/') + weights_path = (data.get('weights_path') or '').strip() + + if not api_url: + return jsonify({'success': False, 'error': '请填写 GPT-SoVITS 服务地址'}) + if not weights_path: + return jsonify({'success': False, 'error': '请选择 GPT 模型'}) + + try: + r = requests.get(api_url + '/set_gpt_weights', params={'weights_path': weights_path}, timeout=60) + if r.status_code == 200: + return jsonify({'success': True, 'message': 'GPT 模型切换成功'}) + try: + err = r.json() + msg = err.get('message', r.text[:200]) + except Exception: + msg = r.text[:200] + return jsonify({'success': False, 'error': f'切换失败: {msg}'}) + except requests.exceptions.ConnectionError: + return jsonify({'success': False, 'error': f'无法连接到: {api_url}'}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@bp.route('/set-sovits-model', methods=['POST']) +def set_sovits_model(): + data = request.get_json() + api_url = (data.get('api_url') or '').strip().rstrip('/') + weights_path = (data.get('weights_path') or '').strip() + + if not api_url: + return jsonify({'success': False, 'error': '请填写 GPT-SoVITS 服务地址'}) + if not weights_path: + return jsonify({'success': False, 'error': '请选择 SoVITS 模型'}) + + try: + r = requests.get(api_url + '/set_sovits_weights', params={'weights_path': weights_path}, timeout=60) + if r.status_code == 200: + return jsonify({'success': True, 'message': 'SoVITS 模型切换成功'}) + try: + err = r.json() + msg = err.get('message', r.text[:200]) + except Exception: + msg = r.text[:200] + return jsonify({'success': False, 'error': f'切换失败: {msg}'}) + except requests.exceptions.ConnectionError: + return jsonify({'success': False, 'error': f'无法连接到: {api_url}'}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) diff --git a/flask-dev-api/blueprints/stt.py b/flask-dev-api/blueprints/stt.py new file mode 100644 index 0000000..8aa5c65 --- /dev/null +++ b/flask-dev-api/blueprints/stt.py @@ -0,0 +1,338 @@ +# -*- coding: utf-8 -*- +""" +STT 语音识别蓝图 +使用 faster-whisper 实现音频转文字 +""" +import os +import json +import uuid +import subprocess +import tempfile +import threading +import time +from datetime import timedelta +from flask import Blueprint, render_template, request, jsonify + +bp = Blueprint('stt', __name__, url_prefix='/stt') + +# HuggingFace 镜像 +os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' + +# OpenCC 繁体转简体 +try: + from opencc import OpenCC + _cc_t2s = OpenCC('t2s') +except Exception: + _cc_t2s = None + +try: + from config import BASE_DIR +except ImportError: + BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +CONFIG_PATH = os.path.join(BASE_DIR, 'config', 'stt_config.json') + +# 模型缓存 +_model_cache = {} +_task_queue = [] +_task_progress = {} +_task_results = {} +_worker_started = False +_worker_lock = threading.Lock() + +LANGUAGES = { + 'auto': '自动检测', + 'zh': '中文', 'en': '英语', 'ja': '日语', 'ko': '韩语', + 'fr': '法语', 'de': '德语', 'es': '西班牙语', 'ru': '俄语', + 'th': '泰语', 'it': '意大利语', 'pt': '葡萄牙语', 'vi': '越南语', + 'ar': '阿拉伯语', 'tr': '土耳其语', +} + + +def _load_config(): + cfg = {'model_dir': ''} + if os.path.exists(CONFIG_PATH): + with open(CONFIG_PATH, 'r', encoding='utf-8') as f: + cfg.update(json.load(f)) + return cfg + + +def _save_config(cfg): + with open(CONFIG_PATH, 'w', encoding='utf-8') as f: + json.dump(cfg, f, ensure_ascii=False, indent=2) + + +def _scan_models(directory): + """扫描模型目录,提取已下载的模型名称""" + models = [] + if not directory or not os.path.isdir(directory): + return models + prefix = 'models--Systran--faster-whisper-' + for name in os.listdir(directory): + full = os.path.join(directory, name) + if os.path.isdir(full) and name.startswith(prefix): + model_name = name[len(prefix):] + if model_name: + models.append(model_name) + return sorted(models) + + +@bp.route('/') +def page(): + cfg = _load_config() + return render_template('stt.html', models=_scan_models(cfg['model_dir']), languages=LANGUAGES) + + +@bp.route('/config', methods=['GET']) +def get_config(): + cfg = _load_config() + cfg['models'] = _scan_models(cfg['model_dir']) + return jsonify(cfg) + + +@bp.route('/config', methods=['POST']) +def save_config(): + data = request.get_json() + cfg = _load_config() + if 'model_dir' in data: + cfg['model_dir'] = data['model_dir'].strip() + _save_config(cfg) + return jsonify({'success': True}) + + +@bp.route('/models') +def list_models(): + cfg = _load_config() + return jsonify({'models': _scan_models(cfg['model_dir'])}) + + +@bp.route('/cuda-check') +def cuda_check(): + """检查 CUDA 是否可用(ctranslate2 优先,PyTorch 兜底)""" + # 方法1: ctranslate2(faster-whisper 的实际后端) + try: + import ctranslate2 + count = ctranslate2.get_cuda_device_count() + if count > 0: + name = 'CUDA Device' + try: + name = ctranslate2.get_cuda_device_name(0) or name + except Exception: + pass + return jsonify({'cuda': True, 'device_count': count, 'name': name}) + except Exception: + pass + # 方法2: PyTorch + try: + import torch + if torch.cuda.is_available(): + return jsonify({'cuda': True, 'device_count': torch.cuda.device_count(), + 'name': torch.cuda.get_device_name(0)}) + except Exception: + pass + return jsonify({'cuda': False}) + + +def _ms_to_srt_time(ms): + td = timedelta(milliseconds=ms) + h, rem = divmod(td.seconds, 3600) + m, s = divmod(rem, 60) + ms_part = td.microseconds // 1000 + return f'{h:02d}:{m:02d}:{s:02d},{ms_part:03d}' + + +def _convert_to_wav(input_path): + """用 FFmpeg 转为 16kHz 单声道 WAV,返回 wav 路径或 None""" + wav_path = os.path.join(tempfile.gettempdir(), uuid.uuid4().hex + '.wav') + cmd = ['ffmpeg', '-y', '-i', input_path, '-ar', '16000', '-ac', '1', wav_path] + try: + result = subprocess.run(cmd, capture_output=True, text=True, timeout=300, + creationflags=0x08000000 if os.name == 'nt' else 0) + if result.returncode == 0 and os.path.exists(wav_path): + return wav_path + except Exception: + pass + return None + + +def _get_model(model_name, device='cpu'): + """获取或加载模型,CUDA 失败自动回退 CPU""" + cfg = _load_config() + model_dir = cfg['model_dir'] + cache_key = f'{model_name}_{device}_{model_dir}' + if cache_key not in _model_cache: + from faster_whisper import WhisperModel + try: + _model_cache[cache_key] = WhisperModel( + model_name, device=device, download_root=model_dir + ) + except Exception as e: + if device == 'cuda': + # CUDA 加载失败,回退 CPU + cpu_key = f'{model_name}_cpu_{model_dir}' + if cpu_key not in _model_cache: + _model_cache[cpu_key] = WhisperModel( + model_name, device='cpu', download_root=model_dir + ) + return _model_cache[cpu_key], f'CUDA 加载失败({e}),已回退到 CPU' + raise + return _model_cache[cache_key], None + + +def _process_task(task): + """处理单个转录任务""" + task_id = task['task_id'] + fmt = task.get('format', 'text') + device = task.get('device', 'cpu') + try: + _task_progress[task_id] = {'percent': 0, 'status': 'loading', 'format': fmt} + + model, warn = _get_model(task['model'], device) + if warn: + _task_progress[task_id] = {'percent': 0, 'status': 'transcribing', 'format': fmt, 'warning': warn} + else: + _task_progress[task_id] = {'percent': 0, 'status': 'transcribing', 'format': fmt} + + lang = task['language'] if task['language'] != 'auto' else None + segments, info = model.transcribe( + task['wav_path'], + beam_size=5, best_of=5, + vad_filter=True, + language=lang, + ) + + total_duration = max(info.duration, 0.01) + results = [] + + for seg in segments: + _task_progress[task_id] = { + 'percent': round(seg.end / total_duration, 2), + 'status': 'transcribing', + 'format': fmt, + } + text = seg.text.strip() + if not text or len(text) <= 1: + continue + if _cc_t2s: + text = _cc_t2s.convert(text) + + start_ms = int(seg.start * 1000) + end_ms = int(seg.end * 1000) + + results.append({ + 'start': start_ms, + 'end': end_ms, + 'start_time': _ms_to_srt_time(start_ms), + 'end_time': _ms_to_srt_time(end_ms), + 'text': text, + }) + + _task_results[task_id] = results + _task_progress[task_id] = {'percent': 1, 'status': 'done', 'format': fmt} + + except Exception as e: + _task_progress[task_id] = {'percent': 0, 'status': 'error', 'error': str(e), 'format': fmt} + finally: + # 清理临时文件 + try: + if os.path.exists(task['wav_path']): + os.remove(task['wav_path']) + except Exception: + pass + + +def _worker(): + """后台 worker 线程""" + while True: + if not _task_queue: + time.sleep(1) + continue + task = _task_queue.pop(0) + _process_task(task) + + +def _ensure_worker(): + global _worker_started + if not _worker_started: + with _worker_lock: + if not _worker_started: + t = threading.Thread(target=_worker, daemon=True) + t.start() + _worker_started = True + + +@bp.route('/transcribe', methods=['POST']) +def transcribe(): + if 'audio' not in request.files: + return jsonify({'success': False, 'error': '请上传音频文件'}), 400 + + audio_file = request.files['audio'] + if not audio_file.filename: + return jsonify({'success': False, 'error': '未选择文件'}), 400 + + model_name = request.form.get('model', 'base') + language = request.form.get('language', 'auto') + device = request.form.get('device', 'cpu') + output_format = request.form.get('format', 'text') + + if model_name not in _scan_models(_load_config()['model_dir']): + return jsonify({'success': False, 'error': f'模型 {model_name} 不存在,请先下载到 stt_models 目录'}), 400 + + # 保存原始文件 + ext = os.path.splitext(audio_file.filename)[1].lower() + original_path = os.path.join(tempfile.gettempdir(), uuid.uuid4().hex + ext) + audio_file.save(original_path) + + # 转 WAV + wav_path = _convert_to_wav(original_path) + try: + os.remove(original_path) + except Exception: + pass + + if not wav_path: + return jsonify({'success': False, 'error': '音频转换失败,请确保 FFmpeg 已安装'}), 500 + + # 创建任务 + task_id = uuid.uuid4().hex + _task_progress[task_id] = {'percent': 0, 'status': 'queued', 'format': output_format} + _task_queue.append({ + 'task_id': task_id, + 'wav_path': wav_path, + 'model': model_name, + 'language': language, + 'device': device, + 'format': output_format, + }) + + _ensure_worker() + return jsonify({'success': True, 'task_id': task_id}) + + +@bp.route('/status/') +def task_status(task_id): + progress = _task_progress.get(task_id) + if not progress: + return jsonify({'success': False, 'error': '任务不存在'}), 404 + + resp = {'success': True, 'progress': progress} + + if progress['status'] == 'done': + results = _task_results.get(task_id, []) + fmt = progress.get('format', 'text') + + if fmt == 'srt': + lines = [] + for i, r in enumerate(results): + lines.append(f"{i+1}\n{r['start_time']} --> {r['end_time']}\n{r['text']}\n") + resp['result'] = '\n'.join(lines) + elif fmt == 'json': + resp['result'] = results + else: + resp['result'] = '\n'.join(r['text'] for r in results) + + # 清理 + _task_progress.pop(task_id, None) + _task_results.pop(task_id, None) + + return jsonify(resp) diff --git a/flask-dev-api/blueprints/token_gen.py b/flask-dev-api/blueprints/token_gen.py new file mode 100644 index 0000000..6388115 --- /dev/null +++ b/flask-dev-api/blueprints/token_gen.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +from flask import Blueprint, render_template + +bp = Blueprint('token_gen', __name__, url_prefix='/token-gen') + + +@bp.route('/') +def page(): + return render_template('token_gen.html') diff --git a/flask-dev-api/blueprints/url_parser.py b/flask-dev-api/blueprints/url_parser.py new file mode 100644 index 0000000..7bfc330 --- /dev/null +++ b/flask-dev-api/blueprints/url_parser.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +from flask import Blueprint, render_template + +bp = Blueprint('url_parser', __name__, url_prefix='/url-parser') + + +@bp.route('/') +def page(): + return render_template('url_parser.html') diff --git a/flask-dev-api/config.py b/flask-dev-api/config.py new file mode 100644 index 0000000..2d3e6ba --- /dev/null +++ b/flask-dev-api/config.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +""" +全局配置集中管理 +""" +import os + +# 基础目录 +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) + +# ==================== down-video 视频下载 ==================== +TWITTER_COOKIE = os.path.join(BASE_DIR, "config", "dv_cookies", "x.com_cookies.txt") +BILIBILI_COOKIE = os.path.join(BASE_DIR, "config", "dv_cookies", "bilibili.com_cookies.txt") +INSTAGRAM_COOKIE = os.path.join(BASE_DIR, "config", "dv_cookies", "instagram.com_cookies.txt") +YOUTUBE_COOKIE = os.path.join(BASE_DIR, "config", "dv_cookies", "youtube.com_cookies.txt") +# 默认下载目录 +DEFAULT_OUTPUT_DIR = r"D:\UserData\Desktop\xiazai" +# 默认代理端口 +PROXY_URL = "socks5://127.0.0.1:10808" +# ==================== fen-ci 分词 ==================== +JIEBA_DICT_FILE = os.path.join(BASE_DIR, 'config', 'fen_ci', 'jieba.txt') +TOKEN_FILE_PATH = os.path.join(BASE_DIR, 'config', 'fen_ci', 'usertoken.json') +# ==================== 服务端口 ==================== +PORT = 5000 diff --git a/flask-dev-api/config/ai_dubbing_config.json b/flask-dev-api/config/ai_dubbing_config.json new file mode 100644 index 0000000..b7f6416 --- /dev/null +++ b/flask-dev-api/config/ai_dubbing_config.json @@ -0,0 +1,20 @@ +{ + "sovits_project_path": "E:\\AI\\GPT-SoVITS-v4", + "sovits_config_yaml": "GPT_SoVITS\\configs\\tts_infer.yaml", + "last_prompt_text": "", + "last_prompt_lang": "zh", + "last_text_lang": "zh", + "last_text_split_method": "cut5", + "top_k": 5, + "top_p": 1, + "temperature": 1, + "batch_size": 16, + "speed_factor": 0.85, + "seed": -1, + "gpt_model_dir": "E:\\AI\\GPT-SoVITS-v4\\GPT_weights_v2", + "sovits_model_dir": "E:\\AI\\GPT-SoVITS-v4\\SoVITS_weights_v2", + "last_gpt_model": "bubu-e15.ckpt", + "last_sovits_model": "bubu_e4_s68.pth", + "refer_audio_folder": "D:\\UserData\\Desktop\\声音素材\\参考音频", + "config_yaml": "GPT_SoVITS/configs/tts_infer.yaml" +} \ No newline at end of file diff --git a/flask-dev-api/config/dv_cookies/bilibili.com_cookies.txt b/flask-dev-api/config/dv_cookies/bilibili.com_cookies.txt new file mode 100644 index 0000000..fc7c300 --- /dev/null +++ b/flask-dev-api/config/dv_cookies/bilibili.com_cookies.txt @@ -0,0 +1,49 @@ +# Netscape HTTP Cookie File +# This file is generated by yt-dlp. Do not edit. + +live.bilibili.com FALSE / FALSE 1782229863 GIFT_BLOCK_COOKIE GIFT_BLOCK_COOKIE +.live.bilibili.com TRUE / FALSE 1809050447 GIFT_BLOCK_COOKIE GIFT_BLOCK_COOKIE +.live.bilibili.com TRUE / FALSE 1809050447 LIVE_PK_GUARD 1 +.www.bilibili.com TRUE / FALSE 1809050447 bmg_af_switch 1 +.www.bilibili.com TRUE / FALSE 1809050447 bmg_src_def_domain i0.hdslb.com +.bilibili.com TRUE / FALSE 1809050253 buvid3 0237DF2E-9521-872E-651B-19B301DAB90D62499infoc +.bilibili.com TRUE / FALSE 1809050253 b_nut 1746844662 +.bilibili.com TRUE / FALSE 1809050253 _uuid FB7F39E5-73C2-1086D-366F-F7635C521056A61874infoc +.bilibili.com TRUE / FALSE 1809050253 enable_web_push DISABLE +.bilibili.com TRUE / FALSE 1809050253 enable_feed_channel ENABLE +.bilibili.com TRUE / FALSE 1809050253 hit-dyn-v2 1 +.bilibili.com TRUE / FALSE 1809050253 rpdid 0zbfvRTtA1|uIiOHoVI|mcP|3w1UdA6S +.bilibili.com TRUE / FALSE 1809050253 opus-goback 1 +.bilibili.com TRUE / FALSE 1809050253 fingerprint acb00c50626cb1195b761be931da19c5 +.bilibili.com TRUE / FALSE 1809050253 buvid_fp_plain undefined +.bilibili.com TRUE / FALSE 1809050253 buvid_fp acb00c50626cb1195b761be931da19c5 +.bilibili.com TRUE / FALSE 1809050253 header_theme_version OPEN +.bilibili.com TRUE / FALSE 1812979749 theme-tip-show SHOWED +.bilibili.com TRUE / FALSE 1809050253 LIVE_BUVID AUTO8417538829055118 +.bilibili.com TRUE / FALSE 1809050253 theme-avatar-tip-show SHOWED +.bilibili.com TRUE / FALSE 1809050253 theme-switch-show SHOWED +.bilibili.com TRUE / FALSE 1809050253 theme_style light +.bilibili.com TRUE / TRUE 1796809280 DedeUserID 403551212 +.bilibili.com TRUE / TRUE 1796809280 DedeUserID__ckMd5 168d56fdf378bcfc +.bilibili.com TRUE / FALSE 1809050253 PVID 3 +.bilibili.com TRUE / FALSE 1816004451 buvid4 D3170BA8-2910-9D9B-A608-52B60F1437AB62978-025051010-2j8K1NCxW9nraGJ2vOJv2vg3LhbmydYJolrkxpng+JQJZmNXaAoya/H8tItJHUfy +.bilibili.com TRUE / FALSE 1812974025 home_feed_column 5 +.bilibili.com TRUE / FALSE 1812018942 CURRENT_QUALITY 64 +.bilibili.com TRUE / FALSE 1781516479 bili_ticket eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3ODE1MTY0ODIsImlhdCI6MTc4MTI1NzIyMiwicGx0IjotMX0.eEl-svs_DNL9hArempTC7OjEOmwU5zkzh4z5lvc2JGU +.bilibili.com TRUE / FALSE 1781516479 bili_ticket_expires 1781516422 +.bilibili.com TRUE / TRUE 1796809280 SESSDATA e981c0f8%2C1796809283%2C53cbf%2A61CjDSekND1lFe5TiJgnRjBVV1dsBTaBY0JP5uDZhtM2bI4WZ9FnbNW1xAQXYO7eBAH7cSVk1jUG0zLU1SWUprSFZxb0VZNl9HM05WckVCZHpYRTVqM3dFUkMwbEVjai1DWF9MbERjUDZVVExzZ2JLMjBnbFhfSjA0MUZWTThBb2tRaDZDQ1d6UHpBIIEC +.bilibili.com TRUE / TRUE 1796809280 bili_jct ef487b5774b781e6ab9c18d90213d327 +.bilibili.com TRUE / FALSE 0 sid 8gro2gn0 +.bilibili.com TRUE / FALSE 1812974025 browser_resolution 1851-897 +.bilibili.com TRUE / FALSE 0 bsource search_google +.bilibili.com TRUE / FALSE 1812979748 CURRENT_FNVAL 4048 +.bilibili.com TRUE / FALSE 1784030027 bp_t_offset_403551212 1213756160121765888 +.bilibili.com TRUE / FALSE 0 b_lsid E00D64CD_19EC65D6A1F +www.bilibili.com FALSE / FALSE 0 bmg_src_def_domain i0.hdslb.com +www.bilibili.com FALSE / FALSE 0 bmg_af_sc {"none":{"on":1,"def":"i0.hdslb.com"},"sgp":{"on":1,"def":"i0-sgp.hdslb.com"}} +space.bilibili.com FALSE / FALSE 0 bmg_af_switch 1 +space.bilibili.com FALSE / FALSE 0 bmg_src_def_domain i0.hdslb.com +space.bilibili.com FALSE / FALSE 0 bmg_af_sc {"none":{"on":1,"def":"i0.hdslb.com"},"sgp":{"on":1,"def":"i0-sgp.hdslb.com"}} +t.bilibili.com FALSE / FALSE 0 bmg_af_switch 1 +t.bilibili.com FALSE / FALSE 0 bmg_src_def_domain i0.hdslb.com +t.bilibili.com FALSE / FALSE 0 bmg_af_sc {"none":{"on":1,"def":"i0.hdslb.com"},"sgp":{"on":1,"def":"i0-sgp.hdslb.com"}} diff --git a/flask-dev-api/config/dv_cookies/instagram.com_cookies.txt b/flask-dev-api/config/dv_cookies/instagram.com_cookies.txt new file mode 100644 index 0000000..5a7148d --- /dev/null +++ b/flask-dev-api/config/dv_cookies/instagram.com_cookies.txt @@ -0,0 +1,14 @@ +# Netscape HTTP Cookie File +# This file is generated by yt-dlp. Do not edit. + +.instagram.com TRUE / TRUE 1809050447 datr 7VpRaNFZCVtH94meCwNyGN67 +.instagram.com TRUE / TRUE 1809050447 ig_did 4C8BEDB9-BD5A-4578-BE5E-8041FEBB5CFA +.instagram.com TRUE / TRUE 1809050447 ig_nrcb 1 +.instagram.com TRUE / TRUE 1809050447 mid aIa_JwALAAFIl_ySVVi41gHHYsqr +.instagram.com TRUE / TRUE 1811647082 ps_l 1 +.instagram.com TRUE / TRUE 1811647082 ps_n 1 +.instagram.com TRUE / TRUE 1816106662 csrftoken qk83wpj5fjcPiaqmQt7IxK5ja194QaUS +.instagram.com TRUE / TRUE 1789322662 ds_user_id 66789174757 +.instagram.com TRUE / TRUE 1782074190 wd 1920x911 +.instagram.com TRUE / TRUE 1813005305 sessionid 66789174757%3APbdj3uLKZJD0EN%3A19%3AAYjwKOXobrrd72LKe9vlFJUmTuCya1VXDMgtvuFcRA +.instagram.com TRUE / TRUE 0 rur "CCO\05466789174757\0541813082662:01ff69c7f16b43f762b5e295cdd619d102b106e20d02842bc516c60ddca07b33dacd7514" diff --git a/flask-dev-api/config/dv_cookies/x.com_cookies.txt b/flask-dev-api/config/dv_cookies/x.com_cookies.txt new file mode 100644 index 0000000..d41dd0d --- /dev/null +++ b/flask-dev-api/config/dv_cookies/x.com_cookies.txt @@ -0,0 +1,61 @@ +# Netscape HTTP Cookie File +# This file is generated by yt-dlp. Do not edit. + +zhutix.com FALSE / FALSE 1782047186 X_CACHE_KEY 0291346395e7ad60497281e3e38d4231 +.x.com TRUE / FALSE 1815998942 __cuid b00c4a6e73cf471e95c093aec1d1c0b0 +.x.com TRUE / TRUE 1809050447 personalization_id "v1_X+OVgjnn20lE7ppYGHrXzQ==" +.x.com TRUE / TRUE 1809050447 guest_id v1%3A177285432573681062 +.x.com TRUE / TRUE 1809050447 kdt aYTMkoEta2sR2Cbrf9TCU2vL6NQrNTk6xP26HzJA +.x.com TRUE / TRUE 1809050447 auth_token e0a16f1e58541f609e0b26bfd2759c5508ad67c6 +.x.com TRUE / TRUE 1809050447 ct0 0699cddc947b9fa7e4b226e70d7fc69fdd46a9d4623aea18b98cf8ed9d99fd308a01fec0e531ae1bb50b602a0ba9e87691d694888c39440c7bc8bdc3e35afd1d0757903d5bc702b71fa81c648a0108e7 +.x.com TRUE / TRUE 1815998952 guest_id_ads v1%3A177285432573681062 +.x.com TRUE / TRUE 1815998952 guest_id_marketing v1%3A177285432573681062 +.x.com TRUE / TRUE 1812974953 twid u%3D1051785185509822466 +.x.com TRUE / FALSE 1809050447 g_state {"i_l":0,"i_ll":1772854333755,"i_e":{"enable_itp_optimization":0}} +.x.com TRUE / TRUE 1781551671 __cf_bm Y8Rce.E3Yxoh5EYX50LfajfNrmXT685C2ouYXp15erI-1781549871.0334666-1.0.1.1-O1jKivmiYHSUXZNwxtl9tFYsJ.e9bqR5h0Ct_LDNTxmqa6dbjMJz6k1M18IDYzJCL0sQNGf44f7.xfAHvDB1WsZzToX5s7J1.NlMYz5eWG5L1aJ9.ABmgZ1dOkjOQQE6 +www.dropbox.com FALSE / TRUE 1790090452 gvc MTk3NzU0NTUwMjg0MDYzMDYzMzA4NTQ0MjEyNzAzODM1MzUxNTYz +www.dropbox.com FALSE / TRUE 1787066452 __Host-js_csrf ee7vG1QZzX2hhBoptjGNMkhg +.dropbox.com TRUE / TRUE 1809050447 t ee7vG1QZzX2hhBoptjGNMkhg +.netflix.com TRUE / TRUE 1809050447 SecureNetflixId v%3D3%26mac%3DAQEAEQABABSSBFH4KvE6qPl_-6UI_re1LAdlfAy3rZk.%26dt%3D1758380348892 +.netflix.com TRUE / TRUE 1809050447 NetflixId v%3D3%26ct%3DBgjHlOvcAxLAAb-lG8nEmlB-x4EMpdZG6gG0_ZGe7HgQvUbBUgbe6kPr6Or-1cC94UaN0RbSzxx_OYBaaHLg2MvdKRvw0dKlWwzRJyychkiKImYRxA1PHETG8KjG86tx5smLKn9QcETtqecvyrKl04PUFZ6KuO8Y3LrCO8posa-VMj5U3gonTjruh63uy_zFQYQygkvrJIShQ1yQjNxCropJEzK536vs46y7MYjt_KPCIK9E8tpT80whmRDQ7DgBniSOyGTtiKKyFhgGIg4KDEsJyQjnvm9ZXXKI7g.. +.yandex.com TRUE / TRUE 1809050447 yuidss 3388071441761318311 +.yandex.com TRUE / TRUE 1809050447 is_gdpr 0 +.yandex.com TRUE / TRUE 1809050447 yandexuid 3388071441761318311 +.yandex.com TRUE / TRUE 1813426903 my YwA= +.yandex.com TRUE / TRUE 1809050447 is_gdpr_b CMWxMBD63gIoAg== +.yandex.com TRUE / TRUE 1809050447 yandex_gid 11514 +.yandex.com TRUE / TRUE 1812418540 i MLohYmrN97KycAe1+2vR9wM3je12zjJpgekoxMDo63OIc1ksAnHK5JG1LZ6vg8avafP/Ui1NvMFstSjVa+DYFB2ckZ8= +.yandex.com TRUE / TRUE 1813426899 bh EkEiQ2hyb21pdW0iO3Y9IjE0MCIsICJOb3Q9QT9CcmFuZCI7dj0iMjQiLCAiR29vZ2xlIENocm9tZSI7dj0iMTQwIhoFIng4NiIiECIxNDAuMC43MzM5LjEyOCIqAj8wMgIiIjoJIldpbmRvd3MiQggiMTkuMC4wIkoEIjY0IlJdIkNocm9taXVtIjt2PSIxNDAuMC43MzM5LjEyOCIsICJOb3Q9QT9CcmFuZCI7dj0iMjQuMC4wLjAiLCAiR29vZ2xlIENocm9tZSI7dj0iMTQwLjAuNzMzOS4xMjgiWgI/MGDTtZ3QBmoe3Mrh/wiS2KGxA5/P4eoD+/rw5w3r//32D/68z4cI +.yandex.com TRUE / TRUE 1813426972 _yasc 4DZrQ4PuAkz3cI5tvgcS3TdKymWz/jxU6srXJpYRokrZt0eokHzSrKn2v7KsfYytjDGkmp1UMV0VXNifmUQwdWqIMLxwDNaq+9UtboqXu0dpnEf0IRhN5ERLjg6xTaPyHEzInkZw+GgAYJ77lLveUOZDY7pGF+rt2AKxULjAvLCXyd6lKmGxeU8a1qdMV+wI2fa7bQ4bZIcvHOgwa9D5Ig==.MTc3ODg2Njk3MzU5Ng== +.yandex.com TRUE / TRUE 1813427034 yp 2094227035.pcs.0#1792854544.swntab.0#1794634904.szm.1%3A1920x1080%3A1368x748%3A15#1779730970.dlp.2 +www.kninebox.com FALSE / FALSE 1800025226 SITE_TOTAL_ID c9a65e54de60ac4fe330c0ff3782502c +www.zabbix.com FALSE / TRUE 1798733253 bblastvisit 1767197255 +www.zabbix.com FALSE / TRUE 1798733263 bblastactivity 1767197264 +x.com FALSE / FALSE 1788406355 g_state {"i_l":0,"i_ll":1772854333755,"i_e":{"enable_itp_optimization":0}} +x.com FALSE / FALSE 1815998942 __cuid b00c4a6e73cf471e95c093aec1d1c0b0 +x.com FALSE / FALSE 0 lang zh-cn +www.wmmflix.com FALSE / FALSE 1805768886 lastvisit 229%091774232884%09%2Fapp-index-run%3Fapp%3Dsearch%26keywords%3D%25E6%25A5%259A%25E9%2597%25A8%25E7%259A%2584%25E4%25B8%2596%25E7%2595%258C +.zhutix.com TRUE / FALSE 1809050447 X_CACHE_KEY 0291346395e7ad60497281e3e38d4231 +.www.dropbox.com TRUE / TRUE 1809050447 gvc MTk3NzU0NTUwMjg0MDYzMDYzMzA4NTQ0MjEyNzAzODM1MzUxNTYz +.www.kninebox.com TRUE / FALSE 1809050447 SITE_TOTAL_ID c9a65e54de60ac4fe330c0ff3782502c +.www.zabbix.com TRUE / TRUE 1809050447 bblastvisit 1767197255 +.www.zabbix.com TRUE / TRUE 1809050447 bblastactivity 1767197264 +.www.wmmflix.com TRUE / FALSE 1809050447 lastvisit 229%091774232884%09%2Fapp-index-run%3Fapp%3Dsearch%26keywords%3D%25E6%25A5%259A%25E9%2597%25A8%25E7%259A%2584%25E4%25B8%2596%25E7%2595%258C +.apifox.com TRUE / FALSE 1807354712 projectCid E7kxt1QP-suZw-rUCR-y7Yt-GkpVyJCohmWN +.apifox.com TRUE / TRUE 1807278859 Authorization Bearer UXhlvujyRSawMlpxDml0cqNhAJ2PuUdV +.apifox.com TRUE / TRUE 1807278859 Authorization.sig RL9wbeTJaCY-0qUIbw5CjV9i82cwYlHFJnCRdc_uxpk +fetcherx.com FALSE / TRUE 1813402355 use_lang zh_CN +www.imgix.com FALSE / FALSE 1815214365 fa-consent-ad_personalization false +www.imgix.com FALSE / FALSE 1815214365 fa-consent-ad_storage false +www.imgix.com FALSE / FALSE 1815214365 fa-consent-ad_user_data false +www.imgix.com FALSE / FALSE 1815214365 fa-consent-analytics_storage false +www.imgix.com FALSE / FALSE 1815214365 fa-consent-functionality_storage false +www.imgix.com FALSE / FALSE 1815214365 fa-consent-personalization_storage false +www.imgix.com FALSE / FALSE 1815214365 fa-consent-security_storage true +.imgix.com TRUE / FALSE 1812190443 ajs_anonymous_id 3176670a-5510-4e47-b8c7-979d71a934a8 +.imgix.com TRUE / TRUE 1812190444 ph_phc_gqau377j9mZCjDlmVX7QNJjez7Hhs2oI4Nr1sVeoN1s_posthog %7B%22distinct_id%22%3A%22z18631839859%40gmail.com%22%2C%22%24sesid%22%3A%5B1780654444253%2C%22019e9745-0edb-7b1b-8bb4-a1225a2d81d7%22%2C1780654345947%5D%2C%22%24epp%22%3Atrue%2C%22%24initial_person_info%22%3A%7B%22r%22%3A%22https%3A%2F%2Fimages.unsplash.com%2F%22%2C%22u%22%3A%22https%3A%2F%2Fdashboard.imgix.com%2Fauth0%22%7D%7D +login.imgix.com FALSE / TRUE 1812212006 did s%3Av0%3Aaa7f0e2a-1e71-409b-bcac-f23550f526c4%3A5fc289c9a2613ad7d1265ed3322b4c08a448577c0411b63dcfc7dd5852bf6fb5.iPtufEf%2FRRan4MjyN9IjbGoVZVic%2FNfhvfO4A4pa%2FKE +login.imgix.com FALSE / TRUE 1812212006 did_compat s%3Av0%3Aaa7f0e2a-1e71-409b-bcac-f23550f526c4%3A5fc289c9a2613ad7d1265ed3322b4c08a448577c0411b63dcfc7dd5852bf6fb5.iPtufEf%2FRRan4MjyN9IjbGoVZVic%2FNfhvfO4A4pa%2FKE +.dashboard.imgix.com TRUE / TRUE 1812190441 __stripe_mid b060c0ef-41b1-4251-a5c0-36a79f8faddb478cf7 +.itzmx.com TRUE / TRUE 1783532085 UpTn_8a61_saltkey rxA6t5qz +.itzmx.com TRUE / TRUE 1783532085 UpTn_8a61_lastvisit 1780936481 diff --git a/flask-dev-api/config/dv_cookies/youtube.com_cookies.txt b/flask-dev-api/config/dv_cookies/youtube.com_cookies.txt new file mode 100644 index 0000000..4b82e8f --- /dev/null +++ b/flask-dev-api/config/dv_cookies/youtube.com_cookies.txt @@ -0,0 +1,16 @@ +# Netscape HTTP Cookie File +# This file is generated by yt-dlp. Do not edit. + +.youtube.com TRUE / TRUE 1816029836 __Secure-3PAPISID p29j5udXvFjH9L_P/A4m-3vMtyP9bCpciZ +.youtube.com TRUE / FALSE 0 PREF tz=UTC&f7=100&f5=30000&hl=en +.youtube.com TRUE / TRUE 1791638492 __Secure-BUCKET CJcC +.youtube.com TRUE / TRUE 1816029836 __Secure-3PSID g.a000_AiLiZZyVuWnpeP6WLBqx9nnIkdJz0G8LSlciB4U2rPpWmEhGfEookTFipBTqTvkL5yU6QACgYKAaMSARYSFQHGX2Mi41GqINM93br4T0lKt6eM6RoVAUF8yKo1k5Y44q-OMZ8AgRBion9i0076 +.youtube.com TRUE / TRUE 1813040907 __Secure-1PSIDTS sidts-CjUByojQU6hZiaockSCRL9COCSwcVE3utW1Gk0YS748BVlAiZRRGpquov4L-aRe_Ujl-yVZ0EhAA +.youtube.com TRUE / TRUE 1813040907 __Secure-3PSIDTS sidts-CjUByojQU6hZiaockSCRL9COCSwcVE3utW1Gk0YS748BVlAiZRRGpquov4L-aRe_Ujl-yVZ0EhAA +.youtube.com TRUE / TRUE 1813041037 __Secure-3PSIDCC AKEyXzWNSlDRYYtYIc42aXuLmNjNcIBF1-bqadoifU39MaUz7SILVaK-_agLrwGmN4J5Jel9FQ +.youtube.com TRUE / TRUE 1797056997 __Secure-YNID 19.YT=H7AKSY-Ar7b3FOBF9AYf5spCeonS3PxM0s8Nk5bFq_4vygoqW6Iu82bB7zV8_gK58XsKop2IcZex7mRltci3dUT8fQpK4tI5oQ_CJbyl3VI3bINRU_YixqjlojeVg3XmKehImhhe4g4_IYck3bXa8K68MZqedx3ED6IpOSud6LTMiBFpW63w0FGZDq2FbkFO3novFiLrhCRhomSPB6AAUtCHLCb9bIsEjF_2k560CnkSa4GzBKMfC6jkLpJs5HsoTtKfw4VeiQ4ARTv4Uh6ErKgiWw1CTot-QzYT8PiZOqlZAyFu42cBDuze-bTxskTj1yi_YYwB6o9jmqgVVD3dHQ +.youtube.com TRUE / TRUE 1797060085 VISITOR_INFO1_LIVE 2iHv55tsnuw +.youtube.com TRUE / TRUE 1797060085 VISITOR_PRIVACY_METADATA CgJKUBIEGgAgQA%3D%3D +.youtube.com TRUE / TRUE 1797057037 __Secure-ROLLOUT_TOKEN CJix3Jv29fHvQxDRpqykz4iVAxiiwqy3z4iVAw%3D%3D +.youtube.com TRUE / TRUE 1781508337 GPS 1 +.youtube.com TRUE / TRUE 0 SOCS CAI diff --git a/flask-dev-api/config/fen_ci/jieba.txt b/flask-dev-api/config/fen_ci/jieba.txt new file mode 100644 index 0000000..790133c --- /dev/null +++ b/flask-dev-api/config/fen_ci/jieba.txt @@ -0,0 +1,37 @@ +MemoFlow +MookNote +VoceChat +WireGuard +SyncClipboard +floccus +GitNex +Bitwarden +Immich +牛逼 +安益强 +张昊洋 +王美丽 +李冰素 +清华大学 +人工智能学院 +自然语言处理 +机器学习算法 +康嘉超 +王震瀛 +张钰 +贝利亚 +朱益广 +好的 +小程序 +问一下 +曹婷婷 +好滴 +鲁桂娟 +安兰兰 +李春雨 +王娜娜 +telegram +Telegram +v2rayNG +tool +root diff --git a/flask-dev-api/config/fen_ci/usertoken.json b/flask-dev-api/config/fen_ci/usertoken.json new file mode 100644 index 0000000..e587dba --- /dev/null +++ b/flask-dev-api/config/fen_ci/usertoken.json @@ -0,0 +1,6 @@ +[ + { + "user": "admin", + "token": "DdzBgb8GEkBpA8gtCJXP24hGJz9bXpEOi6z91fHm25X59q5968XqtLxPi1MfiTHJ" + } +] diff --git a/flask-dev-api/config/rvc_config.json b/flask-dev-api/config/rvc_config.json new file mode 100644 index 0000000..c19871c --- /dev/null +++ b/flask-dev-api/config/rvc_config.json @@ -0,0 +1,16 @@ +{ + "rvc_project_path": "E:\\AI\\RVC\\RVC1006Nvidia", + "model_dir": "E:\\AI\\RVC\\rvc_con\\weights", + "model_dir_mode": "absolute", + "index_dir": "E:\\AI\\RVC\\rvc_con\\index", + "index_dir_mode": "absolute", + "last_model": "", + "last_index": "", + "f0_up_key": 0, + "f0_method": "rmvpe", + "index_rate": 0.75, + "filter_radius": 3, + "resample_sr": 22050, + "rms_mix_rate": 0.25, + "protect": 0.33 +} \ No newline at end of file diff --git a/flask-dev-api/config/sovits_config.json b/flask-dev-api/config/sovits_config.json new file mode 100644 index 0000000..e57be7e --- /dev/null +++ b/flask-dev-api/config/sovits_config.json @@ -0,0 +1,16 @@ +{ + "api_url": "http://127.0.0.1:9880", + "gpt_model_dir": "E:\\AI\\GPT-SoVITS-v4\\GPT_weights_v2", + "sovits_model_dir": "E:\\AI\\GPT-SoVITS-v4\\SoVITS_weights_v2", + "last_gpt_model": "E:\\AI\\GPT-SoVITS-v4\\GPT_weights_v2\\bubu-e15.ckpt", + "last_sovits_model": "E:\\AI\\GPT-SoVITS-v4\\SoVITS_weights_v2\\bubu_e4_s68.pth", + "sovits_path": "E:\\AI\\GPT-SoVITS-v4", + "start_cmd": "start api_v2.bat", + "top_k": 5, + "top_p": 1, + "temperature": 1, + "batch_size": 16, + "speed": 1, + "text_split_method": "cut5", + "refer_audio_folder": "D:\\UserData\\Desktop\\声音素材\\参考音频" +} \ No newline at end of file diff --git a/flask-dev-api/config/stt_config.json b/flask-dev-api/config/stt_config.json new file mode 100644 index 0000000..b326e4f --- /dev/null +++ b/flask-dev-api/config/stt_config.json @@ -0,0 +1,3 @@ +{ + "model_dir": "E:\\AI\\stt\\models" +} \ No newline at end of file diff --git a/flask-dev-api/proj_utils/__pycache__/utils.cpython-312.pyc b/flask-dev-api/proj_utils/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d694d61f1f6f5d29aeaa9cf6f6062ed253815e70 GIT binary patch literal 1773 zcmaJ?T}&KR6u$Gf%Ps?D7pN;_acH4rOM$pFYPWz@mY2rxLQuiAlVxY1%g@ece#F&T zLroK@HpT~)*p`%9wQHK_nrKA>X#$VF46+Gi;G!ZLEQs#*P~rQ-A>sG79b-!CK?-3oe?fJ7-is|<+bKYHE^P+Cd%M3 z!n2d<&1;tp5~@M+LP!I(G5J~caA`(B-`hw&)^O_m;pq4!8`uwLbM>ajZ_2U=W z+1af-mkc#|xlg*XlT%x_QUOZxSj@U$qpo}{#RWRszjWR#zfWK8;ffD zpnlrL^BnIhQk_g#4ATP%krmXVMl{RNR&VKOY>-o3Pn`4G>#vp?2^d-sVTK_UVbwA# zQlLeS7WssV!4pCI(op8u>j?%zy#mVzVdhYf6-GoZ9vVx~ah@9v#S=8cj&X1mFLE(j zi15+47#bW63nNVo`%Y6h9t~+gS`wq9LP(#R;|WV69gZ=OK&z8~1}4SfBLv`wYXa=r zKu!J43twGGonQ98sNhwrp5_&gf63!d2bMh@3SPPDYFKeKF1Z?0ug%sjyV@qs|6}*$ zP{Q#Rvg&PE@is4co0XPx%idQeyVppUQsGxxgNnaP=^9WXW6D5GadR0mzFJGRdAv-eoIo&v^G@eyXwkgi`4Bqkgk>|F7ov56|a;VKwna`0Dmc6ZJic_hc zR9CuMakpp44#@l`S(|gfm|Zs@oQktKgSV^}H~zO<56X^h0|ZKaTv@O3`Ws5`n~J+{ zh3sD<`}cF02HM}P(gRROrH(%_Bh0X=Ksuc6QQT)TWMGY~*v}Ery(hH5JDfZI>S?fm z)pk~+3#T2O9&DlA)me@$mJ`rktafz1Of1&9Is?RFfPl6S<+YEt-h%JJ4m1IO6i$0Z jZDSlGjj|nl72Ik+6rlu8P!xjv1xj~pHOMLcS$Oh4tHC5T literal 0 HcmV?d00001 diff --git a/flask-dev-api/requirements.txt b/flask-dev-api/requirements.txt new file mode 100644 index 0000000..c8242f2 --- /dev/null +++ b/flask-dev-api/requirements.txt @@ -0,0 +1,10 @@ +Flask>=2.0.0 +jieba>=0.42.1 +yt-dlp>=2023.0.0 +chardet>=5.0.0 +Werkzeug>=2.0.0 +faster-whisper>=1.0.0 +opencc-python-reimplemented>=0.1.7 +# AI 配音 (GPT-SoVITS 依赖) +soundfile>=0.12.0 +numpy>=1.20.0 diff --git a/flask-dev-api/run_tools.cmd b/flask-dev-api/run_tools.cmd new file mode 100644 index 0000000..8599b9f --- /dev/null +++ b/flask-dev-api/run_tools.cmd @@ -0,0 +1 @@ +python "D:\UserData\Desktop\my_proj\py_demo\python_script\flask-dev-api\app.py" \ No newline at end of file diff --git a/flask-dev-api/static/echarts.min.js b/flask-dev-api/static/echarts.min.js new file mode 100644 index 0000000..835966f --- /dev/null +++ b/flask-dev-api/static/echarts.min.js @@ -0,0 +1,45 @@ + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).echarts={})}(this,(function(t){"use strict"; +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},e(t,n)};function n(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}var i=function(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1},r=new function(){this.browser=new i,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow="undefined"!=typeof window};"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(r.wxa=!0,r.touchEventsSupported=!0):"undefined"==typeof document&&"undefined"!=typeof self?r.worker=!0:"undefined"==typeof navigator||0===navigator.userAgent.indexOf("Node.js")?(r.node=!0,r.svgSupported=!0):function(t,e){var n=e.browser,i=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),o=t.match(/Edge?\/([\d.]+)/),a=/micromessenger/i.test(t);i&&(n.firefox=!0,n.version=i[1]);r&&(n.ie=!0,n.version=r[1]);o&&(n.edge=!0,n.version=o[1],n.newEdge=+o[1].split(".")[0]>18);a&&(n.weChat=!0);e.svgSupported="undefined"!=typeof SVGRect,e.touchEventsSupported="ontouchstart"in window&&!n.ie&&!n.edge,e.pointerEventsSupported="onpointerdown"in window&&(n.edge||n.ie&&+n.version>=11),e.domSupported="undefined"!=typeof document;var s=document.documentElement.style;e.transform3dSupported=(n.ie&&"transition"in s||n.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||n.ie&&+n.version>=9}(navigator.userAgent,r);var o="sans-serif",a="12px "+o;var s,l,u=function(t){var e={};if("undefined"==typeof JSON)return e;for(var n=0;n=0)o=r*t.length;else for(var c=0;c>1)%2;a.style.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[s]+":0",r[l]+":0",i[1-s]+":auto",r[1-l]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}return n}(e,a),l=function(t,e,n){for(var i=n?"invTrans":"trans",r=e[i],o=e.srcCoords,a=[],s=[],l=!0,u=0;u<4;u++){var h=t[u].getBoundingClientRect(),c=2*u,p=h.left,d=h.top;a.push(p,d),l=l&&o&&p===o[c]&&d===o[c+1],s.push(t[u].offsetLeft,t[u].offsetTop)}return l&&r?r:(e.srcCoords=a,e[i]=n?$t(s,a):$t(a,s))}(s,a,o);if(l)return l(t,n,i),!0}return!1}function ee(t){return"CANVAS"===t.nodeName.toUpperCase()}var ne=/([&<>"'])/g,ie={"&":"&","<":"<",">":">",'"':""","'":"'"};function re(t){return null==t?"":(t+"").replace(ne,(function(t,e){return ie[e]}))}var oe=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ae=[],se=r.browser.firefox&&+r.browser.version.split(".")[0]<39;function le(t,e,n,i){return n=n||{},i?ue(t,e,n):se&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):ue(t,e,n),n}function ue(t,e,n){if(r.domSupported&&t.getBoundingClientRect){var i=e.clientX,o=e.clientY;if(ee(t)){var a=t.getBoundingClientRect();return n.zrX=i-a.left,void(n.zrY=o-a.top)}if(te(ae,t,i,o))return n.zrX=ae[0],void(n.zrY=ae[1])}n.zrX=n.zrY=0}function he(t){return t||window.event}function ce(t,e,n){if(null!=(e=he(e)).zrX)return e;var i=e.type;if(i&&i.indexOf("touch")>=0){var r="touchend"!==i?e.targetTouches[0]:e.changedTouches[0];r&&le(t,r,e,n)}else{le(t,e,e,n);var o=function(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,i=t.deltaY;if(null==n||null==i)return e;return 3*(0!==i?Math.abs(i):Math.abs(n))*(i>0?-1:i<0?1:n>0?-1:1)}(e);e.zrDelta=o?o/120:-(e.detail||0)/3}var a=e.button;return null==e.which&&void 0!==a&&oe.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function pe(t,e,n,i){t.addEventListener(e,n,i)}var de=function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0};function fe(t){return 2===t.which||3===t.which}var ge=function(){function t(){this._track=[]}return t.prototype.recognize=function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},t.prototype.clear=function(){return this._track.length=0,this},t.prototype._doTrack=function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,a=i.length;o1&&r&&r.length>1){var a=ye(r)/ye(o);!isFinite(a)&&(a=1),e.pinchScale=a;var s=[((i=r)[0][0]+i[1][0])/2,(i[0][1]+i[1][1])/2];return e.pinchX=s[0],e.pinchY=s[1],{type:"pinch",target:t[0].target,event:e}}}}};function me(){return[1,0,0,1,0,0]}function xe(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function _e(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function be(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],o=e[0]*n[2]+e[2]*n[3],a=e[1]*n[2]+e[3]*n[3],s=e[0]*n[4]+e[2]*n[5]+e[4],l=e[1]*n[4]+e[3]*n[5]+e[5];return t[0]=i,t[1]=r,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t}function we(t,e,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+n[0],t[5]=e[5]+n[1],t}function Se(t,e,n,i){void 0===i&&(i=[0,0]);var r=e[0],o=e[2],a=e[4],s=e[1],l=e[3],u=e[5],h=Math.sin(n),c=Math.cos(n);return t[0]=r*c+s*h,t[1]=-r*h+s*c,t[2]=o*c+l*h,t[3]=-o*h+c*l,t[4]=c*(a-i[0])+h*(u-i[1])+i[0],t[5]=c*(u-i[1])-h*(a-i[0])+i[1],t}function Me(t,e,n){var i=n[0],r=n[1];return t[0]=e[0]*i,t[1]=e[1]*r,t[2]=e[2]*i,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*r,t}function Ie(t,e){var n=e[0],i=e[2],r=e[4],o=e[1],a=e[3],s=e[5],l=n*a-o*i;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*s-a*r)*l,t[5]=(o*r-n*s)*l,t):null}function Te(t){var e=[1,0,0,1,0,0];return _e(e,t),e}var Ce=Object.freeze({__proto__:null,create:me,identity:xe,copy:_e,mul:be,translate:we,rotate:Se,scale:Me,invert:Ie,clone:Te}),De=function(){function t(t,e){this.x=t||0,this.y=e||0}return t.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},t.prototype.clone=function(){return new t(this.x,this.y)},t.prototype.set=function(t,e){return this.x=t,this.y=e,this},t.prototype.equal=function(t){return t.x===this.x&&t.y===this.y},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},t.prototype.scale=function(t){this.x*=t,this.y*=t},t.prototype.scaleAndAdd=function(t,e){this.x+=t.x*e,this.y+=t.y*e},t.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},t.prototype.dot=function(t){return this.x*t.x+this.y*t.y},t.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},t.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},t.prototype.normalize=function(){var t=this.len();return this.x/=t,this.y/=t,this},t.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},t.prototype.distanceSquare=function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},t.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},t.prototype.transform=function(t){if(t){var e=this.x,n=this.y;return this.x=t[0]*e+t[2]*n+t[4],this.y=t[1]*e+t[3]*n+t[5],this}},t.prototype.toArray=function(t){return t[0]=this.x,t[1]=this.y,t},t.prototype.fromArray=function(t){this.x=t[0],this.y=t[1]},t.set=function(t,e,n){t.x=e,t.y=n},t.copy=function(t,e){t.x=e.x,t.y=e.y},t.len=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},t.lenSquare=function(t){return t.x*t.x+t.y*t.y},t.dot=function(t,e){return t.x*e.x+t.y*e.y},t.add=function(t,e,n){t.x=e.x+n.x,t.y=e.y+n.y},t.sub=function(t,e,n){t.x=e.x-n.x,t.y=e.y-n.y},t.scale=function(t,e,n){t.x=e.x*n,t.y=e.y*n},t.scaleAndAdd=function(t,e,n,i){t.x=e.x+n.x*i,t.y=e.y+n.y*i},t.lerp=function(t,e,n,i){var r=1-i;t.x=r*e.x+i*n.x,t.y=r*e.y+i*n.y},t}(),Ae=Math.min,ke=Math.max,Le=new De,Pe=new De,Oe=new De,Re=new De,Ne=new De,Ee=new De,ze=function(){function t(t,e,n,i){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}return t.prototype.union=function(t){var e=Ae(t.x,this.x),n=Ae(t.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=ke(t.x+t.width,this.x+this.width)-e:this.width=t.width,isFinite(this.y)&&isFinite(this.height)?this.height=ke(t.y+t.height,this.y+this.height)-n:this.height=t.height,this.x=e,this.y=n},t.prototype.applyTransform=function(e){t.applyTransform(this,this,e)},t.prototype.calculateTransform=function(t){var e=this,n=t.width/e.width,i=t.height/e.height,r=[1,0,0,1,0,0];return we(r,r,[-e.x,-e.y]),Me(r,r,[n,i]),we(r,r,[t.x,t.y]),r},t.prototype.intersect=function(e,n){if(!e)return!1;e instanceof t||(e=t.create(e));var i=this,r=i.x,o=i.x+i.width,a=i.y,s=i.y+i.height,l=e.x,u=e.x+e.width,h=e.y,c=e.y+e.height,p=!(of&&(f=x,gf&&(f=_,v=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.copy=function(e){t.copy(this,e)},t.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},t.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},t.prototype.isZero=function(){return 0===this.width||0===this.height},t.create=function(e){return new t(e.x,e.y,e.width,e.height)},t.copy=function(t,e){t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height},t.applyTransform=function(e,n,i){if(i){if(i[1]<1e-5&&i[1]>-1e-5&&i[2]<1e-5&&i[2]>-1e-5){var r=i[0],o=i[3],a=i[4],s=i[5];return e.x=n.x*r+a,e.y=n.y*o+s,e.width=n.width*r,e.height=n.height*o,e.width<0&&(e.x+=e.width,e.width=-e.width),void(e.height<0&&(e.y+=e.height,e.height=-e.height))}Le.x=Oe.x=n.x,Le.y=Re.y=n.y,Pe.x=Re.x=n.x+n.width,Pe.y=Oe.y=n.y+n.height,Le.transform(i),Re.transform(i),Pe.transform(i),Oe.transform(i),e.x=Ae(Le.x,Pe.x,Oe.x,Re.x),e.y=Ae(Le.y,Pe.y,Oe.y,Re.y);var l=ke(Le.x,Pe.x,Oe.x,Re.x),u=ke(Le.y,Pe.y,Oe.y,Re.y);e.width=l-e.x,e.height=u-e.y}else e!==n&&t.copy(e,n)},t}(),Ve="silent";function Be(){de(this.event)}var Fe=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.handler=null,e}return n(e,t),e.prototype.dispose=function(){},e.prototype.setCursor=function(){},e}(jt),Ge=function(t,e){this.x=t,this.y=e},We=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],He=new ze(0,0,0,0),Ye=function(t){function e(e,n,i,r,o){var a=t.call(this)||this;return a._hovered=new Ge(0,0),a.storage=e,a.painter=n,a.painterRoot=r,a._pointerSize=o,i=i||new Fe,a.proxy=null,a.setHandlerProxy(i),a._draggingMgr=new Zt(a),a}return n(e,t),e.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(E(We,(function(e){t.on&&t.on(e,this[e],this)}),this),t.handler=this),this.proxy=t},e.prototype.mousemove=function(t){var e=t.zrX,n=t.zrY,i=Ze(this,e,n),r=this._hovered,o=r.target;o&&!o.__zr&&(o=(r=this.findHover(r.x,r.y)).target);var a=this._hovered=i?new Ge(e,n):this.findHover(e,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),o&&s!==o&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(a,"mousemove",t),s&&s!==o&&this.dispatchToElement(a,"mouseover",t)},e.prototype.mouseout=function(t){var e=t.zrEventControl;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&this.trigger("globalout",{type:"globalout",event:t})},e.prototype.resize=function(){this._hovered=new Ge(0,0)},e.prototype.dispatch=function(t,e){var n=this[t];n&&n.call(this,e)},e.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},e.prototype.setCursorStyle=function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},e.prototype.dispatchToElement=function(t,e,n){var i=(t=t||{}).target;if(!i||!i.silent){for(var r="on"+e,o=function(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:Be}}(e,t,n);i&&(i[r]&&(o.cancelBubble=!!i[r].call(i,o)),i.trigger(e,o),i=i.__hostTarget?i.__hostTarget:i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer((function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)})))}},e.prototype.findHover=function(t,e,n){var i=this.storage.getDisplayList(),r=new Ge(t,e);if(Ue(i,r,t,e,n),this._pointerSize&&!r.target){for(var o=[],a=this._pointerSize,s=a/2,l=new ze(t-s,e-s,a,a),u=i.length-1;u>=0;u--){var h=i[u];h===n||h.ignore||h.ignoreCoarsePointer||h.parent&&h.parent.ignoreCoarsePointer||(He.copy(h.getBoundingRect()),h.transform&&He.applyTransform(h.transform),He.intersect(l)&&o.push(h))}if(o.length)for(var c=Math.PI/12,p=2*Math.PI,d=0;d=0;o--){var a=t[o],s=void 0;if(a!==r&&!a.ignore&&(s=Xe(a,n,i))&&(!e.topTarget&&(e.topTarget=a),s!==Ve)){e.target=a;break}}}function Ze(t,e,n){var i=t.painter;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}E(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],(function(t){Ye.prototype[t]=function(e){var n,i,r=e.zrX,o=e.zrY,a=Ze(this,r,o);if("mouseup"===t&&a||(i=(n=this.findHover(r,o)).target),"mousedown"===t)this._downEl=i,this._downPoint=[e.zrX,e.zrY],this._upEl=i;else if("mouseup"===t)this._upEl=i;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||Vt(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}}));function je(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){for(;r=0;)r++;return r-e}function qe(t,e,n,i,r){for(i===e&&i++;i>>1])<0?l=o:s=o+1;var u=i-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=a}}function Ke(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])>0){for(s=i-r;l0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}for(a++;a>>1);o(t,e[n+h])>0?a=h+1:l=h}return l}function $e(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])<0){for(s=r+1;ls&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;l=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a>>1);o(t,e[n+h])<0?l=h:a=h+1}return l}function Je(t,e){var n,i,r=7,o=0,a=[];function s(s){var l=n[s],u=i[s],h=n[s+1],c=i[s+1];i[s]=u+c,s===o-3&&(n[s+1]=n[s+2],i[s+1]=i[s+2]),o--;var p=$e(t[h],t,l,u,0,e);l+=p,0!==(u-=p)&&0!==(c=Ke(t[l+u-1],t,h,c,c-1,e))&&(u<=c?function(n,i,o,s){var l=0;for(l=0;l=7||d>=7);if(f)break;g<0&&(g=0),g+=2}if((r=g)<1&&(r=1),1===i){for(l=0;l=0;l--)t[d+l]=t[p+l];return void(t[c]=a[h])}var f=r;for(;;){var g=0,y=0,v=!1;do{if(e(a[h],t[u])<0){if(t[c--]=t[u--],g++,y=0,0==--i){v=!0;break}}else if(t[c--]=a[h--],y++,g=0,1==--s){v=!0;break}}while((g|y)=0;l--)t[d+l]=t[p+l];if(0===i){v=!0;break}}if(t[c--]=a[h--],1==--s){v=!0;break}if(0!==(y=s-Ke(t[u],a,0,s,s-1,e))){for(s-=y,d=(c-=y)+1,p=(h-=y)+1,l=0;l=7||y>=7);if(v)break;f<0&&(f=0),f+=2}(r=f)<1&&(r=1);if(1===s){for(d=(c-=i)+1,p=(u-=i)+1,l=i-1;l>=0;l--)t[d+l]=t[p+l];t[c]=a[h]}else{if(0===s)throw new Error;for(p=c-(s-1),l=0;l1;){var t=o-2;if(t>=1&&i[t-1]<=i[t]+i[t+1]||t>=2&&i[t-2]<=i[t]+i[t-1])i[t-1]i[t+1])break;s(t)}},forceMergeRuns:function(){for(;o>1;){var t=o-2;t>0&&i[t-1]=32;)e|=1&t,t>>=1;return t+e}(r);do{if((o=je(t,n,i,e))s&&(l=s),qe(t,n,n+l,n+o,e),o=l}a.pushRun(n,o),a.mergeRuns(),r-=o,n+=o}while(0!==r);a.forceMergeRuns()}}}var tn=!1;function en(){tn||(tn=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function nn(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var rn=function(){function t(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=nn}return t.prototype.traverse=function(t,e){for(var n=0;n0&&(u.__clipPaths=[]),isNaN(u.z)&&(en(),u.z=0),isNaN(u.z2)&&(en(),u.z2=0),isNaN(u.zlevel)&&(en(),u.zlevel=0),this._displayList[this._displayListLen++]=u}var h=t.getDecalElement&&t.getDecalElement();h&&this._updateAndAddDisplayable(h,e,n);var c=t.getTextGuideLine();c&&this._updateAndAddDisplayable(c,e,n);var p=t.getTextContent();p&&this._updateAndAddDisplayable(p,e,n)}},t.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},t.prototype.delRoot=function(t){if(t instanceof Array)for(var e=0,n=t.length;e=0&&this._roots.splice(i,1)}},t.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},t.prototype.getRoots=function(){return this._roots},t.prototype.dispose=function(){this._displayList=null,this._roots=null},t}(),on=r.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){return setTimeout(t,16)},an={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=i*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-an.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*an.bounceIn(2*t):.5*an.bounceOut(2*t-1)+.5}},sn=Math.pow,ln=Math.sqrt,un=1e-8,hn=1e-4,cn=ln(3),pn=1/3,dn=Mt(),fn=Mt(),gn=Mt();function yn(t){return t>-1e-8&&tun||t<-1e-8}function mn(t,e,n,i,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*i+3*o*n)}function xn(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r*r)}function _n(t,e,n,i,r,o){var a=i+3*(e-n)-t,s=3*(n-2*e+t),l=3*(e-t),u=t-r,h=s*s-3*a*l,c=s*l-9*a*u,p=l*l-3*s*u,d=0;if(yn(h)&&yn(c)){if(yn(s))o[0]=0;else(M=-l/s)>=0&&M<=1&&(o[d++]=M)}else{var f=c*c-4*h*p;if(yn(f)){var g=c/h,y=-g/2;(M=-s/a+g)>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y)}else if(f>0){var v=ln(f),m=h*s+1.5*a*(-c+v),x=h*s+1.5*a*(-c-v);(M=(-s-((m=m<0?-sn(-m,pn):sn(m,pn))+(x=x<0?-sn(-x,pn):sn(x,pn))))/(3*a))>=0&&M<=1&&(o[d++]=M)}else{var _=(2*h*s-3*a*c)/(2*ln(h*h*h)),b=Math.acos(_)/3,w=ln(h),S=Math.cos(b),M=(-s-2*w*S)/(3*a),I=(y=(-s+w*(S+cn*Math.sin(b)))/(3*a),(-s+w*(S-cn*Math.sin(b)))/(3*a));M>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y),I>=0&&I<=1&&(o[d++]=I)}}return d}function bn(t,e,n,i,r){var o=6*n-12*e+6*t,a=9*e+3*i-3*t-9*n,s=3*e-3*t,l=0;if(yn(a)){if(vn(o))(h=-s/o)>=0&&h<=1&&(r[l++]=h)}else{var u=o*o-4*a*s;if(yn(u))r[0]=-o/(2*a);else if(u>0){var h,c=ln(u),p=(-o-c)/(2*a);(h=(-o+c)/(2*a))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}function wn(t,e,n,i,r,o){var a=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,u=(s-a)*r+a,h=(l-s)*r+s,c=(h-u)*r+u;o[0]=t,o[1]=a,o[2]=u,o[3]=c,o[4]=c,o[5]=h,o[6]=l,o[7]=i}function Sn(t,e,n,i,r,o,a,s,l,u,h){var c,p,d,f,g,y=.005,v=1/0;dn[0]=l,dn[1]=u;for(var m=0;m<1;m+=.05)fn[0]=mn(t,n,r,a,m),fn[1]=mn(e,i,o,s,m),(f=Ft(dn,fn))=0&&f=0&&y=1?1:_n(0,i,o,1,t,s)&&mn(0,r,a,1,s[0])}}}var On=function(){function t(t){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=t.loop||!1,this.onframe=t.onframe||bt,this.ondestroy=t.ondestroy||bt,this.onrestart=t.onrestart||bt,t.easing&&this.setEasing(t.easing)}return t.prototype.step=function(t,e){if(this._inited||(this._startTime=t+this._delay,this._inited=!0),!this._paused){var n=this._life,i=t-this._startTime-this._pausedTime,r=i/n;r<0&&(r=0),r=Math.min(r,1);var o=this.easingFunc,a=o?o(r):r;if(this.onframe(a),1===r){if(!this.loop)return!0;var s=i%n;this._startTime=t-s,this._pausedTime=0,this.onrestart()}return!1}this._pausedTime+=e},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){this._paused=!1},t.prototype.setEasing=function(t){this.easing=t,this.easingFunc=X(t)?t:an[t]||Pn(t)},t}(),Rn=function(t){this.value=t},Nn=function(){function t(){this._len=0}return t.prototype.insert=function(t){var e=new Rn(t);return this.insertEntry(e),e},t.prototype.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},t.prototype.remove=function(t){var e=t.prev,n=t.next;e?e.next=n:this.head=n,n?n.prev=e:this.tail=e,t.next=t.prev=null,this._len--},t.prototype.len=function(){return this._len},t.prototype.clear=function(){this.head=this.tail=null,this._len=0},t}(),En=function(){function t(t){this._list=new Nn,this._maxSize=10,this._map={},this._maxSize=t}return t.prototype.put=function(t,e){var n=this._list,i=this._map,r=null;if(null==i[t]){var o=n.len(),a=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var s=n.head;n.remove(s),delete i[s.key],r=s.value,this._lastRemovedEntry=s}a?a.value=e:a=new Rn(e),a.key=t,n.insertEntry(a),i[t]=a}return r},t.prototype.get=function(t){var e=this._map[t],n=this._list;if(null!=e)return e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value},t.prototype.clear=function(){this._list.clear(),this._map={}},t.prototype.len=function(){return this._list.len()},t}(),zn={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Vn(t){return(t=Math.round(t))<0?0:t>255?255:t}function Bn(t){return t<0?0:t>1?1:t}function Fn(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?Vn(parseFloat(e)/100*255):Vn(parseInt(e,10))}function Gn(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?Bn(parseFloat(e)/100):Bn(parseFloat(e))}function Wn(t,e,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}function Hn(t,e,n){return t+(e-t)*n}function Yn(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function Xn(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var Un=new En(20),Zn=null;function jn(t,e){Zn&&Xn(Zn,e),Zn=Un.put(t,Zn||e.slice())}function qn(t,e){if(t){e=e||[];var n=Un.get(t);if(n)return Xn(e,n);var i=(t+="").replace(/ /g,"").toLowerCase();if(i in zn)return Xn(e,zn[i]),jn(t,e),e;var r,o=i.length;if("#"===i.charAt(0))return 4===o||5===o?(r=parseInt(i.slice(1,4),16))>=0&&r<=4095?(Yn(e,(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,5===o?parseInt(i.slice(4),16)/15:1),jn(t,e),e):void Yn(e,0,0,0,1):7===o||9===o?(r=parseInt(i.slice(1,7),16))>=0&&r<=16777215?(Yn(e,(16711680&r)>>16,(65280&r)>>8,255&r,9===o?parseInt(i.slice(7),16)/255:1),jn(t,e),e):void Yn(e,0,0,0,1):void 0;var a=i.indexOf("("),s=i.indexOf(")");if(-1!==a&&s+1===o){var l=i.substr(0,a),u=i.substr(a+1,s-(a+1)).split(","),h=1;switch(l){case"rgba":if(4!==u.length)return 3===u.length?Yn(e,+u[0],+u[1],+u[2],1):Yn(e,0,0,0,1);h=Gn(u.pop());case"rgb":return u.length>=3?(Yn(e,Fn(u[0]),Fn(u[1]),Fn(u[2]),3===u.length?h:Gn(u[3])),jn(t,e),e):void Yn(e,0,0,0,1);case"hsla":return 4!==u.length?void Yn(e,0,0,0,1):(u[3]=Gn(u[3]),Kn(u,e),jn(t,e),e);case"hsl":return 3!==u.length?void Yn(e,0,0,0,1):(Kn(u,e),jn(t,e),e);default:return}}Yn(e,0,0,0,1)}}function Kn(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=Gn(t[1]),r=Gn(t[2]),o=r<=.5?r*(i+1):r+i-r*i,a=2*r-o;return Yn(e=e||[],Vn(255*Wn(a,o,n+1/3)),Vn(255*Wn(a,o,n)),Vn(255*Wn(a,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function $n(t,e){var n=qn(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,n[i]>255?n[i]=255:n[i]<0&&(n[i]=0);return ri(n,4===n.length?"rgba":"rgb")}}function Jn(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[];var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=e[r],s=e[o],l=i-r;return n[0]=Vn(Hn(a[0],s[0],l)),n[1]=Vn(Hn(a[1],s[1],l)),n[2]=Vn(Hn(a[2],s[2],l)),n[3]=Bn(Hn(a[3],s[3],l)),n}}var Qn=Jn;function ti(t,e,n){if(e&&e.length&&t>=0&&t<=1){var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=qn(e[r]),s=qn(e[o]),l=i-r,u=ri([Vn(Hn(a[0],s[0],l)),Vn(Hn(a[1],s[1],l)),Vn(Hn(a[2],s[2],l)),Bn(Hn(a[3],s[3],l))],"rgba");return n?{color:u,leftIndex:r,rightIndex:o,value:i}:u}}var ei=ti;function ni(t,e,n,i){var r=qn(t);if(t)return r=function(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(i,r,o),s=Math.max(i,r,o),l=s-a,u=(s+a)/2;if(0===l)e=0,n=0;else{n=u<.5?l/(s+a):l/(2-s-a);var h=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,p=((s-o)/6+l/2)/l;i===s?e=p-c:r===s?e=1/3+h-p:o===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var d=[360*e,n,u];return null!=t[3]&&d.push(t[3]),d}}(r),null!=e&&(r[0]=function(t){return(t=Math.round(t))<0?0:t>360?360:t}(e)),null!=n&&(r[1]=Gn(n)),null!=i&&(r[2]=Gn(i)),ri(Kn(r),"rgba")}function ii(t,e){var n=qn(t);if(n&&null!=e)return n[3]=Bn(e),ri(n,"rgba")}function ri(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}function oi(t,e){var n=qn(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*e:0}var ai=new En(100);function si(t){if(U(t)){var e=ai.get(t);return e||(e=$n(t,-.1),ai.put(t,e)),e}if(Q(t)){var n=A({},t);return n.colorStops=z(t.colorStops,(function(t){return{offset:t.offset,color:$n(t.color,-.1)}})),n}return t}var li=Object.freeze({__proto__:null,parse:qn,lift:$n,toHex:function(t){var e=qn(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)},fastLerp:Jn,fastMapToColor:Qn,lerp:ti,mapToColor:ei,modifyHSL:ni,modifyAlpha:ii,stringify:ri,lum:oi,random:function(){return ri([Math.round(255*Math.random()),Math.round(255*Math.random()),Math.round(255*Math.random())],"rgb")},liftColor:si}),ui=Math.round;function hi(t){var e;if(t&&"transparent"!==t){if("string"==typeof t&&t.indexOf("rgba")>-1){var n=qn(t);n&&(t="rgb("+n[0]+","+n[1]+","+n[2]+")",e=n[3])}}else t="none";return{color:t,opacity:null==e?1:e}}var ci=1e-4;function pi(t){return t-1e-4}function di(t){return ui(1e3*t)/1e3}function fi(t){return ui(1e4*t)/1e4}var gi={left:"start",right:"end",center:"middle",middle:"middle"};function yi(t){return t&&!!t.image}function vi(t){return yi(t)||function(t){return t&&!!t.svgElement}(t)}function mi(t){return"linear"===t.type}function xi(t){return"radial"===t.type}function _i(t){return t&&("linear"===t.type||"radial"===t.type)}function bi(t){return"url(#"+t+")"}function wi(t){var e=t.getGlobalScale(),n=Math.max(e[0],e[1]);return Math.max(Math.ceil(Math.log(n)/Math.log(10)),1)}function Si(t){var e=t.x||0,n=t.y||0,i=(t.rotation||0)*wt,r=rt(t.scaleX,1),o=rt(t.scaleY,1),a=t.skewX||0,s=t.skewY||0,l=[];return(e||n)&&l.push("translate("+e+"px,"+n+"px)"),i&&l.push("rotate("+i+")"),1===r&&1===o||l.push("scale("+r+","+o+")"),(a||s)&&l.push("skew("+ui(a*wt)+"deg, "+ui(s*wt)+"deg)"),l.join(" ")}var Mi=r.hasGlobalWindow&&X(window.btoa)?function(t){return window.btoa(unescape(encodeURIComponent(t)))}:"undefined"!=typeof Buffer?function(t){return Buffer.from(t).toString("base64")}:function(t){return null},Ii=Array.prototype.slice;function Ti(t,e,n){return(e-t)*n+t}function Ci(t,e,n,i){for(var r=e.length,o=0;oi?e:t,o=Math.min(n,i),a=r[o-1]||{color:[0,0,0,0],offset:0},s=o;sa)i.length=a;else for(var s=o;s=1},t.prototype.getAdditiveTrack=function(){return this._additiveTrack},t.prototype.addKeyframe=function(t,e,n){this._needsSort=!0;var i=this.keyframes,r=i.length,o=!1,a=6,s=e;if(N(e)){var l=function(t){return N(t&&t[0])?2:1}(e);a=l,(1===l&&!j(e[0])||2===l&&!j(e[0][0]))&&(o=!0)}else if(j(e)&&!nt(e))a=0;else if(U(e))if(isNaN(+e)){var u=qn(e);u&&(s=u,a=3)}else a=0;else if(Q(e)){var h=A({},s);h.colorStops=z(e.colorStops,(function(t){return{offset:t.offset,color:qn(t.color)}})),mi(e)?a=4:xi(e)&&(a=5),s=h}0===r?this.valType=a:a===this.valType&&6!==a||(o=!0),this.discrete=this.discrete||o;var c={time:t,value:s,rawValue:e,percent:0};return n&&(c.easing=n,c.easingFunc=X(n)?n:an[n]||Pn(n)),i.push(c),c},t.prototype.prepare=function(t,e){var n=this.keyframes;this._needsSort&&n.sort((function(t,e){return t.time-e.time}));for(var i=this.valType,r=n.length,o=n[r-1],a=this.discrete,s=Ni(i),l=Ri(i),u=0;u=0&&!(l[n].percent<=e);n--);n=d(n,u-2)}else{for(n=p;ne);n++);n=d(n-1,u-2)}r=l[n+1],i=l[n]}if(i&&r){this._lastFr=n,this._lastFrP=e;var f=r.percent-i.percent,g=0===f?1:d((e-i.percent)/f,1);r.easingFunc&&(g=r.easingFunc(g));var y=o?this._additiveValue:c?Ei:t[h];if(!Ni(s)&&!c||y||(y=this._additiveValue=[]),this.discrete)t[h]=g<1?i.rawValue:r.rawValue;else if(Ni(s))1===s?Ci(y,i[a],r[a],g):function(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a0&&s.addKeyframe(0,Pi(l),i),this._trackKeys.push(a)}s.addKeyframe(t,Pi(e[a]),i)}return this._maxTime=Math.max(this._maxTime,t),this},t.prototype.pause=function(){this._clip.pause(),this._paused=!0},t.prototype.resume=function(){this._clip.resume(),this._paused=!1},t.prototype.isPaused=function(){return!!this._paused},t.prototype.duration=function(t){return this._maxTime=t,this._force=!0,this},t.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneCbs;if(t)for(var e=t.length,n=0;n0)){this._started=1;for(var e=this,n=[],i=this._maxTime||0,r=0;r1){var a=o.pop();r.addKeyframe(a.time,t[i]),r.prepare(this._maxTime,r.getAdditiveTrack())}}}},t}();function Bi(){return(new Date).getTime()}var Fi,Gi,Wi=function(t){function e(e){var n=t.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,e=e||{},n.stage=e.stage||{},n}return n(e,t),e.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._head?(this._tail.next=t,t.prev=this._tail,t.next=null,this._tail=t):this._head=this._tail=t,t.animation=this},e.prototype.addAnimator=function(t){t.animation=this;var e=t.getClip();e&&this.addClip(e)},e.prototype.removeClip=function(t){if(t.animation){var e=t.prev,n=t.next;e?e.next=n:this._head=n,n?n.prev=e:this._tail=e,t.next=t.prev=t.animation=null}},e.prototype.removeAnimator=function(t){var e=t.getClip();e&&this.removeClip(e),t.animation=null},e.prototype.update=function(t){for(var e=Bi()-this._pausedTime,n=e-this._time,i=this._head;i;){var r=i.next;i.step(e,n)?(i.ondestroy(),this.removeClip(i),i=r):i=r}this._time=e,t||(this.trigger("frame",n),this.stage.update&&this.stage.update())},e.prototype._startLoop=function(){var t=this;this._running=!0,on((function e(){t._running&&(on(e),!t._paused&&t.update())}))},e.prototype.start=function(){this._running||(this._time=Bi(),this._pausedTime=0,this._startLoop())},e.prototype.stop=function(){this._running=!1},e.prototype.pause=function(){this._paused||(this._pauseStart=Bi(),this._paused=!0)},e.prototype.resume=function(){this._paused&&(this._pausedTime+=Bi()-this._pauseStart,this._paused=!1)},e.prototype.clear=function(){for(var t=this._head;t;){var e=t.next;t.prev=t.next=t.animation=null,t=e}this._head=this._tail=null},e.prototype.isFinished=function(){return null==this._head},e.prototype.animate=function(t,e){e=e||{},this.start();var n=new Vi(t,e.loop);return this.addAnimator(n),n},e}(jt),Hi=r.domSupported,Yi=(Gi={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},{mouse:Fi=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],touch:["touchstart","touchend","touchmove"],pointer:z(Fi,(function(t){var e=t.replace("mouse","pointer");return Gi.hasOwnProperty(e)?e:t}))}),Xi=["mousemove","mouseup"],Ui=["pointermove","pointerup"],Zi=!1;function ji(t){var e=t.pointerType;return"pen"===e||"touch"===e}function qi(t){t&&(t.zrByTouch=!0)}function Ki(t,e){for(var n=e,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr||n!==e&&n===t.painterRoot);)n=n.parentNode;return i}var $i=function(t,e){this.stopPropagation=bt,this.stopImmediatePropagation=bt,this.preventDefault=bt,this.type=e.type,this.target=this.currentTarget=t.dom,this.pointerType=e.pointerType,this.clientX=e.clientX,this.clientY=e.clientY},Ji={mousedown:function(t){t=ce(this.dom,t),this.__mayPointerCapture=[t.zrX,t.zrY],this.trigger("mousedown",t)},mousemove:function(t){t=ce(this.dom,t);var e=this.__mayPointerCapture;!e||t.zrX===e[0]&&t.zrY===e[1]||this.__togglePointerCapture(!0),this.trigger("mousemove",t)},mouseup:function(t){t=ce(this.dom,t),this.__togglePointerCapture(!1),this.trigger("mouseup",t)},mouseout:function(t){Ki(this,(t=ce(this.dom,t)).toElement||t.relatedTarget)||(this.__pointerCapturing&&(t.zrEventControl="no_globalout"),this.trigger("mouseout",t))},wheel:function(t){Zi=!0,t=ce(this.dom,t),this.trigger("mousewheel",t)},mousewheel:function(t){Zi||(t=ce(this.dom,t),this.trigger("mousewheel",t))},touchstart:function(t){qi(t=ce(this.dom,t)),this.__lastTouchMoment=new Date,this.handler.processGesture(t,"start"),Ji.mousemove.call(this,t),Ji.mousedown.call(this,t)},touchmove:function(t){qi(t=ce(this.dom,t)),this.handler.processGesture(t,"change"),Ji.mousemove.call(this,t)},touchend:function(t){qi(t=ce(this.dom,t)),this.handler.processGesture(t,"end"),Ji.mouseup.call(this,t),+new Date-+this.__lastTouchMoment<300&&Ji.click.call(this,t)},pointerdown:function(t){Ji.mousedown.call(this,t)},pointermove:function(t){ji(t)||Ji.mousemove.call(this,t)},pointerup:function(t){Ji.mouseup.call(this,t)},pointerout:function(t){ji(t)||Ji.mouseout.call(this,t)}};E(["click","dblclick","contextmenu"],(function(t){Ji[t]=function(e){e=ce(this.dom,e),this.trigger(t,e)}}));var Qi={pointermove:function(t){ji(t)||Qi.mousemove.call(this,t)},pointerup:function(t){Qi.mouseup.call(this,t)},mousemove:function(t){this.trigger("mousemove",t)},mouseup:function(t){var e=this.__pointerCapturing;this.__togglePointerCapture(!1),this.trigger("mouseup",t),e&&(t.zrEventControl="only_globalout",this.trigger("mouseout",t))}};function tr(t,e){var n=e.domHandlers;r.pointerEventsSupported?E(Yi.pointer,(function(i){nr(e,i,(function(e){n[i].call(t,e)}))})):(r.touchEventsSupported&&E(Yi.touch,(function(i){nr(e,i,(function(r){n[i].call(t,r),function(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTimer),t.touchTimer=null),t.touchTimer=setTimeout((function(){t.touching=!1,t.touchTimer=null}),700)}(e)}))})),E(Yi.mouse,(function(i){nr(e,i,(function(r){r=he(r),e.touching||n[i].call(t,r)}))})))}function er(t,e){function n(n){nr(e,n,(function(i){i=he(i),Ki(t,i.target)||(i=function(t,e){return ce(t.dom,new $i(t,e),!0)}(t,i),e.domHandlers[n].call(t,i))}),{capture:!0})}r.pointerEventsSupported?E(Ui,n):r.touchEventsSupported||E(Xi,n)}function nr(t,e,n,i){t.mounted[e]=n,t.listenerOpts[e]=i,pe(t.domTarget,e,n,i)}function ir(t){var e,n,i,r,o=t.mounted;for(var a in o)o.hasOwnProperty(a)&&(e=t.domTarget,n=a,i=o[a],r=t.listenerOpts[a],e.removeEventListener(n,i,r));t.mounted={}}var rr=function(t,e){this.mounted={},this.listenerOpts={},this.touching=!1,this.domTarget=t,this.domHandlers=e},or=function(t){function e(e,n){var i=t.call(this)||this;return i.__pointerCapturing=!1,i.dom=e,i.painterRoot=n,i._localHandlerScope=new rr(e,Ji),Hi&&(i._globalHandlerScope=new rr(document,Qi)),tr(i,i._localHandlerScope),i}return n(e,t),e.prototype.dispose=function(){ir(this._localHandlerScope),Hi&&ir(this._globalHandlerScope)},e.prototype.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},e.prototype.__togglePointerCapture=function(t){if(this.__mayPointerCapture=null,Hi&&+this.__pointerCapturing^+t){this.__pointerCapturing=t;var e=this._globalHandlerScope;t?er(this,e):ir(e)}},e}(jt),ar=1;r.hasGlobalWindow&&(ar=Math.max(window.devicePixelRatio||window.screen&&window.screen.deviceXDPI/window.screen.logicalXDPI||1,1));var sr=ar,lr="#333",ur="#ccc",hr=xe,cr=5e-5;function pr(t){return t>cr||t<-5e-5}var dr=[],fr=[],gr=[1,0,0,1,0,0],yr=Math.abs,vr=function(){function t(){}return t.prototype.getLocalTransform=function(e){return t.getLocalTransform(this,e)},t.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},t.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},t.prototype.setSkew=function(t){this.skewX=t[0],this.skewY=t[1]},t.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},t.prototype.needLocalTransform=function(){return pr(this.rotation)||pr(this.x)||pr(this.y)||pr(this.scaleX-1)||pr(this.scaleY-1)||pr(this.skewX)||pr(this.skewY)},t.prototype.updateTransform=function(){var t=this.parent&&this.parent.transform,e=this.needLocalTransform(),n=this.transform;e||t?(n=n||[1,0,0,1,0,0],e?this.getLocalTransform(n):hr(n),t&&(e?be(n,t,n):_e(n,t)),this.transform=n,this._resolveGlobalScaleRatio(n)):n&&(hr(n),this.invTransform=null)},t.prototype._resolveGlobalScaleRatio=function(t){var e=this.globalScaleRatio;if(null!=e&&1!==e){this.getGlobalScale(dr);var n=dr[0]<0?-1:1,i=dr[1]<0?-1:1,r=((dr[0]-n)*e+n)/dr[0]||0,o=((dr[1]-i)*e+i)/dr[1]||0;t[0]*=r,t[1]*=r,t[2]*=o,t[3]*=o}this.invTransform=this.invTransform||[1,0,0,1,0,0],Ie(this.invTransform,t)},t.prototype.getComputedTransform=function(){for(var t=this,e=[];t;)e.push(t),t=t.parent;for(;t=e.pop();)t.updateTransform();return this.transform},t.prototype.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],i=Math.atan2(t[1],t[0]),r=Math.PI/2+i-Math.atan2(t[3],t[2]);n=Math.sqrt(n)*Math.cos(r),e=Math.sqrt(e),this.skewX=r,this.skewY=0,this.rotation=-i,this.x=+t[4],this.y=+t[5],this.scaleX=e,this.scaleY=n,this.originX=0,this.originY=0}},t.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(t.invTransform=t.invTransform||[1,0,0,1,0,0],be(fr,t.invTransform,e),e=fr);var n=this.originX,i=this.originY;(n||i)&&(gr[4]=n,gr[5]=i,be(fr,e,gr),fr[4]-=n,fr[5]-=i,e=fr),this.setLocalTransform(e)}},t.prototype.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},t.prototype.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&Wt(n,n,i),n},t.prototype.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&Wt(n,n,i),n},t.prototype.getLineScale=function(){var t=this.transform;return t&&yr(t[0]-1)>1e-10&&yr(t[3]-1)>1e-10?Math.sqrt(yr(t[0]*t[3]-t[2]*t[1])):1},t.prototype.copyTransform=function(t){xr(this,t)},t.getLocalTransform=function(t,e){e=e||[];var n=t.originX||0,i=t.originY||0,r=t.scaleX,o=t.scaleY,a=t.anchorX,s=t.anchorY,l=t.rotation||0,u=t.x,h=t.y,c=t.skewX?Math.tan(t.skewX):0,p=t.skewY?Math.tan(-t.skewY):0;if(n||i||a||s){var d=n+a,f=i+s;e[4]=-d*r-c*f*o,e[5]=-f*o-p*d*r}else e[4]=e[5]=0;return e[0]=r,e[3]=o,e[1]=p*r,e[2]=c*o,l&&Se(e,e,l),e[4]+=n+u,e[5]+=i+h,e},t.initDefaultProps=function(){var e=t.prototype;e.scaleX=e.scaleY=e.globalScaleRatio=1,e.x=e.y=e.originX=e.originY=e.skewX=e.skewY=e.rotation=e.anchorX=e.anchorY=0}(),t}(),mr=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function xr(t,e){for(var n=0;n=0?parseFloat(t)/100*e:parseFloat(t):t}function Dr(t,e,n){var i=e.position||"inside",r=null!=e.distance?e.distance:5,o=n.height,a=n.width,s=o/2,l=n.x,u=n.y,h="left",c="top";if(i instanceof Array)l+=Cr(i[0],n.width),u+=Cr(i[1],n.height),h=null,c=null;else switch(i){case"left":l-=r,u+=s,h="right",c="middle";break;case"right":l+=r+a,u+=s,c="middle";break;case"top":l+=a/2,u-=r,h="center",c="bottom";break;case"bottom":l+=a/2,u+=o+r,h="center";break;case"inside":l+=a/2,u+=s,h="center",c="middle";break;case"insideLeft":l+=r,u+=s,c="middle";break;case"insideRight":l+=a-r,u+=s,h="right",c="middle";break;case"insideTop":l+=a/2,u+=r,h="center";break;case"insideBottom":l+=a/2,u+=o-r,h="center",c="bottom";break;case"insideTopLeft":l+=r,u+=r;break;case"insideTopRight":l+=a-r,u+=r,h="right";break;case"insideBottomLeft":l+=r,u+=o-r,c="bottom";break;case"insideBottomRight":l+=a-r,u+=o-r,h="right",c="bottom"}return(t=t||{}).x=l,t.y=u,t.align=h,t.verticalAlign=c,t}var Ar="__zr_normal__",kr=mr.concat(["ignore"]),Lr=V(mr,(function(t,e){return t[e]=!0,t}),{ignore:!1}),Pr={},Or=new ze(0,0,0,0),Rr=function(){function t(t){this.id=M(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return t.prototype._init=function(t){this.attr(t)},t.prototype.drift=function(t,e,n){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=e,this.decomposeTransform(),this.markRedraw()},t.prototype.beforeUpdate=function(){},t.prototype.afterUpdate=function(){},t.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},t.prototype.updateInnerText=function(t){var e=this._textContent;if(e&&(!e.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,r=e.innerTransformable,o=void 0,a=void 0,s=!1;r.parent=i?this:null;var l=!1;if(r.copyTransform(e),null!=n.position){var u=Or;n.layoutRect?u.copy(n.layoutRect):u.copy(this.getBoundingRect()),i||u.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(Pr,n,u):Dr(Pr,n,u),r.x=Pr.x,r.y=Pr.y,o=Pr.align,a=Pr.verticalAlign;var h=n.origin;if(h&&null!=n.rotation){var c=void 0,p=void 0;"center"===h?(c=.5*u.width,p=.5*u.height):(c=Cr(h[0],u.width),p=Cr(h[1],u.height)),l=!0,r.originX=-r.x+c+(i?0:u.x),r.originY=-r.y+p+(i?0:u.y)}}null!=n.rotation&&(r.rotation=n.rotation);var d=n.offset;d&&(r.x+=d[0],r.y+=d[1],l||(r.originX=-d[0],r.originY=-d[1]));var f=null==n.inside?"string"==typeof n.position&&n.position.indexOf("inside")>=0:n.inside,g=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),y=void 0,v=void 0,m=void 0;f&&this.canBeInsideText()?(y=n.insideFill,v=n.insideStroke,null!=y&&"auto"!==y||(y=this.getInsideTextFill()),null!=v&&"auto"!==v||(v=this.getInsideTextStroke(y),m=!0)):(y=n.outsideFill,v=n.outsideStroke,null!=y&&"auto"!==y||(y=this.getOutsideFill()),null!=v&&"auto"!==v||(v=this.getOutsideStroke(y),m=!0)),(y=y||"#000")===g.fill&&v===g.stroke&&m===g.autoStroke&&o===g.align&&a===g.verticalAlign||(s=!0,g.fill=y,g.stroke=v,g.autoStroke=m,g.align=o,g.verticalAlign=a,e.setDefaultTextStyle(g)),e.__dirty|=1,s&&e.dirtyStyle(!0)}},t.prototype.canBeInsideText=function(){return!0},t.prototype.getInsideTextFill=function(){return"#fff"},t.prototype.getInsideTextStroke=function(t){return"#000"},t.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?ur:lr},t.prototype.getOutsideStroke=function(t){var e=this.__zr&&this.__zr.getBackgroundColor(),n="string"==typeof e&&qn(e);n||(n=[255,255,255,1]);for(var i=n[3],r=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*i+(r?0:255)*(1-i);return n[3]=1,ri(n,"rgba")},t.prototype.traverse=function(t,e){},t.prototype.attrKV=function(t,e){"textConfig"===t?this.setTextConfig(e):"textContent"===t?this.setTextContent(e):"clipPath"===t?this.setClipPath(e):"extra"===t?(this.extra=this.extra||{},A(this.extra,e)):this[t]=e},t.prototype.hide=function(){this.ignore=!0,this.markRedraw()},t.prototype.show=function(){this.ignore=!1,this.markRedraw()},t.prototype.attr=function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(q(t))for(var n=G(t),i=0;i0},t.prototype.getState=function(t){return this.states[t]},t.prototype.ensureState=function(t){var e=this.states;return e[t]||(e[t]={}),e[t]},t.prototype.clearStates=function(t){this.useState(Ar,!1,t)},t.prototype.useState=function(t,e,n,i){var r=t===Ar;if(this.hasState()||!r){var o=this.currentStates,a=this.stateTransition;if(!(P(o,t)>=0)||!e&&1!==o.length){var s;if(this.stateProxy&&!r&&(s=this.stateProxy(t)),s||(s=this.states&&this.states[t]),s||r){r||this.saveCurrentToNormalState(s);var l=!!(s&&s.hoverLayer||i);l&&this._toggleHoverLayerFlag(!0),this._applyStateObj(t,s,this._normalState,e,!n&&!this.__inHover&&a&&a.duration>0,a);var u=this._textContent,h=this._textGuide;return u&&u.useState(t,e,n,l),h&&h.useState(t,e,n,l),r?(this.currentStates=[],this._normalState={}):e?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!l&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2),s}I("State "+t+" not exists.")}}},t.prototype.useStates=function(t,e,n){if(t.length){var i=[],r=this.currentStates,o=t.length,a=o===r.length;if(a)for(var s=0;s0,d);var f=this._textContent,g=this._textGuide;f&&f.useStates(t,e,c),g&&g.useStates(t,e,c),this._updateAnimationTargets(),this.currentStates=t.slice(),this.markRedraw(),!c&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2)}else this.clearStates()},t.prototype.isSilent=function(){for(var t=this.silent,e=this.parent;!t&&e;){if(e.silent){t=!0;break}e=e.parent}return t},t.prototype._updateAnimationTargets=function(){for(var t=0;t=0){var n=this.currentStates.slice();n.splice(e,1),this.useStates(n)}},t.prototype.replaceState=function(t,e,n){var i=this.currentStates.slice(),r=P(i,t),o=P(i,e)>=0;r>=0?o?i.splice(r,1):i[r]=e:n&&!o&&i.push(e),this.useStates(i)},t.prototype.toggleState=function(t,e){e?this.useState(t,!0):this.removeState(t)},t.prototype._mergeStates=function(t){for(var e,n={},i=0;i=0&&e.splice(n,1)})),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},t.prototype.updateDuringAnimation=function(t){this.markRedraw()},t.prototype.stopAnimation=function(t,e){for(var n=this.animators,i=n.length,r=[],o=0;o0&&n.during&&o[0].during((function(t,e){n.during(e)}));for(var p=0;p0||r.force&&!a.length){var w,S=void 0,M=void 0,I=void 0;if(s){M={},p&&(S={});for(_=0;_=0&&(n.splice(i,0,t),this._doAdd(t))}return this},e.prototype.replace=function(t,e){var n=P(this._children,t);return n>=0&&this.replaceAt(e,n),this},e.prototype.replaceAt=function(t,e){var n=this._children,i=n[e];if(t&&t!==this&&t.parent!==this&&t!==i){n[e]=t,i.parent=null;var r=this.__zr;r&&i.removeSelfFromZr(r),this._doAdd(t)}return this},e.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__zr;e&&e!==t.__zr&&t.addSelfToZr(e),e&&e.refresh()},e.prototype.remove=function(t){var e=this.__zr,n=this._children,i=P(n,t);return i<0||(n.splice(i,1),t.parent=null,e&&t.removeSelfFromZr(e),e&&e.refresh()),this},e.prototype.removeAll=function(){for(var t=this._children,e=this.__zr,n=0;n0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},t.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},t.prototype.wakeUp=function(){this._disposed||(this.animation.start(),this._stillFrameAccum=0)},t.prototype.refreshHover=function(){this._needsRefreshHover=!0},t.prototype.refreshHoverImmediately=function(){this._disposed||(this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover())},t.prototype.resize=function(t){this._disposed||(t=t||{},this.painter.resize(t.width,t.height),this.handler.resize())},t.prototype.clearAnimation=function(){this._disposed||this.animation.clear()},t.prototype.getWidth=function(){if(!this._disposed)return this.painter.getWidth()},t.prototype.getHeight=function(){if(!this._disposed)return this.painter.getHeight()},t.prototype.setCursorStyle=function(t){this._disposed||this.handler.setCursorStyle(t)},t.prototype.findHover=function(t,e){if(!this._disposed)return this.handler.findHover(t,e)},t.prototype.on=function(t,e,n){return this._disposed||this.handler.on(t,e,n),this},t.prototype.off=function(t,e){this._disposed||this.handler.off(t,e)},t.prototype.trigger=function(t,e){this._disposed||this.handler.trigger(t,e)},t.prototype.clear=function(){if(!this._disposed){for(var t=this.storage.getRoots(),e=0;e0){if(t<=r)return a;if(t>=o)return s}else{if(t>=r)return a;if(t<=o)return s}else{if(t===r)return a;if(t===o)return s}return(t-r)/l*u+a}function $r(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return U(t)?(n=t,n.replace(/^\s+|\s+$/g,"")).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t;var n}function Jr(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t}function Qr(t){return t.sort((function(t,e){return t-e})),t}function to(t){if(t=+t,isNaN(t))return 0;if(t>1e-14)for(var e=1,n=0;n<15;n++,e*=10)if(Math.round(t*e)/e===t)return n;return eo(t)}function eo(t){var e=t.toString().toLowerCase(),n=e.indexOf("e"),i=n>0?+e.slice(n+1):0,r=n>0?n:e.length,o=e.indexOf("."),a=o<0?0:r-1-o;return Math.max(0,a-i)}function no(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),o=Math.round(n(Math.abs(e[1]-e[0]))/i),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20}function io(t,e){var n=V(t,(function(t,e){return t+(isNaN(e)?0:e)}),0);if(0===n)return[];for(var i=Math.pow(10,e),r=z(t,(function(t){return(isNaN(t)?0:t)/n*i*100})),o=100*i,a=z(r,(function(t){return Math.floor(t)})),s=V(a,(function(t,e){return t+e}),0),l=z(r,(function(t,e){return t-a[e]}));su&&(u=l[c],h=c);++a[h],l[h]=0,++s}return z(a,(function(t){return t/i}))}function ro(t,e){var n=Math.max(to(t),to(e)),i=t+e;return n>20?i:Jr(i,n)}var oo=9007199254740991;function ao(t){var e=2*Math.PI;return(t%e+e)%e}function so(t){return t>-1e-4&&t=10&&e++,e}function po(t,e){var n=co(t),i=Math.pow(10,n),r=t/i;return t=(e?r<1.5?1:r<2.5?2:r<4?3:r<7?5:10:r<1?1:r<2?2:r<3?3:r<5?5:10)*i,n>=-20?+t.toFixed(n<0?-n:0):t}function fo(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r}function go(t){t.sort((function(t,e){return s(t,e,0)?-1:1}));for(var e=-1/0,n=1,i=0;i=0||r&&P(r,s)<0)){var l=n.getShallow(s,e);null!=l&&(o[t[a][0]]=l)}}return o}}var ra=ia([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),oa=function(){function t(){}return t.prototype.getAreaStyle=function(t,e){return ra(this,t,e)},t}(),aa=new En(50);function sa(t){if("string"==typeof t){var e=aa.get(t);return e&&e.image}return t}function la(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!n)return e;var o=aa.get(t),a={hostEl:n,cb:i,cbPayload:r};return o?!ha(e=o.image)&&o.pending.push(a):((e=h.loadImage(t,ua,ua)).__zrImageSrc=t,aa.put(t,e.__cachedImgObj={image:e,pending:[a]})),e}return t}return e}function ua(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e=a;l++)s-=a;var u=br(n,e);return u>s&&(n="",u=0),s=t-u,r.ellipsis=n,r.ellipsisWidth=u,r.contentWidth=s,r.containerWidth=t,r}function fa(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)return"";var o=br(t,i);if(o<=n)return t;for(var a=0;;a++){if(o<=r||a>=e.maxIterations){t+=e.ellipsis;break}var s=0===a?ga(t,r,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*r/o):0;o=br(t=t.substr(0,s),i)}return""===t&&(t=e.placeholder),t}function ga(t,e,n,i){for(var r=0,o=0,a=t.length;o0&&f+i.accumWidth>i.width&&(o=e.split("\n"),c=!0),i.accumWidth=f}else{var g=wa(e,h,i.width,i.breakAll,i.accumWidth);i.accumWidth=g.accumWidth+d,a=g.linesWidths,o=g.lines}}else o=e.split("\n");for(var y=0;y=32&&e<=591||e>=880&&e<=4351||e>=4608&&e<=5119||e>=7680&&e<=8303}(t)||!!_a[t]}function wa(t,e,n,i,r){for(var o=[],a=[],s="",l="",u=0,h=0,c=0;cn:r+h+d>n)?h?(s||l)&&(f?(s||(s=l,l="",h=u=0),o.push(s),a.push(h-u),l+=p,s="",h=u+=d):(l&&(s+=l,l="",u=0),o.push(s),a.push(h),s=p,h=d)):f?(o.push(l),a.push(u),l=p,u=d):(o.push(p),a.push(d)):(h+=d,f?(l+=p,u+=d):(l&&(s+=l,l="",u=0),s+=p))}else l&&(s+=l,h+=u),o.push(s),a.push(h),s="",l="",u=0,h=0}return o.length||s||(s=t,l="",u=0),l&&(s+=l),s&&(o.push(s),a.push(h)),1===o.length&&(h+=r),{accumWidth:h,lines:o,linesWidths:a}}var Sa="__zr_style_"+Math.round(10*Math.random()),Ma={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},Ia={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};Ma[Sa]=!0;var Ta=["z","z2","invisible"],Ca=["invisible"],Da=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype._init=function(e){for(var n=G(e),i=0;i1e-4)return s[0]=t-n,s[1]=e-i,l[0]=t+n,void(l[1]=e+i);if(Ea[0]=Ra(r)*n+t,Ea[1]=Oa(r)*i+e,za[0]=Ra(o)*n+t,za[1]=Oa(o)*i+e,u(s,Ea,za),h(l,Ea,za),(r%=Na)<0&&(r+=Na),(o%=Na)<0&&(o+=Na),r>o&&!a?o+=Na:rr&&(Va[0]=Ra(d)*n+t,Va[1]=Oa(d)*i+e,u(s,Va,s),h(l,Va,l))}var Ua={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Za=[],ja=[],qa=[],Ka=[],$a=[],Ja=[],Qa=Math.min,ts=Math.max,es=Math.cos,ns=Math.sin,is=Math.abs,rs=Math.PI,os=2*rs,as="undefined"!=typeof Float32Array,ss=[];function ls(t){return Math.round(t/rs*1e8)/1e8%2*rs}function us(t,e){var n=ls(t[0]);n<0&&(n+=os);var i=n-t[0],r=t[1];r+=i,!e&&r-n>=os?r=n+os:e&&n-r>=os?r=n-os:!e&&n>r?r=n+(os-ls(n-r)):e&&n0&&(this._ux=is(n/sr/t)||0,this._uy=is(n/sr/e)||0)},t.prototype.setDPR=function(t){this.dpr=t},t.prototype.setContext=function(t){this._ctx=t},t.prototype.getContext=function(){return this._ctx},t.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},t.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},t.prototype.moveTo=function(t,e){return this._drawPendingPt(),this.addData(Ua.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},t.prototype.lineTo=function(t,e){var n=is(t-this._xi),i=is(e-this._yi),r=n>this._ux||i>this._uy;if(this.addData(Ua.L,t,e),this._ctx&&r&&this._ctx.lineTo(t,e),r)this._xi=t,this._yi=e,this._pendingPtDist=0;else{var o=n*n+i*i;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=e,this._pendingPtDist=o)}return this},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){return this._drawPendingPt(),this.addData(Ua.C,t,e,n,i,r,o),this._ctx&&this._ctx.bezierCurveTo(t,e,n,i,r,o),this._xi=r,this._yi=o,this},t.prototype.quadraticCurveTo=function(t,e,n,i){return this._drawPendingPt(),this.addData(Ua.Q,t,e,n,i),this._ctx&&this._ctx.quadraticCurveTo(t,e,n,i),this._xi=n,this._yi=i,this},t.prototype.arc=function(t,e,n,i,r,o){this._drawPendingPt(),ss[0]=i,ss[1]=r,us(ss,o),i=ss[0];var a=(r=ss[1])-i;return this.addData(Ua.A,t,e,n,n,i,a,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=es(r)*n+t,this._yi=ns(r)*n+e,this},t.prototype.arcTo=function(t,e,n,i,r){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},t.prototype.rect=function(t,e,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,e,n,i),this.addData(Ua.R,t,e,n,i),this},t.prototype.closePath=function(){this._drawPendingPt(),this.addData(Ua.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&t.closePath(),this._xi=e,this._yi=n,this},t.prototype.fill=function(t){t&&t.fill(),this.toStatic()},t.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},t.prototype.len=function(){return this._len},t.prototype.setData=function(t){var e=t.length;this.data&&this.data.length===e||!as||(this.data=new Float32Array(e));for(var n=0;nu.length&&(this._expandData(),u=this.data);for(var h=0;h0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},t.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],e=0;e11&&(this.data=new Float32Array(t)))}},t.prototype.getBoundingRect=function(){qa[0]=qa[1]=$a[0]=$a[1]=Number.MAX_VALUE,Ka[0]=Ka[1]=Ja[0]=Ja[1]=-Number.MAX_VALUE;var t,e=this.data,n=0,i=0,r=0,o=0;for(t=0;tn||is(y)>i||c===e-1)&&(f=Math.sqrt(A*A+y*y),r=g,o=x);break;case Ua.C:var v=t[c++],m=t[c++],x=(g=t[c++],t[c++]),_=t[c++],b=t[c++];f=Mn(r,o,v,m,g,x,_,b,10),r=_,o=b;break;case Ua.Q:f=kn(r,o,v=t[c++],m=t[c++],g=t[c++],x=t[c++],10),r=g,o=x;break;case Ua.A:var w=t[c++],S=t[c++],M=t[c++],I=t[c++],T=t[c++],C=t[c++],D=C+T;c+=1,d&&(a=es(T)*M+w,s=ns(T)*I+S),f=ts(M,I)*Qa(os,Math.abs(C)),r=es(D)*M+w,o=ns(D)*I+S;break;case Ua.R:a=r=t[c++],s=o=t[c++],f=2*t[c++]+2*t[c++];break;case Ua.Z:var A=a-r;y=s-o;f=Math.sqrt(A*A+y*y),r=a,o=s}f>=0&&(l[h++]=f,u+=f)}return this._pathLen=u,u},t.prototype.rebuildPath=function(t,e){var n,i,r,o,a,s,l,u,h,c,p=this.data,d=this._ux,f=this._uy,g=this._len,y=e<1,v=0,m=0,x=0;if(!y||(this._pathSegLen||this._calculateLength(),l=this._pathSegLen,u=e*this._pathLen))t:for(var _=0;_0&&(t.lineTo(h,c),x=0),b){case Ua.M:n=r=p[_++],i=o=p[_++],t.moveTo(r,o);break;case Ua.L:a=p[_++],s=p[_++];var S=is(a-r),M=is(s-o);if(S>d||M>f){if(y){if(v+(j=l[m++])>u){var I=(u-v)/j;t.lineTo(r*(1-I)+a*I,o*(1-I)+s*I);break t}v+=j}t.lineTo(a,s),r=a,o=s,x=0}else{var T=S*S+M*M;T>x&&(h=a,c=s,x=T)}break;case Ua.C:var C=p[_++],D=p[_++],A=p[_++],k=p[_++],L=p[_++],P=p[_++];if(y){if(v+(j=l[m++])>u){wn(r,C,A,L,I=(u-v)/j,Za),wn(o,D,k,P,I,ja),t.bezierCurveTo(Za[1],ja[1],Za[2],ja[2],Za[3],ja[3]);break t}v+=j}t.bezierCurveTo(C,D,A,k,L,P),r=L,o=P;break;case Ua.Q:C=p[_++],D=p[_++],A=p[_++],k=p[_++];if(y){if(v+(j=l[m++])>u){Dn(r,C,A,I=(u-v)/j,Za),Dn(o,D,k,I,ja),t.quadraticCurveTo(Za[1],ja[1],Za[2],ja[2]);break t}v+=j}t.quadraticCurveTo(C,D,A,k),r=A,o=k;break;case Ua.A:var O=p[_++],R=p[_++],N=p[_++],E=p[_++],z=p[_++],V=p[_++],B=p[_++],F=!p[_++],G=N>E?N:E,W=is(N-E)>.001,H=z+V,Y=!1;if(y)v+(j=l[m++])>u&&(H=z+V*(u-v)/j,Y=!0),v+=j;if(W&&t.ellipse?t.ellipse(O,R,N,E,B,z,H,F):t.arc(O,R,G,z,H,F),Y)break t;w&&(n=es(z)*N+O,i=ns(z)*E+R),r=es(H)*N+O,o=ns(H)*E+R;break;case Ua.R:n=r=p[_],i=o=p[_+1],a=p[_++],s=p[_++];var X=p[_++],U=p[_++];if(y){if(v+(j=l[m++])>u){var Z=u-v;t.moveTo(a,s),t.lineTo(a+Qa(Z,X),s),(Z-=X)>0&&t.lineTo(a+X,s+Qa(Z,U)),(Z-=U)>0&&t.lineTo(a+ts(X-Z,0),s+U),(Z-=X)>0&&t.lineTo(a,s+ts(U-Z,0));break t}v+=j}t.rect(a,s,X,U);break;case Ua.Z:if(y){var j;if(v+(j=l[m++])>u){I=(u-v)/j;t.lineTo(r*(1-I)+n*I,o*(1-I)+i*I);break t}v+=j}t.closePath(),r=n,o=i}}},t.prototype.clone=function(){var e=new t,n=this.data;return e.data=n.slice?n.slice():Array.prototype.slice.call(n),e._len=this._len,e},t.CMD=Ua,t.initDefaultProps=function(){var e=t.prototype;e._saveData=!0,e._ux=0,e._uy=0,e._pendingPtDist=0,e._version=0}(),t}();function cs(t,e,n,i,r,o,a){if(0===r)return!1;var s=r,l=0;if(a>e+s&&a>i+s||at+s&&o>n+s||oe+c&&h>i+c&&h>o+c&&h>s+c||ht+c&&u>n+c&&u>r+c&&u>a+c||ue+u&&l>i+u&&l>o+u||lt+u&&s>n+u&&s>r+u||sn||h+ur&&(r+=ys);var p=Math.atan2(l,s);return p<0&&(p+=ys),p>=i&&p<=r||p+ys>=i&&p+ys<=r}function ms(t,e,n,i,r,o){if(o>e&&o>i||or?s:0}var xs=hs.CMD,_s=2*Math.PI;var bs=[-1,-1,-1],ws=[-1,-1];function Ss(t,e,n,i,r,o,a,s,l,u){if(u>e&&u>i&&u>o&&u>s||u1&&(h=void 0,h=ws[0],ws[0]=ws[1],ws[1]=h),f=mn(e,i,o,s,ws[0]),d>1&&(g=mn(e,i,o,s,ws[1]))),2===d?ve&&s>i&&s>o||s=0&&h<=1&&(r[l++]=h);else{var u=a*a-4*o*s;if(yn(u))(h=-a/(2*o))>=0&&h<=1&&(r[l++]=h);else if(u>0){var h,c=ln(u),p=(-a-c)/(2*o);(h=(-a+c)/(2*o))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}(e,i,o,s,bs);if(0===l)return 0;var u=Cn(e,i,o);if(u>=0&&u<=1){for(var h=0,c=In(e,i,o,u),p=0;pn||s<-n)return 0;var l=Math.sqrt(n*n-s*s);bs[0]=-l,bs[1]=l;var u=Math.abs(i-r);if(u<1e-4)return 0;if(u>=_s-1e-4){i=0,r=_s;var h=o?1:-1;return a>=bs[0]+t&&a<=bs[1]+t?h:0}if(i>r){var c=i;i=r,r=c}i<0&&(i+=_s,r+=_s);for(var p=0,d=0;d<2;d++){var f=bs[d];if(f+t>a){var g=Math.atan2(s,f);h=o?1:-1;g<0&&(g=_s+g),(g>=i&&g<=r||g+_s>=i&&g+_s<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),p+=h)}}return p}function Ts(t,e,n,i,r){for(var o,a,s,l,u=t.data,h=t.len(),c=0,p=0,d=0,f=0,g=0,y=0;y1&&(n||(c+=ms(p,d,f,g,i,r))),m&&(f=p=u[y],g=d=u[y+1]),v){case xs.M:p=f=u[y++],d=g=u[y++];break;case xs.L:if(n){if(cs(p,d,u[y],u[y+1],e,i,r))return!0}else c+=ms(p,d,u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case xs.C:if(n){if(ps(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=Ss(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case xs.Q:if(n){if(ds(p,d,u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=Ms(p,d,u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case xs.A:var x=u[y++],_=u[y++],b=u[y++],w=u[y++],S=u[y++],M=u[y++];y+=1;var I=!!(1-u[y++]);o=Math.cos(S)*b+x,a=Math.sin(S)*w+_,m?(f=o,g=a):c+=ms(p,d,o,a,i,r);var T=(i-x)*w/b+x;if(n){if(vs(x,_,w,S,S+M,I,e,T,r))return!0}else c+=Is(x,_,w,S,S+M,I,T,r);p=Math.cos(S+M)*b+x,d=Math.sin(S+M)*w+_;break;case xs.R:if(f=p=u[y++],g=d=u[y++],o=f+u[y++],a=g+u[y++],n){if(cs(f,g,o,g,e,i,r)||cs(o,g,o,a,e,i,r)||cs(o,a,f,a,e,i,r)||cs(f,a,f,g,e,i,r))return!0}else c+=ms(o,g,o,a,i,r),c+=ms(f,a,f,g,i,r);break;case xs.Z:if(n){if(cs(p,d,f,g,e,i,r))return!0}else c+=ms(p,d,f,g,i,r);p=f,d=g}}return n||(s=d,l=g,Math.abs(s-l)<1e-4)||(c+=ms(p,d,f,g,i,r)||0),0!==c}var Cs=k({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},Ma),Ds={style:k({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},Ia.style)},As=mr.concat(["invisible","culling","z","z2","zlevel","parent"]),ks=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype.update=function(){var n=this;t.prototype.update.call(this);var i=this.style;if(i.decal){var r=this._decalEl=this._decalEl||new e;r.buildPath===e.prototype.buildPath&&(r.buildPath=function(t){n.buildPath(t,n.shape)}),r.silent=!0;var o=r.style;for(var a in i)o[a]!==i[a]&&(o[a]=i[a]);o.fill=i.fill?i.decal:null,o.decal=null,o.shadowColor=null,i.strokeFirst&&(o.stroke=null);for(var s=0;s.5?lr:e>.2?"#eee":ur}if(t)return ur}return lr},e.prototype.getInsideTextStroke=function(t){var e=this.style.fill;if(U(e)){var n=this.__zr;if(!(!n||!n.isDarkMode())===oi(t,0)<.4)return e}},e.prototype.buildPath=function(t,e,n){},e.prototype.pathUpdated=function(){this.__dirty&=-5},e.prototype.getUpdatedPathProxy=function(t){return!this.path&&this.createPathProxy(),this.path.beginPath(),this.buildPath(this.path,this.shape,t),this.path},e.prototype.createPathProxy=function(){this.path=new hs(!1)},e.prototype.hasStroke=function(){var t=this.style,e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.getBoundingRect=function(){var t=this._rect,e=this.style,n=!t;if(n){var i=!1;this.path||(i=!0,this.createPathProxy());var r=this.path;(i||4&this.__dirty)&&(r.beginPath(),this.buildPath(r,this.shape,!1),this.pathUpdated()),t=r.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var o=this._rectStroke||(this._rectStroke=t.clone());if(this.__dirty||n){o.copy(t);var a=e.strokeNoScale?this.getLineScale():1,s=e.lineWidth;if(!this.hasFill()){var l=this.strokeContainThreshold;s=Math.max(s,null==l?4:l)}a>1e-10&&(o.width+=s/a,o.height+=s/a,o.x-=s/a/2,o.y-=s/a/2)}return o}return t},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect(),r=this.style;if(t=n[0],e=n[1],i.contain(t,e)){var o=this.path;if(this.hasStroke()){var a=r.lineWidth,s=r.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),function(t,e,n,i){return Ts(t,e,!0,n,i)}(o,a/s,t,e)))return!0}if(this.hasFill())return function(t,e,n){return Ts(t,0,!1,e,n)}(o,t,e)}return!1},e.prototype.dirtyShape=function(){this.__dirty|=4,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},e.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},e.prototype.animateShape=function(t){return this.animate("shape",t)},e.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},e.prototype.attrKV=function(e,n){"shape"===e?this.setShape(n):t.prototype.attrKV.call(this,e,n)},e.prototype.setShape=function(t,e){var n=this.shape;return n||(n=this.shape={}),"string"==typeof t?n[t]=e:A(n,t),this.dirtyShape(),this},e.prototype.shapeChanged=function(){return!!(4&this.__dirty)},e.prototype.createStyle=function(t){return mt(Cs,t)},e.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.shape&&!n.shape&&(n.shape=A({},this.shape))},e.prototype._applyStateObj=function(e,n,i,r,o,a){t.prototype._applyStateObj.call(this,e,n,i,r,o,a);var s,l=!(n&&r);if(n&&n.shape?o?r?s=n.shape:(s=A({},i.shape),A(s,n.shape)):(s=A({},r?this.shape:i.shape),A(s,n.shape)):l&&(s=i.shape),s)if(o){this.shape=A({},this.shape);for(var u={},h=G(s),c=0;c0},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.createStyle=function(t){return mt(Ls,t)},e.prototype.setBoundingRect=function(t){this._rect=t},e.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var e=t.text;null!=e?e+="":e="";var n=Sr(e,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var i=t.lineWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect},e.initDefaultProps=void(e.prototype.dirtyRectTolerance=10),e}(Da);Ps.prototype.type="tspan";var Os=k({x:0,y:0},Ma),Rs={style:k({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},Ia.style)};var Ns=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.createStyle=function(t){return mt(Os,t)},e.prototype._getSize=function(t){var e=this.style,n=e[t];if(null!=n)return n;var i,r=(i=e.image)&&"string"!=typeof i&&i.width&&i.height?e.image:this.__image;if(!r)return 0;var o="width"===t?"height":"width",a=e[o];return null==a?r[t]:r[t]/r[o]*a},e.prototype.getWidth=function(){return this._getSize("width")},e.prototype.getHeight=function(){return this._getSize("height")},e.prototype.getAnimationStyleProps=function(){return Rs},e.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new ze(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},e}(Da);Ns.prototype.type="image";var Es=Math.round;function zs(t,e,n){if(e){var i=e.x1,r=e.x2,o=e.y1,a=e.y2;t.x1=i,t.x2=r,t.y1=o,t.y2=a;var s=n&&n.lineWidth;return s?(Es(2*i)===Es(2*r)&&(t.x1=t.x2=Bs(i,s,!0)),Es(2*o)===Es(2*a)&&(t.y1=t.y2=Bs(o,s,!0)),t):t}}function Vs(t,e,n){if(e){var i=e.x,r=e.y,o=e.width,a=e.height;t.x=i,t.y=r,t.width=o,t.height=a;var s=n&&n.lineWidth;return s?(t.x=Bs(i,s,!0),t.y=Bs(r,s,!0),t.width=Math.max(Bs(i+o,s,!1)-t.x,0===o?0:1),t.height=Math.max(Bs(r+a,s,!1)-t.y,0===a?0:1),t):t}}function Bs(t,e,n){if(!e)return t;var i=Es(2*t);return(i+Es(e))%2==0?i/2:(i+(n?1:-1))/2}var Fs=function(){this.x=0,this.y=0,this.width=0,this.height=0},Gs={},Ws=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Fs},e.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=Vs(Gs,e,this.style);n=a.x,i=a.y,r=a.width,o=a.height,a.r=e.r,e=a}else n=e.x,i=e.y,r=e.width,o=e.height;e.r?function(t,e){var n,i,r,o,a,s=e.x,l=e.y,u=e.width,h=e.height,c=e.r;u<0&&(s+=u,u=-u),h<0&&(l+=h,h=-h),"number"==typeof c?n=i=r=o=c:c instanceof Array?1===c.length?n=i=r=o=c[0]:2===c.length?(n=r=c[0],i=o=c[1]):3===c.length?(n=c[0],i=o=c[1],r=c[2]):(n=c[0],i=c[1],r=c[2],o=c[3]):n=i=r=o=0,n+i>u&&(n*=u/(a=n+i),i*=u/a),r+o>u&&(r*=u/(a=r+o),o*=u/a),i+r>h&&(i*=h/(a=i+r),r*=h/a),n+o>h&&(n*=h/(a=n+o),o*=h/a),t.moveTo(s+n,l),t.lineTo(s+u-i,l),0!==i&&t.arc(s+u-i,l+i,i,-Math.PI/2,0),t.lineTo(s+u,l+h-r),0!==r&&t.arc(s+u-r,l+h-r,r,0,Math.PI/2),t.lineTo(s+o,l+h),0!==o&&t.arc(s+o,l+h-o,o,Math.PI/2,Math.PI),t.lineTo(s,l+n),0!==n&&t.arc(s+n,l+n,n,Math.PI,1.5*Math.PI)}(t,e):t.rect(n,i,r,o)},e.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},e}(ks);Ws.prototype.type="rect";var Hs={fill:"#000"},Ys={style:k({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},Ia.style)},Xs=function(t){function e(e){var n=t.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=Hs,n.attr(e),n}return n(e,t),e.prototype.childrenRef=function(){return this._children},e.prototype.update=function(){t.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var e=0;ed&&h){var f=Math.floor(d/l);n=n.slice(0,f)}if(t&&a&&null!=c)for(var g=da(c,o,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),y=0;y0,T=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),C=i.calculatedLineHeight,D=0;Dl&&xa(n,t.substring(l,u),e,s),xa(n,i[2],e,s,i[1]),l=ca.lastIndex}lo){b>0?(m.tokens=m.tokens.slice(0,b),y(m,_,x),n.lines=n.lines.slice(0,v+1)):n.lines=n.lines.slice(0,v);break t}var C=w.width,D=null==C||"auto"===C;if("string"==typeof C&&"%"===C.charAt(C.length-1))P.percentWidth=C,h.push(P),P.contentWidth=br(P.text,I);else{if(D){var A=w.backgroundColor,k=A&&A.image;k&&ha(k=sa(k))&&(P.width=Math.max(P.width,k.width*T/k.height))}var L=f&&null!=r?r-_:null;null!=L&&L=0&&"right"===(C=x[T]).align;)this._placeToken(C,t,b,f,I,"right",y),w-=C.width,I-=C.width,T--;for(M+=(n-(M-d)-(g-I)-w)/2;S<=T;)C=x[S],this._placeToken(C,t,b,f,M+C.width/2,"center",y),M+=C.width,S++;f+=b}},e.prototype._placeToken=function(t,e,n,i,r,o,s){var l=e.rich[t.styleName]||{};l.text=t.text;var u=t.verticalAlign,h=i+n/2;"top"===u?h=i+t.height/2:"bottom"===u&&(h=i+n-t.height/2),!t.isLineHolder&&il(l)&&this._renderBackground(l,e,"right"===o?r-t.width:"center"===o?r-t.width/2:r,h-t.height/2,t.width,t.height);var c=!!l.backgroundColor,p=t.textPadding;p&&(r=el(r,o,p),h-=t.height/2-p[0]-t.innerHeight/2);var d=this._getOrCreateChild(Ps),f=d.createStyle();d.useStyle(f);var g=this._defaultStyle,y=!1,v=0,m=tl("fill"in l?l.fill:"fill"in e?e.fill:(y=!0,g.fill)),x=Qs("stroke"in l?l.stroke:"stroke"in e?e.stroke:c||s||g.autoStroke&&!y?null:(v=2,g.stroke)),_=l.textShadowBlur>0||e.textShadowBlur>0;f.text=t.text,f.x=r,f.y=h,_&&(f.shadowBlur=l.textShadowBlur||e.textShadowBlur||0,f.shadowColor=l.textShadowColor||e.textShadowColor||"transparent",f.shadowOffsetX=l.textShadowOffsetX||e.textShadowOffsetX||0,f.shadowOffsetY=l.textShadowOffsetY||e.textShadowOffsetY||0),f.textAlign=o,f.textBaseline="middle",f.font=t.font||a,f.opacity=ot(l.opacity,e.opacity,1),Ks(f,l),x&&(f.lineWidth=ot(l.lineWidth,e.lineWidth,v),f.lineDash=rt(l.lineDash,e.lineDash),f.lineDashOffset=e.lineDashOffset||0,f.stroke=x),m&&(f.fill=m);var b=t.contentWidth,w=t.contentHeight;d.setBoundingRect(new ze(Mr(f.x,b,f.textAlign),Ir(f.y,w,f.textBaseline),b,w))},e.prototype._renderBackground=function(t,e,n,i,r,o){var a,s,l,u=t.backgroundColor,h=t.borderWidth,c=t.borderColor,p=u&&u.image,d=u&&!p,f=t.borderRadius,g=this;if(d||t.lineHeight||h&&c){(a=this._getOrCreateChild(Ws)).useStyle(a.createStyle()),a.style.fill=null;var y=a.shape;y.x=n,y.y=i,y.width=r,y.height=o,y.r=f,a.dirtyShape()}if(d)(l=a.style).fill=u||null,l.fillOpacity=rt(t.fillOpacity,1);else if(p){(s=this._getOrCreateChild(Ns)).onload=function(){g.dirtyStyle()};var v=s.style;v.image=u.image,v.x=n,v.y=i,v.width=r,v.height=o}h&&c&&((l=a.style).lineWidth=h,l.stroke=c,l.strokeOpacity=rt(t.strokeOpacity,1),l.lineDash=t.borderDash,l.lineDashOffset=t.borderDashOffset||0,a.strokeContainThreshold=0,a.hasFill()&&a.hasStroke()&&(l.strokeFirst=!0,l.lineWidth*=2));var m=(a||s).style;m.shadowBlur=t.shadowBlur||0,m.shadowColor=t.shadowColor||"transparent",m.shadowOffsetX=t.shadowOffsetX||0,m.shadowOffsetY=t.shadowOffsetY||0,m.opacity=ot(t.opacity,e.opacity,1)},e.makeFont=function(t){var e="";return $s(t)&&(e=[t.fontStyle,t.fontWeight,qs(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),e&&ut(e)||t.textFont||t.font},e}(Da),Us={left:!0,right:1,center:1},Zs={top:1,bottom:1,middle:1},js=["fontStyle","fontWeight","fontSize","fontFamily"];function qs(t){return"string"!=typeof t||-1===t.indexOf("px")&&-1===t.indexOf("rem")&&-1===t.indexOf("em")?isNaN(+t)?"12px":t+"px":t}function Ks(t,e){for(var n=0;n=0,o=!1;if(t instanceof ks){var a=ll(t),s=r&&a.selectFill||a.normalFill,l=r&&a.selectStroke||a.normalStroke;if(ml(s)||ml(l)){var u=(i=i||{}).style||{};"inherit"===u.fill?(o=!0,i=A({},i),(u=A({},u)).fill=s):!ml(u.fill)&&ml(s)?(o=!0,i=A({},i),(u=A({},u)).fill=si(s)):!ml(u.stroke)&&ml(l)&&(o||(i=A({},i),u=A({},u)),u.stroke=si(l)),i.style=u}}if(i&&null==i.z2){o||(i=A({},i));var h=t.z2EmphasisLift;i.z2=t.z2+(null!=h?h:pl)}return i}(this,0,e,n);if("blur"===t)return function(t,e,n){var i=P(t.currentStates,e)>=0,r=t.style.opacity,o=i?null:function(t,e,n,i){for(var r=t.style,o={},a=0;a0){var o={dataIndex:r,seriesIndex:t.seriesIndex};null!=i&&(o.dataType=i),e.push(o)}}))})),e}function Ul(t,e,n){Jl(t,!0),Cl(t,kl),jl(t,e,n)}function Zl(t,e,n,i){i?function(t){Jl(t,!1)}(t):Ul(t,e,n)}function jl(t,e,n){var i=rl(t);null!=e?(i.focus=e,i.blurScope=n):i.focus&&(i.focus=null)}var ql=["emphasis","blur","select"],Kl={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function $l(t,e,n,i){n=n||"itemStyle";for(var r=0;r1&&(a*=su(f),s*=su(f));var g=(r===o?-1:1)*su((a*a*(s*s)-a*a*(d*d)-s*s*(p*p))/(a*a*(d*d)+s*s*(p*p)))||0,y=g*a*d/s,v=g*-s*p/a,m=(t+n)/2+uu(c)*y-lu(c)*v,x=(e+i)/2+lu(c)*y+uu(c)*v,_=du([1,0],[(p-y)/a,(d-v)/s]),b=[(p-y)/a,(d-v)/s],w=[(-1*p-y)/a,(-1*d-v)/s],S=du(b,w);if(pu(b,w)<=-1&&(S=hu),pu(b,w)>=1&&(S=0),S<0){var M=Math.round(S/hu*1e6)/1e6;S=2*hu+M%2*hu}h.addData(u,m,x,a,s,_,S,c,o)}var gu=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,yu=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;var vu=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.applyTransform=function(t){},e}(ks);function mu(t){return null!=t.setData}function xu(t,e){var n=function(t){var e=new hs;if(!t)return e;var n,i=0,r=0,o=i,a=r,s=hs.CMD,l=t.match(gu);if(!l)return e;for(var u=0;uk*k+L*L&&(M=T,I=C),{cx:M,cy:I,x0:-h,y0:-c,x1:M*(r/b-1),y1:I*(r/b-1)}}function Vu(t,e){var n,i=Ru(e.r,0),r=Ru(e.r0||0,0),o=i>0;if(o||r>0){if(o||(i=r,r=0),r>i){var a=i;i=r,r=a}var s=e.startAngle,l=e.endAngle;if(!isNaN(s)&&!isNaN(l)){var u=e.cx,h=e.cy,c=!!e.clockwise,p=Pu(l-s),d=p>Cu&&p%Cu;if(d>Eu&&(p=d),i>Eu)if(p>Cu-Eu)t.moveTo(u+i*Au(s),h+i*Du(s)),t.arc(u,h,i,s,l,!c),r>Eu&&(t.moveTo(u+r*Au(l),h+r*Du(l)),t.arc(u,h,r,l,s,c));else{var f=void 0,g=void 0,y=void 0,v=void 0,m=void 0,x=void 0,_=void 0,b=void 0,w=void 0,S=void 0,M=void 0,I=void 0,T=void 0,C=void 0,D=void 0,A=void 0,k=i*Au(s),L=i*Du(s),P=r*Au(l),O=r*Du(l),R=p>Eu;if(R){var N=e.cornerRadius;N&&(n=function(t){var e;if(Y(t)){var n=t.length;if(!n)return t;e=1===n?[t[0],t[0],0,0]:2===n?[t[0],t[0],t[1],t[1]]:3===n?t.concat(t[2]):t}else e=[t,t,t,t];return e}(N),f=n[0],g=n[1],y=n[2],v=n[3]);var E=Pu(i-r)/2;if(m=Nu(E,y),x=Nu(E,v),_=Nu(E,f),b=Nu(E,g),M=w=Ru(m,x),I=S=Ru(_,b),(w>Eu||S>Eu)&&(T=i*Au(l),C=i*Du(l),D=r*Au(s),A=r*Du(s),pEu){var X=Nu(y,M),U=Nu(v,M),Z=zu(D,A,k,L,i,X,c),j=zu(T,C,P,O,i,U,c);t.moveTo(u+Z.cx+Z.x0,h+Z.cy+Z.y0),M0&&t.arc(u+Z.cx,h+Z.cy,X,Lu(Z.y0,Z.x0),Lu(Z.y1,Z.x1),!c),t.arc(u,h,i,Lu(Z.cy+Z.y1,Z.cx+Z.x1),Lu(j.cy+j.y1,j.cx+j.x1),!c),U>0&&t.arc(u+j.cx,h+j.cy,U,Lu(j.y1,j.x1),Lu(j.y0,j.x0),!c))}else t.moveTo(u+k,h+L),t.arc(u,h,i,s,l,!c);else t.moveTo(u+k,h+L);if(r>Eu&&R)if(I>Eu){X=Nu(f,I),Z=zu(P,O,T,C,r,-(U=Nu(g,I)),c),j=zu(k,L,D,A,r,-X,c);t.lineTo(u+Z.cx+Z.x0,h+Z.cy+Z.y0),I0&&t.arc(u+Z.cx,h+Z.cy,U,Lu(Z.y0,Z.x0),Lu(Z.y1,Z.x1),!c),t.arc(u,h,r,Lu(Z.cy+Z.y1,Z.cx+Z.x1),Lu(j.cy+j.y1,j.cx+j.x1),c),X>0&&t.arc(u+j.cx,h+j.cy,X,Lu(j.y1,j.x1),Lu(j.y0,j.x0),!c))}else t.lineTo(u+P,h+O),t.arc(u,h,r,l,s,c);else t.lineTo(u+P,h+O)}else t.moveTo(u,h);t.closePath()}}}var Bu=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0,this.cornerRadius=0},Fu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Bu},e.prototype.buildPath=function(t,e){Vu(t,e)},e.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},e}(ks);Fu.prototype.type="sector";var Gu=function(){this.cx=0,this.cy=0,this.r=0,this.r0=0},Wu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Gu},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=2*Math.PI;t.moveTo(n+e.r,i),t.arc(n,i,e.r,0,r,!1),t.moveTo(n+e.r0,i),t.arc(n,i,e.r0,0,r,!0)},e}(ks);function Hu(t,e,n){var i=e.smooth,r=e.points;if(r&&r.length>=2){if(i){var o=function(t,e,n,i){var r,o,a,s,l=[],u=[],h=[],c=[];if(i){a=[1/0,1/0],s=[-1/0,-1/0];for(var p=0,d=t.length;plh[1]){if(a=!1,r)return a;var u=Math.abs(lh[0]-sh[1]),h=Math.abs(sh[0]-lh[1]);Math.min(u,h)>i.len()&&(u0){var c={duration:h.duration,delay:h.delay||0,easing:h.easing,done:o,force:!!o||!!a,setToFinal:!u,scope:t,during:a};l?e.animateFrom(n,c):e.animateTo(n,c)}else e.stopAnimation(),!l&&e.attr(n),a&&a(1),o&&o()}function vh(t,e,n,i,r,o){yh("update",t,e,n,i,r,o)}function mh(t,e,n,i,r,o){yh("enter",t,e,n,i,r,o)}function xh(t){if(!t.__zr)return!0;for(var e=0;eMath.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"}function Wh(t){return!t.isGroup}function Hh(t,e,n){if(t&&e){var i,r=(i={},t.traverse((function(t){Wh(t)&&t.anid&&(i[t.anid]=t)})),i);e.traverse((function(t){if(Wh(t)&&t.anid){var e=r[t.anid];if(e){var i=o(t);t.attr(o(e)),vh(t,i,n,rl(t).dataIndex)}}}))}function o(t){var e={x:t.x,y:t.y,rotation:t.rotation};return function(t){return null!=t.shape}(t)&&(e.shape=A({},t.shape)),e}}function Yh(t,e){return z(t,(function(t){var n=t[0];n=Mh(n,e.x),n=Ih(n,e.x+e.width);var i=t[1];return i=Mh(i,e.y),[n,i=Ih(i,e.y+e.height)]}))}function Xh(t,e){var n=Mh(t.x,e.x),i=Ih(t.x+t.width,e.x+e.width),r=Mh(t.y,e.y),o=Ih(t.y+t.height,e.y+e.height);if(i>=n&&o>=r)return{x:n,y:r,width:i-n,height:o-r}}function Uh(t,e,n){var i=A({rectHover:!0},e),r=i.style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(r.image=t.slice(8),k(r,n),new Ns(i)):Ph(t.replace("path://",""),i,n,"center")}function Zh(t,e,n,i,r){for(var o=0,a=r[r.length-1];o=-1e-6)return!1;var f=t-r,g=e-o,y=qh(f,g,u,h)/d;if(y<0||y>1)return!1;var v=qh(f,g,c,p)/d;return!(v<0||v>1)}function qh(t,e,n,i){return t*i-n*e}function Kh(t){var e=t.itemTooltipOption,n=t.componentModel,i=t.itemName,r=U(e)?{formatter:e}:e,o=n.mainType,a=n.componentIndex,s={componentType:o,name:i,$vars:["name"]};s[o+"Index"]=a;var l=t.formatterParamsExtra;l&&E(G(l),(function(t){_t(s,t)||(s[t]=l[t],s.$vars.push(t))}));var u=rl(t.el);u.componentMainType=o,u.componentIndex=a,u.tooltipConfig={name:i,option:k({content:i,encodeHTMLContent:!0,formatterParams:s},r)}}function $h(t,e){var n;t.isGroup&&(n=e(t)),n||t.traverse(e)}function Jh(t,e){if(t)if(Y(t))for(var n=0;n-1?Lc:Oc;function zc(t,e){t=t.toUpperCase(),Nc[t]=new Cc(e),Rc[t]=e}function Vc(t){return Nc[t]}zc(Pc,{time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst",custom:"Custom chart",chart:"Chart"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}}),zc(Lc,{time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图",custom:"自定义图表",chart:"图表"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}});var Bc=1e3,Fc=6e4,Gc=36e5,Wc=864e5,Hc=31536e6,Yc={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},Xc="{yyyy}-{MM}-{dd}",Uc={year:"{yyyy}",month:"{yyyy}-{MM}",day:Xc,hour:Xc+" "+Yc.hour,minute:Xc+" "+Yc.minute,second:Xc+" "+Yc.second,millisecond:Yc.none},Zc=["year","month","day","hour","minute","second","millisecond"],jc=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function qc(t,e){return"0000".substr(0,e-(t+="").length)+t}function Kc(t){switch(t){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return t}}function $c(t){return t===Kc(t)}function Jc(t,e,n,i){var r=uo(t),o=r[ep(n)](),a=r[np(n)]()+1,s=Math.floor((a-1)/3)+1,l=r[ip(n)](),u=r["get"+(n?"UTC":"")+"Day"](),h=r[rp(n)](),c=(h-1)%12+1,p=r[op(n)](),d=r[ap(n)](),f=r[sp(n)](),g=h>=12?"pm":"am",y=g.toUpperCase(),v=(i instanceof Cc?i:Vc(i||Ec)||Nc[Oc]).getModel("time"),m=v.get("month"),x=v.get("monthAbbr"),_=v.get("dayOfWeek"),b=v.get("dayOfWeekAbbr");return(e||"").replace(/{a}/g,g+"").replace(/{A}/g,y+"").replace(/{yyyy}/g,o+"").replace(/{yy}/g,qc(o%100+"",2)).replace(/{Q}/g,s+"").replace(/{MMMM}/g,m[a-1]).replace(/{MMM}/g,x[a-1]).replace(/{MM}/g,qc(a,2)).replace(/{M}/g,a+"").replace(/{dd}/g,qc(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,_[u]).replace(/{ee}/g,b[u]).replace(/{e}/g,u+"").replace(/{HH}/g,qc(h,2)).replace(/{H}/g,h+"").replace(/{hh}/g,qc(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,qc(p,2)).replace(/{m}/g,p+"").replace(/{ss}/g,qc(d,2)).replace(/{s}/g,d+"").replace(/{SSS}/g,qc(f,3)).replace(/{S}/g,f+"")}function Qc(t,e){var n=uo(t),i=n[np(e)]()+1,r=n[ip(e)](),o=n[rp(e)](),a=n[op(e)](),s=n[ap(e)](),l=0===n[sp(e)](),u=l&&0===s,h=u&&0===a,c=h&&0===o,p=c&&1===r;return p&&1===i?"year":p?"month":c?"day":h?"hour":u?"minute":l?"second":"millisecond"}function tp(t,e,n){var i=j(t)?uo(t):t;switch(e=e||Qc(t,n)){case"year":return i[ep(n)]();case"half-year":return i[np(n)]()>=6?1:0;case"quarter":return Math.floor((i[np(n)]()+1)/4);case"month":return i[np(n)]();case"day":return i[ip(n)]();case"half-day":return i[rp(n)]()/24;case"hour":return i[rp(n)]();case"minute":return i[op(n)]();case"second":return i[ap(n)]();case"millisecond":return i[sp(n)]()}}function ep(t){return t?"getUTCFullYear":"getFullYear"}function np(t){return t?"getUTCMonth":"getMonth"}function ip(t){return t?"getUTCDate":"getDate"}function rp(t){return t?"getUTCHours":"getHours"}function op(t){return t?"getUTCMinutes":"getMinutes"}function ap(t){return t?"getUTCSeconds":"getSeconds"}function sp(t){return t?"getUTCMilliseconds":"getMilliseconds"}function lp(t){return t?"setUTCFullYear":"setFullYear"}function up(t){return t?"setUTCMonth":"setMonth"}function hp(t){return t?"setUTCDate":"setDate"}function cp(t){return t?"setUTCHours":"setHours"}function pp(t){return t?"setUTCMinutes":"setMinutes"}function dp(t){return t?"setUTCSeconds":"setSeconds"}function fp(t){return t?"setUTCMilliseconds":"setMilliseconds"}function gp(t){if(!vo(t))return U(t)?t:"-";var e=(t+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function yp(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,(function(t,e){return e.toUpperCase()})),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var vp=st;function mp(t,e,n){function i(t){return t&&ut(t)?t:"-"}function r(t){return!(null==t||isNaN(t)||!isFinite(t))}var o="time"===e,a=t instanceof Date;if(o||a){var s=o?uo(t):t;if(!isNaN(+s))return Jc(s,"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}",n);if(a)return"-"}if("ordinal"===e)return Z(t)?i(t):j(t)&&r(t)?t+"":"-";var l=yo(t);return r(l)?gp(l):Z(t)?i(t):"boolean"==typeof t?t+"":"-"}var xp=["a","b","c","d","e","f","g"],_p=function(t,e){return"{"+t+(null==e?"":e)+"}"};function bp(t,e,n){Y(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r=e[0].$vars||[],o=0;o':'':{renderMode:o,content:"{"+(n.markerId||"markerX")+"|} ",style:"subItem"===r?{width:4,height:4,borderRadius:2,backgroundColor:i}:{width:10,height:10,borderRadius:5,backgroundColor:i}}:""}function Sp(t,e){return e=e||"transparent",U(t)?t:q(t)&&t.colorStops&&(t.colorStops[0]||{}).color||e}function Mp(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location.href=t}else window.open(t,e)}var Ip=E,Tp=["left","right","top","bottom","width","height"],Cp=[["width","left","right"],["height","top","bottom"]];function Dp(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild((function(l,u){var h,c,p=l.getBoundingRect(),d=e.childAt(u+1),f=d&&d.getBoundingRect();if("horizontal"===t){var g=p.width+(f?-f.x+p.x:0);(h=o+g)>i||l.newline?(o=0,h=g,a+=s+n,s=p.height):s=Math.max(s,p.height)}else{var y=p.height+(f?-f.y+p.y:0);(c=a+y)>r||l.newline?(o+=s+n,a=0,c=y,s=p.width):s=Math.max(s,p.width)}l.newline||(l.x=o,l.y=a,l.markRedraw(),"horizontal"===t?o=h+n:a=c+n)}))}var Ap=Dp;H(Dp,"vertical"),H(Dp,"horizontal");function kp(t,e,n){n=vp(n||0);var i=e.width,r=e.height,o=$r(t.left,i),a=$r(t.top,r),s=$r(t.right,i),l=$r(t.bottom,r),u=$r(t.width,i),h=$r(t.height,r),c=n[2]+n[0],p=n[1]+n[3],d=t.aspect;switch(isNaN(u)&&(u=i-s-p-o),isNaN(h)&&(h=r-l-c-a),null!=d&&(isNaN(u)&&isNaN(h)&&(d>i/r?u=.8*i:h=.8*r),isNaN(u)&&(u=d*h),isNaN(h)&&(h=u/d)),isNaN(o)&&(o=i-s-u-p),isNaN(a)&&(a=r-l-h-c),t.left||t.right){case"center":o=i/2-u/2-n[3];break;case"right":o=i-u-p}switch(t.top||t.bottom){case"middle":case"center":a=r/2-h/2-n[0];break;case"bottom":a=r-h-c}o=o||0,a=a||0,isNaN(u)&&(u=i-p-o-(s||0)),isNaN(h)&&(h=r-c-a-(l||0));var f=new ze(o+n[3],a+n[0],u,h);return f.margin=n,f}function Lp(t,e,n,i,r,o){var a,s=!r||!r.hv||r.hv[0],l=!r||!r.hv||r.hv[1],u=r&&r.boundingMode||"all";if((o=o||t).x=t.x,o.y=t.y,!s&&!l)return!1;if("raw"===u)a="group"===t.type?new ze(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(a=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(a=a.clone()).applyTransform(h)}var c=kp(k({width:a.width,height:a.height},e),n,i),p=s?c.x-a.x:0,d=l?c.y-a.y:0;return"raw"===u?(o.x=p,o.y=d):(o.x+=p,o.y+=d),o===t&&t.markRedraw(),!0}function Pp(t){var e=t.layoutMode||t.constructor.layoutMode;return q(e)?e:e?{type:e}:null}function Op(t,e,n){var i=n&&n.ignoreSize;!Y(i)&&(i=[i,i]);var r=a(Cp[0],0),o=a(Cp[1],1);function a(n,r){var o={},a=0,u={},h=0;if(Ip(n,(function(e){u[e]=t[e]})),Ip(n,(function(t){s(e,t)&&(o[t]=u[t]=e[t]),l(o,t)&&a++,l(u,t)&&h++})),i[r])return l(e,n[1])?u[n[2]]=null:l(e,n[2])&&(u[n[1]]=null),u;if(2!==h&&a){if(a>=2)return o;for(var c=0;c=0;a--)o=C(o,n[a],!0);e.defaultOption=o}return e.defaultOption},e.prototype.getReferringComponents=function(t,e){var n=t+"Index",i=t+"Id";return Yo(this.ecModel,t,{index:this.get(n,!0),id:this.get(i,!0)},e)},e.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},e.prototype.getZLevelKey=function(){return""},e.prototype.setZLevel=function(t){this.option.zlevel=t},e.protoInitialize=function(){var t=e.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),e}(Cc);Jo(zp,Cc),na(zp),function(t){var e={};t.registerSubTypeDefaulter=function(t,n){var i=Ko(t);e[i.main]=n},t.determineSubType=function(n,i){var r=i.type;if(!r){var o=Ko(n).main;t.hasSubTypes(n)&&e[o]&&(r=e[o](i))}return r}}(zp),function(t,e){function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}t.topologicalTravel=function(t,i,r,o){if(t.length){var a=function(t){var i={},r=[];return E(t,(function(o){var a=n(i,o),s=function(t,e){var n=[];return E(t,(function(t){P(e,t)>=0&&n.push(t)})),n}(a.originalDeps=e(o),t);a.entryCount=s.length,0===a.entryCount&&r.push(o),E(s,(function(t){P(a.predecessor,t)<0&&a.predecessor.push(t);var e=n(i,t);P(e.successor,t)<0&&e.successor.push(o)}))})),{graph:i,noEntryList:r}}(i),s=a.graph,l=a.noEntryList,u={};for(E(t,(function(t){u[t]=!0}));l.length;){var h=l.pop(),c=s[h],p=!!u[h];p&&(r.call(o,h,c.originalDeps.slice()),delete u[h]),E(c.successor,p?f:d)}E(u,(function(){var t="";throw new Error(t)}))}function d(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}function f(t){u[t]=!0,d(t)}}}(zp,(function(t){var e=[];E(zp.getClassesByMainType(t),(function(t){e=e.concat(t.dependencies||t.prototype.dependencies||[])})),e=z(e,(function(t){return Ko(t).main})),"dataset"!==t&&P(e,"dataset")<=0&&e.unshift("dataset");return e}));var Vp="";"undefined"!=typeof navigator&&(Vp=navigator.platform||"");var Bp="rgba(0, 0, 0, 0.2)",Fp={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Bp,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Bp,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Bp,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Bp,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Bp,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Bp,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:Vp.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},Gp=yt(["tooltip","label","itemName","itemId","itemGroupId","itemChildGroupId","seriesName"]),Wp="original",Hp="arrayRows",Yp="objectRows",Xp="keyedColumns",Up="typedArray",Zp="unknown",jp="column",qp="row",Kp=1,$p=2,Jp=3,Qp=Vo();function td(t,e,n){var i={},r=nd(e);if(!r||!t)return i;var o,a,s=[],l=[],u=e.ecModel,h=Qp(u).datasetMap,c=r.uid+"_"+n.seriesLayoutBy;E(t=t.slice(),(function(e,n){var r=q(e)?e:t[n]={name:e};"ordinal"===r.type&&null==o&&(o=n,a=f(r)),i[r.name]=[]}));var p=h.get(c)||h.set(c,{categoryWayDim:a,valueWayDim:0});function d(t,e,n){for(var i=0;ie)return t[i];return t[n-1]}(i,a):n;if((h=h||n)&&h.length){var c=h[l];return r&&(u[r]=c),s.paletteIdx=(l+1)%h.length,c}}var fd="\0_ec_inner";var gd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(t,e,n,i,r,o){i=i||{},this.option=null,this._theme=new Cc(i),this._locale=new Cc(r),this._optionManager=o},e.prototype.setOption=function(t,e,n){var i=md(e);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},e.prototype.resetOption=function(t,e){return this._resetOption(t,md(e))},e.prototype._resetOption=function(t,e){var n=!1,i=this._optionManager;if(!t||"recreate"===t){var r=i.mountOption("recreate"===t);0,this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(r,e)):ld(this,r),n=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(n=!0,this._mergeOption(o,e))}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this);a.length&&E(a,(function(t){n=!0,this._mergeOption(t,e)}),this)}return n},e.prototype.mergeOption=function(t){this._mergeOption(t,null)},e.prototype._mergeOption=function(t,e){var n=this.option,i=this._componentsMap,r=this._componentsCount,o=[],a=yt(),s=e&&e.replaceMergeMainTypeMap;Qp(this).datasetMap=yt(),E(t,(function(t,e){null!=t&&(zp.hasClass(e)?e&&(o.push(e),a.set(e,!0)):n[e]=null==n[e]?T(t):C(n[e],t,!0))})),s&&s.each((function(t,e){zp.hasClass(e)&&!a.get(e)&&(o.push(e),a.set(e,!0))})),zp.topologicalTravel(o,zp.getAllClassMainTypes(),(function(e){var o=function(t,e,n){var i=od.get(e);if(!i)return n;var r=i(t);return r?n.concat(r):n}(this,e,To(t[e])),a=i.get(e),l=a?s&&s.get(e)?"replaceMerge":"normalMerge":"replaceAll",u=Lo(a,o,l);(function(t,e,n){E(t,(function(t){var i=t.newOption;q(i)&&(t.keyInfo.mainType=e,t.keyInfo.subType=function(t,e,n,i){return e.type?e.type:n?n.subType:i.determineSubType(t,e)}(e,i,t.existing,n))}))})(u,e,zp),n[e]=null,i.set(e,null),r.set(e,0);var h,c=[],p=[],d=0;E(u,(function(t,n){var i=t.existing,r=t.newOption;if(r){var o="series"===e,a=zp.getClass(e,t.keyInfo.subType,!o);if(!a)return;if("tooltip"===e){if(h)return void 0;h=!0}if(i&&i.constructor===a)i.name=t.keyInfo.name,i.mergeOption(r,this),i.optionUpdated(r,!1);else{var s=A({componentIndex:n},t.keyInfo);A(i=new a(r,this,this,s),s),t.brandNew&&(i.__requireNewView=!0),i.init(r,this,this),i.optionUpdated(null,!0)}}else i&&(i.mergeOption({},this),i.optionUpdated({},!1));i?(c.push(i.option),p.push(i),d++):(c.push(void 0),p.push(void 0))}),this),n[e]=c,i.set(e,p),r.set(e,d),"series"===e&&ad(this)}),this),this._seriesIndices||ad(this)},e.prototype.getOption=function(){var t=T(this.option);return E(t,(function(e,n){if(zp.hasClass(n)){for(var i=To(e),r=i.length,o=!1,a=r-1;a>=0;a--)i[a]&&!Eo(i[a])?o=!0:(i[a]=null,!o&&r--);i.length=r,t[n]=i}})),delete t[fd],t},e.prototype.getTheme=function(){return this._theme},e.prototype.getLocaleModel=function(){return this._locale},e.prototype.setUpdatePayload=function(t){this._payload=t},e.prototype.getUpdatePayload=function(){return this._payload},e.prototype.getComponent=function(t,e){var n=this._componentsMap.get(t);if(n){var i=n[e||0];if(i)return i;if(null==e)for(var r=0;r=e:"max"===n?t<=e:t===e})(i[a],t,o)||(r=!1)}})),r}var Td=E,Cd=q,Dd=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function Ad(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=Dd.length;n=0;g--){var y=t[g];if(s||(p=y.data.rawIndexOf(y.stackedByDimension,c)),p>=0){var v=y.data.getByRawIndex(y.stackResultDimension,p);if("all"===l||"positive"===l&&v>0||"negative"===l&&v<0||"samesign"===l&&d>=0&&v>0||"samesign"===l&&d<=0&&v<0){d=ro(d,v),f=v;break}}}return i[0]=d,i[1]=f,i}))}))}var Zd,jd,qd,Kd,$d,Jd=function(t){this.data=t.data||(t.sourceFormat===Xp?{}:[]),this.sourceFormat=t.sourceFormat||Zp,this.seriesLayoutBy=t.seriesLayoutBy||jp,this.startIndex=t.startIndex||0,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.metaRawOption=t.metaRawOption;var e=this.dimensionsDefine=t.dimensionsDefine;if(e)for(var n=0;nu&&(u=d)}s[0]=l,s[1]=u}},i=function(){return this._data?this._data.length/this._dimSize:0};function r(t){for(var e=0;e=0&&(s=o.interpolatedValue[l])}return null!=s?s+"":""})):void 0},t.prototype.getRawValue=function(t,e){return mf(this.getData(e),t)},t.prototype.formatTooltip=function(t,e,n){},t}();function bf(t){var e,n;return q(t)?t.type&&(n=t):e=t,{text:e,frag:n}}function wf(t){return new Sf(t)}var Sf=function(){function t(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return t.prototype.perform=function(t){var e,n=this._upstream,i=t&&t.skip;if(this._dirty&&n){var r=this.context;r.data=r.outputData=n.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!i&&(e=this._plan(this.context));var o,a=h(this._modBy),s=this._modDataCount||0,l=h(t&&t.modBy),u=t&&t.modDataCount||0;function h(t){return!(t>=1)&&(t=1),t}a===l&&s===u||(e="reset"),(this._dirty||"reset"===e)&&(this._dirty=!1,o=this._doReset(i)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var p=this._dueIndex,d=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!i&&(o||p1&&i>0?s:a}};return o;function a(){return e=t?null:oe},gte:function(t,e){return t>=e}},Af=function(){function t(t,e){if(!j(e)){var n="";0,wo(n)}this._opFn=Df[t],this._rvalFloat=yo(e)}return t.prototype.evaluate=function(t){return j(t)?this._opFn(t,this._rvalFloat):this._opFn(yo(t),this._rvalFloat)},t}(),kf=function(){function t(t,e){var n="desc"===t;this._resultLT=n?1:-1,null==e&&(e=n?"min":"max"),this._incomparable="min"===e?-1/0:1/0}return t.prototype.evaluate=function(t,e){var n=j(t)?t:yo(t),i=j(e)?e:yo(e),r=isNaN(n),o=isNaN(i);if(r&&(n=this._incomparable),o&&(i=this._incomparable),r&&o){var a=U(t),s=U(e);a&&(n=s?t:0),s&&(i=a?e:0)}return ni?-this._resultLT:0},t}(),Lf=function(){function t(t,e){this._rval=e,this._isEQ=t,this._rvalTypeof=typeof e,this._rvalFloat=yo(e)}return t.prototype.evaluate=function(t){var e=t===this._rval;if(!e){var n=typeof t;n===this._rvalTypeof||"number"!==n&&"number"!==this._rvalTypeof||(e=yo(t)===this._rvalFloat)}return this._isEQ?e:!e},t}();function Pf(t,e){return"eq"===t||"ne"===t?new Lf("eq"===t,e):_t(Df,t)?new Af(t,e):null}var Of=function(){function t(){}return t.prototype.getRawData=function(){throw new Error("not supported")},t.prototype.getRawDataItem=function(t){throw new Error("not supported")},t.prototype.cloneRawData=function(){},t.prototype.getDimensionInfo=function(t){},t.prototype.cloneAllDimensionInfo=function(){},t.prototype.count=function(){},t.prototype.retrieveValue=function(t,e){},t.prototype.retrieveValueFromItem=function(t,e){},t.prototype.convertValue=function(t,e){return If(t,e)},t}();function Rf(t){var e=t.sourceFormat;if(!Ff(e)){var n="";0,wo(n)}return t.data}function Nf(t){var e=t.sourceFormat,n=t.data;if(!Ff(e)){var i="";0,wo(i)}if(e===Hp){for(var r=[],o=0,a=n.length;o65535?Hf:Yf}function qf(t,e,n,i,r){var o=Zf[n||"float"];if(r){var a=t[e],s=a&&a.length;if(s!==i){for(var l=new o(i),u=0;ug[1]&&(g[1]=f)}return this._rawCount=this._count=s,{start:a,end:s}},t.prototype._initDataFromProvider=function(t,e,n){for(var i=this._provider,r=this._chunks,o=this._dimensions,a=o.length,s=this._rawExtent,l=z(o,(function(t){return t.property})),u=0;uy[1]&&(y[1]=g)}}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=e,this._extent=[]},t.prototype.count=function(){return this._count},t.prototype.get=function(t,e){if(!(e>=0&&e=0&&e=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&nt))return o;r=o-1}}return-1},t.prototype.indicesOfNearest=function(t,e,n){var i=this._chunks[t],r=[];if(!i)return r;null==n&&(n=1/0);for(var o=1/0,a=-1,s=0,l=0,u=this.count();l=0&&a<0)&&(o=c,a=h,s=0),h===a&&(r[s++]=l))}return r.length=s,r},t.prototype.getIndices=function(){var t,e=this._indices;if(e){var n=e.constructor,i=this._count;if(n===Array){t=new n(i);for(var r=0;r=u&&x<=h||isNaN(x))&&(a[s++]=d),d++}p=!0}else if(2===r){f=c[i[0]];var y=c[i[1]],v=t[i[1]][0],m=t[i[1]][1];for(g=0;g=u&&x<=h||isNaN(x))&&(_>=v&&_<=m||isNaN(_))&&(a[s++]=d),d++}p=!0}}if(!p)if(1===r)for(g=0;g=u&&x<=h||isNaN(x))&&(a[s++]=b)}else for(g=0;gt[M][1])&&(w=!1)}w&&(a[s++]=e.getRawIndex(g))}return sy[1]&&(y[1]=g)}}}},t.prototype.lttbDownSample=function(t,e){var n,i,r,o=this.clone([t],!0),a=o._chunks[t],s=this.count(),l=0,u=Math.floor(1/e),h=this.getRawIndex(0),c=new(jf(this._rawCount))(Math.min(2*(Math.ceil(s/u)+2),s));c[l++]=h;for(var p=1;pn&&(n=i,r=I)}M>0&&M<_-x&&(c[l++]=Math.min(S,r),r=Math.max(S,r)),c[l++]=r,h=r}return c[l++]=this.getRawIndex(s-1),o._count=l,o._indices=c,o.getRawIndex=this._getRawIdx,o},t.prototype.downSample=function(t,e,n,i){for(var r=this.clone([t],!0),o=r._chunks,a=[],s=Math.floor(1/e),l=o[t],u=this.count(),h=r._rawExtent[t]=[1/0,-1/0],c=new(jf(this._rawCount))(Math.ceil(u/s)),p=0,d=0;du-d&&(s=u-d,a.length=s);for(var f=0;fh[1]&&(h[1]=y),c[p++]=v}return r._count=p,r._indices=c,r._updateGetRawIdx(),r},t.prototype.each=function(t,e){if(this._count)for(var n=t.length,i=this._chunks,r=0,o=this.count();ra&&(a=l)}return i=[o,a],this._extent[t]=i,i},t.prototype.getRawDataItem=function(t){var e=this.getRawIndex(t);if(this._provider.persistent)return this._provider.getItem(e);for(var n=[],i=this._chunks,r=0;r=0?this._indices[t]:-1},t.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},t.internalField=function(){function t(t,e,n,i){return If(t[i],this._dimensions[i])}Gf={arrayRows:t,objectRows:function(t,e,n,i){return If(t[e],this._dimensions[i])},keyedColumns:t,original:function(t,e,n,i){var r=t&&(null==t.value?t:t.value);return If(r instanceof Array?r[i]:r,this._dimensions[i])},typedArray:function(t,e,n,i){return t[i]}}}(),t}(),$f=function(){function t(t){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=t}return t.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},t.prototype._setLocalSource=function(t,e){this._sourceList=t,this._upstreamSignList=e,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},t.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},t.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},t.prototype._createSource=function(){this._setLocalSource([],[]);var t,e,n=this._sourceHost,i=this._getUpstreamSourceManagers(),r=!!i.length;if(Qf(n)){var o=n,a=void 0,s=void 0,l=void 0;if(r){var u=i[0];u.prepareSource(),a=(l=u.getSource()).data,s=l.sourceFormat,e=[u._getVersionSign()]}else s=$(a=o.get("data",!0))?Up:Wp,e=[];var h=this._getSourceMetaRawOption()||{},c=l&&l.metaRawOption||{},p=rt(h.seriesLayoutBy,c.seriesLayoutBy)||null,d=rt(h.sourceHeader,c.sourceHeader),f=rt(h.dimensions,c.dimensions);t=p!==c.seriesLayoutBy||!!d!=!!c.sourceHeader||f?[tf(a,{seriesLayoutBy:p,sourceHeader:d,dimensions:f},s)]:[]}else{var g=n;if(r){var y=this._applyTransform(i);t=y.sourceList,e=y.upstreamSignList}else{t=[tf(g.get("source",!0),this._getSourceMetaRawOption(),null)],e=[]}}this._setLocalSource(t,e)},t.prototype._applyTransform=function(t){var e,n=this._sourceHost,i=n.get("transform",!0),r=n.get("fromTransformResult",!0);if(null!=r){var o="";1!==t.length&&tg(o)}var a,s=[],l=[];return E(t,(function(t){t.prepareSource();var e=t.getSource(r||0),n="";null==r||e||tg(n),s.push(e),l.push(t._getVersionSign())})),i?e=function(t,e,n){var i=To(t),r=i.length,o="";r||wo(o);for(var a=0,s=r;a1||n>0&&!t.noHeader;return E(t.blocks,(function(t){var n=lg(t);n>=e&&(e=n+ +(i&&(!n||ag(t)&&!t.noHeader)))})),e}return 0}function ug(t,e,n,i){var r,o=e.noHeader,a=(r=lg(e),{html:ig[r],richText:rg[r]}),s=[],l=e.blocks||[];lt(!l||Y(l)),l=l||[];var u=t.orderMode;if(e.sortBlocks&&u){l=l.slice();var h={valueAsc:"asc",valueDesc:"desc"};if(_t(h,u)){var c=new kf(h[u],null);l.sort((function(t,e){return c.evaluate(t.sortParam,e.sortParam)}))}else"seriesDesc"===u&&l.reverse()}E(l,(function(n,r){var o=e.valueFormatter,l=sg(n)(o?A(A({},t),{valueFormatter:o}):t,n,r>0?a.html:0,i);null!=l&&s.push(l)}));var p="richText"===t.renderMode?s.join(a.richText):pg(s.join(""),o?n:a.html);if(o)return p;var d=mp(e.header,"ordinal",t.useUTC),f=ng(i,t.renderMode).nameStyle;return"richText"===t.renderMode?dg(t,d,f)+a.richText+p:pg('

'+re(d)+"
"+p,n)}function hg(t,e,n,i){var r=t.renderMode,o=e.noName,a=e.noValue,s=!e.markerType,l=e.name,u=t.useUTC,h=e.valueFormatter||t.valueFormatter||function(t){return z(t=Y(t)?t:[t],(function(t,e){return mp(t,Y(d)?d[e]:d,u)}))};if(!o||!a){var c=s?"":t.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",r),p=o?"":mp(l,"ordinal",u),d=e.valueType,f=a?[]:h(e.value,e.dataIndex),g=!s||!o,y=!s&&o,v=ng(i,r),m=v.nameStyle,x=v.valueStyle;return"richText"===r?(s?"":c)+(o?"":dg(t,p,m))+(a?"":function(t,e,n,i,r){var o=[r],a=i?10:20;return n&&o.push({padding:[0,0,0,a],align:"right"}),t.markupStyleCreator.wrapRichTextStyle(Y(e)?e.join(" "):e,o)}(t,f,g,y,x)):pg((s?"":c)+(o?"":function(t,e,n){return''+re(t)+""}(p,!s,m))+(a?"":function(t,e,n,i){var r=n?"10px":"20px",o=e?"float:right;margin-left:"+r:"";return t=Y(t)?t:[t],''+z(t,(function(t){return re(t)})).join("  ")+""}(f,g,y,x)),n)}}function cg(t,e,n,i,r,o){if(t)return sg(t)({useUTC:r,renderMode:n,orderMode:i,markupStyleCreator:e,valueFormatter:t.valueFormatter},t,0,o)}function pg(t,e){return'
'+t+'
'}function dg(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}function fg(t,e){return Sp(t.getData().getItemVisual(e,"style")[t.visualDrawType])}function gg(t,e){var n=t.get("padding");return null!=n?n:"richText"===e?[8,10]:10}var yg=function(){function t(){this.richTextStyles={},this._nextStyleNameId=mo()}return t.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},t.prototype.makeTooltipMarker=function(t,e,n){var i="richText"===n?this._generateStyleName():null,r=wp({color:e,type:t,renderMode:n,markerId:i});return U(r)?r:(this.richTextStyles[i]=r.style,r.content)},t.prototype.wrapRichTextStyle=function(t,e){var n={};Y(e)?E(e,(function(t){return A(n,t)})):A(n,e);var i=this._generateStyleName();return this.richTextStyles[i]=n,"{"+i+"|"+t+"}"},t}();function vg(t){var e,n,i,r,o=t.series,a=t.dataIndex,s=t.multipleSeries,l=o.getData(),u=l.mapDimensionsAll("defaultedTooltip"),h=u.length,c=o.getRawValue(a),p=Y(c),d=fg(o,a);if(h>1||p&&!h){var f=function(t,e,n,i,r){var o=e.getData(),a=V(t,(function(t,e,n){var i=o.getDimensionInfo(n);return t||i&&!1!==i.tooltip&&null!=i.displayName}),!1),s=[],l=[],u=[];function h(t,e){var n=o.getDimensionInfo(e);n&&!1!==n.otherDims.tooltip&&(a?u.push(og("nameValue",{markerType:"subItem",markerColor:r,name:n.displayName,value:t,valueType:n.type})):(s.push(t),l.push(n.type)))}return i.length?E(i,(function(t){h(mf(o,n,t),t)})):E(t,h),{inlineValues:s,inlineValueTypes:l,blocks:u}}(c,o,a,u,d);e=f.inlineValues,n=f.inlineValueTypes,i=f.blocks,r=f.inlineValues[0]}else if(h){var g=l.getDimensionInfo(u[0]);r=e=mf(l,a,u[0]),n=g.type}else r=e=p?c[0]:c;var y=No(o),v=y&&o.name||"",m=l.getName(a),x=s?v:m;return og("section",{header:v,noHeader:s||!y,sortParam:r,blocks:[og("nameValue",{markerType:"item",markerColor:d,name:x,noName:!ut(x),value:e,valueType:n,dataIndex:a})].concat(i||[])})}var mg=Vo();function xg(t,e){return t.getName(e)||t.getId(e)}var _g="__universalTransitionEnabled",bg=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._selectedDataIndicesMap={},e}return n(e,t),e.prototype.init=function(t,e,n){this.seriesIndex=this.componentIndex,this.dataTask=wf({count:Sg,reset:Mg}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n),(mg(this).sourceManager=new $f(this)).prepareSource();var i=this.getInitialData(t,n);Tg(i,this),this.dataTask.context.data=i,mg(this).dataBeforeProcessed=i,wg(this),this._initSelectedMapFromData(i)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=Pp(this),i=n?Rp(t):{},r=this.subType;zp.hasClass(r)&&(r+="Series"),C(t,e.getTheme().get(this.subType)),C(t,this.getDefaultOption()),Co(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&Op(t,i,n)},e.prototype.mergeOption=function(t,e){t=C(this.option,t,!0),this.fillDataTextStyle(t.data);var n=Pp(this);n&&Op(this.option,t,n);var i=mg(this).sourceManager;i.dirty(),i.prepareSource();var r=this.getInitialData(t,e);Tg(r,this),this.dataTask.dirty(),this.dataTask.context.data=r,mg(this).dataBeforeProcessed=r,wg(this),this._initSelectedMapFromData(r)},e.prototype.fillDataTextStyle=function(t){if(t&&!$(t))for(var e=["show"],n=0;nthis.getShallow("animationThreshold")&&(e=!1),!!e},e.prototype.restoreData=function(){this.dataTask.dirty()},e.prototype.getColorFromPalette=function(t,e,n){var i=this.ecModel,r=cd.prototype.getColorFromPalette.call(this,t,e,n);return r||(r=i.getColorFromPalette(t,e,n)),r},e.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},e.prototype.getProgressive=function(){return this.get("progressive")},e.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},e.prototype.select=function(t,e){this._innerSelect(this.getData(e),t)},e.prototype.unselect=function(t,e){var n=this.option.selectedMap;if(n){var i=this.option.selectedMode,r=this.getData(e);if("series"===i||"all"===n)return this.option.selectedMap={},void(this._selectedDataIndicesMap={});for(var o=0;o=0&&n.push(r)}return n},e.prototype.isSelected=function(t,e){var n=this.option.selectedMap;if(!n)return!1;var i=this.getData(e);return("all"===n||n[xg(i,t)])&&!i.getItemModel(t).get(["select","disabled"])},e.prototype.isUniversalTransitionEnabled=function(){if(this[_g])return!0;var t=this.option.universalTransition;return!!t&&(!0===t||t&&t.enabled)},e.prototype._innerSelect=function(t,e){var n,i,r=this.option,o=r.selectedMode,a=e.length;if(o&&a)if("series"===o)r.selectedMap="all";else if("multiple"===o){q(r.selectedMap)||(r.selectedMap={});for(var s=r.selectedMap,l=0;l0&&this._innerSelect(t,e)}},e.registerClass=function(t){return zp.registerClass(t)},e.protoInitialize=function(){var t=e.prototype;t.type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),e}(zp);function wg(t){var e=t.name;No(t)||(t.name=function(t){var e=t.getRawData(),n=e.mapDimensionsAll("seriesName"),i=[];return E(n,(function(t){var n=e.getDimensionInfo(t);n.displayName&&i.push(n.displayName)})),i.join(" ")}(t)||e)}function Sg(t){return t.model.getRawData().count()}function Mg(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),Ig}function Ig(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Tg(t,e){E(vt(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),(function(n){t.wrapMethod(n,H(Cg,e))}))}function Cg(t,e){var n=Dg(t);return n&&n.setOutputEnd((e||this).count()),e}function Dg(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}R(bg,_f),R(bg,cd),Jo(bg,zp);var Ag=function(){function t(){this.group=new Br,this.uid=Ac("viewComponent")}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){},t.prototype.updateLayout=function(t,e,n,i){},t.prototype.updateVisual=function(t,e,n,i){},t.prototype.toggleBlurSeries=function(t,e,n){},t.prototype.eachRendered=function(t){var e=this.group;e&&e.traverse(t)},t}();function kg(){var t=Vo();return function(e){var n=t(e),i=e.pipelineContext,r=!!n.large,o=!!n.progressiveRender,a=n.large=!(!i||!i.large),s=n.progressiveRender=!(!i||!i.progressiveRender);return!(r===a&&o===s)&&"reset"}}$o(Ag),na(Ag);var Lg=Vo(),Pg=kg(),Og=function(){function t(){this.group=new Br,this.uid=Ac("viewChart"),this.renderTask=wf({plan:Eg,reset:zg}),this.renderTask.context={view:this}}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){0},t.prototype.highlight=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&Ng(r,i,"emphasis")},t.prototype.downplay=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&Ng(r,i,"normal")},t.prototype.remove=function(t,e){this.group.removeAll()},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateLayout=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.eachRendered=function(t){Jh(this.group,t)},t.markUpdateMethod=function(t,e){Lg(t).updateMethod=e},t.protoInitialize=void(t.prototype.type="chart"),t}();function Rg(t,e,n){t&&Ql(t)&&("emphasis"===e?Ol:Rl)(t,n)}function Ng(t,e,n){var i=zo(t,e),r=e&&null!=e.highlightKey?function(t){var e=sl[t];return null==e&&al<=32&&(e=sl[t]=al++),e}(e.highlightKey):null;null!=i?E(To(i),(function(e){Rg(t.getItemGraphicEl(e),n,r)})):t.eachItemGraphicEl((function(t){Rg(t,n,r)}))}function Eg(t){return Pg(t.model)}function zg(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelineContext.progressiveRender,a=t.view,s=r&&Lg(r).updateMethod,l=o?"incrementalPrepareRender":s&&a[s]?s:"render";return"render"!==l&&a[l](e,n,i,r),Vg[l]}$o(Og),na(Og);var Vg={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},Bg="\0__throttleOriginMethod",Fg="\0__throttleRate",Gg="\0__throttleType";function Wg(t,e,n){var i,r,o,a,s,l=0,u=0,h=null;function c(){u=(new Date).getTime(),h=null,t.apply(o,a||[])}e=e||0;var p=function(){for(var t=[],p=0;p=0?c():h=setTimeout(c,-r),l=i};return p.clear=function(){h&&(clearTimeout(h),h=null)},p.debounceNextCall=function(t){s=t},p}function Hg(t,e,n,i){var r=t[e];if(r){var o=r[Bg]||r,a=r[Gg];if(r[Fg]!==n||a!==i){if(null==n||!i)return t[e]=o;(r=t[e]=Wg(o,n,"debounce"===i))[Bg]=o,r[Gg]=i,r[Fg]=n}return r}}function Yg(t,e){var n=t[e];n&&n[Bg]&&(n.clear&&n.clear(),t[e]=n[Bg])}var Xg=Vo(),Ug={itemStyle:ia(Mc,!0),lineStyle:ia(bc,!0)},Zg={lineStyle:"stroke",itemStyle:"fill"};function jg(t,e){var n=t.visualStyleMapper||Ug[e];return n||(console.warn("Unknown style type '"+e+"'."),Ug.itemStyle)}function qg(t,e){var n=t.visualDrawType||Zg[e];return n||(console.warn("Unknown style type '"+e+"'."),"fill")}var Kg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=t.getModel(i),o=jg(t,i)(r),a=r.getShallow("decal");a&&(n.setVisual("decal",a),a.dirty=!0);var s=qg(t,i),l=o[s],u=X(l)?l:null,h="auto"===o.fill||"auto"===o.stroke;if(!o[s]||u||h){var c=t.getColorFromPalette(t.name,null,e.getSeriesCount());o[s]||(o[s]=c,n.setVisual("colorFromPalette",!0)),o.fill="auto"===o.fill||X(o.fill)?c:o.fill,o.stroke="auto"===o.stroke||X(o.stroke)?c:o.stroke}if(n.setVisual("style",o),n.setVisual("drawType",s),!e.isSeriesFiltered(t)&&u)return n.setVisual("colorFromPalette",!1),{dataEach:function(e,n){var i=t.getDataParams(n),r=A({},o);r[s]=u(i),e.setItemVisual(n,"style",r)}}}},$g=new Cc,Jg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(!t.ignoreStyleOnData&&!e.isSeriesFiltered(t)){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=jg(t,i),o=n.getVisual("drawType");return{dataEach:n.hasItemOption?function(t,e){var n=t.getRawDataItem(e);if(n&&n[i]){$g.option=n[i];var a=r($g);A(t.ensureUniqueItemVisual(e,"style"),a),$g.option.decal&&(t.setItemVisual(e,"decal",$g.option.decal),$g.option.decal.dirty=!0),o in a&&t.setItemVisual(e,"colorFromPalette",!1)}}:null}}}},Qg={performRawSeries:!0,overallReset:function(t){var e=yt();t.eachSeries((function(t){var n=t.getColorBy();if(!t.isColorBySeries()){var i=t.type+"-"+n,r=e.get(i);r||(r={},e.set(i,r)),Xg(t).scope=r}})),t.eachSeries((function(e){if(!e.isColorBySeries()&&!t.isSeriesFiltered(e)){var n=e.getRawData(),i={},r=e.getData(),o=Xg(e).scope,a=e.visualStyleAccessPath||"itemStyle",s=qg(e,a);r.each((function(t){var e=r.getRawIndex(t);i[e]=t})),n.each((function(t){var a=i[t];if(r.getItemVisual(a,"colorFromPalette")){var l=r.ensureUniqueItemVisual(a,"style"),u=n.getName(t)||t+"",h=n.count();l[s]=e.getColorFromPalette(u,o,h)}}))}}))}},ty=Math.PI;var ey=function(){function t(t,e,n,i){this._stageTaskMap=yt(),this.ecInstance=t,this.api=e,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return t.prototype.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each((function(t){var e=t.overallTask;e&&e.dirty()}))},t.prototype.getPerformArgs=function(t,e){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,r=!e&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},t.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},t.prototype.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),r=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),a="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:r,modDataCount:a,large:o}},t.prototype.restorePipelines=function(t){var e=this,n=e._pipelineMap=yt();t.eachSeries((function(t){var i=t.getProgressive(),r=t.uid;n.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),e._pipe(t,t.dataTask)}))},t.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.api.getModel(),n=this.api;E(this._allHandlers,(function(i){var r=t.get(i.uid)||t.set(i.uid,{}),o="";lt(!(i.reset&&i.overallReset),o),i.reset&&this._createSeriesStageTask(i,r,e,n),i.overallReset&&this._createOverallStageTask(i,r,e,n)}),this)},t.prototype.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,this._pipe(e,r)},t.prototype.performDataProcessorTasks=function(t,e){this._performStageTasks(this._dataProcessorHandlers,t,e,{block:!0})},t.prototype.performVisualTasks=function(t,e,n){this._performStageTasks(this._visualHandlers,t,e,n)},t.prototype._performStageTasks=function(t,e,n,i){i=i||{};var r=!1,o=this;function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}E(t,(function(t,s){if(!i.visualType||i.visualType===t.visualType){var l=o._stageTaskMap.get(t.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,p=h.agentStubMap;p.each((function(t){a(i,t)&&(t.dirty(),c=!0)})),c&&h.dirty(),o.updatePayload(h,n);var d=o.getPerformArgs(h,i.block);p.each((function(t){t.perform(d)})),h.perform(d)&&(r=!0)}else u&&u.each((function(s,l){a(i,s)&&s.dirty();var u=o.getPerformArgs(s,i.block);u.skip=!t.performRawSeries&&e.isSeriesFiltered(s.context.model),o.updatePayload(s,n),s.perform(u)&&(r=!0)}))}})),this.unfinished=r||this.unfinished},t.prototype.performSeriesTasks=function(t){var e;t.eachSeries((function(t){e=t.dataTask.perform()||e})),this.unfinished=e||this.unfinished},t.prototype.plan=function(){this._pipelineMap.each((function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)}))},t.prototype.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},t.prototype._createSeriesStageTask=function(t,e,n,i){var r=this,o=e.seriesTaskMap,a=e.seriesTaskMap=yt(),s=t.seriesType,l=t.getTargetSeries;function u(e){var s=e.uid,l=a.set(s,o&&o.get(s)||wf({plan:ay,reset:sy,count:hy}));l.context={model:e,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:r},r._pipe(e,l)}t.createOnAllSeries?n.eachRawSeries(u):s?n.eachRawSeriesByType(s,u):l&&l(n,i).each(u)},t.prototype._createOverallStageTask=function(t,e,n,i){var r=this,o=e.overallTask=e.overallTask||wf({reset:ny});o.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:r};var a=o.agentStubMap,s=o.agentStubMap=yt(),l=t.seriesType,u=t.getTargetSeries,h=!0,c=!1,p="";function d(t){var e=t.uid,n=s.set(e,a&&a.get(e)||(c=!0,wf({reset:iy,onDirty:oy})));n.context={model:t,overallProgress:h},n.agent=o,n.__block=h,r._pipe(t,n)}lt(!t.createOnAllSeries,p),l?n.eachRawSeriesByType(l,d):u?u(n,i).each(d):(h=!1,E(n.getSeries(),d)),c&&o.dirty()},t.prototype._pipe=function(t,e){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=e),i.tail&&i.tail.pipe(e),i.tail=e,e.__idxInPipeline=i.count++,e.__pipeline=i},t.wrapStageHandler=function(t,e){return X(t)&&(t={overallReset:t,seriesType:cy(t)}),t.uid=Ac("stageHandler"),e&&(t.visualType=e),t},t}();function ny(t){t.overallReset(t.ecModel,t.api,t.payload)}function iy(t){return t.overallProgress&&ry}function ry(){this.agent.dirty(),this.getDownstream().dirty()}function oy(){this.agent&&this.agent.dirty()}function ay(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function sy(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=To(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?z(e,(function(t,e){return uy(e)})):ly}var ly=uy(0);function uy(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(r&&r.dataEach)for(var o=e.start;o0&&h===r.length-u.length){var c=r.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}a.hasOwnProperty(r)&&(n[r]=t,s=!0),s||(i[r]=t)}))}return{cptQuery:e,dataQuery:n,otherQuery:i}},t.prototype.filter=function(t,e){var n=this.eventInfo;if(!n)return!0;var i=n.targetEl,r=n.packedEvent,o=n.model,a=n.view;if(!o||!a)return!0;var s=e.cptQuery,l=e.dataQuery;return u(s,o,"mainType")&&u(s,o,"subType")&&u(s,o,"index","componentIndex")&&u(s,o,"name")&&u(s,o,"id")&&u(l,r,"name")&&u(l,r,"dataIndex")&&u(l,r,"dataType")&&(!a.filterForExposedEvent||a.filterForExposedEvent(t,e.otherQuery,i,r));function u(t,e,n,i){return null==t[n]||e[i||n]===t[n]}},t.prototype.afterTrigger=function(){this.eventInfo=null},t}(),My=["symbol","symbolSize","symbolRotate","symbolOffset"],Iy=My.concat(["symbolKeepAspect"]),Ty={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData();if(t.legendIcon&&n.setVisual("legendIcon",t.legendIcon),t.hasSymbolVisual){for(var i={},r={},o=!1,a=0;a=0&&jy(l)?l:.5,t.createRadialGradient(a,s,0,a,s,l)}(t,e,n):function(t,e,n){var i=null==e.x?0:e.x,r=null==e.x2?1:e.x2,o=null==e.y?0:e.y,a=null==e.y2?0:e.y2;return e.global||(i=i*n.width+n.x,r=r*n.width+n.x,o=o*n.height+n.y,a=a*n.height+n.y),i=jy(i)?i:0,r=jy(r)?r:1,o=jy(o)?o:0,a=jy(a)?a:0,t.createLinearGradient(i,o,r,a)}(t,e,n),r=e.colorStops,o=0;o0&&(e=i.lineDash,n=i.lineWidth,e&&"solid"!==e&&n>0?"dashed"===e?[4*n,2*n]:"dotted"===e?[n]:j(e)?[e]:Y(e)?e:null:null),o=i.lineDashOffset;if(r){var a=i.strokeNoScale&&t.getLineScale?t.getLineScale():1;a&&1!==a&&(r=z(r,(function(t){return t/a})),o/=a)}return[r,o]}var Qy=new hs(!0);function tv(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))}function ev(t){return"string"==typeof t&&"none"!==t}function nv(t){var e=t.fill;return null!=e&&"none"!==e}function iv(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.globalAlpha;t.globalAlpha=e.fillOpacity*e.opacity,t.fill(),t.globalAlpha=n}else t.fill()}function rv(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t.globalAlpha;t.globalAlpha=e.strokeOpacity*e.opacity,t.stroke(),t.globalAlpha=n}else t.stroke()}function ov(t,e,n){var i=la(e.image,e.__image,n);if(ha(i)){var r=t.createPattern(i,e.repeat||"repeat");if("function"==typeof DOMMatrix&&r&&r.setTransform){var o=new DOMMatrix;o.translateSelf(e.x||0,e.y||0),o.rotateSelf(0,0,(e.rotation||0)*wt),o.scaleSelf(e.scaleX||1,e.scaleY||1),r.setTransform(o)}return r}}var av=["shadowBlur","shadowOffsetX","shadowOffsetY"],sv=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function lv(t,e,n,i,r){var o=!1;if(!i&&e===(n=n||{}))return!1;if(i||e.opacity!==n.opacity){cv(t,r),o=!0;var a=Math.max(Math.min(e.opacity,1),0);t.globalAlpha=isNaN(a)?Ma.opacity:a}(i||e.blend!==n.blend)&&(o||(cv(t,r),o=!0),t.globalCompositeOperation=e.blend||Ma.blend);for(var s=0;s0&&t.unfinished);t.unfinished||this._zr.flush()}}},e.prototype.getDom=function(){return this._dom},e.prototype.getId=function(){return this.id},e.prototype.getZr=function(){return this._zr},e.prototype.isSSR=function(){return this._ssr},e.prototype.setOption=function(t,e,n){if(!this[Dv])if(this._disposed)om(this.id);else{var i,r,o;if(q(e)&&(n=e.lazyUpdate,i=e.silent,r=e.replaceMerge,o=e.transition,e=e.notMerge),this[Dv]=!0,!this._model||e){var a=new Md(this._api),s=this._theme,l=this._model=new gd;l.scheduler=this._scheduler,l.ssr=this._ssr,l.init(null,null,null,s,this._locale,a)}this._model.setOption(t,{replaceMerge:r},um);var u={seriesTransition:o,optionChanged:!0};if(n)this[Av]={silent:i,updateParams:u},this[Dv]=!1,this.getZr().wakeUp();else{try{Ev(this),Bv.update.call(this,null,u)}catch(t){throw this[Av]=null,this[Dv]=!1,t}this._ssr||this._zr.flush(),this[Av]=null,this[Dv]=!1,Hv.call(this,i),Yv.call(this,i)}}},e.prototype.setTheme=function(){bo()},e.prototype.getModel=function(){return this._model},e.prototype.getOption=function(){return this._model&&this._model.getOption()},e.prototype.getWidth=function(){return this._zr.getWidth()},e.prototype.getHeight=function(){return this._zr.getHeight()},e.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||r.hasGlobalWindow&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},e.prototype.renderToCanvas=function(t){t=t||{};var e=this._zr.painter;return e.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},e.prototype.renderToSVGString=function(t){t=t||{};var e=this._zr.painter;return e.renderToString({useViewBox:t.useViewBox})},e.prototype.getSvgDataURL=function(){if(r.svgSupported){var t=this._zr;return E(t.storage.getDisplayList(),(function(t){t.stopAnimation(null,!0)})),t.painter.toDataURL()}},e.prototype.getDataURL=function(t){if(!this._disposed){var e=(t=t||{}).excludeComponents,n=this._model,i=[],r=this;E(e,(function(t){n.eachComponent({mainType:t},(function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(i.push(e),e.group.ignore=!0)}))}));var o="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.renderToCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return E(i,(function(t){t.group.ignore=!1})),o}om(this.id)},e.prototype.getConnectedDataURL=function(t){if(!this._disposed){var e="svg"===t.type,n=this.group,i=Math.min,r=Math.max,o=1/0;if(fm[n]){var a=o,s=o,l=-1/0,u=-1/0,c=[],p=t&&t.pixelRatio||this.getDevicePixelRatio();E(dm,(function(o,h){if(o.group===n){var p=e?o.getZr().painter.getSvgDom().innerHTML:o.renderToCanvas(T(t)),d=o.getDom().getBoundingClientRect();a=i(d.left,a),s=i(d.top,s),l=r(d.right,l),u=r(d.bottom,u),c.push({dom:p,left:d.left,top:d.top})}}));var d=(l*=p)-(a*=p),f=(u*=p)-(s*=p),g=h.createCanvas(),y=Yr(g,{renderer:e?"svg":"canvas"});if(y.resize({width:d,height:f}),e){var v="";return E(c,(function(t){var e=t.left-a,n=t.top-s;v+=''+t.dom+""})),y.painter.getSvgRoot().innerHTML=v,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}return t.connectedBackgroundColor&&y.add(new Ws({shape:{x:0,y:0,width:d,height:f},style:{fill:t.connectedBackgroundColor}})),E(c,(function(t){var e=new Ns({style:{x:t.left*p-a,y:t.top*p-s,image:t.dom}});y.add(e)})),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}om(this.id)},e.prototype.convertToPixel=function(t,e){return Fv(this,"convertToPixel",t,e)},e.prototype.convertFromPixel=function(t,e){return Fv(this,"convertFromPixel",t,e)},e.prototype.containPixel=function(t,e){var n;if(!this._disposed)return E(Fo(this._model,t),(function(t,i){i.indexOf("Models")>=0&&E(t,(function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n=n||!!r.containPoint(e);else if("seriesModels"===i){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n=n||o.containPoint(e,t))}else 0}),this)}),this),!!n;om(this.id)},e.prototype.getVisual=function(t,e){var n=Fo(this._model,t,{defaultMainType:"series"}),i=n.seriesModel;var r=i.getData(),o=n.hasOwnProperty("dataIndexInside")?n.dataIndexInside:n.hasOwnProperty("dataIndex")?r.indexOfRawIndex(n.dataIndex):null;return null!=o?Dy(r,o,e):Ay(r,e)},e.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},e.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},e.prototype._initEvents=function(){var t,e,n,i=this;E(rm,(function(t){var e=function(e){var n,r=i.getModel(),o=e.target,a="globalout"===t;if(a?n={}:o&&Oy(o,(function(t){var e=rl(t);if(e&&null!=e.dataIndex){var i=e.dataModel||r.getSeriesByIndex(e.seriesIndex);return n=i&&i.getDataParams(e.dataIndex,e.dataType,o)||{},!0}if(e.eventData)return n=A({},e.eventData),!0}),!0),n){var s=n.componentType,l=n.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=n.seriesIndex);var u=s&&null!=l&&r.getComponent(s,l),h=u&&i["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];0,n.event=e,n.type=t,i._$eventProcessor.eventInfo={targetEl:o,packedEvent:n,model:u,view:h},i.trigger(t,n)}};e.zrEventfulCallAtLast=!0,i._zr.on(t,e,i)})),E(sm,(function(t,e){i._messageCenter.on(e,(function(t){this.trigger(e,t)}),i)})),E(["selectchanged"],(function(t){i._messageCenter.on(t,(function(e){this.trigger(t,e)}),i)})),t=this._messageCenter,e=this,n=this._api,t.on("selectchanged",(function(t){var i=n.getModel();t.isFromClick?(Py("map","selectchanged",e,i,t),Py("pie","selectchanged",e,i,t)):"select"===t.fromAction?(Py("map","selected",e,i,t),Py("pie","selected",e,i,t)):"unselect"===t.fromAction&&(Py("map","unselected",e,i,t),Py("pie","unselected",e,i,t))}))},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){this._disposed?om(this.id):this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed)om(this.id);else{this._disposed=!0,this.getDom()&&Xo(this.getDom(),vm,"");var t=this,e=t._api,n=t._model;E(t._componentsViews,(function(t){t.dispose(n,e)})),E(t._chartsViews,(function(t){t.dispose(n,e)})),t._zr.dispose(),t._dom=t._model=t._chartsMap=t._componentsMap=t._chartsViews=t._componentsViews=t._scheduler=t._api=t._zr=t._throttledZrFlush=t._theme=t._coordSysMgr=t._messageCenter=null,delete dm[t.id]}},e.prototype.resize=function(t){if(!this[Dv])if(this._disposed)om(this.id);else{this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this[Av]&&(null==i&&(i=this[Av].silent),n=!0,this[Av]=null),this[Dv]=!0;try{n&&Ev(this),Bv.update.call(this,{type:"resize",animation:A({duration:0},t&&t.animation)})}catch(t){throw this[Dv]=!1,t}this[Dv]=!1,Hv.call(this,i),Yv.call(this,i)}}},e.prototype.showLoading=function(t,e){if(this._disposed)om(this.id);else if(q(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),pm[t]){var n=pm[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},e.prototype.hideLoading=function(){this._disposed?om(this.id):(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},e.prototype.makeActionFromEvent=function(t){var e=A({},t);return e.type=sm[t.type],e},e.prototype.dispatchAction=function(t,e){if(this._disposed)om(this.id);else if(q(e)||(e={silent:!!e}),am[t.type]&&this._model)if(this[Dv])this._pendingActions.push(t);else{var n=e.silent;Wv.call(this,t,n);var i=e.flush;i?this._zr.flush():!1!==i&&r.browser.weChat&&this._throttledZrFlush(),Hv.call(this,n),Yv.call(this,n)}},e.prototype.updateLabelLayout=function(){wv.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},e.prototype.appendData=function(t){if(this._disposed)om(this.id);else{var e=t.seriesIndex,n=this.getModel().getSeriesByIndex(e);0,n.appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},e.internalField=function(){function t(t){t.clearColorPalette(),t.eachSeries((function(t){t.clearColorPalette()}))}function e(t){for(var e=[],n=t.currentStates,i=0;i0?{duration:o,delay:i.get("delay"),easing:i.get("easing")}:null;n.eachRendered((function(t){if(t.states&&t.states.emphasis){if(xh(t))return;if(t instanceof ks&&function(t){var e=ll(t);e.normalFill=t.style.fill,e.normalStroke=t.style.stroke;var n=t.states.select||{};e.selectFill=n.style&&n.style.fill||null,e.selectStroke=n.style&&n.style.stroke||null}(t),t.__dirty){var n=t.prevStates;n&&t.useStates(n)}if(r){t.stateTransition=a;var i=t.getTextContent(),o=t.getTextGuideLine();i&&(i.stateTransition=a),o&&(o.stateTransition=a)}t.__dirty&&e(t)}}))}Ev=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),zv(t,!0),zv(t,!1),e.plan()},zv=function(t,e){for(var n=t._model,i=t._scheduler,r=e?t._componentsViews:t._chartsViews,o=e?t._componentsMap:t._chartsMap,a=t._zr,s=t._api,l=0;le.get("hoverLayerThreshold")&&!r.node&&!r.worker&&e.eachSeries((function(e){if(!e.preventUsingHoverLayer){var n=t._chartsMap[e.__viewId];n.__alive&&n.eachRendered((function(t){t.states.emphasis&&(t.states.emphasis.hoverLayer=!0)}))}}))}(t,e),wv.trigger("series:afterupdate",e,n,l)},Jv=function(t){t[kv]=!0,t.getZr().wakeUp()},Qv=function(t){t[kv]&&(t.getZr().storage.traverse((function(t){xh(t)||e(t)})),t[kv]=!1)},Kv=function(t){return new(function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return n(i,e),i.prototype.getCoordinateSystems=function(){return t._coordSysMgr.getCoordinateSystems()},i.prototype.getComponentByElement=function(e){for(;e;){var n=e.__ecComponentInfo;if(null!=n)return t._model.getComponent(n.mainType,n.index);e=e.parent}},i.prototype.enterEmphasis=function(e,n){Ol(e,n),Jv(t)},i.prototype.leaveEmphasis=function(e,n){Rl(e,n),Jv(t)},i.prototype.enterBlur=function(e){Nl(e),Jv(t)},i.prototype.leaveBlur=function(e){El(e),Jv(t)},i.prototype.enterSelect=function(e){zl(e),Jv(t)},i.prototype.leaveSelect=function(e){Vl(e),Jv(t)},i.prototype.getModel=function(){return t.getModel()},i.prototype.getViewOfComponentModel=function(e){return t.getViewOfComponentModel(e)},i.prototype.getViewOfSeriesModel=function(e){return t.getViewOfSeriesModel(e)},i}(_d))(t)},$v=function(t){function e(t,e){for(var n=0;n=0)){Lm.push(n);var o=ey.wrapStageHandler(n,r);o.__prio=e,o.__raw=n,t.push(o)}}function Om(t,e){pm[t]=e}function Rm(t,e,n){var i=Mv("registerMap");i&&i(t,e,n)}var Nm=function(t){var e=(t=T(t)).type,n="";e||wo(n);var i=e.split(":");2!==i.length&&wo(n);var r=!1;"echarts"===i[0]&&(e=i[1],r=!0),t.__isBuiltIn=r,Vf.set(e,t)};km(Iv,Kg),km(Tv,Jg),km(Tv,Qg),km(Iv,Ty),km(Tv,Cy),km(7e3,(function(t,e){t.eachRawSeries((function(n){if(!t.isSeriesFiltered(n)){var i=n.getData();i.hasItemVisual()&&i.each((function(t){var n=i.getItemVisual(t,"decal");n&&(i.ensureUniqueItemVisual(t,"style").decal=mv(n,e))}));var r=i.getVisual("decal");if(r)i.getVisual("style").decal=mv(r,e)}}))})),wm(Xd),Sm(900,(function(t){var e=yt();t.eachSeries((function(t){var n=t.get("stack");if(n){var i=e.get(n)||e.set(n,[]),r=t.getData(),o={stackResultDimension:r.getCalculationInfo("stackResultDimension"),stackedOverDimension:r.getCalculationInfo("stackedOverDimension"),stackedDimension:r.getCalculationInfo("stackedDimension"),stackedByDimension:r.getCalculationInfo("stackedByDimension"),isStackedByIndex:r.getCalculationInfo("isStackedByIndex"),data:r,seriesModel:t};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&r.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(o)}})),e.each(Ud)})),Om("default",(function(t,e){k(e=e||{},{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new Br,i=new Ws({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(i);var r,o=new Xs({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),a=new Ws({style:{fill:"none"},textContent:o,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});return n.add(a),e.showSpinner&&((r=new nh({shape:{startAngle:-ty/2,endAngle:-ty/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001})).animateShape(!0).when(1e3,{endAngle:3*ty/2}).start("circularInOut"),r.animateShape(!0).when(1e3,{startAngle:3*ty/2}).delay(300).start("circularInOut"),n.add(r)),n.resize=function(){var n=o.getBoundingRect().width,s=e.showSpinner?e.spinnerRadius:0,l=(t.getWidth()-2*s-(e.showSpinner&&n?10:0)-n)/2-(e.showSpinner&&n?0:5+n/2)+(e.showSpinner?0:n/2)+(n?0:s),u=t.getHeight()/2;e.showSpinner&&r.setShape({cx:l,cy:u}),a.setShape({x:l-s,y:u-s,width:2*s,height:2*s}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},n.resize(),n})),Cm({type:dl,event:dl,update:dl},bt),Cm({type:fl,event:fl,update:fl},bt),Cm({type:gl,event:gl,update:gl},bt),Cm({type:yl,event:yl,update:yl},bt),Cm({type:vl,event:vl,update:vl},bt),bm("light",vy),bm("dark",wy);var Em=[],zm={registerPreprocessor:wm,registerProcessor:Sm,registerPostInit:Mm,registerPostUpdate:Im,registerUpdateLifecycle:Tm,registerAction:Cm,registerCoordinateSystem:Dm,registerLayout:Am,registerVisual:km,registerTransform:Nm,registerLoading:Om,registerMap:Rm,registerImpl:function(t,e){Sv[t]=e},PRIORITY:Cv,ComponentModel:zp,ComponentView:Ag,SeriesModel:bg,ChartView:Og,registerComponentModel:function(t){zp.registerClass(t)},registerComponentView:function(t){Ag.registerClass(t)},registerSeriesModel:function(t){bg.registerClass(t)},registerChartView:function(t){Og.registerClass(t)},registerSubTypeDefaulter:function(t,e){zp.registerSubTypeDefaulter(t,e)},registerPainter:function(t,e){Xr(t,e)}};function Vm(t){Y(t)?E(t,(function(t){Vm(t)})):P(Em,t)>=0||(Em.push(t),X(t)&&(t={install:t}),t.install(zm))}function Bm(t){return null==t?0:t.length||1}function Fm(t){return t}var Gm=function(){function t(t,e,n,i,r,o){this._old=t,this._new=e,this._oldKeyGetter=n||Fm,this._newKeyGetter=i||Fm,this.context=r,this._diffModeMultiple="multiple"===o}return t.prototype.add=function(t){return this._add=t,this},t.prototype.update=function(t){return this._update=t,this},t.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},t.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},t.prototype.updateManyToMany=function(t){return this._updateManyToMany=t,this},t.prototype.remove=function(t){return this._remove=t,this},t.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},t.prototype._executeOneToOne=function(){var t=this._old,e=this._new,n={},i=new Array(t.length),r=new Array(e.length);this._initIndexMap(t,null,i,"_oldKeyGetter"),this._initIndexMap(e,n,r,"_newKeyGetter");for(var o=0;o1){var u=s.shift();1===s.length&&(n[a]=s[0]),this._update&&this._update(u,o)}else 1===l?(n[a]=null,this._update&&this._update(s,o)):this._remove&&this._remove(o)}this._performRestAdd(r,n)},t.prototype._executeMultiple=function(){var t=this._old,e=this._new,n={},i={},r=[],o=[];this._initIndexMap(t,n,r,"_oldKeyGetter"),this._initIndexMap(e,i,o,"_newKeyGetter");for(var a=0;a1&&1===c)this._updateManyToOne&&this._updateManyToOne(u,l),i[s]=null;else if(1===h&&c>1)this._updateOneToMany&&this._updateOneToMany(u,l),i[s]=null;else if(1===h&&1===c)this._update&&this._update(u,l),i[s]=null;else if(h>1&&c>1)this._updateManyToMany&&this._updateManyToMany(u,l),i[s]=null;else if(h>1)for(var p=0;p1)for(var a=0;a30}var Qm,tx,ex,nx,ix,rx,ox,ax=q,sx=z,lx="undefined"==typeof Int32Array?Array:Int32Array,ux=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],hx=["_approximateExtent"],cx=function(){function t(t,e){var n;this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","lttbDownSample"];var i=!1;qm(t)?(n=t.dimensions,this._dimOmitted=t.isDimensionOmitted(),this._schema=t):(i=!0,n=t),n=n||["x","y"];for(var r={},o=[],a={},s=!1,l={},u=0;u=e)){var n=this._store.getProvider();this._updateOrdinalMeta();var i=this._nameList,r=this._idList;if(n.getSource().sourceFormat===Wp&&!n.pure)for(var o=[],a=t;a0},t.prototype.ensureUniqueItemVisual=function(t,e){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var r=i[e];return null==r&&(Y(r=this.getVisual(e))?r=r.slice():ax(r)&&(r=A({},r)),i[e]=r),r},t.prototype.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,ax(e)?A(i,e):i[e]=n},t.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},t.prototype.setLayout=function(t,e){ax(t)?A(this._layout,t):this._layout[t]=e},t.prototype.getLayout=function(t){return this._layout[t]},t.prototype.getItemLayout=function(t){return this._itemLayouts[t]},t.prototype.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?A(this._itemLayouts[t]||{},e):e},t.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},t.prototype.setItemGraphicEl=function(t,e){var n=this.hostModel&&this.hostModel.seriesIndex;ol(n,this.dataType,t,e),this._graphicEls[t]=e},t.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},t.prototype.eachItemGraphicEl=function(t,e){E(this._graphicEls,(function(n,i){n&&t&&t.call(e,n,i)}))},t.prototype.cloneShallow=function(e){return e||(e=new t(this._schema?this._schema:sx(this.dimensions,this._getDimInfo,this),this.hostModel)),ix(e,this),e._store=this._store,e},t.prototype.wrapMethod=function(t,e){var n=this[t];X(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=n.apply(this,arguments);return e.apply(this,[t].concat(at(arguments)))})},t.internalField=(Qm=function(t){var e=t._invertedIndicesMap;E(e,(function(n,i){var r=t._dimInfos[i],o=r.ordinalMeta,a=t._store;if(o){n=e[i]=new lx(o.categories.length);for(var s=0;s1&&(s+="__ec__"+u),i[e]=s}})),t}();function px(t,e){Qd(t)||(t=ef(t));var n=(e=e||{}).coordDimensions||[],i=e.dimensionsDefine||t.dimensionsDefine||[],r=yt(),o=[],a=function(t,e,n,i){var r=Math.max(t.dimensionsDetectedCount||1,e.length,n.length,i||0);return E(e,(function(t){var e;q(t)&&(e=t.dimsDef)&&(r=Math.max(r,e.length))})),r}(t,n,i,e.dimensionsCount),s=e.canOmitUnusedDimensions&&Jm(a),l=i===t.dimensionsDefine,u=l?$m(t):Km(i),h=e.encodeDefine;!h&&e.encodeDefaulter&&(h=e.encodeDefaulter(t,a));for(var c=yt(h),p=new Xf(a),d=0;d0&&(i.name=r+(o-1)),o++,e.set(r,o)}}(o),new jm({source:t,dimensions:o,fullDimensionCount:a,dimensionOmitted:s})}function dx(t,e,n){if(n||e.hasKey(t)){for(var i=0;e.hasKey(t+i);)i++;t+=i}return e.set(t,!0),t}var fx=function(t){this.coordSysDims=[],this.axisMap=yt(),this.categoryAxisMap=yt(),this.coordSysName=t};var gx={cartesian2d:function(t,e,n,i){var r=t.getReferringComponents("xAxis",Wo).models[0],o=t.getReferringComponents("yAxis",Wo).models[0];e.coordSysDims=["x","y"],n.set("x",r),n.set("y",o),yx(r)&&(i.set("x",r),e.firstCategoryDimIndex=0),yx(o)&&(i.set("y",o),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},singleAxis:function(t,e,n,i){var r=t.getReferringComponents("singleAxis",Wo).models[0];e.coordSysDims=["single"],n.set("single",r),yx(r)&&(i.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,n,i){var r=t.getReferringComponents("polar",Wo).models[0],o=r.findAxisModel("radiusAxis"),a=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],n.set("radius",o),n.set("angle",a),yx(o)&&(i.set("radius",o),e.firstCategoryDimIndex=0),yx(a)&&(i.set("angle",a),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},geo:function(t,e,n,i){e.coordSysDims=["lng","lat"]},parallel:function(t,e,n,i){var r=t.ecModel,o=r.getComponent("parallel",t.get("parallelIndex")),a=e.coordSysDims=o.dimensions.slice();E(o.parallelAxisIndex,(function(t,o){var s=r.getComponent("parallelAxis",t),l=a[o];n.set(l,s),yx(s)&&(i.set(l,s),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=o))}))}};function yx(t){return"category"===t.get("type")}function vx(t,e,n){var i,r,o,a=(n=n||{}).byIndex,s=n.stackedCoordDimension;!function(t){return!qm(t.schema)}(e)?(r=e.schema,i=r.dimensions,o=e.store):i=e;var l,u,h,c,p=!(!t||!t.get("stack"));if(E(i,(function(t,e){U(t)&&(i[e]=t={name:t}),p&&!t.isExtraCoord&&(a||l||!t.ordinalMeta||(l=t),u||"ordinal"===t.type||"time"===t.type||s&&s!==t.coordDim||(u=t))})),!u||a||l||(a=!0),u){h="__\0ecstackresult_"+t.id,c="__\0ecstackedover_"+t.id,l&&(l.createInvertedIndices=!0);var d=u.coordDim,f=u.type,g=0;E(i,(function(t){t.coordDim===d&&g++}));var y={name:h,coordDim:d,coordDimIndex:g,type:f,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length},v={name:c,coordDim:c,coordDimIndex:g+1,type:f,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length+1};r?(o&&(y.storeDimIndex=o.ensureCalculationDimension(c,f),v.storeDimIndex=o.ensureCalculationDimension(h,f)),r.appendCalculationDimension(y),r.appendCalculationDimension(v)):(i.push(y),i.push(v))}return{stackedDimension:u&&u.name,stackedByDimension:l&&l.name,isStackedByIndex:a,stackedOverDimension:c,stackResultDimension:h}}function mx(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function xx(t,e){return mx(t,e)?t.getCalculationInfo("stackResultDimension"):e}function _x(t,e,n){n=n||{};var i,r=e.getSourceManager(),o=!1;t?(o=!0,i=ef(t)):o=(i=r.getSource()).sourceFormat===Wp;var a=function(t){var e=t.get("coordinateSystem"),n=new fx(e),i=gx[e];if(i)return i(t,n,n.axisMap,n.categoryAxisMap),n}(e),s=function(t,e){var n,i=t.get("coordinateSystem"),r=wd.get(i);return e&&e.coordSysDims&&(n=z(e.coordSysDims,(function(t){var n={name:t},i=e.axisMap.get(t);if(i){var r=i.get("type");n.type=Ym(r)}return n}))),n||(n=r&&(r.getDimensionsInfo?r.getDimensionsInfo():r.dimensions.slice())||["x","y"]),n}(e,a),l=n.useEncodeDefaulter,u=X(l)?l:l?H(td,s,e):null,h=px(i,{coordDimensions:s,generateCoord:n.generateCoord,encodeDefine:e.getEncode(),encodeDefaulter:u,canOmitUnusedDimensions:!o}),c=function(t,e,n){var i,r;return n&&E(t,(function(t,o){var a=t.coordDim,s=n.categoryAxisMap.get(a);s&&(null==i&&(i=o),t.ordinalMeta=s.getOrdinalMeta(),e&&(t.createInvertedIndices=!0)),null!=t.otherDims.itemName&&(r=!0)})),r||null==i||(t[i].otherDims.itemName=0),i}(h.dimensions,n.createInvertedIndices,a),p=o?null:r.getSharedDataStore(h),d=vx(e,{schema:h,store:p}),f=new cx(h,e);f.setCalculationInfo(d);var g=null!=c&&function(t){if(t.sourceFormat===Wp){var e=function(t){var e=0;for(;ee[1]&&(e[1]=t[1])},t.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},t.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},t.prototype.isBlank=function(){return this._isBlank},t.prototype.setBlank=function(t){this._isBlank=t},t}();na(bx);var Sx=0,Mx=function(){function t(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this.uid=++Sx}return t.createByAxisModel=function(e){var n=e.option,i=n.data,r=i&&z(i,Ix);return new t({categories:r,needCollect:!r,deduplication:!1!==n.dedplication})},t.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},t.prototype.parseAndCollect=function(t){var e,n=this._needCollect;if(!U(t)&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var i=this._getOrCreateMap();return null==(e=i.get(t))&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=NaN),e},t.prototype._getOrCreateMap=function(){return this._map||(this._map=yt(this.categories))},t}();function Ix(t){return q(t)&&null!=t.value?t.value:t+""}function Tx(t){return"interval"===t.type||"log"===t.type}function Cx(t,e,n,i){var r={},o=t[1]-t[0],a=r.interval=po(o/e,!0);null!=n&&ai&&(a=r.interval=i);var s=r.intervalPrecision=Ax(a);return function(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),kx(t,0,e),kx(t,1,e),t[0]>t[1]&&(t[0]=t[1])}(r.niceTickExtent=[Jr(Math.ceil(t[0]/a)*a,s),Jr(Math.floor(t[1]/a)*a,s)],t),r}function Dx(t){var e=Math.pow(10,co(t)),n=t/e;return n?2===n?n=3:3===n?n=5:n*=2:n=1,Jr(n*e)}function Ax(t){return to(t)+2}function kx(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function Lx(t,e){return t>=e[0]&&t<=e[1]}function Px(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}function Ox(t,e){return t*(e[1]-e[0])+e[0]}var Rx=function(t){function e(e){var n=t.call(this,e)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new Mx({})),Y(i)&&(i=new Mx({categories:z(i,(function(t){return q(t)?t.value:t}))})),n._ordinalMeta=i,n._extent=n.getSetting("extent")||[0,i.categories.length-1],n}return n(e,t),e.prototype.parse=function(t){return null==t?NaN:U(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},e.prototype.contain=function(t){return Lx(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},e.prototype.normalize=function(t){return Px(t=this._getTickNumber(this.parse(t)),this._extent)},e.prototype.scale=function(t){return t=Math.round(Ox(t,this._extent)),this.getRawOrdinalNumber(t)},e.prototype.getTicks=function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push({value:n}),n++;return t},e.prototype.getMinorTicks=function(t){},e.prototype.setSortInfo=function(t){if(null!=t){for(var e=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],r=0,o=this._ordinalMeta.categories.length,a=Math.min(o,e.length);r=0&&t=0&&t=t},e.prototype.getOrdinalMeta=function(){return this._ordinalMeta},e.prototype.calcNiceTicks=function(){},e.prototype.calcNiceExtent=function(){},e.type="ordinal",e}(bx);bx.registerClass(Rx);var Nx=Jr,Ex=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="interval",e._interval=0,e._intervalPrecision=2,e}return n(e,t),e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return Lx(t,this._extent)},e.prototype.normalize=function(t){return Px(t,this._extent)},e.prototype.scale=function(t){return Ox(t,this._extent)},e.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},e.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),this.setExtent(e[0],e[1])},e.prototype.getInterval=function(){return this._interval},e.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Ax(t)},e.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!e)return o;n[0]1e4)return[];var s=o.length?o[o.length-1].value:i[1];return n[1]>s&&(t?o.push({value:Nx(s+e,r)}):o.push({value:n[1]})),o},e.prototype.getMinorTicks=function(t){for(var e=this.getTicks(!0),n=[],i=this.getExtent(),r=1;ri[0]&&h0&&(o=null===o?s:Math.min(o,s))}n[i]=o}}return n}(t),n=[];return E(t,(function(t){var i,r=t.coordinateSystem.getBaseAxis(),o=r.getExtent();if("category"===r.type)i=r.getBandWidth();else if("value"===r.type||"time"===r.type){var a=r.dim+"_"+r.index,s=e[a],l=Math.abs(o[1]-o[0]),u=r.scale.getExtent(),h=Math.abs(u[1]-u[0]);i=s?l/h*s:l}else{var c=t.getData();i=Math.abs(o[1]-o[0])/c.count()}var p=$r(t.get("barWidth"),i),d=$r(t.get("barMaxWidth"),i),f=$r(t.get("barMinWidth")||(qx(t)?.5:1),i),g=t.get("barGap"),y=t.get("barCategoryGap");n.push({bandWidth:i,barWidth:p,barMaxWidth:d,barMinWidth:f,barGap:g,barCategoryGap:y,axisKey:Wx(r),stackId:Gx(t)})})),Xx(n)}function Xx(t){var e={};E(t,(function(t,n){var i=t.axisKey,r=t.bandWidth,o=e[i]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},a=o.stacks;e[i]=o;var s=t.stackId;a[s]||o.autoWidthCount++,a[s]=a[s]||{width:0,maxWidth:0};var l=t.barWidth;l&&!a[s].width&&(a[s].width=l,l=Math.min(o.remainedWidth,l),o.remainedWidth-=l);var u=t.barMaxWidth;u&&(a[s].maxWidth=u);var h=t.barMinWidth;h&&(a[s].minWidth=h);var c=t.barGap;null!=c&&(o.gap=c);var p=t.barCategoryGap;null!=p&&(o.categoryGap=p)}));var n={};return E(e,(function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=t.categoryGap;if(null==o){var a=G(i).length;o=Math.max(35-4*a,15)+"%"}var s=$r(o,r),l=$r(t.gap,1),u=t.remainedWidth,h=t.autoWidthCount,c=(u-s)/(h+(h-1)*l);c=Math.max(c,0),E(i,(function(t){var e=t.maxWidth,n=t.minWidth;if(t.width){i=t.width;e&&(i=Math.min(i,e)),n&&(i=Math.max(i,n)),t.width=i,u-=i+l*i,h--}else{var i=c;e&&ei&&(i=n),i!==c&&(t.width=i,u-=i+l*i,h--)}})),c=(u-s)/(h+(h-1)*l),c=Math.max(c,0);var p,d=0;E(i,(function(t,e){t.width||(t.width=c),p=t,d+=t.width*(1+l)})),p&&(d-=p.width*l);var f=-d/2;E(i,(function(t,i){n[e][i]=n[e][i]||{bandWidth:r,offset:f,width:t.width},f+=t.width*(1+l)}))})),n}function Ux(t,e){var n=Hx(t,e),i=Yx(n);E(n,(function(t){var e=t.getData(),n=t.coordinateSystem.getBaseAxis(),r=Gx(t),o=i[Wx(n)][r],a=o.offset,s=o.width;e.setLayout({bandWidth:o.bandWidth,offset:a,size:s})}))}function Zx(t){return{seriesType:t,plan:kg(),reset:function(t){if(jx(t)){var e=t.getData(),n=t.coordinateSystem,i=n.getBaseAxis(),r=n.getOtherAxis(i),o=e.getDimensionIndex(e.mapDimension(r.dim)),a=e.getDimensionIndex(e.mapDimension(i.dim)),s=t.get("showBackground",!0),l=e.mapDimension(r.dim),u=e.getCalculationInfo("stackResultDimension"),h=mx(e,l)&&!!e.getCalculationInfo("stackedOnSeries"),c=r.isHorizontal(),p=function(t,e){var n=e.model.get("startValue");n||(n=0);return e.toGlobalCoord(e.dataToCoord("log"===e.type?n>0?n:1:n))}(0,r),d=qx(t),f=t.get("barMinHeight")||0,g=u&&e.getDimensionIndex(u),y=e.getLayout("size"),v=e.getLayout("offset");return{progress:function(t,e){for(var i,r=t.count,l=d&&Bx(3*r),u=d&&s&&Bx(3*r),m=d&&Bx(r),x=n.master.getRect(),_=c?x.width:x.height,b=e.getStore(),w=0;null!=(i=t.next());){var S=b.get(h?g:o,i),M=b.get(a,i),I=p,T=void 0;h&&(T=+S-b.get(o,i));var C=void 0,D=void 0,A=void 0,k=void 0;if(c){var L=n.dataToPoint([S,M]);if(h)I=n.dataToPoint([T,M])[0];C=I,D=L[1]+v,A=L[0]-I,k=y,Math.abs(A)0)for(var s=0;s=0;--s)if(l[u]){o=l[u];break}o=o||a.none}if(Y(o)){var h=null==t.level?0:t.level>=0?t.level:o.length+t.level;o=o[h=Math.min(h,o.length-1)]}}return Jc(new Date(t.value),o,r,i)}(t,e,n,this.getSetting("locale"),i)},e.prototype.getTicks=function(){var t=this._interval,e=this._extent,n=[];if(!t)return n;n.push({value:e[0],level:0});var i=this.getSetting("useUTC"),r=function(t,e,n,i){var r=1e4,o=jc,a=0;function s(t,e,n,r,o,a,s){for(var l=new Date(e),u=e,h=l[r]();u1&&0===u&&o.unshift({value:o[0].value-p})}}for(u=0;u=i[0]&&v<=i[1]&&c++)}var m=(i[1]-i[0])/e;if(c>1.5*m&&p>m/1.5)break;if(u.push(g),c>m||t===o[d])break}h=[]}}0;var x=B(z(u,(function(t){return B(t,(function(t){return t.value>=i[0]&&t.value<=i[1]&&!t.notAdd}))})),(function(t){return t.length>0})),_=[],b=x.length-1;for(d=0;dn&&(this._approxInterval=n);var o=$x.length,a=Math.min(function(t,e,n,i){for(;n>>1;t[r][1]16?16:t>7.5?7:t>3.5?4:t>1.5?2:1}function Qx(t){return(t/=2592e6)>6?6:t>3?3:t>2?2:1}function t_(t){return(t/=Gc)>12?12:t>6?6:t>3.5?4:t>2?2:1}function e_(t,e){return(t/=e?Fc:Bc)>30?30:t>20?20:t>15?15:t>10?10:t>5?5:t>2?2:1}function n_(t){return po(t,!0)}function i_(t,e,n){var i=new Date(t);switch(Kc(e)){case"year":case"month":i[up(n)](0);case"day":i[hp(n)](1);case"hour":i[cp(n)](0);case"minute":i[pp(n)](0);case"second":i[dp(n)](0),i[fp(n)](0)}return i.getTime()}bx.registerClass(Kx);var r_=bx.prototype,o_=Ex.prototype,a_=Jr,s_=Math.floor,l_=Math.ceil,u_=Math.pow,h_=Math.log,c_=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e.base=10,e._originalScale=new Ex,e._interval=0,e}return n(e,t),e.prototype.getTicks=function(t){var e=this._originalScale,n=this._extent,i=e.getExtent();return z(o_.getTicks.call(this,t),(function(t){var e=t.value,r=Jr(u_(this.base,e));return r=e===n[0]&&this._fixMin?d_(r,i[0]):r,{value:r=e===n[1]&&this._fixMax?d_(r,i[1]):r}}),this)},e.prototype.setExtent=function(t,e){var n=h_(this.base);t=h_(Math.max(0,t))/n,e=h_(Math.max(0,e))/n,o_.setExtent.call(this,t,e)},e.prototype.getExtent=function(){var t=this.base,e=r_.getExtent.call(this);e[0]=u_(t,e[0]),e[1]=u_(t,e[1]);var n=this._originalScale.getExtent();return this._fixMin&&(e[0]=d_(e[0],n[0])),this._fixMax&&(e[1]=d_(e[1],n[1])),e},e.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=h_(t[0])/h_(e),t[1]=h_(t[1])/h_(e),r_.unionExtent.call(this,t)},e.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},e.prototype.calcNiceTicks=function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(n===1/0||n<=0)){var i=ho(n);for(t/n*i<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var r=[Jr(l_(e[0]/i)*i),Jr(s_(e[1]/i)*i)];this._interval=i,this._niceExtent=r}},e.prototype.calcNiceExtent=function(t){o_.calcNiceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return Lx(t=h_(t)/h_(this.base),this._extent)},e.prototype.normalize=function(t){return Px(t=h_(t)/h_(this.base),this._extent)},e.prototype.scale=function(t){return t=Ox(t,this._extent),u_(this.base,t)},e.type="log",e}(bx),p_=c_.prototype;function d_(t,e){return a_(t,to(e))}p_.getMinorTicks=o_.getMinorTicks,p_.getLabel=o_.getLabel,bx.registerClass(c_);var f_=function(){function t(t,e,n){this._prepareParams(t,e,n)}return t.prototype._prepareParams=function(t,e,n){n[1]0&&s>0&&!l&&(a=0),a<0&&s<0&&!u&&(s=0));var c=this._determinedMin,p=this._determinedMax;return null!=c&&(a=c,l=!0),null!=p&&(s=p,u=!0),{min:a,max:s,minFixed:l,maxFixed:u,isBlank:h}},t.prototype.modifyDataMinMax=function(t,e){this[y_[t]]=e},t.prototype.setDeterminedMinMax=function(t,e){var n=g_[t];this[n]=e},t.prototype.freeze=function(){this.frozen=!0},t}(),g_={min:"_determinedMin",max:"_determinedMax"},y_={min:"_dataMin",max:"_dataMax"};function v_(t,e,n){var i=t.rawExtentInfo;return i||(i=new f_(t,e,n),t.rawExtentInfo=i,i)}function m_(t,e){return null==e?null:nt(e)?NaN:t.parse(e)}function x_(t,e){var n=t.type,i=v_(t,e,t.getExtent()).calculate();t.setBlank(i.isBlank);var r=i.min,o=i.max,a=e.ecModel;if(a&&"time"===n){var s=Hx("bar",a),l=!1;if(E(s,(function(t){l=l||t.getBaseAxis()===e.axis})),l){var u=Yx(s),h=function(t,e,n,i){var r=n.axis.getExtent(),o=r[1]-r[0],a=function(t,e,n){if(t&&e){var i=t[Wx(e)];return null!=i&&null!=n?i[Gx(n)]:i}}(i,n.axis);if(void 0===a)return{min:t,max:e};var s=1/0;E(a,(function(t){s=Math.min(t.offset,s)}));var l=-1/0;E(a,(function(t){l=Math.max(t.offset+t.width,l)})),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/o)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}(r,o,e,u);r=h.min,o=h.max}}return{extent:[r,o],fixMin:i.minFixed,fixMax:i.maxFixed}}function __(t,e){var n=e,i=x_(t,n),r=i.extent,o=n.get("splitNumber");t instanceof c_&&(t.base=n.get("logBase"));var a=t.type,s=n.get("interval"),l="interval"===a||"time"===a;t.setExtent(r[0],r[1]),t.calcNiceExtent({splitNumber:o,fixMin:i.fixMin,fixMax:i.fixMax,minInterval:l?n.get("minInterval"):null,maxInterval:l?n.get("maxInterval"):null}),null!=s&&t.setInterval&&t.setInterval(s)}function b_(t,e){if(e=e||t.get("type"))switch(e){case"category":return new Rx({ordinalMeta:t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),extent:[1/0,-1/0]});case"time":return new Kx({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new(bx.getClass(e)||Ex)}}function w_(t){var e,n,i=t.getLabelModel().get("formatter"),r="category"===t.type?t.scale.getExtent()[0]:null;return"time"===t.scale.type?(n=i,function(e,i){return t.scale.getFormattedLabel(e,i,n)}):U(i)?function(e){return function(n){var i=t.scale.getLabel(n);return e.replace("{value}",null!=i?i:"")}}(i):X(i)?(e=i,function(n,i){return null!=r&&(i=n.value-r),e(S_(t,n),i,null!=n.level?{level:n.level}:null)}):function(e){return t.scale.getLabel(e)}}function S_(t,e){return"category"===t.type?t.scale.getLabel(e):e.value}function M_(t,e){var n=e*Math.PI/180,i=t.width,r=t.height,o=i*Math.abs(Math.cos(n))+Math.abs(r*Math.sin(n)),a=i*Math.abs(Math.sin(n))+Math.abs(r*Math.cos(n));return new ze(t.x,t.y,o,a)}function I_(t){var e=t.get("interval");return null==e?"auto":e}function T_(t){return"category"===t.type&&0===I_(t.getLabelModel())}function C_(t,e){var n={};return E(t.mapDimensionsAll(e),(function(e){n[xx(t,e)]=!0})),G(n)}var D_=function(){function t(){}return t.prototype.getNeedCrossZero=function(){return!this.option.scale},t.prototype.getCoordSysModel=function(){},t}();var A_={isDimensionStacked:mx,enableDataStack:vx,getStackedDimension:xx};var k_=Object.freeze({__proto__:null,createList:function(t){return _x(null,t)},getLayoutRect:kp,dataStack:A_,createScale:function(t,e){var n=e;e instanceof Cc||(n=new Cc(e));var i=b_(n);return i.setExtent(t[0],t[1]),__(i,n),i},mixinAxisModelCommonMethods:function(t){R(t,D_)},getECData:rl,createTextStyle:function(t,e){return oc(t,null,null,"normal"!==(e=e||{}).state)},createDimensions:function(t,e){return px(t,e).dimensions},createSymbol:Xy,enableHoverEmphasis:Ul});function L_(t,e){return Math.abs(t-e)<1e-8}function P_(t,e,n){var i=0,r=t[0];if(!r)return!1;for(var o=1;on&&(t=r,n=a)}if(t)return function(t){for(var e=0,n=0,i=0,r=t.length,o=t[r-1][0],a=t[r-1][1],s=0;s>1^-(1&s),l=l>>1^-(1&l),r=s+=r,o=l+=o,i.push([s/n,l/n])}return i}function H_(t,e){return z(B((t=function(t){if(!t.UTF8Encoding)return t;var e=t,n=e.UTF8Scale;return null==n&&(n=1024),E(e.features,(function(t){var e=t.geometry,i=e.encodeOffsets,r=e.coordinates;if(i)switch(e.type){case"LineString":e.coordinates=W_(r,i,n);break;case"Polygon":case"MultiLineString":G_(r,i,n);break;case"MultiPolygon":E(r,(function(t,e){return G_(t,i[e],n)}))}})),e.UTF8Encoding=!1,e}(t)).features,(function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0})),(function(t){var n=t.properties,i=t.geometry,r=[];switch(i.type){case"Polygon":var o=i.coordinates;r.push(new z_(o[0],o.slice(1)));break;case"MultiPolygon":E(i.coordinates,(function(t){t[0]&&r.push(new z_(t[0],t.slice(1)))}));break;case"LineString":r.push(new V_([i.coordinates]));break;case"MultiLineString":r.push(new V_(i.coordinates))}var a=new B_(n[e||"name"],r,n.cp);return a.properties=n,a}))}var Y_=Object.freeze({__proto__:null,linearMap:Kr,round:Jr,asc:Qr,getPrecision:to,getPrecisionSafe:eo,getPixelPrecision:no,getPercentWithPrecision:function(t,e,n){return t[e]&&io(t,n)[e]||0},MAX_SAFE_INTEGER:oo,remRadian:ao,isRadianAroundZero:so,parseDate:uo,quantity:ho,quantityExponent:co,nice:po,quantile:fo,reformIntervals:go,isNumeric:vo,numericToNumber:yo}),X_=Object.freeze({__proto__:null,parse:uo,format:Jc}),U_=Object.freeze({__proto__:null,extendShape:Ch,extendPath:Ah,makePath:Ph,makeImage:Oh,mergePath:Nh,resizePath:Eh,createIcon:Uh,updateProps:vh,initProps:mh,getTransform:Bh,clipPointsByRect:Yh,clipRectByRect:Xh,registerShape:kh,getShapeClass:Lh,Group:Br,Image:Ns,Text:Xs,Circle:Su,Ellipse:Iu,Sector:Fu,Ring:Wu,Polygon:Xu,Polyline:Zu,Rect:Ws,Line:Ku,BezierCurve:th,Arc:nh,IncrementalDisplayable:dh,CompoundPath:ih,LinearGradient:oh,RadialGradient:ah,BoundingRect:ze}),Z_=Object.freeze({__proto__:null,addCommas:gp,toCamelCase:yp,normalizeCssArray:vp,encodeHTML:re,formatTpl:bp,getTooltipMarker:wp,formatTime:function(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=uo(e),r=n?"getUTC":"get",o=i[r+"FullYear"](),a=i[r+"Month"]()+1,s=i[r+"Date"](),l=i[r+"Hours"](),u=i[r+"Minutes"](),h=i[r+"Seconds"](),c=i[r+"Milliseconds"]();return t=t.replace("MM",qc(a,2)).replace("M",a).replace("yyyy",o).replace("yy",qc(o%100+"",2)).replace("dd",qc(s,2)).replace("d",s).replace("hh",qc(l,2)).replace("h",l).replace("mm",qc(u,2)).replace("m",u).replace("ss",qc(h,2)).replace("s",h).replace("SSS",qc(c,3))},capitalFirst:function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},truncateText:pa,getTextRect:function(t,e,n,i,r,o,a,s){return new Xs({style:{text:t,font:e,align:n,verticalAlign:i,padding:r,rich:o,overflow:a?"truncate":null,lineHeight:s}}).getBoundingRect()}}),j_=Object.freeze({__proto__:null,map:z,each:E,indexOf:P,inherits:O,reduce:V,filter:B,bind:W,curry:H,isArray:Y,isString:U,isObject:q,isFunction:X,extend:A,defaults:k,clone:T,merge:C}),q_=Vo();function K_(t,e){var n=z(e,(function(e){return t.scale.parse(e)}));return"time"===t.type&&n.length>0&&(n.sort(),n.unshift(n[0]),n.push(n[n.length-1])),n}function $_(t){var e=t.getLabelModel().get("customValues");if(e){var n=w_(t);return{labels:K_(t,e).map((function(e){var i={value:e};return{formattedLabel:n(i),rawLabel:t.scale.getLabel(i),tickValue:e}}))}}return"category"===t.type?function(t){var e=t.getLabelModel(),n=Q_(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}(t):function(t){var e=t.scale.getTicks(),n=w_(t);return{labels:z(e,(function(e,i){return{level:e.level,formattedLabel:n(e,i),rawLabel:t.scale.getLabel(e),tickValue:e.value}}))}}(t)}function J_(t,e){var n=t.getTickModel().get("customValues");return n?{ticks:K_(t,n)}:"category"===t.type?function(t,e){var n,i,r=tb(t,"ticks"),o=I_(e),a=eb(r,o);if(a)return a;e.get("show")&&!t.scale.isBlank()||(n=[]);if(X(o))n=rb(t,o,!0);else if("auto"===o){var s=Q_(t,t.getLabelModel());i=s.labelCategoryInterval,n=z(s.labels,(function(t){return t.tickValue}))}else n=ib(t,i=o,!0);return nb(r,o,{ticks:n,tickCategoryInterval:i})}(t,e):{ticks:z(t.scale.getTicks(),(function(t){return t.value}))}}function Q_(t,e){var n,i,r=tb(t,"labels"),o=I_(e),a=eb(r,o);return a||(X(o)?n=rb(t,o):(i="auto"===o?function(t){var e=q_(t).autoInterval;return null!=e?e:q_(t).autoInterval=t.calculateCategoryInterval()}(t):o,n=ib(t,i)),nb(r,o,{labels:n,labelCategoryInterval:i}))}function tb(t,e){return q_(t)[e]||(q_(t)[e]=[])}function eb(t,e){for(var n=0;n1&&h/l>2&&(u=Math.round(Math.ceil(u/l)*l));var c=T_(t),p=a.get("showMinLabel")||c,d=a.get("showMaxLabel")||c;p&&u!==o[0]&&g(o[0]);for(var f=u;f<=o[1];f+=l)g(f);function g(t){var e={value:t};s.push(n?t:{formattedLabel:i(e),rawLabel:r.getLabel(e),tickValue:t})}return d&&f-l!==o[1]&&g(o[1]),s}function rb(t,e,n){var i=t.scale,r=w_(t),o=[];return E(i.getTicks(),(function(t){var a=i.getLabel(t),s=t.value;e(t.value,a)&&o.push(n?s:{formattedLabel:r(t),rawLabel:a,tickValue:s})})),o}var ob=[0,1],ab=function(){function t(t,e,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=e,this._extent=n||[0,0]}return t.prototype.contain=function(t){var e=this._extent,n=Math.min(e[0],e[1]),i=Math.max(e[0],e[1]);return t>=n&&t<=i},t.prototype.containData=function(t){return this.scale.contain(t)},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.getPixelPrecision=function(t){return no(t||this.scale.getExtent(),this._extent)},t.prototype.setExtent=function(t,e){var n=this._extent;n[0]=t,n[1]=e},t.prototype.dataToCoord=function(t,e){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&"ordinal"===i.type&&sb(n=n.slice(),i.count()),Kr(t,ob,n,e)},t.prototype.coordToData=function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&sb(n=n.slice(),i.count());var r=Kr(t,n,ob,e);return this.scale.scale(r)},t.prototype.pointToData=function(t,e){},t.prototype.getTicksCoords=function(t){var e=(t=t||{}).tickModel||this.getTickModel(),n=z(J_(this,e).ticks,(function(t){return{coord:this.dataToCoord("ordinal"===this.scale.type?this.scale.getRawOrdinalNumber(t):t),tickValue:t}}),this);return function(t,e,n,i){var r=e.length;if(!t.onBand||n||!r)return;var o,a,s=t.getExtent();if(1===r)e[0].coord=s[0],o=e[1]={coord:s[1]};else{var l=e[r-1].tickValue-e[0].tickValue,u=(e[r-1].coord-e[0].coord)/l;E(e,(function(t){t.coord-=u/2})),a=1+t.scale.getExtent()[1]-e[r-1].tickValue,o={coord:e[r-1].coord+u*a},e.push(o)}var h=s[0]>s[1];c(e[0].coord,s[0])&&(i?e[0].coord=s[0]:e.shift());i&&c(s[0],e[0].coord)&&e.unshift({coord:s[0]});c(s[1],o.coord)&&(i?o.coord=s[1]:e.pop());i&&c(o.coord,s[1])&&e.push({coord:s[1]});function c(t,e){return t=Jr(t),e=Jr(e),h?t>e:t0&&t<100||(t=5),z(this.scale.getMinorTicks(t),(function(t){return z(t,(function(t){return{coord:this.dataToCoord(t),tickValue:t}}),this)}),this)},t.prototype.getViewLabels=function(){return $_(this).labels},t.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},t.prototype.getTickModel=function(){return this.model.getModel("axisTick")},t.prototype.getBandWidth=function(){var t=this._extent,e=this.scale.getExtent(),n=e[1]-e[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},t.prototype.calculateCategoryInterval=function(){return function(t){var e=function(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}(t),n=w_(t),i=(e.axisRotate-e.labelRotate)/180*Math.PI,r=t.scale,o=r.getExtent(),a=r.count();if(o[1]-o[0]<1)return 0;var s=1;a>40&&(s=Math.max(1,Math.floor(a/40)));for(var l=o[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(i)),c=Math.abs(u*Math.sin(i)),p=0,d=0;l<=o[1];l+=s){var f,g,y=Sr(n({value:l}),e.font,"center","top");f=1.3*y.width,g=1.3*y.height,p=Math.max(p,f,7),d=Math.max(d,g,7)}var v=p/h,m=d/c;isNaN(v)&&(v=1/0),isNaN(m)&&(m=1/0);var x=Math.max(0,Math.floor(Math.min(v,m))),_=q_(t.model),b=t.getExtent(),w=_.lastAutoInterval,S=_.lastTickCount;return null!=w&&null!=S&&Math.abs(w-x)<=1&&Math.abs(S-a)<=1&&w>x&&_.axisExtent0===b[0]&&_.axisExtent1===b[1]?x=w:(_.lastTickCount=a,_.lastAutoInterval=x,_.axisExtent0=b[0],_.axisExtent1=b[1]),x}(this)},t}();function sb(t,e){var n=(t[1]-t[0])/e/2;t[0]+=n,t[1]-=n}var lb=2*Math.PI,ub=hs.CMD,hb=["top","right","bottom","left"];function cb(t,e,n,i,r){var o=n.width,a=n.height;switch(t){case"top":i.set(n.x+o/2,n.y-e),r.set(0,-1);break;case"bottom":i.set(n.x+o/2,n.y+a+e),r.set(0,1);break;case"left":i.set(n.x-e,n.y+a/2),r.set(-1,0);break;case"right":i.set(n.x+o+e,n.y+a/2),r.set(1,0)}}function pb(t,e,n,i,r,o,a,s,l){a-=t,s-=e;var u=Math.sqrt(a*a+s*s),h=(a/=u)*n+t,c=(s/=u)*n+e;if(Math.abs(i-r)%lb<1e-4)return l[0]=h,l[1]=c,u-n;if(o){var p=i;i=gs(r),r=gs(p)}else i=gs(i),r=gs(r);i>r&&(r+=lb);var d=Math.atan2(s,a);if(d<0&&(d+=lb),d>=i&&d<=r||d+lb>=i&&d+lb<=r)return l[0]=h,l[1]=c,u-n;var f=n*Math.cos(i)+t,g=n*Math.sin(i)+e,y=n*Math.cos(r)+t,v=n*Math.sin(r)+e,m=(f-a)*(f-a)+(g-s)*(g-s),x=(y-a)*(y-a)+(v-s)*(v-s);return m0){e=e/180*Math.PI,mb.fromArray(t[0]),xb.fromArray(t[1]),_b.fromArray(t[2]),De.sub(bb,mb,xb),De.sub(wb,_b,xb);var n=bb.len(),i=wb.len();if(!(n<.001||i<.001)){bb.scale(1/n),wb.scale(1/i);var r=bb.dot(wb);if(Math.cos(e)1&&De.copy(Ib,_b),Ib.toArray(t[1])}}}}function Cb(t,e,n){if(n<=180&&n>0){n=n/180*Math.PI,mb.fromArray(t[0]),xb.fromArray(t[1]),_b.fromArray(t[2]),De.sub(bb,xb,mb),De.sub(wb,_b,xb);var i=bb.len(),r=wb.len();if(!(i<.001||r<.001))if(bb.scale(1/i),wb.scale(1/r),bb.dot(e)=a)De.copy(Ib,_b);else{Ib.scaleAndAdd(wb,o/Math.tan(Math.PI/2-s));var l=_b.x!==xb.x?(Ib.x-xb.x)/(_b.x-xb.x):(Ib.y-xb.y)/(_b.y-xb.y);if(isNaN(l))return;l<0?De.copy(Ib,xb):l>1&&De.copy(Ib,_b)}Ib.toArray(t[1])}}}function Db(t,e,n,i){var r="normal"===n,o=r?t:t.ensureState(n);o.ignore=e;var a=i.get("smooth");a&&!0===a&&(a=.3),o.shape=o.shape||{},a>0&&(o.shape.smooth=a);var s=i.getModel("lineStyle").getLineStyle();r?t.useStyle(s):o.style=s}function Ab(t,e){var n=e.smooth,i=e.points;if(i)if(t.moveTo(i[0][0],i[0][1]),n>0&&i.length>=3){var r=Vt(i[0],i[1]),o=Vt(i[1],i[2]);if(!r||!o)return t.lineTo(i[1][0],i[1][1]),void t.lineTo(i[2][0],i[2][1]);var a=Math.min(r,o)*n,s=Gt([],i[1],i[0],a/r),l=Gt([],i[1],i[2],a/o),u=Gt([],s,l,.5);t.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),t.bezierCurveTo(l[0],l[1],l[0],l[1],i[2][0],i[2][1])}else for(var h=1;h0&&o&&_(-h/a,0,a);var f,g,y=t[0],v=t[a-1];return m(),f<0&&b(-f,.8),g<0&&b(g,.8),m(),x(f,g,1),x(g,f,-1),m(),f<0&&w(-f),g<0&&w(g),u}function m(){f=y.rect[e]-i,g=r-v.rect[e]-v.rect[n]}function x(t,e,n){if(t<0){var i=Math.min(e,-t);if(i>0){_(i*n,0,a);var r=i+t;r<0&&b(-r*n,1)}else b(-t*n,1)}}function _(n,i,r){0!==n&&(u=!0);for(var o=i;o0)for(l=0;l0;l--){_(-(o[l-1]*c),l,a)}}}function w(t){var e=t<0?-1:1;t=Math.abs(t);for(var n=Math.ceil(t/(a-1)),i=0;i0?_(n,0,i+1):_(-n,a-i-1,a),(t-=n)<=0)return}}function Rb(t,e,n,i){return Ob(t,"y","height",e,n,i)}function Nb(t){var e=[];t.sort((function(t,e){return e.priority-t.priority}));var n=new ze(0,0,0,0);function i(t){if(!t.ignore){var e=t.ensureState("emphasis");null==e.ignore&&(e.ignore=!1)}t.ignore=!0}for(var r=0;r=0&&n.attr(d.oldLayoutSelect),P(u,"emphasis")>=0&&n.attr(d.oldLayoutEmphasis)),vh(n,s,e,a)}else if(n.attr(s),!pc(n).valueAnimation){var h=rt(n.style.opacity,1);n.style.opacity=0,mh(n,{style:{opacity:h}},e,a)}if(d.oldLayout=s,n.states.select){var c=d.oldLayoutSelect={};Wb(c,s,Hb),Wb(c,n.states.select,Hb)}if(n.states.emphasis){var p=d.oldLayoutEmphasis={};Wb(p,s,Hb),Wb(p,n.states.emphasis,Hb)}fc(n,a,l,e,e)}if(i&&!i.ignore&&!i.invisible){r=(d=Gb(i)).oldLayout;var d,f={points:i.shape.points};r?(i.attr({shape:r}),vh(i,{shape:f},e)):(i.setShape(f),i.style.strokePercent=0,mh(i,{style:{strokePercent:1}},e)),d.oldLayout=f}},t}(),Xb=Vo();var Ub=Math.sin,Zb=Math.cos,jb=Math.PI,qb=2*Math.PI,Kb=180/jb,$b=function(){function t(){}return t.prototype.reset=function(t){this._start=!0,this._d=[],this._str="",this._p=Math.pow(10,t||4)},t.prototype.moveTo=function(t,e){this._add("M",t,e)},t.prototype.lineTo=function(t,e){this._add("L",t,e)},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){this._add("C",t,e,n,i,r,o)},t.prototype.quadraticCurveTo=function(t,e,n,i){this._add("Q",t,e,n,i)},t.prototype.arc=function(t,e,n,i,r,o){this.ellipse(t,e,n,n,0,i,r,o)},t.prototype.ellipse=function(t,e,n,i,r,o,a,s){var l=a-o,u=!s,h=Math.abs(l),c=pi(h-qb)||(u?l>=qb:-l>=qb),p=l>0?l%qb:l%qb+qb,d=!1;d=!!c||!pi(h)&&p>=jb==!!u;var f=t+n*Zb(o),g=e+i*Ub(o);this._start&&this._add("M",f,g);var y=Math.round(r*Kb);if(c){var v=1/this._p,m=(u?1:-1)*(qb-v);this._add("A",n,i,y,1,+u,t+n*Zb(o+m),e+i*Ub(o+m)),v>.01&&this._add("A",n,i,y,0,+u,f,g)}else{var x=t+n*Zb(a),_=e+i*Ub(a);this._add("A",n,i,y,+d,+u,x,_)}},t.prototype.rect=function(t,e,n,i){this._add("M",t,e),this._add("l",n,0),this._add("l",0,i),this._add("l",-n,0),this._add("Z")},t.prototype.closePath=function(){this._d.length>0&&this._add("Z")},t.prototype._add=function(t,e,n,i,r,o,a,s,l){for(var u=[],h=this._p,c=1;c"}(r,o)+("style"!==r?re(a):a||"")+(i?""+n+z(i,(function(e){return t(e)})).join(n)+n:"")+("")}(t)}function uw(t){return{zrId:t,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssStyleCache:{},cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function hw(t,e,n,i){return sw("svg","root",{width:t,height:e,xmlns:iw,"xmlns:xlink":rw,version:"1.1",baseProfile:"full",viewBox:!!i&&"0 0 "+t+" "+e},n)}var cw=0;function pw(){return cw++}var dw={cubicIn:"0.32,0,0.67,0",cubicOut:"0.33,1,0.68,1",cubicInOut:"0.65,0,0.35,1",quadraticIn:"0.11,0,0.5,0",quadraticOut:"0.5,1,0.89,1",quadraticInOut:"0.45,0,0.55,1",quarticIn:"0.5,0,0.75,0",quarticOut:"0.25,1,0.5,1",quarticInOut:"0.76,0,0.24,1",quinticIn:"0.64,0,0.78,0",quinticOut:"0.22,1,0.36,1",quinticInOut:"0.83,0,0.17,1",sinusoidalIn:"0.12,0,0.39,0",sinusoidalOut:"0.61,1,0.88,1",sinusoidalInOut:"0.37,0,0.63,1",exponentialIn:"0.7,0,0.84,0",exponentialOut:"0.16,1,0.3,1",exponentialInOut:"0.87,0,0.13,1",circularIn:"0.55,0,1,0.45",circularOut:"0,0.55,0.45,1",circularInOut:"0.85,0,0.15,1"},fw="transform-origin";function gw(t,e,n){var i=A({},t.shape);A(i,e),t.buildPath(n,i);var r=new $b;return r.reset(wi(t)),n.rebuildPath(r,1),r.generateStr(),r.getStr()}function yw(t,e){var n=e.originX,i=e.originY;(n||i)&&(t[fw]=n+"px "+i+"px")}var vw={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function mw(t,e){var n=e.zrId+"-ani-"+e.cssAnimIdx++;return e.cssAnims[n]=t,n}function xw(t){return U(t)?dw[t]?"cubic-bezier("+dw[t]+")":Pn(t)?t:"":""}function _w(t,e,n,i){var r=t.animators,o=r.length,a=[];if(t instanceof ih){var s=function(t,e,n){var i,r,o=t.shape.paths,a={};if(E(o,(function(t){var e=uw(n.zrId);e.animation=!0,_w(t,{},e,!0);var o=e.cssAnims,s=e.cssNodes,l=G(o),u=l.length;if(u){var h=o[r=l[u-1]];for(var c in h){var p=h[c];a[c]=a[c]||{d:""},a[c].d+=p.d||""}for(var d in s){var f=s[d].animation;f.indexOf(r)>=0&&(i=f)}}})),i){e.d=!1;var s=mw(a,n);return i.replace(r,s)}}(t,e,n);if(s)a.push(s);else if(!o)return}else if(!o)return;for(var l={},u=0;u0})).length)return mw(h,n)+" "+r[0]+" both"}for(var y in l){(s=g(l[y]))&&a.push(s)}if(a.length){var v=n.zrId+"-cls-"+pw();n.cssNodes["."+v]={animation:a.join(",")},e.class=v}}function bw(t,e,n,i){var r=JSON.stringify(t),o=n.cssStyleCache[r];o||(o=n.zrId+"-cls-"+pw(),n.cssStyleCache[r]=o,n.cssNodes["."+o+(i?":hover":"")]=t),e.class=e.class?e.class+" "+o:o}var ww=Math.round;function Sw(t){return t&&U(t.src)}function Mw(t){return t&&X(t.toDataURL)}function Iw(t,e,n,i){nw((function(r,o){var a="fill"===r||"stroke"===r;a&&_i(o)?Ew(e,t,r,i):a&&vi(o)?zw(n,t,r,i):t[r]=a&&"none"===o?"transparent":o}),e,n,!1),function(t,e,n){var i=t.style;if(function(t){return t&&(t.shadowBlur||t.shadowOffsetX||t.shadowOffsetY)}(i)){var r=function(t){var e=t.style,n=t.getGlobalScale();return[e.shadowColor,(e.shadowBlur||0).toFixed(2),(e.shadowOffsetX||0).toFixed(2),(e.shadowOffsetY||0).toFixed(2),n[0],n[1]].join(",")}(t),o=n.shadowCache,a=o[r];if(!a){var s=t.getGlobalScale(),l=s[0],u=s[1];if(!l||!u)return;var h=i.shadowOffsetX||0,c=i.shadowOffsetY||0,p=i.shadowBlur,d=hi(i.shadowColor),f=d.opacity,g=d.color,y=p/2/l+" "+p/2/u;a=n.zrId+"-s"+n.shadowIdx++,n.defs[a]=sw("filter",a,{id:a,x:"-100%",y:"-100%",width:"300%",height:"300%"},[sw("feDropShadow","",{dx:h/l,dy:c/u,stdDeviation:y,"flood-color":g,"flood-opacity":f})]),o[r]=a}e.filter=bi(a)}}(n,t,i)}function Tw(t,e){var n=Ur(e);n&&(n.each((function(e,n){null!=e&&(t[(ow+n).toLowerCase()]=e+"")})),e.isSilent()&&(t[ow+"silent"]="true"))}function Cw(t){return pi(t[0]-1)&&pi(t[1])&&pi(t[2])&&pi(t[3]-1)}function Dw(t,e,n){if(e&&(!function(t){return pi(t[4])&&pi(t[5])}(e)||!Cw(e))){var i=n?10:1e4;t.transform=Cw(e)?"translate("+ww(e[4]*i)/i+" "+ww(e[5]*i)/i+")":function(t){return"matrix("+di(t[0])+","+di(t[1])+","+di(t[2])+","+di(t[3])+","+fi(t[4])+","+fi(t[5])+")"}(e)}}function Aw(t,e,n){for(var i=t.points,r=[],o=0;o=0&&a||o;s&&(r=si(s))}var l=i.lineWidth;l&&(l/=!i.strokeNoScale&&t.transform?t.transform[0]:1);var u={cursor:"pointer"};r&&(u.fill=r),i.stroke&&(u.stroke=i.stroke),l&&(u["stroke-width"]=l),bw(u,e,n,!0)}}(t,o,e),sw(s,t.id+"",o)}function Nw(t,e){return t instanceof ks?Rw(t,e):t instanceof Ns?function(t,e){var n=t.style,i=n.image;if(i&&!U(i)&&(Sw(i)?i=i.src:Mw(i)&&(i=i.toDataURL())),i){var r=n.x||0,o=n.y||0,a={href:i,width:n.width,height:n.height};return r&&(a.x=r),o&&(a.y=o),Dw(a,t.transform),Iw(a,n,t,e),Tw(a,t),e.animation&&_w(t,a,e),sw("image",t.id+"",a)}}(t,e):t instanceof Ps?function(t,e){var n=t.style,i=n.text;if(null!=i&&(i+=""),i&&!isNaN(n.x)&&!isNaN(n.y)){var r=n.font||a,s=n.x||0,l=function(t,e,n){return"top"===n?t+=e/2:"bottom"===n&&(t-=e/2),t}(n.y||0,Tr(r),n.textBaseline),u={"dominant-baseline":"central","text-anchor":gi[n.textAlign]||n.textAlign};if($s(n)){var h="",c=n.fontStyle,p=qs(n.fontSize);if(!parseFloat(p))return;var d=n.fontFamily||o,f=n.fontWeight;h+="font-size:"+p+";font-family:"+d+";",c&&"normal"!==c&&(h+="font-style:"+c+";"),f&&"normal"!==f&&(h+="font-weight:"+f+";"),u.style=h}else u.style="font: "+r;return i.match(/\s/)&&(u["xml:space"]="preserve"),s&&(u.x=s),l&&(u.y=l),Dw(u,t.transform),Iw(u,n,t,e),Tw(u,t),e.animation&&_w(t,u,e),sw("text",t.id+"",u,void 0,i)}}(t,e):void 0}function Ew(t,e,n,i){var r,o=t[n],a={gradientUnits:o.global?"userSpaceOnUse":"objectBoundingBox"};if(mi(o))r="linearGradient",a.x1=o.x,a.y1=o.y,a.x2=o.x2,a.y2=o.y2;else{if(!xi(o))return void 0;r="radialGradient",a.cx=rt(o.x,.5),a.cy=rt(o.y,.5),a.r=rt(o.r,.5)}for(var s=o.colorStops,l=[],u=0,h=s.length;ul?Jw(t,null==n[c+1]?null:n[c+1].elm,n,s,c):Qw(t,e,a,l))}(n,i,r):jw(r)?(jw(t.text)&&Xw(n,""),Jw(n,null,r,0,r.length-1)):jw(i)?Qw(n,i,0,i.length-1):jw(t.text)&&Xw(n,""):t.text!==e.text&&(jw(i)&&Qw(n,i,0,i.length-1),Xw(n,e.text)))}var nS=0,iS=function(){function t(t,e,n){if(this.type="svg",this.refreshHover=rS("refreshHover"),this.configLayer=rS("configLayer"),this.storage=e,this._opts=n=A({},n),this.root=t,this._id="zr"+nS++,this._oldVNode=hw(n.width,n.height),t&&!n.ssr){var i=this._viewport=document.createElement("div");i.style.cssText="position:relative;overflow:hidden";var r=this._svgDom=this._oldVNode.elm=aw("svg");tS(null,this._oldVNode),i.appendChild(r),t.appendChild(i)}this.resize(n.width,n.height)}return t.prototype.getType=function(){return this.type},t.prototype.getViewportRoot=function(){return this._viewport},t.prototype.getViewportRootOffset=function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},t.prototype.getSvgDom=function(){return this._svgDom},t.prototype.refresh=function(){if(this.root){var t=this.renderToVNode({willUpdate:!0});t.attrs.style="position:absolute;left:0;top:0;user-select:none",function(t,e){if(Kw(t,e))eS(t,e);else{var n=t.elm,i=Hw(n);$w(e),null!==i&&(Fw(i,e.elm,Yw(n)),Qw(i,[t],0,0))}}(this._oldVNode,t),this._oldVNode=t}},t.prototype.renderOneToVNode=function(t){return Nw(t,uw(this._id))},t.prototype.renderToVNode=function(t){t=t||{};var e=this.storage.getDisplayList(!0),n=this._width,i=this._height,r=uw(this._id);r.animation=t.animation,r.willUpdate=t.willUpdate,r.compress=t.compress,r.emphasis=t.emphasis;var o=[],a=this._bgVNode=function(t,e,n,i){var r;if(n&&"none"!==n)if(r=sw("rect","bg",{width:t,height:e,x:"0",y:"0"}),_i(n))Ew({fill:n},r.attrs,"fill",i);else if(vi(n))zw({style:{fill:n},dirty:bt,getBoundingRect:function(){return{width:t,height:e}}},r.attrs,"fill",i);else{var o=hi(n),a=o.color,s=o.opacity;r.attrs.fill=a,s<1&&(r.attrs["fill-opacity"]=s)}return r}(n,i,this._backgroundColor,r);a&&o.push(a);var s=t.compress?null:this._mainVNode=sw("g","main",{},[]);this._paintList(e,r,s?s.children:o),s&&o.push(s);var l=z(G(r.defs),(function(t){return r.defs[t]}));if(l.length&&o.push(sw("defs","defs",{},l)),t.animation){var u=function(t,e,n){var i=(n=n||{}).newline?"\n":"",r=" {"+i,o=i+"}",a=z(G(t),(function(e){return e+r+z(G(t[e]),(function(n){return n+":"+t[e][n]+";"})).join(i)+o})).join(i),s=z(G(e),(function(t){return"@keyframes "+t+r+z(G(e[t]),(function(n){return n+r+z(G(e[t][n]),(function(i){var r=e[t][n][i];return"d"===i&&(r='path("'+r+'")'),i+":"+r+";"})).join(i)+o})).join(i)+o})).join(i);return a||s?[""].join(i):""}(r.cssNodes,r.cssAnims,{newline:!0});if(u){var h=sw("style","stl",{},[],u);o.push(h)}}return hw(n,i,o,t.useViewBox)},t.prototype.renderToString=function(t){return t=t||{},lw(this.renderToVNode({animation:rt(t.cssAnimation,!0),emphasis:rt(t.cssEmphasis,!0),willUpdate:!1,compress:!0,useViewBox:rt(t.useViewBox,!0)}),{newline:!0})},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t},t.prototype.getSvgRoot=function(){return this._mainVNode&&this._mainVNode.elm},t.prototype._paintList=function(t,e,n){for(var i,r,o=t.length,a=[],s=0,l=0,u=0;u=0&&(!c||!r||c[f]!==r[f]);f--);for(var g=d-1;g>f;g--)i=a[--s-1];for(var y=f+1;y=a)}}for(var h=this.__startIndex;h15)break}n.prevElClipPaths&&u.restore()};if(p)if(0===p.length)s=l.__endIndex;else for(var _=d.dpr,b=0;b0&&t>i[0]){for(s=0;st);s++);a=n[i[s]]}if(i.splice(s+1,0,t),n[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?o.insertBefore(e.dom,l.nextSibling):o.appendChild(e.dom)}else o.firstChild?o.insertBefore(e.dom,o.firstChild):o.appendChild(e.dom);e.painter||(e.painter=this)}},t.prototype.eachLayer=function(t,e){for(var n=this._zlevelList,i=0;i0?uS:0),this._needsManuallyCompositing),u.__builtin__||I("ZLevel "+l+" has been used by unkown layer "+u.id),u!==o&&(u.__used=!0,u.__startIndex!==r&&(u.__dirty=!0),u.__startIndex=r,u.incremental?u.__drawIndex=-1:u.__drawIndex=r,e(r),o=u),1&s.__dirty&&!s.__inHover&&(u.__dirty=!0,u.incremental&&u.__drawIndex<0&&(u.__drawIndex=r))}e(r),this.eachBuiltinLayer((function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)}))},t.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},t.prototype._clearLayer=function(t){t.clear()},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t,E(this._layers,(function(t){t.setUnpainted()}))},t.prototype.configLayer=function(t,e){if(e){var n=this._layerConfig;n[t]?C(n[t],e,!0):n[t]=e;for(var i=0;i-1&&(s.style.stroke=s.style.fill,s.style.fill="#fff",s.style.lineWidth=2),e},e.type="series.line",e.dependencies=["grid","polar"],e.defaultOption={z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:"clone"},triggerLineEvent:!1},e}(bg);function pS(t,e){var n=t.mapDimensionsAll("defaultedLabel"),i=n.length;if(1===i){var r=mf(t,e,n[0]);return null!=r?r+"":null}if(i){for(var o=[],a=0;a=0&&i.push(e[o])}return i.join(" ")}var fS=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o.updateData(e,n,i,r),o}return n(e,t),e.prototype._createSymbol=function(t,e,n,i,r){this.removeAll();var o=Xy(t,-1,-1,2,2,null,r);o.attr({z2:100,culling:!0,scaleX:i[0]/2,scaleY:i[1]/2}),o.drift=gS,this._symbolType=t,this.add(o)},e.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},e.prototype.getSymbolType=function(){return this._symbolType},e.prototype.getSymbolPath=function(){return this.childAt(0)},e.prototype.highlight=function(){Ol(this.childAt(0))},e.prototype.downplay=function(){Rl(this.childAt(0))},e.prototype.setZ=function(t,e){var n=this.childAt(0);n.zlevel=t,n.z=e},e.prototype.setDraggable=function(t,e){var n=this.childAt(0);n.draggable=t,n.cursor=!e&&t?"move":n.cursor},e.prototype.updateData=function(t,n,i,r){this.silent=!1;var o=t.getItemVisual(n,"symbol")||"circle",a=t.hostModel,s=e.getSymbolSize(t,n),l=o!==this._symbolType,u=r&&r.disableAnimation;if(l){var h=t.getItemVisual(n,"symbolKeepAspect");this._createSymbol(o,t,n,s,h)}else{(p=this.childAt(0)).silent=!1;var c={scaleX:s[0]/2,scaleY:s[1]/2};u?p.attr(c):vh(p,c,a,n),Sh(p)}if(this._updateCommon(t,n,s,i,r),l){var p=this.childAt(0);if(!u){c={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:p.style.opacity}};p.scaleX=p.scaleY=0,p.style.opacity=0,mh(p,c,a,n)}}u&&this.childAt(0).stopAnimation("leave")},e.prototype._updateCommon=function(t,e,n,i,r){var o,a,s,l,u,h,c,p,d,f=this.childAt(0),g=t.hostModel;if(i&&(o=i.emphasisItemStyle,a=i.blurItemStyle,s=i.selectItemStyle,l=i.focus,u=i.blurScope,c=i.labelStatesModels,p=i.hoverScale,d=i.cursorStyle,h=i.emphasisDisabled),!i||t.hasItemOption){var y=i&&i.itemModel?i.itemModel:t.getItemModel(e),v=y.getModel("emphasis");o=v.getModel("itemStyle").getItemStyle(),s=y.getModel(["select","itemStyle"]).getItemStyle(),a=y.getModel(["blur","itemStyle"]).getItemStyle(),l=v.get("focus"),u=v.get("blurScope"),h=v.get("disabled"),c=rc(y),p=v.getShallow("scale"),d=y.getShallow("cursor")}var m=t.getItemVisual(e,"symbolRotate");f.attr("rotation",(m||0)*Math.PI/180||0);var x=Zy(t.getItemVisual(e,"symbolOffset"),n);x&&(f.x=x[0],f.y=x[1]),d&&f.attr("cursor",d);var _=t.getItemVisual(e,"style"),b=_.fill;if(f instanceof Ns){var w=f.style;f.useStyle(A({image:w.image,x:w.x,y:w.y,width:w.width,height:w.height},_))}else f.__isEmptyBrush?f.useStyle(A({},_)):f.useStyle(_),f.style.decal=null,f.setColor(b,r&&r.symbolInnerColor),f.style.strokeNoScale=!0;var S=t.getItemVisual(e,"liftZ"),M=this._z2;null!=S?null==M&&(this._z2=f.z2,f.z2+=S):null!=M&&(f.z2=M,this._z2=null);var I=r&&r.useNameLabel;ic(f,c,{labelFetcher:g,labelDataIndex:e,defaultText:function(e){return I?t.getName(e):pS(t,e)},inheritColor:b,defaultOpacity:_.opacity}),this._sizeX=n[0]/2,this._sizeY=n[1]/2;var T=f.ensureState("emphasis");T.style=o,f.ensureState("select").style=s,f.ensureState("blur").style=a;var C=null==p||!0===p?Math.max(1.1,3/this._sizeY):isFinite(p)&&p>0?+p:1;T.scaleX=this._sizeX*C,T.scaleY=this._sizeY*C,this.setSymbolScale(1),Zl(this,l,u,h)},e.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},e.prototype.fadeOut=function(t,e,n){var i=this.childAt(0),r=rl(this).dataIndex,o=n&&n.animation;if(this.silent=i.silent=!0,n&&n.fadeLabel){var a=i.getTextContent();a&&_h(a,{style:{opacity:0}},e,{dataIndex:r,removeOpt:o,cb:function(){i.removeTextContent()}})}else i.removeTextContent();_h(i,{style:{opacity:0},scaleX:0,scaleY:0},e,{dataIndex:r,cb:t,removeOpt:o})},e.getSymbolSize=function(t,e){return Uy(t.getItemVisual(e,"symbolSize"))},e}(Br);function gS(t,e){this.parent.drift(t,e)}function yS(t,e,n,i){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(i.isIgnore&&i.isIgnore(n))&&!(i.clipShape&&!i.clipShape.contain(e[0],e[1]))&&"none"!==t.getItemVisual(n,"symbol")}function vS(t){return null==t||q(t)||(t={isIgnore:t}),t||{}}function mS(t){var e=t.hostModel,n=e.getModel("emphasis");return{emphasisItemStyle:n.getModel("itemStyle").getItemStyle(),blurItemStyle:e.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:e.getModel(["select","itemStyle"]).getItemStyle(),focus:n.get("focus"),blurScope:n.get("blurScope"),emphasisDisabled:n.get("disabled"),hoverScale:n.get("scale"),labelStatesModels:rc(e),cursorStyle:e.get("cursor")}}var xS=function(){function t(t){this.group=new Br,this._SymbolCtor=t||fS}return t.prototype.updateData=function(t,e){this._progressiveEls=null,e=vS(e);var n=this.group,i=t.hostModel,r=this._data,o=this._SymbolCtor,a=e.disableAnimation,s=mS(t),l={disableAnimation:a},u=e.getSymbolPoint||function(e){return t.getItemLayout(e)};r||n.removeAll(),t.diff(r).add((function(i){var r=u(i);if(yS(t,r,i,e)){var a=new o(t,i,s,l);a.setPosition(r),t.setItemGraphicEl(i,a),n.add(a)}})).update((function(h,c){var p=r.getItemGraphicEl(c),d=u(h);if(yS(t,d,h,e)){var f=t.getItemVisual(h,"symbol")||"circle",g=p&&p.getSymbolType&&p.getSymbolType();if(!p||g&&g!==f)n.remove(p),(p=new o(t,h,s,l)).setPosition(d);else{p.updateData(t,h,s,l);var y={x:d[0],y:d[1]};a?p.attr(y):vh(p,y,i)}n.add(p),t.setItemGraphicEl(h,p)}else n.remove(p)})).remove((function(t){var e=r.getItemGraphicEl(t);e&&e.fadeOut((function(){n.remove(e)}),i)})).execute(),this._getSymbolPoint=u,this._data=t},t.prototype.updateLayout=function(){var t=this,e=this._data;e&&e.eachItemGraphicEl((function(e,n){var i=t._getSymbolPoint(n);e.setPosition(i),e.markRedraw()}))},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=mS(t),this._data=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e,n){function i(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[],n=vS(n);for(var r=t.start;r0?n=i[0]:i[1]<0&&(n=i[1]);return n}(r,n),a=i.dim,s=r.dim,l=e.mapDimension(s),u=e.mapDimension(a),h="x"===s||"radius"===s?1:0,c=z(t.dimensions,(function(t){return e.mapDimension(t)})),p=!1,d=e.getCalculationInfo("stackResultDimension");return mx(e,c[0])&&(p=!0,c[0]=d),mx(e,c[1])&&(p=!0,c[1]=d),{dataDimsForPoint:c,valueStart:o,valueAxisDim:s,baseAxisDim:a,stacked:!!p,valueDim:l,baseDim:u,baseDataOffset:h,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}}function bS(t,e,n,i){var r=NaN;t.stacked&&(r=n.get(n.getCalculationInfo("stackedOverDimension"),i)),isNaN(r)&&(r=t.valueStart);var o=t.baseDataOffset,a=[];return a[o]=n.get(t.baseDim,i),a[1-o]=r,e.dataToPoint(a)}var wS=Math.min,SS=Math.max;function MS(t,e){return isNaN(t)||isNaN(e)}function IS(t,e,n,i,r,o,a,s,l){for(var u,h,c,p,d,f,g=n,y=0;y=r||g<0)break;if(MS(v,m)){if(l){g+=o;continue}break}if(g===n)t[o>0?"moveTo":"lineTo"](v,m),c=v,p=m;else{var x=v-u,_=m-h;if(x*x+_*_<.5){g+=o;continue}if(a>0){for(var b=g+o,w=e[2*b],S=e[2*b+1];w===v&&S===m&&y=i||MS(w,S))d=v,f=m;else{T=w-u,C=S-h;var k=v-u,L=w-v,P=m-h,O=S-m,R=void 0,N=void 0;if("x"===s){var E=T>0?1:-1;d=v-E*(R=Math.abs(k))*a,f=m,D=v+E*(N=Math.abs(L))*a,A=m}else if("y"===s){var z=C>0?1:-1;d=v,f=m-z*(R=Math.abs(P))*a,D=v,A=m+z*(N=Math.abs(O))*a}else R=Math.sqrt(k*k+P*P),d=v-T*a*(1-(I=(N=Math.sqrt(L*L+O*O))/(N+R))),f=m-C*a*(1-I),A=m+C*a*I,D=wS(D=v+T*a*I,SS(w,v)),A=wS(A,SS(S,m)),D=SS(D,wS(w,v)),f=m-(C=(A=SS(A,wS(S,m)))-m)*R/N,d=wS(d=v-(T=D-v)*R/N,SS(u,v)),f=wS(f,SS(h,m)),D=v+(T=v-(d=SS(d,wS(u,v))))*N/R,A=m+(C=m-(f=SS(f,wS(h,m))))*N/R}t.bezierCurveTo(c,p,d,f,v,m),c=D,p=A}else t.lineTo(v,m)}u=v,h=m,g+=o}return y}var TS=function(){this.smooth=0,this.smoothConstraint=!0},CS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polyline",n}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new TS},e.prototype.buildPath=function(t,e){var n=e.points,i=0,r=n.length/2;if(e.connectNulls){for(;r>0&&MS(n[2*r-2],n[2*r-1]);r--);for(;i=0){var y=a?(h-i)*g+i:(u-n)*g+n;return a?[t,y]:[y,t]}n=u,i=h;break;case o.C:u=r[l++],h=r[l++],c=r[l++],p=r[l++],d=r[l++],f=r[l++];var v=a?_n(n,u,c,d,t,s):_n(i,h,p,f,t,s);if(v>0)for(var m=0;m=0){y=a?mn(i,h,p,f,x):mn(n,u,c,d,x);return a?[t,y]:[y,t]}}n=d,i=f}}},e}(ks),DS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(TS),AS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polygon",n}return n(e,t),e.prototype.getDefaultShape=function(){return new DS},e.prototype.buildPath=function(t,e){var n=e.points,i=e.stackedOnPoints,r=0,o=n.length/2,a=e.smoothMonotone;if(e.connectNulls){for(;o>0&&MS(n[2*o-2],n[2*o-1]);o--);for(;r=0;a--){var s=t.getDimensionInfo(i[a].dimension);if("x"===(r=s&&s.coordDim)||"y"===r){o=i[a];break}}if(o){var l=e.getAxis(r),u=z(o.stops,(function(t){return{coord:l.toGlobalCoord(l.dataToCoord(t.value)),color:t.color}})),h=u.length,c=o.outerColors.slice();h&&u[0].coord>u[h-1].coord&&(u.reverse(),c.reverse());var p=function(t,e){var n,i,r=[],o=t.length;function a(t,e,n){var i=t.coord;return{coord:n,color:ti((n-i)/(e.coord-i),[t.color,e.color])}}for(var s=0;se){i?r.push(a(i,l,e)):n&&r.push(a(n,l,0),a(n,l,e));break}n&&(r.push(a(n,l,0)),n=null),r.push(l),i=l}}return r}(u,"x"===r?n.getWidth():n.getHeight()),d=p.length;if(!d&&h)return u[0].coord<0?c[1]?c[1]:u[h-1].color:c[0]?c[0]:u[0].color;var f=p[0].coord-10,g=p[d-1].coord+10,y=g-f;if(y<.001)return"transparent";E(p,(function(t){t.offset=(t.coord-f)/y})),p.push({offset:d?p[d-1].offset:.5,color:c[1]||"transparent"}),p.unshift({offset:d?p[0].offset:.5,color:c[0]||"transparent"});var v=new oh(0,0,0,0,p,!0);return v[r]=f,v[r+"2"]=g,v}}}function FS(t,e,n){var i=t.get("showAllSymbol"),r="auto"===i;if(!i||r){var o=n.getAxesByScale("ordinal")[0];if(o&&(!r||!function(t,e){var n=t.getExtent(),i=Math.abs(n[1]-n[0])/t.scale.count();isNaN(i)&&(i=0);for(var r=e.count(),o=Math.max(1,Math.round(r/5)),a=0;ai)return!1;return!0}(o,e))){var a=e.mapDimension(o.dim),s={};return E(o.getViewLabels(),(function(t){var e=o.scale.getRawOrdinalNumber(t.tickValue);s[e]=1})),function(t){return!s.hasOwnProperty(e.get(a,t))}}}}function GS(t,e){return[t[2*e],t[2*e+1]]}function WS(t){if(t.get(["endLabel","show"]))return!0;for(var e=0;e0&&"bolder"===t.get(["emphasis","lineStyle","width"]))&&(d.getState("emphasis").style.lineWidth=+d.style.lineWidth+1);rl(d).seriesIndex=t.seriesIndex,Zl(d,L,P,O);var R=zS(t.get("smooth")),N=t.get("smoothMonotone");if(d.setShape({smooth:R,smoothMonotone:N,connectNulls:w}),f){var E=a.getCalculationInfo("stackedOnSeries"),z=0;f.useStyle(k(l.getAreaStyle(),{fill:C,opacity:.7,lineJoin:"bevel",decal:a.getVisual("style").decal})),E&&(z=zS(E.get("smooth"))),f.setShape({smooth:R,stackedOnSmooth:z,smoothMonotone:N,connectNulls:w}),$l(f,t,"areaStyle"),rl(f).seriesIndex=t.seriesIndex,Zl(f,L,P,O)}var V=function(t){i._changePolyState(t)};a.eachItemGraphicEl((function(t){t&&(t.onHoverStateChange=V)})),this._polyline.onHoverStateChange=V,this._data=a,this._coordSys=r,this._stackedOnPoints=_,this._points=u,this._step=T,this._valueOrigin=m,t.get("triggerLineEvent")&&(this.packEventData(t,d),f&&this.packEventData(t,f))},e.prototype.packEventData=function(t,e){rl(e).eventData={componentType:"series",componentSubType:"line",componentIndex:t.componentIndex,seriesIndex:t.seriesIndex,seriesName:t.name,seriesType:"line"}},e.prototype.highlight=function(t,e,n,i){var r=t.getData(),o=zo(r,i);if(this._changePolyState("emphasis"),!(o instanceof Array)&&null!=o&&o>=0){var a=r.getLayout("points"),s=r.getItemGraphicEl(o);if(!s){var l=a[2*o],u=a[2*o+1];if(isNaN(l)||isNaN(u))return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(l,u))return;var h=t.get("zlevel")||0,c=t.get("z")||0;(s=new fS(r,o)).x=l,s.y=u,s.setZ(h,c);var p=s.getSymbolPath().getTextContent();p&&(p.zlevel=h,p.z=c,p.z2=this._polyline.z2+1),s.__temp=!0,r.setItemGraphicEl(o,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else Og.prototype.highlight.call(this,t,e,n,i)},e.prototype.downplay=function(t,e,n,i){var r=t.getData(),o=zo(r,i);if(this._changePolyState("normal"),null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else Og.prototype.downplay.call(this,t,e,n,i)},e.prototype._changePolyState=function(t){var e=this._polygon;Dl(this._polyline,t),e&&Dl(e,t)},e.prototype._newPolyline=function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new CS({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(e),this._polyline=e,e},e.prototype._newPolygon=function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new AS({shape:{points:t,stackedOnPoints:e},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},e.prototype._initSymbolLabelAnimation=function(t,e,n){var i,r,o=e.getBaseAxis(),a=o.inverse;"cartesian2d"===e.type?(i=o.isHorizontal(),r=!1):"polar"===e.type&&(i="angle"===o.dim,r=!0);var s=t.hostModel,l=s.get("animationDuration");X(l)&&(l=l(null));var u=s.get("animationDelay")||0,h=X(u)?u(null):u;t.eachItemGraphicEl((function(t,o){var s=t;if(s){var c=[t.x,t.y],p=void 0,d=void 0,f=void 0;if(n)if(r){var g=n,y=e.pointToCoord(c);i?(p=g.startAngle,d=g.endAngle,f=-y[1]/180*Math.PI):(p=g.r0,d=g.r,f=y[0])}else{var v=n;i?(p=v.x,d=v.x+v.width,f=t.x):(p=v.y+v.height,d=v.y,f=t.y)}var m=d===p?0:(f-p)/(d-p);a&&(m=1-m);var x=X(u)?u(o):l*m+h,_=s.getSymbolPath(),b=_.getTextContent();s.attr({scaleX:0,scaleY:0}),s.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:x}),b&&b.animateFrom({style:{opacity:0}},{duration:300,delay:x}),_.disableLabelAnimation=!0}}))},e.prototype._initOrUpdateEndLabel=function(t,e,n){var i=t.getModel("endLabel");if(WS(t)){var r=t.getData(),o=this._polyline,a=r.getLayout("points");if(!a)return o.removeTextContent(),void(this._endLabel=null);var s=this._endLabel;s||((s=this._endLabel=new Xs({z2:200})).ignoreClip=!0,o.setTextContent(this._endLabel),o.disableLabelAnimation=!0);var l=function(t){for(var e,n,i=t.length/2;i>0&&(e=t[2*i-2],n=t[2*i-1],isNaN(e)||isNaN(n));i--);return i-1}(a);l>=0&&(ic(o,rc(t,"endLabel"),{inheritColor:n,labelFetcher:t,labelDataIndex:l,defaultText:function(t,e,n){return null!=n?dS(r,n):pS(r,t)},enableTextSetter:!0},function(t,e){var n=e.getBaseAxis(),i=n.isHorizontal(),r=n.inverse,o=i?r?"right":"left":"center",a=i?"middle":r?"top":"bottom";return{normal:{align:t.get("align")||o,verticalAlign:t.get("verticalAlign")||a}}}(i,e)),o.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},e.prototype._endLabelOnDuring=function(t,e,n,i,r,o,a){var s=this._endLabel,l=this._polyline;if(s){t<1&&null==i.originalX&&(i.originalX=s.x,i.originalY=s.y);var u=n.getLayout("points"),h=n.hostModel,c=h.get("connectNulls"),p=o.get("precision"),d=o.get("distance")||0,f=a.getBaseAxis(),g=f.isHorizontal(),y=f.inverse,v=e.shape,m=y?g?v.x:v.y+v.height:g?v.x+v.width:v.y,x=(g?d:0)*(y?-1:1),_=(g?0:-d)*(y?-1:1),b=g?"x":"y",w=function(t,e,n){for(var i,r,o=t.length/2,a="x"===n?0:1,s=0,l=-1,u=0;u=e||i>=e&&r<=e){l=u;break}s=u,i=r}else i=r;return{range:[s,l],t:(e-i)/(r-i)}}(u,m,b),S=w.range,M=S[1]-S[0],I=void 0;if(M>=1){if(M>1&&!c){var T=GS(u,S[0]);s.attr({x:T[0]+x,y:T[1]+_}),r&&(I=h.getRawValue(S[0]))}else{(T=l.getPointOn(m,b))&&s.attr({x:T[0]+x,y:T[1]+_});var C=h.getRawValue(S[0]),D=h.getRawValue(S[1]);r&&(I=Zo(n,p,C,D,w.t))}i.lastFrameIndex=S[0]}else{var A=1===t||i.lastFrameIndex>0?S[0]:0;T=GS(u,A);r&&(I=h.getRawValue(A)),s.attr({x:T[0]+x,y:T[1]+_})}if(r){var k=pc(s);"function"==typeof k.setLabelText&&k.setLabelText(I)}}},e.prototype._doUpdateAnimation=function(t,e,n,i,r,o,a){var s=this._polyline,l=this._polygon,u=t.hostModel,h=function(t,e,n,i,r,o,a,s){for(var l=function(t,e){var n=[];return e.diff(t).add((function(t){n.push({cmd:"+",idx:t})})).update((function(t,e){n.push({cmd:"=",idx:e,idx1:t})})).remove((function(t){n.push({cmd:"-",idx:t})})).execute(),n}(t,e),u=[],h=[],c=[],p=[],d=[],f=[],g=[],y=_S(r,e,a),v=t.getLayout("points")||[],m=e.getLayout("points")||[],x=0;x3e3||l&&ES(p,f)>3e3)return s.stopAnimation(),s.setShape({points:d}),void(l&&(l.stopAnimation(),l.setShape({points:d,stackedOnPoints:f})));s.shape.__points=h.current,s.shape.points=c;var g={shape:{points:d}};h.current!==c&&(g.shape.__points=h.next),s.stopAnimation(),vh(s,g,u),l&&(l.setShape({points:c,stackedOnPoints:p}),l.stopAnimation(),vh(l,{shape:{stackedOnPoints:f}},u),s.shape.points!==l.shape.points&&(l.shape.points=s.shape.points));for(var y=[],v=h.status,m=0;me&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;ne&&(e=o,n=r)}return isFinite(n)?n:NaN},nearest:function(t){return t[0]}},ZS=function(t){return Math.round(t.length/2)};function jS(t){return{seriesType:t,reset:function(t,e,n){var i=t.getData(),r=t.get("sampling"),o=t.coordinateSystem,a=i.count();if(a>10&&"cartesian2d"===o.type&&r){var s=o.getBaseAxis(),l=o.getOtherAxis(s),u=s.getExtent(),h=n.getDevicePixelRatio(),c=Math.abs(u[1]-u[0])*(h||1),p=Math.round(a/c);if(isFinite(p)&&p>1){"lttb"===r&&t.setData(i.lttbDownSample(i.mapDimension(l.dim),1/p));var d=void 0;U(r)?d=US[r]:X(r)&&(d=r),d&&t.setData(i.downSample(i.mapDimension(l.dim),1/p,d,ZS))}}}}}var qS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){return _x(null,this,{useEncodeDefaulter:!0})},e.prototype.getMarkerPosition=function(t,e,n){var i=this.coordinateSystem;if(i&&i.clampData){var r=i.clampData(t),o=i.dataToPoint(r);if(n)E(i.getAxes(),(function(t,n){if("category"===t.type&&null!=e){var i=t.getTicksCoords(),a=t.getTickModel().get("alignWithLabel"),s=r[n],l="x1"===e[n]||"y1"===e[n];if(l&&!a&&(s+=1),i.length<2)return;if(2===i.length)return void(o[n]=t.toGlobalCoord(t.getExtent()[l?1:0]));for(var u=void 0,h=void 0,c=1,p=0;ps){h=(d+u)/2;break}1===p&&(c=f-i[0].tickValue)}null==h&&(u?u&&(h=i[i.length-1].coord):h=i[0].coord),o[n]=t.toGlobalCoord(h)}}));else{var a=this.getData(),s=a.getLayout("offset"),l=a.getLayout("size"),u=i.getBaseAxis().isHorizontal()?0:1;o[u]+=s+l/2}return o}return[NaN,NaN]},e.type="series.__base_bar__",e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},e}(bg);bg.registerClass(qS);var KS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(){return _x(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},e.prototype.getProgressive=function(){return!!this.get("large")&&this.get("progressive")},e.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t},e.prototype.brushSelector=function(t,e,n){return n.rect(e.getItemLayout(t))},e.type="series.bar",e.dependencies=["grid","polar"],e.defaultOption=kc(qS.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),e}(qS),$S=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},JS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="sausage",n}return n(e,t),e.prototype.getDefaultShape=function(){return new $S},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=.5*(o-r),s=r+a,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=2*Math.PI,p=h?u-lo)return!0;o=u}return!1},e.prototype._isOrderDifferentInView=function(t,e){for(var n=e.scale,i=n.getExtent(),r=Math.max(0,i[0]),o=Math.min(i[1],n.getOrdinalMeta().categories.length-1);r<=o;++r)if(t.ordinalNumbers[r]!==n.getRawOrdinalNumber(r))return!0},e.prototype._updateSortWithinSameData=function(t,e,n,i){if(this._isOrderChangedWithinSameData(t,e,n)){var r=this._dataSort(t,n,e);this._isOrderDifferentInView(r,n)&&(this._removeOnRenderedListener(i),i.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:r}))}},e.prototype._dispatchInitSort=function(t,e,n){var i=e.baseAxis,r=this._dataSort(t,i,(function(n){return t.get(t.mapDimension(e.otherAxis.dim),n)}));n.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",isInitSort:!0,axisId:i.index,sortInfo:r})},e.prototype.remove=function(t,e){this._clear(this._model),this._removeOnRenderedListener(e)},e.prototype.dispose=function(t,e){this._removeOnRenderedListener(e)},e.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},e.prototype._clear=function(t){var e=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl((function(e){wh(e,t,rl(e).dataIndex)}))):e.removeAll(),this._data=null,this._isFirstFrame=!0},e.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},e.type="bar",e}(Og),oM={cartesian2d:function(t,e){var n=e.width<0?-1:1,i=e.height<0?-1:1;n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height);var r=t.x+t.width,o=t.y+t.height,a=nM(e.x,t.x),s=iM(e.x+e.width,r),l=nM(e.y,t.y),u=iM(e.y+e.height,o),h=sr?s:a,e.y=c&&l>o?u:l,e.width=h?0:s-a,e.height=c?0:u-l,n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height),h||c},polar:function(t,e){var n=e.r0<=e.r?1:-1;if(n<0){var i=e.r;e.r=e.r0,e.r0=i}var r=iM(e.r,t.r),o=nM(e.r0,t.r0);e.r=r,e.r0=o;var a=r-o<0;if(n<0){i=e.r;e.r=e.r0,e.r0=i}return a}},aM={cartesian2d:function(t,e,n,i,r,o,a,s,l){var u=new Ws({shape:A({},i),z2:1});(u.__dataIndex=n,u.name="item",o)&&(u.shape[r?"height":"width"]=0);return u},polar:function(t,e,n,i,r,o,a,s,l){var u=!r&&l?JS:Fu,h=new u({shape:i,z2:1});h.name="item";var c,p,d=dM(r);if(h.calculateTextPosition=(c=d,p=({isRoundCap:u===JS}||{}).isRoundCap,function(t,e,n){var i=e.position;if(!i||i instanceof Array)return Dr(t,e,n);var r=c(i),o=null!=e.distance?e.distance:5,a=this.shape,s=a.cx,l=a.cy,u=a.r,h=a.r0,d=(u+h)/2,f=a.startAngle,g=a.endAngle,y=(f+g)/2,v=p?Math.abs(u-h)/2:0,m=Math.cos,x=Math.sin,_=s+u*m(f),b=l+u*x(f),w="left",S="top";switch(r){case"startArc":_=s+(h-o)*m(y),b=l+(h-o)*x(y),w="center",S="top";break;case"insideStartArc":_=s+(h+o)*m(y),b=l+(h+o)*x(y),w="center",S="bottom";break;case"startAngle":_=s+d*m(f)+QS(f,o+v,!1),b=l+d*x(f)+tM(f,o+v,!1),w="right",S="middle";break;case"insideStartAngle":_=s+d*m(f)+QS(f,-o+v,!1),b=l+d*x(f)+tM(f,-o+v,!1),w="left",S="middle";break;case"middle":_=s+d*m(y),b=l+d*x(y),w="center",S="middle";break;case"endArc":_=s+(u+o)*m(y),b=l+(u+o)*x(y),w="center",S="bottom";break;case"insideEndArc":_=s+(u-o)*m(y),b=l+(u-o)*x(y),w="center",S="top";break;case"endAngle":_=s+d*m(g)+QS(g,o+v,!0),b=l+d*x(g)+tM(g,o+v,!0),w="left",S="middle";break;case"insideEndAngle":_=s+d*m(g)+QS(g,-o+v,!0),b=l+d*x(g)+tM(g,-o+v,!0),w="right",S="middle";break;default:return Dr(t,e,n)}return(t=t||{}).x=_,t.y=b,t.align=w,t.verticalAlign=S,t}),o){var f=r?"r":"endAngle",g={};h.shape[f]=r?i.r0:i.startAngle,g[f]=i[f],(s?vh:mh)(h,{shape:g},o)}return h}};function sM(t,e,n,i,r,o,a,s){var l,u;o?(u={x:i.x,width:i.width},l={y:i.y,height:i.height}):(u={y:i.y,height:i.height},l={x:i.x,width:i.width}),s||(a?vh:mh)(n,{shape:l},e,r,null),(a?vh:mh)(n,{shape:u},e?t.baseAxis.model:null,r)}function lM(t,e){for(var n=0;n0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e,n){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle,clockwise:i.clockwise}}};function dM(t){return function(t){var e=t?"Arc":"Angle";return function(t){switch(t){case"start":case"insideStart":case"end":case"insideEnd":return t+e;default:return t}}}(t)}function fM(t,e,n,i,r,o,a,s){var l=e.getItemVisual(n,"style");if(s){if(!o.get("roundCap")){var u=t.shape;A(u,eM(i.getModel("itemStyle"),u,!0)),t.setShape(u)}}else{var h=i.get(["itemStyle","borderRadius"])||0;t.setShape("r",h)}t.useStyle(l);var c=i.getShallow("cursor");c&&t.attr("cursor",c);var p=s?a?r.r>=r.r0?"endArc":"startArc":r.endAngle>=r.startAngle?"endAngle":"startAngle":a?r.height>=0?"bottom":"top":r.width>=0?"right":"left",d=rc(i);ic(t,d,{labelFetcher:o,labelDataIndex:n,defaultText:pS(o.getData(),n),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:p});var f=t.getTextContent();if(s&&f){var g=i.get(["label","position"]);t.textConfig.inside="middle"===g||null,function(t,e,n,i){if(j(i))t.setTextConfig({rotation:i});else if(Y(e))t.setTextConfig({rotation:0});else{var r,o=t.shape,a=o.clockwise?o.startAngle:o.endAngle,s=o.clockwise?o.endAngle:o.startAngle,l=(a+s)/2,u=n(e);switch(u){case"startArc":case"insideStartArc":case"middle":case"insideEndArc":case"endArc":r=l;break;case"startAngle":case"insideStartAngle":r=a;break;case"endAngle":case"insideEndAngle":r=s;break;default:return void t.setTextConfig({rotation:0})}var h=1.5*Math.PI-r;"middle"===u&&h>Math.PI/2&&h<1.5*Math.PI&&(h-=Math.PI),t.setTextConfig({rotation:h})}}(t,"outside"===g?p:g,dM(a),i.get(["label","rotate"]))}dc(f,d,o.getRawValue(n),(function(t){return dS(e,t)}));var y=i.getModel(["emphasis"]);Zl(t,y.get("focus"),y.get("blurScope"),y.get("disabled")),$l(t,i),function(t){return null!=t.startAngle&&null!=t.endAngle&&t.startAngle===t.endAngle}(r)&&(t.style.fill="none",t.style.stroke="none",E(t.states,(function(t){t.style&&(t.style.fill=t.style.stroke="none")})))}var gM=function(){},yM=function(t){function e(e){var n=t.call(this,e)||this;return n.type="largeBar",n}return n(e,t),e.prototype.getDefaultShape=function(){return new gM},e.prototype.buildPath=function(t,e){for(var n=e.points,i=this.baseDimIdx,r=1-this.baseDimIdx,o=[],a=[],s=this.barWidth,l=0;l=s[0]&&e<=s[0]+l[0]&&n>=s[1]&&n<=s[1]+l[1])return a[h]}return-1}(this,t.offsetX,t.offsetY);rl(this).dataIndex=e>=0?e:null}),30,!1);function xM(t,e,n){if(OS(n,"cartesian2d")){var i=e,r=n.getArea();return{x:t?i.x:r.x,y:t?r.y:i.y,width:t?i.width:r.width,height:t?r.height:i.height}}var o=e;return{cx:(r=n.getArea()).cx,cy:r.cy,r0:t?r.r0:o.r0,r:t?r.r:o.r,startAngle:t?o.startAngle:0,endAngle:t?o.endAngle:2*Math.PI}}var _M=2*Math.PI,bM=Math.PI/180;function wM(t,e){return kp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function SM(t,e){var n=wM(t,e),i=t.get("center"),r=t.get("radius");Y(r)||(r=[0,r]);var o,a,s=$r(n.width,e.getWidth()),l=$r(n.height,e.getHeight()),u=Math.min(s,l),h=$r(r[0],u/2),c=$r(r[1],u/2),p=t.coordinateSystem;if(p){var d=p.dataToPoint(i);o=d[0]||0,a=d[1]||0}else Y(i)||(i=[i,i]),o=$r(i[0],s)+n.x,a=$r(i[1],l)+n.y;return{cx:o,cy:a,r0:h,r:c}}function MM(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.getData(),i=e.mapDimension("value"),r=wM(t,n),o=SM(t,n),a=o.cx,s=o.cy,l=o.r,u=o.r0,h=-t.get("startAngle")*bM,c=t.get("endAngle"),p=t.get("padAngle")*bM;c="auto"===c?h-_M:-c*bM;var d=t.get("minAngle")*bM+p,f=0;e.each(i,(function(t){!isNaN(t)&&f++}));var g=e.getSum(i),y=Math.PI/(g||f)*2,v=t.get("clockwise"),m=t.get("roseType"),x=t.get("stillShowZeroSum"),_=e.getDataExtent(i);_[0]=0;var b=v?1:-1,w=[h,c],S=b*p/2;us(w,!v),h=w[0],c=w[1];var M=IM(t);M.startAngle=h,M.endAngle=c,M.clockwise=v;var I=Math.abs(c-h),T=I,C=0,D=h;if(e.setLayout({viewRect:r,r:l}),e.each(i,(function(t,n){var i;if(isNaN(t))e.setItemLayout(n,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:v,cx:a,cy:s,r0:u,r:m?NaN:l});else{(i="area"!==m?0===g&&x?y:t*y:I/f)i?h=o=D+b*i/2:(o=D+S,h=r-S),e.setItemLayout(n,{angle:i,startAngle:o,endAngle:h,clockwise:v,cx:a,cy:s,r0:u,r:m?Kr(t,_,[u,l]):l}),D=r}})),T<_M&&f)if(T<=.001){var A=I/f;e.each(i,(function(t,n){if(!isNaN(t)){var i=e.getItemLayout(n);i.angle=A;var r=0,o=0;An?a:o,h=Math.abs(l.label.y-n);if(h>=u.maxY){var c=l.label.x-e-l.len2*r,p=i+l.len,f=Math.abs(c)t.unconstrainedWidth?null:d:null;i.setStyle("width",f)}var g=i.getBoundingRect();o.width=g.width;var y=(i.style.margin||0)+2.1;o.height=g.height+y,o.y-=(o.height-c)/2}}}function kM(t){return"center"===t.position}function LM(t){var e,n,i=t.getData(),r=[],o=!1,a=(t.get("minShowLabelAngle")||0)*CM,s=i.getLayout("viewRect"),l=i.getLayout("r"),u=s.width,h=s.x,c=s.y,p=s.height;function d(t){t.ignore=!0}i.each((function(t){var s=i.getItemGraphicEl(t),c=s.shape,p=s.getTextContent(),f=s.getTextGuideLine(),g=i.getItemModel(t),y=g.getModel("label"),v=y.get("position")||g.get(["emphasis","label","position"]),m=y.get("distanceToLabelLine"),x=y.get("alignTo"),_=$r(y.get("edgeDistance"),u),b=y.get("bleedMargin"),w=g.getModel("labelLine"),S=w.get("length");S=$r(S,u);var M=w.get("length2");if(M=$r(M,u),Math.abs(c.endAngle-c.startAngle)0?"right":"left":k>0?"left":"right"}var B=Math.PI,F=0,G=y.get("rotate");if(j(G))F=G*(B/180);else if("center"===v)F=0;else if("radial"===G||!0===G){F=k<0?-A+B:-A}else if("tangential"===G&&"outside"!==v&&"outer"!==v){var W=Math.atan2(k,L);W<0&&(W=2*B+W),L>0&&(W=B+W),F=W-B}if(o=!!F,p.x=I,p.y=T,p.rotation=F,p.setStyle({verticalAlign:"middle"}),P){p.setStyle({align:D});var H=p.states.select;H&&(H.x+=p.x,H.y+=p.y)}else{var Y=p.getBoundingRect().clone();Y.applyTransform(p.getComputedTransform());var X=(p.style.margin||0)+2.1;Y.y-=X/2,Y.height+=X,r.push({label:p,labelLine:f,position:v,len:S,len2:M,minTurnAngle:w.get("minTurnAngle"),maxSurfaceAngle:w.get("maxSurfaceAngle"),surfaceNormal:new De(k,L),linePoints:C,textAlign:D,labelDistance:m,labelAlignTo:x,edgeDistance:_,bleedMargin:b,rect:Y,unconstrainedWidth:Y.width,labelStyleWidth:p.style.width})}s.setTextConfig({inside:P})}})),!o&&t.get("avoidLabelOverlap")&&function(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=Number.MAX_VALUE,c=-Number.MAX_VALUE,p=0;p0){for(var l=o.getItemLayout(0),u=1;isNaN(l&&l.startAngle)&&u=n.r0}},e.type="pie",e}(Og);function RM(t,e,n){e=Y(e)&&{coordDimensions:e}||A({encodeDefine:t.getEncode()},e);var i=t.getSource(),r=px(i,e).dimensions,o=new cx(r,t);return o.initData(i,n),o}var NM=function(){function t(t,e){this._getDataWithEncodedVisual=t,this._getRawData=e}return t.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},t.prototype.containName=function(t){return this._getRawData().indexOfName(t)>=0},t.prototype.indexOfName=function(t){return this._getDataWithEncodedVisual().indexOfName(t)},t.prototype.getItemVisual=function(t,e){return this._getDataWithEncodedVisual().getItemVisual(t,e)},t}(),EM=Vo(),zM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new NM(W(this.getData,this),W(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.mergeOption=function(){t.prototype.mergeOption.apply(this,arguments)},e.prototype.getInitialData=function(){return RM(this,{coordDimensions:["value"],encodeDefaulter:H(ed,this)})},e.prototype.getDataParams=function(e){var n=this.getData(),i=EM(n),r=i.seats;if(!r){var o=[];n.each(n.mapDimension("value"),(function(t){o.push(t)})),r=i.seats=io(o,n.hostModel.get("percentPrecision"))}var a=t.prototype.getDataParams.call(this,e);return a.percent=r[e]||0,a.$vars.push("percent"),a},e.prototype._defaultLabelLine=function(t){Co(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.type="series.pie",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,endAngle:"auto",padAngle:0,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},e}(bg);var VM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return _x(null,this,{useEncodeDefaulter:!0})},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},e.prototype.brushSelector=function(t,e,n){return n.point(e.getItemLayout(t))},e.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:""},e.type="series.scatter",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}},universalTransition:{divideShape:"clone"}},e}(bg),BM=function(){},FM=function(t){function e(e){var n=t.call(this,e)||this;return n._off=0,n.hoverDataIdx=-1,n}return n(e,t),e.prototype.getDefaultShape=function(){return new BM},e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.buildPath=function(t,e){var n,i=e.points,r=e.size,o=this.symbolProxy,a=o.shape,s=t.getContext?t.getContext():t,l=s&&r[0]<4,u=this.softClipShape;if(l)this._ctx=s;else{for(this._ctx=null,n=this._off;n=0;s--){var l=2*s,u=i[l]-o/2,h=i[l+1]-a/2;if(t>=u&&e>=h&&t<=u+o&&e<=h+a)return s}return-1},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return t=n[0],e=n[1],i.contain(t,e)?(this.hoverDataIdx=this.findDataIndex(t,e))>=0:(this.hoverDataIdx=-1,!1)},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var e=this.shape,n=e.points,i=e.size,r=i[0],o=i[1],a=1/0,s=1/0,l=-1/0,u=-1/0,h=0;h=0&&(l.dataIndex=n+(t.startIndex||0))}))},t.prototype.remove=function(){this._clear()},t.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},t}(),WM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).incrementalPrepareUpdate(i),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},e.prototype.updateTransform=function(t,e,n){var i=t.getData();if(this.group.dirty(),!this._finished||i.count()>1e4)return{update:!0};var r=XS("").reset(t,e,n);r.progress&&r.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout(i)},e.prototype.eachRendered=function(t){this._symbolDraw&&this._symbolDraw.eachRendered(t)},e.prototype._getClipShape=function(t){if(t.get("clip",!0)){var e=t.coordinateSystem;return e&&e.getArea&&e.getArea(.1)}},e.prototype._updateSymbolDraw=function(t,e){var n=this._symbolDraw,i=e.pipelineContext.large;return n&&i===this._isLargeDraw||(n&&n.remove(),n=this._symbolDraw=i?new GM:new xS,this._isLargeDraw=i,this.group.removeAll()),this.group.add(n.group),n},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},e.prototype.dispose=function(){},e.type="scatter",e}(Og),HM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.type="grid",e.dependencies=["xAxis","yAxis"],e.layoutMode="box",e.defaultOption={show:!1,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},e}(zp),YM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",Wo).models[0]},e.type="cartesian2dAxis",e}(zp);R(YM,D_);var XM={show:!0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},UM=C({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},XM),ZM=C({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},XM),jM={category:UM,value:ZM,time:C({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},ZM),log:k({logBase:10},ZM)},qM={value:1,category:1,time:1,log:1};function KM(t,e,i,r){E(qM,(function(o,a){var s=C(C({},jM[a],!0),r,!0),l=function(t){function i(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e+"Axis."+a,n}return n(i,t),i.prototype.mergeDefaultAndTheme=function(t,e){var n=Pp(this),i=n?Rp(t):{};C(t,e.getTheme().get(a+"Axis")),C(t,this.getDefaultOption()),t.type=$M(t),n&&Op(t,i,n)},i.prototype.optionUpdated=function(){"category"===this.option.type&&(this.__ordinalMeta=Mx.createByAxisModel(this))},i.prototype.getCategories=function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},i.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},i.type=e+"Axis."+a,i.defaultOption=s,i}(i);t.registerComponentModel(l)})),t.registerSubTypeDefaulter(e+"Axis",$M)}function $M(t){return t.type||(t.data?"category":"value")}var JM=function(){function t(t){this.type="cartesian",this._dimList=[],this._axes={},this.name=t||""}return t.prototype.getAxis=function(t){return this._axes[t]},t.prototype.getAxes=function(){return z(this._dimList,(function(t){return this._axes[t]}),this)},t.prototype.getAxesByScale=function(t){return t=t.toLowerCase(),B(this.getAxes(),(function(e){return e.scale.type===t}))},t.prototype.addAxis=function(t){var e=t.dim;this._axes[e]=t,this._dimList.push(e)},t}(),QM=["x","y"];function tI(t){return"interval"===t.type||"time"===t.type}var eI=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="cartesian2d",e.dimensions=QM,e}return n(e,t),e.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var t=this.getAxis("x").scale,e=this.getAxis("y").scale;if(tI(t)&&tI(e)){var n=t.getExtent(),i=e.getExtent(),r=this.dataToPoint([n[0],i[0]]),o=this.dataToPoint([n[1],i[1]]),a=n[1]-n[0],s=i[1]-i[0];if(a&&s){var l=(o[0]-r[0])/a,u=(o[1]-r[1])/s,h=r[0]-n[0]*l,c=r[1]-i[0]*u,p=this._transform=[l,0,0,u,h,c];this._invTransform=Ie([],p)}}},e.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},e.prototype.containPoint=function(t){var e=this.getAxis("x"),n=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},e.prototype.containData=function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},e.prototype.containZone=function(t,e){var n=this.dataToPoint(t),i=this.dataToPoint(e),r=this.getArea(),o=new ze(n[0],n[1],i[0]-n[0],i[1]-n[1]);return r.intersect(o)},e.prototype.dataToPoint=function(t,e,n){n=n||[];var i=t[0],r=t[1];if(this._transform&&null!=i&&isFinite(i)&&null!=r&&isFinite(r))return Wt(n,t,this._transform);var o=this.getAxis("x"),a=this.getAxis("y");return n[0]=o.toGlobalCoord(o.dataToCoord(i,e)),n[1]=a.toGlobalCoord(a.dataToCoord(r,e)),n},e.prototype.clampData=function(t,e){var n=this.getAxis("x").scale,i=this.getAxis("y").scale,r=n.getExtent(),o=i.getExtent(),a=n.parse(t[0]),s=i.parse(t[1]);return(e=e||[])[0]=Math.min(Math.max(Math.min(r[0],r[1]),a),Math.max(r[0],r[1])),e[1]=Math.min(Math.max(Math.min(o[0],o[1]),s),Math.max(o[0],o[1])),e},e.prototype.pointToData=function(t,e){var n=[];if(this._invTransform)return Wt(n,t,this._invTransform);var i=this.getAxis("x"),r=this.getAxis("y");return n[0]=i.coordToData(i.toLocalCoord(t[0]),e),n[1]=r.coordToData(r.toLocalCoord(t[1]),e),n},e.prototype.getOtherAxis=function(t){return this.getAxis("x"===t.dim?"y":"x")},e.prototype.getArea=function(t){t=t||0;var e=this.getAxis("x").getGlobalExtent(),n=this.getAxis("y").getGlobalExtent(),i=Math.min(e[0],e[1])-t,r=Math.min(n[0],n[1])-t,o=Math.max(e[0],e[1])-i+t,a=Math.max(n[0],n[1])-r+t;return new ze(i,r,o,a)},e}(JM),nI=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.index=0,a.type=r||"value",a.position=o||"bottom",a}return n(e,t),e.prototype.isHorizontal=function(){var t=this.position;return"top"===t||"bottom"===t},e.prototype.getGlobalExtent=function(t){var e=this.getExtent();return e[0]=this.toGlobalCoord(e[0]),e[1]=this.toGlobalCoord(e[1]),t&&e[0]>e[1]&&e.reverse(),e},e.prototype.pointToData=function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},e.prototype.setCategorySortInfo=function(t){if("category"!==this.type)return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},e}(ab);function iI(t,e,n){n=n||{};var i=t.coordinateSystem,r=e.axis,o={},a=r.getAxesOnZeroOf()[0],s=r.position,l=a?"onZero":s,u=r.dim,h=i.getRect(),c=[h.x,h.x+h.width,h.y,h.y+h.height],p={left:0,right:1,top:0,bottom:1,onZero:2},d=e.get("offset")||0,f="x"===u?[c[2]-d,c[3]+d]:[c[0]-d,c[1]+d];if(a){var g=a.toGlobalCoord(a.dataToCoord(0));f[p.onZero]=Math.max(Math.min(g,f[1]),f[0])}o.position=["y"===u?f[p[l]]:c[0],"x"===u?f[p[l]]:c[3]],o.rotation=Math.PI/2*("x"===u?0:1);o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,left:-1,right:1}[s],o.labelOffset=a?f[p[s]]-f[p.onZero]:0,e.get(["axisTick","inside"])&&(o.tickDirection=-o.tickDirection),it(n.labelInside,e.get(["axisLabel","inside"]))&&(o.labelDirection=-o.labelDirection);var y=e.get(["axisLabel","rotate"]);return o.labelRotate="top"===l?-y:y,o.z2=1,o}function rI(t){return"cartesian2d"===t.get("coordinateSystem")}function oI(t){var e={xAxisModel:null,yAxisModel:null};return E(e,(function(n,i){var r=i.replace(/Model$/,""),o=t.getReferringComponents(r,Wo).models[0];e[i]=o})),e}var aI=Math.log;function sI(t,e,n){var i=Ex.prototype,r=i.getTicks.call(n),o=i.getTicks.call(n,!0),a=r.length-1,s=i.getInterval.call(n),l=x_(t,e),u=l.extent,h=l.fixMin,c=l.fixMax;if("log"===t.type){var p=aI(t.base);u=[aI(u[0])/p,aI(u[1])/p]}t.setExtent(u[0],u[1]),t.calcNiceExtent({splitNumber:a,fixMin:h,fixMax:c});var d=i.getExtent.call(t);h&&(u[0]=d[0]),c&&(u[1]=d[1]);var f=i.getInterval.call(t),g=u[0],y=u[1];if(h&&c)f=(y-g)/a;else if(h)for(y=u[0]+f*a;yu[0]&&isFinite(g)&&isFinite(u[0]);)f=Dx(f),g=u[1]-f*a;else{t.getTicks().length-1>a&&(f=Dx(f));var v=f*a;(g=Jr((y=Math.ceil(u[1]/f)*f)-v))<0&&u[0]>=0?(g=0,y=Jr(v)):y>0&&u[1]<=0&&(y=0,g=-Jr(v))}var m=(r[0].value-o[0].value)/s,x=(r[a].value-o[a].value)/s;i.setExtent.call(t,g+f*m,y+f*x),i.setInterval.call(t,f),(m||x)&&i.setNiceExtent.call(t,g+f,y-f)}var lI=function(){function t(t,e,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=QM,this._initCartesian(t,e,n),this.model=t}return t.prototype.getRect=function(){return this._rect},t.prototype.update=function(t,e){var n=this._axesMap;function i(t){var e,n=G(t),i=n.length;if(i){for(var r=[],o=i-1;o>=0;o--){var a=t[+n[o]],s=a.model,l=a.scale;Tx(l)&&s.get("alignTicks")&&null==s.get("interval")?r.push(a):(__(l,s),Tx(l)&&(e=a))}r.length&&(e||__((e=r.pop()).scale,e.model),E(r,(function(t){sI(t.scale,t.model,e.scale)})))}}this._updateScale(t,this.model),i(n.x),i(n.y);var r={};E(n.x,(function(t){hI(n,"y",t,r)})),E(n.y,(function(t){hI(n,"x",t,r)})),this.resize(this.model,e)},t.prototype.resize=function(t,e,n){var i=t.getBoxLayoutParams(),r=!n&&t.get("containLabel"),o=kp(i,{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;function s(){E(a,(function(t){var e=t.isHorizontal(),n=e?[0,o.width]:[0,o.height],i=t.inverse?1:0;t.setExtent(n[i],n[1-i]),function(t,e){var n=t.getExtent(),i=n[0]+n[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return i-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return i-t+e}}(t,e?o.x:o.y)}))}s(),r&&(E(a,(function(t){if(!t.model.get(["axisLabel","inside"])){var e=function(t){var e=t.model,n=t.scale;if(e.get(["axisLabel","show"])&&!n.isBlank()){var i,r,o=n.getExtent();r=n instanceof Rx?n.count():(i=n.getTicks()).length;var a,s=t.getLabelModel(),l=w_(t),u=1;r>40&&(u=Math.ceil(r/40));for(var h=0;h0&&i>0||n<0&&i<0)}(t)}var pI=Math.PI,dI=function(){function t(t,e){this.group=new Br,this.opt=e,this.axisModel=t,k(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0,handleAutoShown:function(){return!0}});var n=new Br({x:e.position[0],y:e.position[1],rotation:e.rotation});n.updateTransform(),this._transformGroup=n}return t.prototype.hasBuilder=function(t){return!!fI[t]},t.prototype.add=function(t){fI[t](this.opt,this.axisModel,this.group,this._transformGroup)},t.prototype.getGroup=function(){return this.group},t.innerTextLayout=function(t,e,n){var i,r,o=ao(e-t);return so(o)?(r=n>0?"top":"bottom",i="center"):so(o-pI)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=o>0&&o0?"right":"left":n>0?"left":"right"),{rotation:o,textAlign:i,textVerticalAlign:r}},t.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},t.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)},t}(),fI={axisLine:function(t,e,n,i){var r=e.get(["axisLine","show"]);if("auto"===r&&t.handleAutoShown&&(r=t.handleAutoShown("axisLine")),r){var o=e.axis.getExtent(),a=i.transform,s=[o[0],0],l=[o[1],0],u=s[0]>l[0];a&&(Wt(s,s,a),Wt(l,l,a));var h=A({lineCap:"round"},e.getModel(["axisLine","lineStyle"]).getLineStyle()),c=new Ku({shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:h,strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1});zh(c.shape,c.style.lineWidth),c.anid="line",n.add(c);var p=e.get(["axisLine","symbol"]);if(null!=p){var d=e.get(["axisLine","symbolSize"]);U(p)&&(p=[p,p]),(U(d)||j(d))&&(d=[d,d]);var f=Zy(e.get(["axisLine","symbolOffset"])||0,d),g=d[0],y=d[1];E([{rotate:t.rotation+Math.PI/2,offset:f[0],r:0},{rotate:t.rotation-Math.PI/2,offset:f[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],(function(e,i){if("none"!==p[i]&&null!=p[i]){var r=Xy(p[i],-g/2,-y/2,g,y,h.stroke,!0),o=e.r+e.offset,a=u?l:s;r.attr({rotation:e.rotate,x:a[0]+o*Math.cos(t.rotation),y:a[1]-o*Math.sin(t.rotation),silent:!0,z2:11}),n.add(r)}}))}}},axisTickLabel:function(t,e,n,i){var r=function(t,e,n,i){var r=n.axis,o=n.getModel("axisTick"),a=o.get("show");"auto"===a&&i.handleAutoShown&&(a=i.handleAutoShown("axisTick"));if(!a||r.scale.isBlank())return;for(var s=o.getModel("lineStyle"),l=i.tickDirection*o.get("length"),u=mI(r.getTicksCoords(),e.transform,l,k(s.getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])}),"ticks"),h=0;hc[1]?-1:1,d=["start"===s?c[0]-p*h:"end"===s?c[1]+p*h:(c[0]+c[1])/2,vI(s)?t.labelOffset+l*h:0],f=e.get("nameRotate");null!=f&&(f=f*pI/180),vI(s)?o=dI.innerTextLayout(t.rotation,null!=f?f:t.rotation,l):(o=function(t,e,n,i){var r,o,a=ao(n-t),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;so(a-pI/2)?(o=l?"bottom":"top",r="center"):so(a-1.5*pI)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*pI&&a>pI/2?l?"left":"right":l?"right":"left");return{rotation:a,textAlign:r,textVerticalAlign:o}}(t.rotation,s,f||0,c),null!=(a=t.axisNameAvailableWidth)&&(a=Math.abs(a/Math.sin(o.rotation)),!isFinite(a)&&(a=null)));var g=u.getFont(),y=e.get("nameTruncate",!0)||{},v=y.ellipsis,m=it(t.nameTruncateMaxWidth,y.maxWidth,a),x=new Xs({x:d[0],y:d[1],rotation:o.rotation,silent:dI.isLabelSilent(e),style:oc(u,{text:r,font:g,overflow:"truncate",width:m,ellipsis:v,fill:u.getTextColor()||e.get(["axisLine","lineStyle","color"]),align:u.get("align")||o.textAlign,verticalAlign:u.get("verticalAlign")||o.textVerticalAlign}),z2:1});if(Kh({el:x,componentModel:e,itemName:r}),x.__fullText=r,x.anid="name",e.get("triggerEvent")){var _=dI.makeAxisEventDataBase(e);_.targetType="axisName",_.name=r,rl(x).eventData=_}i.add(x),x.updateTransform(),n.add(x),x.decomposeTransform()}}};function gI(t){t&&(t.ignore=!0)}function yI(t,e){var n=t&&t.getBoundingRect().clone(),i=e&&e.getBoundingRect().clone();if(n&&i){var r=xe([]);return Se(r,r,-t.rotation),n.applyTransform(be([],r,t.getLocalTransform())),i.applyTransform(be([],r,e.getLocalTransform())),n.intersect(i)}}function vI(t){return"middle"===t||"center"===t}function mI(t,e,n,i,r){for(var o=[],a=[],s=[],l=0;l=0||t===e}function bI(t){var e=wI(t);if(e){var n=e.axisPointerModel,i=e.axis.scale,r=n.option,o=n.get("status"),a=n.get("value");null!=a&&(a=i.parse(a));var s=SI(n);null==o&&(r.status=s?"show":"hide");var l=i.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==a||a>l[1])&&(a=l[1]),a0&&!c.min?c.min=0:null!=c.min&&c.min<0&&!c.max&&(c.max=0);var p=a;null!=c.color&&(p=k({color:c.color},a));var d=C(T(c),{boundaryGap:t,splitNumber:e,scale:n,axisLine:i,axisTick:r,axisLabel:o,name:c.text,showName:s,nameLocation:"end",nameGap:u,nameTextStyle:p,triggerEvent:h},!1);if(U(l)){var f=d.name;d.name=l.replace("{value}",null!=f?f:"")}else X(l)&&(d.name=l(d.name,d));var g=new Cc(d,null,this.ecModel);return R(g,D_.prototype),g.mainType="radar",g.componentIndex=this.componentIndex,g}),this);this._indicatorModels=c},e.prototype.getIndicatorModels=function(){return this._indicatorModels},e.type="radar",e.defaultOption={z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:C({lineStyle:{color:"#bbb"}},XI.axisLine),axisLabel:UI(XI.axisLabel,!1),axisTick:UI(XI.axisTick,!1),splitLine:UI(XI.splitLine,!0),splitArea:UI(XI.splitArea,!0),indicator:[]},e}(zp),jI=["axisLine","axisTickLabel","axisName"],qI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},e.prototype._buildAxes=function(t){var e=t.coordinateSystem;E(z(e.getIndicatorAxes(),(function(t){var n=t.model.get("showName")?t.name:"";return new dI(t.model,{axisName:n,position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})})),(function(t){E(jI,t.add,t),this.group.add(t.getGroup())}),this)},e.prototype._buildSplitLineAndArea=function(t){var e=t.coordinateSystem,n=e.getIndicatorAxes();if(n.length){var i=t.get("shape"),r=t.getModel("splitLine"),o=t.getModel("splitArea"),a=r.getModel("lineStyle"),s=o.getModel("areaStyle"),l=r.get("show"),u=o.get("show"),h=a.get("color"),c=s.get("color"),p=Y(h)?h:[h],d=Y(c)?c:[c],f=[],g=[];if("circle"===i)for(var y=n[0].getTicksCoords(),v=e.cx,m=e.cy,x=0;x3?1.4:r>1?1.2:1.1;iT(this,"zoom","zoomOnMouseWheel",t,{scale:i>0?s:1/s,originX:o,originY:a,isAvailableBehavior:null})}if(n){var l=Math.abs(i);iT(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(i>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:o,originY:a,isAvailableBehavior:null})}}},e.prototype._pinchHandler=function(t){tT(this._zr,"globalPan")||iT(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})},e}(jt);function iT(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r.originY)&&(de(i.event),rT(t,e,n,i,r))}function rT(t,e,n,i,r){r.isAvailableBehavior=W(oT,null,n,i),t.trigger(e,r)}function oT(t,e,n){var i=n[t];return!t||i&&(!U(i)||e.event[i+"Key"])}function aT(t,e,n){var i=t.target;i.x+=e,i.y+=n,i.dirty()}function sT(t,e,n,i){var r=t.target,o=t.zoomLimit,a=t.zoom=t.zoom||1;if(a*=e,o){var s=o.min||0,l=o.max||1/0;a=Math.max(Math.min(l,a),s)}var u=a/t.zoom;t.zoom=a,r.x-=(n-r.x)*(u-1),r.y-=(i-r.y)*(u-1),r.scaleX*=u,r.scaleY*=u,r.dirty()}var lT,uT={axisPointer:1,tooltip:1,brush:1};function hT(t,e,n){var i=e.getComponentByElement(t.topTarget),r=i&&i.coordinateSystem;return i&&i!==n&&!uT.hasOwnProperty(i.mainType)&&r&&r.model!==n}function cT(t){U(t)&&(t=(new DOMParser).parseFromString(t,"text/xml"));var e=t;for(9===e.nodeType&&(e=e.firstChild);"svg"!==e.nodeName.toLowerCase()||1!==e.nodeType;)e=e.nextSibling;return e}var pT={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-anchor":"textAlign",visibility:"visibility",display:"display"},dT=G(pT),fT={"alignment-baseline":"textBaseline","stop-color":"stopColor"},gT=G(fT),yT=function(){function t(){this._defs={},this._root=null}return t.prototype.parse=function(t,e){e=e||{};var n=cT(t);this._defsUsePending=[];var i=new Br;this._root=i;var r=[],o=n.getAttribute("viewBox")||"",a=parseFloat(n.getAttribute("width")||e.width),s=parseFloat(n.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(s)&&(s=null),wT(n,i,null,!0,!1);for(var l,u,h=n.firstChild;h;)this._parseNode(h,i,r,null,!1,!1),h=h.nextSibling;if(function(t,e){for(var n=0;n=4&&(l={x:parseFloat(c[0]||0),y:parseFloat(c[1]||0),width:parseFloat(c[2]),height:parseFloat(c[3])})}if(l&&null!=a&&null!=s&&(u=LT(l,{x:0,y:0,width:a,height:s}),!e.ignoreViewBox)){var p=i;(i=new Br).add(p),p.scaleX=p.scaleY=u.scale,p.x=u.x,p.y=u.y}return e.ignoreRootClip||null==a||null==s||i.setClipPath(new Ws({shape:{x:0,y:0,width:a,height:s}})),{root:i,width:a,height:s,viewBoxRect:l,viewBoxTransform:u,named:r}},t.prototype._parseNode=function(t,e,n,i,r,o){var a,s=t.nodeName.toLowerCase(),l=i;if("defs"===s&&(r=!0),"text"===s&&(o=!0),"defs"===s||"switch"===s)a=e;else{if(!r){var u=lT[s];if(u&&_t(lT,s)){a=u.call(this,t,e);var h=t.getAttribute("name");if(h){var c={name:h,namedFrom:null,svgNodeTagLower:s,el:a};n.push(c),"g"===s&&(l=c)}else i&&n.push({name:i.name,namedFrom:i,svgNodeTagLower:s,el:a});e.add(a)}}var p=vT[s];if(p&&_t(vT,s)){var d=p.call(this,t),f=t.getAttribute("id");f&&(this._defs[f]=d)}}if(a&&a.isGroup)for(var g=t.firstChild;g;)1===g.nodeType?this._parseNode(g,a,n,l,r,o):3===g.nodeType&&o&&this._parseText(g,a),g=g.nextSibling},t.prototype._parseText=function(t,e){var n=new Ps({style:{text:t.textContent},silent:!0,x:this._textX||0,y:this._textY||0});_T(e,n),wT(t,n,this._defsUsePending,!1,!1),function(t,e){var n=e.__selfStyle;if(n){var i=n.textBaseline,r=i;i&&"auto"!==i?"baseline"===i?r="alphabetic":"before-edge"===i||"text-before-edge"===i?r="top":"after-edge"===i||"text-after-edge"===i?r="bottom":"central"!==i&&"mathematical"!==i||(r="middle"):r="alphabetic",t.style.textBaseline=r}var o=e.__inheritedStyle;if(o){var a=o.textAlign,s=a;a&&("middle"===a&&(s="center"),t.style.textAlign=s)}}(n,e);var i=n.style,r=i.fontSize;r&&r<9&&(i.fontSize=9,n.scaleX*=r/9,n.scaleY*=r/9);var o=(i.fontSize||i.fontFamily)&&[i.fontStyle,i.fontWeight,(i.fontSize||12)+"px",i.fontFamily||"sans-serif"].join(" ");i.font=o;var a=n.getBoundingRect();return this._textX+=a.width,e.add(n),n},t.internalField=void(lT={g:function(t,e){var n=new Br;return _T(e,n),wT(t,n,this._defsUsePending,!1,!1),n},rect:function(t,e){var n=new Ws;return _T(e,n),wT(t,n,this._defsUsePending,!1,!1),n.setShape({x:parseFloat(t.getAttribute("x")||"0"),y:parseFloat(t.getAttribute("y")||"0"),width:parseFloat(t.getAttribute("width")||"0"),height:parseFloat(t.getAttribute("height")||"0")}),n.silent=!0,n},circle:function(t,e){var n=new Su;return _T(e,n),wT(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),r:parseFloat(t.getAttribute("r")||"0")}),n.silent=!0,n},line:function(t,e){var n=new Ku;return _T(e,n),wT(t,n,this._defsUsePending,!1,!1),n.setShape({x1:parseFloat(t.getAttribute("x1")||"0"),y1:parseFloat(t.getAttribute("y1")||"0"),x2:parseFloat(t.getAttribute("x2")||"0"),y2:parseFloat(t.getAttribute("y2")||"0")}),n.silent=!0,n},ellipse:function(t,e){var n=new Iu;return _T(e,n),wT(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),rx:parseFloat(t.getAttribute("rx")||"0"),ry:parseFloat(t.getAttribute("ry")||"0")}),n.silent=!0,n},polygon:function(t,e){var n,i=t.getAttribute("points");i&&(n=bT(i));var r=new Xu({shape:{points:n||[]},silent:!0});return _T(e,r),wT(t,r,this._defsUsePending,!1,!1),r},polyline:function(t,e){var n,i=t.getAttribute("points");i&&(n=bT(i));var r=new Zu({shape:{points:n||[]},silent:!0});return _T(e,r),wT(t,r,this._defsUsePending,!1,!1),r},image:function(t,e){var n=new Ns;return _T(e,n),wT(t,n,this._defsUsePending,!1,!1),n.setStyle({image:t.getAttribute("xlink:href")||t.getAttribute("href"),x:+t.getAttribute("x"),y:+t.getAttribute("y"),width:+t.getAttribute("width"),height:+t.getAttribute("height")}),n.silent=!0,n},text:function(t,e){var n=t.getAttribute("x")||"0",i=t.getAttribute("y")||"0",r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0";this._textX=parseFloat(n)+parseFloat(r),this._textY=parseFloat(i)+parseFloat(o);var a=new Br;return _T(e,a),wT(t,a,this._defsUsePending,!1,!0),a},tspan:function(t,e){var n=t.getAttribute("x"),i=t.getAttribute("y");null!=n&&(this._textX=parseFloat(n)),null!=i&&(this._textY=parseFloat(i));var r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0",a=new Br;return _T(e,a),wT(t,a,this._defsUsePending,!1,!0),this._textX+=parseFloat(r),this._textY+=parseFloat(o),a},path:function(t,e){var n=_u(t.getAttribute("d")||"");return _T(e,n),wT(t,n,this._defsUsePending,!1,!1),n.silent=!0,n}}),t}(),vT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||"0",10),n=parseInt(t.getAttribute("y1")||"0",10),i=parseInt(t.getAttribute("x2")||"10",10),r=parseInt(t.getAttribute("y2")||"0",10),o=new oh(e,n,i,r);return mT(t,o),xT(t,o),o},radialgradient:function(t){var e=parseInt(t.getAttribute("cx")||"0",10),n=parseInt(t.getAttribute("cy")||"0",10),i=parseInt(t.getAttribute("r")||"0",10),r=new ah(e,n,i);return mT(t,r),xT(t,r),r}};function mT(t,e){"userSpaceOnUse"===t.getAttribute("gradientUnits")&&(e.global=!0)}function xT(t,e){for(var n=t.firstChild;n;){if(1===n.nodeType&&"stop"===n.nodeName.toLocaleLowerCase()){var i=n.getAttribute("offset"),r=void 0;r=i&&i.indexOf("%")>0?parseInt(i,10)/100:i?parseFloat(i):0;var o={};kT(n,o,o);var a=o.stopColor||n.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:r,color:a})}n=n.nextSibling}}function _T(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),k(e.__inheritedStyle,t.__inheritedStyle))}function bT(t){for(var e=TT(t),n=[],i=0;i0;o-=2){var a=i[o],s=i[o-1],l=TT(a);switch(r=r||[1,0,0,1,0,0],s){case"translate":we(r,r,[parseFloat(l[0]),parseFloat(l[1]||"0")]);break;case"scale":Me(r,r,[parseFloat(l[0]),parseFloat(l[1]||l[0])]);break;case"rotate":Se(r,r,-parseFloat(l[0])*DT,[parseFloat(l[1]||"0"),parseFloat(l[2]||"0")]);break;case"skewX":be(r,[1,0,Math.tan(parseFloat(l[0])*DT),1,0,0],r);break;case"skewY":be(r,[1,Math.tan(parseFloat(l[0])*DT),0,1,0,0],r);break;case"matrix":r[0]=parseFloat(l[0]),r[1]=parseFloat(l[1]),r[2]=parseFloat(l[2]),r[3]=parseFloat(l[3]),r[4]=parseFloat(l[4]),r[5]=parseFloat(l[5])}}e.setLocalTransform(r)}}(t,e),kT(t,a,s),i||function(t,e,n){for(var i=0;i0,f={api:n,geo:s,mapOrGeoModel:t,data:a,isVisualEncodedByVisualMap:d,isGeo:o,transformInfoRaw:c};"geoJSON"===s.resourceType?this._buildGeoJSON(f):"geoSVG"===s.resourceType&&this._buildSVG(f),this._updateController(t,e,n),this._updateMapSelectHandler(t,l,n,i)},t.prototype._buildGeoJSON=function(t){var e=this._regionsGroupByName=yt(),n=yt(),i=this._regionsGroup,r=t.transformInfoRaw,o=t.mapOrGeoModel,a=t.data,s=t.geo.projection,l=s&&s.stream;function u(t,e){return e&&(t=e(t)),t&&[t[0]*r.scaleX+r.x,t[1]*r.scaleY+r.y]}function h(t){for(var e=[],n=!l&&s&&s.project,i=0;i=0)&&(p=r);var d=a?{normal:{align:"center",verticalAlign:"middle"}}:null;ic(e,rc(i),{labelFetcher:p,labelDataIndex:c,defaultText:n},d);var f=e.getTextContent();if(f&&(JT(f).ignore=f.ignore,e.textConfig&&a)){var g=e.getBoundingRect().clone();e.textConfig.layoutRect=g,e.textConfig.position=[(a[0]-g.x)/g.width*100+"%",(a[1]-g.y)/g.height*100+"%"]}e.disableLabelAnimation=!0}else e.removeTextContent(),e.removeTextConfig(),e.disableLabelAnimation=null}function rC(t,e,n,i,r,o){t.data?t.data.setItemGraphicEl(o,e):rl(e).eventData={componentType:"geo",componentIndex:r.componentIndex,geoIndex:r.componentIndex,name:n,region:i&&i.option||{}}}function oC(t,e,n,i,r){t.data||Kh({el:e,componentModel:r,itemName:n,itemTooltipOption:i.get("tooltip")})}function aC(t,e,n,i,r){e.highDownSilentOnTouch=!!r.get("selectedMode");var o=i.getModel("emphasis"),a=o.get("focus");return Zl(e,a,o.get("blurScope"),o.get("disabled")),t.isGeo&&function(t,e,n){var i=rl(t);i.componentMainType=e.mainType,i.componentIndex=e.componentIndex,i.componentHighDownName=n}(e,r,n),a}function sC(t,e,n){var i,r=[];function o(){i=[]}function a(){i.length&&(r.push(i),i=[])}var s=e({polygonStart:o,polygonEnd:a,lineStart:o,lineEnd:a,point:function(t,e){isFinite(t)&&isFinite(e)&&i.push([t,e])},sphere:function(){}});return!n&&s.polygonStart(),E(t,(function(t){s.lineStart();for(var e=0;e-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n},e.type="series.map",e.dependencies=["geo"],e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},e}(bg);function hC(t){var e={};t.eachSeriesByType("map",(function(t){var n=t.getHostGeoModel(),i=n?"o"+n.id:"i"+t.getMapType();(e[i]=e[i]||[]).push(t)})),E(e,(function(t,e){for(var n,i,r,o=(n=z(t,(function(t){return t.getData()})),i=t[0].get("mapValueCalculation"),r={},E(n,(function(t){t.each(t.mapDimension("value"),(function(e,n){var i="ec-"+t.getName(n);r[i]=r[i]||[],isNaN(e)||r[i].push(e)}))})),n[0].map(n[0].mapDimension("value"),(function(t,e){for(var o="ec-"+n[0].getName(e),a=0,s=1/0,l=-1/0,u=r[o].length,h=0;h1?(d.width=p,d.height=p/x):(d.height=p,d.width=p*x),d.y=c[1]-d.height/2,d.x=c[0]-d.width/2;else{var b=t.getBoxLayoutParams();b.aspect=x,d=kp(b,{width:v,height:m})}this.setViewRect(d.x,d.y,d.width,d.height),this.setCenter(t.get("center"),e),this.setZoom(t.get("zoom"))}R(vC,dC);var _C=function(){function t(){this.dimensions=yC}return t.prototype.create=function(t,e){var n=[];function i(t){return{nameProperty:t.get("nameProperty"),aspectScale:t.get("aspectScale"),projection:t.get("projection")}}t.eachComponent("geo",(function(t,r){var o=t.get("map"),a=new vC(o+r,o,A({nameMap:t.get("nameMap")},i(t)));a.zoomLimit=t.get("scaleLimit"),n.push(a),t.coordinateSystem=a,a.model=t,a.resize=xC,a.resize(t,e)})),t.eachSeries((function(t){if("geo"===t.get("coordinateSystem")){var e=t.get("geoIndex")||0;t.coordinateSystem=n[e]}}));var r={};return t.eachSeriesByType("map",(function(t){if(!t.getHostGeoModel()){var e=t.getMapType();r[e]=r[e]||[],r[e].push(t)}})),E(r,(function(t,r){var o=z(t,(function(t){return t.get("nameMap")})),a=new vC(r,r,A({nameMap:D(o)},i(t[0])));a.zoomLimit=it.apply(null,z(t,(function(t){return t.get("scaleLimit")}))),n.push(a),a.resize=xC,a.resize(t[0],e),E(t,(function(t){t.coordinateSystem=a,function(t,e){E(e.get("geoCoord"),(function(e,n){t.addGeoCoord(n,e)}))}(a,t)}))})),n},t.prototype.getFilledRegions=function(t,e,n,i){for(var r=(t||[]).slice(),o=yt(),a=0;a=0;){var o=e[n];o.hierNode.prelim+=i,o.hierNode.modifier+=i,r+=o.hierNode.change,i+=o.hierNode.shift+r}}(t);var o=(n[0].hierNode.prelim+n[n.length-1].hierNode.prelim)/2;r?(t.hierNode.prelim=r.hierNode.prelim+e(t,r),t.hierNode.modifier=t.hierNode.prelim-o):t.hierNode.prelim=o}else r&&(t.hierNode.prelim=r.hierNode.prelim+e(t,r));t.parentNode.hierNode.defaultAncestor=function(t,e,n,i){if(e){for(var r=t,o=t,a=o.parentNode.children[0],s=e,l=r.hierNode.modifier,u=o.hierNode.modifier,h=a.hierNode.modifier,c=s.hierNode.modifier;s=PC(s),o=OC(o),s&&o;){r=PC(r),a=OC(a),r.hierNode.ancestor=t;var p=s.hierNode.prelim+c-o.hierNode.prelim-u+i(s,o);p>0&&(NC(RC(s,t,n),t,p),u+=p,l+=p),c+=s.hierNode.modifier,u+=o.hierNode.modifier,l+=r.hierNode.modifier,h+=a.hierNode.modifier}s&&!PC(r)&&(r.hierNode.thread=s,r.hierNode.modifier+=c-l),o&&!OC(a)&&(a.hierNode.thread=o,a.hierNode.modifier+=u-h,n=t)}return n}(t,r,t.parentNode.hierNode.defaultAncestor||i[0],e)}function AC(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function kC(t){return arguments.length?t:EC}function LC(t,e){return t-=Math.PI/2,{x:e*Math.cos(t),y:e*Math.sin(t)}}function PC(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function OC(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function RC(t,e,n){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:n}function NC(t,e,n){var i=n/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=i,e.hierNode.shift+=n,e.hierNode.modifier+=n,e.hierNode.prelim+=n,t.hierNode.change+=i}function EC(t,e){return t.parentNode===e.parentNode?1:2}var zC=function(){this.parentPoint=[],this.childPoints=[]},VC=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new zC},e.prototype.buildPath=function(t,e){var n=e.childPoints,i=n.length,r=e.parentPoint,o=n[0],a=n[i-1];if(1===i)return t.moveTo(r[0],r[1]),void t.lineTo(o[0],o[1]);var s=e.orient,l="TB"===s||"BT"===s?0:1,u=1-l,h=$r(e.forkPosition,1),c=[];c[l]=r[l],c[u]=r[u]+(a[u]-r[u])*h,t.moveTo(r[0],r[1]),t.lineTo(c[0],c[1]),t.moveTo(o[0],o[1]),c[l]=o[l],t.lineTo(c[0],c[1]),c[l]=a[l],t.lineTo(c[0],c[1]),t.lineTo(a[0],a[1]);for(var p=1;pm.x)||(_-=Math.PI);var S=b?"left":"right",M=s.getModel("label"),I=M.get("rotate"),T=I*(Math.PI/180),C=y.getTextContent();C&&(y.setTextConfig({position:M.get("position")||S,rotation:null==I?-_:T,origin:"center"}),C.setStyle("verticalAlign","middle"))}var D=s.get(["emphasis","focus"]),A="relative"===D?vt(a.getAncestorsIndices(),a.getDescendantIndices()):"ancestor"===D?a.getAncestorsIndices():"descendant"===D?a.getDescendantIndices():null;A&&(rl(n).focus=A),function(t,e,n,i,r,o,a,s){var l=e.getModel(),u=t.get("edgeShape"),h=t.get("layout"),c=t.getOrient(),p=t.get(["lineStyle","curveness"]),d=t.get("edgeForkPosition"),f=l.getModel("lineStyle").getLineStyle(),g=i.__edge;if("curve"===u)e.parentNode&&e.parentNode!==n&&(g||(g=i.__edge=new th({shape:XC(h,c,p,r,r)})),vh(g,{shape:XC(h,c,p,o,a)},t));else if("polyline"===u)if("orthogonal"===h){if(e!==n&&e.children&&0!==e.children.length&&!0===e.isExpand){for(var y=e.children,v=[],m=0;me&&(e=i.height)}this.height=e+1},t.prototype.getNodeById=function(t){if(this.getId()===t)return this;for(var e=0,n=this.children,i=n.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},t.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostTree.data.getItemModel(this.dataIndex).getModel(t)},t.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},t.prototype.setVisual=function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},t.prototype.getVisual=function(t){return this.hostTree.data.getItemVisual(this.dataIndex,t)},t.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},t.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},t.prototype.getChildIndex=function(){if(this.parentNode){for(var t=this.parentNode.children,e=0;e=0){var i=n.getData().tree.root,r=t.targetNode;if(U(r)&&(r=i.getNodeById(r)),r&&i.contains(r))return{node:r};var o=t.targetNodeId;if(null!=o&&(r=i.getNodeById(o)))return{node:r}}}function rD(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function oD(t,e){return P(rD(t),e)>=0}function aD(t,e){for(var n=[];t;){var i=t.dataIndex;n.push({name:t.name,dataIndex:i,value:e.getRawValue(i)}),t=t.parentNode}return n.reverse(),n}var sD=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasSymbolVisual=!0,e.ignoreStyleOnData=!0,e}return n(e,t),e.prototype.getInitialData=function(t){var e={name:t.name,children:t.data},n=t.leaves||{},i=new Cc(n,this,this.ecModel),r=nD.createTree(e,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e);return n&&n.children.length&&n.isExpand||(t.parentModel=i),t}))}));var o=0;r.eachNode("preorder",(function(t){t.depth>o&&(o=t.depth)}));var a=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:o;return r.root.eachNode("preorder",(function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=a})),r.data},e.prototype.getOrient=function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.formatTooltip=function(t,e,n){for(var i=this.getData().tree,r=i.root.children[0],o=i.getNodeByDataIndex(t),a=o.getValue(),s=o.name;o&&o!==r;)s=o.parentNode.name+"."+s,o=o.parentNode;return og("nameValue",{name:s,value:a,noValue:isNaN(a)||null==a})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treeAncestors=aD(i,this),n.collapsed=!i.isExpand,n},e.type="series.tree",e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},e}(bg);function lD(t,e){for(var n,i=[t];n=i.pop();)if(e(n),n.isExpand){var r=n.children;if(r.length)for(var o=r.length-1;o>=0;o--)i.push(r[o])}}function uD(t,e){t.eachSeriesByType("tree",(function(t){!function(t,e){var n=function(t,e){return kp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=n;var i=t.get("layout"),r=0,o=0,a=null;"radial"===i?(r=2*Math.PI,o=Math.min(n.height,n.width)/2,a=kC((function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth}))):(r=n.width,o=n.height,a=kC());var s=t.getData().tree.root,l=s.children[0];if(l){!function(t){var e=t;e.hierNode={defaultAncestor:null,ancestor:e,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var n,i,r=[e];n=r.pop();)if(i=n.children,n.isExpand&&i.length)for(var o=i.length-1;o>=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},r.push(a)}}(s),function(t,e,n){for(var i,r=[t],o=[];i=r.pop();)if(o.push(i),i.isExpand){var a=i.children;if(a.length)for(var s=0;sh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)}));var p=u===h?1:a(u,h)/2,d=p-u.getLayout().x,f=0,g=0,y=0,v=0;if("radial"===i)f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),lD(l,(function(t){y=(t.getLayout().x+d)*f,v=(t.depth-1)*g;var e=LC(y,v);t.setLayout({x:e.x,y:e.y,rawX:y,rawY:v},!0)}));else{var m=t.getOrient();"RL"===m||"LR"===m?(g=o/(h.getLayout().x+p+d),f=r/(c.depth-1||1),lD(l,(function(t){v=(t.getLayout().x+d)*g,y="LR"===m?(t.depth-1)*f:r-(t.depth-1)*f,t.setLayout({x:y,y:v},!0)}))):"TB"!==m&&"BT"!==m||(f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),lD(l,(function(t){y=(t.getLayout().x+d)*f,v="TB"===m?(t.depth-1)*g:o-(t.depth-1)*g,t.setLayout({x:y,y:v},!0)})))}}}(t,e)}))}function hD(t){t.eachSeriesByType("tree",(function(t){var e=t.getData();e.tree.eachNode((function(t){var n=t.getModel().getModel("itemStyle").getItemStyle();A(e.ensureUniqueItemVisual(t.dataIndex,"style"),n)}))}))}var cD=["treemapZoomToNode","treemapRender","treemapMove"];function pD(t){var e=t.getData().tree,n={};e.eachNode((function(e){for(var i=e;i&&i.depth>1;)i=i.parentNode;var r=pd(t.ecModel,i.name||i.dataIndex+"",n);e.setVisual("decal",r)}))}var dD=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.preventUsingHoverLayer=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};fD(n);var i=t.levels||[],r=this.designatedVisualItemStyle={},o=new Cc({itemStyle:r},this,e);i=t.levels=function(t,e){var n,i,r=To(e.get("color")),o=To(e.get(["aria","decal","decals"]));if(!r)return;t=t||[],E(t,(function(t){var e=new Cc(t),r=e.get("color"),o=e.get("decal");(e.get(["itemStyle","color"])||r&&"none"!==r)&&(n=!0),(e.get(["itemStyle","decal"])||o&&"none"!==o)&&(i=!0)}));var a=t[0]||(t[0]={});n||(a.color=r.slice());!i&&o&&(a.decal=o.slice());return t}(i,e);var a=z(i||[],(function(t){return new Cc(t,o,e)}),this),s=nD.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=s.getNodeByDataIndex(e),i=n?a[n.depth]:null;return t.parentModel=i||o,t}))}));return s.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.getRawValue(t);return og("nameValue",{name:i.getName(t),value:r})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treeAncestors=aD(i,this),n.treePathInfo=n.treeAncestors,n},e.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},A(this.layoutInfo,t)},e.prototype.mapIdToIndex=function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=yt(),this._idIndexMapCount=0);var n=e.get(t);return null==n&&e.set(t,n=this._idIndexMapCount++),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){pD(this)},e.type="series.treemap",e.layoutMode="box",e.defaultOption={progressive:0,left:"center",top:"middle",width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,scaleLimit:null,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",textStyle:{color:"#fff"}},emphasis:{itemStyle:{color:"rgba(0,0,0,0.9)"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],overflow:"truncate",verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},e}(bg);function fD(t){var e=0;E(t.children,(function(t){fD(t);var n=t.value;Y(n)&&(n=n[0]),e+=n}));var n=t.value;Y(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),Y(t.value)?t.value[0]=n:t.value=n}var gD=function(){function t(t){this.group=new Br,t.add(this.group)}return t.prototype.render=function(t,e,n,i){var r=t.getModel("breadcrumb"),o=this.group;if(o.removeAll(),r.get("show")&&n){var a=r.getModel("itemStyle"),s=r.getModel("emphasis"),l=a.getModel("textStyle"),u=s.getModel(["itemStyle","textStyle"]),h={pos:{left:r.get("left"),right:r.get("right"),top:r.get("top"),bottom:r.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:r.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(n,h,l),this._renderContent(t,h,a,s,l,u,i),Lp(o,h.pos,h.box)}},t.prototype._prepare=function(t,e,n){for(var i=t;i;i=i.parentNode){var r=Ro(i.getModel().get("name"),""),o=n.getTextRect(r),a=Math.max(o.width+16,e.emptyItemWidth);e.totalWidth+=a+8,e.renderList.push({node:i,text:r,width:a})}},t.prototype._renderContent=function(t,e,n,i,r,o,a){for(var s,l,u,h,c,p,d,f,g,y=0,v=e.emptyItemWidth,m=t.get(["breadcrumb","height"]),x=(s=e.pos,l=e.box,h=l.width,c=l.height,p=$r(s.left,h),d=$r(s.top,c),f=$r(s.right,h),g=$r(s.bottom,c),(isNaN(p)||isNaN(parseFloat(s.left)))&&(p=0),(isNaN(f)||isNaN(parseFloat(s.right)))&&(f=h),(isNaN(d)||isNaN(parseFloat(s.top)))&&(d=0),(isNaN(g)||isNaN(parseFloat(s.bottom)))&&(g=c),u=vp(u||0),{width:Math.max(f-p-u[1]-u[3],0),height:Math.max(g-d-u[0]-u[2],0)}),_=e.totalWidth,b=e.renderList,w=i.getModel("itemStyle").getItemStyle(),S=b.length-1;S>=0;S--){var M=b[S],I=M.node,T=M.width,C=M.text;_>x.width&&(_-=T-v,T=v,C=null);var D=new Xu({shape:{points:yD(y,0,T,m,S===b.length-1,0===S)},style:k(n.getItemStyle(),{lineJoin:"bevel"}),textContent:new Xs({style:oc(r,{text:C})}),textConfig:{position:"inside"},z2:1e5,onclick:H(a,I)});D.disableLabelAnimation=!0,D.getTextContent().ensureState("emphasis").style=oc(o,{text:C}),D.ensureState("emphasis").style=w,Zl(D,i.get("focus"),i.get("blurScope"),i.get("disabled")),this.group.add(D),vD(D,t,I),y+=T+8}},t.prototype.remove=function(){this.group.removeAll()},t}();function yD(t,e,n,i,r,o){var a=[[r?t:t-5,e],[t+n,e],[t+n,e+i],[r?t:t-5,e+i]];return!o&&a.splice(2,0,[t+n+5,e+i/2]),!r&&a.push([t,e+i/2]),a}function vD(t,e,n){rl(t).eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.seriesIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:n&&n.dataIndex,name:n&&n.name},treePathInfo:n&&aD(n,e)}}var mD=function(){function t(){this._storage=[],this._elExistsMap={}}return t.prototype.add=function(t,e,n,i,r){return!this._elExistsMap[t.id]&&(this._elExistsMap[t.id]=!0,this._storage.push({el:t,target:e,duration:n,delay:i,easing:r}),!0)},t.prototype.finished=function(t){return this._finishedCallback=t,this},t.prototype.start=function(){for(var t=this,e=this._storage.length,n=function(){--e<=0&&(t._storage.length=0,t._elExistsMap={},t._finishedCallback&&t._finishedCallback())},i=0,r=this._storage.length;i3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var n=e.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},e.prototype._onZoom=function(t){var e=t.originX,n=t.originY,i=t.scale;if("animating"!==this._state){var r=this.seriesModel.getData().tree.root;if(!r)return;var o=r.getLayout();if(!o)return;var a,s=new ze(o.x,o.y,o.width,o.height),l=this._controllerHost;a=l.zoomLimit;var u=l.zoom=l.zoom||1;if(u*=i,a){var h=a.min||0,c=a.max||1/0;u=Math.max(Math.min(c,u),h)}var p=u/l.zoom;l.zoom=u;var d=this.seriesModel.layoutInfo,f=[1,0,0,1,0,0];we(f,f,[-(e-=d.x),-(n-=d.y)]),Me(f,f,[p,p]),we(f,f,[e,n]),s.applyTransform(f),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:s.x,y:s.y,width:s.width,height:s.height}})}},e.prototype._initEvents=function(t){var e=this;t.on("click",(function(t){if("ready"===e._state){var n=e.seriesModel.get("nodeClick",!0);if(n){var i=e.findTarget(t.offsetX,t.offsetY);if(i){var r=i.node;if(r.getLayout().isLeafRoot)e._rootToNode(i);else if("zoomToNode"===n)e._zoomToNode(i);else if("link"===n){var o=r.hostTree.data.getItemModel(r.dataIndex),a=o.get("link",!0),s=o.get("target",!0)||"blank";a&&Mp(a,s)}}}}}),this)},e.prototype._renderBreadcrumb=function(t,e,n){var i=this;n||(n=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(n={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new gD(this.group))).render(t,e,n.node,(function(e){"animating"!==i._state&&(oD(t.getViewRoot(),e)?i._rootToNode({node:e}):i._zoomToNode({node:e}))}))},e.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},e.prototype.dispose=function(){this._clearController()},e.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype.findTarget=function(t,e){var n;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},(function(i){var r=this._storage.background[i.getRawIndex()];if(r){var o=r.transformCoordToLocal(t,e),a=r.shape;if(!(a.x<=o[0]&&o[0]<=a.x+a.width&&a.y<=o[1]&&o[1]<=a.y+a.height))return!1;n={node:i,offsetX:o[0],offsetY:o[1]}}}),this),n},e.type="treemap",e}(Og);var CD=E,DD=q,AD=-1,kD=function(){function t(e){var n=e.mappingMethod,i=e.type,r=this.option=T(e);this.type=i,this.mappingMethod=n,this._normalizeData=FD[n];var o=t.visualHandlers[i];this.applyVisual=o.applyVisual,this.getColorMapper=o.getColorMapper,this._normalizedToVisual=o._normalizedToVisual[n],"piecewise"===n?(LD(r),function(t){var e=t.pieceList;t.hasSpecialVisual=!1,E(e,(function(e,n){e.originIndex=n,null!=e.visual&&(t.hasSpecialVisual=!0)}))}(r)):"category"===n?r.categories?function(t){var e=t.categories,n=t.categoryMap={},i=t.visual;if(CD(e,(function(t,e){n[t]=e})),!Y(i)){var r=[];q(i)?CD(i,(function(t,e){var i=n[e];r[null!=i?i:AD]=t})):r[-1]=i,i=BD(t,r)}for(var o=e.length-1;o>=0;o--)null==i[o]&&(delete n[e[o]],e.pop())}(r):LD(r,!0):(lt("linear"!==n||r.dataExtent),LD(r))}return t.prototype.mapValueToVisual=function(t){var e=this._normalizeData(t);return this._normalizedToVisual(e,t)},t.prototype.getNormalizer=function(){return W(this._normalizeData,this)},t.listVisualTypes=function(){return G(t.visualHandlers)},t.isValidType=function(e){return t.visualHandlers.hasOwnProperty(e)},t.eachVisual=function(t,e,n){q(t)?E(t,e,n):e.call(n,t)},t.mapVisual=function(e,n,i){var r,o=Y(e)?[]:q(e)?{}:(r=!0,null);return t.eachVisual(e,(function(t,e){var a=n.call(i,t,e);r?o=a:o[e]=a})),o},t.retrieveVisuals=function(e){var n,i={};return e&&CD(t.visualHandlers,(function(t,r){e.hasOwnProperty(r)&&(i[r]=e[r],n=!0)})),n?i:null},t.prepareVisualTypes=function(t){if(Y(t))t=t.slice();else{if(!DD(t))return[];var e=[];CD(t,(function(t,n){e.push(n)})),t=e}return t.sort((function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1})),t},t.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},t.findPieceIndex=function(t,e,n){for(var i,r=1/0,o=0,a=e.length;ou[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:a.name,dataExtent:u,visual:a.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var p=new kD(c);return WD(p).drColorMappingBy=h,p}(0,r,o,0,u,d);E(d,(function(t,e){if(t.depth>=n.length||t===n[t.depth]){var o=function(t,e,n,i,r,o){var a=A({},e);if(r){var s=r.type,l="color"===s&&WD(r).drColorMappingBy,u="index"===l?i:"id"===l?o.mapIdToIndex(n.getId()):n.getValue(t.get("visualDimension"));a[s]=r.mapValueToVisual(u)}return a}(r,u,t,e,f,i);YD(t,o,n,i)}}))}else s=XD(u),h.fill=s}}function XD(t){var e=UD(t,"color");if(e){var n=UD(t,"colorAlpha"),i=UD(t,"colorSaturation");return i&&(e=ni(e,null,null,i)),n&&(e=ii(e,n)),e}}function UD(t,e){var n=t[e];if(null!=n&&"none"!==n)return n}function ZD(t,e){var n=t.get(e);return Y(n)&&n.length?{name:e,range:n}:null}var jD=Math.max,qD=Math.min,KD=it,$D=E,JD=["itemStyle","borderWidth"],QD=["itemStyle","gapWidth"],tA=["upperLabel","show"],eA=["upperLabel","height"],nA={seriesType:"treemap",reset:function(t,e,n,i){var r=n.getWidth(),o=n.getHeight(),a=t.option,s=kp(t.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()}),l=a.size||[],u=$r(KD(s.width,l[0]),r),h=$r(KD(s.height,l[1]),o),c=i&&i.type,p=iD(i,["treemapZoomToNode","treemapRootToNode"],t),d="treemapRender"===c||"treemapMove"===c?i.rootRect:null,f=t.getViewRoot(),g=rD(f);if("treemapMove"!==c){var y="treemapZoomToNode"===c?function(t,e,n,i,r){var o,a=(e||{}).node,s=[i,r];if(!a||a===n)return s;var l=i*r,u=l*t.option.zoomToNodeRatio;for(;o=a.parentNode;){for(var h=0,c=o.children,p=0,d=c.length;poo&&(u=oo),a=o}ua[1]&&(a[1]=e)}))):a=[NaN,NaN];return{sum:i,dataExtent:a}}(e,a,s);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,n,i,r){if(!i)return n;for(var o=t.get("visibleMin"),a=r.length,s=a,l=a-1;l>=0;l--){var u=r["asc"===i?a-l-1:l].getValue();u/n*ei&&(i=a));var l=t.area*t.area,u=e*e*n;return l?jD(u*i/l,l/(u*r)):1/0}function oA(t,e,n,i,r){var o=e===n.width?0:1,a=1-o,s=["x","y"],l=["width","height"],u=n[s[o]],h=e?t.area/e:0;(r||h>n[l[a]])&&(h=n[l[a]]);for(var c=0,p=t.length;ci&&(i=e);var o=i%2?i+2:i+3;r=[];for(var a=0;a0&&(m[0]=-m[0],m[1]=-m[1]);var _=v[0]<0?-1:1;if("start"!==i.__position&&"end"!==i.__position){var b=-Math.atan2(v[1],v[0]);u[0].8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";break;case"start":i.x=-h[0]*f+l[0],i.y=-h[1]*g+l[1],c=h[0]>.8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":i.x=f*_+l[0],i.y=l[1]+w,c=v[0]<0?"right":"left",i.originX=-f*_,i.originY=-w;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":i.x=x[0],i.y=x[1]+w,c="center",i.originY=-w;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":i.x=-f*_+u[0],i.y=u[1]+w,c=v[0]>=0?"right":"left",i.originX=f*_,i.originY=-w}i.scaleX=i.scaleY=r,i.setStyle({verticalAlign:i.__verticalAlign||p,align:i.__align||c})}}}function S(t,e){var n=t.__specifiedRotation;if(null==n){var i=a.tangentAt(e);t.attr("rotation",(1===e?-1:1)*Math.PI/2-Math.atan2(i[1],i[0]))}else t.attr("rotation",n)}},e}(Br),YA=function(){function t(t){this.group=new Br,this._LineCtor=t||HA}return t.prototype.updateData=function(t){var e=this;this._progressiveEls=null;var n=this,i=n.group,r=n._lineData;n._lineData=t,r||i.removeAll();var o=XA(t);t.diff(r).add((function(n){e._doAdd(t,n,o)})).update((function(n,i){e._doUpdate(r,t,i,n,o)})).remove((function(t){i.remove(r.getItemGraphicEl(t))})).execute()},t.prototype.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl((function(e,n){e.updateLayout(t,n)}),this)},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=XA(t),this._lineData=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e){function n(t){t.isGroup||function(t){return t.animators&&t.animators.length>0}(t)||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[];for(var i=t.start;i=0?i+=u:i-=u:f>=0?i-=u:i+=u}return i}function ek(t,e){var n=[],i=Dn,r=[[],[],[]],o=[[],[]],a=[];e/=2,t.eachEdge((function(t,s){var l=t.getLayout(),u=t.getVisual("fromSymbol"),h=t.getVisual("toSymbol");l.__original||(l.__original=[Tt(l[0]),Tt(l[1])],l[2]&&l.__original.push(Tt(l[2])));var c=l.__original;if(null!=l[2]){if(It(r[0],c[0]),It(r[1],c[2]),It(r[2],c[1]),u&&"none"!==u){var p=SA(t.node1),d=tk(r,c[0],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[0][0]=n[3],r[1][0]=n[4],i(r[0][1],r[1][1],r[2][1],d,n),r[0][1]=n[3],r[1][1]=n[4]}if(h&&"none"!==h){p=SA(t.node2),d=tk(r,c[1],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[1][0]=n[1],r[2][0]=n[2],i(r[0][1],r[1][1],r[2][1],d,n),r[1][1]=n[1],r[2][1]=n[2]}It(l[0],r[0]),It(l[1],r[2]),It(l[2],r[1])}else{if(It(o[0],c[0]),It(o[1],c[1]),kt(a,o[1],o[0]),Et(a,a),u&&"none"!==u){p=SA(t.node1);At(o[0],o[0],a,p*e)}if(h&&"none"!==h){p=SA(t.node2);At(o[1],o[1],a,-p*e)}It(l[0],o[0]),It(l[1],o[1])}}))}function nk(t){return"view"===t.type}var ik=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){var n=new xS,i=new YA,r=this.group;this._controller=new nT(e.getZr()),this._controllerHost={target:r},r.add(n.group),r.add(i.group),this._symbolDraw=n,this._lineDraw=i,this._firstRender=!0},e.prototype.render=function(t,e,n){var i=this,r=t.coordinateSystem;this._model=t;var o=this._symbolDraw,a=this._lineDraw,s=this.group;if(nk(r)){var l={x:r.x,y:r.y,scaleX:r.scaleX,scaleY:r.scaleY};this._firstRender?s.attr(l):vh(s,l,t)}ek(t.getGraph(),wA(t));var u=t.getData();o.updateData(u);var h=t.getEdgeData();a.updateData(h),this._updateNodeAndLinkScale(),this._updateController(t,e,n),clearTimeout(this._layoutTimeout);var c=t.forceLayout,p=t.get(["force","layoutAnimation"]);c&&this._startForceLayoutIteration(c,p);var d=t.get("layout");u.graph.eachNode((function(e){var n=e.dataIndex,r=e.getGraphicEl(),o=e.getModel();if(r){r.off("drag").off("dragend");var a=o.get("draggable");a&&r.on("drag",(function(o){switch(d){case"force":c.warmUp(),!i._layouting&&i._startForceLayoutIteration(c,p),c.setFixed(n),u.setItemLayout(n,[r.x,r.y]);break;case"circular":u.setItemLayout(n,[r.x,r.y]),e.setLayout({fixed:!0},!0),TA(t,"symbolSize",e,[o.offsetX,o.offsetY]),i.updateLayout(t);break;default:u.setItemLayout(n,[r.x,r.y]),_A(t.getGraph(),t),i.updateLayout(t)}})).on("dragend",(function(){c&&c.setUnfixed(n)})),r.setDraggable(a,!!o.get("cursor")),"adjacency"===o.get(["emphasis","focus"])&&(rl(r).focus=e.getAdjacentDataIndices())}})),u.graph.eachEdge((function(t){var e=t.getGraphicEl(),n=t.getModel().get(["emphasis","focus"]);e&&"adjacency"===n&&(rl(e).focus={edge:[t.dataIndex],node:[t.node1.dataIndex,t.node2.dataIndex]})}));var f="circular"===t.get("layout")&&t.get(["circular","rotateLabel"]),g=u.getLayout("cx"),y=u.getLayout("cy");u.graph.eachNode((function(t){DA(t,f,g,y)})),this._firstRender=!1},e.prototype.dispose=function(){this.remove(),this._controller&&this._controller.dispose(),this._controllerHost=null},e.prototype._startForceLayoutIteration=function(t,e){var n=this;!function i(){t.step((function(t){n.updateLayout(n._model),(n._layouting=!t)&&(e?n._layoutTimeout=setTimeout(i,16):i())}))}()},e.prototype._updateController=function(t,e,n){var i=this,r=this._controller,o=this._controllerHost,a=this.group;r.setPointerChecker((function(e,i,r){var o=a.getBoundingRect();return o.applyTransform(a.transform),o.contain(i,r)&&!hT(e,n,t)})),nk(t.coordinateSystem)?(r.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),r.off("pan").off("zoom").on("pan",(function(e){aT(o,e.dx,e.dy),n.dispatchAction({seriesId:t.id,type:"graphRoam",dx:e.dx,dy:e.dy})})).on("zoom",(function(e){sT(o,e.scale,e.originX,e.originY),n.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),i._updateNodeAndLinkScale(),ek(t.getGraph(),wA(t)),i._lineDraw.updateLayout(),n.updateLabelLayout()}))):r.disable()},e.prototype._updateNodeAndLinkScale=function(){var t=this._model,e=t.getData(),n=wA(t);e.eachItemGraphicEl((function(t,e){t&&t.setSymbolScale(n)}))},e.prototype.updateLayout=function(t){ek(t.getGraph(),wA(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},e.prototype.remove=function(){clearTimeout(this._layoutTimeout),this._layouting=!1,this._layoutTimeout=null,this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()},e.type="graph",e}(Og);function rk(t){return"_EC_"+t}var ok=function(){function t(t){this.type="graph",this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this._directed=t||!1}return t.prototype.isDirected=function(){return this._directed},t.prototype.addNode=function(t,e){t=null==t?""+e:""+t;var n=this._nodesMap;if(!n[rk(t)]){var i=new ak(t,e);return i.hostGraph=this,this.nodes.push(i),n[rk(t)]=i,i}},t.prototype.getNodeByIndex=function(t){var e=this.data.getRawIndex(t);return this.nodes[e]},t.prototype.getNodeById=function(t){return this._nodesMap[rk(t)]},t.prototype.addEdge=function(t,e,n){var i=this._nodesMap,r=this._edgesMap;if(j(t)&&(t=this.nodes[t]),j(e)&&(e=this.nodes[e]),t instanceof ak||(t=i[rk(t)]),e instanceof ak||(e=i[rk(e)]),t&&e){var o=t.id+"-"+e.id,a=new sk(t,e,n);return a.hostGraph=this,this._directed&&(t.outEdges.push(a),e.inEdges.push(a)),t.edges.push(a),t!==e&&e.edges.push(a),this.edges.push(a),r[o]=a,a}},t.prototype.getEdgeByIndex=function(t){var e=this.edgeData.getRawIndex(t);return this.edges[e]},t.prototype.getEdge=function(t,e){t instanceof ak&&(t=t.id),e instanceof ak&&(e=e.id);var n=this._edgesMap;return this._directed?n[t+"-"+e]:n[t+"-"+e]||n[e+"-"+t]},t.prototype.eachNode=function(t,e){for(var n=this.nodes,i=n.length,r=0;r=0&&t.call(e,n[r],r)},t.prototype.eachEdge=function(t,e){for(var n=this.edges,i=n.length,r=0;r=0&&n[r].node1.dataIndex>=0&&n[r].node2.dataIndex>=0&&t.call(e,n[r],r)},t.prototype.breadthFirstTraverse=function(t,e,n,i){if(e instanceof ak||(e=this._nodesMap[rk(e)]),e){for(var r="out"===n?"outEdges":"in"===n?"inEdges":"edges",o=0;o=0&&n.node2.dataIndex>=0}));for(r=0,o=i.length;r=0&&this[t][e].setItemVisual(this.dataIndex,n,i)},getVisual:function(n){return this[t][e].getItemVisual(this.dataIndex,n)},setLayout:function(n,i){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,n,i)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}}function uk(t,e,n,i,r){for(var o=new ok(i),a=0;a "+p)),u++)}var d,f=n.get("coordinateSystem");if("cartesian2d"===f||"polar"===f)d=_x(t,n);else{var g=wd.get(f),y=g&&g.dimensions||[];P(y,"value")<0&&y.concat(["value"]);var v=px(t,{coordDimensions:y,encodeDefine:n.getEncode()}).dimensions;(d=new cx(v,n)).initData(t)}var m=new cx(["value"],n);return m.initData(l,s),r&&r(d,m),ZC({mainData:d,struct:o,structAttr:"graph",datas:{node:d,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),o.update(),o}R(ak,lk("hostGraph","data")),R(sk,lk("hostGraph","edgeData"));var hk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments);var n=this;function i(){return n._categoriesData}this.legendVisualProvider=new NM(i,i),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeDefaultAndTheme=function(e){t.prototype.mergeDefaultAndTheme.apply(this,arguments),Co(e,"edgeLabel",["show"])},e.prototype.getInitialData=function(t,e){var n,i=t.edges||t.links||[],r=t.data||t.nodes||[],o=this;if(r&&i){dA(n=this)&&(n.__curvenessList=[],n.__edgeMap={},fA(n));var a=uk(r,i,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t}));var n=Cc.prototype.getModel;function i(t,e){var i=n.call(this,t,e);return i.resolveParentPath=r,i}function r(t){if(t&&("label"===t[0]||"label"===t[1])){var e=t.slice();return"label"===t[0]?e[0]="edgeLabel":"label"===t[1]&&(e[1]="edgeLabel"),e}return t}e.wrapMethod("getItemModel",(function(t){return t.resolveParentPath=r,t.getModel=i,t}))}));return E(a.edges,(function(t){!function(t,e,n,i){if(dA(n)){var r=gA(t,e,n),o=n.__edgeMap,a=o[yA(r)];o[r]&&!a?o[r].isForward=!0:a&&o[r]&&(a.isForward=!0,o[r].isForward=!1),o[r]=o[r]||[],o[r].push(i)}}(t.node1,t.node2,this,t.dataIndex)}),this),a.data}},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.getCategoriesData=function(){return this._categoriesData},e.prototype.formatTooltip=function(t,e,n){if("edge"===n){var i=this.getData(),r=this.getDataParams(t,n),o=i.graph.getEdgeByIndex(t),a=i.getName(o.node1.dataIndex),s=i.getName(o.node2.dataIndex),l=[];return null!=a&&l.push(a),null!=s&&l.push(s),og("nameValue",{name:l.join(" > "),value:r.value,noValue:null==r.value})}return vg({series:this,dataIndex:t,multipleSeries:e})},e.prototype._updateCategoriesData=function(){var t=z(this.option.categories||[],(function(t){return null!=t.value?t:A({value:0},t)})),e=new cx(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray((function(t){return e.getItemModel(t)}))},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.isAnimationEnabled=function(){return t.prototype.isAnimationEnabled.call(this)&&!("force"===this.get("layout")&&this.get(["force","layoutAnimation"]))},e.type="series.graph",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(bg),ck={type:"graphRoam",event:"graphRoam",update:"none"};var pk=function(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0},dk=function(t){function e(e){var n=t.call(this,e)||this;return n.type="pointer",n}return n(e,t),e.prototype.getDefaultShape=function(){return new pk},e.prototype.buildPath=function(t,e){var n=Math.cos,i=Math.sin,r=e.r,o=e.width,a=e.angle,s=e.x-n(a)*o*(o>=r/3?1:2),l=e.y-i(a)*o*(o>=r/3?1:2);a=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+n(a)*o,e.y+i(a)*o),t.lineTo(e.x+n(e.angle)*r,e.y+i(e.angle)*r),t.lineTo(e.x-n(a)*o,e.y-i(a)*o),t.lineTo(s,l)},e}(ks);function fk(t,e){var n=null==t?"":t+"";return e&&(U(e)?n=e.replace("{value}",n):X(e)&&(n=e(t))),n}var gk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll();var i=t.get(["axisLine","lineStyle","color"]),r=function(t,e){var n=t.get("center"),i=e.getWidth(),r=e.getHeight(),o=Math.min(i,r);return{cx:$r(n[0],e.getWidth()),cy:$r(n[1],e.getHeight()),r:$r(t.get("radius"),o/2)}}(t,n);this._renderMain(t,e,n,i,r),this._data=t.getData()},e.prototype.dispose=function(){},e.prototype._renderMain=function(t,e,n,i,r){var o=this.group,a=t.get("clockwise"),s=-t.get("startAngle")/180*Math.PI,l=-t.get("endAngle")/180*Math.PI,u=t.getModel("axisLine"),h=u.get("roundCap")?JS:Fu,c=u.get("show"),p=u.getModel("lineStyle"),d=p.get("width"),f=[s,l];us(f,!a);for(var g=(l=f[1])-(s=f[0]),y=s,v=[],m=0;c&&m=t&&(0===e?0:i[e-1][0])Math.PI/2&&(V+=Math.PI):"tangential"===z?V=-M-Math.PI/2:j(z)&&(V=z*Math.PI/180),0===V?c.add(new Xs({style:oc(x,{text:O,x:N,y:E,verticalAlign:h<-.8?"top":h>.8?"bottom":"middle",align:u<-.4?"left":u>.4?"right":"center"},{inheritColor:R}),silent:!0})):c.add(new Xs({style:oc(x,{text:O,x:N,y:E,verticalAlign:"middle",align:"center"},{inheritColor:R}),silent:!0,originX:N,originY:E,rotation:V}))}if(m.get("show")&&k!==_){P=(P=m.get("distance"))?P+l:l;for(var B=0;B<=b;B++){u=Math.cos(M),h=Math.sin(M);var F=new Ku({shape:{x1:u*(f-P)+p,y1:h*(f-P)+d,x2:u*(f-S-P)+p,y2:h*(f-S-P)+d},silent:!0,style:D});"auto"===D.stroke&&F.setStyle({stroke:i((k+B/b)/_)}),c.add(F),M+=T}M-=T}else M+=I}},e.prototype._renderPointer=function(t,e,n,i,r,o,a,s,l){var u=this.group,h=this._data,c=this._progressEls,p=[],d=t.get(["pointer","show"]),f=t.getModel("progress"),g=f.get("show"),y=t.getData(),v=y.mapDimension("value"),m=+t.get("min"),x=+t.get("max"),_=[m,x],b=[o,a];function w(e,n){var i,o=y.getItemModel(e).getModel("pointer"),a=$r(o.get("width"),r.r),s=$r(o.get("length"),r.r),l=t.get(["pointer","icon"]),u=o.get("offsetCenter"),h=$r(u[0],r.r),c=$r(u[1],r.r),p=o.get("keepAspect");return(i=l?Xy(l,h-a/2,c-s,a,s,null,p):new dk({shape:{angle:-Math.PI/2,width:a,r:s,x:h,y:c}})).rotation=-(n+Math.PI/2),i.x=r.cx,i.y=r.cy,i}function S(t,e){var n=f.get("roundCap")?JS:Fu,i=f.get("overlap"),a=i?f.get("width"):l/y.count(),u=i?r.r-a:r.r-(t+1)*a,h=i?r.r:r.r-t*a,c=new n({shape:{startAngle:o,endAngle:e,cx:r.cx,cy:r.cy,clockwise:s,r0:u,r:h}});return i&&(c.z2=x-y.get(v,t)%x),c}(g||d)&&(y.diff(h).add((function(e){var n=y.get(v,e);if(d){var i=w(e,o);mh(i,{rotation:-((isNaN(+n)?b[0]:Kr(n,_,b,!0))+Math.PI/2)},t),u.add(i),y.setItemGraphicEl(e,i)}if(g){var r=S(e,o),a=f.get("clip");mh(r,{shape:{endAngle:Kr(n,_,b,a)}},t),u.add(r),ol(t.seriesIndex,y.dataType,e,r),p[e]=r}})).update((function(e,n){var i=y.get(v,e);if(d){var r=h.getItemGraphicEl(n),a=r?r.rotation:o,s=w(e,a);s.rotation=a,vh(s,{rotation:-((isNaN(+i)?b[0]:Kr(i,_,b,!0))+Math.PI/2)},t),u.add(s),y.setItemGraphicEl(e,s)}if(g){var l=c[n],m=S(e,l?l.shape.endAngle:o),x=f.get("clip");vh(m,{shape:{endAngle:Kr(i,_,b,x)}},t),u.add(m),ol(t.seriesIndex,y.dataType,e,m),p[e]=m}})).execute(),y.each((function(t){var e=y.getItemModel(t),n=e.getModel("emphasis"),r=n.get("focus"),o=n.get("blurScope"),a=n.get("disabled");if(d){var s=y.getItemGraphicEl(t),l=y.getItemVisual(t,"style"),u=l.fill;if(s instanceof Ns){var h=s.style;s.useStyle(A({image:h.image,x:h.x,y:h.y,width:h.width,height:h.height},l))}else s.useStyle(l),"pointer"!==s.type&&s.setColor(u);s.setStyle(e.getModel(["pointer","itemStyle"]).getItemStyle()),"auto"===s.style.fill&&s.setStyle("fill",i(Kr(y.get(v,t),_,[0,1],!0))),s.z2EmphasisLift=0,$l(s,e),Zl(s,r,o,a)}if(g){var c=p[t];c.useStyle(y.getItemVisual(t,"style")),c.setStyle(e.getModel(["progress","itemStyle"]).getItemStyle()),c.z2EmphasisLift=0,$l(c,e),Zl(c,r,o,a)}})),this._progressEls=p)},e.prototype._renderAnchor=function(t,e){var n=t.getModel("anchor");if(n.get("show")){var i=n.get("size"),r=n.get("icon"),o=n.get("offsetCenter"),a=n.get("keepAspect"),s=Xy(r,e.cx-i/2+$r(o[0],e.r),e.cy-i/2+$r(o[1],e.r),i,i,null,a);s.z2=n.get("showAbove")?1:0,s.setStyle(n.getModel("itemStyle").getItemStyle()),this.group.add(s)}},e.prototype._renderTitleAndDetail=function(t,e,n,i,r){var o=this,a=t.getData(),s=a.mapDimension("value"),l=+t.get("min"),u=+t.get("max"),h=new Br,c=[],p=[],d=t.isAnimationEnabled(),f=t.get(["pointer","showAbove"]);a.diff(this._data).add((function(t){c[t]=new Xs({silent:!0}),p[t]=new Xs({silent:!0})})).update((function(t,e){c[t]=o._titleEls[e],p[t]=o._detailEls[e]})).execute(),a.each((function(e){var n=a.getItemModel(e),o=a.get(s,e),g=new Br,y=i(Kr(o,[l,u],[0,1],!0)),v=n.getModel("title");if(v.get("show")){var m=v.get("offsetCenter"),x=r.cx+$r(m[0],r.r),_=r.cy+$r(m[1],r.r);(D=c[e]).attr({z2:f?0:2,style:oc(v,{x:x,y:_,text:a.getName(e),align:"center",verticalAlign:"middle"},{inheritColor:y})}),g.add(D)}var b=n.getModel("detail");if(b.get("show")){var w=b.get("offsetCenter"),S=r.cx+$r(w[0],r.r),M=r.cy+$r(w[1],r.r),I=$r(b.get("width"),r.r),T=$r(b.get("height"),r.r),C=t.get(["progress","show"])?a.getItemVisual(e,"style").fill:y,D=p[e],A=b.get("formatter");D.attr({z2:f?0:2,style:oc(b,{x:S,y:M,text:fk(o,A),width:isNaN(I)?null:I,height:isNaN(T)?null:T,align:"center",verticalAlign:"middle"},{inheritColor:C})}),dc(D,{normal:b},o,(function(t){return fk(t,A)})),d&&fc(D,e,a,t,{getFormattedLabel:function(t,e,n,i,r,a){return fk(a?a.interpolatedValue:o,A)}}),g.add(D)}h.add(g)})),this.group.add(h),this._titleEls=c,this._detailEls=p},e.type="gauge",e}(Og),yk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="itemStyle",n}return n(e,t),e.prototype.getInitialData=function(t,e){return RM(this,["value"])},e.type="series.gauge",e.defaultOption={z:2,colorBy:"data",center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12,rotate:0},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#fff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},e}(bg);var vk=["itemStyle","opacity"],mk=function(t){function e(e,n){var i=t.call(this)||this,r=i,o=new Zu,a=new Xs;return r.setTextContent(a),i.setTextGuideLine(o),i.updateData(e,n,!0),i}return n(e,t),e.prototype.updateData=function(t,e,n){var i=this,r=t.hostModel,o=t.getItemModel(e),a=t.getItemLayout(e),s=o.getModel("emphasis"),l=o.get(vk);l=null==l?1:l,n||Sh(i),i.useStyle(t.getItemVisual(e,"style")),i.style.lineJoin="round",n?(i.setShape({points:a.points}),i.style.opacity=0,mh(i,{style:{opacity:l}},r,e)):vh(i,{style:{opacity:l},shape:{points:a.points}},r,e),$l(i,o),this._updateLabel(t,e),Zl(this,s.get("focus"),s.get("blurScope"),s.get("disabled"))},e.prototype._updateLabel=function(t,e){var n=this,i=this.getTextGuideLine(),r=n.getTextContent(),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e).label,l=t.getItemVisual(e,"style"),u=l.fill;ic(r,rc(a),{labelFetcher:t.hostModel,labelDataIndex:e,defaultOpacity:l.opacity,defaultText:t.getName(e)},{normal:{align:s.textAlign,verticalAlign:s.verticalAlign}}),n.setTextConfig({local:!0,inside:!!s.inside,insideStroke:u,outsideFill:u});var h=s.linePoints;i.setShape({points:h}),n.textGuideLineConfig={anchor:h?new De(h[0][0],h[0][1]):null},vh(r,{style:{x:s.x,y:s.y}},o,e),r.attr({rotation:s.rotation,originX:s.x,originY:s.y,z2:10}),kb(n,Lb(a),{stroke:u})},e}(Xu),xk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreLabelLineUpdate=!0,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this._data,o=this.group;i.diff(r).add((function(t){var e=new mk(i,t);i.setItemGraphicEl(t,e),o.add(e)})).update((function(t,e){var n=r.getItemGraphicEl(e);n.updateData(i,t),o.add(n),i.setItemGraphicEl(t,n)})).remove((function(e){wh(r.getItemGraphicEl(e),t,e)})).execute(),this._data=i},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.prototype.dispose=function(){},e.type="funnel",e}(Og),_k=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new NM(W(this.getData,this),W(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.getInitialData=function(t,e){return RM(this,{coordDimensions:["value"],encodeDefaulter:H(ed,this)})},e.prototype._defaultLabelLine=function(t){Co(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=n.mapDimension("value"),o=n.getSum(r);return i.percent=o?+(n.get(r,e)/o*100).toFixed(2):0,i.$vars.push("percent"),i},e.type="series.funnel",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(bg);function bk(t,e){t.eachSeriesByType("funnel",(function(t){var n=t.getData(),i=n.mapDimension("value"),r=t.get("sort"),o=function(t,e){return kp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e),a=t.get("orient"),s=o.width,l=o.height,u=function(t,e){for(var n=t.mapDimension("value"),i=t.mapArray(n,(function(t){return t})),r=[],o="ascending"===e,a=0,s=t.count();a5)return;var i=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==i.behavior&&this._dispatchExpand({axisExpandWindow:i.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&Rk(this,"mousemove")){var e=this._model,n=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),i=n.behavior;"jump"===i&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===i?null:{axisExpandWindow:n.axisExpandWindow,animation:"jump"===i?null:{duration:0}})}}};function Rk(t,e){var n=t._model;return n.get("axisExpandable")&&n.get("axisExpandTriggerOn")===e}var Nk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){t.prototype.init.apply(this,arguments),this.mergeOption({})},e.prototype.mergeOption=function(t){var e=this.option;t&&C(e,t,!0),this._initDimensions()},e.prototype.contains=function(t,e){var n=t.get("parallelIndex");return null!=n&&e.getComponent("parallel",n)===this},e.prototype.setAxisExpand=function(t){E(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],(function(e){t.hasOwnProperty(e)&&(this.option[e]=t[e])}),this)},e.prototype._initDimensions=function(){var t=this.dimensions=[],e=this.parallelAxisIndex=[];E(B(this.ecModel.queryComponents({mainType:"parallelAxis"}),(function(t){return(t.get("parallelIndex")||0)===this.componentIndex}),this),(function(n){t.push("dim"+n.get("dim")),e.push(n.componentIndex)}))},e.type="parallel",e.dependencies=["parallelAxis"],e.layoutMode="box",e.defaultOption={z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},e}(zp),Ek=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"value",a.axisIndex=o,a}return n(e,t),e.prototype.isHorizontal=function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")},e}(ab);function zk(t,e,n,i,r,o){t=t||0;var a=n[1]-n[0];if(null!=r&&(r=Bk(r,[0,a])),null!=o&&(o=Math.max(o,null!=r?r:0)),"all"===i){var s=Math.abs(e[1]-e[0]);s=Bk(s,[0,a]),r=o=Bk(s,[r,o]),i=0}e[0]=Bk(e[0],n),e[1]=Bk(e[1],n);var l=Vk(e,i);e[i]+=t;var u,h=r||0,c=n.slice();return l.sign<0?c[0]+=h:c[1]-=h,e[i]=Bk(e[i],c),u=Vk(e,i),null!=r&&(u.sign!==l.sign||u.spano&&(e[1-i]=e[i]+u.sign*o),e}function Vk(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:n>0?-1:n<0?1:e?-1:1}}function Bk(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}var Fk=E,Gk=Math.min,Wk=Math.max,Hk=Math.floor,Yk=Math.ceil,Xk=Jr,Uk=Math.PI,Zk=function(){function t(t,e,n){this.type="parallel",this._axesMap=yt(),this._axesLayout={},this.dimensions=t.dimensions,this._model=t,this._init(t,e,n)}return t.prototype._init=function(t,e,n){var i=t.dimensions,r=t.parallelAxisIndex;Fk(i,(function(t,n){var i=r[n],o=e.getComponent("parallelAxis",i),a=this._axesMap.set(t,new Ek(t,b_(o),[0,0],o.get("type"),i)),s="category"===a.type;a.onBand=s&&o.get("boundaryGap"),a.inverse=o.get("inverse"),o.axis=a,a.model=o,a.coordinateSystem=o.coordinateSystem=this}),this)},t.prototype.update=function(t,e){this._updateAxesFromSeries(this._model,t)},t.prototype.containPoint=function(t){var e=this._makeLayoutInfo(),n=e.axisBase,i=e.layoutBase,r=e.pixelDimIndex,o=t[1-r],a=t[r];return o>=n&&o<=n+e.axisLength&&a>=i&&a<=i+e.layoutLength},t.prototype.getModel=function(){return this._model},t.prototype._updateAxesFromSeries=function(t,e){e.eachSeries((function(n){if(t.contains(n,e)){var i=n.getData();Fk(this.dimensions,(function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(i,i.mapDimension(t)),__(e.scale,e.model)}),this)}}),this)},t.prototype.resize=function(t,e){this._rect=kp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},t.prototype.getRect=function(){return this._rect},t.prototype._makeLayoutInfo=function(){var t,e=this._model,n=this._rect,i=["x","y"],r=["width","height"],o=e.get("layout"),a="horizontal"===o?0:1,s=n[r[a]],l=[0,s],u=this.dimensions.length,h=jk(e.get("axisExpandWidth"),l),c=jk(e.get("axisExpandCount")||0,[0,u]),p=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,d=e.get("axisExpandWindow");d?(t=jk(d[1]-d[0],l),d[1]=d[0]+t):(t=jk(h*(c-1),l),(d=[h*(e.get("axisExpandCenter")||Hk(u/2))-t/2])[1]=d[0]+t);var f=(s-t)/(u-c);f<3&&(f=0);var g=[Hk(Xk(d[0]/h,1))+1,Yk(Xk(d[1]/h,1))-1],y=f/h*d[0];return{layout:o,pixelDimIndex:a,layoutBase:n[i[a]],layoutLength:s,axisBase:n[i[1-a]],axisLength:n[r[1-a]],axisExpandable:p,axisExpandWidth:h,axisCollapseWidth:f,axisExpandWindow:d,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:y}},t.prototype._layoutAxes=function(){var t=this._rect,e=this._axesMap,n=this.dimensions,i=this._makeLayoutInfo(),r=i.layout;e.each((function(t){var e=[0,i.axisLength],n=t.inverse?1:0;t.setExtent(e[n],e[1-n])})),Fk(n,(function(e,n){var o=(i.axisExpandable?Kk:qk)(n,i),a={horizontal:{x:o.position,y:i.axisLength},vertical:{x:0,y:o.position}},s={horizontal:Uk/2,vertical:0},l=[a[r].x+t.x,a[r].y+t.y],u=s[r],h=[1,0,0,1,0,0];Se(h,h,u),we(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:o.axisNameAvailableWidth,axisLabelShow:o.axisLabelShow,nameTruncateMaxWidth:o.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}}),this)},t.prototype.getAxis=function(t){return this._axesMap.get(t)},t.prototype.dataToPoint=function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},t.prototype.eachActiveState=function(t,e,n,i){null==n&&(n=0),null==i&&(i=t.count());var r=this._axesMap,o=this.dimensions,a=[],s=[];E(o,(function(e){a.push(t.mapDimension(e)),s.push(r.get(e).model)}));for(var l=this.hasAxisBrushed(),u=n;ur*(1-h[0])?(l="jump",a=s-r*(1-h[2])):(a=s-r*h[1])>=0&&(a=s-r*(1-h[1]))<=0&&(a=0),(a*=e.axisExpandWidth/u)?zk(a,i,o,"all"):l="none";else{var p=i[1]-i[0];(i=[Wk(0,o[1]*s/p-p/2)])[1]=Gk(o[1],i[0]+p),i[0]=i[1]-p}return{axisExpandWindow:i,behavior:l}},t}();function jk(t,e){return Gk(Wk(t,e[0]),e[1])}function qk(t,e){var n=e.layoutLength/(e.axisCount-1);return{position:n*t,axisNameAvailableWidth:n,axisLabelShow:!0}}function Kk(t,e){var n,i,r=e.layoutLength,o=e.axisExpandWidth,a=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return t=0;n--)Qr(e[n])},e.prototype.getActiveState=function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(+t))return"inactive";if(1===e.length){var n=e[0];if(n[0]<=t&&t<=n[1])return"active"}else for(var i=0,r=e.length;i6}(t)||o){if(a&&!o){"single"===s.brushMode&&vL(t);var l=T(s);l.brushType=RL(l.brushType,a),l.panelId=a===Qk?null:a.panelId,o=t._creatingCover=uL(t,l),t._covers.push(o)}if(o){var u=zL[RL(t._brushType,a)];o.__brushOption.range=u.getCreatingRange(kL(t,o,t._track)),i&&(hL(t,o),u.updateCommon(t,o)),cL(t,o),r={isEnd:i}}}else i&&"single"===s.brushMode&&s.removeOnClick&&gL(t,e,n)&&vL(t)&&(r={isEnd:i,removeOnClick:!0});return r}function RL(t,e){return"auto"===t?e.defaultBrushType:t}var NL={mousedown:function(t){if(this._dragging)EL(this,t);else if(!t.target||!t.target.draggable){LL(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=gL(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=t.offsetX,n=t.offsetY,i=this.group.transformCoordToLocal(e,n);if(function(t,e,n){if(t._brushType&&!function(t,e,n){var i=t._zr;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}(t,e.offsetX,e.offsetY)){var i=t._zr,r=t._covers,o=gL(t,e,n);if(!t._dragging)for(var a=0;a=0&&(o[r[a].depth]=new Cc(r[a],this,e));if(i&&n){var s=uk(i,n,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getData().getItemLayout(e);if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t})),e.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getGraph().getEdgeByIndex(e).node1.getLayout();if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t}))}));return s.data}},e.prototype.setNodePosition=function(t,e){var n=(this.option.data||this.option.nodes)[t];n.localX=e[0],n.localY=e[1]},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.formatTooltip=function(t,e,n){function i(t){return isNaN(t)||null==t}if("edge"===n){var r=this.getDataParams(t,n),o=r.data,a=r.value;return og("nameValue",{name:o.source+" -- "+o.target,value:a,noValue:i(a)})}var s=this.getGraph().getNodeByIndex(t).getLayout().value,l=this.getDataParams(t,n).data.name;return og("nameValue",{name:null!=l?l+"":null,value:s,noValue:i(s)})},e.prototype.optionUpdated=function(){},e.prototype.getDataParams=function(e,n){var i=t.prototype.getDataParams.call(this,e,n);if(null==i.value&&"node"===n){var r=this.getGraph().getNodeByIndex(e).getLayout().value;i.value=r}return i},e.type="series.sankey",e.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},edgeLabel:{show:!1,fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},e}(bg);function QL(t,e){t.eachSeriesByType("sankey",(function(t){var n=t.get("nodeWidth"),i=t.get("nodeGap"),r=function(t,e){return kp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=r;var o=r.width,a=r.height,s=t.getGraph(),l=s.nodes,u=s.edges;!function(t){E(t,(function(t){var e=uP(t.outEdges,lP),n=uP(t.inEdges,lP),i=t.getValue()||0,r=Math.max(e,n,i);t.setLayout({value:r},!0)}))}(l),function(t,e,n,i,r,o,a,s,l){(function(t,e,n,i,r,o,a){for(var s=[],l=[],u=[],h=[],c=0,p=0;p=0;v&&y.depth>d&&(d=y.depth),g.setLayout({depth:v?y.depth:c},!0),"vertical"===o?g.setLayout({dy:n},!0):g.setLayout({dx:n},!0);for(var m=0;mc-1?d:c-1;a&&"left"!==a&&function(t,e,n,i){if("right"===e){for(var r=[],o=t,a=0;o.length;){for(var s=0;s0;o--)nP(s,l*=.99,a),eP(s,r,n,i,a),hP(s,l,a),eP(s,r,n,i,a)}(t,e,o,r,i,a,s),function(t,e){var n="vertical"===e?"x":"y";E(t,(function(t){t.outEdges.sort((function(t,e){return t.node2.getLayout()[n]-e.node2.getLayout()[n]})),t.inEdges.sort((function(t,e){return t.node1.getLayout()[n]-e.node1.getLayout()[n]}))})),E(t,(function(t){var e=0,n=0;E(t.outEdges,(function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy})),E(t.inEdges,(function(t){t.setLayout({ty:n},!0),n+=t.getLayout().dy}))}))}(t,s)}(l,u,n,i,o,a,0!==B(l,(function(t){return 0===t.getLayout().value})).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))}))}function tP(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return null!=e.depth&&e.depth>=0}function eP(t,e,n,i,r){var o="vertical"===r?"x":"y";E(t,(function(t){var a,s,l;t.sort((function(t,e){return t.getLayout()[o]-e.getLayout()[o]}));for(var u=0,h=t.length,c="vertical"===r?"dx":"dy",p=0;p0&&(a=s.getLayout()[o]+l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]+s.getLayout()[c]+e;if((l=u-e-("vertical"===r?i:n))>0){a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0),u=a;for(p=h-2;p>=0;--p)(l=(s=t[p]).getLayout()[o]+s.getLayout()[c]+e-u)>0&&(a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]}}))}function nP(t,e,n){E(t.slice().reverse(),(function(t){E(t,(function(t){if(t.outEdges.length){var i=uP(t.outEdges,iP,n)/uP(t.outEdges,lP);if(isNaN(i)){var r=t.outEdges.length;i=r?uP(t.outEdges,rP,n)/r:0}if("vertical"===n){var o=t.getLayout().x+(i-sP(t,n))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(i-sP(t,n))*e;t.setLayout({y:a},!0)}}}))}))}function iP(t,e){return sP(t.node2,e)*t.getValue()}function rP(t,e){return sP(t.node2,e)}function oP(t,e){return sP(t.node1,e)*t.getValue()}function aP(t,e){return sP(t.node1,e)}function sP(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function lP(t){return t.getValue()}function uP(t,e,n){for(var i=0,r=t.length,o=-1;++oo&&(o=e)})),E(n,(function(e){var n=new kD({type:"color",mappingMethod:"linear",dataExtent:[r,o],visual:t.get("color")}).mapValueToVisual(e.getLayout().value),i=e.getModel().get(["itemStyle","color"]);null!=i?(e.setVisual("color",i),e.setVisual("style",{fill:i})):(e.setVisual("color",n),e.setVisual("style",{fill:n}))}))}i.length&&E(i,(function(t){var e=t.getModel().get("lineStyle");t.setVisual("style",e)}))}))}var pP=function(){function t(){}return t.prototype.getInitialData=function(t,e){var n,i,r=e.getComponent("xAxis",this.get("xAxisIndex")),o=e.getComponent("yAxis",this.get("yAxisIndex")),a=r.get("type"),s=o.get("type");"category"===a?(t.layout="horizontal",n=r.getOrdinalMeta(),i=!0):"category"===s?(t.layout="vertical",n=o.getOrdinalMeta(),i=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],p=[r,o],d=p[u].get("type"),f=p[1-u].get("type"),g=t.data;if(g&&i){var y=[];E(g,(function(t,e){var n;Y(t)?(n=t.slice(),t.unshift(e)):Y(t.value)?((n=A({},t)).value=n.value.slice(),t.value.unshift(e)):n=t,y.push(n)})),t.data=y}var v=this.defaultValueDimensions,m=[{name:h,type:Ym(d),ordinalMeta:n,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:Ym(f),dimsDef:v.slice()}];return RM(this,{coordDimensions:m,dimensionsCount:v.length+1,encodeDefaulter:H(td,m,this)})},t.prototype.getBaseAxis=function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis},t}(),dP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],n.visualDrawType="stroke",n}return n(e,t),e.type="series.boxplot",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},e}(bg);R(dP,pP,!0);var fP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this.group,o=this._data;this._data||r.removeAll();var a="horizontal"===t.get("layout")?1:0;i.diff(o).add((function(t){if(i.hasValue(t)){var e=vP(i.getItemLayout(t),i,t,a,!0);i.setItemGraphicEl(t,e),r.add(e)}})).update((function(t,e){var n=o.getItemGraphicEl(e);if(i.hasValue(t)){var s=i.getItemLayout(t);n?(Sh(n),mP(s,n,i,t)):n=vP(s,i,t,a),r.add(n),i.setItemGraphicEl(t,n)}else r.remove(n)})).remove((function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)})).execute(),this._data=i},e.prototype.remove=function(t){var e=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl((function(t){t&&e.remove(t)}))},e.type="boxplot",e}(Og),gP=function(){},yP=function(t){function e(e){var n=t.call(this,e)||this;return n.type="boxplotBoxPath",n}return n(e,t),e.prototype.getDefaultShape=function(){return new gP},e.prototype.buildPath=function(t,e){var n=e.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();ig){var _=[v,x];i.push(_)}}}return{boxData:n,outliers:i}}(e.getRawData(),t.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:i.boxData},{data:i.outliers}]}};var SP=["color","borderColor"],MP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeClipPath(),this._progressiveEls=null,this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},e.prototype.incrementalPrepareRender=function(t,e,n){this._clear(),this._updateDrawMode(t)},e.prototype.incrementalRender=function(t,e,n,i){this._progressiveEls=[],this._isLargeDraw?this._incrementalRenderLarge(t,e):this._incrementalRenderNormal(t,e)},e.prototype.eachRendered=function(t){Jh(this._progressiveEls||this.group,t)},e.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;null!=this._isLargeDraw&&e===this._isLargeDraw||(this._isLargeDraw=e,this._clear())},e.prototype._renderNormal=function(t){var e=t.getData(),n=this._data,i=this.group,r=e.getLayout("isSimpleBox"),o=t.get("clip",!0),a=t.coordinateSystem,s=a.getArea&&a.getArea();this._data||i.removeAll(),e.diff(n).add((function(n){if(e.hasValue(n)){var a=e.getItemLayout(n);if(o&&DP(s,a))return;var l=CP(a,n,!0);mh(l,{shape:{points:a.ends}},t,n),AP(l,e,n,r),i.add(l),e.setItemGraphicEl(n,l)}})).update((function(a,l){var u=n.getItemGraphicEl(l);if(e.hasValue(a)){var h=e.getItemLayout(a);o&&DP(s,h)?i.remove(u):(u?(vh(u,{shape:{points:h.ends}},t,a),Sh(u)):u=CP(h),AP(u,e,a,r),i.add(u),e.setItemGraphicEl(a,u))}else i.remove(u)})).remove((function(t){var e=n.getItemGraphicEl(t);e&&i.remove(e)})).execute(),this._data=e},e.prototype._renderLarge=function(t){this._clear(),OP(t,this.group);var e=t.get("clip",!0)?PS(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},e.prototype._incrementalRenderNormal=function(t,e){for(var n,i=e.getData(),r=i.getLayout("isSimpleBox");null!=(n=t.next());){var o=CP(i.getItemLayout(n));AP(o,i,n,r),o.incremental=!0,this.group.add(o),this._progressiveEls.push(o)}},e.prototype._incrementalRenderLarge=function(t,e){OP(e,this.group,this._progressiveEls,!0)},e.prototype.remove=function(t){this._clear()},e.prototype._clear=function(){this.group.removeAll(),this._data=null},e.type="candlestick",e}(Og),IP=function(){},TP=function(t){function e(e){var n=t.call(this,e)||this;return n.type="normalCandlestickBox",n}return n(e,t),e.prototype.getDefaultShape=function(){return new IP},e.prototype.buildPath=function(t,e){var n=e.points;this.__simpleBox?(t.moveTo(n[4][0],n[4][1]),t.lineTo(n[6][0],n[6][1])):(t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1]),t.lineTo(n[2][0],n[2][1]),t.lineTo(n[3][0],n[3][1]),t.closePath(),t.moveTo(n[4][0],n[4][1]),t.lineTo(n[5][0],n[5][1]),t.moveTo(n[6][0],n[6][1]),t.lineTo(n[7][0],n[7][1]))},e}(ks);function CP(t,e,n){var i=t.ends;return new TP({shape:{points:n?kP(i,t):i},z2:100})}function DP(t,e){for(var n=!0,i=0;i0?"borderColor":"borderColor0"])||n.get(["itemStyle",t>0?"color":"color0"]);0===t&&(r=n.get(["itemStyle","borderColorDoji"]));var o=n.getModel("itemStyle").getItemStyle(SP);e.useStyle(o),e.style.fill=null,e.style.stroke=r}var NP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],n}return n(e,t),e.prototype.getShadowDim=function(){return"open"},e.prototype.brushSelector=function(t,e,n){var i=e.getItemLayout(t);return i&&n.rect(i.brushRect)},e.type="series.candlestick",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,clip:!0,itemStyle:{color:"#eb5454",color0:"#47b262",borderColor:"#eb5454",borderColor0:"#47b262",borderColorDoji:null,borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationEasing:"linear",animationDuration:300},e}(bg);function EP(t){t&&Y(t.series)&&E(t.series,(function(t){q(t)&&"k"===t.type&&(t.type="candlestick")}))}R(NP,pP,!0);var zP=["itemStyle","borderColor"],VP=["itemStyle","borderColor0"],BP=["itemStyle","borderColorDoji"],FP=["itemStyle","color"],GP=["itemStyle","color0"],WP={seriesType:"candlestick",plan:kg(),performRawSeries:!0,reset:function(t,e){function n(t,e){return e.get(t>0?FP:GP)}function i(t,e){return e.get(0===t?BP:t>0?zP:VP)}if(!e.isSeriesFiltered(t))return!t.pipelineContext.large&&{progress:function(t,e){for(var r;null!=(r=t.next());){var o=e.getItemModel(r),a=e.getItemLayout(r).sign,s=o.getItemStyle();s.fill=n(a,o),s.stroke=i(a,o)||s.fill,A(e.ensureUniqueItemVisual(r,"style"),s)}}}}},HP={seriesType:"candlestick",plan:kg(),reset:function(t){var e=t.coordinateSystem,n=t.getData(),i=function(t,e){var n,i=t.getBaseAxis(),r="category"===i.type?i.getBandWidth():(n=i.getExtent(),Math.abs(n[1]-n[0])/e.count()),o=$r(rt(t.get("barMaxWidth"),r),r),a=$r(rt(t.get("barMinWidth"),1),r),s=t.get("barWidth");return null!=s?$r(s,r):Math.max(Math.min(r/2,o),a)}(t,n),r=["x","y"],o=n.getDimensionIndex(n.mapDimension(r[0])),a=z(n.mapDimensionsAll(r[1]),n.getDimensionIndex,n),s=a[0],l=a[1],u=a[2],h=a[3];if(n.setLayout({candleWidth:i,isSimpleBox:i<=1.3}),!(o<0||a.length<4))return{progress:t.pipelineContext.large?function(n,i){var r,a,c=Bx(4*n.count),p=0,d=[],f=[],g=i.getStore(),y=!!t.get(["itemStyle","borderColorDoji"]);for(;null!=(a=n.next());){var v=g.get(o,a),m=g.get(s,a),x=g.get(l,a),_=g.get(u,a),b=g.get(h,a);isNaN(v)||isNaN(_)||isNaN(b)?(c[p++]=NaN,p+=3):(c[p++]=YP(g,a,m,x,l,y),d[0]=v,d[1]=_,r=e.dataToPoint(d,null,f),c[p++]=r?r[0]:NaN,c[p++]=r?r[1]:NaN,d[1]=b,r=e.dataToPoint(d,null,f),c[p++]=r?r[1]:NaN)}i.setLayout("largePoints",c)}:function(t,n){var r,a=n.getStore();for(;null!=(r=t.next());){var c=a.get(o,r),p=a.get(s,r),d=a.get(l,r),f=a.get(u,r),g=a.get(h,r),y=Math.min(p,d),v=Math.max(p,d),m=M(y,c),x=M(v,c),_=M(f,c),b=M(g,c),w=[];I(w,x,0),I(w,m,1),w.push(C(b),C(x),C(_),C(m));var S=!!n.getItemModel(r).get(["itemStyle","borderColorDoji"]);n.setItemLayout(r,{sign:YP(a,r,p,d,l,S),initBaseline:p>d?x[1]:m[1],ends:w,brushRect:T(f,g,c)})}function M(t,n){var i=[];return i[0]=n,i[1]=t,isNaN(n)||isNaN(t)?[NaN,NaN]:e.dataToPoint(i)}function I(t,e,n){var r=e.slice(),o=e.slice();r[0]=Vh(r[0]+i/2,1,!1),o[0]=Vh(o[0]-i/2,1,!0),n?t.push(r,o):t.push(o,r)}function T(t,e,n){var r=M(t,n),o=M(e,n);return r[0]-=i/2,o[0]-=i/2,{x:r[0],y:r[1],width:i,height:o[1]-r[1]}}function C(t){return t[0]=Vh(t[0],1),t}}}}};function YP(t,e,n,i,r,o){return n>i?-1:n0?t.get(r,e-1)<=i?1:-1:1}function XP(t,e){var n=e.rippleEffectColor||e.color;t.eachChild((function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?n:null,fill:"fill"===e.brushType?n:null}})}))}var UP=function(t){function e(e,n){var i=t.call(this)||this,r=new fS(e,n),o=new Br;return i.add(r),i.add(o),i.updateData(e,n),i}return n(e,t),e.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},e.prototype.startEffectAnimation=function(t){for(var e=t.symbolType,n=t.color,i=t.rippleNumber,r=this.childAt(1),o=0;o0&&(o=this._getLineLength(i)/l*1e3),o!==this._period||a!==this._loop||s!==this._roundTrip){i.stopAnimation();var h=void 0;h=X(u)?u(n):u,i.__t>0&&(h=-o*i.__t),this._animateSymbol(i,o,h,a,s)}this._period=o,this._loop=a,this._roundTrip=s}},e.prototype._animateSymbol=function(t,e,n,i,r){if(e>0){t.__t=0;var o=this,a=t.animate("",i).when(r?2*e:e,{__t:r?2:1}).delay(n).during((function(){o._updateSymbolPosition(t)}));i||a.done((function(){o.remove(t)})),a.start()}},e.prototype._getLineLength=function(t){return Vt(t.__p1,t.__cp1)+Vt(t.__cp1,t.__p2)},e.prototype._updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},e.prototype.updateData=function(t,e,n){this.childAt(0).updateData(t,e,n),this._updateEffectSymbol(t,e)},e.prototype._updateSymbolPosition=function(t){var e=t.__p1,n=t.__p2,i=t.__cp1,r=t.__t<1?t.__t:2-t.__t,o=[t.x,t.y],a=o.slice(),s=In,l=Tn;o[0]=s(e[0],i[0],n[0],r),o[1]=s(e[1],i[1],n[1],r);var u=t.__t<1?l(e[0],i[0],n[0],r):l(n[0],i[0],e[0],1-r),h=t.__t<1?l(e[1],i[1],n[1],r):l(n[1],i[1],e[1],1-r);t.rotation=-Math.atan2(h,u)-Math.PI/2,"line"!==this._symbolType&&"rect"!==this._symbolType&&"roundRect"!==this._symbolType||(void 0!==t.__lastT&&t.__lastT=0&&!(i[o]<=e);o--);o=Math.min(o,r-2)}else{for(o=a;oe);o++);o=Math.min(o-1,r-2)}var s=(e-i[o])/(i[o+1]-i[o]),l=n[o],u=n[o+1];t.x=l[0]*(1-s)+s*u[0],t.y=l[1]*(1-s)+s*u[1];var h=t.__t<1?u[0]-l[0]:l[0]-u[0],c=t.__t<1?u[1]-l[1]:l[1]-u[1];t.rotation=-Math.atan2(c,h)-Math.PI/2,this._lastFrame=o,this._lastFramePercent=e,t.ignore=!1}},e}(qP),JP=function(){this.polyline=!1,this.curveness=0,this.segs=[]},QP=function(t){function e(e){var n=t.call(this,e)||this;return n._off=0,n.hoverDataIdx=-1,n}return n(e,t),e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new JP},e.prototype.buildPath=function(t,e){var n,i=e.segs,r=e.curveness;if(e.polyline)for(n=this._off;n0){t.moveTo(i[n++],i[n++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*r,p=(l+h)/2-(u-s)*r;t.quadraticCurveTo(c,p,u,h)}else t.lineTo(u,h)}this.incremental&&(this._off=n,this.notClear=!0)},e.prototype.findDataIndex=function(t,e){var n=this.shape,i=n.segs,r=n.curveness,o=this.style.lineWidth;if(n.polyline)for(var a=0,s=0;s0)for(var u=i[s++],h=i[s++],c=1;c0){if(ds(u,h,(u+p)/2-(h-d)*r,(h+d)/2-(p-u)*r,p,d,o,t,e))return a}else if(cs(u,h,p,d,o,t,e))return a;a++}return-1},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return t=n[0],e=n[1],i.contain(t,e)?(this.hoverDataIdx=this.findDataIndex(t,e))>=0:(this.hoverDataIdx=-1,!1)},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var e=this.shape.segs,n=1/0,i=1/0,r=-1/0,o=-1/0,a=0;a0&&(o.dataIndex=n+t.__startIndex)}))},t.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},t}(),eO={seriesType:"lines",plan:kg(),reset:function(t){var e=t.coordinateSystem;if(e){var n=t.get("polyline"),i=t.pipelineContext.large;return{progress:function(r,o){var a=[];if(i){var s=void 0,l=r.end-r.start;if(n){for(var u=0,h=r.start;h0&&(l||s.configLayer(o,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(a/10+.9,1),0)})),r.updateData(i);var u=t.get("clip",!0)&&PS(t.coordinateSystem,!1,t);u?this.group.setClipPath(u):this.group.removeClipPath(),this._lastZlevel=o,this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateLineDraw(i,t).incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._lineDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},e.prototype.eachRendered=function(t){this._lineDraw&&this._lineDraw.eachRendered(t)},e.prototype.updateTransform=function(t,e,n){var i=t.getData(),r=t.pipelineContext;if(!this._finished||r.large||r.progressiveRender)return{update:!0};var o=eO.reset(t,e,n);o.progress&&o.progress({start:0,end:i.count(),count:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},e.prototype._updateLineDraw=function(t,e){var n=this._lineDraw,i=this._showEffect(e),r=!!e.get("polyline"),o=e.pipelineContext.large;return n&&i===this._hasEffet&&r===this._isPolyline&&o===this._isLargeDraw||(n&&n.remove(),n=this._lineDraw=o?new tO:new YA(r?i?$P:KP:i?qP:HA),this._hasEffet=i,this._isPolyline=r,this._isLargeDraw=o),this.group.add(n.group),n},e.prototype._showEffect=function(t){return!!t.get(["effect","show"])},e.prototype._clearLayer=function(t){var e=t.getZr();"svg"===e.painter.getType()||null==this._lastZlevel||e.painter.getLayer(this._lastZlevel).clear(!0)},e.prototype.remove=function(t,e){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(e)},e.prototype.dispose=function(t,e){this.remove(t,e)},e.type="lines",e}(Og),iO="undefined"==typeof Uint32Array?Array:Uint32Array,rO="undefined"==typeof Float64Array?Array:Float64Array;function oO(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=z(e,(function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),D([e,t[0],t[1]])})))}var aO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="lineStyle",n.visualDrawType="stroke",n}return n(e,t),e.prototype.init=function(e){e.data=e.data||[],oO(e);var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count)),t.prototype.init.apply(this,arguments)},e.prototype.mergeOption=function(e){if(oO(e),e.data){var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count))}t.prototype.mergeOption.apply(this,arguments)},e.prototype.appendData=function(t){var e=this._processFlatCoordsArray(t.data);e.flatCoords&&(this._flatCoords?(this._flatCoords=vt(this._flatCoords,e.flatCoords),this._flatCoordsOffset=vt(this._flatCoordsOffset,e.flatCoordsOffset)):(this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset),t.data=new Float32Array(e.count)),this.getRawData().appendData(t.data)},e.prototype._getCoordsFromItemModel=function(t){var e=this.getData().getItemModel(t),n=e.option instanceof Array?e.option:e.getShallow("coords");return n},e.prototype.getLineCoordsCount=function(t){return this._flatCoordsOffset?this._flatCoordsOffset[2*t+1]:this._getCoordsFromItemModel(t).length},e.prototype.getLineCoords=function(t,e){if(this._flatCoordsOffset){for(var n=this._flatCoordsOffset[2*t],i=this._flatCoordsOffset[2*t+1],r=0;r ")})},e.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},e.prototype.getZLevelKey=function(){var t=this.getModel("effect"),e=t.get("trailLength");return this.getData().count()>this.getProgressiveThreshold()?this.id:t.get("show")&&e>0?e+"":""},e.type="series.lines",e.dependencies=["grid","polar","geo","calendar"],e.defaultOption={coordinateSystem:"geo",z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},e}(bg);function sO(t){return t instanceof Array||(t=[t,t]),t}var lO={seriesType:"lines",reset:function(t){var e=sO(t.get("symbol")),n=sO(t.get("symbolSize")),i=t.getData();return i.setVisual("fromSymbol",e&&e[0]),i.setVisual("toSymbol",e&&e[1]),i.setVisual("fromSymbolSize",n&&n[0]),i.setVisual("toSymbolSize",n&&n[1]),{dataEach:i.hasItemOption?function(t,e){var n=t.getItemModel(e),i=sO(n.getShallow("symbol",!0)),r=sO(n.getShallow("symbolSize",!0));i[0]&&t.setItemVisual(e,"fromSymbol",i[0]),i[1]&&t.setItemVisual(e,"toSymbol",i[1]),r[0]&&t.setItemVisual(e,"fromSymbolSize",r[0]),r[1]&&t.setItemVisual(e,"toSymbolSize",r[1])}:null}}};var uO=function(){function t(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var t=h.createCanvas();this.canvas=t}return t.prototype.update=function(t,e,n,i,r,o){var a=this._getBrush(),s=this._getGradient(r,"inRange"),l=this._getGradient(r,"outOfRange"),u=this.pointSize+this.blurSize,h=this.canvas,c=h.getContext("2d"),p=t.length;h.width=e,h.height=n;for(var d=0;d0){var I=o(v)?s:l;v>0&&(v=v*S+w),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(m,0,0),h},t.prototype._getBrush=function(){var t=this._brushCanvas||(this._brushCanvas=h.createCanvas()),e=this.pointSize+this.blurSize,n=2*e;t.width=n,t.height=n;var i=t.getContext("2d");return i.clearRect(0,0,n,n),i.shadowOffsetX=n,i.shadowBlur=this.blurSize,i.shadowColor="#000",i.beginPath(),i.arc(-e,e,this.pointSize,0,2*Math.PI,!0),i.closePath(),i.fill(),t},t.prototype._getGradient=function(t,e){for(var n=this._gradientPixels,i=n[e]||(n[e]=new Uint8ClampedArray(1024)),r=[0,0,0,0],o=0,a=0;a<256;a++)t[e](a/255,!0,r),i[o++]=r[0],i[o++]=r[1],i[o++]=r[2],i[o++]=r[3];return i},t}();function hO(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var cO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i;e.eachComponent("visualMap",(function(e){e.eachTargetSeries((function(n){n===t&&(i=e)}))})),this._progressiveEls=null,this.group.removeAll();var r=t.coordinateSystem;"cartesian2d"===r.type||"calendar"===r.type?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):hO(r)&&this._renderOnGeo(r,t,i,n)},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll()},e.prototype.incrementalRender=function(t,e,n,i){var r=e.coordinateSystem;r&&(hO(r)?this.render(e,n,i):(this._progressiveEls=[],this._renderOnCartesianAndCalendar(e,i,t.start,t.end,!0)))},e.prototype.eachRendered=function(t){Jh(this._progressiveEls||this.group,t)},e.prototype._renderOnCartesianAndCalendar=function(t,e,n,i,r){var o,a,s,l,u=t.coordinateSystem,h=OS(u,"cartesian2d");if(h){var c=u.getAxis("x"),p=u.getAxis("y");0,o=c.getBandWidth()+.5,a=p.getBandWidth()+.5,s=c.scale.getExtent(),l=p.scale.getExtent()}for(var d=this.group,f=t.getData(),g=t.getModel(["emphasis","itemStyle"]).getItemStyle(),y=t.getModel(["blur","itemStyle"]).getItemStyle(),v=t.getModel(["select","itemStyle"]).getItemStyle(),m=t.get(["itemStyle","borderRadius"]),x=rc(t),_=t.getModel("emphasis"),b=_.get("focus"),w=_.get("blurScope"),S=_.get("disabled"),M=h?[f.mapDimension("x"),f.mapDimension("y"),f.mapDimension("value")]:[f.mapDimension("time"),f.mapDimension("value")],I=n;Is[1]||Al[1])continue;var k=u.dataToPoint([D,A]);T=new Ws({shape:{x:k[0]-o/2,y:k[1]-a/2,width:o,height:a},style:C})}else{if(isNaN(f.get(M[1],I)))continue;T=new Ws({z2:1,shape:u.dataToRect([f.get(M[0],I)]).contentShape,style:C})}if(f.hasItemOption){var L=f.getItemModel(I),P=L.getModel("emphasis");g=P.getModel("itemStyle").getItemStyle(),y=L.getModel(["blur","itemStyle"]).getItemStyle(),v=L.getModel(["select","itemStyle"]).getItemStyle(),m=L.get(["itemStyle","borderRadius"]),b=P.get("focus"),w=P.get("blurScope"),S=P.get("disabled"),x=rc(L)}T.shape.r=m;var O=t.getRawValue(I),R="-";O&&null!=O[2]&&(R=O[2]+""),ic(T,x,{labelFetcher:t,labelDataIndex:I,defaultOpacity:C.opacity,defaultText:R}),T.ensureState("emphasis").style=g,T.ensureState("blur").style=y,T.ensureState("select").style=v,Zl(T,b,w,S),T.incremental=r,r&&(T.states.emphasis.hoverLayer=!0),d.add(T),f.setItemGraphicEl(I,T),this._progressiveEls&&this._progressiveEls.push(T)}},e.prototype._renderOnGeo=function(t,e,n,i){var r=n.targetVisuals.inRange,o=n.targetVisuals.outOfRange,a=e.getData(),s=this._hmLayer||this._hmLayer||new uO;s.blurSize=e.get("blurSize"),s.pointSize=e.get("pointSize"),s.minOpacity=e.get("minOpacity"),s.maxOpacity=e.get("maxOpacity");var l=t.getViewRect().clone(),u=t.getRoamTransform();l.applyTransform(u);var h=Math.max(l.x,0),c=Math.max(l.y,0),p=Math.min(l.width+l.x,i.getWidth()),d=Math.min(l.height+l.y,i.getHeight()),f=p-h,g=d-c,y=[a.mapDimension("lng"),a.mapDimension("lat"),a.mapDimension("value")],v=a.mapArray(y,(function(e,n,i){var r=t.dataToPoint([e,n]);return r[0]-=h,r[1]-=c,r.push(i),r})),m=n.getExtent(),x="visualMap.continuous"===n.type?function(t,e){var n=t[1]-t[0];return e=[(e[0]-t[0])/n,(e[1]-t[0])/n],function(t){return t>=e[0]&&t<=e[1]}}(m,n.option.range):function(t,e,n){var i=t[1]-t[0],r=(e=z(e,(function(e){return{interval:[(e.interval[0]-t[0])/i,(e.interval[1]-t[0])/i]}}))).length,o=0;return function(t){var i;for(i=o;i=0;i--){var a;if((a=e[i].interval)[0]<=t&&t<=a[1]){o=i;break}}return i>=0&&i0?1:-1}(n,o,r,i,c),function(t,e,n,i,r,o,a,s,l,u){var h,c=l.valueDim,p=l.categoryDim,d=Math.abs(n[p.wh]),f=t.getItemVisual(e,"symbolSize");h=Y(f)?f.slice():null==f?["100%","100%"]:[f,f];h[p.index]=$r(h[p.index],d),h[c.index]=$r(h[c.index],i?d:Math.abs(o)),u.symbolSize=h;var g=u.symbolScale=[h[0]/s,h[1]/s];g[c.index]*=(l.isHorizontal?-1:1)*a}(t,e,r,o,0,c.boundingLength,c.pxSign,u,i,c),function(t,e,n,i,r){var o=t.get(dO)||0;o&&(gO.attr({scaleX:e[0],scaleY:e[1],rotation:n}),gO.updateTransform(),o/=gO.getLineScale(),o*=e[i.valueDim.index]);r.valueLineWidth=o||0}(n,c.symbolScale,l,i,c);var p=c.symbolSize,d=Zy(n.get("symbolOffset"),p);return function(t,e,n,i,r,o,a,s,l,u,h,c){var p=h.categoryDim,d=h.valueDim,f=c.pxSign,g=Math.max(e[d.index]+s,0),y=g;if(i){var v=Math.abs(l),m=it(t.get("symbolMargin"),"15%")+"",x=!1;m.lastIndexOf("!")===m.length-1&&(x=!0,m=m.slice(0,m.length-1));var _=$r(m,e[d.index]),b=Math.max(g+2*_,0),w=x?0:2*_,S=vo(i),M=S?i:OO((v+w)/b);b=g+2*(_=(v-M*g)/2/(x?M:Math.max(M-1,1))),w=x?0:2*_,S||"fixed"===i||(M=u?OO((Math.abs(u)+w)/b):0),y=M*b-w,c.repeatTimes=M,c.symbolMargin=_}var I=f*(y/2),T=c.pathPosition=[];T[p.index]=n[p.wh]/2,T[d.index]="start"===a?I:"end"===a?l-I:l/2,o&&(T[0]+=o[0],T[1]+=o[1]);var C=c.bundlePosition=[];C[p.index]=n[p.xy],C[d.index]=n[d.xy];var D=c.barRectShape=A({},n);D[d.wh]=f*Math.max(Math.abs(n[d.wh]),Math.abs(T[d.index]+I)),D[p.wh]=n[p.wh];var k=c.clipShape={};k[p.xy]=-n[p.xy],k[p.wh]=h.ecSize[p.wh],k[d.xy]=0,k[d.wh]=n[d.wh]}(n,p,r,o,0,d,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,i,c),c}function mO(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function xO(t){var e=t.symbolPatternSize,n=Xy(t.symbolType,-e/2,-e/2,e,e);return n.attr({culling:!0}),"image"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function _O(t,e,n,i){var r=t.__pictorialBundle,o=n.symbolSize,a=n.valueLineWidth,s=n.pathPosition,l=e.valueDim,u=n.repeatTimes||0,h=0,c=o[e.valueDim.index]+a+2*n.symbolMargin;for(kO(t,(function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h0:i<0)&&(r=u-1-t),e[l.index]=c*(r-u/2+.5)+s[l.index],{x:e[0],y:e[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation}}}function bO(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;o?LO(o,null,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation},n,i):(o=t.__pictorialMainPath=xO(n),r.add(o),LO(o,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:0,scaleY:0,rotation:n.rotation},{scaleX:n.symbolScale[0],scaleY:n.symbolScale[1]},n,i))}function wO(t,e,n){var i=A({},e.barRectShape),r=t.__pictorialBarRect;r?LO(r,null,{shape:i},e,n):((r=t.__pictorialBarRect=new Ws({z2:2,shape:i,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}})).disableMorphing=!0,t.add(r))}function SO(t,e,n,i){if(n.symbolClip){var r=t.__pictorialClipPath,o=A({},n.clipShape),a=e.valueDim,s=n.animationModel,l=n.dataIndex;if(r)vh(r,{shape:o},s,l);else{o[a.wh]=0,r=new Ws({shape:o}),t.__pictorialBundle.setClipPath(r),t.__pictorialClipPath=r;var u={};u[a.wh]=n.clipShape[a.wh],Qh[i?"updateProps":"initProps"](r,{shape:u},s,l)}}}function MO(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParams=IO,n.isAnimationEnabled=TO,n}function IO(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function TO(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function CO(t,e,n,i){var r=new Br,o=new Br;return r.add(o),r.__pictorialBundle=o,o.x=n.bundlePosition[0],o.y=n.bundlePosition[1],n.symbolRepeat?_O(r,e,n):bO(r,0,n),wO(r,n,i),SO(r,e,n,i),r.__pictorialShapeStr=AO(t,n),r.__pictorialSymbolMeta=n,r}function DO(t,e,n,i){var r=i.__pictorialBarRect;r&&r.removeTextContent();var o=[];kO(i,(function(t){o.push(t)})),i.__pictorialMainPath&&o.push(i.__pictorialMainPath),i.__pictorialClipPath&&(n=null),E(o,(function(t){_h(t,{scaleX:0,scaleY:0},n,e,(function(){i.parent&&i.parent.remove(i)}))})),t.setItemGraphicEl(e,null)}function AO(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function kO(t,e,n){E(t.__pictorialBundle.children(),(function(i){i!==t.__pictorialBarRect&&e.call(n,i)}))}function LO(t,e,n,i,r,o){e&&t.attr(e),i.symbolClip&&!r?n&&t.attr(n):n&&Qh[r?"updateProps":"initProps"](t,n,i.animationModel,i.dataIndex,o)}function PO(t,e,n){var i=n.dataIndex,r=n.itemModel,o=r.getModel("emphasis"),a=o.getModel("itemStyle").getItemStyle(),s=r.getModel(["blur","itemStyle"]).getItemStyle(),l=r.getModel(["select","itemStyle"]).getItemStyle(),u=r.getShallow("cursor"),h=o.get("focus"),c=o.get("blurScope"),p=o.get("scale");kO(t,(function(t){if(t instanceof Ns){var e=t.style;t.useStyle(A({image:e.image,x:e.x,y:e.y,width:e.width,height:e.height},n.style))}else t.useStyle(n.style);var i=t.ensureState("emphasis");i.style=a,p&&(i.scaleX=1.1*t.scaleX,i.scaleY=1.1*t.scaleY),t.ensureState("blur").style=s,t.ensureState("select").style=l,u&&(t.cursor=u),t.z2=n.z2}));var d=e.valueDim.posDesc[+(n.boundingLength>0)],f=t.__pictorialBarRect;f.ignoreClip=!0,ic(f,rc(r),{labelFetcher:e.seriesModel,labelDataIndex:i,defaultText:pS(e.seriesModel.getData(),i),inheritColor:n.style.fill,defaultOpacity:n.style.opacity,defaultOutsidePosition:d}),Zl(t,h,c,o.get("disabled"))}function OO(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var RO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n.defaultSymbol="roundRect",n}return n(e,t),e.prototype.getInitialData=function(e){return e.stack=null,t.prototype.getInitialData.apply(this,arguments)},e.type="series.pictorialBar",e.dependencies=["grid"],e.defaultOption=kc(qS.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",clip:!1,progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),e}(qS);var NO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._layers=[],n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this,o=this.group,a=t.getLayerSeries(),s=i.getLayout("layoutInfo"),l=s.rect,u=s.boundaryGap;function h(t){return t.name}o.x=0,o.y=l.y+u[0];var c=new Gm(this._layersSeries||[],a,h,h),p=[];function d(e,n,s){var l=r._layers;if("remove"!==e){for(var u,h,c=[],d=[],f=a[n].indices,g=0;go&&(o=s),i.push(s)}for(var u=0;uo&&(o=c)}return{y0:r,max:o}}(l),h=u.y0,c=n/u.max,p=o.length,d=o[0].indices.length,f=0;fI&&!so(C-I)&&C0?(r.virtualPiece?r.virtualPiece.updateData(!1,i,t,e,n):(r.virtualPiece=new BO(i,t,e,n),l.add(r.virtualPiece)),o.piece.off("click"),r.virtualPiece.on("click",(function(t){r._rootToNode(o.parentNode)}))):r.virtualPiece&&(l.remove(r.virtualPiece),r.virtualPiece=null)}(a,s),this._initEvents(),this._oldChildren=h},e.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",(function(e){var n=!1;t.seriesModel.getViewRoot().eachNode((function(i){if(!n&&i.piece&&i.piece===e.target){var r=i.getModel().get("nodeClick");if("rootToNode"===r)t._rootToNode(i);else if("link"===r){var o=i.getModel(),a=o.get("link");if(a)Mp(a,o.get("target",!0)||"_blank")}n=!0}}))}))},e.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:FO,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},e.prototype.containPoint=function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}},e.type="sunburst",e}(Og),HO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreStyleOnData=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};YO(n);var i=this._levelModels=z(t.levels||[],(function(t){return new Cc(t,this,e)}),this),r=nD.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e),o=i[n.depth];return o&&(t.parentModel=o),t}))}));return r.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treePathInfo=aD(i,this),n},e.prototype.getLevelModel=function(t){return this._levelModels&&this._levelModels[t.depth]},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){pD(this)},e.type="series.sunburst",e.defaultOption={z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],sort:"desc"},e}(bg);function YO(t){var e=0;E(t.children,(function(t){YO(t);var n=t.value;Y(n)&&(n=n[0]),e+=n}));var n=t.value;Y(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),Y(t.value)?t.value[0]=n:t.value=n}var XO=Math.PI/180;function UO(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.get("center"),i=t.get("radius");Y(i)||(i=[0,i]),Y(e)||(e=[e,e]);var r=n.getWidth(),o=n.getHeight(),a=Math.min(r,o),s=$r(e[0],r),l=$r(e[1],o),u=$r(i[0],a/2),h=$r(i[1],a/2),c=-t.get("startAngle")*XO,p=t.get("minAngle")*XO,d=t.getData().tree.root,f=t.getViewRoot(),g=f.depth,y=t.get("sort");null!=y&&ZO(f,y);var v=0;E(f.children,(function(t){!isNaN(t.getValue())&&v++}));var m=f.getValue(),x=Math.PI/(m||v)*2,_=f.depth>0,b=f.height-(_?-1:1),w=(h-u)/(b||1),S=t.get("clockwise"),M=t.get("stillShowZeroSum"),I=S?1:-1,T=function(e,n){if(e){var i=n;if(e!==d){var r=e.getValue(),o=0===m&&M?x:r*x;o1;)r=r.parentNode;var o=n.getColorFromPalette(r.name||r.dataIndex+"",e);return t.depth>1&&U(o)&&(o=$n(o,(t.depth-1)/(i-1)*.5)),o}(r,t,i.root.height)),A(n.ensureUniqueItemVisual(r.dataIndex,"style"),o)}))}))}var qO={color:"fill",borderColor:"stroke"},KO={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},$O=Vo(),JO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},e.prototype.getInitialData=function(t,e){return _x(null,this)},e.prototype.getDataParams=function(e,n,i){var r=t.prototype.getDataParams.call(this,e,n);return i&&(r.info=$O(i).info),r},e.type="series.custom",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,clip:!1},e}(bg);function QO(t,e){return e=e||[0,0],z(["x","y"],(function(n,i){var r=this.getAxis(n),o=e[i],a=t[i]/2;return"category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a))}),this)}function tR(t,e){return e=e||[0,0],z([0,1],(function(n){var i=e[n],r=t[n]/2,o=[],a=[];return o[n]=i-r,a[n]=i+r,o[1-n]=a[1-n]=e[1-n],Math.abs(this.dataToPoint(o)[n]-this.dataToPoint(a)[n])}),this)}function eR(t,e){var n=this.getAxis(),i=e instanceof Array?e[0]:e,r=(t instanceof Array?t[0]:t)/2;return"category"===n.type?n.getBandWidth():Math.abs(n.dataToCoord(i-r)-n.dataToCoord(i+r))}function nR(t,e){return e=e||[0,0],z(["Radius","Angle"],(function(n,i){var r=this["get"+n+"Axis"](),o=e[i],a=t[i]/2,s="category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a));return"Angle"===n&&(s=s*Math.PI/180),s}),this)}function iR(t,e,n,i){return t&&(t.legacy||!1!==t.legacy&&!n&&!i&&"tspan"!==e&&("text"===e||_t(t,"text")))}function rR(t,e,n){var i,r,o,a=t;if("text"===e)o=a;else{o={},_t(a,"text")&&(o.text=a.text),_t(a,"rich")&&(o.rich=a.rich),_t(a,"textFill")&&(o.fill=a.textFill),_t(a,"textStroke")&&(o.stroke=a.textStroke),_t(a,"fontFamily")&&(o.fontFamily=a.fontFamily),_t(a,"fontSize")&&(o.fontSize=a.fontSize),_t(a,"fontStyle")&&(o.fontStyle=a.fontStyle),_t(a,"fontWeight")&&(o.fontWeight=a.fontWeight),r={type:"text",style:o,silent:!0},i={};var s=_t(a,"textPosition");n?i.position=s?a.textPosition:"inside":s&&(i.position=a.textPosition),_t(a,"textPosition")&&(i.position=a.textPosition),_t(a,"textOffset")&&(i.offset=a.textOffset),_t(a,"textRotation")&&(i.rotation=a.textRotation),_t(a,"textDistance")&&(i.distance=a.textDistance)}return oR(o,t),E(o.rich,(function(t){oR(t,t)})),{textConfig:i,textContent:r}}function oR(t,e){e&&(e.font=e.textFont||e.font,_t(e,"textStrokeWidth")&&(t.lineWidth=e.textStrokeWidth),_t(e,"textAlign")&&(t.align=e.textAlign),_t(e,"textVerticalAlign")&&(t.verticalAlign=e.textVerticalAlign),_t(e,"textLineHeight")&&(t.lineHeight=e.textLineHeight),_t(e,"textWidth")&&(t.width=e.textWidth),_t(e,"textHeight")&&(t.height=e.textHeight),_t(e,"textBackgroundColor")&&(t.backgroundColor=e.textBackgroundColor),_t(e,"textPadding")&&(t.padding=e.textPadding),_t(e,"textBorderColor")&&(t.borderColor=e.textBorderColor),_t(e,"textBorderWidth")&&(t.borderWidth=e.textBorderWidth),_t(e,"textBorderRadius")&&(t.borderRadius=e.textBorderRadius),_t(e,"textBoxShadowColor")&&(t.shadowColor=e.textBoxShadowColor),_t(e,"textBoxShadowBlur")&&(t.shadowBlur=e.textBoxShadowBlur),_t(e,"textBoxShadowOffsetX")&&(t.shadowOffsetX=e.textBoxShadowOffsetX),_t(e,"textBoxShadowOffsetY")&&(t.shadowOffsetY=e.textBoxShadowOffsetY))}function aR(t,e,n){var i=t;i.textPosition=i.textPosition||n.position||"inside",null!=n.offset&&(i.textOffset=n.offset),null!=n.rotation&&(i.textRotation=n.rotation),null!=n.distance&&(i.textDistance=n.distance);var r=i.textPosition.indexOf("inside")>=0,o=t.fill||"#000";sR(i,e);var a=null==i.textFill;return r?a&&(i.textFill=n.insideFill||"#fff",!i.textStroke&&n.insideStroke&&(i.textStroke=n.insideStroke),!i.textStroke&&(i.textStroke=o),null==i.textStrokeWidth&&(i.textStrokeWidth=2)):(a&&(i.textFill=t.fill||n.outsideFill||"#000"),!i.textStroke&&n.outsideStroke&&(i.textStroke=n.outsideStroke)),i.text=e.text,i.rich=e.rich,E(e.rich,(function(t){sR(t,t)})),i}function sR(t,e){e&&(_t(e,"fill")&&(t.textFill=e.fill),_t(e,"stroke")&&(t.textStroke=e.fill),_t(e,"lineWidth")&&(t.textStrokeWidth=e.lineWidth),_t(e,"font")&&(t.font=e.font),_t(e,"fontStyle")&&(t.fontStyle=e.fontStyle),_t(e,"fontWeight")&&(t.fontWeight=e.fontWeight),_t(e,"fontSize")&&(t.fontSize=e.fontSize),_t(e,"fontFamily")&&(t.fontFamily=e.fontFamily),_t(e,"align")&&(t.textAlign=e.align),_t(e,"verticalAlign")&&(t.textVerticalAlign=e.verticalAlign),_t(e,"lineHeight")&&(t.textLineHeight=e.lineHeight),_t(e,"width")&&(t.textWidth=e.width),_t(e,"height")&&(t.textHeight=e.height),_t(e,"backgroundColor")&&(t.textBackgroundColor=e.backgroundColor),_t(e,"padding")&&(t.textPadding=e.padding),_t(e,"borderColor")&&(t.textBorderColor=e.borderColor),_t(e,"borderWidth")&&(t.textBorderWidth=e.borderWidth),_t(e,"borderRadius")&&(t.textBorderRadius=e.borderRadius),_t(e,"shadowColor")&&(t.textBoxShadowColor=e.shadowColor),_t(e,"shadowBlur")&&(t.textBoxShadowBlur=e.shadowBlur),_t(e,"shadowOffsetX")&&(t.textBoxShadowOffsetX=e.shadowOffsetX),_t(e,"shadowOffsetY")&&(t.textBoxShadowOffsetY=e.shadowOffsetY),_t(e,"textShadowColor")&&(t.textShadowColor=e.textShadowColor),_t(e,"textShadowBlur")&&(t.textShadowBlur=e.textShadowBlur),_t(e,"textShadowOffsetX")&&(t.textShadowOffsetX=e.textShadowOffsetX),_t(e,"textShadowOffsetY")&&(t.textShadowOffsetY=e.textShadowOffsetY))}var lR={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},uR=G(lR),hR=(V(mr,(function(t,e){return t[e]=1,t}),{}),mr.join(", "),["","style","shape","extra"]),cR=Vo();function pR(t,e,n,i,r){var o=t+"Animation",a=gh(t,i,r)||{},s=cR(e).userDuring;return a.duration>0&&(a.during=s?W(xR,{el:e,userDuring:s}):null,a.setToFinal=!0,a.scope=t),A(a,n[o]),a}function dR(t,e,n,i){var r=(i=i||{}).dataIndex,o=i.isInit,a=i.clearStyle,s=n.isAnimationEnabled(),l=cR(t),u=e.style;l.userDuring=e.during;var h={},c={};if(function(t,e,n){for(var i=0;i=0)){var c=t.getAnimationStyleProps(),p=c?c.style:null;if(p){!r&&(r=i.style={});var d=G(n);for(u=0;u0&&t.animateFrom(p,d)}else!function(t,e,n,i,r){if(r){var o=pR("update",t,e,i,n);o.duration>0&&t.animateFrom(r,o)}}(t,e,r||0,n,h);fR(t,e),u?t.dirty():t.markRedraw()}function fR(t,e){for(var n=cR(t).leaveToProps,i=0;i=0){!o&&(o=i[t]={});var p=G(a);for(h=0;hi[1]&&i.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:i[1],r0:i[0]},api:{coord:function(i){var r=e.dataToRadius(i[0]),o=n.dataToAngle(i[1]),a=t.coordToPoint([r,o]);return a.push(r,o*Math.PI/180),a},size:W(nR,t)}}},calendar:function(t){var e=t.getRect(),n=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(e,n){return t.dataToPoint(e,n)}}}}};function zR(t){return t instanceof ks}function VR(t){return t instanceof Da}var BR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){this._progressiveEls=null;var r=this._data,o=t.getData(),a=this.group,s=YR(t,o,e,n);r||a.removeAll(),o.diff(r).add((function(e){UR(n,null,e,s(e,i),t,a,o)})).remove((function(e){var n=r.getItemGraphicEl(e);n&&gR(n,$O(n).option,t)})).update((function(e,l){var u=r.getItemGraphicEl(l);UR(n,u,e,s(e,i),t,a,o)})).execute();var l=t.get("clip",!0)?PS(t.coordinateSystem,!1,t):null;l?a.setClipPath(l):a.removeClipPath(),this._data=o},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll(),this._data=null},e.prototype.incrementalRender=function(t,e,n,i,r){var o=e.getData(),a=YR(e,o,n,i),s=this._progressiveEls=[];function l(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}for(var u=t.start;u=0?e.getStore().get(r,n):void 0}var o=e.get(i.name,n),a=i&&i.ordinalMeta;return a?a.categories[o]:o},styleEmphasis:function(n,i){0;null==i&&(i=s);var r=m(i,CR).getItemStyle(),o=x(i,CR),a=oc(o,null,null,!0,!0);a.text=o.getShallow("show")?ot(t.getFormattedLabel(i,CR),t.getFormattedLabel(i,DR),pS(e,i)):null;var l=ac(o,null,!0);return b(n,r),r=aR(r,a,l),n&&_(r,n),r.legacy=!0,r},visual:function(t,n){if(null==n&&(n=s),_t(qO,t)){var i=e.getItemVisual(n,"style");return i?i[qO[t]]:null}if(_t(KO,t))return e.getItemVisual(n,t)},barLayout:function(t){if("cartesian2d"===o.type){return function(t){var e=[],n=t.axis,i="axis0";if("category"===n.type){for(var r=n.getBandWidth(),o=0;o=c;f--){var g=e.childAt(f);JR(e,g,r)}}(t,c,n,i,r),a>=0?o.replaceAt(c,a):o.add(c),c}function jR(t,e,n){var i,r=$O(t),o=e.type,a=e.shape,s=e.style;return n.isUniversalTransitionEnabled()||null!=o&&o!==r.customGraphicType||"path"===o&&((i=a)&&(_t(i,"pathData")||_t(i,"d")))&&nN(a)!==r.customPathData||"image"===o&&_t(s,"image")&&s.image!==r.customImagePath}function qR(t,e,n){var i=e?KR(t,e):t,r=e?$R(t,i,CR):t.style,o=t.type,a=i?i.textConfig:null,s=t.textContent,l=s?e?KR(s,e):s:null;if(r&&(n.isLegacy||iR(r,o,!!a,!!l))){n.isLegacy=!0;var u=rR(r,o,!e);!a&&u.textConfig&&(a=u.textConfig),!l&&u.textContent&&(l=u.textContent)}if(!e&&l){var h=l;!h.type&&(h.type="text")}var c=e?n[e]:n.normal;c.cfg=a,c.conOpt=l}function KR(t,e){return e?t?t[e]:null:t}function $R(t,e,n){var i=e&&e.style;return null==i&&n===CR&&t&&(i=t.styleEmphasis),i}function JR(t,e,n){e&&gR(e,$O(t).option,n)}function QR(t,e){var n=t&&t.name;return null!=n?n:"e\0\0"+e}function tN(t,e){var n=this.context,i=null!=t?n.newChildren[t]:null,r=null!=e?n.oldChildren[e]:null;ZR(n.api,r,n.dataIndex,i,n.seriesModel,n.group)}function eN(t){var e=this.context,n=e.oldChildren[t];n&&gR(n,$O(n).option,e.seriesModel)}function nN(t){return t&&(t.pathData||t.d)}var iN=Vo(),rN=T,oN=W,aN=function(){function t(){this._dragging=!1,this.animationThreshold=15}return t.prototype.render=function(t,e,n,i){var r=e.get("value"),o=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=n,i||this._lastValue!==r||this._lastStatus!==o){this._lastValue=r,this._lastStatus=o;var a=this._group,s=this._handle;if(!o||"hide"===o)return a&&a.hide(),void(s&&s.hide());a&&a.show(),s&&s.show();var l={};this.makeElOption(l,r,t,e,n);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(a){var c=H(sN,e,h);this.updatePointerEl(a,l,c),this.updateLabelEl(a,l,c,e)}else a=this._group=new Br,this.createPointerEl(a,l,t,e),this.createLabelEl(a,l,t,e),n.getZr().add(a);cN(a,e,!0),this._renderHandle(r)}},t.prototype.remove=function(t){this.clear(t)},t.prototype.dispose=function(t){this.clear(t)},t.prototype.determineAnimation=function(t,e){var n=e.get("animation"),i=t.axis,r="category"===i.type,o=e.get("snap");if(!o&&!r)return!1;if("auto"===n||null==n){var a=this.animationThreshold;if(r&&i.getBandWidth()>a)return!0;if(o){var s=wI(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1}return!0===n},t.prototype.makeElOption=function(t,e,n,i,r){},t.prototype.createPointerEl=function(t,e,n,i){var r=e.pointer;if(r){var o=iN(t).pointerEl=new Qh[r.type](rN(e.pointer));t.add(o)}},t.prototype.createLabelEl=function(t,e,n,i){if(e.label){var r=iN(t).labelEl=new Xs(rN(e.label));t.add(r),uN(r,i)}},t.prototype.updatePointerEl=function(t,e,n){var i=iN(t).pointerEl;i&&e.pointer&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},t.prototype.updateLabelEl=function(t,e,n,i){var r=iN(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{x:e.label.x,y:e.label.y}),uN(r,i))},t.prototype._renderHandle=function(t){if(!this._dragging&&this.updateHandleTransform){var e,n=this._axisPointerModel,i=this._api.getZr(),r=this._handle,o=n.getModel("handle"),a=n.get("status");if(!o.get("show")||!a||"hide"===a)return r&&i.remove(r),void(this._handle=null);this._handle||(e=!0,r=this._handle=Uh(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){de(t.event)},onmousedown:oN(this._onHandleDragMove,this,0,0),drift:oN(this._onHandleDragMove,this),ondragend:oN(this._onHandleDragEnd,this)}),i.add(r)),cN(r,n,!1),r.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");Y(s)||(s=[s,s]),r.scaleX=s[0]/2,r.scaleY=s[1]/2,Hg(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},t.prototype._moveHandleToValue=function(t,e){sN(this._axisPointerModel,!e&&this._moveAnimation,this._handle,hN(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},t.prototype._onHandleDragMove=function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(hN(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(hN(i)),iN(n).lastProp=null,this._doDispatchAxisPointer()}},t.prototype._doDispatchAxisPointer=function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},t.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},t.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),n=this._group,i=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),i&&e.remove(i),this._group=null,this._handle=null,this._payloadInfo=null),Yg(this,"_doDispatchAxisPointer")},t.prototype.doClear=function(){},t.prototype.buildLabel=function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}},t}();function sN(t,e,n,i){lN(iN(n).lastProp,i)||(iN(n).lastProp=i,e?vh(n,i,t):(n.stopAnimation(),n.attr(i)))}function lN(t,e){if(q(t)&&q(e)){var n=!0;return E(e,(function(e,i){n=n&&lN(t[i],e)})),!!n}return t===e}function uN(t,e){t[e.get(["label","show"])?"show":"hide"]()}function hN(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}function cN(t,e,n){var i=e.get("z"),r=e.get("zlevel");t&&t.traverse((function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=r&&(t.zlevel=r),t.silent=n)}))}function pN(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle()).fill=null:"shadow"===n&&((e=i.getAreaStyle()).stroke=null),e}function dN(t,e,n,i,r){var o=fN(n.get("value"),e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get(["label","precision"]),formatter:n.get(["label","formatter"])}),a=n.getModel("label"),s=vp(a.get("padding")||0),l=a.getFont(),u=Sr(o,l),h=r.position,c=u.width+s[1]+s[3],p=u.height+s[0]+s[2],d=r.align;"right"===d&&(h[0]-=c),"center"===d&&(h[0]-=c/2);var f=r.verticalAlign;"bottom"===f&&(h[1]-=p),"middle"===f&&(h[1]-=p/2),function(t,e,n,i){var r=i.getWidth(),o=i.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+n,o)-n,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}(h,c,p,i);var g=a.get("backgroundColor");g&&"auto"!==g||(g=e.get(["axisLine","lineStyle","color"])),t.label={x:h[0],y:h[1],style:oc(a,{text:o,font:l,fill:a.getTextColor(),padding:s,backgroundColor:g}),z2:10}}function fN(t,e,n,i,r){t=e.scale.parse(t);var o=e.scale.getLabel({value:t},{precision:r.precision}),a=r.formatter;if(a){var s={value:S_(e,{value:t}),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};E(i,(function(t){var e=n.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,r=e&&e.getDataParams(i);r&&s.seriesData.push(r)})),U(a)?o=a.replace("{value}",o):X(a)&&(o=a(s))}return o}function gN(t,e,n){var i=[1,0,0,1,0,0];return Se(i,i,n.rotation),we(i,i,n.position),Fh([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}function yN(t,e,n,i,r,o){var a=dI.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get(["label","margin"]),dN(e,i,r,o,{position:gN(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}function vN(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}function mN(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}function xN(t,e,n,i,r,o){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle:o,clockwise:!0}}var _N=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.grid,s=i.get("type"),l=bN(a,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=pN(i),c=wN[s](o,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}yN(e,t,iI(a.model,n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=iI(e.axis.grid.model,e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=gN(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.grid,a=r.getGlobalExtent(!0),s=bN(o,r).getOtherAxis(r).getGlobalExtent(),l="x"===r.dim?0:1,u=[t.x,t.y];u[l]+=e[l],u[l]=Math.min(a[1],u[l]),u[l]=Math.max(a[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{x:u[0],y:u[1],rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}},e}(aN);function bN(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var wN={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:vN([e,n[0]],[e,n[1]],SN(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),r=n[1]-n[0];return{type:"Rect",shape:mN([e-i/2,n[0]],[i,r],SN(t))}}};function SN(t){return"x"===t.dim?0:1}var MN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="axisPointer",e.defaultOption={show:"auto",z:50,type:"line",snap:!1,triggerTooltip:!0,triggerEmphasis:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}},e}(zp),IN=Vo(),TN=E;function CN(t,e,n){if(!r.node){var i=e.getZr();IN(i).records||(IN(i).records={}),function(t,e){if(IN(t).initialized)return;function n(n,i){t.on(n,(function(n){var r=function(t){var e={showTip:[],hideTip:[]},n=function(i){var r=e[i.type];r?r.push(i):(i.dispatchAction=n,t.dispatchAction(i))};return{dispatchAction:n,pendings:e}}(e);TN(IN(t).records,(function(t){t&&i(t,n,r.dispatchAction)})),function(t,e){var n,i=t.showTip.length,r=t.hideTip.length;i?n=t.showTip[i-1]:r&&(n=t.hideTip[r-1]);n&&(n.dispatchAction=null,e.dispatchAction(n))}(r.pendings,e)}))}IN(t).initialized=!0,n("click",H(AN,"click")),n("mousemove",H(AN,"mousemove")),n("globalout",DN)}(i,e),(IN(i).records[t]||(IN(i).records[t]={})).handler=n}}function DN(t,e,n){t.handler("leave",null,n)}function AN(t,e,n,i){e.handler(t,n,i)}function kN(t,e){if(!r.node){var n=e.getZr();(IN(n).records||{})[t]&&(IN(n).records[t]=null)}}var LN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=e.getComponent("tooltip"),r=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";CN("axisPointer",n,(function(t,e,n){"none"!==r&&("leave"===t||r.indexOf(t)>=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})}))},e.prototype.remove=function(t,e){kN("axisPointer",e)},e.prototype.dispose=function(t,e){kN("axisPointer",e)},e.type="axisPointer",e}(Ag);function PN(t,e){var n,i=[],r=t.seriesIndex;if(null==r||!(n=e.getSeriesByIndex(r)))return{point:[]};var o=n.getData(),a=zo(o,t);if(null==a||a<0||Y(a))return{point:[]};var s=o.getItemGraphicEl(a),l=n.coordinateSystem;if(n.getTooltipPosition)i=n.getTooltipPosition(a)||[];else if(l&&l.dataToPoint)if(t.isStacked){var u=l.getBaseAxis(),h=l.getOtherAxis(u).dim,c=u.dim,p="x"===h||"radius"===h?1:0,d=o.mapDimension(c),f=[];f[p]=o.get(d,a),f[1-p]=o.get(o.getCalculationInfo("stackResultDimension"),a),i=l.dataToPoint(f)||[]}else i=l.dataToPoint(o.getValues(z(l.dimensions,(function(t){return o.mapDimension(t)})),a))||[];else if(s){var g=s.getBoundingRect().clone();g.applyTransform(s.transform),i=[g.x+g.width/2,g.y+g.height/2]}return{point:i,el:s}}var ON=Vo();function RN(t,e,n){var i=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchAction||W(n.dispatchAction,n),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){BN(r)&&(r=PN({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=BN(r),u=o.axesInfo,h=s.axesInfo,c="leave"===i||BN(r),p={},d={},f={list:[],map:{}},g={showPointer:H(EN,d),showTooltip:H(zN,f)};E(s.coordSysMap,(function(t,e){var n=l||t.containPoint(r);E(s.coordSysAxesInfo[e],(function(t,e){var i=t.axis,o=function(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}(u,t);if(!c&&n&&(!u||o)){var a=o&&o.value;null!=a||l||(a=i.pointToData(r)),null!=a&&NN(t,a,g,!1,p)}}))}));var y={};return E(h,(function(t,e){var n=t.linkGroup;n&&!d[e]&&E(n.axesInfo,(function(e,i){var r=d[i];if(e!==t&&r){var o=r.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,VN(e),VN(t)))),y[t.key]=o}}))})),E(y,(function(t,e){NN(h[e],t,g,!0,p)})),function(t,e,n){var i=n.axesInfo=[];E(e,(function(e,n){var r=e.axisPointerModel.option,o=t[n];o?(!e.useHandle&&(r.status="show"),r.value=o.value,r.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&i.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})}))}(d,h,p),function(t,e,n,i){if(BN(e)||!t.list.length)return void i({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}(f,r,t,a),function(t,e,n){var i=n.getZr(),r="axisPointerLastHighlights",o=ON(i)[r]||{},a=ON(i)[r]={};E(t,(function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&t.triggerEmphasis&&E(n.seriesDataIndices,(function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t}))}));var s=[],l=[];E(o,(function(t,e){!a[e]&&l.push(t)})),E(a,(function(t,e){!o[e]&&s.push(t)})),l.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}(h,0,n),p}}function NN(t,e,n,i,r){var o=t.axis;if(!o.scale.isBlank()&&o.containData(e))if(t.involveSeries){var a=function(t,e){var n=e.axis,i=n.dim,r=t,o=[],a=Number.MAX_VALUE,s=-1;return E(e.seriesModels,(function(e,l){var u,h,c=e.getData().mapDimensionsAll(i);if(e.getAxisTooltipData){var p=e.getAxisTooltipData(c,t,n);h=p.dataIndices,u=p.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===n.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var d=t-u,f=Math.abs(d);f<=a&&((f=0&&s<0)&&(a=f,s=d,r=u,o.length=0),E(h,(function(t){o.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})})))}})),{payloadBatch:o,snapToValue:r}}(e,t),s=a.payloadBatch,l=a.snapToValue;s[0]&&null==r.seriesIndex&&A(r,s[0]),!i&&t.snap&&o.containData(l)&&null!=l&&(e=l),n.showPointer(t,e,s),n.showTooltip(t,a,l)}else n.showPointer(t,e)}function EN(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function zN(t,e,n,i){var r=n.payloadBatch,o=e.axis,a=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,u=MI(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:o.dim,axisIndex:a.componentIndex,axisType:a.type,axisId:a.id,value:i,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:r.slice()})}}function VN(t){var e=t.axis.model,n={},i=n.axisDim=t.axis.dim;return n.axisIndex=n[i+"AxisIndex"]=e.componentIndex,n.axisName=n[i+"AxisName"]=e.name,n.axisId=n[i+"AxisId"]=e.id,n}function BN(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function FN(t){TI.registerAxisPointerClass("CartesianAxisPointer",_N),t.registerComponentModel(MN),t.registerComponentView(LN),t.registerPreprocessor((function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!Y(e)&&(t.axisPointer.link=[e])}})),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,(function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=xI(t,e)})),t.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},RN)}var GN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis;"angle"===o.dim&&(this.animationThreshold=Math.PI/18);var a=o.polar,s=a.getOtherAxis(o).getExtent(),l=o.dataToCoord(e),u=i.get("type");if(u&&"none"!==u){var h=pN(i),c=WN[u](o,a,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}var p=function(t,e,n,i,r){var o=e.axis,a=o.dataToCoord(t),s=i.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=i.getRadiusAxis().getExtent();if("radius"===o.dim){var p=[1,0,0,1,0,0];Se(p,p,s),we(p,p,[i.cx,i.cy]),l=Fh([a,-r],p);var d=e.getModel("axisLabel").get("rotate")||0,f=dI.innerTextLayout(s,d*Math.PI/180,-1);u=f.textAlign,h=f.textVerticalAlign}else{var g=c[1];l=i.coordToPoint([g+r,a]);var y=i.cx,v=i.cy;u=Math.abs(l[0]-y)/g<.3?"center":l[0]>y?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}(e,n,0,a,i.get(["label","margin"]));dN(t,n,i,r,p)},e}(aN);var WN={line:function(t,e,n,i){return"angle"===t.dim?{type:"Line",shape:vN(e.coordToPoint([i[0],n]),e.coordToPoint([i[1],n]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:n}}},shadow:function(t,e,n,i){var r=Math.max(1,t.getBandWidth()),o=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:xN(e.cx,e.cy,i[0],i[1],(-n-r/2)*o,(r/2-n)*o)}:{type:"Sector",shape:xN(e.cx,e.cy,n-r/2,n+r/2,0,2*Math.PI)}}},HN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.findAxisModel=function(t){var e;return this.ecModel.eachComponent(t,(function(t){t.getCoordSysModel()===this&&(e=t)}),this),e},e.type="polar",e.dependencies=["radiusAxis","angleAxis"],e.defaultOption={z:0,center:["50%","50%"],radius:"80%"},e}(zp),YN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",Wo).models[0]},e.type="polarAxis",e}(zp);R(YN,D_);var XN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="angleAxis",e}(YN),UN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="radiusAxis",e}(YN),ZN=function(t){function e(e,n){return t.call(this,"radius",e,n)||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e}(ab);ZN.prototype.dataToRadius=ab.prototype.dataToCoord,ZN.prototype.radiusToData=ab.prototype.coordToData;var jN=Vo(),qN=function(t){function e(e,n){return t.call(this,"angle",e,n||[0,360])||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e.prototype.calculateCategoryInterval=function(){var t=this,e=t.getLabelModel(),n=t.scale,i=n.getExtent(),r=n.count();if(i[1]-i[0]<1)return 0;var o=i[0],a=t.dataToCoord(o+1)-t.dataToCoord(o),s=Math.abs(a),l=Sr(null==o?"":o+"",e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=jN(t.model),p=c.lastAutoInterval,d=c.lastTickCount;return null!=p&&null!=d&&Math.abs(p-h)<=1&&Math.abs(d-r)<=1&&p>h?h=p:(c.lastTickCount=r,c.lastAutoInterval=h),h},e}(ab);qN.prototype.dataToAngle=ab.prototype.dataToCoord,qN.prototype.angleToData=ab.prototype.coordToData;var KN=["radius","angle"],$N=function(){function t(t){this.dimensions=KN,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new ZN,this._angleAxis=new qN,this.axisPointerEnabled=!0,this.name=t||"",this._radiusAxis.polar=this._angleAxis.polar=this}return t.prototype.containPoint=function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},t.prototype.containData=function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},t.prototype.getAxis=function(t){return this["_"+t+"Axis"]},t.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},t.prototype.getAxesByScale=function(t){var e=[],n=this._angleAxis,i=this._radiusAxis;return n.scale.type===t&&e.push(n),i.scale.type===t&&e.push(i),e},t.prototype.getAngleAxis=function(){return this._angleAxis},t.prototype.getRadiusAxis=function(){return this._radiusAxis},t.prototype.getOtherAxis=function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},t.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},t.prototype.getTooltipAxes=function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},t.prototype.dataToPoint=function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},t.prototype.pointToData=function(t,e){var n=this.pointToCoord(t);return[this._radiusAxis.radiusToData(n[0],e),this._angleAxis.angleToData(n[1],e)]},t.prototype.pointToCoord=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=this.getAngleAxis(),r=i.getExtent(),o=Math.min(r[0],r[1]),a=Math.max(r[0],r[1]);i.inverse?o=a-360:a=o+360;var s=Math.sqrt(e*e+n*n);e/=s,n/=s;for(var l=Math.atan2(-n,e)/Math.PI*180,u=la;)l+=360*u;return[s,l]},t.prototype.coordToPoint=function(t){var e=t[0],n=t[1]/180*Math.PI;return[Math.cos(n)*e+this.cx,-Math.sin(n)*e+this.cy]},t.prototype.getArea=function(){var t=this.getAngleAxis(),e=this.getRadiusAxis().getExtent().slice();e[0]>e[1]&&e.reverse();var n=t.getExtent(),i=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:t.inverse,contain:function(t,e){var n=t-this.cx,i=e-this.cy,r=n*n+i*i-1e-4,o=this.r,a=this.r0;return r<=o*o&&r>=a*a}}},t.prototype.convertToPixel=function(t,e,n){return JN(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return JN(e)===this?this.pointToData(n):null},t}();function JN(t){var e=t.seriesModel,n=t.polarModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}function QN(t,e){var n=this,i=n.getAngleAxis(),r=n.getRadiusAxis();if(i.scale.setExtent(1/0,-1/0),r.scale.setExtent(1/0,-1/0),t.eachSeries((function(t){if(t.coordinateSystem===n){var e=t.getData();E(C_(e,"radius"),(function(t){r.scale.unionExtentFromData(e,t)})),E(C_(e,"angle"),(function(t){i.scale.unionExtentFromData(e,t)}))}})),__(i.scale,i.model),__(r.scale,r.model),"category"===i.type&&!i.onBand){var o=i.getExtent(),a=360/i.scale.count();i.inverse?o[1]+=a:o[1]-=a,i.setExtent(o[0],o[1])}}function tE(t,e){var n;if(t.type=e.get("type"),t.scale=b_(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),function(t){return"angleAxis"===t.mainType}(e)){t.inverse=t.inverse!==e.get("clockwise");var i=e.get("startAngle"),r=null!==(n=e.get("endAngle"))&&void 0!==n?n:i+(t.inverse?-360:360);t.setExtent(i,r)}e.axis=t,t.model=e}var eE={dimensions:KN,create:function(t,e){var n=[];return t.eachComponent("polar",(function(t,i){var r=new $N(i+"");r.update=QN;var o=r.getRadiusAxis(),a=r.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");tE(o,s),tE(a,l),function(t,e,n){var i=e.get("center"),r=n.getWidth(),o=n.getHeight();t.cx=$r(i[0],r),t.cy=$r(i[1],o);var a=t.getRadiusAxis(),s=Math.min(r,o)/2,l=e.get("radius");null==l?l=[0,"100%"]:Y(l)||(l=[0,l]);var u=[$r(l[0],s),$r(l[1],s)];a.inverse?a.setExtent(u[1],u[0]):a.setExtent(u[0],u[1])}(r,t,e),n.push(r),t.coordinateSystem=r,r.model=t})),t.eachSeries((function(t){if("polar"===t.get("coordinateSystem")){var e=t.getReferringComponents("polar",Wo).models[0];0,t.coordinateSystem=e.coordinateSystem}})),n}},nE=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function iE(t,e,n){e[1]>e[0]&&(e=e.slice().reverse());var i=t.coordToPoint([e[0],n]),r=t.coordToPoint([e[1],n]);return{x1:i[0],y1:i[1],x2:r[0],y2:r[1]}}function rE(t){return t.getRadiusAxis().inverse?0:1}function oE(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coord-n.coord)-360)<1e-4&&t.pop()}var aE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="PolarAxisPointer",n}return n(e,t),e.prototype.render=function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,i=n.polar,r=i.getRadiusAxis().getExtent(),o=n.getTicksCoords(),a=n.getMinorTicksCoords(),s=z(n.getViewLabels(),(function(t){t=T(t);var e=n.scale,i="ordinal"===e.type?e.getRawOrdinalNumber(t.tickValue):t.tickValue;return t.coord=n.dataToCoord(i),t}));oE(s),oE(o),E(nE,(function(e){!t.get([e,"show"])||n.scale.isBlank()&&"axisLine"!==e||sE[e](this.group,t,i,o,a,r,s)}),this)}},e.type="angleAxis",e}(TI),sE={axisLine:function(t,e,n,i,r,o){var a,s=e.getModel(["axisLine","lineStyle"]),l=n.getAngleAxis(),u=Math.PI/180,h=l.getExtent(),c=rE(n),p=c?0:1,d=360===Math.abs(h[1]-h[0])?"Circle":"Arc";(a=0===o[p]?new Qh[d]({shape:{cx:n.cx,cy:n.cy,r:o[c],startAngle:-h[0]*u,endAngle:-h[1]*u,clockwise:l.inverse},style:s.getLineStyle(),z2:1,silent:!0}):new Wu({shape:{cx:n.cx,cy:n.cy,r:o[c],r0:o[p]},style:s.getLineStyle(),z2:1,silent:!0})).style.fill=null,t.add(a)},axisTick:function(t,e,n,i,r,o){var a=e.getModel("axisTick"),s=(a.get("inside")?-1:1)*a.get("length"),l=o[rE(n)],u=z(i,(function(t){return new Ku({shape:iE(n,[l,l+s],t.coord)})}));t.add(Nh(u,{style:k(a.getModel("lineStyle").getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])})}))},minorTick:function(t,e,n,i,r,o){if(r.length){for(var a=e.getModel("axisTick"),s=e.getModel("minorTick"),l=(a.get("inside")?-1:1)*s.get("length"),u=o[rE(n)],h=[],c=0;cf?"left":"right",v=Math.abs(d[1]-g)/p<.3?"middle":d[1]>g?"top":"bottom";if(s&&s[c]){var m=s[c];q(m)&&m.textStyle&&(a=new Cc(m.textStyle,l,l.ecModel))}var x=new Xs({silent:dI.isLabelSilent(e),style:oc(a,{x:d[0],y:d[1],fill:a.getTextColor()||e.get(["axisLine","lineStyle","color"]),text:i.formattedLabel,align:y,verticalAlign:v})});if(t.add(x),h){var _=dI.makeAxisEventDataBase(e);_.targetType="axisLabel",_.value=i.rawLabel,rl(x).eventData=_}}),this)},splitLine:function(t,e,n,i,r,o){var a=e.getModel("splitLine").getModel("lineStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=0;h=0?"p":"n",C=b;m&&(i[s][I]||(i[s][I]={p:b,n:b}),C=i[s][I][T]);var D=void 0,A=void 0,k=void 0,L=void 0;if("radius"===c.dim){var P=c.dataToCoord(M)-b,O=o.dataToCoord(I);Math.abs(P)=L})}}}))}var gE={startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:0}},yE={splitNumber:5},vE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="polar",e}(Ag);function mE(t,e){e=e||{};var n=t.coordinateSystem,i=t.axis,r={},o=i.position,a=i.orient,s=n.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};r.position=["vertical"===a?u.vertical[o]:l[0],"horizontal"===a?u.horizontal[o]:l[3]];r.rotation=Math.PI/2*{horizontal:0,vertical:1}[a];r.labelDirection=r.tickDirection=r.nameDirection={top:-1,bottom:1,right:1,left:-1}[o],t.get(["axisTick","inside"])&&(r.tickDirection=-r.tickDirection),it(e.labelInside,t.get(["axisLabel","inside"]))&&(r.labelDirection=-r.labelDirection);var h=e.rotate;return null==h&&(h=t.get(["axisLabel","rotate"])),r.labelRotation="top"===o?-h:h,r.z2=1,r}var xE=["axisLine","axisTickLabel","axisName"],_E=["splitArea","splitLine"],bE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="SingleAxisPointer",n}return n(e,t),e.prototype.render=function(e,n,i,r){var o=this.group;o.removeAll();var a=this._axisGroup;this._axisGroup=new Br;var s=mE(e),l=new dI(e,s);E(xE,l.add,l),o.add(this._axisGroup),o.add(l.getGroup()),E(_E,(function(t){e.get([t,"show"])&&wE[t](this,this.group,this._axisGroup,e)}),this),Hh(a,this._axisGroup,e),t.prototype.render.call(this,e,n,i,r)},e.prototype.remove=function(){AI(this)},e.type="singleAxis",e}(TI),wE={splitLine:function(t,e,n,i){var r=i.axis;if(!r.scale.isBlank()){var o=i.getModel("splitLine"),a=o.getModel("lineStyle"),s=a.get("color");s=s instanceof Array?s:[s];for(var l=a.get("width"),u=i.coordinateSystem.getRect(),h=r.isHorizontal(),c=[],p=0,d=r.getTicksCoords({tickModel:o}),f=[],g=[],y=0;y=e.y&&t[1]<=e.y+e.height:n.contain(n.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},t.prototype.pointToData=function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},t.prototype.dataToPoint=function(t){var e=this.getAxis(),n=this.getRect(),i=[],r="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),i[r]=e.toGlobalCoord(e.dataToCoord(+t)),i[1-r]=0===r?n.y+n.height/2:n.x+n.width/2,i},t.prototype.convertToPixel=function(t,e,n){return CE(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return CE(e)===this?this.pointToData(n):null},t}();function CE(t){var e=t.seriesModel,n=t.singleAxisModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}var DE={create:function(t,e){var n=[];return t.eachComponent("singleAxis",(function(i,r){var o=new TE(i,t,e);o.name="single_"+r,o.resize(i,e),i.coordinateSystem=o,n.push(o)})),t.eachSeries((function(t){if("singleAxis"===t.get("coordinateSystem")){var e=t.getReferringComponents("singleAxis",Wo).models[0];t.coordinateSystem=e&&e.coordinateSystem}})),n},dimensions:IE},AE=["x","y"],kE=["width","height"],LE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.coordinateSystem,s=RE(a,1-OE(o)),l=a.dataToPoint(e)[0],u=i.get("type");if(u&&"none"!==u){var h=pN(i),c=PE[u](o,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}yN(e,t,mE(n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=mE(e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=gN(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.coordinateSystem,a=OE(r),s=RE(o,a),l=[t.x,t.y];l[a]+=e[a],l[a]=Math.min(s[1],l[a]),l[a]=Math.max(s[0],l[a]);var u=RE(o,1-a),h=(u[1]+u[0])/2,c=[h,h];return c[a]=l[a],{x:l[0],y:l[1],rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}},e}(aN),PE={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:vN([e,n[0]],[e,n[1]],OE(t))}},shadow:function(t,e,n){var i=t.getBandWidth(),r=n[1]-n[0];return{type:"Rect",shape:mN([e-i/2,n[0]],[i,r],OE(t))}}};function OE(t){return t.isHorizontal()?0:1}function RE(t,e){var n=t.getRect();return[n[AE[e]],n[AE[e]]+n[kE[e]]]}var NE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="single",e}(Ag);var EE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e,n,i){var r=Rp(e);t.prototype.init.apply(this,arguments),zE(e,r)},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),zE(this.option,e)},e.prototype.getCellSize=function(){return this.option.cellSize},e.type="calendar",e.defaultOption={z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},e}(zp);function zE(t,e){var n,i=t.cellSize;1===(n=Y(i)?i:t.cellSize=[i,i]).length&&(n[1]=n[0]);var r=z([0,1],(function(t){return function(t,e){return null!=t[Cp[e][0]]||null!=t[Cp[e][1]]&&null!=t[Cp[e][2]]}(e,t)&&(n[t]="auto"),null!=n[t]&&"auto"!==n[t]}));Op(t,e,{type:"box",ignoreSize:r})}var VE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this.group;i.removeAll();var r=t.coordinateSystem,o=r.getRangeInfo(),a=r.getOrient(),s=e.getLocaleModel();this._renderDayRect(t,o,i),this._renderLines(t,o,a,i),this._renderYearText(t,o,a,i),this._renderMonthText(t,s,a,i),this._renderWeekText(t,s,o,a,i)},e.prototype._renderDayRect=function(t,e,n){for(var i=t.coordinateSystem,r=t.getModel("itemStyle").getItemStyle(),o=i.getCellWidth(),a=i.getCellHeight(),s=e.start.time;s<=e.end.time;s=i.getNextNDay(s,1).time){var l=i.dataToRect([s],!1).tl,u=new Ws({shape:{x:l[0],y:l[1],width:o,height:a},cursor:"default",style:r});n.add(u)}},e.prototype._renderLines=function(t,e,n,i){var r=this,o=t.coordinateSystem,a=t.getModel(["splitLine","lineStyle"]).getLineStyle(),s=t.get(["splitLine","show"]),l=a.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=e.start,h=0;u.time<=e.end.time;h++){p(u.formatedDate),0===h&&(u=o.getDateInfo(e.start.y+"-"+e.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=o.getDateInfo(c)}function p(e){r._firstDayOfMonth.push(o.getDateInfo(e)),r._firstDayPoints.push(o.dataToRect([e],!1).tl);var l=r._getLinePointsOfOneWeek(t,e,n);r._tlpoints.push(l[0]),r._blpoints.push(l[l.length-1]),s&&r._drawSplitline(l,a,i)}p(o.getNextNDay(e.end.time,1).formatedDate),s&&this._drawSplitline(r._getEdgesPoints(r._tlpoints,l,n),a,i),s&&this._drawSplitline(r._getEdgesPoints(r._blpoints,l,n),a,i)},e.prototype._getEdgesPoints=function(t,e,n){var i=[t[0].slice(),t[t.length-1].slice()],r="horizontal"===n?0:1;return i[0][r]=i[0][r]-e/2,i[1][r]=i[1][r]+e/2,i},e.prototype._drawSplitline=function(t,e,n){var i=new Zu({z2:20,shape:{points:t},style:e});n.add(i)},e.prototype._getLinePointsOfOneWeek=function(t,e,n){for(var i=t.coordinateSystem,r=i.getDateInfo(e),o=[],a=0;a<7;a++){var s=i.getNextNDay(r.time,a),l=i.dataToRect([s.time],!1);o[2*s.day]=l.tl,o[2*s.day+1]=l["horizontal"===n?"bl":"tr"]}return o},e.prototype._formatterLabel=function(t,e){return U(t)&&t?(n=t,E(e,(function(t,e){n=n.replace("{"+e+"}",i?re(t):t)})),n):X(t)?t(e):e.nameMap;var n,i},e.prototype._yearTextPositionControl=function(t,e,n,i,r){var o=e[0],a=e[1],s=["center","bottom"];"bottom"===i?(a+=r,s=["center","top"]):"left"===i?o-=r:"right"===i?(o+=r,s=["center","top"]):a-=r;var l=0;return"left"!==i&&"right"!==i||(l=Math.PI/2),{rotation:l,x:o,y:a,style:{align:s[0],verticalAlign:s[1]}}},e.prototype._renderYearText=function(t,e,n,i){var r=t.getModel("yearLabel");if(r.get("show")){var o=r.get("margin"),a=r.get("position");a||(a="horizontal"!==n?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===n?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},p=e.start.y;+e.end.y>+e.start.y&&(p=p+"-"+e.end.y);var d=r.get("formatter"),f={start:e.start.y,end:e.end.y,nameMap:p},g=this._formatterLabel(d,f),y=new Xs({z2:30,style:oc(r,{text:g})});y.attr(this._yearTextPositionControl(y,c[a],n,a,o)),i.add(y)}},e.prototype._monthTextPositionControl=function(t,e,n,i,r){var o="left",a="top",s=t[0],l=t[1];return"horizontal"===n?(l+=r,e&&(o="center"),"start"===i&&(a="bottom")):(s+=r,e&&(a="middle"),"start"===i&&(o="right")),{x:s,y:l,align:o,verticalAlign:a}},e.prototype._renderMonthText=function(t,e,n,i){var r=t.getModel("monthLabel");if(r.get("show")){var o=r.get("nameMap"),a=r.get("margin"),s=r.get("position"),l=r.get("align"),u=[this._tlpoints,this._blpoints];o&&!U(o)||(o&&(e=Vc(o)||e),o=e.get(["time","monthAbbr"])||[]);var h="start"===s?0:1,c="horizontal"===n?0:1;a="start"===s?-a:a;for(var p="center"===l,d=0;d=i.start.time&&n.timea.end.time&&t.reverse(),t},t.prototype._getRangeInfo=function(t){var e,n=[this.getDateInfo(t[0]),this.getDateInfo(t[1])];n[0].time>n[1].time&&(e=!0,n.reverse());var i=Math.floor(n[1].time/BE)-Math.floor(n[0].time/BE)+1,r=new Date(n[0].time),o=r.getDate(),a=n[1].date.getDate();r.setDate(o+i-1);var s=r.getDate();if(s!==a)for(var l=r.getTime()-n[1].time>0?1:-1;(s=r.getDate())!==a&&(r.getTime()-n[1].time)*l>0;)i-=l,r.setDate(s-l);var u=Math.floor((i+n[0].day+6)/7),h=e?1-u:u-1;return e&&n.reverse(),{range:[n[0].formatedDate,n[1].formatedDate],start:n[0],end:n[1],allDay:i,weeks:u,nthWeek:h,fweek:n[0].day,lweek:n[1].day}},t.prototype._getDateByWeeksAndDay=function(t,e,n){var i=this._getRangeInfo(n);if(t>i.weeks||0===t&&ei.lweek)return null;var r=7*(t-1)-i.fweek+e,o=new Date(i.start.time);return o.setDate(+i.start.d+r),this.getDateInfo(o)},t.create=function(e,n){var i=[];return e.eachComponent("calendar",(function(r){var o=new t(r,e,n);i.push(o),r.coordinateSystem=o})),e.eachSeries((function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])})),i},t.dimensions=["time","value"],t}();function GE(t){var e=t.calendarModel,n=t.seriesModel;return e?e.coordinateSystem:n?n.coordinateSystem:null}function WE(t,e){var n;return E(e,(function(e){null!=t[e]&&"auto"!==t[e]&&(n=!0)})),n}var HE=["transition","enterFrom","leaveTo"],YE=HE.concat(["enterAnimation","updateAnimation","leaveAnimation"]);function XE(t,e,n){if(n&&(!t[n]&&e[n]&&(t[n]={}),t=t[n],e=e[n]),t&&e)for(var i=n?HE:YE,r=0;r=0;l--){var p,d,f;if(f=null!=(d=Ro((p=n[l]).id,null))?r.get(d):null){var g=f.parent,y=(c=jE(g),{}),v=Lp(f,p,g===i?{width:o,height:a}:{width:c.width,height:c.height},null,{hv:p.hv,boundingMode:p.bounding},y);if(!jE(f).isNew&&v){for(var m=p.transition,x={},_=0;_=0)?x[b]=w:f[b]=w}vh(f,x,t,0)}else f.attr(y)}}},e.prototype._clear=function(){var t=this,e=this._elMap;e.each((function(n){JE(n,jE(n).option,e,t._lastGraphicModel)})),this._elMap=yt()},e.prototype.dispose=function(){this._clear()},e.type="graphic",e}(Ag);function KE(t){var e=_t(ZE,t)?ZE[t]:Lh(t);var n=new e({});return jE(n).type=t,n}function $E(t,e,n,i){var r=KE(n);return e.add(r),i.set(t,r),jE(r).id=t,jE(r).isNew=!0,r}function JE(t,e,n,i){t&&t.parent&&("group"===t.type&&t.traverse((function(t){JE(t,e,n,i)})),gR(t,e,i),n.removeKey(jE(t).id))}function QE(t,e,n,i){t.isGroup||E([["cursor",Da.prototype.cursor],["zlevel",i||0],["z",n||0],["z2",0]],(function(n){var i=n[0];_t(e,i)?t[i]=rt(e[i],n[1]):null==t[i]&&(t[i]=n[1])})),E(G(e),(function(n){if(0===n.indexOf("on")){var i=e[n];t[n]=X(i)?i:null}})),_t(e,"draggable")&&(t.draggable=e.draggable),null!=e.name&&(t.name=e.name),null!=e.id&&(t.id=e.id)}var tz=["x","y","radius","angle","single"],ez=["cartesian2d","polar","singleAxis"];function nz(t){return t+"Axis"}function iz(t,e){var n,i=yt(),r=[],o=yt();t.eachComponent({mainType:"dataZoom",query:e},(function(t){o.get(t.uid)||s(t)}));do{n=!1,t.eachComponent("dataZoom",a)}while(n);function a(t){!o.get(t.uid)&&function(t){var e=!1;return t.eachTargetAxis((function(t,n){var r=i.get(t);r&&r[n]&&(e=!0)})),e}(t)&&(s(t),n=!0)}function s(t){o.set(t.uid,!0),r.push(t),t.eachTargetAxis((function(t,e){(i.get(t)||i.set(t,[]))[e]=!0}))}return r}function rz(t){var e=t.ecModel,n={infoList:[],infoMap:yt()};return t.eachTargetAxis((function(t,i){var r=e.getComponent(nz(t),i);if(r){var o=r.getCoordSysModel();if(o){var a=o.uid,s=n.infoMap.get(a);s||(s={model:o,axisModels:[]},n.infoList.push(s),n.infoMap.set(a,s)),s.axisModels.push(r)}}})),n}var oz=function(){function t(){this.indexList=[],this.indexMap=[]}return t.prototype.add=function(t){this.indexMap[t]||(this.indexList.push(t),this.indexMap[t]=!0)},t}(),az=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._autoThrottle=!0,n._noTarget=!0,n._rangePropMode=["percent","percent"],n}return n(e,t),e.prototype.init=function(t,e,n){var i=sz(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this._doInit(i)},e.prototype.mergeOption=function(t){var e=sz(t);C(this.option,t,!0),C(this.settledOption,e,!0),this._doInit(e)},e.prototype._doInit=function(t){var e=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var n=this.settledOption;E([["start","startValue"],["end","endValue"]],(function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=n[t[0]]=null)}),this),this._resetTarget()},e.prototype._resetTarget=function(){var t=this.get("orient",!0),e=this._targetAxisInfoMap=yt();this._fillSpecifiedTargetAxis(e)?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(e,this._orient)),this._noTarget=!0,e.each((function(t){t.indexList.length&&(this._noTarget=!1)}),this)},e.prototype._fillSpecifiedTargetAxis=function(t){var e=!1;return E(tz,(function(n){var i=this.getReferringComponents(nz(n),Ho);if(i.specified){e=!0;var r=new oz;E(i.models,(function(t){r.add(t.componentIndex)})),t.set(n,r)}}),this),e},e.prototype._fillAutoTargetAxisByOrient=function(t,e){var n=this.ecModel,i=!0;if(i){var r="vertical"===e?"y":"x";o(n.findComponents({mainType:r+"Axis"}),r)}i&&o(n.findComponents({mainType:"singleAxis",filter:function(t){return t.get("orient",!0)===e}}),"single");function o(e,n){var r=e[0];if(r){var o=new oz;if(o.add(r.componentIndex),t.set(n,o),i=!1,"x"===n||"y"===n){var a=r.getReferringComponents("grid",Wo).models[0];a&&E(e,(function(t){r.componentIndex!==t.componentIndex&&a===t.getReferringComponents("grid",Wo).models[0]&&o.add(t.componentIndex)}))}}}i&&E(tz,(function(e){if(i){var r=n.findComponents({mainType:nz(e),filter:function(t){return"category"===t.get("type",!0)}});if(r[0]){var o=new oz;o.add(r[0].componentIndex),t.set(e,o),i=!1}}}),this)},e.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis((function(e){!t&&(t=e)}),this),"y"===t?"vertical":"horizontal"},e.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var e=this.ecModel.option;this.option.throttle=e.animation&&e.animationDurationUpdate>0?100:20}},e.prototype._updateRangeUse=function(t){var e=this._rangePropMode,n=this.get("rangeMode");E([["start","startValue"],["end","endValue"]],(function(i,r){var o=null!=t[i[0]],a=null!=t[i[1]];o&&!a?e[r]="percent":!o&&a?e[r]="value":n?e[r]=n[r]:o&&(e[r]="percent")}))},e.prototype.noTarget=function(){return this._noTarget},e.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis((function(e,n){null==t&&(t=this.ecModel.getComponent(nz(e),n))}),this),t},e.prototype.eachTargetAxis=function(t,e){this._targetAxisInfoMap.each((function(n,i){E(n.indexList,(function(n){t.call(e,i,n)}))}))},e.prototype.getAxisProxy=function(t,e){var n=this.getAxisModel(t,e);if(n)return n.__dzAxisProxy},e.prototype.getAxisModel=function(t,e){var n=this._targetAxisInfoMap.get(t);if(n&&n.indexMap[e])return this.ecModel.getComponent(nz(t),e)},e.prototype.setRawRange=function(t){var e=this.option,n=this.settledOption;E([["start","startValue"],["end","endValue"]],(function(i){null==t[i[0]]&&null==t[i[1]]||(e[i[0]]=n[i[0]]=t[i[0]],e[i[1]]=n[i[1]]=t[i[1]])}),this),this._updateRangeUse(t)},e.prototype.setCalculatedRange=function(t){var e=this.option;E(["start","startValue","end","endValue"],(function(n){e[n]=t[n]}))},e.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},e.prototype.getValueRange=function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},e.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var e,n=this._targetAxisInfoMap.keys(),i=0;i=0}(e)){var n=nz(this._dimName),i=e.getReferringComponents(n,Wo).models[0];i&&this._axisIndex===i.componentIndex&&t.push(e)}}),this),t},t.prototype.getAxisModel=function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},t.prototype.getMinMaxSpan=function(){return T(this._minMaxSpan)},t.prototype.calculateDataWindow=function(t){var e,n=this._dataExtent,i=this.getAxisModel().axis.scale,r=this._dataZoomModel.getRangePropMode(),o=[0,100],a=[],s=[];cz(["start","end"],(function(l,u){var h=t[l],c=t[l+"Value"];"percent"===r[u]?(null==h&&(h=o[u]),c=i.parse(Kr(h,o,n))):(e=!0,h=Kr(c=null==c?n[u]:i.parse(c),n,o)),s[u]=null==c||isNaN(c)?n[u]:c,a[u]=null==h||isNaN(h)?o[u]:h})),pz(s),pz(a);var l=this._minMaxSpan;function u(t,e,n,r,o){var a=o?"Span":"ValueSpan";zk(0,t,n,"all",l["min"+a],l["max"+a]);for(var s=0;s<2;s++)e[s]=Kr(t[s],n,r,!0),o&&(e[s]=i.parse(e[s]))}return e?u(s,a,n,o,!1):u(a,s,o,n,!0),{valueWindow:s,percentWindow:a}},t.prototype.reset=function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=function(t,e,n){var i=[1/0,-1/0];cz(n,(function(t){!function(t,e,n){e&&E(C_(e,n),(function(n){var i=e.getApproximateExtent(n);i[0]t[1]&&(t[1]=i[1])}))}(i,t.getData(),e)}));var r=t.getAxisModel(),o=v_(r.axis.scale,r,i).calculate();return[o.min,o.max]}(this,this._dimName,e),this._updateMinMaxSpan();var n=this.calculateDataWindow(t.settledOption);this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,this._setAxisModel()}},t.prototype.filterData=function(t,e){if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow;"none"!==r&&cz(i,(function(t){var e=t.getData(),i=e.mapDimensionsAll(n);if(i.length){if("weakFilter"===r){var a=e.getStore(),s=z(i,(function(t){return e.getDimensionIndex(t)}),e);e.filterSelf((function(t){for(var e,n,r,l=0;lo[1];if(h&&!c&&!p)return!0;h&&(r=!0),c&&(e=!0),p&&(n=!0)}return r&&e&&n}))}else cz(i,(function(n){if("empty"===r)t.setData(e=e.map(n,(function(t){return function(t){return t>=o[0]&&t<=o[1]}(t)?t:NaN})));else{var i={};i[n]=o,e.selectRange(i)}}));cz(i,(function(t){e.setApproximateExtent(o,t)}))}}))}},t.prototype._updateMinMaxSpan=function(){var t=this._minMaxSpan={},e=this._dataZoomModel,n=this._dataExtent;cz(["min","max"],(function(i){var r=e.get(i+"Span"),o=e.get(i+"ValueSpan");null!=o&&(o=this.getAxisModel().axis.scale.parse(o)),null!=o?r=Kr(n[0]+o,n,[0,100],!0):null!=r&&(o=Kr(r,[0,100],n,!0)-n[0]),t[i+"Span"]=r,t[i+"ValueSpan"]=o}),this)},t.prototype._setAxisModel=function(){var t=this.getAxisModel(),e=this._percentWindow,n=this._valueWindow;if(e){var i=no(n,[0,500]);i=Math.min(i,20);var r=t.axis.scale.rawExtentInfo;0!==e[0]&&r.setDeterminedMinMax("min",+n[0].toFixed(i)),100!==e[1]&&r.setDeterminedMinMax("max",+n[1].toFixed(i)),r.freeze()}},t}();var fz={getTargetSeries:function(t){function e(e){t.eachComponent("dataZoom",(function(n){n.eachTargetAxis((function(i,r){var o=t.getComponent(nz(i),r);e(i,r,o,n)}))}))}e((function(t,e,n,i){n.__dzAxisProxy=null}));var n=[];e((function(e,i,r,o){r.__dzAxisProxy||(r.__dzAxisProxy=new dz(e,i,o,t),n.push(r.__dzAxisProxy))}));var i=yt();return E(n,(function(t){E(t.getTargetSeriesModels(),(function(t){i.set(t.uid,t)}))})),i},overallReset:function(t,e){t.eachComponent("dataZoom",(function(t){t.eachTargetAxis((function(e,n){t.getAxisProxy(e,n).reset(t)})),t.eachTargetAxis((function(n,i){t.getAxisProxy(n,i).filterData(t,e)}))})),t.eachComponent("dataZoom",(function(t){var e=t.findRepresentativeAxisProxy();if(e){var n=e.getDataPercentWindow(),i=e.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})}}))}};var gz=!1;function yz(t){gz||(gz=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,fz),function(t){t.registerAction("dataZoom",(function(t,e){E(iz(e,t),(function(e){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})}))}))}(t),t.registerSubTypeDefaulter("dataZoom",(function(){return"slider"})))}function vz(t){t.registerComponentModel(lz),t.registerComponentView(hz),yz(t)}var mz=function(){},xz={};function _z(t,e){xz[t]=e}function bz(t){return xz[t]}var wz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){t.prototype.optionUpdated.apply(this,arguments);var e=this.ecModel;E(this.option.feature,(function(t,n){var i=bz(n);i&&(i.getDefaultOption&&(i.defaultOption=i.getDefaultOption(e)),C(t,i.defaultOption))}))},e.type="toolbox",e.layoutMode={type:"box",ignoreSize:!0},e.defaultOption={show:!0,z:6,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},e}(zp);function Sz(t,e){var n=vp(e.get("padding")),i=e.getItemStyle(["color","opacity"]);return i.fill=e.get("backgroundColor"),t=new Ws({shape:{x:t.x-n[3],y:t.y-n[0],width:t.width+n[1]+n[3],height:t.height+n[0]+n[2],r:e.get("borderRadius")},style:i,silent:!0,z2:-1})}var Mz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this.group;if(r.removeAll(),t.get("show")){var o=+t.get("itemSize"),a="vertical"===t.get("orient"),s=t.get("feature")||{},l=this._features||(this._features={}),u=[];E(s,(function(t,e){u.push(e)})),new Gm(this._featureNames||[],u).add(h).update(h).remove(H(h,null)).execute(),this._featureNames=u,function(t,e,n){var i=e.getBoxLayoutParams(),r=e.get("padding"),o={width:n.getWidth(),height:n.getHeight()},a=kp(i,o,r);Ap(e.get("orient"),t,e.get("itemGap"),a.width,a.height),Lp(t,i,o,r)}(r,t,n),r.add(Sz(r.getBoundingRect(),t)),a||r.eachChild((function(t){var e=t.__title,i=t.ensureState("emphasis"),a=i.textConfig||(i.textConfig={}),s=t.getTextContent(),l=s&&s.ensureState("emphasis");if(l&&!X(l)&&e){var u=l.style||(l.style={}),h=Sr(e,Xs.makeFont(u)),c=t.x+r.x,p=!1;t.y+r.y+o+h.height>n.getHeight()&&(a.position="top",p=!0);var d=p?-5-h.height:o+10;c+h.width/2>n.getWidth()?(a.position=["100%",d],u.align="right"):c-h.width/2<0&&(a.position=[0,d],u.align="left")}}))}function h(h,c){var p,d=u[h],f=u[c],g=s[d],y=new Cc(g,t,t.ecModel);if(i&&null!=i.newTitle&&i.featureName===d&&(g.title=i.newTitle),d&&!f){if(function(t){return 0===t.indexOf("my")}(d))p={onclick:y.option.onclick,featureName:d};else{var v=bz(d);if(!v)return;p=new v}l[d]=p}else if(!(p=l[f]))return;p.uid=Ac("toolbox-feature"),p.model=y,p.ecModel=e,p.api=n;var m=p instanceof mz;d||!f?!y.get("show")||m&&p.unusable?m&&p.remove&&p.remove(e,n):(!function(i,s,l){var u,h,c=i.getModel("iconStyle"),p=i.getModel(["emphasis","iconStyle"]),d=s instanceof mz&&s.getIcons?s.getIcons():i.get("icon"),f=i.get("title")||{};U(d)?(u={})[l]=d:u=d;U(f)?(h={})[l]=f:h=f;var g=i.iconPaths={};E(u,(function(l,u){var d=Uh(l,{},{x:-o/2,y:-o/2,width:o,height:o});d.setStyle(c.getItemStyle()),d.ensureState("emphasis").style=p.getItemStyle();var f=new Xs({style:{text:h[u],align:p.get("textAlign"),borderRadius:p.get("textBorderRadius"),padding:p.get("textPadding"),fill:null,font:cc({fontStyle:p.get("textFontStyle"),fontFamily:p.get("textFontFamily"),fontSize:p.get("textFontSize"),fontWeight:p.get("textFontWeight")},e)},ignore:!0});d.setTextContent(f),Kh({el:d,componentModel:t,itemName:u,formatterParamsExtra:{title:h[u]}}),d.__title=h[u],d.on("mouseover",(function(){var e=p.getItemStyle(),i=a?null==t.get("right")&&"right"!==t.get("left")?"right":"left":null==t.get("bottom")&&"bottom"!==t.get("top")?"bottom":"top";f.setStyle({fill:p.get("textFill")||e.fill||e.stroke||"#000",backgroundColor:p.get("textBackgroundColor")}),d.setTextConfig({position:p.get("textPosition")||i}),f.ignore=!t.get("showTitle"),n.enterEmphasis(this)})).on("mouseout",(function(){"emphasis"!==i.get(["iconStatus",u])&&n.leaveEmphasis(this),f.hide()})),("emphasis"===i.get(["iconStatus",u])?Ol:Rl)(d),r.add(d),d.on("click",W(s.onclick,s,e,n,u)),g[u]=d}))}(y,p,d),y.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&("emphasis"===e?Ol:Rl)(i[t])},p instanceof mz&&p.render&&p.render(y,e,n,i)):m&&p.dispose&&p.dispose(e,n)}},e.prototype.updateView=function(t,e,n,i){E(this._features,(function(t){t instanceof mz&&t.updateView&&t.updateView(t.model,e,n,i)}))},e.prototype.remove=function(t,e){E(this._features,(function(n){n instanceof mz&&n.remove&&n.remove(t,e)})),this.group.removeAll()},e.prototype.dispose=function(t,e){E(this._features,(function(n){n instanceof mz&&n.dispose&&n.dispose(t,e)}))},e.type="toolbox",e}(Ag);var Iz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",o="svg"===e.getZr().painter.getType(),a=o?"svg":n.get("type",!0)||"png",s=e.getConnectedDataURL({type:a,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")}),l=r.browser;if("function"!=typeof MouseEvent||!l.newEdge&&(l.ie||l.edge))if(window.navigator.msSaveOrOpenBlob||o){var u=s.split(","),h=u[0].indexOf("base64")>-1,c=o?decodeURIComponent(u[1]):u[1];h&&(c=window.atob(c));var p=i+"."+a;if(window.navigator.msSaveOrOpenBlob){for(var d=c.length,f=new Uint8Array(d);d--;)f[d]=c.charCodeAt(d);var g=new Blob([f]);window.navigator.msSaveOrOpenBlob(g,p)}else{var y=document.createElement("iframe");document.body.appendChild(y);var v=y.contentWindow,m=v.document;m.open("image/svg+xml","replace"),m.write(c),m.close(),v.focus(),m.execCommand("SaveAs",!0,p),document.body.removeChild(y)}}else{var x=n.get("lang"),_='',b=window.open();b.document.write(_),b.document.title=i}else{var w=document.createElement("a");w.download=i+"."+a,w.target="_blank",w.href=s;var S=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});w.dispatchEvent(S)}},e.getDefaultOption=function(t){return{show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocaleModel().get(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocaleModel().get(["toolbox","saveAsImage","lang"])}},e}(mz),Tz="__ec_magicType_stack__",Cz=[["line","bar"],["stack"]],Dz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return E(t.get("type"),(function(t){e[t]&&(n[t]=e[t])})),n},e.getDefaultOption=function(t){return{show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocaleModel().get(["toolbox","magicType","title"]),option:{},seriesIndex:{}}},e.prototype.onclick=function(t,e,n){var i=this.model,r=i.get(["seriesIndex",n]);if(Az[n]){var o,a={series:[]};E(Cz,(function(t){P(t,n)>=0&&E(t,(function(t){i.setIconStatus(t,"normal")}))})),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:null==r?null:{seriesIndex:r}},(function(t){var e=t.subType,r=t.id,o=Az[n](e,r,t,i);o&&(k(o,t.option),a.series.push(o));var s=t.coordinateSystem;if(s&&"cartesian2d"===s.type&&("line"===n||"bar"===n)){var l=s.getAxesByScale("ordinal")[0];if(l){var u=l.dim+"Axis",h=t.getReferringComponents(u,Wo).models[0].componentIndex;a[u]=a[u]||[];for(var c=0;c<=h;c++)a[u][h]=a[u][h]||{};a[u][h].boundaryGap="bar"===n}}}));var s=n;"stack"===n&&(o=C({stack:i.option.title.tiled,tiled:i.option.title.stack},i.option.title),"emphasis"!==i.get(["iconStatus",n])&&(s="tiled")),e.dispatchAction({type:"changeMagicType",currentType:s,newOption:a,newTitle:o,featureName:"magicType"})}},e}(mz),Az={line:function(t,e,n,i){if("bar"===t)return C({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","line"])||{},!0)},bar:function(t,e,n,i){if("line"===t)return C({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","bar"])||{},!0)},stack:function(t,e,n,i){var r=n.get("stack")===Tz;if("line"===t||"bar"===t)return i.setIconStatus("stack",r?"normal":"emphasis"),C({id:e,stack:r?"":Tz},i.get(["option","stack"])||{},!0)}};Cm({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},(function(t,e){e.mergeOption(t.newOption)}));var kz=new Array(60).join("-"),Lz="\t";function Pz(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}var Oz=new RegExp("[\t]+","g");function Rz(t,e){var n=t.split(new RegExp("\n*"+kz+"\n*","g")),i={series:[]};return E(n,(function(t,n){if(function(t){if(t.slice(0,t.indexOf("\n")).indexOf(Lz)>=0)return!0}(t)){var r=function(t){for(var e=t.split(/\n+/g),n=[],i=z(Pz(e.shift()).split(Oz),(function(t){return{name:t,data:[]}})),r=0;r=0)&&t(r,i._targetInfoList)}))}return t.prototype.setOutputRanges=function(t,e){return this.matchOutputRanges(t,e,(function(t,e,n){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var i=jz[t.brushType](0,n,e);t.__rangeOffset={offset:Kz[t.brushType](i.values,t.range,[1,1]),xyMinMax:i.xyMinMax}}})),t},t.prototype.matchOutputRanges=function(t,e,n){E(t,(function(t){var i=this.findTargetInfo(t,e);i&&!0!==i&&E(i.coordSyses,(function(i){var r=jz[t.brushType](1,i,t.range,!0);n(t,r.values,i,e)}))}),this)},t.prototype.setInputRanges=function(t,e){E(t,(function(t){var n,i,r,o,a,s=this.findTargetInfo(t,e);if(t.range=t.range||[],s&&!0!==s){t.panelId=s.panelId;var l=jz[t.brushType](0,s.coordSys,t.coordRange),u=t.__rangeOffset;t.range=u?Kz[t.brushType](l.values,u.offset,(n=l.xyMinMax,i=u.xyMinMax,r=Jz(n),o=Jz(i),a=[r[0]/o[0],r[1]/o[1]],isNaN(a[0])&&(a[0]=1),isNaN(a[1])&&(a[1]=1),a)):l.values}}),this)},t.prototype.makePanelOpts=function(t,e){return z(this._targetInfoList,(function(n){var i=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:e?e(n):null,clipPath:BL(i),isTargetByCursor:GL(i,t,n.coordSysModel),getLinearBrushOtherExtent:FL(i)}}))},t.prototype.controlSeries=function(t,e,n){var i=this.findTargetInfo(t,n);return!0===i||i&&P(i.coordSyses,e.coordinateSystem)>=0},t.prototype.findTargetInfo=function(t,e){for(var n=this._targetInfoList,i=Yz(e,t),r=0;rt[1]&&t.reverse(),t}function Yz(t,e){return Fo(t,e,{includeMainTypes:Gz})}var Xz={grid:function(t,e){var n=t.xAxisModels,i=t.yAxisModels,r=t.gridModels,o=yt(),a={},s={};(n||i||r)&&(E(n,(function(t){var e=t.axis.grid.model;o.set(e.id,e),a[e.id]=!0})),E(i,(function(t){var e=t.axis.grid.model;o.set(e.id,e),s[e.id]=!0})),E(r,(function(t){o.set(t.id,t),a[t.id]=!0,s[t.id]=!0})),o.each((function(t){var r=t.coordinateSystem,o=[];E(r.getCartesians(),(function(t,e){(P(n,t.getAxis("x").model)>=0||P(i,t.getAxis("y").model)>=0)&&o.push(t)})),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:o[0],coordSyses:o,getPanelRect:Zz.grid,xAxisDeclared:a[t.id],yAxisDeclared:s[t.id]})})))},geo:function(t,e){E(t.geoModels,(function(t){var n=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:n,coordSyses:[n],getPanelRect:Zz.geo})}))}},Uz=[function(t,e){var n=t.xAxisModel,i=t.yAxisModel,r=t.gridModel;return!r&&n&&(r=n.axis.grid.model),!r&&i&&(r=i.axis.grid.model),r&&r===e.gridModel},function(t,e){var n=t.geoModel;return n&&n===e.geoModel}],Zz={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Bh(t)),e}},jz={lineX:H(qz,0),lineY:H(qz,1),rect:function(t,e,n,i){var r=t?e.pointToData([n[0][0],n[1][0]],i):e.dataToPoint([n[0][0],n[1][0]],i),o=t?e.pointToData([n[0][1],n[1][1]],i):e.dataToPoint([n[0][1],n[1][1]],i),a=[Hz([r[0],o[0]]),Hz([r[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,n,i){var r=[[1/0,-1/0],[1/0,-1/0]];return{values:z(n,(function(n){var o=t?e.pointToData(n,i):e.dataToPoint(n,i);return r[0][0]=Math.min(r[0][0],o[0]),r[1][0]=Math.min(r[1][0],o[1]),r[0][1]=Math.max(r[0][1],o[0]),r[1][1]=Math.max(r[1][1],o[1]),o})),xyMinMax:r}}};function qz(t,e,n,i){var r=n.getAxis(["x","y"][t]),o=Hz(z([0,1],(function(t){return e?r.coordToData(r.toLocalCoord(i[t]),!0):r.toGlobalCoord(r.dataToCoord(i[t]))}))),a=[];return a[t]=o,a[1-t]=[NaN,NaN],{values:o,xyMinMax:a}}var Kz={lineX:H($z,0),lineY:H($z,1),rect:function(t,e,n){return[[t[0][0]-n[0]*e[0][0],t[0][1]-n[0]*e[0][1]],[t[1][0]-n[1]*e[1][0],t[1][1]-n[1]*e[1][1]]]},polygon:function(t,e,n){return z(t,(function(t,i){return[t[0]-n[0]*e[i][0],t[1]-n[1]*e[i][1]]}))}};function $z(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function Jz(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var Qz,tV,eV=E,nV=Io+"toolbox-dataZoom_",iV=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){this._brushController||(this._brushController=new lL(n.getZr()),this._brushController.on("brush",W(this._onBrush,this)).mount()),function(t,e,n,i,r){var o=n._isZoomActive;i&&"takeGlobalCursor"===i.type&&(o="dataZoomSelect"===i.key&&i.dataZoomSelectActive);n._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var a=new Wz(oV(t),e,{include:["grid"]}),s=a.makePanelOpts(r,(function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"}));n._brushController.setPanels(s).enableBrush(!(!o||!s.length)&&{brushType:"auto",brushStyle:t.getModel("brushStyle").getItemStyle()})}(t,e,this,i,n),function(t,e){t.setIconStatus("back",function(t){return Bz(t).length}(e)>1?"emphasis":"normal")}(t,e)},e.prototype.onclick=function(t,e,n){rV[n].call(this)},e.prototype.remove=function(t,e){this._brushController&&this._brushController.unmount()},e.prototype.dispose=function(t,e){this._brushController&&this._brushController.dispose()},e.prototype._onBrush=function(t){var e=t.areas;if(t.isEnd&&e.length){var n={},i=this.ecModel;this._brushController.updateCovers([]),new Wz(oV(this.model),i,{include:["grid"]}).matchOutputRanges(e,i,(function(t,e,n){if("cartesian2d"===n.type){var i=t.brushType;"rect"===i?(r("x",n,e[0]),r("y",n,e[1])):r({lineX:"x",lineY:"y"}[i],n,e)}})),function(t,e){var n=Bz(t);zz(e,(function(e,i){for(var r=n.length-1;r>=0&&!n[r][i];r--);if(r<0){var o=t.queryComponents({mainType:"dataZoom",subType:"select",id:i})[0];if(o){var a=o.getPercentRange();n[0][i]={dataZoomId:i,start:a[0],end:a[1]}}}})),n.push(e)}(i,n),this._dispatchZoomAction(n)}function r(t,e,r){var o=e.getAxis(t),a=o.model,s=function(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},(function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)})),i}(t,a,i),l=s.findRepresentativeAxisProxy(a).getMinMaxSpan();null==l.minValueSpan&&null==l.maxValueSpan||(r=zk(0,r.slice(),o.scale.getExtent(),0,l.minValueSpan,l.maxValueSpan)),s&&(n[s.id]={dataZoomId:s.id,startValue:r[0],endValue:r[1]})}},e.prototype._dispatchZoomAction=function(t){var e=[];eV(t,(function(t,n){e.push(T(t))})),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},e.getDefaultOption=function(t){return{show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocaleModel().get(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}}},e}(mz),rV={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(function(t){var e=Bz(t),n=e[e.length-1];e.length>1&&e.pop();var i={};return zz(n,(function(t,n){for(var r=e.length-1;r>=0;r--)if(t=e[r][n]){i[n]=t;break}})),i}(this.ecModel))}};function oV(t){var e={xAxisIndex:t.get("xAxisIndex",!0),yAxisIndex:t.get("yAxisIndex",!0),xAxisId:t.get("xAxisId",!0),yAxisId:t.get("yAxisId",!0)};return null==e.xAxisIndex&&null==e.xAxisId&&(e.xAxisIndex="all"),null==e.yAxisIndex&&null==e.yAxisId&&(e.yAxisIndex="all"),e}Qz="dataZoom",tV=function(t){var e=t.getComponent("toolbox",0),n=["feature","dataZoom"];if(e&&null!=e.get(n)){var i=e.getModel(n),r=[],o=Fo(t,oV(i));return eV(o.xAxisModels,(function(t){return a(t,"xAxis","xAxisIndex")})),eV(o.yAxisModels,(function(t){return a(t,"yAxis","yAxisIndex")})),r}function a(t,e,n){var o=t.componentIndex,a={type:"select",$fromToolbox:!0,filterMode:i.get("filterMode",!0)||"filter",id:nV+e+o};a[n]=o,r.push(a)}},lt(null==od.get(Qz)&&tV),od.set(Qz,tV);var aV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="tooltip",e.dependencies=["axisPointer"],e.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}},e}(zp);function sV(t){var e=t.get("confine");return null!=e?!!e:"richText"===t.get("renderMode")}function lV(t){if(r.domSupported)for(var e=document.documentElement.style,n=0,i=t.length;n-1?(u+="top:50%",h+="translateY(-50%) rotate("+(a="left"===s?-225:-45)+"deg)"):(u+="left:50%",h+="translateX(-50%) rotate("+(a="top"===s?225:45)+"deg)");var c=a*Math.PI/180,p=l+r,d=p*Math.abs(Math.cos(c))+p*Math.abs(Math.sin(c)),f=e+" solid "+r+"px;";return'
'}(n,i,r)),U(t))o.innerHTML=t+a;else if(t){o.innerHTML="",Y(t)||(t=[t]);for(var s=0;s=0?this._tryShow(n,i):"leave"===e&&this._hide(i))}),this))},e.prototype._keepShow=function(){var t=this._tooltipModel,e=this._ecModel,n=this._api,i=t.get("triggerOn");if(null!=this._lastX&&null!=this._lastY&&"none"!==i&&"click"!==i){var r=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout((function(){!n.isDisposed()&&r.manuallyShowTip(t,e,n,{x:r._lastX,y:r._lastY,dataByCoordSys:r._lastDataByCoordSys})}))}},e.prototype.manuallyShowTip=function(t,e,n,i){if(i.from!==this.uid&&!r.node&&n.getDom()){var o=IV(i,n);this._ticket="";var a=i.dataByCoordSys,s=function(t,e,n){var i=Go(t).queryOptionMap,r=i.keys()[0];if(!r||"series"===r)return;var o=Yo(e,r,i.get(r),{useDefault:!1,enableAll:!1,enableNone:!1}),a=o.models[0];if(!a)return;var s,l=n.getViewOfComponentModel(a);if(l.group.traverse((function(e){var n=rl(e).tooltipConfig;if(n&&n.name===t.name)return s=e,!0})),s)return{componentMainType:r,componentIndex:a.componentIndex,el:s}}(i,e,n);if(s){var l=s.el.getBoundingRect().clone();l.applyTransform(s.el.transform),this._tryShow({offsetX:l.x+l.width/2,offsetY:l.y+l.height/2,target:s.el,position:i.position,positionDefault:"bottom"},o)}else if(i.tooltip&&null!=i.x&&null!=i.y){var u=wV;u.x=i.x,u.y=i.y,u.update(),rl(u).tooltipConfig={name:null,option:i.tooltip},this._tryShow({offsetX:i.x,offsetY:i.y,target:u},o)}else if(a)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:a,tooltipOption:i.tooltipOption},o);else if(null!=i.seriesIndex){if(this._manuallyAxisShowTip(t,e,n,i))return;var h=PN(i,e),c=h.point[0],p=h.point[1];null!=c&&null!=p&&this._tryShow({offsetX:c,offsetY:p,target:h.el,position:i.position,positionDefault:"bottom"},o)}else null!=i.x&&null!=i.y&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},o))}},e.prototype.manuallyHideTip=function(t,e,n,i){var r=this._tooltipContent;this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,i.from!==this.uid&&this._hide(IV(i,n))},e.prototype._manuallyAxisShowTip=function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=e.getSeriesByIndex(r);if(s)if("axis"===MV([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model],this._tooltipModel).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},e.prototype._tryShow=function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;if(i&&i.length)this._showAxisTooltip(i,t);else if(n){var r,o;if("legend"===rl(n).ssrType)return;this._lastDataByCoordSys=null,Oy(n,(function(t){return null!=rl(t).dataIndex?(r=t,!0):null!=rl(t).tooltipConfig?(o=t,!0):void 0}),!0),r?this._showSeriesItemTooltip(t,r,e):o?this._showComponentItemTooltip(t,o,e):this._hide(e)}else this._lastDataByCoordSys=null,this._hide(e)}},e.prototype._showOrMove=function(t,e){var n=t.get("showDelay");e=W(e,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(e,n):e()},e.prototype._showAxisTooltip=function(t,e){var n=this._ecModel,i=this._tooltipModel,r=[e.offsetX,e.offsetY],o=MV([e.tooltipOption],i),a=this._renderMode,s=[],l=og("section",{blocks:[],noHeader:!0}),u=[],h=new yg;E(t,(function(t){E(t.dataByAxis,(function(t){var e=n.getComponent(t.axisDim+"Axis",t.axisIndex),r=t.value;if(e&&null!=r){var o=fN(r,e.axis,n,t.seriesDataIndices,t.valueLabelOpt),c=og("section",{header:o,noHeader:!ut(o),sortBlocks:!0,blocks:[]});l.blocks.push(c),E(t.seriesDataIndices,(function(l){var p=n.getSeriesByIndex(l.seriesIndex),d=l.dataIndexInside,f=p.getDataParams(d);if(!(f.dataIndex<0)){f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=S_(e.axis,{value:r}),f.axisValueLabel=o,f.marker=h.makeTooltipMarker("item",Sp(f.color),a);var g=bf(p.formatTooltip(d,!0,null)),y=g.frag;if(y){var v=MV([p],i).get("valueFormatter");c.blocks.push(v?A({valueFormatter:v},y):y)}g.text&&u.push(g.text),s.push(f)}}))}}))})),l.blocks.reverse(),u.reverse();var c=e.position,p=o.get("order"),d=cg(l,h,a,p,n.get("useUTC"),o.get("textStyle"));d&&u.unshift(d);var f="richText"===a?"\n\n":"
",g=u.join(f);this._showOrMove(o,(function(){this._updateContentNotChangedOnAxis(t,s)?this._updatePosition(o,c,r[0],r[1],this._tooltipContent,s):this._showTooltipContent(o,g,s,Math.random()+"",r[0],r[1],c,null,h)}))},e.prototype._showSeriesItemTooltip=function(t,e,n){var i=this._ecModel,r=rl(e),o=r.seriesIndex,a=i.getSeriesByIndex(o),s=r.dataModel||a,l=r.dataIndex,u=r.dataType,h=s.getData(u),c=this._renderMode,p=t.positionDefault,d=MV([h.getItemModel(l),s,a&&(a.coordinateSystem||{}).model],this._tooltipModel,p?{position:p}:null),f=d.get("trigger");if(null==f||"item"===f){var g=s.getDataParams(l,u),y=new yg;g.marker=y.makeTooltipMarker("item",Sp(g.color),c);var v=bf(s.formatTooltip(l,!1,u)),m=d.get("order"),x=d.get("valueFormatter"),_=v.frag,b=_?cg(x?A({valueFormatter:x},_):_,y,c,m,i.get("useUTC"),d.get("textStyle")):v.text,w="item_"+s.name+"_"+l;this._showOrMove(d,(function(){this._showTooltipContent(d,b,g,w,t.offsetX,t.offsetY,t.position,t.target,y)})),n({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:o,from:this.uid})}},e.prototype._showComponentItemTooltip=function(t,e,n){var i="html"===this._renderMode,r=rl(e),o=r.tooltipConfig.option||{},a=o.encodeHTMLContent;if(U(o)){o={content:o,formatter:o},a=!0}a&&i&&o.content&&((o=T(o)).content=re(o.content));var s=[o],l=this._ecModel.getComponent(r.componentMainType,r.componentIndex);l&&s.push(l),s.push({formatter:o.content});var u=t.positionDefault,h=MV(s,this._tooltipModel,u?{position:u}:null),c=h.get("content"),p=Math.random()+"",d=new yg;this._showOrMove(h,(function(){var n=T(h.get("formatterParams")||{});this._showTooltipContent(h,c,n,p,t.offsetX,t.offsetY,t.position,e,d)})),n({type:"showTip",from:this.uid})},e.prototype._showTooltipContent=function(t,e,n,i,r,o,a,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent;u.setEnterable(t.get("enterable"));var h=t.get("formatter");a=a||t.get("position");var c=e,p=this._getNearestPoint([r,o],n,t.get("trigger"),t.get("borderColor")).color;if(h)if(U(h)){var d=t.ecModel.get("useUTC"),f=Y(n)?n[0]:n;c=h,f&&f.axisType&&f.axisType.indexOf("time")>=0&&(c=Jc(f.axisValue,c,d)),c=bp(c,n,!0)}else if(X(h)){var g=W((function(e,i){e===this._ticket&&(u.setContent(i,l,t,p,a),this._updatePosition(t,a,r,o,u,n,s))}),this);this._ticket=i,c=h(n,i,g)}else c=h;u.setContent(c,l,t,p,a),u.show(t,p),this._updatePosition(t,a,r,o,u,n,s)}},e.prototype._getNearestPoint=function(t,e,n,i){return"axis"===n||Y(e)?{color:i||("html"===this._renderMode?"#fff":"none")}:Y(e)?void 0:{color:i||e.color||e.borderColor}},e.prototype._updatePosition=function(t,e,n,i,r,o,a){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=r.getSize(),h=t.get("align"),c=t.get("verticalAlign"),p=a&&a.getBoundingRect().clone();if(a&&p.applyTransform(a.transform),X(e)&&(e=e([n,i],o,r.el,p,{viewSize:[s,l],contentSize:u.slice()})),Y(e))n=$r(e[0],s),i=$r(e[1],l);else if(q(e)){var d=e;d.width=u[0],d.height=u[1];var f=kp(d,{width:s,height:l});n=f.x,i=f.y,h=null,c=null}else if(U(e)&&a){var g=function(t,e,n,i){var r=n[0],o=n[1],a=Math.ceil(Math.SQRT2*i)+8,s=0,l=0,u=e.width,h=e.height;switch(t){case"inside":s=e.x+u/2-r/2,l=e.y+h/2-o/2;break;case"top":s=e.x+u/2-r/2,l=e.y-o-a;break;case"bottom":s=e.x+u/2-r/2,l=e.y+h+a;break;case"left":s=e.x-r-a,l=e.y+h/2-o/2;break;case"right":s=e.x+u+a,l=e.y+h/2-o/2}return[s,l]}(e,p,u,t.get("borderWidth"));n=g[0],i=g[1]}else{g=function(t,e,n,i,r,o,a){var s=n.getSize(),l=s[0],u=s[1];null!=o&&(t+l+o+2>i?t-=l+o:t+=o);null!=a&&(e+u+a>r?e-=u+a:e+=a);return[t,e]}(n,i,r,s,l,h?null:20,c?null:20);n=g[0],i=g[1]}if(h&&(n-=TV(h)?u[0]/2:"right"===h?u[0]:0),c&&(i-=TV(c)?u[1]/2:"bottom"===c?u[1]:0),sV(t)){g=function(t,e,n,i,r){var o=n.getSize(),a=o[0],s=o[1];return t=Math.min(t+a,i)-a,e=Math.min(e+s,r)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}(n,i,r,s,l);n=g[0],i=g[1]}r.moveTo(n,i)},e.prototype._updateContentNotChangedOnAxis=function(t,e){var n=this._lastDataByCoordSys,i=this._cbParamsList,r=!!n&&n.length===t.length;return r&&E(n,(function(n,o){var a=n.dataByAxis||[],s=(t[o]||{}).dataByAxis||[];(r=r&&a.length===s.length)&&E(a,(function(t,n){var o=s[n]||{},a=t.seriesDataIndices||[],l=o.seriesDataIndices||[];(r=r&&t.value===o.value&&t.axisType===o.axisType&&t.axisId===o.axisId&&a.length===l.length)&&E(a,(function(t,e){var n=l[e];r=r&&t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})),i&&E(t.seriesDataIndices,(function(t){var n=t.seriesIndex,o=e[n],a=i[n];o&&a&&a.data!==o.data&&(r=!1)}))}))})),this._lastDataByCoordSys=t,this._cbParamsList=e,!!r},e.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},e.prototype.dispose=function(t,e){!r.node&&e.getDom()&&(Yg(this,"_updatePosition"),this._tooltipContent.dispose(),kN("itemTooltip",e))},e.type="tooltip",e}(Ag);function MV(t,e,n){var i,r=e.ecModel;n?(i=new Cc(n,r,r),i=new Cc(e.option,i,r)):i=e;for(var o=t.length-1;o>=0;o--){var a=t[o];a&&(a instanceof Cc&&(a=a.get("tooltip",!0)),U(a)&&(a={formatter:a}),a&&(i=new Cc(a,i,r)))}return i}function IV(t,e){return t.dispatchAction||W(e.dispatchAction,e)}function TV(t){return"center"===t||"middle"===t}var CV=["rect","polygon","keep","clear"];function DV(t,e){var n=To(t?t.brush:[]);if(n.length){var i=[];E(n,(function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(i=i.concat(e))}));var r=t&&t.toolbox;Y(r)&&(r=r[0]),r||(r={feature:{}},t.toolbox=[r]);var o=r.feature||(r.feature={}),a=o.brush||(o.brush={}),s=a.type||(a.type=[]);s.push.apply(s,i),function(t){var e={};E(t,(function(t){e[t]=1})),t.length=0,E(e,(function(e,n){t.push(n)}))}(s),e&&!s.length&&s.push.apply(s,CV)}}var AV=E;function kV(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function LV(t,e,n){var i={};return AV(e,(function(e){var r,o=i[e]=((r=function(){}).prototype.__hidden=r.prototype,new r);AV(t[e],(function(t,i){if(kD.isValidType(i)){var r={type:i,visual:t};n&&n(r,e),o[i]=new kD(r),"opacity"===i&&((r=T(r)).type="colorAlpha",o.__hidden.__alphaForOpacity=new kD(r))}}))})),i}function PV(t,e,n){var i;E(n,(function(t){e.hasOwnProperty(t)&&kV(e[t])&&(i=!0)})),i&&E(n,(function(n){e.hasOwnProperty(n)&&kV(e[n])?t[n]=T(e[n]):delete t[n]}))}var OV={lineX:RV(0),lineY:RV(1),rect:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])},rect:function(t,e,n){return t&&n.boundingRect.intersect(t)}},polygon:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])&&P_(n.range,t[0],t[1])},rect:function(t,e,n){var i=n.range;if(!t||i.length<=1)return!1;var r=t.x,o=t.y,a=t.width,s=t.height,l=i[0];return!!(P_(i,r,o)||P_(i,r+a,o)||P_(i,r,o+s)||P_(i,r+a,o+s)||ze.create(t).contain(l[0],l[1])||Zh(r,o,r+a,o,i)||Zh(r,o,r,o+s,i)||Zh(r+a,o,r+a,o+s,i)||Zh(r,o+s,r+a,o+s,i))||void 0}}};function RV(t){var e=["x","y"],n=["width","height"];return{point:function(e,n,i){if(e){var r=i.range;return NV(e[t],r)}},rect:function(i,r,o){if(i){var a=o.range,s=[i[e[t]],i[e[t]]+i[n[t]]];return s[1]e[0][1]&&(e[0][1]=o[0]),o[1]e[1][1]&&(e[1][1]=o[1])}return e&&YV(e)}};function YV(t){return new ze(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var XV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new lL(e.getZr())).on("brush",W(this._onBrush,this)).mount()},e.prototype.render=function(t,e,n,i){this.model=t,this._updateController(t,e,n,i)},e.prototype.updateTransform=function(t,e,n,i){BV(e),this._updateController(t,e,n,i)},e.prototype.updateVisual=function(t,e,n,i){this.updateTransform(t,e,n,i)},e.prototype.updateView=function(t,e,n,i){this._updateController(t,e,n,i)},e.prototype._updateController=function(t,e,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},e.prototype.dispose=function(){this._brushController.dispose()},e.prototype._onBrush=function(t){var e=this.model.id,n=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:e,areas:T(n),$from:e}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:e,areas:T(n),$from:e})},e.type="brush",e}(Ag),UV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.areas=[],n.brushOption={},n}return n(e,t),e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&PV(n,t,["inBrush","outOfBrush"]);var i=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:"#ddd"},i.hasOwnProperty("liftZ")||(i.liftZ=5)},e.prototype.setAreas=function(t){t&&(this.areas=z(t,(function(t){return ZV(this.option,t)}),this))},e.prototype.setBrushOption=function(t){this.brushOption=ZV(this.option,t),this.brushType=this.brushOption.brushType},e.type="brush",e.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],e.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},e}(zp);function ZV(t,e){return C({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new Cc(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}var jV=["rect","polygon","lineX","lineY","keep","clear"],qV=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n){var i,r,o;e.eachComponent({mainType:"brush"},(function(t){i=t.brushType,r=t.brushOption.brushMode||"single",o=o||!!t.areas.length})),this._brushType=i,this._brushMode=r,E(t.get("type",!0),(function(e){t.setIconStatus(e,("keep"===e?"multiple"===r:"clear"===e?o:e===i)?"emphasis":"normal")}))},e.prototype.updateView=function(t,e,n){this.render(t,e,n)},e.prototype.getIcons=function(){var t=this.model,e=t.get("icon",!0),n={};return E(t.get("type",!0),(function(t){e[t]&&(n[t]=e[t])})),n},e.prototype.onclick=function(t,e,n){var i=this._brushType,r=this._brushMode;"clear"===n?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===n?i:i!==n&&n,brushMode:"keep"===n?"multiple"===r?"single":"multiple":r}})},e.getDefaultOption=function(t){return{show:!0,type:jV.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocaleModel().get(["toolbox","brush","title"])}},e}(mz);var KV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return n(e,t),e.type="title",e.defaultOption={z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},e}(zp),$V=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){if(this.group.removeAll(),t.get("show")){var i=this.group,r=t.getModel("textStyle"),o=t.getModel("subtextStyle"),a=t.get("textAlign"),s=rt(t.get("textBaseline"),t.get("textVerticalAlign")),l=new Xs({style:oc(r,{text:t.get("text"),fill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new Xs({style:oc(o,{text:h,fill:o.getTextColor(),y:u.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),p=t.get("link"),d=t.get("sublink"),f=t.get("triggerEvent",!0);l.silent=!p&&!f,c.silent=!d&&!f,p&&l.on("click",(function(){Mp(p,"_"+t.get("target"))})),d&&c.on("click",(function(){Mp(d,"_"+t.get("subtarget"))})),rl(l).eventData=rl(c).eventData=f?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(l),h&&i.add(c);var g=i.getBoundingRect(),y=t.getBoxLayoutParams();y.width=g.width,y.height=g.height;var v=kp(y,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));a||("middle"===(a=t.get("left")||t.get("right"))&&(a="center"),"right"===a?v.x+=v.width:"center"===a&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),i.x=v.x,i.y=v.y,i.markRedraw();var m={align:a,verticalAlign:s};l.setStyle(m),c.setStyle(m),g=i.getBoundingRect();var x=v.margin,_=t.getItemStyle(["color","opacity"]);_.fill=t.get("backgroundColor");var b=new Ws({shape:{x:g.x-x[3],y:g.y-x[0],width:g.width+x[1]+x[3],height:g.height+x[0]+x[2],r:t.get("borderRadius")},style:_,subPixelOptimize:!0,silent:!0});i.add(b)}},e.type="title",e}(Ag);var JV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode="box",n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),this._initData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this._initData()},e.prototype.setCurrentIndex=function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},e.prototype.getCurrentIndex=function(){return this.option.currentIndex},e.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},e.prototype.setPlayState=function(t){this.option.autoPlay=!!t},e.prototype.getPlayState=function(){return!!this.option.autoPlay},e.prototype._initData=function(){var t,e=this.option,n=e.data||[],i=e.axisType,r=this._names=[];"category"===i?(t=[],E(n,(function(e,n){var i,o=Ro(Ao(e),"");q(e)?(i=T(e)).value=n:i=n,t.push(i),r.push(o)}))):t=n;var o={category:"ordinal",time:"time",value:"number"}[i]||"number";(this._data=new cx([{name:"value",type:o}],this)).initData(t,r)},e.prototype.getData=function(){return this._data},e.prototype.getCategories=function(){if("category"===this.get("axisType"))return this._names.slice()},e.type="timeline",e.defaultOption={z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},e}(zp),QV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline.slider",e.defaultOption=kc(JV.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),e}(JV);R(QV,_f.prototype);var tB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline",e}(Ag),eB=function(t){function e(e,n,i,r){var o=t.call(this,e,n,i)||this;return o.type=r||"value",o}return n(e,t),e.prototype.getLabelModel=function(){return this.model.getModel("label")},e.prototype.isHorizontal=function(){return"horizontal"===this.model.get("orient")},e}(ab),nB=Math.PI,iB=Vo(),rB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.api=e},e.prototype.render=function(t,e,n){if(this.model=t,this.api=n,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var i=this._layout(t,n),r=this._createGroup("_mainGroup"),o=this._createGroup("_labelGroup"),a=this._axis=this._createAxis(i,t);t.formatTooltip=function(t){return og("nameValue",{noName:!0,value:a.scale.getLabel({value:t})})},E(["AxisLine","AxisTick","Control","CurrentPointer"],(function(e){this["_render"+e](i,r,a,t)}),this),this._renderAxisLabel(i,o,a,t),this._position(i,t)}this._doPlayStop(),this._updateTicksStatus()},e.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},e.prototype.dispose=function(){this._clearTimer()},e.prototype._layout=function(t,e){var n,i,r,o,a=t.get(["label","position"]),s=t.get("orient"),l=function(t,e){return kp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}(t,e),u={horizontal:"center",vertical:(n=null==a||"auto"===a?"horizontal"===s?l.y+l.height/2=0||"+"===n?"left":"right"},h={horizontal:n>=0||"+"===n?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:nB/2},p="vertical"===s?l.height:l.width,d=t.getModel("controlStyle"),f=d.get("show",!0),g=f?d.get("itemSize"):0,y=f?d.get("itemGap"):0,v=g+y,m=t.get(["label","rotate"])||0;m=m*nB/180;var x=d.get("position",!0),_=f&&d.get("showPlayBtn",!0),b=f&&d.get("showPrevBtn",!0),w=f&&d.get("showNextBtn",!0),S=0,M=p;"left"===x||"bottom"===x?(_&&(i=[0,0],S+=v),b&&(r=[S,0],S+=v),w&&(o=[M-g,0],M-=v)):(_&&(i=[M-g,0],M-=v),b&&(r=[0,0],S+=v),w&&(o=[M-g,0],M-=v));var I=[S,M];return t.get("inverse")&&I.reverse(),{viewRect:l,mainLength:p,orient:s,rotation:c[s],labelRotation:m,labelPosOpt:n,labelAlign:t.get(["label","align"])||u[s],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||h[s],playPosition:i,prevBtnPosition:r,nextBtnPosition:o,axisExtent:I,controlSize:g,controlGap:y}},e.prototype._position=function(t,e){var n=this._mainGroup,i=this._labelGroup,r=t.viewRect;if("vertical"===t.orient){var o=[1,0,0,1,0,0],a=r.x,s=r.y+r.height;we(o,o,[-a,-s]),Se(o,o,-nB/2),we(o,o,[a,s]),(r=r.clone()).applyTransform(o)}var l=y(r),u=y(n.getBoundingRect()),h=y(i.getBoundingRect()),c=[n.x,n.y],p=[i.x,i.y];p[0]=c[0]=l[0][0];var d,f=t.labelPosOpt;null==f||U(f)?(v(c,u,l,1,d="+"===f?0:1),v(p,h,l,1,1-d)):(v(c,u,l,1,d=f>=0?0:1),p[1]=c[1]+f);function g(t){t.originX=l[0][0]-t.x,t.originY=l[1][0]-t.y}function y(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function v(t,e,n,i,r){t[i]+=n[i][r]-e[i][r]}n.setPosition(c),i.setPosition(p),n.rotation=i.rotation=t.rotation,g(n),g(i)},e.prototype._createAxis=function(t,e){var n=e.getData(),i=e.get("axisType"),r=function(t,e){if(e=e||t.get("type"),e)switch(e){case"category":return new Rx({ordinalMeta:t.getCategories(),extent:[1/0,-1/0]});case"time":return new Kx({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new Ex}}(e,i);r.getTicks=function(){return n.mapArray(["value"],(function(t){return{value:t}}))};var o=n.getDataExtent("value");r.setExtent(o[0],o[1]),r.calcNiceTicks();var a=new eB("value",r,t.axisExtent,i);return a.model=e,a},e.prototype._createGroup=function(t){var e=this[t]=new Br;return this.group.add(e),e},e.prototype._renderAxisLine=function(t,e,n,i){var r=n.getExtent();if(i.get(["lineStyle","show"])){var o=new Ku({shape:{x1:r[0],y1:0,x2:r[1],y2:0},style:A({lineCap:"round"},i.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});e.add(o);var a=this._progressLine=new Ku({shape:{x1:r[0],x2:this._currentPointer?this._currentPointer.x:r[0],y1:0,y2:0},style:k({lineCap:"round",lineWidth:o.style.lineWidth},i.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});e.add(a)}},e.prototype._renderAxisTick=function(t,e,n,i){var r=this,o=i.getData(),a=n.scale.getTicks();this._tickSymbols=[],E(a,(function(t){var a=n.dataToCoord(t.value),s=o.getItemModel(t.value),l=s.getModel("itemStyle"),u=s.getModel(["emphasis","itemStyle"]),h=s.getModel(["progress","itemStyle"]),c={x:a,y:0,onclick:W(r._changeTimeline,r,t.value)},p=oB(s,l,e,c);p.ensureState("emphasis").style=u.getItemStyle(),p.ensureState("progress").style=h.getItemStyle(),Ul(p);var d=rl(p);s.get("tooltip")?(d.dataIndex=t.value,d.dataModel=i):d.dataIndex=d.dataModel=null,r._tickSymbols.push(p)}))},e.prototype._renderAxisLabel=function(t,e,n,i){var r=this;if(n.getLabelModel().get("show")){var o=i.getData(),a=n.getViewLabels();this._tickLabels=[],E(a,(function(i){var a=i.tickValue,s=o.getItemModel(a),l=s.getModel("label"),u=s.getModel(["emphasis","label"]),h=s.getModel(["progress","label"]),c=n.dataToCoord(i.tickValue),p=new Xs({x:c,y:0,rotation:t.labelRotation-t.rotation,onclick:W(r._changeTimeline,r,a),silent:!1,style:oc(l,{text:i.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});p.ensureState("emphasis").style=oc(u),p.ensureState("progress").style=oc(h),e.add(p),Ul(p),iB(p).dataIndex=a,r._tickLabels.push(p)}))}},e.prototype._renderControl=function(t,e,n,i){var r=t.controlSize,o=t.rotation,a=i.getModel("controlStyle").getItemStyle(),s=i.getModel(["emphasis","controlStyle"]).getItemStyle(),l=i.getPlayState(),u=i.get("inverse",!0);function h(t,n,l,u){if(t){var h=Cr(rt(i.get(["controlStyle",n+"BtnSize"]),r),r),c=function(t,e,n,i){var r=i.style,o=Uh(t.get(["controlStyle",e]),i||{},new ze(n[0],n[1],n[2],n[3]));r&&o.setStyle(r);return o}(i,n+"Icon",[0,-h/2,h,h],{x:t[0],y:t[1],originX:r/2,originY:0,rotation:u?-o:0,rectHover:!0,style:a,onclick:l});c.ensureState("emphasis").style=s,e.add(c),Ul(c)}}h(t.nextBtnPosition,"next",W(this._changeTimeline,this,u?"-":"+")),h(t.prevBtnPosition,"prev",W(this._changeTimeline,this,u?"+":"-")),h(t.playPosition,l?"stop":"play",W(this._handlePlayClick,this,!l),!0)},e.prototype._renderCurrentPointer=function(t,e,n,i){var r=i.getData(),o=i.getCurrentIndex(),a=r.getItemModel(o).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=W(s._handlePointerDrag,s),t.ondragend=W(s._handlePointerDragend,s),aB(t,s._progressLine,o,n,i,!0)},onUpdate:function(t){aB(t,s._progressLine,o,n,i)}};this._currentPointer=oB(a,a,this._mainGroup,{},this._currentPointer,l)},e.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},e.prototype._handlePointerDrag=function(t,e,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},e.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},e.prototype._pointerChangeTimeline=function(t,e){var n=this._toAxisCoord(t)[0],i=Qr(this._axis.getExtent().slice());n>i[1]&&(n=i[1]),n=0&&(a[o]=+a[o].toFixed(c)),[a,h]}var vB={min:H(yB,"min"),max:H(yB,"max"),average:H(yB,"average"),median:H(yB,"median")};function mB(t,e){if(e){var n=t.getData(),i=t.coordinateSystem,r=i&&i.dimensions;if(!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!Y(e.coord)&&Y(r)){var o=xB(e,n,i,t);if((e=T(e)).type&&vB[e.type]&&o.baseAxis&&o.valueAxis){var a=P(r,o.baseAxis.dim),s=P(r,o.valueAxis.dim),l=vB[e.type](n,o.baseDataDim,o.valueDataDim,a,s);e.coord=l[0],e.value=l[1]}else e.coord=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis]}if(null!=e.coord&&Y(r))for(var u=e.coord,h=0;h<2;h++)vB[u[h]]&&(u[h]=wB(n,n.mapDimension(r[h]),u[h]));else e.coord=[];return e}}function xB(t,e,n,i){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=n.getAxis(function(t,e){var n=t.getData().getDimensionInfo(e);return n&&n.coordDim}(i,r.valueDataDim)),r.baseAxis=n.getOtherAxis(r.valueAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim)):(r.baseAxis=i.getBaseAxis(),r.valueAxis=n.getOtherAxis(r.baseAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim),r.valueDataDim=e.mapDimension(r.valueAxis.dim)),r}function _B(t,e){return!(t&&t.containData&&e.coord&&!gB(e))||t.containData(e.coord)}function bB(t,e){return t?function(t,n,i,r){return If(r<2?t.coord&&t.coord[r]:t.value,e[r])}:function(t,n,i,r){return If(t.value,e[r])}}function wB(t,e,n){if("average"===n){var i=0,r=0;return t.each(e,(function(t,e){isNaN(t)||(i+=t,r++)})),i/r}return"median"===n?t.getMedian(e):t.getDataExtent(e)["max"===n?1:0]}var SB=Vo(),MB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this.markerGroupMap=yt()},e.prototype.render=function(t,e,n){var i=this,r=this.markerGroupMap;r.each((function(t){SB(t).keep=!1})),e.eachSeries((function(t){var r=dB.getMarkerModelFromSeries(t,i.type);r&&i.renderSeries(t,r,e,n)})),r.each((function(t){!SB(t).keep&&i.group.remove(t.group)}))},e.prototype.markKeep=function(t){SB(t).keep=!0},e.prototype.toggleBlurSeries=function(t,e){var n=this;E(t,(function(t){var i=dB.getMarkerModelFromSeries(t,n.type);i&&i.getData().eachItemGraphicEl((function(t){t&&(e?Nl(t):El(t))}))}))},e.type="marker",e}(Ag);function IB(t,e,n){var i=e.coordinateSystem;t.each((function(r){var o,a=t.getItemModel(r),s=$r(a.get("x"),n.getWidth()),l=$r(a.get("y"),n.getHeight());if(isNaN(s)||isNaN(l)){if(e.getMarkerPosition)o=e.getMarkerPosition(t.getValues(t.dimensions,r));else if(i){var u=t.get(i.dimensions[0],r),h=t.get(i.dimensions[1],r);o=i.dataToPoint([u,h])}}else o=[s,l];isNaN(s)||(o[0]=s),isNaN(l)||(o[1]=l),t.setItemLayout(r,o)}))}var TB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=dB.getMarkerModelFromSeries(t,"markPoint");e&&(IB(e.getData(),t,n),this.markerGroupMap.get(t.id).updateLayout())}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new xS),u=function(t,e,n){var i;i=t?z(t&&t.dimensions,(function(t){return A(A({},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{}),{name:t,ordinalMeta:null})})):[{name:"value",type:"float"}];var r=new cx(i,n),o=z(n.get("data"),H(mB,e));t&&(o=B(o,H(_B,t)));var a=bB(!!t,i);return r.initData(o,null,a),r}(r,t,e);e.setData(u),IB(e.getData(),t,i),u.each((function(t){var n=u.getItemModel(t),i=n.getShallow("symbol"),r=n.getShallow("symbolSize"),o=n.getShallow("symbolRotate"),s=n.getShallow("symbolOffset"),l=n.getShallow("symbolKeepAspect");if(X(i)||X(r)||X(o)||X(s)){var h=e.getRawValue(t),c=e.getDataParams(t);X(i)&&(i=i(h,c)),X(r)&&(r=r(h,c)),X(o)&&(o=o(h,c)),X(s)&&(s=s(h,c))}var p=n.getModel("itemStyle").getItemStyle(),d=Ay(a,"color");p.fill||(p.fill=d),u.setItemVisual(t,{symbol:i,symbolSize:r,symbolRotate:o,symbolOffset:s,symbolKeepAspect:l,style:p})})),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl((function(t){t.traverse((function(t){rl(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markPoint",e}(MB);var CB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markLine",e.defaultOption={z:5,symbol:["circle","arrow"],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"},e}(dB),DB=Vo(),AB=function(t,e,n,i){var r,o=t.getData();if(Y(i))r=i;else{var a=i.type;if("min"===a||"max"===a||"average"===a||"median"===a||null!=i.xAxis||null!=i.yAxis){var s=void 0,l=void 0;if(null!=i.yAxis||null!=i.xAxis)s=e.getAxis(null!=i.yAxis?"y":"x"),l=it(i.yAxis,i.xAxis);else{var u=xB(i,o,e,t);s=u.valueAxis,l=wB(o,xx(o,u.valueDataDim),a)}var h="x"===s.dim?0:1,c=1-h,p=T(i),d={coord:[]};p.type=null,p.coord=[],p.coord[c]=-1/0,d.coord[c]=1/0;var f=n.get("precision");f>=0&&j(l)&&(l=+l.toFixed(Math.min(f,20))),p.coord[h]=d.coord[h]=l,r=[p,d,{type:a,valueIndex:i.valueIndex,value:l}]}else r=[]}var g=[mB(t,r[0]),mB(t,r[1]),A({},r[2])];return g[2].type=g[2].type||null,C(g[2],g[0]),C(g[2],g[1]),g};function kB(t){return!isNaN(t)&&!isFinite(t)}function LB(t,e,n,i){var r=1-t,o=i.dimensions[t];return kB(e[r])&&kB(n[r])&&e[t]===n[t]&&i.getAxis(o).containData(e[t])}function PB(t,e){if("cartesian2d"===t.type){var n=e[0].coord,i=e[1].coord;if(n&&i&&(LB(1,n,i,t)||LB(0,n,i,t)))return!0}return _B(t,e[0])&&_B(t,e[1])}function OB(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=$r(s.get("x"),r.getWidth()),u=$r(s.get("y"),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(t.dimensions,e));else{var h=a.dimensions,c=t.get(h[0],e),p=t.get(h[1],e);o=a.dataToPoint([c,p])}if(OS(a,"cartesian2d")){var d=a.getAxis("x"),f=a.getAxis("y");h=a.dimensions;kB(t.get(h[0],e))?o[0]=d.toGlobalCoord(d.getExtent()[n?0:1]):kB(t.get(h[1],e))&&(o[1]=f.toGlobalCoord(f.getExtent()[n?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];t.setItemLayout(e,o)}var RB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=dB.getMarkerModelFromSeries(t,"markLine");if(e){var i=e.getData(),r=DB(e).from,o=DB(e).to;r.each((function(e){OB(r,e,!0,t,n),OB(o,e,!1,t,n)})),i.each((function(t){i.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])})),this.markerGroupMap.get(t.id).updateLayout()}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new YA);this.group.add(l.group);var u=function(t,e,n){var i;i=t?z(t&&t.dimensions,(function(t){return A(A({},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{}),{name:t,ordinalMeta:null})})):[{name:"value",type:"float"}];var r=new cx(i,n),o=new cx(i,n),a=new cx([],n),s=z(n.get("data"),H(AB,e,t,n));t&&(s=B(s,H(PB,t)));var l=bB(!!t,i);return r.initData(z(s,(function(t){return t[0]})),null,l),o.initData(z(s,(function(t){return t[1]})),null,l),a.initData(z(s,(function(t){return t[2]}))),a.hasItemOption=!0,{from:r,to:o,line:a}}(r,t,e),h=u.from,c=u.to,p=u.line;DB(e).from=h,DB(e).to=c,e.setData(p);var d=e.get("symbol"),f=e.get("symbolSize"),g=e.get("symbolRotate"),y=e.get("symbolOffset");function v(e,n,r){var o=e.getItemModel(n);OB(e,n,r,t,i);var s=o.getModel("itemStyle").getItemStyle();null==s.fill&&(s.fill=Ay(a,"color")),e.setItemVisual(n,{symbolKeepAspect:o.get("symbolKeepAspect"),symbolOffset:rt(o.get("symbolOffset",!0),y[r?0:1]),symbolRotate:rt(o.get("symbolRotate",!0),g[r?0:1]),symbolSize:rt(o.get("symbolSize"),f[r?0:1]),symbol:rt(o.get("symbol",!0),d[r?0:1]),style:s})}Y(d)||(d=[d,d]),Y(f)||(f=[f,f]),Y(g)||(g=[g,g]),Y(y)||(y=[y,y]),u.from.each((function(t){v(h,t,!0),v(c,t,!1)})),p.each((function(t){var e=p.getItemModel(t).getModel("lineStyle").getLineStyle();p.setItemLayout(t,[h.getItemLayout(t),c.getItemLayout(t)]),null==e.stroke&&(e.stroke=h.getItemVisual(t,"style").fill),p.setItemVisual(t,{fromSymbolKeepAspect:h.getItemVisual(t,"symbolKeepAspect"),fromSymbolOffset:h.getItemVisual(t,"symbolOffset"),fromSymbolRotate:h.getItemVisual(t,"symbolRotate"),fromSymbolSize:h.getItemVisual(t,"symbolSize"),fromSymbol:h.getItemVisual(t,"symbol"),toSymbolKeepAspect:c.getItemVisual(t,"symbolKeepAspect"),toSymbolOffset:c.getItemVisual(t,"symbolOffset"),toSymbolRotate:c.getItemVisual(t,"symbolRotate"),toSymbolSize:c.getItemVisual(t,"symbolSize"),toSymbol:c.getItemVisual(t,"symbol"),style:e})})),l.updateData(p),u.line.eachItemGraphicEl((function(t){rl(t).dataModel=e,t.traverse((function(t){rl(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markLine",e}(MB);var NB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markArea",e.defaultOption={z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},e}(dB),EB=Vo(),zB=function(t,e,n,i){var r=i[0],o=i[1];if(r&&o){var a=mB(t,r),s=mB(t,o),l=a.coord,u=s.coord;l[0]=it(l[0],-1/0),l[1]=it(l[1],-1/0),u[0]=it(u[0],1/0),u[1]=it(u[1],1/0);var h=D([{},a,s]);return h.coord=[a.coord,s.coord],h.x0=a.x,h.y0=a.y,h.x1=s.x,h.y1=s.y,h}};function VB(t){return!isNaN(t)&&!isFinite(t)}function BB(t,e,n,i){var r=1-t;return VB(e[r])&&VB(n[r])}function FB(t,e){var n=e.coord[0],i=e.coord[1],r={coord:n,x:e.x0,y:e.y0},o={coord:i,x:e.x1,y:e.y1};return OS(t,"cartesian2d")?!(!n||!i||!BB(1,n,i)&&!BB(0,n,i))||function(t,e,n){return!(t&&t.containZone&&e.coord&&n.coord&&!gB(e)&&!gB(n))||t.containZone(e.coord,n.coord)}(t,r,o):_B(t,r)||_B(t,o)}function GB(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=$r(s.get(n[0]),r.getWidth()),u=$r(s.get(n[1]),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition){var h=t.getValues(["x0","y0"],e),c=t.getValues(["x1","y1"],e),p=a.clampData(h),d=a.clampData(c),f=[];"x0"===n[0]?f[0]=p[0]>d[0]?c[0]:h[0]:f[0]=p[0]>d[0]?h[0]:c[0],"y0"===n[1]?f[1]=p[1]>d[1]?c[1]:h[1]:f[1]=p[1]>d[1]?h[1]:c[1],o=i.getMarkerPosition(f,n,!0)}else{var g=[m=t.get(n[0],e),x=t.get(n[1],e)];a.clampData&&a.clampData(g,g),o=a.dataToPoint(g,!0)}if(OS(a,"cartesian2d")){var y=a.getAxis("x"),v=a.getAxis("y"),m=t.get(n[0],e),x=t.get(n[1],e);VB(m)?o[0]=y.toGlobalCoord(y.getExtent()["x0"===n[0]?0:1]):VB(x)&&(o[1]=v.toGlobalCoord(v.getExtent()["y0"===n[1]?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];return o}var WB=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],HB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=dB.getMarkerModelFromSeries(t,"markArea");if(e){var i=e.getData();i.each((function(e){var r=z(WB,(function(r){return GB(i,e,r,t,n)}));i.setItemLayout(e,r),i.getItemGraphicEl(e).setShape("points",r)}))}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,{group:new Br});this.group.add(l.group),this.markKeep(l);var u=function(t,e,n){var i,r,o=["x0","y0","x1","y1"];if(t){var a=z(t&&t.dimensions,(function(t){var n=e.getData();return A(A({},n.getDimensionInfo(n.mapDimension(t))||{}),{name:t,ordinalMeta:null})}));r=z(o,(function(t,e){return{name:t,type:a[e%2].type}})),i=new cx(r,n)}else i=new cx(r=[{name:"value",type:"float"}],n);var s=z(n.get("data"),H(zB,e,t,n));t&&(s=B(s,H(FB,t)));var l=t?function(t,e,n,i){return If(t.coord[Math.floor(i/2)][i%2],r[i])}:function(t,e,n,i){return If(t.value,r[i])};return i.initData(s,null,l),i.hasItemOption=!0,i}(r,t,e);e.setData(u),u.each((function(e){var n=z(WB,(function(n){return GB(u,e,n,t,i)})),o=r.getAxis("x").scale,s=r.getAxis("y").scale,l=o.getExtent(),h=s.getExtent(),c=[o.parse(u.get("x0",e)),o.parse(u.get("x1",e))],p=[s.parse(u.get("y0",e)),s.parse(u.get("y1",e))];Qr(c),Qr(p);var d=!!(l[0]>c[1]||l[1]p[1]||h[1]=0},e.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},e.type="legend.plain",e.dependencies=["series"],e.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},e}(zp),XB=H,UB=E,ZB=Br,jB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.newlineDisabled=!1,n}return n(e,t),e.prototype.init=function(){this.group.add(this._contentGroup=new ZB),this.group.add(this._selectorGroup=new ZB),this._isFirstRender=!0},e.prototype.getContentGroup=function(){return this._contentGroup},e.prototype.getSelectorGroup=function(){return this._selectorGroup},e.prototype.render=function(t,e,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var r=t.get("align"),o=t.get("orient");r&&"auto"!==r||(r="right"===t.get("left")&&"vertical"===o?"right":"left");var a=t.get("selector",!0),s=t.get("selectorPosition",!0);!a||s&&"auto"!==s||(s="horizontal"===o?"end":"start"),this.renderInner(r,t,e,n,a,o,s);var l=t.getBoxLayoutParams(),u={width:n.getWidth(),height:n.getHeight()},h=t.get("padding"),c=kp(l,u,h),p=this.layoutInner(t,r,c,i,a,s),d=kp(k({width:p.width,height:p.height},l),u,h);this.group.x=d.x-p.x,this.group.y=d.y-p.y,this.group.markRedraw(),this.group.add(this._backgroundEl=Sz(p,t))}},e.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},e.prototype.renderInner=function(t,e,n,i,r,o,a){var s=this.getContentGroup(),l=yt(),u=e.get("selectedMode"),h=[];n.eachRawSeries((function(t){!t.get("legendHoverLink")&&h.push(t.id)})),UB(e.getData(),(function(r,o){var a=r.get("name");if(!this.newlineDisabled&&(""===a||"\n"===a)){var c=new ZB;return c.newline=!0,void s.add(c)}var p=n.getSeriesByName(a)[0];if(!l.get(a)){if(p){var d=p.getData(),f=d.getVisual("legendLineStyle")||{},g=d.getVisual("legendIcon"),y=d.getVisual("style"),v=this._createItem(p,a,o,r,e,t,f,y,g,u,i);v.on("click",XB(qB,a,null,i,h)).on("mouseover",XB($B,p.name,null,i,h)).on("mouseout",XB(JB,p.name,null,i,h)),n.ssr&&v.eachChild((function(t){var e=rl(t);e.seriesIndex=p.seriesIndex,e.dataIndex=o,e.ssrType="legend"})),l.set(a,!0)}else n.eachRawSeries((function(s){if(!l.get(a)&&s.legendVisualProvider){var c=s.legendVisualProvider;if(!c.containName(a))return;var p=c.indexOfName(a),d=c.getItemVisual(p,"style"),f=c.getItemVisual(p,"legendIcon"),g=qn(d.fill);g&&0===g[3]&&(g[3]=.2,d=A(A({},d),{fill:ri(g,"rgba")}));var y=this._createItem(s,a,o,r,e,t,{},d,f,u,i);y.on("click",XB(qB,null,a,i,h)).on("mouseover",XB($B,null,a,i,h)).on("mouseout",XB(JB,null,a,i,h)),n.ssr&&y.eachChild((function(t){var e=rl(t);e.seriesIndex=s.seriesIndex,e.dataIndex=o,e.ssrType="legend"})),l.set(a,!0)}}),this);0}}),this),r&&this._createSelector(r,e,i,o,a)},e.prototype._createSelector=function(t,e,n,i,r){var o=this.getSelectorGroup();UB(t,(function(t){var i=t.type,r=new Xs({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:"all"===i?"legendAllSelect":"legendInverseSelect"})}});o.add(r),ic(r,{normal:e.getModel("selectorLabel"),emphasis:e.getModel(["emphasis","selectorLabel"])},{defaultText:t.title}),Ul(r)}))},e.prototype._createItem=function(t,e,n,i,r,o,a,s,l,u,h){var c=t.visualDrawType,p=r.get("itemWidth"),d=r.get("itemHeight"),f=r.isSelected(e),g=i.get("symbolRotate"),y=i.get("symbolKeepAspect"),v=i.get("icon"),m=function(t,e,n,i,r,o,a){function s(t,e){"auto"===t.lineWidth&&(t.lineWidth=e.lineWidth>0?2:0),UB(t,(function(n,i){"inherit"===t[i]&&(t[i]=e[i])}))}var l=e.getModel("itemStyle"),u=l.getItemStyle(),h=0===t.lastIndexOf("empty",0)?"fill":"stroke",c=l.getShallow("decal");u.decal=c&&"inherit"!==c?mv(c,a):i.decal,"inherit"===u.fill&&(u.fill=i[r]);"inherit"===u.stroke&&(u.stroke=i[h]);"inherit"===u.opacity&&(u.opacity=("fill"===r?i:n).opacity);s(u,i);var p=e.getModel("lineStyle"),d=p.getLineStyle();if(s(d,n),"auto"===u.fill&&(u.fill=i.fill),"auto"===u.stroke&&(u.stroke=i.fill),"auto"===d.stroke&&(d.stroke=i.fill),!o){var f=e.get("inactiveBorderWidth"),g=u[h];u.lineWidth="auto"===f?i.lineWidth>0&&g?2:0:u.lineWidth,u.fill=e.get("inactiveColor"),u.stroke=e.get("inactiveBorderColor"),d.stroke=p.get("inactiveColor"),d.lineWidth=p.get("inactiveWidth")}return{itemStyle:u,lineStyle:d}}(l=v||l||"roundRect",i,a,s,c,f,h),x=new ZB,_=i.getModel("textStyle");if(!X(t.getLegendIcon)||v&&"inherit"!==v){var b="inherit"===v&&t.getData().getVisual("symbol")?"inherit"===g?t.getData().getVisual("symbolRotate"):g:0;x.add(function(t){var e=t.icon||"roundRect",n=Xy(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill,t.symbolKeepAspect);n.setStyle(t.itemStyle),n.rotation=(t.iconRotate||0)*Math.PI/180,n.setOrigin([t.itemWidth/2,t.itemHeight/2]),e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2);return n}({itemWidth:p,itemHeight:d,icon:l,iconRotate:b,itemStyle:m.itemStyle,lineStyle:m.lineStyle,symbolKeepAspect:y}))}else x.add(t.getLegendIcon({itemWidth:p,itemHeight:d,icon:l,iconRotate:g,itemStyle:m.itemStyle,lineStyle:m.lineStyle,symbolKeepAspect:y}));var w="left"===o?p+5:-5,S=o,M=r.get("formatter"),I=e;U(M)&&M?I=M.replace("{name}",null!=e?e:""):X(M)&&(I=M(e));var T=f?_.getTextColor():i.get("inactiveColor");x.add(new Xs({style:oc(_,{text:I,x:w,y:d/2,fill:T,align:S,verticalAlign:"middle"},{inheritColor:T})}));var C=new Ws({shape:x.getBoundingRect(),style:{fill:"transparent"}}),D=i.getModel("tooltip");return D.get("show")&&Kh({el:C,componentModel:r,itemName:e,itemTooltipOption:D.option}),x.add(C),x.eachChild((function(t){t.silent=!0})),C.silent=!u,this.getContentGroup().add(x),Ul(x),x.__legendDataIndex=n,x},e.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getContentGroup(),s=this.getSelectorGroup();Ap(t.get("orient"),a,t.get("itemGap"),n.width,n.height);var l=a.getBoundingRect(),u=[-l.x,-l.y];if(s.markRedraw(),a.markRedraw(),r){Ap("horizontal",s,t.get("selectorItemGap",!0));var h=s.getBoundingRect(),c=[-h.x,-h.y],p=t.get("selectorButtonGap",!0),d=t.getOrient().index,f=0===d?"width":"height",g=0===d?"height":"width",y=0===d?"y":"x";"end"===o?c[d]+=l[f]+p:u[d]+=h[f]+p,c[1-d]+=l[g]/2-h[g]/2,s.x=c[0],s.y=c[1],a.x=u[0],a.y=u[1];var v={x:0,y:0};return v[f]=l[f]+p+h[f],v[g]=Math.max(l[g],h[g]),v[y]=Math.min(0,h[y]+c[1-d]),v}return a.x=u[0],a.y=u[1],this.group.getBoundingRect()},e.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},e.type="legend.plain",e}(Ag);function qB(t,e,n,i){JB(t,e,n,i),n.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),$B(t,e,n,i)}function KB(t){for(var e,n=t.getZr().storage.getDisplayList(),i=0,r=n.length;in[r],f=[-c.x,-c.y];e||(f[i]=l[s]);var g=[0,0],y=[-p.x,-p.y],v=rt(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?y[i]+=n[r]-p[r]:g[i]+=p[r]+v);y[1-i]+=c[o]/2-p[o]/2,l.setPosition(f),u.setPosition(g),h.setPosition(y);var m={x:0,y:0};if(m[r]=d?n[r]:c[r],m[o]=Math.max(c[o],p[o]),m[a]=Math.min(0,p[a]+y[1-i]),u.__rectSize=n[r],d){var x={x:0,y:0};x[r]=Math.max(n[r]-p[r]-v,0),x[o]=m[o],u.setClipPath(new Ws({shape:x})),u.__rectSize=x[r]}else h.eachChild((function(t){t.attr({invisible:!0,silent:!0})}));var _=this._getPageInfo(t);return null!=_.pageIndex&&vh(l,{x:_.contentPosition[0],y:_.contentPosition[1]},d?t:null),this._updatePageInfoView(t,_),m},e.prototype._pageGo=function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},e.prototype._updatePageInfoView=function(t,e){var n=this._controllerGroup;E(["pagePrev","pageNext"],(function(i){var r=null!=e[i+"DataIndex"],o=n.childOfName(i);o&&(o.setStyle("fill",r?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),o.cursor=r?"pointer":"default")}));var i=n.childOfName("pageText"),r=t.get("pageFormatter"),o=e.pageIndex,a=null!=o?o+1:0,s=e.pageCount;i&&r&&i.setStyle("text",U(r)?r.replace("{current}",null==a?"":a+"").replace("{total}",null==s?"":s+""):r({current:a,total:s}))},e.prototype._getPageInfo=function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=t.getOrient().index,o=oF[r],a=aF[r],s=this._findTargetItemIndex(e),l=n.children(),u=l[s],h=l.length,c=h?1:0,p={contentPosition:[n.x,n.y],pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return p;var d=m(u);p.contentPosition[r]=-d.s;for(var f=s+1,g=d,y=d,v=null;f<=h;++f)(!(v=m(l[f]))&&y.e>g.s+i||v&&!x(v,g.s))&&(g=y.i>g.i?y:v)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=g.i),++p.pageCount),y=v;for(f=s-1,g=d,y=d,v=null;f>=-1;--f)(v=m(l[f]))&&x(y,v.s)||!(g.i=e&&t.s<=e+i}},e.prototype._findTargetItemIndex=function(t){return this._showController?(this.getContentGroup().eachChild((function(i,r){var o=i.__legendDataIndex;null==n&&null!=o&&(n=r),o===t&&(e=r)})),null!=e?e:n):0;var e,n},e.type="legend.scroll",e}(jB);function lF(t){Vm(eF),t.registerComponentModel(nF),t.registerComponentView(sF),function(t){t.registerAction("legendScroll","legendscroll",(function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},(function(t){t.setScrollDataIndex(n)}))}))}(t)}var uF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.inside",e.defaultOption=kc(az.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),e}(az),hF=Vo();function cF(t,e,n){hF(t).coordSysRecordMap.each((function(t){var i=t.dataZoomInfoMap.get(e.uid);i&&(i.getRange=n)}))}function pF(t,e){if(e){t.removeKey(e.model.uid);var n=e.controller;n&&n.dispose()}}function dF(t,e){t.isDisposed()||t.dispatchAction({type:"dataZoom",animation:{easing:"cubicOut",duration:100},batch:e})}function fF(t,e,n,i){return t.coordinateSystem.containPoint([n,i])}function gF(t){t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,(function(t,e){var n=hF(e),i=n.coordSysRecordMap||(n.coordSysRecordMap=yt());i.each((function(t){t.dataZoomInfoMap=null})),t.eachComponent({mainType:"dataZoom",subType:"inside"},(function(t){E(rz(t).infoList,(function(n){var r=n.model.uid,o=i.get(r)||i.set(r,function(t,e){var n={model:e,containsPoint:H(fF,e),dispatchAction:H(dF,t),dataZoomInfoMap:null,controller:null},i=n.controller=new nT(t.getZr());return E(["pan","zoom","scrollMove"],(function(t){i.on(t,(function(e){var i=[];n.dataZoomInfoMap.each((function(r){if(e.isAvailableBehavior(r.model.option)){var o=(r.getRange||{})[t],a=o&&o(r.dzReferCoordSysInfo,n.model.mainType,n.controller,e);!r.model.get("disabled",!0)&&a&&i.push({dataZoomId:r.model.id,start:a[0],end:a[1]})}})),i.length&&n.dispatchAction(i)}))})),n}(e,n.model));(o.dataZoomInfoMap||(o.dataZoomInfoMap=yt())).set(t.uid,{dzReferCoordSysInfo:n,model:t,getRange:null})}))})),i.each((function(t){var e,n=t.controller,r=t.dataZoomInfoMap;if(r){var o=r.keys()[0];null!=o&&(e=r.get(o))}if(e){var a=function(t){var e,n="type_",i={type_true:2,type_move:1,type_false:0,type_undefined:-1},r=!0;return t.each((function(t){var o=t.model,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i[n+a]>i[n+e]&&(e=a),r=r&&o.get("preventDefaultMouseMove",!0)})),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!r}}}(r);n.enable(a.controlType,a.opt),n.setPointerChecker(t.containsPoint),Hg(t,"dispatchAction",e.model.get("throttle",!0),"fixRate")}else pF(i,t)}))}))}var yF=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataZoom.inside",e}return n(e,t),e.prototype.render=function(e,n,i){t.prototype.render.apply(this,arguments),e.noTarget()?this._clear():(this.range=e.getPercentRange(),cF(i,e,{pan:W(vF.pan,this),zoom:W(vF.zoom,this),scrollMove:W(vF.scrollMove,this)}))},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){!function(t,e){for(var n=hF(t).coordSysRecordMap,i=n.keys(),r=0;r0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(o[1]-o[0])+o[0],u=Math.max(1/i.scale,0);o[0]=(o[0]-l)*u+l,o[1]=(o[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return zk(0,o,[0,100],0,h.minSpan,h.maxSpan),this.range=o,r[0]!==o[0]||r[1]!==o[1]?o:void 0}},pan:mF((function(t,e,n,i,r,o){var a=xF[i]([o.oldX,o.oldY],[o.newX,o.newY],e,r,n);return a.signal*(t[1]-t[0])*a.pixel/a.pixelLength})),scrollMove:mF((function(t,e,n,i,r,o){return xF[i]([0,0],[o.scrollDelta,o.scrollDelta],e,r,n).signal*(t[1]-t[0])*o.scrollDelta}))};function mF(t){return function(e,n,i,r){var o=this.range,a=o.slice(),s=e.axisModels[0];if(s)return zk(t(a,s,e,n,i,r),a,[0,100],"all"),this.range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}}var xF={grid:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a},polar:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===n.mainType?(a.pixel=e[0]-t[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=o.inverse?-1:1),a},singleAxis:function(t,e,n,i,r){var o=n.axis,a=r.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===o.orient?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s}};function _F(t){yz(t),t.registerComponentModel(uF),t.registerComponentView(yF),gF(t)}var bF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.slider",e.layoutMode="box",e.defaultOption=kc(az.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),e}(az),wF=Ws,SF="horizontal",MF="vertical",IF=["line","bar","candlestick","scatter"],TF={easing:"cubicOut",duration:100,delay:0},CF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._displayables={},n}return n(e,t),e.prototype.init=function(t,e){this.api=e,this._onBrush=W(this._onBrush,this),this._onBrushEnd=W(this._onBrushEnd,this)},e.prototype.render=function(e,n,i,r){if(t.prototype.render.apply(this,arguments),Hg(this,"_dispatchZoomAction",e.get("throttle"),"fixRate"),this._orient=e.getOrient(),!1!==e.get("show")){if(e.noTarget())return this._clear(),void this.group.removeAll();r&&"dataZoom"===r.type&&r.from===this.uid||this._buildView(),this._updateView()}else this.group.removeAll()},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){Yg(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},e.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var e=this._displayables.sliderGroup=new Br;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},e.prototype._resetLocation=function(){var t=this.dataZoomModel,e=this.api,n=t.get("brushSelect")?7:0,i=this._findCoordRect(),r={width:e.getWidth(),height:e.getHeight()},o=this._orient===SF?{right:r.width-i.x-i.width,top:r.height-30-7-n,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},a=Rp(t.option);E(["right","top","width","height"],(function(t){"ph"===a[t]&&(a[t]=o[t])}));var s=kp(a,r);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===MF&&this._size.reverse()},e.prototype._positionGroup=function(){var t=this.group,e=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),r=i&&i.get("inverse"),o=this._displayables.sliderGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(n!==SF||r?n===SF&&r?{scaleY:a?1:-1,scaleX:-1}:n!==MF||r?{scaleY:a?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:a?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:a?1:-1,scaleX:1});var s=t.getBoundingRect([o]);t.x=e.x-s.x,t.y=e.y-s.y,t.markRedraw()},e.prototype._getViewExtent=function(){return[0,this._size[0]]},e.prototype._renderBackground=function(){var t=this.dataZoomModel,e=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect");n.add(new wF({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var r=new wF({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:W(this._onClickPanel,this)}),o=this.api.getZr();i?(r.on("mousedown",this._onBrushStart,this),r.cursor="crosshair",o.on("mousemove",this._onBrush),o.on("mouseup",this._onBrushEnd)):(o.off("mousemove",this._onBrush),o.off("mouseup",this._onBrushEnd)),n.add(r)},e.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],t){var e=this._size,n=this._shadowSize||[],i=t.series,r=i.getRawData(),o=i.getShadowDim&&i.getShadowDim(),a=o&&r.getDimensionInfo(o)?i.getShadowDim():t.otherDim;if(null!=a){var s=this._shadowPolygonPts,l=this._shadowPolylinePts;if(r!==this._shadowData||a!==this._shadowDim||e[0]!==n[0]||e[1]!==n[1]){var u=r.getDataExtent(a),h=.3*(u[1]-u[0]);u=[u[0]-h,u[1]+h];var c,p=[0,e[1]],d=[0,e[0]],f=[[e[0],0],[0,0]],g=[],y=d[1]/(r.count()-1),v=0,m=Math.round(r.count()/e[0]);r.each([a],(function(t,e){if(m>0&&e%m)v+=y;else{var n=null==t||isNaN(t)||""===t,i=n?0:Kr(t,u,p,!0);n&&!c&&e?(f.push([f[f.length-1][0],0]),g.push([g[g.length-1][0],0])):!n&&c&&(f.push([v,0]),g.push([v,0])),f.push([v,i]),g.push([v,i]),v+=y,c=n}})),s=this._shadowPolygonPts=f,l=this._shadowPolylinePts=g}this._shadowData=r,this._shadowDim=a,this._shadowSize=[e[0],e[1]];for(var x=this.dataZoomModel,_=0;_<3;_++){var b=w(1===_);this._displayables.sliderGroup.add(b),this._displayables.dataShadowSegs.push(b)}}}function w(t){var e=x.getModel(t?"selectedDataBackground":"dataBackground"),n=new Br,i=new Xu({shape:{points:s},segmentIgnoreThreshold:1,style:e.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),r=new Zu({shape:{points:l},segmentIgnoreThreshold:1,style:e.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return n.add(i),n.add(r),n}},e.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var n,i=this.ecModel;return t.eachTargetAxis((function(r,o){E(t.getAxisProxy(r,o).getTargetSeriesModels(),(function(t){if(!(n||!0!==e&&P(IF,t.get("type"))<0)){var a,s=i.getComponent(nz(r),o).axis,l=function(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}(r),u=t.coordinateSystem;null!=l&&u.getOtherAxis&&(a=u.getOtherAxis(s).inverse),l=t.getData().mapDimension(l),n={thisAxis:s,series:t,thisDim:r,otherDim:l,otherAxisInverse:a}}}),this)}),this),n}},e.prototype._renderHandle=function(){var t=this.group,e=this._displayables,n=e.handles=[null,null],i=e.handleLabels=[null,null],r=this._displayables.sliderGroup,o=this._size,a=this.dataZoomModel,s=this.api,l=a.get("borderRadius")||0,u=a.get("brushSelect"),h=e.filler=new wF({silent:u,style:{fill:a.get("fillerColor")},textConfig:{position:"inside"}});r.add(h),r.add(new wF({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:o[0],height:o[1],r:l},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),E([0,1],(function(e){var o=a.get("handleIcon");!Wy[o]&&o.indexOf("path://")<0&&o.indexOf("image://")<0&&(o="path://"+o);var s=Xy(o,-1,0,2,2,null,!0);s.attr({cursor:DF(this._orient),draggable:!0,drift:W(this._onDragMove,this,e),ondragend:W(this._onDragEnd,this),onmouseover:W(this._showDataInfo,this,!0),onmouseout:W(this._showDataInfo,this,!1),z2:5});var l=s.getBoundingRect(),u=a.get("handleSize");this._handleHeight=$r(u,this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,s.setStyle(a.getModel("handleStyle").getItemStyle()),s.style.strokeNoScale=!0,s.rectHover=!0,s.ensureState("emphasis").style=a.getModel(["emphasis","handleStyle"]).getItemStyle(),Ul(s);var h=a.get("handleColor");null!=h&&(s.style.fill=h),r.add(n[e]=s);var c=a.getModel("textStyle");t.add(i[e]=new Xs({silent:!0,invisible:!0,style:oc(c,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:c.getTextColor(),font:c.getFont()}),z2:10}))}),this);var c=h;if(u){var p=$r(a.get("moveHandleSize"),o[1]),d=e.moveHandle=new Ws({style:a.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:o[1]-.5,height:p}}),f=.8*p,g=e.moveHandleIcon=Xy(a.get("moveHandleIcon"),-f/2,-f/2,f,f,"#fff",!0);g.silent=!0,g.y=o[1]+p/2-.5,d.ensureState("emphasis").style=a.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var y=Math.min(o[1]/2,Math.max(p,10));(c=e.moveZone=new Ws({invisible:!0,shape:{y:o[1]-y,height:p+y}})).on("mouseover",(function(){s.enterEmphasis(d)})).on("mouseout",(function(){s.leaveEmphasis(d)})),r.add(d),r.add(g),r.add(c)}c.attr({draggable:!0,cursor:DF(this._orient),drift:W(this._onDragMove,this,"all"),ondragstart:W(this._showDataInfo,this,!0),ondragend:W(this._onDragEnd,this),onmouseover:W(this._showDataInfo,this,!0),onmouseout:W(this._showDataInfo,this,!1)})},e.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[Kr(t[0],[0,100],e,!0),Kr(t[1],[0,100],e,!0)]},e.prototype._updateInterval=function(t,e){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),a=[0,100];zk(e,i,r,n.get("zoomLock")?"all":t,null!=o.minSpan?Kr(o.minSpan,a,r,!0):null,null!=o.maxSpan?Kr(o.maxSpan,a,r,!0):null);var s=this._range,l=this._range=Qr([Kr(i[0],r,a,!0),Kr(i[1],r,a,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},e.prototype._updateView=function(t){var e=this._displayables,n=this._handleEnds,i=Qr(n.slice()),r=this._size;E([0,1],(function(t){var i=e.handles[t],o=this._handleHeight;i.attr({scaleX:o/2,scaleY:o/2,x:n[t]+(t?-1:1),y:r[1]/2-o/2})}),this),e.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]});var o={x:i[0],width:i[1]-i[0]};e.moveHandle&&(e.moveHandle.setShape(o),e.moveZone.setShape(o),e.moveZone.getBoundingRect(),e.moveHandleIcon&&e.moveHandleIcon.attr("x",o.x+o.width/2));for(var a=e.dataShadowSegs,s=[0,i[0],i[1],r[0]],l=0;le[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&this._dispatchZoomAction(!1)}},e.prototype._onBrushStart=function(t){var e=t.offsetX,n=t.offsetY;this._brushStart=new De(e,n),this._brushing=!0,this._brushStartTime=+new Date},e.prototype._onBrushEnd=function(t){if(this._brushing){var e=this._displayables.brushRect;if(this._brushing=!1,e){e.attr("ignore",!0);var n=e.shape;if(!(+new Date-this._brushStartTime<200&&Math.abs(n.width)<5)){var i=this._getViewExtent(),r=[0,100];this._range=Qr([Kr(n.x,i,r,!0),Kr(n.x+n.width,i,r,!0)]),this._handleEnds=[n.x,n.x+n.width],this._updateView(),this._dispatchZoomAction(!1)}}}},e.prototype._onBrush=function(t){this._brushing&&(de(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},e.prototype._updateBrushRect=function(t,e){var n=this._displayables,i=this.dataZoomModel,r=n.brushRect;r||(r=n.brushRect=new wF({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(r)),r.attr("ignore",!1);var o=this._brushStart,a=this._displayables.sliderGroup,s=a.transformCoordToLocal(t,e),l=a.transformCoordToLocal(o.x,o.y),u=this._size;s[0]=Math.max(Math.min(u[0],s[0]),0),r.setShape({x:l[0],y:0,width:s[0]-l[0],height:u[1]})},e.prototype._dispatchZoomAction=function(t){var e=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?TF:null,start:e[0],end:e[1]})},e.prototype._findCoordRect=function(){var t,e=rz(this.dataZoomModel).infoList;if(!t&&e.length){var n=e[0].model.coordinateSystem;t=n.getRect&&n.getRect()}if(!t){var i=this.api.getWidth(),r=this.api.getHeight();t={x:.2*i,y:.2*r,width:.6*i,height:.6*r}}return t},e.type="dataZoom.slider",e}(uz);function DF(t){return"vertical"===t?"ns-resize":"ew-resize"}function AF(t){t.registerComponentModel(bF),t.registerComponentView(CF),yz(t)}var kF=function(t,e,n){var i=T((LF[t]||{})[e]);return n&&Y(i)?i[i.length-1]:i},LF={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},PF=kD.mapVisual,OF=kD.eachVisual,RF=Y,NF=E,EF=Qr,zF=Kr,VF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.stateList=["inRange","outOfRange"],n.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],n.layoutMode={type:"box",ignoreSize:!0},n.dataBound=[-1/0,1/0],n.targetVisuals={},n.controllerVisuals={},n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&PV(n,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},e.prototype.resetVisual=function(t){var e=this.stateList;t=W(t,this),this.controllerVisuals=LV(this.option.controller,e,t),this.targetVisuals=LV(this.option.target,e,t)},e.prototype.getItemSymbol=function(){return null},e.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries((function(t,n){e.push(n)})):e=To(t),e},e.prototype.eachTargetSeries=function(t,e){E(this.getTargetSeriesIndices(),(function(n){var i=this.ecModel.getSeriesByIndex(n);i&&t.call(e,i)}),this)},e.prototype.isTargetSeries=function(t){var e=!1;return this.eachTargetSeries((function(n){n===t&&(e=!0)})),e},e.prototype.formatValueText=function(t,e,n){var i,r=this.option,o=r.precision,a=this.dataBound,s=r.formatter;n=n||["<",">"],Y(t)&&(t=t.slice(),i=!0);var l=e?t:i?[u(t[0]),u(t[1])]:u(t);return U(s)?s.replace("{value}",i?l[0]:l).replace("{value2}",i?l[1]:l):X(s)?i?s(t[0],t[1]):s(t):i?t[0]===a[0]?n[0]+" "+l[1]:t[1]===a[1]?n[1]+" "+l[0]:l[0]+" - "+l[1]:l;function u(t){return t===a[0]?"min":t===a[1]?"max":(+t).toFixed(Math.min(o,20))}},e.prototype.resetExtent=function(){var t=this.option,e=EF([t.min,t.max]);this._dataExtent=e},e.prototype.getDataDimensionIndex=function(t){var e=this.option.dimension;if(null!=e)return t.getDimensionIndex(e);for(var n=t.dimensions,i=n.length-1;i>=0;i--){var r=n[i],o=t.getDimensionInfo(r);if(!o.isCalculationCoord)return o.storeDimIndex}},e.prototype.getExtent=function(){return this._dataExtent.slice()},e.prototype.completeVisualOption=function(){var t=this.ecModel,e=this.option,n={inRange:e.inRange,outOfRange:e.outOfRange},i=e.target||(e.target={}),r=e.controller||(e.controller={});C(i,n),C(r,n);var o=this.isCategory();function a(n){RF(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice().reverse()}),n.inRange=n.inRange||{color:t.get("gradientColor")}}a.call(this,i),a.call(this,r),function(t,e,n){var i=t[e],r=t[n];i&&!r&&(r=t[n]={},NF(i,(function(t,e){if(kD.isValidType(e)){var n=kF(e,"inactive",o);null!=n&&(r[e]=n,"color"!==e||r.hasOwnProperty("opacity")||r.hasOwnProperty("colorAlpha")||(r.opacity=[0,0]))}})))}.call(this,i,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,i=this.get("inactiveColor"),r=this.getItemSymbol()||"roundRect";NF(this.stateList,(function(a){var s=this.itemSize,l=t[a];l||(l=t[a]={color:o?i:[i]}),null==l.symbol&&(l.symbol=e&&T(e)||(o?r:[r])),null==l.symbolSize&&(l.symbolSize=n&&T(n)||(o?s[0]:[s[0],s[0]])),l.symbol=PF(l.symbol,(function(t){return"none"===t?r:t}));var u=l.symbolSize;if(null!=u){var h=-1/0;OF(u,(function(t){t>h&&(h=t)})),l.symbolSize=PF(u,(function(t){return zF(t,[0,h],[0,s[0]],!0)}))}}),this)}.call(this,r)},e.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},e.prototype.isCategory=function(){return!!this.option.categories},e.prototype.setSelected=function(t){},e.prototype.getSelected=function(){return null},e.prototype.getValueState=function(t){return null},e.prototype.getVisualMeta=function(t){return null},e.type="visualMap",e.dependencies=["series"],e.defaultOption={show:!0,z:4,seriesIndex:"all",min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,textStyle:{color:"#333"}},e}(zp),BF=[20,140],FF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual((function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()})),this._resetRange()},e.prototype.resetItemSize=function(){t.prototype.resetItemSize.apply(this,arguments);var e=this.itemSize;(null==e[0]||isNaN(e[0]))&&(e[0]=BF[0]),(null==e[1]||isNaN(e[1]))&&(e[1]=BF[1])},e.prototype._resetRange=function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):Y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},e.prototype.completeVisualOption=function(){t.prototype.completeVisualOption.apply(this,arguments),E(this.stateList,(function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=e[1]/3)}),this)},e.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},e.prototype.getSelected=function(){var t=this.getExtent(),e=Qr((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=n[1]||t<=e[1])?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[];return this.eachTargetSeries((function(n){var i=[],r=n.getData();r.each(this.getDataDimensionIndex(r),(function(e,n){t[0]<=e&&e<=t[1]&&i.push(n)}),this),e.push({seriesId:n.id,dataIndex:i})}),this),e},e.prototype.getVisualMeta=function(t){var e=GF(this,"outOfRange",this.getExtent()),n=GF(this,"inRange",this.option.range.slice()),i=[];function r(e,n){i.push({value:e,color:t(e,n)})}for(var o=0,a=0,s=n.length,l=e.length;at[1])break;n.push({color:this.getControllerVisual(o,"color",e),offset:r/100})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},e.prototype._createBarPoints=function(t,e){var n=this.visualMapModel.itemSize;return[[n[0]-e[0],t[0]],[n[0],t[0]],[n[0],t[1]],[n[0]-e[1],t[1]]]},e.prototype._createBarGroup=function(t){var e=this._orient,n=this.visualMapModel.get("inverse");return new Br("horizontal"!==e||n?"horizontal"===e&&n?{scaleX:"bottom"===t?-1:1,rotation:-Math.PI/2}:"vertical"!==e||n?{scaleX:"left"===t?1:-1}:{scaleX:"left"===t?1:-1,scaleY:-1}:{scaleX:"bottom"===t?1:-1,rotation:Math.PI/2})},e.prototype._updateHandle=function(t,e){if(this._useHandle){var n=this._shapes,i=this.visualMapModel,r=n.handleThumbs,o=n.handleLabels,a=i.itemSize,s=i.getExtent();ZF([0,1],(function(l){var u=r[l];u.setStyle("fill",e.handlesColor[l]),u.y=t[l];var h=UF(t[l],[0,a[1]],s,!0),c=this.getControllerVisual(h,"symbolSize");u.scaleX=u.scaleY=c/a[0],u.x=a[0]-c/2;var p=Fh(n.handleLabelPoints[l],Bh(u,this.group));o[l].setStyle({x:p[0],y:p[1],text:i.formatValueText(this._dataInterval[l]),verticalAlign:"middle",align:"vertical"===this._orient?this._applyTransform("left",n.mainGroup):"center"})}),this)}},e.prototype._showIndicator=function(t,e,n,i){var r=this.visualMapModel,o=r.getExtent(),a=r.itemSize,s=[0,a[1]],l=this._shapes,u=l.indicator;if(u){u.attr("invisible",!1);var h=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0}),c=this.getControllerVisual(t,"symbolSize"),p=UF(t,o,s,!0),d=a[0]-c/2,f={x:u.x,y:u.y};u.y=p,u.x=d;var g=Fh(l.indicatorLabelPoint,Bh(u,this.group)),y=l.indicatorLabel;y.attr("invisible",!1);var v=this._applyTransform("left",l.mainGroup),m="horizontal"===this._orient;y.setStyle({text:(n||"")+r.formatValueText(e),verticalAlign:m?v:"middle",align:m?"center":v});var x={x:d,y:p,style:{fill:h}},_={style:{x:g[0],y:g[1]}};if(r.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var b={duration:100,easing:"cubicInOut",additive:!0};u.x=f.x,u.y=f.y,u.animateTo(x,b),y.animateTo(_,b)}else u.attr(x),y.attr(_);this._firstShowIndicator=!1;var w=this._shapes.handleLabels;if(w)for(var S=0;Sr[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",a):u[1]===1/0?this._showIndicator(l,u[0],"> ",a):this._showIndicator(l,l,"≈ ",a));var h=this._hoverLinkDataIndices,c=[];(e||JF(n))&&(c=this._hoverLinkDataIndices=n.findTargetDataIndices(u));var p=function(t,e){var n={},i={};return r(t||[],n),r(e||[],i,n),[o(n),o(i)];function r(t,e,n){for(var i=0,r=t.length;i=0&&(r.dimension=o,i.push(r))}})),t.getData().setVisual("visualMeta",i)}}];function iG(t,e,n,i){for(var r=e.targetVisuals[i],o=kD.prepareVisualTypes(r),a={color:Ay(t.getData(),"color")},s=0,l=o.length;s0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})),t.registerAction(tG,eG),E(nG,(function(e){t.registerVisual(t.PRIORITY.VISUAL.COMPONENT,e)})),t.registerPreprocessor(oG))}function uG(t){t.registerComponentModel(FF),t.registerComponentView(KF),lG(t)}var hG=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._pieceList=[],n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var i=this._mode=this._determineMode();this._pieceList=[],cG[this._mode].call(this,this._pieceList),this._resetSelected(e,n);var r=this.option.categories;this.resetVisual((function(t,e){"categories"===i?(t.mappingMethod="category",t.categories=T(r)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=z(this._pieceList,(function(t){return t=T(t),"inRange"!==e&&(t.visual=null),t})))}))},e.prototype.completeVisualOption=function(){var e=this.option,n={},i=kD.listVisualTypes(),r=this.isCategory();function o(t,e,n){return t&&t[e]&&t[e].hasOwnProperty(n)}E(e.pieces,(function(t){E(i,(function(e){t.hasOwnProperty(e)&&(n[e]=1)}))})),E(n,(function(t,n){var i=!1;E(this.stateList,(function(t){i=i||o(e,t,n)||o(e.target,t,n)}),this),!i&&E(this.stateList,(function(t){(e[t]||(e[t]={}))[n]=kF(n,"inRange"===t?"active":"inactive",r)}))}),this),t.prototype.completeVisualOption.apply(this,arguments)},e.prototype._resetSelected=function(t,e){var n=this.option,i=this._pieceList,r=(e?n:t).selected||{};if(n.selected=r,E(i,(function(t,e){var n=this.getSelectedMapKey(t);r.hasOwnProperty(n)||(r[n]=!0)}),this),"single"===n.selectedMode){var o=!1;E(i,(function(t,e){var n=this.getSelectedMapKey(t);r[n]&&(o?r[n]=!1:o=!0)}),this)}},e.prototype.getItemSymbol=function(){return this.get("itemSymbol")},e.prototype.getSelectedMapKey=function(t){return"categories"===this._mode?t.value+"":t.index+""},e.prototype.getPieceList=function(){return this._pieceList},e.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},e.prototype.setSelected=function(t){this.option.selected=T(t)},e.prototype.getValueState=function(t){var e=kD.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[],n=this._pieceList;return this.eachTargetSeries((function(i){var r=[],o=i.getData();o.each(this.getDataDimensionIndex(o),(function(e,i){kD.findPieceIndex(e,n)===t&&r.push(i)}),this),e.push({seriesId:i.id,dataIndex:r})}),this),e},e.prototype.getRepresentValue=function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var n=t.interval||[];e=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return e},e.prototype.getVisualMeta=function(t){if(!this.isCategory()){var e=[],n=["",""],i=this,r=this._pieceList.slice();if(r.length){var o=r[0].interval[0];o!==-1/0&&r.unshift({interval:[-1/0,o]}),(o=r[r.length-1].interval[1])!==1/0&&r.push({interval:[o,1/0]})}else r.push({interval:[-1/0,1/0]});var a=-1/0;return E(r,(function(t){var e=t.interval;e&&(e[0]>a&&s([a,e[0]],"outOfRange"),s(e.slice()),a=e[1])}),this),{stops:e,outerColors:n}}function s(r,o){var a=i.getRepresentValue({interval:r});o||(o=i.getValueState(a));var s=t(a,o);r[0]===-1/0?n[0]=s:r[1]===1/0?n[1]=s:e.push({value:r[0],color:s},{value:r[1],color:s})}},e.type="visualMap.piecewise",e.defaultOption=kc(VF.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),e}(VF),cG={splitNumber:function(t){var e=this.option,n=Math.min(e.precision,20),i=this.getExtent(),r=e.splitNumber;r=Math.max(parseInt(r,10),1),e.splitNumber=r;for(var o=(i[1]-i[0])/r;+o.toFixed(n)!==o&&n<5;)n++;e.precision=n,o=+o.toFixed(n),e.minOpen&&t.push({interval:[-1/0,i[0]],close:[0,0]});for(var a=0,s=i[0];a","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,n)}),this)}};function pG(t,e){var n=t.inverse;("vertical"===t.orient?!n:n)&&e.reverse()}var dG=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.doRender=function(){var t=this.group;t.removeAll();var e=this.visualMapModel,n=e.get("textGap"),i=e.textStyleModel,r=i.getFont(),o=i.getTextColor(),a=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=it(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,a),E(l.viewPieceList,(function(i){var l=i.piece,u=new Br;u.onclick=W(this._onItemClick,this,l),this._enableHoverLink(u,i.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var p=this.visualMapModel.getValueState(c);u.add(new Xs({style:{x:"right"===a?-n:s[0]+n,y:s[1]/2,text:l.text,verticalAlign:"middle",align:a,font:r,fill:o,opacity:"outOfRange"===p?.5:1}}))}t.add(u)}),this),u&&this._renderEndsText(t,u[1],s,h,a),Ap(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},e.prototype._enableHoverLink=function(t,e){var n=this;t.on("mouseover",(function(){return i("highlight")})).on("mouseout",(function(){return i("downplay")}));var i=function(t){var i=n.visualMapModel;i.option.hoverLink&&n.api.dispatchAction({type:t,batch:XF(i.findTargetDataIndices(e),i)})}},e.prototype._getItemAlign=function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return YF(t,this.api,t.itemSize);var n=e.align;return n&&"auto"!==n||(n="left"),n},e.prototype._renderEndsText=function(t,e,n,i,r){if(e){var o=new Br,a=this.visualMapModel.textStyleModel;o.add(new Xs({style:oc(a,{x:i?"right"===r?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?r:"center",text:e})})),t.add(o)}},e.prototype._getViewData=function(){var t=this.visualMapModel,e=z(t.getPieceList(),(function(t,e){return{piece:t,indexInModelPieceList:e}})),n=t.get("text"),i=t.get("orient"),r=t.get("inverse");return("horizontal"===i?r:!r)?e.reverse():n&&(n=n.slice().reverse()),{viewPieceList:e,endsText:n}},e.prototype._createItemSymbol=function(t,e,n){t.add(Xy(this.getControllerVisual(e,"symbol"),n[0],n[1],n[2],n[3],this.getControllerVisual(e,"color")))},e.prototype._onItemClick=function(t){var e=this.visualMapModel,n=e.option,i=n.selectedMode;if(i){var r=T(n.selected),o=e.getSelectedMapKey(t);"single"===i||!0===i?(r[o]=!0,E(r,(function(t,e){r[e]=e===o}))):r[o]=!r[o],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:r})}},e.type="visualMap.piecewise",e}(WF);function fG(t){t.registerComponentModel(hG),t.registerComponentView(dG),lG(t)}var gG={label:{enabled:!0},decal:{show:!1}},yG=Vo(),vG={};function mG(t,e){var n=t.getModel("aria");if(n.get("enabled")){var i=T(gG);C(i.label,t.getLocaleModel().get("aria"),!1),C(n.option,i,!1),function(){if(n.getModel("decal").get("show")){var e=yt();t.eachSeries((function(t){if(!t.isColorBySeries()){var n=e.get(t.type);n||(n={},e.set(t.type,n)),yG(t).scope=n}})),t.eachRawSeries((function(e){if(!t.isSeriesFiltered(e))if(X(e.enableAriaDecal))e.enableAriaDecal();else{var n=e.getData();if(e.isColorBySeries()){var i=pd(e.ecModel,e.name,vG,t.getSeriesCount()),r=n.getVisual("decal");n.setVisual("decal",u(r,i))}else{var o=e.getRawData(),a={},s=yG(e).scope;n.each((function(t){var e=n.getRawIndex(t);a[e]=t}));var l=o.count();o.each((function(t){var i=a[t],r=o.getName(t)||t+"",h=pd(e.ecModel,r,s,l),c=n.getItemVisual(i,"decal");n.setItemVisual(i,"decal",u(c,h))}))}}function u(t,e){var n=t?A(A({},e),t):e;return n.dirty=!0,n}}))}}(),function(){var i=e.getZr().dom;if(!i)return;var o=t.getLocaleModel().get("aria"),a=n.getModel("label");if(a.option=k(a.option,o),!a.get("enabled"))return;if(a.get("description"))return void i.setAttribute("aria-label",a.get("description"));var s,l=t.getSeriesCount(),u=a.get(["data","maxCount"])||10,h=a.get(["series","maxCount"])||10,c=Math.min(l,h);if(l<1)return;var p=function(){var e=t.get("title");e&&e.length&&(e=e[0]);return e&&e.text}();s=p?r(a.get(["general","withTitle"]),{title:p}):a.get(["general","withoutTitle"]);var d=[];s+=r(l>1?a.get(["series","multiple","prefix"]):a.get(["series","single","prefix"]),{seriesCount:l}),t.eachSeries((function(e,n){if(n1?a.get(["series","multiple",o]):a.get(["series","single",o]),{seriesId:e.seriesIndex,seriesName:e.get("name"),seriesType:(x=e.subType,_=t.getLocaleModel().get(["series","typeNames"]),_[x]||_.chart)});var s=e.getData();if(s.count()>u)i+=r(a.get(["data","partialData"]),{displayCnt:u});else i+=a.get(["data","allData"]);for(var h=a.get(["data","separator","middle"]),p=a.get(["data","separator","end"]),f=[],g=0;g":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},bG=function(){function t(t){if(null==(this._condVal=U(t)?new RegExp(t):et(t)?t:null)){var e="";0,wo(e)}}return t.prototype.evaluate=function(t){var e=typeof t;return U(e)?this._condVal.test(t):!!j(e)&&this._condVal.test(t+"")},t}(),wG=function(){function t(){}return t.prototype.evaluate=function(){return this.value},t}(),SG=function(){function t(){}return t.prototype.evaluate=function(){for(var t=this.children,e=0;e2&&l.push(e),e=[t,n]}function f(t,n,i,r){EG(t,i)&&EG(n,r)||e.push(t,n,i,r,i,r)}function g(t,n,i,r,o,a){var s=Math.abs(n-t),l=4*Math.tan(s/4)/3,u=nM:C2&&l.push(e),l}function VG(t,e,n,i,r,o,a,s,l,u){if(EG(t,n)&&EG(e,i)&&EG(r,a)&&EG(o,s))l.push(a,s);else{var h=2/u,c=h*h,p=a-t,d=s-e,f=Math.sqrt(p*p+d*d);p/=f,d/=f;var g=n-t,y=i-e,v=r-a,m=o-s,x=g*g+y*y,_=v*v+m*m;if(x=0&&_-w*w=0)l.push(a,s);else{var S=[],M=[];wn(t,n,r,a,.5,S),wn(e,i,o,s,.5,M),VG(S[0],M[0],S[1],M[1],S[2],M[2],S[3],M[3],l,u),VG(S[4],M[4],S[5],M[5],S[6],M[6],S[7],M[7],l,u)}}}}function BG(t,e,n){var i=t[e],r=t[1-e],o=Math.abs(i/r),a=Math.ceil(Math.sqrt(o*n)),s=Math.floor(n/a);0===s&&(s=1,a=n);for(var l=[],u=0;u0)for(u=0;uMath.abs(u),c=BG([l,u],h?0:1,e),p=(h?s:u)/c.length,d=0;d1?null:new De(d*l+t,d*u+e)}function HG(t,e,n){var i=new De;De.sub(i,n,e),i.normalize();var r=new De;return De.sub(r,t,e),r.dot(i)}function YG(t,e){var n=t[t.length-1];n&&n[0]===e[0]&&n[1]===e[1]||t.push(e)}function XG(t){var e=t.points,n=[],i=[];Ba(e,n,i);var r=new ze(n[0],n[1],i[0]-n[0],i[1]-n[1]),o=r.width,a=r.height,s=r.x,l=r.y,u=new De,h=new De;return o>a?(u.x=h.x=s+o/2,u.y=l,h.y=l+a):(u.y=h.y=l+a/2,u.x=s,h.x=s+o),function(t,e,n){for(var i=t.length,r=[],o=0;or,a=BG([i,r],o?0:1,e),s=o?"width":"height",l=o?"height":"width",u=o?"x":"y",h=o?"y":"x",c=t[s]/a.length,p=0;p0)for(var b=i/n,w=-i/2;w<=i/2;w+=b){var S=Math.sin(w),M=Math.cos(w),I=0;for(x=0;x0;l/=2){var u=0,h=0;(t&l)>0&&(u=1),(e&l)>0&&(h=1),s+=l*l*(3*u^h),0===h&&(1===u&&(t=l-1-t,e=l-1-e),a=t,t=e,e=a)}return s}function lW(t){var e=1/0,n=1/0,i=-1/0,r=-1/0,o=z(t,(function(t){var o=t.getBoundingRect(),a=t.getComputedTransform(),s=o.x+o.width/2+(a?a[4]:0),l=o.y+o.height/2+(a?a[5]:0);return e=Math.min(s,e),n=Math.min(l,n),i=Math.max(s,i),r=Math.max(l,r),[s,l]}));return z(o,(function(o,a){return{cp:o,z:sW(o[0],o[1],e,n,i,r),path:t[a]}})).sort((function(t,e){return t.z-e.z})).map((function(t){return t.path}))}function uW(t){return jG(t.path,t.count)}function hW(t){return Y(t[0])}function cW(t,e){for(var n=[],i=t.length,r=0;r=0;r--)if(!n[r].many.length){var l=n[s].many;if(l.length<=1){if(!s)return n;s=0}o=l.length;var u=Math.ceil(o/2);n[r].many=l.slice(u,o),n[s].many=l.slice(0,u),s++}return n}var pW={clone:function(t){for(var e=[],n=1-Math.pow(1-t.path.style.opacity,1/t.count),i=0;i0){var s,l,u=i.getModel("universalTransition").get("delay"),h=Object.assign({setToFinal:!0},a);hW(t)&&(s=t,l=e),hW(e)&&(s=e,l=t);for(var c=s?s===t:t.length>e.length,p=s?cW(l,s):cW(c?e:t,[c?t:e]),d=0,f=0;f1e4))for(var r=n.getIndices(),o=0;o0&&i.group.traverse((function(t){t instanceof ks&&!t.animators.length&&t.animateFrom({style:{opacity:0}},r)}))}))}function SW(t){var e=t.getModel("universalTransition").get("seriesKey");return e||t.id}function MW(t){return Y(t)?t.sort().join(","):t}function IW(t){if(t.hostModel)return t.hostModel.getModel("universalTransition").get("divideShape")}function TW(t,e){for(var n=0;n=0&&r.push({dataGroupId:e.oldDataGroupIds[n],data:e.oldData[n],divide:IW(e.oldData[n]),groupIdDim:t.dimension})})),E(To(t.to),(function(t){var i=TW(n.updatedSeries,t);if(i>=0){var r=n.updatedSeries[i].getData();o.push({dataGroupId:e.oldDataGroupIds[i],data:r,divide:IW(r),groupIdDim:t.dimension})}})),r.length>0&&o.length>0&&wW(r,o,i)}(t,i,n,e)}));else{var o=function(t,e){var n=yt(),i=yt(),r=yt();return E(t.oldSeries,(function(e,n){var o=t.oldDataGroupIds[n],a=t.oldData[n],s=SW(e),l=MW(s);i.set(l,{dataGroupId:o,data:a}),Y(s)&&E(s,(function(t){r.set(t,{key:l,dataGroupId:o,data:a})}))})),E(e.updatedSeries,(function(t){if(t.isUniversalTransitionEnabled()&&t.isAnimationEnabled()){var e=t.get("dataGroupId"),o=t.getData(),a=SW(t),s=MW(a),l=i.get(s);if(l)n.set(s,{oldSeries:[{dataGroupId:l.dataGroupId,divide:IW(l.data),data:l.data}],newSeries:[{dataGroupId:e,divide:IW(o),data:o}]});else if(Y(a)){var u=[];E(a,(function(t){var e=i.get(t);e.data&&u.push({dataGroupId:e.dataGroupId,divide:IW(e.data),data:e.data})})),u.length&&n.set(s,{oldSeries:u,newSeries:[{dataGroupId:e,data:o,divide:IW(o)}]})}else{var h=r.get(a);if(h){var c=n.get(h.key);c||(c={oldSeries:[{dataGroupId:h.dataGroupId,data:h.data,divide:IW(h.data)}],newSeries:[]},n.set(h.key,c)),c.newSeries.push({dataGroupId:e,data:o,divide:IW(o)})}}}})),n}(i,n);E(o.keys(),(function(t){var n=o.get(t);wW(n.oldSeries,n.newSeries,e)}))}E(n.updatedSeries,(function(t){t[_g]&&(t[_g]=!1)}))}for(var a=t.getSeries(),s=i.oldSeries=[],l=i.oldDataGroupIds=[],u=i.oldData=[],h=0;h=7&&v(t),null==a&&(a=p(e,n,u)),w(a,r)},l=function(t,r){for(var e=-1;e<=7;e+=1)if(!(t+e<=-1||i<=t+e))for(var n=-1;n<=7;n+=1)r+n<=-1||i<=r+n||(o[t+e][r+n]=0<=e&&e<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==e||6==e)||2<=e&&e<=4&&2<=n&&n<=4)},h=function(){for(var t=8;t>n&1);o[Math.floor(n/3)][n%3+i-8-3]=a}for(n=0;n<18;n+=1){a=!t&&1==(r>>n&1);o[n%3+i-8-3][Math.floor(n/3)]=a}},d=function(t,r){for(var e=n<<3|r,a=B.getBCHTypeInfo(e),u=0;u<15;u+=1){var f=!t&&1==(a>>u&1);u<6?o[u][8]=f:u<8?o[u+1][8]=f:o[i-15+u][8]=f}for(u=0;u<15;u+=1){f=!t&&1==(a>>u&1);u<8?o[8][i-u-1]=f:u<9?o[8][15-u-1+1]=f:o[8][15-u-1]=f}o[i-8][8]=!t},w=function(t,r){for(var e=-1,n=i-1,a=7,u=0,f=B.getMaskFunction(r),c=i-1;c>0;c-=2)for(6==c&&(c-=1);;){for(var g=0;g<2;g+=1)if(null==o[n][c-g]){var l=!1;u>>a&1)),f(n,c-g)&&(l=!l),o[n][c-g]=l,-1==(a-=1)&&(u+=1,a=7)}if((n+=e)<0||i<=n){n-=e,e=-e;break}}},p=function(t,r,e){for(var n=A.getRSBlocks(t,r),o=b(),i=0;i8*u)throw"code length overflow. ("+o.getLengthInBits()+">"+8*u+")";for(o.getLengthInBits()+4<=8*u&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(!1);for(;!(o.getLengthInBits()>=8*u||(o.put(236,8),o.getLengthInBits()>=8*u));)o.put(17,8);return function(t,r){for(var e=0,n=0,o=0,i=new Array(r.length),a=new Array(r.length),u=0;u=0?h.getAt(s):0}}var v=0;for(g=0;gn)&&(t=n,r=e)}return r}())},f.createTableTag=function(t,r){t=t||2;var e="";e+='',e+="";for(var n=0;n";for(var o=0;o';e+=""}return e+="",e+="
"},f.createSvgTag=function(t,r,e,n){var o={};"object"==typeof arguments[0]&&(t=(o=arguments[0]).cellSize,r=o.margin,e=o.alt,n=o.title),t=t||2,r=void 0===r?4*t:r,(e="string"==typeof e?{text:e}:e||{}).text=e.text||null,e.id=e.text?e.id||"qrcode-description":null,(n="string"==typeof n?{text:n}:n||{}).text=n.text||null,n.id=n.text?n.id||"qrcode-title":null;var i,a,u,c,g=f.getModuleCount()*t+2*r,l="";for(c="l"+t+",0 0,"+t+" -"+t+",0 0,-"+t+"z ",l+=''+y(n.text)+"":"",l+=e.text?''+y(e.text)+"":"",l+='',l+='":r+=">";break;case"&":r+="&";break;case'"':r+=""";break;default:r+=n}}return r};return f.createASCII=function(t,r){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var r,e,n,o,i,a=1*f.getModuleCount()+2*t,u=t,c=a-t,g={"██":"█","█ ":"▀"," █":"▄"," ":" "},l={"██":"▀","█ ":"▀"," █":" "," ":" "},h="";for(r=0;r=c?l[i]:g[i];h+="\n"}return a%2&&t>0?h.substring(0,h.length-a-1)+Array(a+1).join("▀"):h.substring(0,h.length-1)}(r);t-=1,r=void 0===r?2*t:r;var e,n,o,i,a=f.getModuleCount()*t+2*r,u=r,c=a-r,g=Array(t+1).join("██"),l=Array(t+1).join(" "),h="",s="";for(e=0;e>>8),r.push(255&a)):r.push(n)}}return r}};var r,e,n,o,i,a=1,u=2,f=4,c=8,g={L:1,M:0,Q:3,H:2},l=0,h=1,s=2,v=3,d=4,w=5,p=6,y=7,B=(r=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],e=1335,n=7973,i=function(t){for(var r=0;0!=t;)r+=1,t>>>=1;return r},(o={}).getBCHTypeInfo=function(t){for(var r=t<<10;i(r)-i(e)>=0;)r^=e<=0;)r^=n<5&&(e+=3+i-5)}for(n=0;n=256;)r-=255;return t[r]}};return n}();function k(t,r){if(void 0===t.length)throw t.length+"/"+r;var e=function(){for(var e=0;e>>7-r%8&1)},put:function(t,r){for(var n=0;n>>r-n-1&1))},getLengthInBits:function(){return r},putBit:function(e){var n=Math.floor(r/8);t.length<=n&&t.push(0),e&&(t[n]|=128>>>r%8),r+=1}};return e},M=function(t){var r=a,e=t,n={getMode:function(){return r},getLength:function(t){return e.length},write:function(t){for(var r=e,n=0;n+2>>8&255)+(255&n),t.put(n,13),e+=2}if(e>>8)},writeBytes:function(t,e,n){e=e||0,n=n||t.length;for(var o=0;o0&&(r+=","),r+=t[e];return r+="]"}};return r},S=function(t){var r=t,e=0,n=0,o=0,i={read:function(){for(;o<8;){if(e>=r.length){if(0==o)return-1;throw"unexpected end of file./"+o}var t=r.charAt(e);if(e+=1,"="==t)return o=0,-1;t.match(/^\s$/)||(n=n<<6|a(t.charCodeAt(0)),o+=6)}var i=n>>>o-8&255;return o-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw"c:"+t};return i},I=function(t,r,e){for(var n=function(t,r){var e=t,n=r,o=new Array(t*r),i={setPixel:function(t,r,n){o[r*e+t]=n},write:function(t){t.writeString("GIF87a"),t.writeShort(e),t.writeShort(n),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(","),t.writeShort(0),t.writeShort(0),t.writeShort(e),t.writeShort(n),t.writeByte(0);var r=a(2);t.writeByte(2);for(var o=0;r.length-o>255;)t.writeByte(255),t.writeBytes(r,o,255),o+=255;t.writeByte(r.length-o),t.writeBytes(r,o,r.length-o),t.writeByte(0),t.writeString(";")}},a=function(t){for(var r=1<>>r!=0)throw"length over";for(;c+r>=8;)f.writeByte(255&(t<>>=8-c,g=0,c=0;g|=t<0&&f.writeByte(g)}});h.write(r,n);var s=0,v=String.fromCharCode(o[s]);for(s+=1;s=6;)i(t>>>r-6),r-=6},o.flush=function(){if(r>0&&(i(t<<6-r),t=0,r=0),e%3!=0)for(var o=3-e%3,a=0;a>6,128|63&n):n<55296||n>=57344?r.push(224|n>>12,128|n>>6&63,128|63&n):(e++,n=65536+((1023&n)<<10|1023&t.charCodeAt(e)),r.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return r}(t)},function(t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports&&(module.exports=t())}((function(){return qrcode})); +//# sourceMappingURL=/sm/26b4b0d0b1e283d6b3ec9857ac597d7a60c76ac17be1ef4c965f03086de426bb.map \ No newline at end of file diff --git a/flask-dev-api/static/style.css b/flask-dev-api/static/style.css new file mode 100644 index 0000000..a3f59f5 --- /dev/null +++ b/flask-dev-api/static/style.css @@ -0,0 +1,104 @@ +/* static/style.css */ +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + margin: 0; + padding: 20px; + background-color: #f5f5f5; + color: #333; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; +} + +.page-header { + text-align: center; + margin-bottom: 20px; + width: 100%; +} + +.page-header h2 { + margin: 0 0 8px 0; + color: #333; + font-size: 24px; +} + +.page-header p { + margin: 4px 0; + color: #666; + font-size: 14px; +} + +.container { + display: flex; + width: 90%; + max-width: 1600px; + gap: 20px; +} + +.panel { + flex: 1; + display: flex; + flex-direction: column; + background-color: #fff; + border-radius: 6px; + box-shadow: 0 1px 3px rgba(0,0,0,0.1); + border: 1px solid #e0e0e0; + overflow: hidden; +} + +.panel h2 { + margin: 0; + padding: 12px 16px; + font-size: 16px; + font-weight: 600; + background-color: #f5f5f5; + border-bottom: 1px solid #e0e0e0; + color: #666; +} + +textarea { + flex: 1; + padding: 16px; + border: none; + resize: none; + font-size: 14px; + line-height: 1.5; + background-color: #fff; + color: #333; + outline: none; + font-family: inherit; + min-height: 500px; + max-height: calc(100vh - 200px); + height: 60vh; +} + +.controls { + display: flex; + justify-content: flex-end; + gap: 8px; + padding: 12px 16px; + background-color: #f5f5f5; + border-top: 1px solid #e0e0e0; +} + +button { + padding: 6px 12px; + font-size: 12px; + font-weight: 500; + color: #666; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 6px; + cursor: pointer; + transition: background-color 0.2s ease; +} + +button:hover { + background-color: #f0f0f0; + color: #333; +} + +button:active { + background-color: #e5e5e5; +} diff --git a/flask-dev-api/static/webfonts/fa-solid-900.ttf b/flask-dev-api/static/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1a80239c8715c28955e6e67b1f6d97e445281a35 GIT binary patch literal 419780 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 z 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 z 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%0D2U9I(jj> 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

g$upWfv=u(3L?qU1@ixe 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 P`<1QSOGh8)n*jp=tXW}C literal 0 HcmV?d00001 diff --git a/flask-dev-api/stats.db b/flask-dev-api/stats.db new file mode 100644 index 0000000000000000000000000000000000000000..597acfd38ad98159fbcdaa1b86b605d6857b1264 GIT binary patch literal 131072 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 MQAMhVe*NtK2hS;gEC2ui literal 0 HcmV?d00001 diff --git a/flask-dev-api/templates/ai_dubbing.html b/flask-dev-api/templates/ai_dubbing.html new file mode 100644 index 0000000..ee716b7 --- /dev/null +++ b/flask-dev-api/templates/ai_dubbing.html @@ -0,0 +1,1243 @@ + + + + + + + GPT-SoVITS 配音(引擎版) + + + +

+
+
+

GPT-SoVITS 配音(引擎版)

+
+ + 未初始化 + + +
+
+

GPT-SoVITS 本地推理 · 子进程模式

+ + +
+
+
+ +
+ + +
+
+ + + + +
+
+
+ 模型切换 +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+
+ 参考音频 +
+
+ + +
+
+ +
+
+ +
+ + +
+
+
+ + +
+
+
+ + +
+
+
合成内容
+
+ + +
+
+ + +
+
+
+
+ 推理参数 + +
+
+ + +
+
+ + +
+
+ +
+ + 5 +
+
+
+ +
+ + 1 +
+
+
+ +
+ + 1 +
+
+
+ +
+ + 1 +
+
+
+
+ + + +
+
+ +
+ + + + +
+ + + + diff --git a/flask-dev-api/templates/base64.html b/flask-dev-api/templates/base64.html new file mode 100644 index 0000000..fb2ecff --- /dev/null +++ b/flask-dev-api/templates/base64.html @@ -0,0 +1,232 @@ + + + + + + + Base64 编码/解码 + + + +
+ + +
+
+
+

Base64 编码/解码

+
+

文本与 Base64 互转

+ +
+
输入文本
+ +
+ +
+
+ + +
+
+
+
+ + +
+
+

输出结果

+ +
+
+ +
+ + +
+
+
+ + + + diff --git a/flask-dev-api/templates/chmod_calc.html b/flask-dev-api/templates/chmod_calc.html new file mode 100644 index 0000000..9eb64cf --- /dev/null +++ b/flask-dev-api/templates/chmod_calc.html @@ -0,0 +1,174 @@ + + + + + + + Chmod 计算器 + + + +
+
+

Chmod 计算器

+
+

Linux 文件权限速算

+ +
+
勾选权限
+
+
+
Owner
+
Group
+
Public
+ +
Read (4)
+
+
+
+ +
Write (2)
+
+
+
+ +
Exec (1)
+
+
+
+
+
+ +
+
000
+
---------
+
+ chmod 000 path + +
+
+
+ + + + diff --git a/flask-dev-api/templates/content_tag.html b/flask-dev-api/templates/content_tag.html new file mode 100644 index 0000000..efab91e --- /dev/null +++ b/flask-dev-api/templates/content_tag.html @@ -0,0 +1,753 @@ + + + + + + + 文章标签生成 + + + +
+ + + + + +
+
+
+

文章标签 AI 生成

+ +
+

接入 LLM 模型,自动提取文章关键词标签

+ + +
+
连接设置
+
+
+ + +
+ +
+
+
+ +
+ + +
+
+ +
+
+
+ + +
+
+
文章内容
+ +
+ + +
+
+
+
+ + +
+
+
+

粘贴文章内容,点击「生成标签」

+ Ctrl + Enter 快速生成 +
+ +
+ + + + diff --git a/flask-dev-api/templates/data_manage.html b/flask-dev-api/templates/data_manage.html new file mode 100644 index 0000000..dba77ba --- /dev/null +++ b/flask-dev-api/templates/data_manage.html @@ -0,0 +1,529 @@ + + + + + + 数据管理 + + + + +
+
+ + + +
+
+ + + + +
+
+ + + +
+
+ +
+ 共 0 条 +
+
+
+ + + + + + + diff --git a/flask-dev-api/templates/down_video.html b/flask-dev-api/templates/down_video.html new file mode 100644 index 0000000..c9723c9 --- /dev/null +++ b/flask-dev-api/templates/down_video.html @@ -0,0 +1,796 @@ + + + + + + + 视频下载器 + + + +
+
+

视频下载

+

支持 X、Bilibili、Instagram 和 YouTube

+ +
+ +
+ + +
+
+ +
+ +
+
+ + +
+
+
+
+ +
+ +
+
+ + +
+
+
+ + + +
+
+ 0% + + +
+
+
+
+
+
+ + 正在合并视频和音频... +
+
+ +
+ + +
+ +
+ +
+
+
+ +
+

下载完成后在此预览视频

+

支持 X / Bilibili / Instagram / YouTube 视频

+
+ +
+ +
+
+ +
+
+
+ + + + diff --git a/flask-dev-api/templates/fen_ci.html b/flask-dev-api/templates/fen_ci.html new file mode 100644 index 0000000..c2f28d6 --- /dev/null +++ b/flask-dev-api/templates/fen_ci.html @@ -0,0 +1,376 @@ + + + + + + + Jieba 分词 + + + +
+ + +
+
+
+

Jieba 分词

+
+

中文分词与词性标注工具

+ +
+
认证
+
+ +
+ + +
+
+
+ +
+
输入文本
+
+ +
+
+ +
+ +
+
+
+ + +
+
+

分词结果

+ +
+ +
+
+ +

输入文本并点击"开始分词"查看结果

+ Ctrl + Enter 快速分词 +
+
+
+ + + + diff --git a/flask-dev-api/templates/http_status.html b/flask-dev-api/templates/http_status.html new file mode 100644 index 0000000..6efa24a --- /dev/null +++ b/flask-dev-api/templates/http_status.html @@ -0,0 +1,267 @@ + + + + + + + HTTP 状态码 + + + + +
+
+

HTTP 状态码

+ 快速参考手册 +
+ +
+ +
+ +
+ + + + diff --git a/flask-dev-api/templates/index.html b/flask-dev-api/templates/index.html new file mode 100644 index 0000000..c378772 --- /dev/null +++ b/flask-dev-api/templates/index.html @@ -0,0 +1,1186 @@ + + + + + + 工具集管理后台 + + + + + + + + +
+ +
+
+ + + 工具集 +
+
+ + +
+
+
+

仪表盘

+ +
+
+
+
+
+
工具数量
+
-
+
+
+
+
+
+
本月调用
+
-
+
+
+
+
+
+
今日调用
+
-
+
+
+
+
+
+
+
平均响应时间
+
-
+
+
+
+
+
+
成功率
+
-
+
+
+
+
+
+
活跃天数
+
-
+
+
+
+
+ +
+
+
+ 近30天接口调用趋势(折线图) +
+
+
+
+
+
+
+ 接口调用分布(饼图) +
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+ 每月接口调用数据 +
+ + +
+
+
+
+
+
+
+
+ 每日调用时间段分布 +
+ +
+
+
+
+
+
+
+ +
+
+
+ 响应时间分布 +
+
+
+
+
+
+
+ 最慢接口 Top5 +
+
+
+
+
+
+ +
+
+
+ 本周 vs 上周对比 +
+
+
+
+
+
+
+ 最近调用记录 +
+
+ + + + + + + + + + +
接口状态耗时时间
+
+
+
+ +
+
+
+ + + + + diff --git a/flask-dev-api/templates/json_format.html b/flask-dev-api/templates/json_format.html new file mode 100644 index 0000000..422f428 --- /dev/null +++ b/flask-dev-api/templates/json_format.html @@ -0,0 +1,223 @@ + + + + + + + JSON 美化 / 压缩 + + + +
+
+

JSON 工具

+ 美化 & 压缩 +
+
+
+
模式
+
+ + +
+
+
+
+
缩进空格
+ +
+
+ +
+
+
+
+ + + +
+
+ +
+
+
输入
+
+ +
+
+
+
+
美化结果
+
+ +
+
+
+ + + + diff --git a/flask-dev-api/templates/pin_tu.html b/flask-dev-api/templates/pin_tu.html new file mode 100644 index 0000000..bf1321a --- /dev/null +++ b/flask-dev-api/templates/pin_tu.html @@ -0,0 +1,1622 @@ + + + + + + {% if mode == 'index' %}文件浏览器{% else %}{{ current_path_name }}{% endif %} + + + + + +{% if mode == 'index' %} + +
+
+

文件浏览器

+

输入本地路径或网络共享路径,浏览图片和视频

+ +
+ + +
+
路径不能为空
+ +
+
+ + +
+
+
+
确认操作
+
确定要执行此操作吗?
+
+ + +
+
+
+ + + +{% else %} + +
+ + + {% for crumb in breadcrumbs %} + {% if not loop.first %}{% endif %} + {% if loop.last %} + {{ crumb.name }} + {% else %} + {{ crumb.name }} + {% endif %} + {% endfor %} +
+ +
+ 列表 + 网格 + 漫画 + 搜索 + + + {% set total = (subfolders|length) + (images|length) + (videos|length) + (files|length) %} + {% if total > 0 %}共 {{ total }} 项{% endif %} + +
+ +
+ {% set total = (subfolders|length) + (images|length) + (videos|length) + (files|length) %} + {% if total == 0 %} +
+ +

此文件夹为空

+
+ {% endif %} + + {% if subfolders %} +
+
文件夹 ({{ subfolders|length }})
+ {% if view_mode == 'grid' %} +
+ {% for folder in subfolders %} + +
+
{{ folder }}
+
+ {% endfor %} +
+ {% else %} +
+ {% for folder in subfolders %} + +
+
+
{{ folder }}
+
文件夹
+
+ + + +
+ {% endfor %} +
+ {% endif %} +
+ {% endif %} + + {% if images %} +
+
图片 ({{ images|length }})
+ {% if view_mode == 'manga' %} +
+ {% for image in images %} +
+ {{ image }} +
+ {% endfor %} +
+ {% elif view_mode == 'grid' %} +
+ {% for image in images %} +
+ {{ image }} +
{{ image }}
+
+ {% endfor %} +
+ {% else %} +
+ {% for image in images %} +
+ +
+
{{ image }}
+
图片文件
+
+ + + +
+ {% endfor %} +
+ {% endif %} +
+ {% endif %} + + {% if videos %} +
+
视频 ({{ videos|length }})
+ {% if view_mode == 'grid' %} +
+ {% for video in videos %} +
+
+
{{ video }}
+
+ {% endfor %} +
+ {% else %} +
+ {% for video in videos %} +
+
+
+
{{ video }}
+
视频文件
+
+ + + +
+ {% endfor %} +
+ {% endif %} +
+ {% endif %} + + {% if files %} +
+
文件 ({{ files|length }})
+ {% if view_mode == 'grid' %} +
+ {% for f in files %} +
+
+
{{ f }}
+
+ {% endfor %} +
+ {% else %} +
+ {% for f in files %} +
+
+
+
{{ f }}
+
{{ f.split('.')[-1] | upper if '.' in f else '文件' }}
+
+ + + +
+ {% endfor %} +
+ {% endif %} +
+ {% endif %} +
+ + +
+
+
+
重命名
+
新名称
+ +
+
+ + +
+
+
+ + +
+
+
+
+
+
移动到
+
-
+
+
+
+
+
加载中...
+
+
+ +
+
+ + + + + + + + + + + +
+
+
+
确认操作
+
确定要执行此操作吗?
+
+ + +
+
+
+ + +{% endif %} + + + diff --git a/flask-dev-api/templates/pin_tu_manga.html b/flask-dev-api/templates/pin_tu_manga.html new file mode 100644 index 0000000..fbd20b7 --- /dev/null +++ b/flask-dev-api/templates/pin_tu_manga.html @@ -0,0 +1,100 @@ + + + + + + 漫画阅读 - {{ current_path_name }} + + + +
+ × + {{ current_path_name }} + {{ images|length }} 张 +
+
+ {% if images %} + {% for image in images %} +
+ {{ image }} +
+ {% endfor %} + {% else %} +
此文件夹没有图片
+ {% endif %} +
+ + diff --git a/flask-dev-api/templates/pin_tu_search.html b/flask-dev-api/templates/pin_tu_search.html new file mode 100644 index 0000000..17fd556 --- /dev/null +++ b/flask-dev-api/templates/pin_tu_search.html @@ -0,0 +1,561 @@ + + + + + + 搜索 - {{ root_display }} + + + + +
+ 返回 + +
+ + + + + +
+ {% if query %} +
搜索中...
+ {% else %} +
+ +

输入关键词搜索文件和文件夹

+
+ {% endif %} +
+ + +
+
+
+
确认操作
+
确定要执行此操作吗?
+
+ + +
+
+
+ + + + diff --git a/flask-dev-api/templates/qr_code.html b/flask-dev-api/templates/qr_code.html new file mode 100644 index 0000000..00eef75 --- /dev/null +++ b/flask-dev-api/templates/qr_code.html @@ -0,0 +1,231 @@ + + + + + + + 二维码生成器 + + + +
+
+

二维码生成器

+
+

文本 / URL 转二维码

+ + +
+
配置
+
+ + +
+
+
+ +
+ + #000000 +
+
+
+ +
+ + #ffffff +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+ + + + + diff --git a/flask-dev-api/templates/rvc.html b/flask-dev-api/templates/rvc.html new file mode 100644 index 0000000..9871d20 --- /dev/null +++ b/flask-dev-api/templates/rvc.html @@ -0,0 +1,816 @@ + + + + + + + RVC 变声 + + + +
+
+ +
+

RVC 变声

+ +
+
引擎未初始化
+ + +
+
+
模型选择
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
输入音频
+
+ +
点击选择或拖拽音频文件
+ +
+ +
+
+ + +
+
+ 变声参数 + +
+
+ +
选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU
+ +
+
+ + +
+
+
音调升降0
+
整数,半音数量,升八度 +12,降八度 -12
+ + +
+
+
辅音保护0.33
+
保护清辅音和呼吸声,防止电音撕裂等 artifact。拉满 0.5 不开启,调低加大保护力度但可能降低索引效果
+ + +
+
+
滤波半径3
+
≥3 则对 harvest 音高识别结果使用中值滤波,数值为滤波半径,可以削弱哑音
+ + +
+ +
+
音量包络混合0.25
+
输入源音量包络替换输出音量包络的融合比例,越靠近 1 越使用输出包络
+ +
+
+
检索特征比率0.75
+ +
+
+ + + +
+
+ + +
+
+
+ +

上传音频,选择模型,开始变声

+
+ + +
+ +
+
+ 控制台日志 + +
+
+
+
+ + + + + +
+ + + + diff --git a/flask-dev-api/templates/sovits_tts.html b/flask-dev-api/templates/sovits_tts.html new file mode 100644 index 0000000..6f778e5 --- /dev/null +++ b/flask-dev-api/templates/sovits_tts.html @@ -0,0 +1,1258 @@ + + + + + + + GPT-SoVITS 配音 + + + +
+
+
+

GPT-SoVITS 配音

+ +
+

调用 GPT-SoVITS API 进行语音合成

+ + +
+
+
+ +
+ + +
+
+ + + + +
+
+
+ 模型切换 +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+
+ 参考音频 +
+
+ + +
+
+ +
+
+ +
+ + +
+
+
+ + +
+
+
+ + +
+
+
合成内容
+
+ + +
+
+ + +
+
+
+
+ 推理参数 + +
+
+ + +
+
+ + +
+
+ +
+ + 5 +
+
+
+ +
+ + 1 +
+
+
+ +
+ + 1 +
+
+
+ +
+ + 1 +
+
+
+
+ + + +
+
+ +
+
+
+ +
+

合成完成后在此试听音频

+

支持中文、英文、日文

+
+ + + +
+ +
+
+ + 下载音频 + + +
+
+
+ + + + + + + + +
+ + + + diff --git a/flask-dev-api/templates/stt.html b/flask-dev-api/templates/stt.html new file mode 100644 index 0000000..265c6ce --- /dev/null +++ b/flask-dev-api/templates/stt.html @@ -0,0 +1,740 @@ + + + + + + + STT 语音识别 + + + + + + +
+ + +
+
+
+

STT 语音识别

+ +
+

使用 faster-whisper 将音频转为文字

+ +
+
上传音频
+
+ +

点击或拖拽音频文件到此处

+ + +
+
+ +
+
+ +
+
模型与语言
+
+ + +
+
+ + +
+
+ + + +
+
+ +
+
输出格式
+
+ + + +
+
+ + +
+
+ + +
+
+

识别结果

+ +
+
+
+
+
+
+ 等待中... + 0% +
+
+
+
+ +

上传音频文件并点击"开始识别"

+
+
+
+ + +
+
+ + + + diff --git a/flask-dev-api/templates/token_gen.html b/flask-dev-api/templates/token_gen.html new file mode 100644 index 0000000..1955f37 --- /dev/null +++ b/flask-dev-api/templates/token_gen.html @@ -0,0 +1,185 @@ + + + + + + + Token 生成器 + + + +
+
+

Token 生成器

+
+

随机字符串生成

+ + +
+
配置
+ + + + +
+
+ 长度 + 64 +
+ +
+
+ + +
+ + +
+ + +
+
+
+
+
+ + + + diff --git a/flask-dev-api/templates/url_parser.html b/flask-dev-api/templates/url_parser.html new file mode 100644 index 0000000..af2f943 --- /dev/null +++ b/flask-dev-api/templates/url_parser.html @@ -0,0 +1,249 @@ + + + + + + + URL 解析器 + + + +
+
+

URL 解析器

+
+

拆解 URL 各组成部分

+ + +
+
输入 URL
+
+ + +
+
+ +
+ + +
+
示例
+
    +
  • https://user:pass@example.com:8080/path?key=value#hash
  • +
  • http://localhost:3000/api/v1/users?page=1&limit=20
  • +
  • https://www.google.com/search?q=hello+world&lang=zh-CN
  • +
  • ftp://files.example.com:21/pub/doc.pdf
  • +
+
+ + + + +
+ +

输入 URL 并点击解析

+
+
+ + + + diff --git a/flask-dev-api/utils/__init__.py b/flask-dev-api/utils/__init__.py new file mode 100644 index 0000000..db3e327 --- /dev/null +++ b/flask-dev-api/utils/__init__.py @@ -0,0 +1 @@ +# utils package diff --git a/flask-dev-api/utils/__pycache__/__init__.cpython-312.pyc b/flask-dev-api/utils/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e80c97a74573a7614f2a3eb5e6eccd53405f46ab GIT binary patch literal 178 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 literal 0 HcmV?d00001 diff --git a/flask-dev-api/utils/__pycache__/fen_ci_utils.cpython-312.pyc b/flask-dev-api/utils/__pycache__/fen_ci_utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..68654acc96c393e899fb10fecb29ba8e34a3cea4 GIT binary patch literal 7802 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 literal 0 HcmV?d00001 diff --git a/flask-dev-api/utils/__pycache__/stats_db.cpython-312.pyc b/flask-dev-api/utils/__pycache__/stats_db.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..11bb820ccb9ec6ec1120b0cec06f24a60edcf0db GIT binary patch literal 27893 zcmdsg3wRXAooDw<&wDg_OJH8ZLzV`N45$N2WkF1gL!H$vD!oJ+)u0K@MT~%FGUG;ze|5f~5Qj(p+wR-EK`a=~Q_Xm1VE?e|wwA;XOCpeMY z$%(vZXyAA9?ANfhe#rVBLT!P$1;+;r~#HC0Vi+3SiBHk@76Ymk1iz~#HCrvx=6z@gu zQgId1yN(*>a^9qQoMhy=9o+FZ4|7M1JGjGq{@R1pSSsQ1+1%O~ttKK=w*?y9X7b$+jV@a^uwCwk>-*WNiZ`0)?_@uTBI&%Zl#{PCgV z9YZHxyJP5N`_PYHyY}uY_Ui-%m8T66tLX82{dJArh>cRw+u--KSbctv-&ZI;oX(6wf<)5 z=xIJ8P%R&g%za~P>GECMeO{^5a1mNb6kPvHIlQ1CF_ErI)j3o_MtD(YDfyLPpq;+_rHPl{o#`G+?ya*?g0#;%emr zTs_Tq!X@&`jPm2vFx<3;@uoF|o7OPJ)i5Ot6OYQ5uyI-@DnH8Qn=3tcU?%MD=vA_< zthl<&U0uAUqRd^s)?K-|+FkZQc~y0l8*5Wj>uG54x%1TO^j4kdF0ZUETUWNty=7bZ zrs8co+#AbwxQn+}Z!WJydz;ECs|(`Z@HUADn(LbU?&`7!s#zD6+bb&K>oj@+A>u?e z2tp3}02ZQG89;m!;z7yduLGDh`rP=egbwIaykd<9qbT20R#jcRX^XqGY;E!OifVVs z_HElR>Ke5~9ezH$^W;o&&U{{vRJ*TcU!9LI>zejX@&ilOmz8XE=K;CybrzZmByiI!nMTyX{IKDS(a-5oXsVgrd zP0RA~%Br$$)$YyP+~w;kH*W)hsjS}Y)}Ny~G2eZEamDtsDtBH{{%L_x{)okU#9MpN z?~Ryin;RSJ{1H=aLo+_u1u`e|A1MX55ldZDogdsont~_#^AQ&$evxr(MO$fDus&1q zc*QVhOS68(*-W;qn2Mm6d=m(6VK@l|fs3Io_zfeCR;YYb5 zmSYUc6=NJ=493cq`=jf{R!Kws74lu+mWgzMTSJNq+#0eQTf)@^?&!b#>m;}2o7jR% znYfRbBoHD|%EG;r%?cw{rIUzR?j+*SbP{oBI*~})_tBg%9wq~T10)5Mk})jFjj|G| zv>Hhw5QMGY4ck(KcXh9L%hbESuV^6e-jH?GS0}`sqh7R@Y(4)1H@fRN zp1`1r6!q$gs;#PQyp@MQGVy9cotlalt7z43FICpMWxF@Lk)(;%}CDG!C4 z@aMY|No;cMuFisvf>8FV0sHDp_VxYt^#k?|Z6#5>c&Z}oaJ3)oSRN8GWemZ~>P6VX zX7nZ8{NI>Szlt4!=-eLReUKPMV@xH(Y?~@uilVb!eE+&U4NS6G_Z-?=gS^CA@XcGcTmh>nZB-3^?*aLY}-DU~lS0N&{Ps4CHE8Lr(!wXo!YJac`+` z-U8aE2g{&h(H>j**xV~^wHgA3dWSk5^+q%X_&vNr|MbiQY70iRpkowJ%0V%WrCg^_ z3)QsNup5SkR?uKkAgsc#iGD@%Nkf<6c(Q;RtwI%2p4}bh@-3C51Bsraz8lt@9Sd_B z7v_j9-;Y8@Ddg!qRoE$Yv) zzQw&}hZ}8z$(BMOmmeZVlyda5DM zGG&0c93{@u9aPigt81$D%2YxiDiPtOL@LZ+RrJ&~9F>WMPg;&wAH<*UQ6zxXq|DA; z9lMS_bh56u`r^#R{Yi^2Ial^OSN823aISAFQ~0$bxpQU5%3*`SHgDL>*^}F?qc)S% z{7-hylKl9-C+mkDpwz=oBG=%$pe`#`f9|;Nj3>A?c(Ch%UcNWyv~|E)bir|7NVxB7 z{P+l}KV6iz#w6700=qo{*cDJAax5(f@cIl|3-$^~Yd~}YGTv%vnl($M*&)aki1+5>$wH) z@u9mB^6$P$!nd~F@f(c;bk=+f)Y)Upp+DI;RRq)PH)3MBQ8bfQV*aHiNVLQ~V#G&E zcTo{h_|rl}I0_AsA(6C8h070?X;bjZCm3gw2`0~U;Gh_^CL zB#0j$G9hQtVkWTr7<972(z2=&={`(GzO2zO*((MS`Nl+8pxIMFAzkMEAgG>)8@x5t zqE9M8jTZd*HX>1B0roGMWb(EGEG}rJS)r8{qLrG(oi+D!$Gq;@?ZxeTj+I|<%nJ$g zu%`1EG5@8rIB6UT`60T~T~dA=I>vt+>Uc}kjTV}y8xxDwg^s6aSm@&uEOg_93oR3X zc#%5FrY8q1M8;GWEfWq#G492rN~ESF5P^*Nm1l4Gq%u@|iYniaWbD!#Y*Rr4>`Cp_ z$ELPBZ^AL%^FDXvbQb{%_8!}C!I2XZasUN6GG^PH#Zw?1p%>*MR>Ls+6~-t7+>hYq zAZhtW!pp{1L(ELAVmcN?muW&a)38XQ7zvl!f`Aq#V4Sb`={LpV1$TVzTGZod ze zJ$HvP7kp6C$G^Y!+;{%=!A~CyRc{a7zavz&Gqn4mfwGzb=XXcgTWHX<&hYh!jY}^2 zdc;Z%`J9-7Ppv5>7UADy6_z;TnT-{NjLJ+IUmPDt6c2Edq$(shPfS$|vf!*z6_vFp z0(6wB2(8AL_6kb@!7VPCCNa$tDm|k~rXP`wkH9A30=+_+2DdFtB%i@>+oa+)MDnQq z2`taIR<^t_7N^&bk9`nTNClmwU_O!J8HdNzW{j)RQ$(PYq4ISy!%FKZAwH6Ckceq9 z5jo$ihsqLJm843lYnGj-H6%R~fsM(^5i4~-=o#VnFwjRmlEkJ+=2Da?@ z+_Cd~5m0+>@NjS5y9K8U`eyf)^kttb8kk=;;9Psbu`?v>{CdR5r7Zb6;@Bx;1DCSK zAbdK@y~Yxc4Jyx_K0Y>Z(wyTHws0 zC4ukFX1EbA+}UCnp%{|K0DFOZ@y0N~$zB zwnu3?Va!}g=2N1Y9l=sr5pmOqQ)^Px>Z~!|$_$dwTNodXN5ceZm8q=Ch=8>Sagb`z z%RBhym*y$F>ue7*1qm$>S{3$m1ZJ+^^t?0I}U{!8o>dVzc}Me>Y1hQP5I5z z(AI6Cs$KnCcVF20aLDs;Nc0YD+%w?ZdjWNYLy&e4$r zC=5+(K`yaT4#xyCz%RGFxG{yoQbpeoA#H@&t2i4Bu&qvk^b!o%03m|OW zKWa2M%va4WW~noACM%X%wbV`E2lz9a^+#`I)^9-)9$WPrtOpY;qw7(NW%xC%2dR{a z>oIKLY-ldo*3}09FDTp1a@vjW$uS}PfER+1M;XaPRx`Vt2B`jFWR5sX1!=c0tgr_ z5S~SI3&fC^KmeDVwNjdc>5W$bO&o|y*{6hmJ5QZER`~^NVKE|Axd7U9>u@IpRW~3 z3}KxqofRDwp{e%`IEybiH}pF<3^*&!Z|`?jwUvb}&LICpOW5k{w0GE#JHyEtVOLsb zLq|hs+9Lxl>5}Wwe%GS|u2$$=kMX6X#3h#*+SaKKSaSbmcQ5Ul)w85O_4ZzVz%f50 z%pdEFRo#F89%IwB_hF7j{uREJ-%I9IzLeVy1J*8la;vdbfV!g}PiF`S0n;8ed|^Te zVP1+>Gn{xjidw)JFpI)T)l0&2$BPBR01}rIt~aC4 zz#z|ttc6QiHsxIZ3b;m97ZomDSmcu$DDN7+5qUzR6*bnsiyMibAk#+EBvlL`1hqbq^zM zv$;t+gt|lc^BqQ_g7S#L;xf0b9Zum~DQ#=RQ)i8Eg6Xb~q;^xg6kHqy+_3YZkf%1} z-5dJuKG4Qw`&D}yxhsO(zcd+=r?(p+HrSFolRA=mOlOS!S$BSBT{>(-JHvL3IFZ`6 zX{--h)tvqZMx_hH;~K3euQg59j=;2@qNvuxOw=0E7In!*wH^4L6>TT3j(IA+V{9Gh zN){@CMNoi6aEZQV^kNkB6ajrgMX12NsrZ30p$!!F1^64IyCgb4CQwh5=m=7Z+!f`U z%BumxOdpBYQX-aUXEJ~ba-H4y%7`;sB8Nec8Y4Y~1a37`Lmi^S5^MztN=haf2Ye09 zhrzaMl)3Op0km)ff4=9Cr~s^SrDcF3h~6*K;OyV9FAmtZ-^taB0^Rs6k2Q5sn(+Os34Q*{!UiaCa5o z6R)BWk}|1aAK0EQh=WecG}=$~*cFRv2Gs_}LJ{ZmD6wcju!RxkY8dx5W;N@OCx&D;?b6PIu)BWkr`4Q=DBpG;CL=))Ya28#Aig?ZT1Q<8 zB#tv;ATw+NW~q=$Of2#y-xx779_YhH3q)Sm9QJzmM{F$Kmu~Z&vbB+!7iq5LkgG@N zj;0}Ek-Uez5~4~4$|6ITM6qoV3%yN!FU1p_2h0T0M#Ya)F<&R;(u4XINr6=TNy>eU zk}4$n&H^SAQu|Qh8V`6Ruk=0CwL$3c-H9Ydhf>no%EOdgPD%?F9eZGebDDD6`7dPI zFYJ`U$tl6qpfPx7`-AP3AX3TkZha>_zqYhX)+zngDc$KXTi$ljIxq3DWQR5PSA~MGb4vSql5CGvLXLH%cQ$r3 z9&3hZnv~qOR{bo4X+b+5cBXcf_uSpP_0)=s8F%zM??9H-MIu1ZbE3Yhz9)MiEB`a= z{9zNSLp;cy(R~5CQj=BhBLNnuf}j zSI2Pgn?>PLd~Pg&K@LxI=d53zvuSxw)r3w0HLxdSPd;7*S8-c^sKJdFA+sg zV8smjqniMzMW6J2RLUpl--4SM^eaIP2HQPfthlc)Z`2|nvcalEHrN1uT48X;?9Ux@ zy7}X!!PIBhU2x0^33FiOn=?v)@F|y8oEgtT3Dp@3{V96Zg^zEgShGl8mGz>p=oO28 z)KhO%(oYKV#3~IGc9Q;D5zYnnYmk~m$d3)CMibbNS!F*irQg`E(no!2EKj+EFAB3k z7cr++Yrr5Yc&#?_Z&QB(D>D<^2^MQ@A&3^nV{-v(%(F#oO0>SEGMOlYvfpG3*5j*r zu89X5GNM2GNmAn+l`ZSz_)n=4xibN$87DBhr7GIeWZIzEYEbxbv4hH3#LrwzlZIO@ zqDQdnsO5l|7c@7!99E5&po{@!y`KGXPVO9f;Vw#uO~v>O<4%kzvGC0U6uzmjC&rOj zWZARy&JW^Wd>W4kwLfwIJN&#N3qG5GM=`rE_Wacy^1`ou)F*Y}b>dFGzsF4sNfo>A zwy_2-xO`J6EGcZ=jY6l^C~VUjg;O(v+q-US+YnB2wXKDZ;P=)=;gsn?>j`I<^Eub0 zl-&N5++O=Y%93_dIDJaHHJq9`!kKMZ?Zw3Y$o0MKLh{^jN>=ymE=SND&d3R_zm$>F zpOMqE?~HvQW5qA(&TqZAYIA?a<{%%QHvPxTUtHc(KQOJR%lZ!~nZrqF3h{B%a?Y6h z9e0O>yJd}1i@Pc>c>>?AODo2UcR>It2~c~Cie?8f(x@kND_F_ONy4^7HnC7FKEmNA&Y`8(UatINd0T$e(P{Sp-{rD(z8x1 z>sp3!_oiQ*ws0VQVOs^+%du53l)j>`qHopt)KKci^Hmpxt(32~GYn0u7kxX8X>?q# z@uc((1~fVV76S?Z&4fTD^M}Hlu0R|$kmRr>NFUvrBuD zVz?ch!_?w)<>yvj6t?_7ICLmH1tND1VyL<}R;J-#W0Nmp zmn8w(&VtA?a=FO-=7;pMLnDT2%HC!Tt5^kluT9;Z9&yEs7Nn`f&X#C-gyd|+*K_mz z>l)#Ej;UUoIYm+mLP)W#@BT*Va?o4-?5 zTEmXWsgi}$988V$2qk2h0U$HifR8dhp(Gbcf`aTK?;~p-I|=qQOP`|32ZVVZ+{7d& zW)e?@yWC*97q*UQgvX3~`f~cRL(_@}Tx%}5Huk$V4!Ab88>6Oi@{XS=d(YmVwc<1D zN-~Y#tF^5-R1Y~3dgW3*&OkaG(eJ7SV$r94gV=pk=<&Dde`y zj)6Mu6W386{{}EON*bQ5KDyVPsp=`|S=wv)$*g|&x~LMFoXX$eb6PA>#BDLlGS>}D zRDEoj6BD_hN@`^-_vW>0Nwi*_Z4l47bgD_TZ!+nF7$1N9;J@My#XY7?i@b z=Ru?qv&i0qQWo$JomIVL zzhgFzwQ;2dw|4C7&hJl}3s0JS*3EA%NtZL{_LTK!&hK5>pSi5v9?qP0;=!&5F|&Oe zF1ptZWUfPAMrLqN@PY2F!G*zDKUvb#^6KjT)Wv7&&Siy`uJ2D>-)@fXEDpOegJSUh z?z?(&da`>hXY9R!(2Ct5=R;v<8eD~%pzJT%CSrSZmvP*Cp}Y+t=f-eSR<}9ioE87t zn7zm2IB}Sj=dYbJTZo zTo~TSL`oIgVy-=zRKl>R2>cUW)fJT>ua zO8zY+zog{vD4B~S-@>pzhV0V6qoPboawy4`D>0rOq725z*;fwG<3&msGpBWp;;f9Z za!@?mmMsUxhf(7*49Q0ti56v3{x={d&@oOFIA=L;KNkp1s}9}2YrwVpl50=DYtMjd zUxzX3+7FE*q7oVZs58X}C}}4Hteb zy^7XaoLakDi@}}OVviZnq@SP)4yieZA6dR87A@m1!&;IVI;Wpyq5l!T6%+?Nf}kQ7D9%>wncN3_izoY%tSC%)~p!W?6L2a z{(uTs=nDzmwOF2hIem6dPJen{@6`VEC9oqqlE9!@l00pMGn(c?UU#^H^S-~L`_3NY zi}&;zezZCa@94&kjorqJ&gsg%&|USS?K9_`VGG{*k{qbu#9_r!UD%s(aa!R(dLepn zrFQP?*cbF4Yie7kShQtdZ1?mYZ_jsn*YqCltvl0luHf9v^N)nGw}z^|Ghlx}J`zf{ zb0np7?(W!)2;CT2P_+f30Lo>>4Ly(6>r(`NJZ4JN0Dq9`#Prk;{lMdo)5kqCWcre~FL#tbw9+)L!pm;M8ihyY>MC;gtD8O9Jt^wIJwXd$yd z`@sWrt`yM#=^9FJ5Ker68!b*`Odcl`=wH&E)9vqeUUcRtIePez5j9E$&4@NrKwow` z1n=%%+MU~z+2ecT$f+Y|gjfF}bo*Ur8bhh2=fsP`#zbot9ZZ)jd;7HLGUE$FP;Sn1pl(ko2W;}nh0&`6JH3O>DQ_qOE>cOGXGUJ)h&=W6U z;LXH6>^8^AX0o97C*~kC6&tO-dYFc#kY2$jFqUz{skL*qxMJW=-b0yXj1lx=+`$^jt)u zD4?iNYpq`~jxtyFt?Vm2&xf)%oG%%$Z_$!uP<3qT(QMoaJJQ-J$8K>D&^-fDk~b4U zRMH1ea@3emJ>e2zyVKg}CgYB&Cz_COG5Z~{(1c3^oD@TBi~`wzLNy!(a1K8SEMEH0 zl*iUfkk^YX6|Iu=Uyvl&)*P~BTQ=Seqx?2npK{#9)6M;e3_bhKPnGc;z5Y15r$Mk0U;E_6t8Y9z`0*=fRPAQ)+4s=_IvafYXIIX?FxdXRp}z`7hj^lg z8u{gOgU@_ec3bXbgPkv^1O7wX6Lz~iA##=F_D7?~1h?Ala)Zn53*GW-Lnqq?fAW(1QQ8ec#~Zi0 zu@uO>_T@B&aD}85&PV^4`C8n)!@RKJ|H2BHCrukN;jCx%do3+7Dp1ywS z?9j`v4Sg8A^5GA(!=dST=6hF9y))SP>`-@)+Wz%dy5&ZO-tEK~)Rxi9^&fsR_~Gkv zn}a8NF{I(z5hDOEY@1l!w5tlwvT+)ls}Ox3E0J?)Pb{gnV@g>r zO4&JzkAp$WcTHAJ3-WQI_`g7?1y+aM#noXsc$(Sko3Omvia(mph_H z(fP7XRQE`2*;`u24iuNZ!VskYM#`6o*LnUYZ?(eRrD!$@R$^n`dAO>y2o9gknU z4rk?6@TIL*hXTMt?efs`UeBG`*G9|L4kqmE1pokS01C{|og-wCL$I%qWJml4&f7$un| zMz*1ZOM_gdiR~LlEwo{qKu#J&vbIHugV6&UrsA|13f%D;PEj>vhKZFMGt*}xmZ&K} zx=I};s5G={S{ZLzRH4xuiS#e1yqW;G6E|&K#I*(TnMT3SidXOz)n$^(j3PD43QQ<{ z$(hohm%mruC%(Tqw50Uhrcmm(Q1t^Bg&pH7FZulSne>rF*lU%XU+!B{wB`loU|1oRVTnN+>C#q?(ck zDXF2vLkV#Z$xBH+C5I@XZJTV*6x%w&Lep8`F$*_kQGYBrjRi!pfEpGA!U7&-iSswq zz^9aaMhV$-n01G#vrNjDNR*UrP(l=pL4j-+qaA%rHMn72+1M-|Z1Ap z9X9ej|D|B$g;6WVC;yJK{hrJF!tU(M?Z~Bb(u2~8!(E3@Jl6GCkMzdjQ-|Mp?9^jt zq@N#t@9@tbd+)JxM+WZRGLXAF&b=LbNk!;h*0Xbf z4tg808~KzGXC9wAazAfDnj!F6BQAl@A9dMzoSk!9GGEG%%(L)0BN;aS_K_(rew|@t zj-7vyl^sTz8E>S;5-Y!8BrBCq8_jd_nIki2@Rj`NeY};QJCc>nFB@5gUPd$6W3<22 zku)pvvRIygF`)a@kt{A_J0H%T-Lou|Rq&t&j{{AUZ(lW^rSRHn`_w3rIi_Qf=PC oYg0LE`UuDKw%-a?S~c4ZAFb}EE9R8(+^=|3na%hsE06Sl0o9>*#sB~S literal 0 HcmV?d00001 diff --git a/flask-dev-api/utils/down_video_utils.py b/flask-dev-api/utils/down_video_utils.py new file mode 100644 index 0000000..c36b6a4 --- /dev/null +++ b/flask-dev-api/utils/down_video_utils.py @@ -0,0 +1,316 @@ +# -*- coding: utf-8 -*- +""" +down-video 视频下载工具函数 +""" +import os +import re +import subprocess +from urllib.parse import urlparse + +from config import TWITTER_COOKIE, BILIBILI_COOKIE, INSTAGRAM_COOKIE, YOUTUBE_COOKIE + +# 可选依赖 +try: + import yt_dlp + YTDLP_AVAILABLE = True +except ImportError: + YTDLP_AVAILABLE = False + + +def check_ffmpeg(): + """检查 FFmpeg 是否可用""" + try: + result = subprocess.run(['ffmpeg', '-version'], capture_output=True, text=True, timeout=5) + return result.returncode == 0 + except Exception: + return False + + +def check_deno(): + """检查 Deno 是否可用""" + try: + result = subprocess.run(['deno', '--version'], capture_output=True, text=True, timeout=5, shell=True) + if result.returncode == 0: + return True + except Exception: + pass + # fallback: 检查默认安装路径 + deno_path = os.path.join(os.path.expanduser('~'), '.deno', 'bin', 'deno.exe') + if os.path.isfile(deno_path): + try: + result = subprocess.run([deno_path, '--version'], capture_output=True, text=True, timeout=5) + return result.returncode == 0 + except Exception: + pass + return False + + +def is_twitter_url(url): + """检查是否是 Twitter/X 链接""" + domain = urlparse(url).netloc.lower() + return 'x.com' in domain or 'twitter.com' in domain + + +def is_bilibili_url(url): + """检查是否是 Bilibili 链接""" + domain = urlparse(url).netloc.lower() + return 'bilibili.com' in domain or 'b23.tv' in domain + + +def is_instagram_url(url): + """检查是否是 Instagram 链接""" + domain = urlparse(url).netloc.lower() + return 'instagram.com' in domain + + +def is_youtube_url(url): + """检查是否是 YouTube 链接""" + domain = urlparse(url).netloc.lower() + return 'youtube.com' in domain or 'youtu.be' in domain + + +def _clean_title(title): + """ + 清理视频标题,移除特殊字符,使文件名在文件系统中安全可用 + """ + if not title: + return "video" + + # 移除或替换特殊字符 + # Windows 文件名不允许的字符 + cleaned = re.sub(r'[<>:"/\\|?*]', '_', title) + # 控制字符 + cleaned = re.sub(r'[\x00-\x1f\x7f]', '', cleaned) + # 移除 emoji 和其他 Unicode 特殊字符(保留中文、英文、数字、下划线) + # 匹配非中文、非英文、非数字、非下划线的字符 + cleaned = re.sub(r'[^一-鿿㐀-䶿\w]', '_', cleaned) + # 将多个连续下划线合并为一个 + cleaned = re.sub(r'_+', '_', cleaned) + # 移除首尾空格和点(Windows不允许) + cleaned = cleaned.strip('_. ') + # 限制长度(保留扩展名空间) + cleaned = cleaned[:150] + # 如果清理后为空,使用默认名 + if not cleaned: + return "video" + + return cleaned + + +def _find_files_by_title(output_dir, safe_title): + """根据安全标题查找目录中的相关文件""" + return [ + f for f in os.listdir(output_dir) + if f.startswith(safe_title) and os.path.isfile(os.path.join(output_dir, f)) + ] + + +def _merge_mp4_m4a(output_dir, safe_title): + """ + 查找同名的 .mp4 和 .m4a 并用 FFmpeg 合并。 + 返回 (merged: bool, message: str, filepath: str) + """ + files = _find_files_by_title(output_dir, safe_title) + mp4_files = [f for f in files if f.endswith('.mp4')] + m4a_files = [f for f in files if f.endswith('.m4a')] + + if not mp4_files or not m4a_files: + return False, "未检测到需要合并的 .mp4 + .m4a", "" + + mp4_files.sort(key=len) + m4a_files.sort(key=len) + mp4_path = os.path.join(output_dir, mp4_files[0]) + m4a_path = os.path.join(output_dir, m4a_files[0]) + + merged_name = safe_title + "_merged.mp4" + merged_path = os.path.join(output_dir, merged_name) + counter = 1 + while os.path.exists(merged_path): + merged_name = f"{safe_title}_merged_{counter}.mp4" + merged_path = os.path.join(output_dir, merged_name) + counter += 1 + + cmd = ['ffmpeg', '-y', '-i', mp4_path, '-i', m4a_path, '-c', 'copy', merged_path] + try: + result = subprocess.run(cmd, capture_output=True, text=True, timeout=300) + if result.returncode == 0 and os.path.exists(merged_path): + try: + os.remove(mp4_path) + os.remove(m4a_path) + except Exception: + pass + return True, f"已合并为 {merged_name}", merged_path + else: + return False, f"FFmpeg 合并失败: {result.stderr[:200]}", "" + except Exception as e: + return False, f"合并异常: {str(e)}", "" + + +class DownloadProgressLogger: + """捕获yt-dlp下载进度的回调类""" + + def __init__(self, progress_callback=None): + self.progress_callback = progress_callback + + def debug(self, msg): + pass + + def warning(self, msg): + pass + + def error(self, msg): + if self.progress_callback: + self.progress_callback({'type': 'error', 'message': msg}) + + def info(self, msg): + if self.progress_callback: + self.progress_callback({'type': 'info', 'message': msg}) + + def download_progress(self, d): + if d['status'] == 'downloading' and self.progress_callback: + percent = d.get('_percent_str', '0%').replace('%', '').strip() + try: + percent = float(percent) + except ValueError: + percent = 0 + speed = d.get('_speed_str', 'N/A') + eta = d.get('_eta_str', 'N/A') + filename = d.get('filename', '').split('\\')[-1].split('/')[-1] + self.progress_callback({ + 'type': 'progress', + 'percent': percent, + 'speed': speed, + 'eta': eta, + 'filename': filename + }) + elif d['status'] == 'finished' and self.progress_callback: + self.progress_callback({ + 'type': 'progress', + 'percent': 100, + 'speed': '', + 'eta': '', + 'filename': '' + }) + + +def download_video(video_url, output_dir, platform, progress_callback=None, proxy_url=None): + """ + 通用下载函数,返回 (success: bool, message: str, title: str, filepath: str) + 支持进度回调 + """ + if not YTDLP_AVAILABLE: + return False, "yt-dlp 未安装,视频下载功能不可用。", "", "" + + os.makedirs(output_dir, exist_ok=True) + + # 先提取视频信息以获取标题 + temp_opts = { + 'quiet': True, + 'no_warnings': True, + 'skip_download': True, + } + + if platform == 'twitter': + cookie_file = TWITTER_COOKIE + if proxy_url: + temp_opts['proxy'] = proxy_url + elif platform == 'bilibili': + cookie_file = BILIBILI_COOKIE + elif platform == 'instagram': + cookie_file = INSTAGRAM_COOKIE + if proxy_url: + temp_opts['proxy'] = proxy_url + elif platform == 'youtube': + cookie_file = YOUTUBE_COOKIE + if proxy_url: + temp_opts['proxy'] = proxy_url + else: + return False, "不支持的平台", "", "" + + if os.path.exists(cookie_file): + temp_opts['cookiefile'] = cookie_file + else: + return False, f"Cookie 文件 '{cookie_file}' 未找到", "", "" + + try: + # 创建进度日志器 + progress_logger = DownloadProgressLogger(progress_callback) + + # 获取视频信息 + with yt_dlp.YoutubeDL(temp_opts) as ydl: + info = ydl.extract_info(video_url, download=False) + if not info: + return False, "未能获取视频信息", "", "" + + # 清理标题作为安全文件名 + title = info.get('title', 'Unknown Title') + safe_title = _clean_title(title) + + # 使用清理后的标题构建输出模板 + ydl_opts = { + 'outtmpl': os.path.join(output_dir, f'{safe_title}.%(ext)s'), + 'ignoreerrors': True, + 'progress_hooks': [progress_logger.download_progress] if progress_callback else [], + 'logger': progress_logger if progress_callback else None, + 'format': 'bestvideo+bestaudio/best', + } + + if platform == 'twitter': + if proxy_url: + ydl_opts['proxy'] = proxy_url + ydl_opts['merge_output_format'] = 'mp4' + ydl_opts['postprocessors'] = [{ + 'key': 'FFmpegVideoConvertor', + 'preferedformat': 'mp4', + }] + elif platform == 'bilibili': + ydl_opts['merge_output_format'] = 'mp4' + elif platform == 'instagram': + if proxy_url: + ydl_opts['proxy'] = proxy_url + ydl_opts['merge_output_format'] = 'mp4' + elif platform == 'youtube': + if proxy_url: + ydl_opts['proxy'] = proxy_url + ydl_opts['merge_output_format'] = 'mp4' + + if os.path.exists(cookie_file): + ydl_opts['cookiefile'] = cookie_file + + # 执行下载 + with yt_dlp.YoutubeDL(ydl_opts) as ydl: + ydl.download([video_url]) + + # 查找下载的文件 + files = _find_files_by_title(output_dir, safe_title) + + if not files: + return False, "下载完成但未找到输出文件", title, "" + + filepath = "" + candidate_files = [f for f in files if f.endswith('.mp4')] + if candidate_files: + merged_candidates = [f for f in candidate_files if '_merged' in f] + if merged_candidates: + filepath = os.path.join(output_dir, merged_candidates[0]) + else: + candidate_files.sort(key=lambda f: os.path.getsize(os.path.join(output_dir, f)), reverse=True) + filepath = os.path.join(output_dir, candidate_files[0]) + else: + files.sort(key=lambda f: os.path.getsize(os.path.join(output_dir, f)), reverse=True) + filepath = os.path.join(output_dir, files[0]) + + extra_msg = "" + if platform in ('bilibili', 'youtube'): + has_mp4 = any(f.endswith('.mp4') for f in files) + has_m4a = any(f.endswith('.m4a') for f in files) + if has_mp4 and has_m4a: + merged, merge_msg, merged_path = _merge_mp4_m4a(output_dir, safe_title) + extra_msg = f" ({merge_msg})" if merge_msg else "" + if merged and merged_path: + filepath = merged_path + + return True, f"下载成功!保存到 {output_dir}{extra_msg}", title, filepath + + except Exception as e: + return False, f"下载失败: {str(e)}", "", "" diff --git a/flask-dev-api/utils/encoding_utils.py b/flask-dev-api/utils/encoding_utils.py new file mode 100644 index 0000000..50d0101 --- /dev/null +++ b/flask-dev-api/utils/encoding_utils.py @@ -0,0 +1,34 @@ +import chardet + +# 自动选择解码格式 +def detect_and_decode(data_bytes): + """使用 chardet 检测编码并解码""" + # 使用 chardet 检测编码 + detected_encoding_info = chardet.detect(data_bytes) + detected_encoding = detected_encoding_info.get('encoding') + confidence = detected_encoding_info.get('confidence', 0) + + if detected_encoding: + try: + decoded_string = data_bytes.decode(detected_encoding) + print(f" - 使用检测到的编码 '{detected_encoding}' 成功解码,置信度:{confidence}") + return decoded_string + except UnicodeDecodeError as e: + print(f" - 使用检测到的编码 '{detected_encoding}' 解码失败: {e}") + + # 方法二:如果检测失败或置信度低,尝试常见的编码 + encodings_to_try = ['utf-8', 'gbk', 'gb2312', 'cp936'] + print(f" - 检测失败/置信度低,尝试常见编码") + print(f" - 尝试常见编码列表: {encodings_to_try}") + + for enc in encodings_to_try: + try: + decoded_string = data_bytes.decode(enc) + print(f" - 成功使用编码 '{enc}' 解码。") + return decoded_string + except UnicodeDecodeError as e: + print(f" - 尝试编码 '{enc}' 失败: {e}") + continue + # 如果所有方法都失败 + print(" - 所有编码尝试均失败。") + return "所有编码尝试均失败。" diff --git a/flask-dev-api/utils/fen_ci_utils.py b/flask-dev-api/utils/fen_ci_utils.py new file mode 100644 index 0000000..97c6d6f --- /dev/null +++ b/flask-dev-api/utils/fen_ci_utils.py @@ -0,0 +1,149 @@ +# -*- coding: utf-8 -*- +""" +fen-ci 分词工具函数 +""" +import os +import re +import json + +from config import JIEBA_DICT_FILE, TOKEN_FILE_PATH + +# 可选依赖 +try: + import jieba + JIEBA_AVAILABLE = True +except ImportError: + JIEBA_AVAILABLE = False + + +class Tokenizer: + """分词器:加载词典并提供分词能力""" + + def __init__(self): + self.simple_words = [] + self.compound_words = set() + self.compound_pattern = None + self._load_words() + + def _load_words(self): + custom_words = set() + if os.path.exists(JIEBA_DICT_FILE): + try: + with open(JIEBA_DICT_FILE, 'r', encoding='utf-8') as f: + for line in f: + word = line.strip() + if word: + custom_words.add(word) + except Exception as e: + print(f"读取自定义词汇文件失败: {e}") + + compound = {w for w in custom_words if any(c.isupper() for c in w)} + simple = custom_words - compound + self.simple_words = list(simple) + self.compound_words = compound + if compound: + self.compound_pattern = re.compile('|'.join(re.escape(w) for w in compound), re.IGNORECASE) + else: + self.compound_pattern = None + + if JIEBA_AVAILABLE: + for w in self.simple_words: + jieba.add_word(w) + # print(f"加载了 {len(self.simple_words)} 个简单自定义词汇,{len(self.compound_words)} 个复合词。") + + def tokenize(self, text): + if not text or not text.strip(): + return [] + + tokens = [] + chinese_pattern = re.compile(r'[\u4e00-\u9fff]+') + english_pattern = re.compile(r'[a-zA-Z]+(?:-[a-zA-Z]+)*') + number_pattern = re.compile(r'-?\d+\.?\d*') + pos = 0 + text_length = len(text) + + while pos < text_length: + char = text[pos] + if char.isspace(): + pos += 1 + continue + + if self.compound_pattern: + compound_match = self.compound_pattern.match(text, pos) + if compound_match: + matched_word = compound_match.group() + tokens.append({'text': matched_word, 'type': 'compound_eng', 'length': len(matched_word)}) + pos += len(matched_word) + continue + + if chinese_pattern.match(char): + chinese_str = '' + while pos < text_length and chinese_pattern.match(text[pos]): + chinese_str += text[pos] + pos += 1 + if JIEBA_AVAILABLE: + chinese_tokens = list(jieba.cut(chinese_str)) + else: + chinese_tokens = list(chinese_str) + for token in chinese_tokens: + if token.strip(): + tokens.append({'text': token, 'type': 'chinese', 'length': len(token)}) + elif english_pattern.match(char): + match = english_pattern.match(text, pos) + if match: + word = match.group() + tokens.append({'text': word, 'type': 'english', 'length': len(word)}) + pos += len(word) + elif number_pattern.match(char) or (char == '-' and pos + 1 < text_length and text[pos + 1].isdigit()): + match = number_pattern.match(text, pos) + if match: + number = match.group() + tokens.append({'text': number, 'type': 'number', 'length': len(number)}) + pos += len(number) + else: + tokens.append({'text': char, 'type': 'punctuation', 'length': 1}) + pos += 1 + + return tokens + + @staticmethod + def get_stats(tokens): + stats = {'total': len(tokens), 'chinese': 0, 'english': 0, 'compound_eng': 0, 'number': 0, 'punctuation': 0} + for token in tokens: + t = token['type'] + if t in stats: + stats[t] += 1 + stats['total'] = sum(v for k, v in stats.items() if k != 'total') + return stats + + +class TokenAuth: + """Token 认证管理""" + + def __init__(self): + self.valid_tokens = {} + self._load_tokens() + + def _load_tokens(self): + if not os.path.exists(TOKEN_FILE_PATH): + print(f"警告: 找不到Token文件 '{TOKEN_FILE_PATH}'") + return + try: + with open(TOKEN_FILE_PATH, 'r', encoding='utf-8') as f: + tokens_data = json.load(f) + token_map = {} + for item in tokens_data: + if 'user' in item and 'token' in item: + token_map[item['token']] = item['user'] + self.valid_tokens = token_map + # print(f"成功加载了 {len(token_map)} 个有效Token。") + except Exception as e: + print(f"读取Token文件失败: {e}") + + def get_user(self, token): + return self.valid_tokens.get(token) + + +# 全局单例 +tokenizer = Tokenizer() +token_auth = TokenAuth() diff --git a/flask-dev-api/utils/pin_tu_utils.py b/flask-dev-api/utils/pin_tu_utils.py new file mode 100644 index 0000000..6c72eb9 --- /dev/null +++ b/flask-dev-api/utils/pin_tu_utils.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +""" +pin-tu 图片浏览工具函数 +""" +import os +import re + + +def atoi(text): + """辅助函数:将文本中的数字部分转换为整数,用于排序""" + return int(text) if text.isdigit() else text + + +def natural_keys(text): + """自然排序键生成器""" + return [atoi(c) for c in re.split(r'(\d+)', text)] + + +def find_media_in_folder(folder_path): + """在指定文件夹中查找所有图片、视频和其他文件""" + allowed_image_exts = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp'} + allowed_video_exts = {'.mp4', '.avi', '.mov', '.wmv', '.flv', '.webm', '.m4v', '.mkv', '.mpg', '.mpeg', '.3gp', '.3g2'} + + try: + files = os.listdir(folder_path) + except PermissionError: + return [], [], [] + + image_files = [] + video_files = [] + other_files = [] + for f in files: + if not os.path.isfile(os.path.join(folder_path, f)): + continue + ext = os.path.splitext(f)[1].lower() + if ext in allowed_image_exts: + image_files.append(f) + elif ext in allowed_video_exts: + video_files.append(f) + else: + other_files.append(f) + + return sorted(image_files, key=natural_keys), sorted(video_files, key=natural_keys), sorted(other_files, key=natural_keys) + + +def get_subfolders(folder_path): + """获取指定文件夹下的所有子文件夹""" + try: + items = os.listdir(folder_path) + except PermissionError: + return [] + subfolders = [item for item in items if os.path.isdir(os.path.join(folder_path, item))] + return sorted(subfolders, key=natural_keys) + + +def build_breadcrumbs(subpath, base_url='/pin-tu/browse'): + """构建面包屑导航数据 + base_url 示例: /pin-tu/browse/RDovRGF0YQ + 返回 URL 格式: {base_url}?p={累计子路径} + """ + path_parts = [p for p in subpath.split('/') if p] + breadcrumbs = [{'name': 'Home', 'url': base_url}] + cumulative = '' + for part in path_parts: + cumulative += ('/' if cumulative else '') + part + breadcrumbs.append({'name': part, 'url': f'{base_url}?p={cumulative}'}) + return breadcrumbs + + +def is_safe_path(root, target): + """安全检查:防止路径穿越""" + return os.path.normpath(target).startswith(os.path.normpath(root)) diff --git a/flask-dev-api/utils/rvc_worker.py b/flask-dev-api/utils/rvc_worker.py new file mode 100644 index 0000000..3eaaae6 --- /dev/null +++ b/flask-dev-api/utils/rvc_worker.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +""" +RVC 变声后台工作进程 +通过 stdin/stdout 二进制协议与 Flask 通信 +sys.stdout 重定向到 stderr,防止 RVC 的 print() 污染通信通道 +""" +import sys +import os +import json +import struct +import traceback + +_comm_stdout = sys.stdout.buffer +sys.stdout = sys.stderr + +rvc_dir = sys.argv[1] if len(sys.argv) > 1 else os.path.dirname(os.path.abspath(__file__)) +os.chdir(rvc_dir) +if rvc_dir not in sys.path: + sys.path.insert(0, rvc_dir) + +# 必须在 Config() 之前,防止 argparse 解析失败 +sys.argv = sys.argv[:1] + + +def send_msg(obj): + data = json.dumps(obj, ensure_ascii=False).encode('utf-8') + _comm_stdout.write(struct.pack(' 1 else os.path.dirname(os.path.abspath(__file__)) +os.chdir(sovits_dir) +if sovits_dir not in sys.path: + sys.path.insert(0, sovits_dir) +gpt_sovits_dir = os.path.join(sovits_dir, 'GPT_SoVITS') +if gpt_sovits_dir not in sys.path: + sys.path.insert(0, gpt_sovits_dir) + + +def send_msg(obj): + data = json.dumps(obj, ensure_ascii=False).encode('utf-8') + _comm_stdout.write(struct.pack(' 2 else 'GPT_SoVITS/configs/tts_infer.yaml' + + try: + from GPT_SoVITS.TTS_infer_pack.TTS import TTS, TTS_Config + + yaml_path = os.path.join(sovits_dir, config_yaml) + tts_config = TTS_Config(yaml_path) + tts_engine = TTS(tts_config) + version = getattr(tts_config, 'version', 'unknown') + send_msg({'type': 'ready', 'version': version}) + except Exception as e: + send_msg({'type': 'error', 'error': traceback.format_exc()}) + return + + import numpy as np + import wave + + while True: + req = recv_msg() + if req is None: + break + + msg_type = req.get('type') + + if msg_type == 'exit': + break + + elif msg_type == 'reload_gpt': + try: + tts_engine.init_t2s_weights(req['path']) + send_msg({'type': 'done'}) + except Exception as e: + send_msg({'type': 'error', 'error': traceback.format_exc()}) + + elif msg_type == 'reload_sovits': + try: + tts_engine.init_vits_weights(req['path']) + send_msg({'type': 'done'}) + except Exception as e: + send_msg({'type': 'error', 'error': traceback.format_exc()}) + + elif msg_type == 'synthesize': + try: + inputs = req['inputs'] + output_path = req['output_path'] + tts_generator = tts_engine.run(inputs) + sr, audio_data = next(tts_generator) + + if audio_data.dtype != np.int16: + if audio_data.max() <= 1.0: + audio_data = (audio_data * 32767).astype(np.int16) + else: + audio_data = audio_data.astype(np.int16) + + with wave.open(output_path, 'w') as wf: + wf.setnchannels(1) + wf.setsampwidth(2) + wf.setframerate(sr) + wf.writeframes(audio_data.tobytes()) + + send_msg({'type': 'done', 'output_path': output_path}) + except Exception as e: + send_msg({'type': 'error', 'error': traceback.format_exc()}) + + +if __name__ == '__main__': + main() diff --git a/flask-dev-api/utils/stats_db.py b/flask-dev-api/utils/stats_db.py new file mode 100644 index 0000000..8b71b76 --- /dev/null +++ b/flask-dev-api/utils/stats_db.py @@ -0,0 +1,589 @@ +# -*- coding: utf-8 -*- +""" +接口调用统计模块 +使用 SQLite 存储调用记录,支持按日/月查询 +""" +import sqlite3 +import os +from datetime import datetime, timedelta + +DB_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'stats.db') +try: + from config import BASE_DIR + DB_PATH = os.path.join(BASE_DIR, 'stats.db') +except ImportError: + pass + + +def _get_conn(): + conn = sqlite3.connect(DB_PATH) + conn.row_factory = sqlite3.Row + return conn + + +def init_db(): + conn = _get_conn() + conn.execute(''' + CREATE TABLE IF NOT EXISTS api_calls ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + endpoint TEXT NOT NULL, + method TEXT NOT NULL, + status_code INTEGER, + duration_ms REAL, + called_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + ''') + conn.execute(''' + CREATE TABLE IF NOT EXISTS search_history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + keyword TEXT NOT NULL, + root_path TEXT NOT NULL, + result_count INTEGER DEFAULT 0, + searched_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + ''') + conn.execute(''' + CREATE TABLE IF NOT EXISTS recent_paths ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + path TEXT NOT NULL UNIQUE, + last_used TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + ''') + conn.execute(''' + CREATE TABLE IF NOT EXISTS content_tag_settings ( + id INTEGER PRIMARY KEY CHECK (id = 1), + system_msg TEXT, + user_msg TEXT, + max_tags INTEGER DEFAULT 10, + min_length INTEGER DEFAULT 2, + max_length INTEGER DEFAULT 6 + ) + ''') + conn.execute('INSERT OR IGNORE INTO content_tag_settings (id) VALUES (1)') + conn.commit() + conn.close() + + +def record_call(endpoint, method, status_code, duration_ms): + conn = _get_conn() + conn.execute( + 'INSERT INTO api_calls (endpoint, method, status_code, duration_ms) VALUES (?, ?, ?, ?)', + (endpoint, method, status_code, round(duration_ms, 2)) + ) + conn.commit() + conn.close() + + +def get_total_count(): + conn = _get_conn() + row = conn.execute('SELECT COUNT(*) as cnt FROM api_calls').fetchone() + conn.close() + return row['cnt'] + + +def get_avg_duration(): + conn = _get_conn() + row = conn.execute('SELECT AVG(duration_ms) as avg_dur FROM api_calls').fetchone() + conn.close() + return round(row['avg_dur'] or 0, 2) + + +def get_daily_counts(days=30): + since = (datetime.now() - timedelta(days=days)).strftime('%Y-%m-%d') + conn = _get_conn() + rows = conn.execute( + "SELECT DATE(called_at, '+8 hours') as day, COUNT(*) as cnt " + "FROM api_calls WHERE DATE(called_at, '+8 hours') >= ? " + "GROUP BY day ORDER BY day", + (since,) + ).fetchall() + conn.close() + return [{'date': r['day'], 'count': r['cnt']} for r in rows] + + +def get_monthly_counts(year=None): + conn = _get_conn() + if year: + rows = conn.execute( + "SELECT strftime('%Y-%m', called_at, '+8 hours') as month, COUNT(*) as cnt " + "FROM api_calls WHERE strftime('%Y', called_at, '+8 hours') = ? " + "GROUP BY month ORDER BY month", + (str(year),) + ).fetchall() + else: + rows = conn.execute( + "SELECT strftime('%Y-%m', called_at, '+8 hours') as month, COUNT(*) as cnt " + "FROM api_calls GROUP BY month ORDER BY month" + ).fetchall() + conn.close() + return [{'month': r['month'], 'count': r['cnt']} for r in rows] + + +def get_available_years(): + conn = _get_conn() + rows = conn.execute( + "SELECT DISTINCT strftime('%Y', called_at, '+8 hours') as year " + "FROM api_calls ORDER BY year DESC" + ).fetchall() + conn.close() + return [r['year'] for r in rows] + + +def get_available_months(year): + conn = _get_conn() + rows = conn.execute( + "SELECT DISTINCT strftime('%m', called_at, '+8 hours') as month " + "FROM api_calls WHERE strftime('%Y', called_at, '+8 hours') = ? " + "ORDER BY month", + (str(year),) + ).fetchall() + conn.close() + return [r['month'] for r in rows] + + +def get_daily_counts_by_month(year, month): + ym_prefix = f'{year}-{month:02d}' + conn = _get_conn() + rows = conn.execute( + "SELECT strftime('%d', called_at, '+8 hours') as day, COUNT(*) as cnt " + "FROM api_calls WHERE strftime('%Y-%m', called_at, '+8 hours') = ? " + "GROUP BY day ORDER BY day", + (ym_prefix,) + ).fetchall() + conn.close() + day_map = {r['day']: r['cnt'] for r in rows} + # 获取该月天数 + import calendar + _, days_in_month = calendar.monthrange(int(year), int(month)) + return [{'date': f'{ym_prefix}-{d:02d}', 'day': str(d), 'count': day_map.get(f'{d:02d}', 0)} for d in range(1, days_in_month + 1)] + + +def get_hourly_counts(date_str): + conn = _get_conn() + rows = conn.execute( + "SELECT strftime('%H', called_at, '+8 hours') as hour, COUNT(*) as cnt " + "FROM api_calls WHERE DATE(called_at, '+8 hours') = ? " + "GROUP BY hour ORDER BY hour", + (date_str,) + ).fetchall() + conn.close() + hour_map = {r['hour']: r['cnt'] for r in rows} + return [{'hour': f'{h:02d}', 'count': hour_map.get(f'{h:02d}', 0)} for h in range(24)] + + +def get_endpoint_stats(date=None): + conn = _get_conn() + if date: + rows = conn.execute( + "SELECT endpoint, COUNT(*) as cnt, AVG(duration_ms) as avg_dur " + "FROM api_calls WHERE DATE(called_at, '+8 hours') = ? " + "GROUP BY endpoint ORDER BY cnt DESC", + (date,) + ).fetchall() + else: + rows = conn.execute( + "SELECT endpoint, COUNT(*) as cnt, AVG(duration_ms) as avg_dur " + "FROM api_calls GROUP BY endpoint ORDER BY cnt DESC" + ).fetchall() + conn.close() + return [{'endpoint': r['endpoint'], 'count': r['cnt'], 'avg_duration': round(r['avg_dur'] or 0, 2)} for r in rows] + + +def get_today_count(): + conn = _get_conn() + row = conn.execute( + "SELECT COUNT(*) as cnt FROM api_calls WHERE DATE(called_at, '+8 hours') = DATE('now', '+8 hours')" + ).fetchone() + conn.close() + return row['cnt'] + + +def get_month_count(): + conn = _get_conn() + row = conn.execute( + "SELECT COUNT(*) as cnt FROM api_calls WHERE strftime('%Y-%m', called_at, '+8 hours') = strftime('%Y-%m', 'now', '+8 hours')" + ).fetchone() + conn.close() + return row['cnt'] + + +def get_yesterday_count(): + conn = _get_conn() + row = conn.execute( + "SELECT COUNT(*) as cnt FROM api_calls WHERE DATE(called_at, '+8 hours') = DATE('now', '+8 hours', '-1 day')" + ).fetchone() + conn.close() + return row['cnt'] + + +def get_success_rate(): + conn = _get_conn() + total = conn.execute("SELECT COUNT(*) as cnt FROM api_calls").fetchone()['cnt'] + if total == 0: + conn.close() + return 100.0 + success = conn.execute("SELECT COUNT(*) as cnt FROM api_calls WHERE status_code >= 200 AND status_code < 300").fetchone()['cnt'] + conn.close() + return round(success / total * 100, 1) + + +def get_duration_distribution(): + conn = _get_conn() + ranges = [ + ('<100ms', 0, 100), + ('100-500ms', 100, 500), + ('0.5-1s', 500, 1000), + ('1-3s', 1000, 3000), + ('3-10s', 3000, 10000), + ('>10s', 10000, 999999999), + ] + result = [] + for label, lo, hi in ranges: + cnt = conn.execute( + "SELECT COUNT(*) as cnt FROM api_calls WHERE duration_ms >= ? AND duration_ms < ?", (lo, hi) + ).fetchone()['cnt'] + result.append({'label': label, 'count': cnt}) + conn.close() + return result + + +def get_slowest_endpoints(limit=5): + conn = _get_conn() + rows = conn.execute( + "SELECT endpoint, AVG(duration_ms) as avg_dur, MAX(duration_ms) as max_dur, COUNT(*) as cnt " + "FROM api_calls GROUP BY endpoint ORDER BY avg_dur DESC LIMIT ?", (limit,) + ).fetchall() + conn.close() + return [{ + 'endpoint': r['endpoint'], + 'avg_duration': round(r['avg_dur'] or 0, 2), + 'max_duration': round(r['max_dur'] or 0, 2), + 'count': r['cnt'] + } for r in rows] + + +def get_week_compare(): + conn = _get_conn() + this_week = [] + last_week = [] + for i in range(7): + # 本周: 今天往前 i 天 + row = conn.execute( + "SELECT COUNT(*) as cnt FROM api_calls WHERE DATE(called_at, '+8 hours') = DATE('now', '+8 hours', ?)", + (f'-{i} day',) + ).fetchone() + this_week.append(row['cnt']) + # 上周: 本周对应天数再往前 7 天 + row = conn.execute( + "SELECT COUNT(*) as cnt FROM api_calls WHERE DATE(called_at, '+8 hours') = DATE('now', '+8 hours', ?)", + (f'-{i + 7} day',) + ).fetchone() + last_week.append(row['cnt']) + conn.close() + # 返回按周一到周日顺序(今天是 index 0,需要反转) + this_week.reverse() + last_week.reverse() + # 生成日期标签 + from datetime import datetime, timedelta + today = datetime.now() + weekday = today.weekday() # 0=周一 + labels = [] + for i in range(7): + d = today - timedelta(days=weekday - i) + labels.append(d.strftime('%m-%d')) + return {'labels': labels, 'this_week': this_week, 'last_week': last_week} + + +def get_recent_calls(limit=20): + conn = _get_conn() + rows = conn.execute( + "SELECT endpoint, method, status_code, duration_ms, " + "strftime('%Y-%m-%d %H:%M:%S', called_at, '+8 hours') as called_at " + "FROM api_calls ORDER BY called_at DESC LIMIT ?", (limit,) + ).fetchall() + conn.close() + return [dict(r) for r in rows] + + +def get_active_days(): + conn = _get_conn() + row = conn.execute( + "SELECT COUNT(DISTINCT DATE(called_at, '+8 hours')) as cnt FROM api_calls" + ).fetchone() + # 连续活跃天数 + rows = conn.execute( + "SELECT DISTINCT DATE(called_at, '+8 hours') as day FROM api_calls ORDER BY day DESC" + ).fetchall() + conn.close() + total_days = row['cnt'] + streak = 0 + if rows: + from datetime import datetime, timedelta + today = datetime.now().strftime('%Y-%m-%d') + expected = today + for r in rows: + if r['day'] == expected: + streak += 1 + d = datetime.strptime(expected, '%Y-%m-%d') - timedelta(days=1) + expected = d.strftime('%Y-%m-%d') + else: + break + return {'total_days': total_days, 'streak': streak} + + +# ===== 搜索历史 ===== + +def add_search(keyword, root_path, result_count): + conn = _get_conn() + conn.execute( + 'INSERT INTO search_history (keyword, root_path, result_count) VALUES (?, ?, ?)', + (keyword, root_path, result_count) + ) + conn.commit() + conn.close() + + +def get_search_history(root_path, limit=20): + conn = _get_conn() + rows = conn.execute( + "SELECT id, keyword, result_count, strftime('%Y-%m-%d %H:%M', searched_at, '+8 hours') as searched_at " + "FROM search_history WHERE root_path = ? ORDER BY searched_at DESC LIMIT ?", + (root_path, limit) + ).fetchall() + conn.close() + return [dict(r) for r in rows] + + +def delete_search_history(ids): + if not ids: + return + conn = _get_conn() + placeholders = ','.join('?' for _ in ids) + conn.execute(f'DELETE FROM search_history WHERE id IN ({placeholders})', ids) + conn.commit() + conn.close() + + +def clear_search_history(root_path): + conn = _get_conn() + conn.execute('DELETE FROM search_history WHERE root_path = ?', (root_path,)) + conn.commit() + conn.close() + + +# ===== 最近访问路径 ===== + +def add_recent_path(path): + conn = _get_conn() + conn.execute( + 'INSERT INTO recent_paths (path, last_used) VALUES (?, CURRENT_TIMESTAMP) ' + 'ON CONFLICT(path) DO UPDATE SET last_used = CURRENT_TIMESTAMP', + (path,) + ) + conn.commit() + conn.close() + + +def get_recent_paths(limit=8): + conn = _get_conn() + rows = conn.execute( + "SELECT id, path, strftime('%Y-%m-%d %H:%M', last_used, '+8 hours') as last_used " + "FROM recent_paths ORDER BY last_used DESC LIMIT ?", + (limit,) + ).fetchall() + conn.close() + return [dict(r) for r in rows] + + +def delete_recent_path(path): + conn = _get_conn() + conn.execute('DELETE FROM recent_paths WHERE path = ?', (path,)) + conn.commit() + conn.close() + + +def clear_recent_paths(): + conn = _get_conn() + conn.execute('DELETE FROM recent_paths') + conn.commit() + conn.close() + + +# ===== 通用 CRUD(数据管理) ===== + +ALLOWED_TABLES = { + 'api_calls': { + 'columns': ['endpoint', 'method', 'status_code', 'duration_ms', 'called_at'], + 'searchable': ['endpoint', 'method'], + }, + 'search_history': { + 'columns': ['keyword', 'root_path', 'result_count', 'searched_at'], + 'searchable': ['keyword', 'root_path'], + }, + 'recent_paths': { + 'columns': ['path', 'last_used'], + 'searchable': ['path'], + }, +} + +DISPLAY_COLUMNS = { + 'api_calls': 'id, endpoint, method, status_code, duration_ms, strftime("%Y-%m-%d %H:%M:%S", called_at, "+8 hours") as called_at', + 'search_history': 'id, keyword, root_path, result_count, strftime("%Y-%m-%d %H:%M", searched_at, "+8 hours") as searched_at', + 'recent_paths': 'id, path, strftime("%Y-%m-%d %H:%M", last_used, "+8 hours") as last_used', +} + + +def get_table_info(): + conn = _get_conn() + result = [] + for table in ALLOWED_TABLES: + row = conn.execute(f'SELECT COUNT(*) as cnt FROM {table}').fetchone() + result.append({'table': table, 'count': row['cnt']}) + conn.close() + return result + + +def get_table_rows(table, page=1, page_size=20, search=''): + if table not in ALLOWED_TABLES: + return [] + cols = DISPLAY_COLUMNS[table] + offset = (page - 1) * page_size + conn = _get_conn() + if search: + searchable = ALLOWED_TABLES[table]['searchable'] + conditions = ' OR '.join(f'{col} LIKE ?' for col in searchable) + params = [f'%{search}%'] * len(searchable) + [page_size, offset] + rows = conn.execute( + f'SELECT {cols} FROM {table} WHERE {conditions} ORDER BY id DESC LIMIT ? OFFSET ?', + params + ).fetchall() + else: + rows = conn.execute( + f'SELECT {cols} FROM {table} ORDER BY id DESC LIMIT ? OFFSET ?', + (page_size, offset) + ).fetchall() + conn.close() + return [dict(r) for r in rows] + + +def get_table_count(table, search=''): + if table not in ALLOWED_TABLES: + return 0 + conn = _get_conn() + if search: + searchable = ALLOWED_TABLES[table]['searchable'] + conditions = ' OR '.join(f'{col} LIKE ?' for col in searchable) + params = [f'%{search}%'] * len(searchable) + row = conn.execute(f'SELECT COUNT(*) as cnt FROM {table} WHERE {conditions}', params).fetchone() + else: + row = conn.execute(f'SELECT COUNT(*) as cnt FROM {table}').fetchone() + conn.close() + return row['cnt'] + + +def insert_row(table, data): + if table not in ALLOWED_TABLES: + return None + allowed_cols = ALLOWED_TABLES[table]['columns'] + cols = [] + vals = [] + for col in allowed_cols: + if col in data and data[col] != '': + cols.append(col) + vals.append(data[col]) + if not cols: + return None + placeholders = ','.join('?' for _ in cols) + col_str = ','.join(cols) + conn = _get_conn() + cur = conn.execute(f'INSERT INTO {table} ({col_str}) VALUES ({placeholders})', vals) + conn.commit() + new_id = cur.lastrowid + conn.close() + return new_id + + +def update_row(table, row_id, data): + if table not in ALLOWED_TABLES: + return False + allowed_cols = ALLOWED_TABLES[table]['columns'] + sets = [] + vals = [] + for col in allowed_cols: + if col in data: + sets.append(f'{col} = ?') + vals.append(data[col]) + if not sets: + return False + vals.append(row_id) + conn = _get_conn() + conn.execute(f'UPDATE {table} SET {",".join(sets)} WHERE id = ?', vals) + conn.commit() + conn.close() + return True + + +def delete_rows(table, ids): + if table not in ALLOWED_TABLES or not ids: + return 0 + conn = _get_conn() + placeholders = ','.join('?' for _ in ids) + cur = conn.execute(f'DELETE FROM {table} WHERE id IN ({placeholders})', ids) + conn.commit() + deleted = cur.rowcount + conn.close() + return deleted + + +def clear_table(table): + if table not in ALLOWED_TABLES: + return 0 + conn = _get_conn() + cur = conn.execute(f'DELETE FROM {table}') + conn.commit() + deleted = cur.rowcount + conn.close() + return deleted + + +# ===== 文章标签设置 ===== + +DEFAULT_CONTENT_TAG_SETTINGS = { + 'system_msg': "你是一个专门生成文章标签的助手,请你根据我给你的文章的内容总结并生成一系列的标签,格式可以参考[关键词1, 关键词2, 关键词3].你只需要给我生成这种形式的标签即可,其他分析内容无需输出.", + 'user_msg': "请严格按照以下要求,从提供的文章内容中提取关键词。\n\n文章内容:\n{content}\n\n要求:\n- 提取最多 {max_tags} 个最能概括文章主旨和核心概念的关键词。\n- 关键词必须来源于文章内容,准确反映文章主题。\n- 每个关键词的长度必须在 {min_length} 到 {max_length} 个字符之间。\n- 输出格式为:关键词1, 关键词2, 关键词3, ...\n- 只输出关键词列表,不要有任何其他解释或前缀。", + 'max_tags': 10, + 'min_length': 2, + 'max_length': 6, +} + + +def get_content_tag_settings(): + conn = _get_conn() + row = conn.execute('SELECT * FROM content_tag_settings WHERE id = 1').fetchone() + conn.close() + if not row: + return DEFAULT_CONTENT_TAG_SETTINGS + return { + 'system_msg': row['system_msg'] or DEFAULT_CONTENT_TAG_SETTINGS['system_msg'], + 'user_msg': row['user_msg'] or DEFAULT_CONTENT_TAG_SETTINGS['user_msg'], + 'max_tags': row['max_tags'] if row['max_tags'] is not None else DEFAULT_CONTENT_TAG_SETTINGS['max_tags'], + 'min_length': row['min_length'] if row['min_length'] is not None else DEFAULT_CONTENT_TAG_SETTINGS['min_length'], + 'max_length': row['max_length'] if row['max_length'] is not None else DEFAULT_CONTENT_TAG_SETTINGS['max_length'], + } + + +def update_content_tag_settings(data): + allowed = ['system_msg', 'user_msg', 'max_tags', 'min_length', 'max_length'] + sets = [] + vals = [] + for col in allowed: + if col in data: + sets.append(f'{col} = ?') + vals.append(data[col]) + if not sets: + return False + conn = _get_conn() + conn.execute(f'UPDATE content_tag_settings SET {", ".join(sets)} WHERE id = 1', vals) + conn.commit() + conn.close() + return True diff --git a/www_comments/__pycache__/config.cpython-312.pyc b/www_comments/__pycache__/config.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12533b61e547bf365e9c7a2ad47eb59a93b3f263 GIT binary patch literal 725 zcmZ`%y>Hq;6hDIj^JNm6s*N(VLzgTFMQ!Pqik#XIR00TtqFP8Nm%9WUY$MwdGLu&( z)Tzmoj#T+OI#sGvv7qZxsZ+K{*)sJ^YSAU{bno|jzx#ae?t40&0Mw%2;@T$$fIof^ zSmYnM{z1uSfB<3!KmjPEFet2q5UYeyL}5`>iJ+Jg#X#eOr7P6dS3F>M%)A$juMj6L z=&gJUP)Xjgdh>SP{~jk1hvFCETTMx$gu>IFahdJpr7zaVhHIW!(8gU0JMb90u!k)? zj^%U9)}K8FphO}n()$KUjeDx;s>V_NWqyaSNOjb4x@+n>HXJ*r*`{&n7jt`!giMJnRoJgoN7_WC@CuCSf&`UN0^REdiD)Rf%L8LRo@xMUmk07?NEH zrDna>l4{~taP61iW>0+8Y1`NmX*wMd+sBSM?C35WTBg<+x)5RAr0Dca1KM4yKXf{y z(Fg{4ceyJF1@)SQUObXNDqUN|e97te~b7xS&B^W-y+ThQV1q&%%os;3XX aJf9Wksn=focXq?eEbc$}39^>|3;qJbxwzH< literal 0 HcmV?d00001 diff --git a/www_comments/app.py b/www_comments/app.py new file mode 100644 index 0000000..0854842 --- /dev/null +++ b/www_comments/app.py @@ -0,0 +1,287 @@ +from flask import Flask, request, jsonify, render_template, session, redirect, url_for +from flask_cors import CORS +import json +import os +from datetime import datetime +import hashlib +from config import * + +app = Flask(__name__) +CORS(app) # 允许跨域请求 +app.secret_key = SECRET_KEY + +# 数据文件路径已在 config.py 中定义 +# DATA_FILE = os.path.join(os.path.dirname(__file__), 'data', 'comments.json') + +def read_comments(): + """读取评论数据""" + try: + if os.path.exists(DATA_FILE): + with open(DATA_FILE, 'r', encoding='utf-8') as f: + return json.load(f) + return {"comments": []} + except Exception as e: + print(f"读取数据失败: {e}") + return {"comments": []} + +def save_comments(data): + """保存评论数据""" + os.makedirs(os.path.dirname(DATA_FILE), exist_ok=True) + with open(DATA_FILE, 'w', encoding='utf-8') as f: + json.dump(data, f, ensure_ascii=False, indent=2) + +def parse_user_agent(ua): + """解析 User Agent 获取浏览器和系统信息""" + browser = 'Unknown' + os_name = 'Unknown' + + # 浏览器检测 + if 'Chrome' in ua and 'Edge' not in ua: + browser = 'Chrome' + elif 'Firefox' in ua: + browser = 'Firefox' + elif 'Safari' in ua and 'Chrome' not in ua: + browser = 'Safari' + elif 'Edge' in ua: + browser = 'Edge' + + # 系统检测 + if 'Windows' in ua: + os_name = 'Windows' + elif 'Mac' in ua: + os_name = 'macOS' + elif 'Linux' in ua: + os_name = 'Linux' + elif 'Android' in ua: + os_name = 'Android' + elif 'iPhone' in ua or 'iPad' in ua: + os_name = 'iOS' + + return browser, os_name + +@app.route('/api/comment', methods=['GET']) +def get_comments(): + """获取评论列表(前端展示用,仅返回已审核)""" + try: + page = int(request.args.get('page', 1)) + page_size = int(request.args.get('pageSize', PAGE_SIZE_FRONTEND)) + + data = read_comments() + + # 过滤已审核的评论 + filtered = [c for c in data['comments'] + if c.get('status') == 'approved'] + + # 按时间倒序排序 + filtered.sort(key=lambda x: x.get('time', 0), reverse=True) + + total_count = len(filtered) + total_pages = (total_count + page_size - 1) // page_size + + # 分页 + start = (page - 1) * page_size + end = start + page_size + paged_comments = filtered[start:end] + + return jsonify({ + 'errno': 0, + 'errmsg': '', + 'data': { + 'page': page, + 'totalPages': total_pages, + 'pageSize': page_size, + 'count': total_count, + 'data': paged_comments + } + }) + except Exception as e: + return jsonify({ + 'errno': 1, + 'errmsg': str(e) + }), 500 + +# 管理员账号配置已在 config.py 中定义 +# ADMIN_USERNAME = 'admin' +# ADMIN_PASSWORD = 'zhaoyang0902' + +def login_required(f): + """登录验证装饰器""" + from functools import wraps + @wraps(f) + def decorated_function(*args, **kwargs): + if not session.get('logged_in'): + return redirect(url_for('login_page')) + return f(*args, **kwargs) + return decorated_function + +@app.route('/login') +def login_page(): + """登录页面""" + return render_template('login.html') + +@app.route('/api/login', methods=['POST']) +def do_login(): + """处理登录请求""" + data = request.get_json() + username = data.get('username') + password = data.get('password') + + if username == ADMIN_USERNAME and password == ADMIN_PASSWORD: + session['logged_in'] = True + return jsonify({'errno': 0, 'errmsg': '登录成功'}) + else: + return jsonify({'errno': 1, 'errmsg': '用户名或密码错误'}), 401 + +@app.route('/logout') +def logout(): + """退出登录""" + session.pop('logged_in', None) + return redirect(url_for('login_page')) + +@app.route('/admin') +@login_required +def admin_page(): + """后台管理页面""" + return render_template('admin.html') + +@app.route('/api/admin/comments', methods=['GET']) +@login_required +def get_admin_comments(): + """获取所有评论(后台管理用)""" + try: + status_filter = request.args.get('status', '') + keyword = request.args.get('keyword', '').lower() + page = int(request.args.get('page', 1)) + page_size = int(request.args.get('pageSize', PAGE_SIZE_ADMIN)) + + data = read_comments() + comments = data['comments'] + + # 状态过滤 + if status_filter: + comments = [c for c in comments if c.get('status') == status_filter] + else: + # 全部状态下默认不显示已删除的评论 + comments = [c for c in comments if c.get('status') != 'deleted'] + + # 关键词搜索(昵称或内容) + if keyword: + comments = [c for c in comments if + keyword in c.get('nick', '').lower() or + keyword in c.get('comment', '').lower()] + + # 按时间倒序排序 + comments.sort(key=lambda x: x.get('time', 0), reverse=True) + + total_count = len(comments) + total_pages = (total_count + page_size - 1) // page_size if total_count > 0 else 0 + + # 分页 + start = (page - 1) * page_size + end = start + page_size + paged_comments = comments[start:end] + + return jsonify({ + 'errno': 0, + 'data': { + 'list': paged_comments, + 'total': total_count, + 'page': page, + 'pageSize': page_size, + 'totalPages': total_pages + } + }) + except Exception as e: + return jsonify({ + 'errno': 1, + 'errmsg': str(e) + }), 500 + +@app.route('/api/admin/comment/', methods=['PUT']) +@login_required +def update_comment_status(comment_id): + """更新评论状态""" + try: + update_data = request.get_json() + new_status = update_data.get('status') + + if new_status not in ['approved', 'spam', 'deleted']: + return jsonify({'errno': 1, 'errmsg': '无效的状态'}), 400 + + data = read_comments() + found = False + for c in data['comments']: + if c['id'] == comment_id: + c['status'] = new_status + found = True + break + + if not found: + return jsonify({'errno': 1, 'errmsg': '评论不存在'}), 404 + + save_comments(data) + return jsonify({'errno': 0, 'errmsg': '更新成功'}) + except Exception as e: + return jsonify({ + 'errno': 1, + 'errmsg': str(e) + }), 500 + +@app.route('/api/comment', methods=['POST']) +def add_comment(): + """添加评论""" + try: + comment_data = request.get_json() + + if not comment_data: + return jsonify({ + 'errno': 1, + 'errmsg': '无效的数据' + }), 400 + + data = read_comments() + + # 生成新 ID + new_id = max([c.get('id', 0) for c in data['comments']], default=0) + 1 + + # 解析 User Agent + ua = comment_data.get('ua', '') + browser, os_name = parse_user_agent(ua) + + # 生成头像(基于邮箱 MD5) + email = comment_data.get('mail', '') + avatar_hash = hashlib.md5(email.encode('utf-8')).hexdigest() + avatar = f'https://seccdn.libravatar.org/avatar/{avatar_hash}' + + # 创建新评论 + new_comment = { + 'id': new_id, + 'nick': comment_data.get('nick', '匿名'), + 'mail': comment_data.get('mail', ''), + 'link': comment_data.get('link', ''), + 'comment': f"

{comment_data.get('comment', '')}

\n", + 'ua': ua, + 'browser': browser, + 'os': os_name, + 'avatar': avatar, + 'time': int(datetime.now().timestamp() * 1000), + 'status': 'approved' # 直接审核通过 + } + + # 添加到数据中 + data['comments'].append(new_comment) + save_comments(data) + + return jsonify({ + 'errno': 0, + 'errmsg': '', + 'data': new_comment + }) + except Exception as e: + return jsonify({ + 'errno': 1, + 'errmsg': str(e) + }), 500 + +if __name__ == '__main__': + app.run(host=HOST, port=PORT, debug=DEBUG) diff --git a/www_comments/config.py b/www_comments/config.py new file mode 100644 index 0000000..14dbd99 --- /dev/null +++ b/www_comments/config.py @@ -0,0 +1,18 @@ +import os + +# 基础配置 +SECRET_KEY = 'your_secret_key_here' +HOST = '0.0.0.0' +PORT = 27052 +DEBUG = False + +# 管理员账号配置 +ADMIN_USERNAME = 'admin' +ADMIN_PASSWORD = 'zhaoyang0902' + +# 数据文件路径 +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +DATA_FILE = os.path.join(BASE_DIR, 'data', 'comments.json') +# 分页配置 +PAGE_SIZE_ADMIN = 10 +PAGE_SIZE_FRONTEND = 10 diff --git a/www_comments/data/comments.json b/www_comments/data/comments.json new file mode 100644 index 0000000..1653285 --- /dev/null +++ b/www_comments/data/comments.json @@ -0,0 +1,296 @@ +{ + "comments": [ + { + "id": 1, + "nick": "11", + "mail": "", + "link": "", + "comment": "

你好

\n", + "path": "/", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "addr": "", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017455207, + "status": "approved", + "children": [] + }, + { + "id": 2, + "nick": "请求", + "mail": "", + "link": "", + "comment": "

我问问

\n", + "path": "/", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "addr": "", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017466951, + "status": "approved", + "children": [] + }, + { + "id": 3, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

问问

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017669444, + "status": "approved" + }, + { + "id": 4, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

2222

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017710808, + "status": "approved" + }, + { + "id": 5, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

2222

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017713660, + "status": "approved" + }, + { + "id": 6, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

4344

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017717190, + "status": "approved" + }, + { + "id": 7, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

2222

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017720134, + "status": "approved" + }, + { + "id": 8, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

4654

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017724265, + "status": "approved" + }, + { + "id": 9, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

654123

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017730620, + "status": "approved" + }, + { + "id": 10, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

1212121

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017733598, + "status": "approved" + }, + { + "id": 11, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

232323

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017740235, + "status": "approved" + }, + { + "id": 12, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

wqwqeqwe

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779017750720, + "status": "approved" + }, + { + "id": 13, + "nick": "18631839859@163.com", + "mail": "18631839859@163.com", + "link": "", + "comment": "

111

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/04c4cbe3c40de052eddb2cf240b2449e", + "time": 1779020082296, + "status": "approved" + }, + { + "id": 14, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

测试数据

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779020759506, + "status": "approved" + }, + { + "id": 15, + "nick": "1111", + "mail": "", + "link": "", + "comment": "

www

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779024269862, + "status": "approved" + }, + { + "id": 16, + "nick": "1111", + "mail": "", + "link": "", + "comment": "

www

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779024271274, + "status": "approved" + }, + { + "id": 17, + "nick": "222", + "mail": "", + "link": "", + "comment": "

12121

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779024413575, + "status": "approved" + }, + { + "id": 18, + "nick": "2222", + "mail": "", + "link": "", + "comment": "

12123w

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779025241541, + "status": "approved" + }, + { + "id": 19, + "nick": "sadadadas", + "mail": "", + "link": "", + "comment": "

dasdada

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779025245378, + "status": "approved" + }, + { + "id": 20, + "nick": "wqeqewq", + "mail": "", + "link": "", + "comment": "

sdadad

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779025249121, + "status": "approved" + }, + { + "id": 21, + "nick": "32424", + "mail": "", + "link": "", + "comment": "

2342424

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779025259840, + "status": "deleted" + }, + { + "id": 22, + "nick": "匿名", + "mail": "", + "link": "", + "comment": "

eee

\n", + "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36", + "browser": "Chrome", + "os": "Windows", + "avatar": "https://seccdn.libravatar.org/avatar/d41d8cd98f00b204e9800998ecf8427e", + "time": 1779033891008, + "status": "approved" + } + ] +} \ No newline at end of file diff --git a/www_comments/requirements.txt b/www_comments/requirements.txt new file mode 100644 index 0000000..4017e14 --- /dev/null +++ b/www_comments/requirements.txt @@ -0,0 +1,2 @@ +flask==3.0.0 +flask-cors==4.0.0 diff --git a/www_comments/templates/admin.html b/www_comments/templates/admin.html new file mode 100644 index 0000000..1beb2f8 --- /dev/null +++ b/www_comments/templates/admin.html @@ -0,0 +1,725 @@ + + + + + + 评论后台管理 + + + + +
+
评论后台管理系统
+
+ 欢迎,admin + 退出登录 +
+
+ + + + + +
+
+
评论列表
+ + + + + + + + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + +
昵称评论内容浏览器/系统时间状态操作
加载中...
+
+ + + +
+
+ + + + diff --git a/www_comments/templates/login.html b/www_comments/templates/login.html new file mode 100644 index 0000000..55a39ac --- /dev/null +++ b/www_comments/templates/login.html @@ -0,0 +1,58 @@ + + + + + + 管理员登录 + + + + + + + +