From 18ed4bd36033312a2bf0dc8f4ea52583be4f525f Mon Sep 17 00:00:00 2001 From: SuperMonster003 Date: Wed, 27 Oct 2021 17:19:00 +0800 Subject: [PATCH] =?UTF-8?q?2.2.1=20-=20=E4=BF=AE=E5=A4=8D=E8=83=BD?= =?UTF-8?q?=E9=87=8F=E9=9B=A8=E5=B7=A5=E5=85=B7=E5=AE=9E=E4=BE=8B=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=8F=8A=E8=BF=9E=E7=BB=AD=E8=BF=90=E8=A1=8C/a11yx?= =?UTF-8?q?=E6=97=A0=E9=98=BB=E5=A1=9E=E6=96=B9=E6=B3=95/=E5=86=85?= =?UTF-8?q?=E5=AD=98=E5=B7=A5=E5=85=B7=E4=BB=BB=E5=8A=A1=E6=AE=8B=E4=BD=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 30 ++--- ant-forest-launcher.js | 139 ++++++++++++------------ ant-forest-settings.js | 2 +- assets/docs/CHANGELOG-2.md | 10 ++ assets/docs/TODO.md | 17 ++- modules/ext-a11y.js | 38 ++++--- modules/ext-alipay.js | 20 ++-- modules/ext-app.js | 56 +++++----- modules/ext-console.js | 2 +- modules/ext-crypto.js | 14 ++- modules/ext-device.js | 17 ++- modules/ext-files.js | 31 +++++- modules/ext-images.js | 2 +- modules/ext-storages.js | 41 ++----- modules/ext-timers.js | 98 ++++++++--------- modules/plugin-ant-forest-deployment.js | 1 - modules/plugin-energy-rain.js | 108 +++++++++++------- modules/plugin-memory-info.js | 4 +- project.json | 4 +- tools/ant-forest-deployment-tool.min.js | 2 +- 20 files changed, 347 insertions(+), 289 deletions(-) diff --git a/README.md b/README.md index a2f0624..de62a18 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ GitHub Code Lines GitHub License JetBrains supporter - Todo list + Todo list

@@ -33,15 +33,18 @@ | Status | Task | Date | Cost | Progress | | :---: | --- | :---: | :---: | :---: | -| ✒️ | 推迟任务加入下次关屏选项 | 2021-10-26 11:18:43 | 5 | 0.30 | +| ✔️ | 能量雨加入近似区域点击检测 | 2021-10-27 14:48:18 | 3 | 1 | +| ✔️ | v2.2.0 发布后检查 documents 相关的链接 | 2021-10-26 23:07:16 | 1 | 1 | +| ✒️ | 推迟任务加入下次关屏选项 | 2021-10-26 11:18:43 | 5 | 0.95 | | ✒️ | 启动器模块化 | 2021-10-26 08:25:42 | 10 | 0.01 | | ✒️ | 配置工具模块化 | 2021-10-26 08:24:34 | 10 | 0.00 | | ✒️ | 扩展模块及插件重构 | 2021-10-26 14:37:07 | ! 8 | 0.33 | | ✒️ | 将 tool functions 转换为 OOP | 2021-10-25 22:24:13 | 10 | 0.11 | | ✒️ | 保护地巡护工具 | 2021-10-26 10:34:25 | 9 | 0.20 | | ✒️ | 提取 JSDoc@typedef 到 TS 声明文件 | 2021-10-25 22:25:18 | 10 | 0.94 | +| ✒️ | 自动关闭屏幕配置 (#476) | 2021-10-26 11:15:11 | ! 6 | 0.00 | -> 全部待办事项可参阅 [TODO.md](https://github.com/SuperMonster003/Ant-Forest/blob/master/assets/docs/TODO.md) (共计 55 项) +> 全部待办事项可参阅 [TODO.md](https://github.com/SuperMonster003/Ant-Forest/blob/master/assets/docs/TODO.md) (共计 53 项) ****** @@ -133,7 +136,7 @@ · 本地或服务器还原项目 · 项目更新提示/版本忽略 * 信息加密存储 - · 自动生成密文字典文件 + · 自动生成密 _[`#528`](https://github.com/SuperMonster003/Ant-Forest/issues/528)_文字典文件 · 使用密文存储账户信息/解锁密码等敏感信息 * 账户功能 · 防止其他账户意外收取 (需录入主账户信息) @@ -154,6 +157,16 @@ [comment]: <> (Version history only shows last 3 versions) +# v2.2.1 + +###### 2021/10/27 + +* `修复` 能量雨工具运行时旧窗口实例没有按预期移除的问题 +* `修复` 能量雨工具增加近似区域点击检测避免错误的结束条件检测 _[`issue #527`](https://github.com/SuperMonster003/Ant-Forest/issues/527#issuecomment-952476244)_ _[`#530`](https://github.com/SuperMonster003/Ant-Forest/issues/530)_ +* `修复` imagesx.concat()潜在的内存泄漏问题 _[`issue #527`](https://github.com/SuperMonster003/Ant-Forest/issues/527#issuecomment-952084434)_ +* `修复` a11yx扩展模块无阻塞方法内部arguments的语法错误 _[`issue #527`](https://github.com/SuperMonster003/Ant-Forest/issues/527)_ _[`#530`](https://github.com/SuperMonster003/Ant-Forest/issues/530)_ +* `修复` Pro版本Auto.js内存管理工具重启进程后的任务残余 (试修) _[`issue #528`](https://github.com/SuperMonster003/Ant-Forest/issues/528)_ + # v2.2.0 ###### 2021/10/26 - 代码重构 API变更 项目结构变更 谨慎升级 @@ -203,15 +216,6 @@ * `优化` Pro版本增加对话框按钮自定义颜色设置的支持 * `优化` Pro版本移除获取控件信息对currentPackage()的依赖 -# v2.1.9 - -###### 2021/08/20 - -* `修复` 配置工具无法设置排行榜滑动距离等相关配置项的问题 -* `修复` 获取能量球数据缓存时逻辑错误导致效率提升无效的问题 -* `修复` OCR方案获取倒计时耗时过久未能按预期及时停止的问题 -* `优化` 霍夫变换覆盖检测方法优化以提高成熟能量球识别率 _[`issue #508`](https://github.com/SuperMonster003/Ant-Forest/issues/508#issuecomment-900102913)_ - ##### 更多版本历史可参阅 * [CHANGELOG-2.md](https://github.com/SuperMonster003/Ant-Forest/blob/master/assets/docs/CHANGELOG-2.md) ( 2.x 版本 ) diff --git a/ant-forest-launcher.js b/ant-forest-launcher.js index fa5cbcf..7560f6b 100644 --- a/ant-forest-launcher.js +++ b/ant-forest-launcher.js @@ -1,7 +1,7 @@ /** * Alipay ant forest intelligent collection script launcher - * @since Oct 26, 2021 - * @version 2.2.0 + * @since Oct 27, 2021 + * @version 2.2.1 * @author SuperMonster003 * @see https://github.com/SuperMonster003/Ant-Forest */ @@ -154,50 +154,54 @@ let $$init = { }, }; - $$sel.add('af', '蚂蚁森林') - .add('alipay_home', [/首页|Homepage/, {bi$: [0, cY(0.7), W, H]}]) - .add('af_title', [/蚂蚁森林|Ant Forest/, {bi$: [0, 0, cX(0.4), cY(0.2)]}]) - .add('af_home', /合种|背包|通知|攻略|任务|.*大树养成.*/) - .add('energy_amt', /^\s*\d+(\.\d+)?(k?g|t)\s*$/) - .add('rl_title', $$app.rl_title) - .add('rl_ent', /查看更多好友|View more friends/) - .add('rl_end_idt', /.*没有更多.*/) - .add('list', className('ListView')) - .add('fri_tt', [/.+的蚂蚁森林/, {bi$: [0, 0, cX(0.95), cY(0.2)]}]) - .add('cover_used', /.*使用了.*保护罩.*/) - .add('wait_awhile', /.*稍等片刻.*/) - .add('reload_frst_page', '重新加载') - .add('close_btn', /关闭|Close/) - .add('login_btn', /登录|Log in|.*loginButton/) - .add('login_new_acc', /换个新账号登录|[Aa]dd [Aa]ccount/) - .add('login_other_acc', /换个账号登录|.*switchAccount/) - .add('login_other_mthd_init_pg', /其他登录方式|Other accounts/) - .add('login_other_mthd', /换个方式登录|.*[Ss]w.+[Ll]og.+thod/) - .add('login_by_code', /密码登录|Log ?in with password/) - .add('login_next_step', /下一步|Next|.*nextButton/) - .add('input_lbl_acc', /账号|Account/) - .add('input_lbl_code', /密码|Password/) + $$sel.add('af', ['蚂蚁森林', {isAlipay: true}]) + .add('alipay_home', [/首页|Homepage/, {bi$: [0, cY(0.7), W, H], isAlipay: true}]) + .add('af_title', [/蚂蚁森林|Ant Forest/, {bi$: [0, 0, cX(0.4), cY(0.2)], isAlipay: true}]) + .add('af_home', [/合种|背包|通知|攻略|任务|.*大树养成.*/, {isAlipay: true}]) + .add('energy_amt', [/^\s*\d+(\.\d+)?(k?g|t)\s*$/, {isAlipay: true}]) + .add('rl_title', [$$app.rl_title, {isAlipay: true}]) + .add('rl_ent', [/查看更多好友|View more friends/, {isAlipay: true}]) + .add('rl_end_idt', [/.*没有更多.*/, {isAlipay: true}]) + .add('list', [className('ListView'), {isAlipay: true}]) + .add('fri_tt', [/.+的蚂蚁森林/, {bi$: [0, 0, cX(0.95), cY(0.2)], isAlipay: true}]) + .add('cover_used', [/.*使用了.*保护罩.*/, {isAlipay: true}]) + .add('wait_awhile', [/.*稍等片刻.*/, {isAlipay: true}]) + .add('reload_frst_page', ['重新加载', {isAlipay: true}]) + .add('close_btn', [/关闭|Close/, {isAlipay: true}]) + .add('login_btn', [/登录|Log in|.*loginButton/, {isAlipay: true}]) + .add('login_new_acc', [/换个新账号登录|[Aa]dd [Aa]ccount/, {isAlipay: true}]) + .add('login_other_acc', [/换个账号登录|.*switchAccount/, {isAlipay: true}]) + .add('login_other_mthd_init_pg', [/其他登录方式|Other accounts/, {isAlipay: true}]) + .add('login_other_mthd', [/换个方式登录|.*[Ss]w.+[Ll]og.+thod/, {isAlipay: true}]) + .add('login_by_code', [/密码登录|Log ?in with password/, {isAlipay: true}]) + .add('login_next_step', [/下一步|Next|.*nextButton/, {isAlipay: true}]) .add('input_username', { className: 'EditText', filter: w => /(会员|用户)名|手机|邮箱/.test($$sel.pickup(w, 'txt')), + isAlipay: true, }) .add('input_password', () => { if ($$sel.pickup(/.*(忘记密码|输入.*密码).*/)) { - let wc = $$sel.pickup({className: 'EditText'}, 'wc'); + let wc = $$sel.pickup({className: 'EditText', isAlipay: true}, 'wc'); return wc.length ? wc[wc.length - 1] : null; } return null; }) - .add('switch_to_other_acc', idMatches(/.+_item_account/)) + .add('switch_to_other_acc', { + idMatches: /.+_item_account/, + isAlipay: true, + }) .add('login_err_ensure', idMatches(/.*ensure/)) .add('login_err_msg', (type) => { let _t = type || 'txt'; - return $$sel.pickup(id('com.alipay.mobile.antui:id/message'), _t) - || $$sel.pickup([$$sel.get('login_err_ensure'), 'p2c0>0>0'], _t); + return $$sel.pickup([id('com.alipay.mobile.antui:id/message'), {isAlipay: true}], _t) + || $$sel.pickup([$$sel.get('login_err_ensure'), {isAlipay: true}, 'p2c0>0>0'], _t); }) - .add('acc_logged_out', new RegExp('.*(' + .add('acc_logged_out', [new RegExp('.*(' + /在其他设备登录|logged +in +on +another/.source + '|' - + /.*账号于.*通过.*登录.*|account +logged +on +to/.source + ').*')); + + /.*账号于.*通过.*登录.*|account +logged +on +to/.source + ').*'), { + isAlipay: true, + }]); } function setGlobalFlags() { @@ -3015,7 +3019,7 @@ let $$init = { // instant and private monitors let _ist = instantMonSetter(); - _ist.maxRun().volKeys().globEvt().logOut().newestVer(); + _ist.maxRun().volKeys().globEvt().newestVer(); // monitors put on standby for $$app invoking $$app.monitor = standbyMonSetter(); @@ -3124,7 +3128,7 @@ let $$init = { this._thd = threadsx.start(() => setInterval(() => { if (this.task) { this.task.setMillis(this._next_task_time); - timersx.updateTimedTask(this.task); + timersx.updateTask(this.task); } }, 10e3)); return this; @@ -3511,39 +3515,6 @@ let $$init = { } } }, - logOut() { - threadsx.start(function () { - consolex._('已开启账户登出监测线程'); - - delete $$flag.acc_logged_out; - while (1) { - if ($$sel.getAndCache('acc_logged_out')) { - break; - } - if ($$acc.isInLoginPg()) { - break; - } - sleep(500); - } - $$flag.acc_logged_out = true; - - consolex.$('检测到账户登出状态', 1, 0, 0, -1); - if ($$sel.cache.load('acc_logged_out')) { - consolex.$('账户在其他地方登录'); - } else { - consolex.$('需要登录账户'); - } - - $$acc.main.ensureAvail(); - - consolex.$('尝试自动登录主账户', 1, 0, 0, 1); - if (!$$acc.main.login({direct: true})) { - consolex.$('主账户登录未成功', 8, 4, 0, 2); - } - }); - - return this; - }, newestVer() { projectx.getNewestReleaseCared({ min_version_name: 'v2.0.1', @@ -3807,6 +3778,33 @@ let $$init = { while (!a11yx.wait(() => !_sel(), 600, _itv)); } }), + log_out: new Monitor('账户登出', function () { + delete $$flag.acc_logged_out; + while (1) { + if ($$sel.getAndCache('acc_logged_out')) { + break; + } + if ($$acc.isInLoginPg()) { + break; + } + sleep(500); + } + $$flag.acc_logged_out = true; + + consolex.$('检测到账户登出状态', 1, 0, 0, -1); + if ($$sel.cache.load('acc_logged_out')) { + consolex.$('账户在其他地方登录'); + } else { + consolex.$('需要登录账户'); + } + + $$acc.main.ensureAvail(); + + consolex.$('尝试自动登录主账户', 1, 0, 0, 1); + if (!$$acc.main.login({direct: true})) { + consolex.$('主账户登录未成功', 8, 4, 0, 2); + } + }), }; // constructor(s) // @@ -4330,11 +4328,13 @@ let $$af = { return this; }, home() { + $$app.monitor.log_out.start(); $$app.monitor.unregistered.start(); $$app.monitor.pattern_lock.start(); $$app.page.af.launch(); + $$app.monitor.log_out.disable(); $$app.monitor.unregistered.disable(); $$app.monitor.pattern_lock.disable(); @@ -4361,7 +4361,7 @@ let $$af = { let _tt = ''; let _sel = () => _tt = $$sel.get('af_title', 'txt'); - const _chs = '简体中文'; + let _chs = '简体中文'; if (a11yx.wait(_sel, 10e3, 100)) { if (_tt.match(/蚂蚁森林/)) { @@ -4391,7 +4391,6 @@ let $$af = { // appx.startActivity($$app.intent.general); - let _chs = '简体中文'; return a11yx.pipeline(_chs + '语言切换', [[ 'Me', 'k2', ], { @@ -5428,7 +5427,7 @@ let $$af = { let _gt2 = w => /\d{2}.\d{2}/.test($$sel.pickup(w, 'txt')); while (!_w_cvr && _max--) { for (let w of _getFeedLegends()) { - if (_selCover() || _gt2()) { + if (_selCover() || _gt2(w)) { consolex._('能量罩信息已定位'); break; } @@ -6426,7 +6425,7 @@ let $$af = { consolex._('开始更新自动定时任务'); task.setMillis(_next_ts); return $$app.setStoAutoTask({ - task: timersx.updateTimedTask(task), + task: timersx.updateTask(task), next_ts: _next_ts, next_type: _type.name, }, () => { diff --git a/ant-forest-settings.js b/ant-forest-settings.js index d7f21ad..62df660 100644 --- a/ant-forest-settings.js +++ b/ant-forest-settings.js @@ -6514,7 +6514,7 @@ $$view.page.new('定时任务控制面板', 'timers_control_panel_page', (t) => } else { return; } - return timersx.updateTimedTask(current_task); + return timersx.updateTask(current_task); } } diff --git a/assets/docs/CHANGELOG-2.md b/assets/docs/CHANGELOG-2.md index a41d592..fa6e90a 100644 --- a/assets/docs/CHANGELOG-2.md +++ b/assets/docs/CHANGELOG-2.md @@ -4,6 +4,16 @@ ****** +# v2.2.1 + +###### 2021/10/27 + +* `修复` 能量雨工具运行时旧窗口实例没有按预期移除的问题 +* `修复` 能量雨工具增加近似区域点击检测避免错误的结束条件检测 _[`issue #527`](https://github.com/SuperMonster003/Ant-Forest/issues/527#issuecomment-952476244)_ _[`#530`](https://github.com/SuperMonster003/Ant-Forest/issues/530)_ +* `修复` imagesx.concat()潜在的内存泄漏问题 _[`issue #527`](https://github.com/SuperMonster003/Ant-Forest/issues/527#issuecomment-952084434)_ +* `修复` a11yx扩展模块无阻塞方法内部arguments的语法错误 _[`issue #527`](https://github.com/SuperMonster003/Ant-Forest/issues/527)_ _[`#530`](https://github.com/SuperMonster003/Ant-Forest/issues/530)_ +* `修复` Pro版本Auto.js内存管理工具重启进程后的任务残余 (试修) _[`issue #528`](https://github.com/SuperMonster003/Ant-Forest/issues/528)_ + # v2.2.0 ###### 2021/10/26 - 代码重构 API变更 项目结构变更 谨慎升级 diff --git a/assets/docs/TODO.md b/assets/docs/TODO.md index d094e18..d8a494f 100644 --- a/assets/docs/TODO.md +++ b/assets/docs/TODO.md @@ -27,13 +27,14 @@ | ✔️ | 排行榜图标分辨率自适应 | 2021-10-26 08:46:22 | 5 | 1 | | ✔️ | 排行榜图标自动替换 (文件摘要) | 2021-10-26 08:47:07 | 9 | 1 | | ✔️ | 浇水能量球误识别导致假死 | 2021-10-26 10:24:44 | 2 | 1 | -| ✒️ | 推迟任务加入下次关屏选项 | 2021-10-26 11:18:43 | 5 | 0.30 | +| ✒️ | 推迟任务加入下次关屏选项 | 2021-10-26 11:18:43 | 5 | 0.95 | | ✒️ | 启动器模块化 | 2021-10-26 08:25:42 | 10 | 0.01 | | 🦴 | 夜晚主题时能量球识别率降低 | 2021-10-26 10:24:01 | ! 5 | - | | 🦴 | 开发者测试日志不打印控制台而直接写入文件 | 2021-10-25 22:29:48 | = 9 | 0.40 | | 🦴 | 使用安卓广播替换现有监听器 | 2021-10-25 22:15:08 | ? 8 | - | | 🦴 | 结果展示倒计时结束时立即关闭悬浮窗 | 2021-10-25 22:27:55 | 2 | - | | 🦴 | 增加支付宝最小化超时检测 | 2021-10-25 22:29:48 | 2 | - | +| 🦴 | 支持收取好友赠送的工具 (双击卡等) | 2021-10-26 17:58:34 | 6 | - | | 🦴 | 主账户切换时可能因控件位于屏外而无法获取 | 2021-10-26 09:45:18 | = 1 | - | | 🦴 | 逛一逛方案连续运行优化 | 2021-10-26 10:56:03 | 4 | - | | 🦴 | 健康状态监测功能 | 2021-10-26 10:59:57 | 10 | - | @@ -67,6 +68,7 @@ | :---: | --- | :---: | :---: | :---: | | ✔️ | cryptox 模块 (根据 Pro 版本) | 2021-10-26 08:49:39 | 9 | 1 | | ✔️ | appx.startActivity 增加 monitor 和 package 支持 | 2021-10-26 09:13:07 | 5 | 1 | +| ✒️ | 自动关闭屏幕配置 (#476) | 2021-10-26 11:15:11 | ! 6 | 0.00 | | ✒️ | 扩展模块及插件重构 | 2021-10-26 14:37:07 | ! 8 | 0.33 | | ✒️ | 将 tool functions 转换为 OOP | 2021-10-25 22:24:13 | 10 | 0.11 | | 🦴 | Pro 版本 cryptox 功能测试 | 2021-10-25 23:01:30 | ! 2 | - | @@ -76,7 +78,6 @@ | 🦴 | inspect-lock-screen-layout 合并进 unlock 插件 | 2021-10-25 22:40:42 | ? 8 | - | | 🦴 | login 功能插件化 | 2021-10-26 09:05:48 | 10 | - | | 🦴 | dialogsx.buildFlow 终止按钮及返回键功能问题 | 2021-10-26 09:39:42 | 4 | - | -| 🦴 | 自动关闭屏幕配置 | 2021-10-26 11:15:11 | 6 | - | @@ -84,10 +85,10 @@ | Status | Task | Date | Cost | Progress | | :---: | --- | :---: | :---: | :---: | +| ✔️ | 能量雨加入近似区域点击检测 | 2021-10-27 14:48:18 | 3 | 1 | | ✒️ | 保护地巡护工具 | 2021-10-26 10:34:25 | 9 | 0.20 | | 🦴 | Auto.js 权限管理工具 | 2021-10-26 10:47:04 | = 9 | 0.10 | | 🦴 | 数据库 (db文件) 迁移 / 合并 | 2021-10-25 22:57:56 | 4 | - | -| 🦴 | 能量雨加入近似区域点击监测 | 2021-10-25 22:24:04 | ? 3 | - | | 🦴 | 能量雨配置工具 | 2021-10-25 23:00:50 | 3 | - | | 🦴 | 能量雨适配安卓 999 用户 (#510) | 2021-10-25 23:03:02 | ? 3 | - | | 🦴 | 能量雨结果存入统计数据库 | 2021-10-26 08:35:01 | 4 | - | @@ -106,10 +107,10 @@ | Status | Task | Date | Cost | Progress | | :---: | --- | :---: | :---: | :---: | +| ✔️ | v2.2.0 发布后检查 documents 相关的链接 | 2021-10-25 23:01:55 | 1 | 1 | | ✒️ | 提取 JSDoc@typedef 到 TS 声明文件 | 2021-10-25 22:25:18 | 10 | 0.94 | | 🦴 | FAQ 文档 | 2021-10-26 10:44:53 | 10 | - | | 🦴 | 新仓库 (Auto.js-TypeScript-Declarations) | 2021-10-25 22:26:18 | 10 | - | -| 🦴 | v2.2.0 发布后检查 documents 相关的链接 | 2021-10-25 23:01:55 | = 1 | - | @@ -120,4 +121,10 @@ | 🦴 | Pro 版本 org.apache.log4j.Logger 被混淆 | 2021-10-25 22:20:46 | ? 5 | - | | 🦴 | Pro 版本 org.autojs.autojs.autojs.AutoJs.getInstance() 无效 | 2021-10-25 22:21:25 | ? 2 | - | - \ No newline at end of file + + + +****** + + 已完成事项 将于完成 60 天后移除 + 开发中事项 与 README.md 同步 \ No newline at end of file diff --git a/modules/ext-a11y.js b/modules/ext-a11y.js index af8826b..c109c87 100644 --- a/modules/ext-a11y.js +++ b/modules/ext-a11y.js @@ -133,13 +133,13 @@ let exp = { }, }, click$() { - return (this._click$ = this._click$ || $$impeded.detach(this.click, 2)).apply(this.arguments); + return (this._click$ = this._click$ || $$impeded.detach(this.click, 2)).apply(this, arguments); }, wait$() { return (this._wait$ = this._wait$ || $$impeded.detach(this.wait, 3)).apply(this, arguments); }, swipe$() { - return (this._swipe$ = this._swipe$ || $$impeded.detach(this.swipe, 3)).apply(this.arguments); + return (this._swipe$ = this._swipe$ || $$impeded.detach(this.swipe, 3)).apply(this, arguments); }, /** * @param {...boolean|string|string[]} [arguments] @@ -319,7 +319,7 @@ let exp = { return /^(widgets|points)$/.test($.res_type); }, isCompass(o) { - return typeof o === 'string' && /(p\d*|c\d*)*(k\d*)?/.test(o); + return typeof o === 'string' && /([pck]\d*)+/.test(o); }, }, refreshSvcInfoIFN() { @@ -429,6 +429,15 @@ let exp = { ? selector.filter(_v.toRegular()) : selector.filter((w => !_v(w)).toRegular()); }, + isAlipay(sw) { + if (typeof sw === 'undefined') { + return sw; + } + let _rex = '.*(Alipay|alipay).*'; + return sw + ? selector.packageNameMatches(_rex) + : selector.filter((w => !w.packageName().match(_rex)).toRegular()); + }, }; let _res; try { @@ -1073,27 +1082,22 @@ let exp = { if (!_pad) { return this.padding = {x: 0, y: 0}; } - let _coords = []; if (typeof _pad === 'number') { - _coords = [0, _pad]; + _pad = [0, _pad]; } else if (!Array.isArray(_pad)) { throw Error('Invalid paddings for a11yx.click()'); } - if (_pad.length === 1) { - _coords = [0, _pad[0]]; - } else if (_pad.length === 2) { - let [_k, _v] = _pad; - if (_k === 'x') { - _coords = [_v, 0]; - } else if (_k === 'y') { - _coords = [0, _v]; - } else { - _coords = [_k, _v]; + let _coords = function $iiFe() { + if (_pad.length === 1) { + return [0, _pad[0]]; + } + if (_pad.length === 2) { + let [_k, _v] = _pad; + return _k === 'x' ? [_v, 0] : _k === 'y' ? [0, _v] : [_k, _v]; } - } else { throw Error('Invalid paddings amount for a11yx.click()'); - } + }(); let [_x, _y] = _coords.map(n => Number(n)); if (!(!isNaN(_x) && !isNaN(_y))) { diff --git a/modules/ext-alipay.js b/modules/ext-alipay.js index 01fea19..ad18beb 100644 --- a/modules/ext-alipay.js +++ b/modules/ext-alipay.js @@ -14,9 +14,6 @@ let exp = { af_homepage: ['https://60000002.h5app.alipay.com/www/home.html', { transparentTitle: 'auto', backgroundColor: -1, - startMultApp: 'YES', - enableCubeView: 'NO', - enableScrollBar: 'NO', }], af_rank_list: [['https://60000002.h5app.alipay.com/www/listRank.html', { conf: '["totalRank"]', @@ -25,11 +22,7 @@ let exp = { backgroundColor: -1, canPullDown: 'NO', backBehavior: 'back', - enableCubeView: 'NO', - startMultApp: 'YES', showOptionMenu: 'YES', - enableScrollBar: 'NO', - closeCurrentWindow: 'YES', readTitle: 'NO', defaultTitle: String.unEsc('2615FE0F0020597D53CB6392884C699C'), }], @@ -70,9 +63,16 @@ let exp = { } else if (Array.isArray(url)) { _o.url = {src: url[0], query: url[1]}; } - if (isPlainObject(webview_options)) { - _o.__webview_options__ = webview_options; - } + /** + * @type {Alipayx.JSBridge.WebviewOptions} + */ + _o.__webview_options__ = Object.assign({ + appClearTop: 'YES', + startMultApp: 'YES', + enableCubeView: 'NO', + enableScrollBar: 'NO', + closeCurrentWindow: 'YES', + }, webview_options); return _o; }(), exclude: 'defaultTitle', diff --git a/modules/ext-app.js b/modules/ext-app.js index 870cec0..d5d140c 100644 --- a/modules/ext-app.js +++ b/modules/ext-app.js @@ -1140,48 +1140,52 @@ let exp = { * Main process of Auto.js will be killed * @param {{ * pid?: number, + * is_async?: boolean, * pending_task?: Timersx.TimedTask.Disposable|'launcher'|'launcher+3s'|'current'|'current+3s'|string, * }} [options] */ killProcess(options) { - let _opt = options || {}; - - pendTimedTaskIFN(_opt.pending_task); - killProgress(_opt.pid); - - // tool function(s) // - - function pendTimedTaskIFN(pending_task) { - if (pending_task) { - timersx.addDisposableTask(_parseTask(pending_task)); - } - - // tool function(s) // - - function _parseTask(task) { + let $ = { + parseArgs() { + this.options = options || {}; + this.pid = this.options.pid > 0 ? this.options.pid : Process.myPid(); + }, + parseTask() { + let task = this.pending_task; if (typeof task === 'object') { return task; } if (typeof task === 'string') { if (task.match(/^(launcher|current)(.*\d+s)?$/i)) { let _mch_min = task.match(/\d+/); - let _path = task.match(/launcher/i) - ? projectx.getLocal().main.path - : engines.myEngine().getSource(); return { - path: _path, + path: task.match(/launcher/i) + ? projectx.getLocal().main.path + : engines.myEngine().getSource(), date: Date.now() + (_mch_min ? _mch_min[0] : 5) * 1e3, + is_async: $.options.is_async, }; } } throw Error('Cannot parse pending_task for appx.killProcess()'); - } - } - - function killProgress(pid) { - let _pid = pid > 0 ? pid : Process.myPid(); - Process.killProcess(_pid); - } + }, + addTask() { + if ((this.pending_task = this.options.pending_task)) { + timersx.addDisposableTask(Object.assign(this.parseTask(), { + callback: $.killNow.bind($), + })); + return true; + } + }, + killNow() { + Process.killProcess(this.pid); + }, + kill() { + this.parseArgs(); + this.addTask() || this.killNow(); + }, + }; + $.kill(); }, /** * Kill or minimize an app and launch it with options diff --git a/modules/ext-console.js b/modules/ext-console.js index 3553149..f660b38 100644 --- a/modules/ext-console.js +++ b/modules/ext-console.js @@ -1,5 +1,5 @@ let { - isPlainObject, $$bool, $$toast, + isPlainObject, $$toast, } = require('./ext-global'); let exp = { diff --git a/modules/ext-crypto.js b/modules/ext-crypto.js index 5a0d69e..aae801c 100644 --- a/modules/ext-crypto.js +++ b/modules/ext-crypto.js @@ -2,6 +2,7 @@ /* The same is true of destructuring assignment syntax (like `let {Uri} = android.net`). */ let {isNullish} = require('./ext-global'); +let {filesx} = require('./ext-files'); let File = java.io.File; let CRC32 = java.util.zip.CRC32; @@ -114,7 +115,7 @@ let exp = { if (_opt.input === 'file') { let fis = new FileInputStream(input); let buffer = util.java.array('byte', 4096); - let r = -Infinity; + let r; while ((r = fis.read(buffer)) > 0) { callback(buffer, 0, r); } @@ -224,8 +225,8 @@ let exp = { } catch (e) { err = e; } finally { - cos !== null && cos.close(); - os !== null && os.close(); // maybe unnecessary ? + cos && cos.close(); + os && os.close(); // maybe unnecessary ? } if (!isFile && !err) { return this._output(os.toByteArray(), _opt, 'bytes'); @@ -403,15 +404,16 @@ let exp = { if (k.length % 16 === 0 && k.match(/^[a-f0-9]+$/i)) { return new this.Key(k); } - let _path = files.join(files.getSdcardPath(), '.local', 'key.nfex'); + let _path = filesx['.local']('key.nfex'); files.exists(_path) || files.createWithDirs(_path); - let _o = JSON.parse(files.read(_path) || '{}'); + let _o = filesx.readJson(_path); if (_o[k]) { return new this.Key(_o[k]); } let _new_key = _o[k] = this.generateRandomKeyInput(); - files.write(_path, JSON.stringify(_o)); + filesx.writeJson(_path, _o); + return new this.Key(_new_key); }, /** diff --git a/modules/ext-device.js b/modules/ext-device.js index 4727ae8..be353a8 100644 --- a/modules/ext-device.js +++ b/modules/ext-device.js @@ -944,7 +944,13 @@ let exp = { return this.simulate(this.keycode); }, simulateTwice() { - return this.simulateOnce() && this.simulateOnce(); + let _max = 2; + while (_max--) { + if (!this.simulateOnce()) { + return false; + } + } + return true; }, getResult() { this.impededIFN(); @@ -2842,7 +2848,7 @@ function unlockGenerator() { let _debugAct = (act_str, ctr, max) => !ctr ? consolex._('尝试' + act_str) - : consolex._('尝试' + act_str + '(\x20' + ctr + '/' + max + ')'); + : consolex._('重试' + act_str + '(\x20' + ctr + '/' + max + ')'); return $_unlk; @@ -2874,14 +2880,15 @@ function unlockGenerator() { sleep(240); } + consolex._('自动解锁完毕', 0, 0, -2); consolex.debug.switchBack(); - return consolex._('自动解锁完毕', 0, 0, -2); + return true; } function _err(s) { exp.cancelOn(); - consolex.e(['解锁失败', s, _intro], 4, 0, 2); - if (exp.is_init_screen_on) { + consolex.e(['解锁失败', s, _intro].flat(), 4, 0, 2); + if (!exp.is_init_screen_on) { consolex.d('自动关闭屏幕'); exp.screenOff() || consolex.w('自动关闭屏幕失败'); } diff --git a/modules/ext-files.js b/modules/ext-files.js index d50055e..72fd25e 100644 --- a/modules/ext-files.js +++ b/modules/ext-files.js @@ -105,6 +105,33 @@ let _ = { let exp = { sep: File.separator, + json: { + /** + * @param {string} k + * @param {number|*} v + * @return {string|*} + */ + replacer(k, v) { + /** Zero Width No-Break Space */ + let _pad = '\ufeff'; + if (typeof v === 'number' && (isNaN(v) || !isFinite(v))) { + return _pad + v.toString() + _pad; + } + return v; + }, + /** + * @param {string} k + * @param {string|*} v + * @return {number|*} + */ + reviver(k, v) { + let _pad = /^\ufeff(.+)\ufeff$/; + if (typeof v === 'string' && v.match(_pad)) { + return Number(v.replace(_pad, '$1')); + } + return v; + }, + }, /** * @param {...string[]} [children] * @example @@ -813,7 +840,7 @@ let exp = { readJson(path, def, reviver) { let _def = def === undefined ? {} : def; try { - return JSON.parse(this.read(path), reviver) || _def; + return JSON.parse(this.read(path), reviver || this.json.reviver) || _def; } catch (e) { return _def; } @@ -834,7 +861,7 @@ let exp = { * @param {(key: string, value: any) => any} [replacer] */ writeJson(path, value, replacer) { - this.write(path, JSON.stringify(value, replacer)); + this.write(path, JSON.stringify(value, replacer || this.json.replacer)); }, }; diff --git a/modules/ext-images.js b/modules/ext-images.js index 9298706..9ba4937 100644 --- a/modules/ext-images.js +++ b/modules/ext-images.js @@ -1668,7 +1668,7 @@ let exp = { } else if (is_recycle_img === 2) { this.reclaim(img2); } - return _concat; + return this.pool.add(_concat); }, /** * Substitution of images.resize() for better dsize compatibility diff --git a/modules/ext-storages.js b/modules/ext-storages.js index d2cc6db..d5cdf57 100644 --- a/modules/ext-storages.js +++ b/modules/ext-storages.js @@ -7,35 +7,10 @@ let {cryptox} = require('./ext-crypto'); let Storage = function StorageConstructor$iiFe() { let _ = { - /** - * @param {string} k - * @param {number|*} v - * @return {string|*} - */ - replacer(k, v) { - /** Zero Width No-Break Space */ - let _pad = '\ufeff'; - if (typeof v === 'number' && (isNaN(v) || !isFinite(v))) { - return _pad + v.toString() + _pad; - } - return v; - }, - /** - * @param {string} k - * @param {string|*} v - * @return {number|*} - */ - reviver(k, v) { - let _pad = /^\ufeff(.+)\ufeff$/; - if (typeof v === 'string' && v.match(_pad)) { - return Number(v.replace(_pad, '$1')); - } - return v; - }, parseFile(path) { let _str = filesx.read(path, ''); try { - return _str ? JSON.parse(_str, this.reviver.bind(this)) : {}; + return _str ? JSON.parse(_str, filesx.json.reviver) : {}; } catch (e) { console.warn('JSON.parse()解析配置文件异常'); } @@ -103,7 +78,7 @@ let Storage = function StorageConstructor$iiFe() { * @return {any} */ writeBackFileAndParse(path, str) { - let _res = JSON.parse(str, this.reviver.bind(this)); + let _res = JSON.parse(str, filesx.json.reviver); console.info('修复成功'); filesx.write(path, str); @@ -152,7 +127,6 @@ let Storage = function StorageConstructor$iiFe() { return cryptox.dec(data.toString(), this.getKeyInput()); }, reEncryptFromLegacyFile(path) { - let _replacer = this.replacer.bind(this); let _parsed = this.parseFile(path); let _reEncObject = (o) => { Object.keys(o).forEach(k => o[k] = _reEnc(o[k])); @@ -163,7 +137,7 @@ let Storage = function StorageConstructor$iiFe() { return _reEncObject(o); } if (typeof o === 'string') { - if (o.slice(0, 1) === '[' && o.slice(-1) === ']') { + if (o.startsWith('[') && o.endsWith(']')) { let _decrypted = cryptox._pwmap.decrypt(o); if (!isNullish(_decrypted)) { return this.encrypt(_decrypted); @@ -172,7 +146,7 @@ let Storage = function StorageConstructor$iiFe() { } return o; }; - filesx.writeJson(path, _reEnc(_parsed), _replacer); + filesx.writeJson(path, _reEnc(_parsed)); }, }; @@ -222,7 +196,7 @@ let Storage = function StorageConstructor$iiFe() { let _val = {}; let _tmp = {}; let _opt = options || {}; - let _enc = v => _.encrypt(JSON.stringify(v, _.replacer.bind(_))); + let _enc = v => _.encrypt(JSON.stringify(v, filesx.json.replacer)); let _encodeIFN = (o) => { if (!_opt.is_crypto) { return o; @@ -253,7 +227,7 @@ let Storage = function StorageConstructor$iiFe() { Object.assign(_val, _tmp); - filesx.writeJson(this.path, _val, _.replacer.bind(_)); + filesx.writeJson(this.path, _val); }, /** * @param {string} key @@ -285,10 +259,9 @@ let Storage = function StorageConstructor$iiFe() { return _res; } if (_opt.is_crypto) { - let _reviver = _.reviver.bind(_); let _decrypted = _.decrypt(_res); try { - return JSON.parse(_decrypted, _reviver); + return JSON.parse(_decrypted, filesx.json.reviver); } catch (e /* SyntaxError: Unexpected token... */) { return _decrypted; } diff --git a/modules/ext-timers.js b/modules/ext-timers.js index a3e6b88..f69b992 100644 --- a/modules/ext-timers.js +++ b/modules/ext-timers.js @@ -16,47 +16,6 @@ let days_ident = [ 1, 2, 3, 4, 5, 6, 7, ].map(x => typeof x === 'string' ? x : x.toString()); -/** - * @type Timersx.TimedTask.Process - */ -let addTask = function (task) { - if (task) { - if (is_pro) { - TimedTaskMgr['addTaskSync'](task); - } else { - TimedTaskMgr.addTask(task); - } - } - return task || null; -}; - -/** - * @type Timersx.TimedTask.Process - */ -let removeTask = function (task) { - if (!task) { - return null; - } - if (is_pro) { - TimedTaskMgr['removeTaskSync'](task); - } else { - TimedTaskMgr.removeTask(task); - } - return task; -}; - -/** - * @type Timersx.TimedTask.Process - */ -let updateTask = function (task) { - if (!task) { - return null; - } - task.setScheduled(false); - TimedTaskMgr.updateTask(task); - return task; -}; - let exp = { /** * @param {TimedTask$|IntentTask$} task @@ -87,6 +46,20 @@ let exp = { } threadsx.start(_run); }, + /** + * @param {TimedTask$|IntentTask$|null} task + * @return {TimedTask$|IntentTask$|null} + */ + addTask(task) { + if (task) { + if (is_pro) { + TimedTaskMgr['addTaskSync'](task); + } else { + TimedTaskMgr.addTask(task); + } + } + return task || null; + }, /** * @param {Timersx.TimedTask.Daily} options * @example @@ -101,7 +74,7 @@ let exp = { let _date_time = parseDateTime('LocalTime', _opt.time); let _path = files.path(_opt.path); let _cfg = parseConfig(_opt); - let _task = addTask(TimedTask.dailyTask(_date_time, _path, _cfg)); + let _task = this.addTask(TimedTask.dailyTask(_date_time, _path, _cfg)); return this._taskFulfilled(_task, _opt); }, /** @@ -129,7 +102,7 @@ let exp = { let _flag_num = Number(new java.lang.Long(_time_flag)); let _path = files.path(_opt.path); let _cfg = parseConfig(_opt); - let _task = addTask(TimedTask.weeklyTask(_date_time, _flag_num, _path, _cfg)); + let _task = this.addTask(TimedTask.weeklyTask(_date_time, _flag_num, _path, _cfg)); return this._taskFulfilled(_task, _opt); }, /** @@ -146,7 +119,7 @@ let exp = { let _date_time = parseDateTime('LocalDateTime', _opt.date); let _path = files.path(_opt.path); let _cfg = parseConfig(_opt); - let _task = addTask(TimedTask.disposableTask(_date_time, _path, _cfg)) || null; + let _task = this.addTask(TimedTask.disposableTask(_date_time, _path, _cfg)) || null; return this._taskFulfilled(_task, _opt); }, /** @@ -156,11 +129,11 @@ let exp = { * path: files.path('./test.js'), * action: 'android.intent.action.BATTERY_CHANGED', * }); - * @return {?TimedTask$} + * @return {?IntentTask$} */ addIntentTask(options) { let _opt = options || {}; - let _task = addTask((function $iiFe() { + let _task = this.addTask((function $iiFe() { let _i_task = new timing.IntentTask(); _i_task.setScriptPath(files.path(_opt.path)); _opt.action && _i_task.setAction(_opt.action); @@ -182,6 +155,21 @@ let exp = { getIntentTask(id) { return TimedTaskMgr.getIntentTask(id); }, + /** + * @param {TimedTask$|IntentTask$|null} task + * @return {TimedTask$|IntentTask$} + */ + removeTask(task) { + if (!task) { + return null; + } + if (is_pro) { + TimedTaskMgr['removeTaskSync'](task); + } else { + TimedTaskMgr.removeTask(task); + } + return task; + }, /** * @param {number} id * @param {Timersx.TimedTask.Extension} [options] @@ -189,7 +177,7 @@ let exp = { */ removeIntentTask(id, options) { let _opt = options || {}; - let _task = removeTask(this.getIntentTask(id)); + let _task = this.removeTask(this.getIntentTask(id)); return this._taskFulfilled(_task, Object.assign(_opt, { condition: () => !this.getIntentTask(id), })); @@ -201,18 +189,22 @@ let exp = { */ removeTimedTask(id, options) { let _opt = options || {}; - let _task = removeTask(this.getTimedTask(id)); + let _task = this.removeTask(this.getTimedTask(id)); return this._taskFulfilled(_task, Object.assign(_opt, { condition: () => !this.getTimedTask(id), })); }, /** - * @template {TimedTask$} TIMED_TASK - * @param {TIMED_TASK} [task] - * @return {?TIMED_TASK} + * @param {TimedTask$|null} task + * @return {TimedTask$|null} */ - updateTimedTask(task) { - return task ? updateTask(task) : null; + updateTask(task) { + if (!task) { + return null; + } + task.setScheduled(false); + TimedTaskMgr.updateTask(task); + return task; }, /** * @param {{path?:string}} [options] diff --git a/modules/plugin-ant-forest-deployment.js b/modules/plugin-ant-forest-deployment.js index 01925bc..3948fdf 100644 --- a/modules/plugin-ant-forest-deployment.js +++ b/modules/plugin-ant-forest-deployment.js @@ -1,6 +1,5 @@ let {} = require('./ext-global.js'); -let {filesx} = require('./ext-files'); let {threadsx} = require('./ext-threads'); let {dialogsx} = require('./ext-dialogs'); let {projectx} = require('./ext-project'); diff --git a/modules/plugin-energy-rain.js b/modules/plugin-energy-rain.js index b561700..c1bc8ea 100644 --- a/modules/plugin-energy-rain.js +++ b/modules/plugin-energy-rain.js @@ -78,14 +78,24 @@ let _ = { region: [cX(0.15), cYx(0.16), cX(0.85), cYx(0.36)], }); }, + isSamePoint(a, b) { + return typeof a === 'object' && typeof b === 'object' + && a !== null && b !== null + && Math.abs(a.x - b.x) < 5 + && Math.abs(a.y - b.y) < 5; + }, clickPoint() { let _len = this.pts.length; if (_len > 0) { - a11yx.click(this.pts[_len - 1], 'p', { + let _pt = this.pts[_len - 1]; + a11yx.click(_pt, 'p', { pt$: this.cfg.press_time, bt$: this.cfg.press_itv, }); - this.flag.e_rain_clicked = true; + if (this.last_point) { + this.flag.e_rain_clicked = !this.isSamePoint(this.last_point, _pt); + } + this.last_point = _pt; } }, /** @@ -151,43 +161,66 @@ let $ = { return consolex.w('可能没有"能量雨"收集机会', 4, 0, 2); }, monitor() { - threadsx.start(function monitorContinuousClick() { - consolex._('开启"连续点击"监测线程'); - while (!_.flag.e_rain_clicked) { - sleep(120); - } - consolex._('检测到能量雨滴首次点击'); - while (!_.flag.e_rain_finished) { - if (!a11yx.wait(() => _.flag.e_rain_clicked, 2e3, 80)) { - consolex._(['发送全局结束信号', '指定时间内未检测到点击事件']); - return _.flag.e_rain_finished = true; - } - delete _.flag.e_rain_clicked; - } - consolex._(['结束"连续点击"监测线程', '检测到结束信号']); - }); + let $ = { + click: { + firstTime() { + let _max = 9e3; + let _itv = 180; + while (!_.flag.e_rain_clicked) { + sleep(_itv); + if ((_max -= _itv) < 0) { + consolex._(['发送全局结束信号', '等待能量雨滴首次点击超时']); + _.flag.e_rain_finished = true; + return false; + } + } + consolex._('检测到能量雨滴首次点击'); + return true; + }, + continuous() { + consolex._('开启"连续点击"监测线程'); + while (!_.flag.e_rain_finished) { + if (!a11yx.wait(() => _.flag.e_rain_clicked, 2e3, 80)) { + consolex._(['发送全局结束信号', '指定时间内未检测到点击事件']); + return _.flag.e_rain_finished = true; + } + delete _.flag.e_rain_clicked; + } + consolex._(['结束"连续点击"监测线程', '检测到结束信号']); + }, + }, + finish() { + consolex._('开启"结束条件"监测线程'); + while (!_.flag.e_rain_finished) { + if (_.cond.finish() || _.cond.bonus()) { + consolex._(['发送全局结束信号', '检测到预置的结束条件']); + return _.flag.e_rain_finished = true; + } + let _w_retry = $$sel.pickup(_.sel.retry); + if (_w_retry) { + a11yx.click(_w_retry, 'w'); + devicex.keycode('back', {rush: true}); - threadsx.start(function monitorFinishCondition() { - consolex._('开启"结束条件"监测线程'); - while (!_.flag.e_rain_finished) { - if (_.cond.finish() || _.cond.bonus()) { - consolex._(['发送全局结束信号', '检测到预置的结束条件']); - return _.flag.e_rain_finished = true; + let _ctd = 3, _retry = 5; + $$toast('即将在 ' + _ctd + ' 秒内重启能量雨工具', 'L', 'F'); + sleep(_ctd * 1e3); + enginesx.restart({max_restart_e_times: _retry}); + } + sleep(120); } - let _w_retry = $$sel.pickup(_.sel.retry); - if (_w_retry) { - a11yx.click(_w_retry, 'w'); - devicex.keycode('back', {rush: true}); + consolex._(['结束"结束条件"监测线程', '检测到结束信号']); + }, + start() { + threadsx.start(() => { + if (this.click.firstTime()) { + threadsx.start(() => this.click.continuous()); + threadsx.start(() => this.finish()); + } + }); + }, + }; - let _ctd = 3, _retry = 5; - $$toast('即将在 ' + _ctd + ' 秒内重启能量雨工具', 'L', 'F'); - sleep(_ctd * 1e3); - enginesx.restart({max_restart_e_times: _retry}); - } - sleep(120); - } - consolex._(['结束"结束条件"监测线程', '检测到结束信号']); - }); + $.start(); }, collect() { while (1) { @@ -234,12 +267,11 @@ let $ = { let _bonus_not_triggerred = '未' + _bonus_triggerred; if (_.cond.bonus()) { let _w = _.w.cache.bonus; - consolex._(_bonus_triggerred); + consolex._(_bonus_triggerred + ':'); consolex._($$sel.pickup(_w, 'txt')); return _.clickBtn({ widget: _w, name: _name_extra_bonus, - cond: () => !_.cond.bonus(), }); } if (_.cond.manual()) { diff --git a/modules/plugin-memory-info.js b/modules/plugin-memory-info.js index 1ee03e7..678dcb5 100644 --- a/modules/plugin-memory-info.js +++ b/modules/plugin-memory-info.js @@ -119,9 +119,7 @@ _view['btn_restart_process'].on('click', function () { }).on('positive', (d) => { dialogsx.setContentText(d, '正在重启进程...'); dialogsx.setActionButton(d, ['neutral', 'negative', 'positive'], null); - threadsx.start(function () { - appx.killProcess({pending_task: 'current+2s'}); - }); + appx.killProcess({pending_task: 'current+2s', is_async: true}); }).show(); }); diff --git a/project.json b/project.json index bbbe391..2f4c057 100644 --- a/project.json +++ b/project.json @@ -5,8 +5,8 @@ "build" ], "packageName": "com.sm003.ant.forest", - "versionName": "2.2.0", - "versionCode": 489, + "versionName": "2.2.1", + "versionCode": 494, "launchConfig": { "displaySplash": false, "hideLogs": false, diff --git a/tools/ant-forest-deployment-tool.min.js b/tools/ant-forest-deployment-tool.min.js index 01d1f5b..1887444 100644 --- a/tools/ant-forest-deployment-tool.min.js +++ b/tools/ant-forest-deployment-tool.min.js @@ -1,2 +1,2 @@ -(()=>{var A={518:G=>{function J(G){var J=new Error('Cannot\x20find\x20module\x20\x27'+G+'\x27');throw J['code']='MODULE_NOT_FOUND',J;}J['keys']=()=>[],J['resolve']=J,J['id']=0x206,G['exports']=J;},217:P=>{P['exports']={'af':{'project_desc':'蚂蚁森林','self_collect_switch':!0x0,'app_launch_springboard':'OFF','auto_enable_a11y_svc':'OFF','account_switch':!0x1,'account_log_back_in_switch':!0x1,'account_log_back_in_max_continuous_times':0x3,'main_account_info':{},'forest_balls_click_duration':0x36,'forest_balls_click_interval':0x6c,'homepage_monitor_switch':!0x0,'homepage_monitor_threshold':0x2,'homepage_background_monitor_switch':!0x1,'homepage_bg_monitor_threshold':0x1,'homepage_wball_switch':!0x0,'homepage_wball_check_limit':0x78,'homepage_wball_max_hue_no_blue':0x2f,'friend_collect_switch':!0x0,'friend_collect_icon_color':'#1DA06D','friend_collect_icon_threshold':0xa,'get_targets_by_stroll_btn':!0x1,'max_continuous_not_targeted_stroll_cycle':0x3,'forest_image_pool_limit':0x3,'forest_image_pool_itv':0x3c,'eballs_recognition_region':[0.1,0.15,0.9,0.45],'hough_src_img_strategy':{'gray':!0x0,'adapt_thrd':!0x0,'med_blur':!0x0,'blur':!0x0,'blt_fltr':!0x1},'hough_results_strategy':{'anti_ovl':!0x0,'symmetrical':!0x0,'linear_itp':!0x0},'ripe_ball_detect_threshold':0xd,'ripe_ball_detect_color_val':'#DEFF00','min_balls_distance':0.09,'protect_cover_detect_color_val':'#BEF658','protect_cover_detect_threshold':0x5,'auto_unlock_switch':!0x1,'message_showing_switch':!0x0,'console_log_switch':!0x0,'debug_info_switch':!0x1,'result_showing_switch':!0x0,'floaty_result_switch':!0x0,'floaty_result_countdown_sec':0x6,'rank_list_review_switch':!0x0,'rank_list_review_threshold_switch':!0x0,'rank_list_review_threshold':0x1,'rank_list_review_samples_clicked_switch':!0x0,'rank_list_review_difference_switch':!0x0,'rank_list_scan_strategy':'scroll','rank_list_swipe_distance':0.75,'rank_list_swipe_time':0x96,'rank_list_swipe_interval':0x12c,'rank_list_scroll_interval':0xf0,'rank_list_max_not_targeted_times':0xc8,'rank_list_capt_pool_diff_check_threshold':0x14,'timers_switch':!0x1,'timers_self_manage_switch':!0x0,'timers_countdown_check_own_switch':!0x0,'timers_countdown_check_own_timed_task_ahead':0x2,'timers_countdown_check_friends_switch':!0x0,'timers_countdown_check_friends_timed_task_ahead':0x1,'timers_uninterrupted_check_switch':!0x0,'timers_uninterrupted_check_sections':[{'section':['06:30','00:00'],'interval':0x3c}],'timers_auto_task_sections':[],'timers_insurance_switch':!0x0,'timers_insurance_interval':0x5,'timers_insurance_max_continuous_times':0x3,'max_running_time_global':0x2d,'max_queue_time_global':0x3c,'min_bomb_interval_global':0x12c,'min_battery_percentage':0x14,'kill_when_done_switch':!0x1,'kill_when_done_intelligent':!0x0,'kill_when_done_keep_af_pages':!0x1,'phone_call_state_monitor_switch':!0x0,'phone_call_state_idle_value':void 0x0,'prompt_before_running_switch':!0x0,'prompt_before_running_countdown_seconds':0x5,'prompt_before_running_auto_skip':!0x0,'prompt_before_running_quit_confirm':!0x0,'prompt_before_running_postponed_minutes_choices':[0x1,0x2,0x3,0x5,0xa,0xf,0x14,0x1e,0x3c],'prompt_before_running_postponed_minutes':0x0,'prompt_before_running_postponed_minutes_user':0x3,'foreground_app_blacklist':[],'update_ignore_list':[],'update_auto_check_switch':!0x0,'update_show_on_af_settings':!0x0,'update_show_on_e_result':!0x0,'auto_task_show_on_e_result':!0x0,'stat_list_show_zero':0x1,'stat_list_date_range':0x2,'aj_global_log_switch':!0x0,'aj_global_log_cfg_path':'./log/','aj_global_log_cfg_file_pattern':'%d{yyyy-MM-dd/}%m%n','aj_global_log_cfg_max_backup_size':0x7,'aj_global_log_cfg_max_file_size':0x140,'e_dblclick_switch':!0x1,'e_rain_switch':!0x1,'stroll_btn_match_threshold':0xa,'stroll_btn_locate_main_color':'#FF7E00','root_access_functions':{'force_stop':!0x1,'screen_off':!0x0}},'unlock':{'unlock_code':null,'unlock_max_try_times':0x14,'unlock_pattern_strategy':'segmental','unlock_pattern_size':0x3,'unlock_pattern_swipe_time_segmental':0x78,'unlock_pattern_swipe_time_solid':0xc8,'unlock_dismiss_layer_strategy':'preferred','unlock_dismiss_layer_bottom':0.7,'unlock_dismiss_layer_top':0.2,'unlock_dismiss_layer_swipe_time':0x6e},'settings':{'item_area_width':0.78}};},753:U=>{U['exports']={'restore_all_settings':'此操作无法撤销\x0a如需保留此次会话内容建议先保存\x0a\x0a以下功能内部配置不会被还原:\x0a1.\x20自动解锁\x0a2.\x20黑名单管理\x0a','keep_internal_config':'包含内部配置的功能\x0a只还原此功能的开闭状态\x0a而不会清空内部保存的数据\x0a如解锁密码/黑名单列表等\x0a','about_account_function':'主账户:\x0a\x0a执行蚂蚁森林项目时\x0a用户往往希望只针对自己的账户操作\x0a而非他人的账户或小号账户等\x0a尤其是多账号或频繁切换账号的用户\x0a可能出现非预期账户自动执行了脚本\x0a\x0a此功能可在脚本执行时检测当前账户\x0a若非主账户或未登录任何账户\x0a则将自动切换或登陆主账户\x0a再执行后续操作\x0a\x0a*\x20主账户登录需设置账户名\x0a*\x20账户名必须设置\x0a--\x20否则账户功能将自动关闭\x0a*\x20密码可不做设置\x0a*\x20无密码时\x0a--\x20脚本将在需要时\x0a--\x20提示用户手动输入\x0a\x0a旧账户回切:\x0a\x0a若脚本运行时账户非主账户A\x0a记当前账户为账户B\x0a脚本切换或登录至A且任务完成后\x0a此功能可自动将账户回切至B\x0a否则将保持主账户A的登录状态\x0a\x0a关于连续回切:\x0a每次回切将导致计数器累加一次\x0a且将记录回切时的登录账户B\x0a只要新一次运行的账户不是B\x0a无论是主账户A还是另外的账户C\x0a均将导致连续回切计数器清零\x0a当连续回切达到阈值时\x0a自动回切失效且计数器清零','before_use_main_account':'此功能涉及到用户隐私数据\x0a需额外注意账户和密码安全\x0a建议稍后自行点击\x22帮助\x22按钮\x0a查看并了解相关信息及注意事项','account_info_hint':'信息录入方式:\x0a\x0aA.\x20支付宝录入\x0a自动打开支付宝应用\x0a获取当前登录的账户名\x0a获取成功后自动填入当前页面\x0aB.\x20账户库录入\x0a账户库功能暂未开发\x0aC.\x20手动录入\x0a1.\x20全部留空\x0a将跳过信息录入\x0a或清除已存储的录入数据\x0a2.\x20密码留空\x20只填写账户\x0a脚本将在需要账户密码的时候\x0a通过震动提示用户手动输入密码\x0a60秒内输入完成脚本将自动继续\x0a否则脚本终止\x0a3.\x20全部填写\x0a脚本将自动完成主账户的切换\x0a或自动登录操作\x0a\x0a注意:\x0a\x0a1.\x20密码非必填项\x0a且因安全等原因不建议填入\x0a关于密码存储方式相关内容\x0a可点击\x22密码存储方式\x22按钮查看\x0a2.\x20自动切换或登录在遇到问题时\x0a脚本将自动终止\x0a包括但不限于密码错误/网络不稳定/账号录入错误或不存在/账号状态异常/其他特殊情况\x0a3.\x20当密码已录入时\x0a密码输入框留空或不做修改\x0a均会保持原密码不变\x0a输入新内容可覆盖旧密码\x0a如若删除本地已存储的密码\x0a可将\x22账户\x22内容删除留空\x0a或使用\x22信息销毁\x22功能','how_password_stores':'用户输入的密码数据\x0a使用\x22ext-crypto\x22模块进行加密\x0a然后存储在本地相应文件中\x0a\x0a*\x20加密的原理是随机字符映射\x0a--\x20因此难以避免别有用心之人\x0a--\x20对本地数据进行解密\x0a--\x20或插入劫持代码语句等\x0a--\x20因此需要用户妥善保管设备\x0a--\x20避免遗失或随意借予他人\x0a*\x20解密过程与加密过程类似\x0a--\x20依然是多次随机字符映射','destroy_main_account_info':'此操作将从本地存储中\x0a移除已记录的主账户信息\x0a包括账户和密码\x0a\x0a确定要销毁主账户信息吗','get_account_name_from_alipay':'可从支付宝应用获取当前账户名\x0a并自动填入本页\x22账户\x22输入框\x0a\x0a若出现当前未登录任何账户\x0a或脚本运行错误等其他意外情况\x0a将可能导致获取账户名失败\x0a\x0a点击\x22开始获取\x22按钮开始操作','login_password_needed':'在支付宝密码输入框中\x0a手动填写密码\x0a然后点击\x22登录\x22按钮\x0a登陆成功后脚本将自动继续运行\x0a\x0a脚本不会记录或存储密码\x0a如有疑问或疑虑\x0a可按音量键强制停止脚本\x0a成功登陆后再重新运行脚本','account_log_back_in_max_continuous_times':'计数器达最大次数时将不再回切\x0a且计数器将自动清零\x0a\x0a*\x20设置\x200\x20值可不限制回切次数\x0a*\x20详细情况参阅\x27帮助与支持\x27\x0a--\x20位于\x22账户功能\x22主页','about_blacklist':'能量罩黑名单:\x0a\x0a仅用作显示与查看\x0a当检测到好友能量罩时\x0a脚本自动添加好友到此名单中\x0a获取并计算能量罩到期时间\x0a能量罩到期后好友将自动移除\x0a\x0a自定义黑名单:\x0a\x0a用户可自行管理此名单\x0a位于此名单中的好友\x0a脚本将跳过此人的能量球检查\x0a可指定自动解除时间\x0a\x0a前置应用黑名单:\x0a\x0a项目自动运行时\x0a如果检测到当前应用在此名单中\x0a例如名单里有数独游戏\x0a而此时用户正在运行此游戏\x0a则脚本将放弃执行定时任务\x0a将任务推迟数分钟再执行\x0a推迟分钟按以下方案逐次增量\x0a[\x201,\x201,\x202,\x203,\x205,\x208,\x2010\x20]\x0a达到\x2010\x20后将一直保持\x2010\x20分钟','forest_balls_click_duration':'此设置值影响能量球的点击时间\x0a点击方法采用press()\x0a\x0a注意:\x0a此设置值将同时影响以下操作环境:\x0a1.\x20主页森林能量球\x20(绿/橙/金)\x0a2.\x20好友森林能量球\x20(绿/橙/金)\x0a\x0a设置过小值可能造成点击不被响应\x0a设置过大值将影响快速收取体验','forest_balls_click_interval':'当可点击的能量球数量超过\x201\x20时\x0a此设置值影响能量球之间的点击间隔\x0a\x0a注意:\x0a此设置值将同时影响以下操作环境:\x0a1.\x20主页森林能量球\x20(绿/橙/金)\x0a2.\x20好友森林能量球\x20(绿/橙/金)\x0a\x0a设置过小值可能遗漏点击能量球\x0a设置过大值将影响快速收取体验','homepage_wball_max_hue_no_blue':'用以判断能量球是否为浇水能量球\x0a即金色能量球\x0a判断及计算方法:\x0a区域中心横向\x2070%\x20线性扫描\x0a每\x202\x20像素判断色值\x0a色值转换为\x20RGB\x20色值\x0a计算\x20120\x20-\x20(R\x20/\x20G)\x20×\x2060\x0a得到无蓝分量的色值\x20(Hue)\x0aHue\x20在所有像素值中存在极大值\x0a统计出可同时适配白天及黑夜场景\x0a且数值出现概率合适的极大值\x0a将此值作为参数值即可实现匹配','homepage_monitor_threshold':'当进入主页存在未成熟能量球\x0a且最小成熟倒计时达到阈值时\x0a将循环监测直到能量球成熟并收取\x0a收取后\x0a若剩余能量球最小倒计时达到阈值\x0a则继续重复循环监测操作\x0a直到没有未成熟能量球\x0a或最小倒计时未达到设定阈值为止','homepage_bg_monitor_threshold':'好友排行榜操作期间\x0a若主页能量最小成熟时间达到阈值\x0a则返回森林主页开始监控能量球\x0a收取完毕后\x0a将继续进入好友排行榜完成操作\x0a\x0a*\x20此功能不受\x27循环监测\x27开关影响\x0a--\x20除非\x22自收功能\x22关闭\x0a*\x20返检阈值不可大于监测阈值\x0a*\x20接受非整数数值--\x20如\x201.5,\x202.8\x20等','friend_collect_icon_color':'排行榜识别绿色手形图标的参照色值\x0a\x0a示例:\x0argb(67,160,71)\x0a#AEB0B3','friend_collect_icon_threshold':'排行榜识别绿色手形图标的\x0a参照色值检测阈值\x0a阈值越大\x20匹配越宽松\x20反之越严格\x0a0\x20表示完全相似','forest_image_pool_limit':'限制用于存放森林页面截图样本的\x0a采集池数量上限\x0a\x0a数量过多将导致采集时间过长\x0a影响收取体验\x0a数量过少将导致识别率受影响\x0a出现遗漏或误判','forest_image_pool_itv':'森林页面样本采集池样本之间的存放间隔\x0a\x0a间隔的意义主要在于保证\x0a相邻两个样本之间的有效差异性\x0a间隔过大将导致采集时间过长\x0a影响收取体验\x0a间隔过小将导致样本差异过小\x0a影响识别率并出现遗漏或误判','eballs_recognition_region':'用于限制森林页面能量球的识别区域\x0a识别的能量球必须全部包含在此区域\x0a才被视为有效的能量球样本\x0a\x0a需填写\x204\x20个参数并以逗号分隔\x0a支持的参数:\x20百分数/数字/小数\x0a示例\x201\x20:\x20\x2010%,10%,90%,520\x0a示例\x202\x20:\x20\x200.1,120,0.9,53%\x0a\x0a也可使用可视化工具进行参数设置:\x0atools/Floaty_Rectangle_Region.js','ripe_ball_detect_color_val':'森林页面识别成熟能量球的参照色值\x0a\x0a示例:\x0argb(67,160,71)\x0a#AEB0B3','ripe_ball_detect_threshold':'森林页面识别成熟能量球的\x0a参照色值检测阈值\x0a阈值越大\x20匹配越宽松\x20反之越严格\x0a0\x20表示完全相似','unlock_code':'密码长度不小于\x203\x20位\x0a无密码可留空\x0a\x0a若采用图案解锁方式\x0a总点阵数大于\x209\x20需使用逗号分隔\x0a图案解锁密码将自动简化\x0a详情点击\x22查看示例\x22','unlock_code_demo':'滑动即可解锁:\x20(留空)\x0a\x0aPIN\x20解锁:\x201001\x0a\x0a密码解锁:\x2010btv69\x0a\x0a图案解锁:\x20(点阵序号从\x201\x20开始)\x0a3\x20×\x203\x20点阵\x20-\x201235789\x20或\x201,2,3,5,7,8,9\x0a4\x20×\x204\x20点阵\x20-\x201,2,3,4,8,12,16\x0a*\x20点阵密码将自动简化','about_pattern_simplification':'简化原理:\x0a共线的连续线段组只需保留首末两点\x0a途径点将自动激活\x0a\x0a3\x20×\x203\x20-\x201,2,3,5,7,8,9\x20->\x201,3,7,9\x0a4\x20×\x204\x20-\x201,2,3,4,8,12,16\x20->\x201,4,16\x0a5\x20×\x205\x20-\x201,2,3,4,5,6\x20->\x201,5,6\x0a\x0a因此以下一组设置对于图案解锁\x0a可视为相同设置\x20(3\x20×\x203\x20点阵):\x0a1,2,3,6,9\x0a1,1,2,2,3,3,3,6,9,9\x0a1,3,9','unlock_code_safe_confirm':'设备遗失或被盗时\x20自动解锁功能将严重降低设备的安全性\x20甚至导致隐私泄露或财产损失\x20需谨慎使用\x0a\x0a如欲了解设备遗失对策\x0a可点击\x22了解更多\x22\x0a\x0a确定要继续吗','about_lost_device_solution':'一旦设备遗失或被盗\x0a可通过以下方式\x0a将可能的损失降到最低\x0a\x0a*\x20利用\x27查找我的设备\x27功能\x0a\x0a如若遗失安卓手机/平板电脑/手表等\x0a可以寻找/锁定/清空该设备\x0a详情参阅:\x0ahttps://support.google.com/accounts/answer/6160491?hl=zh-Hans\x0a\x0a*\x20及时挂失/冻结卡号/账号\x0a\x0a优先冻结与财产安全相关的账号\x0a或及时修改登录密码或支付密码\x0a如\x20微博/微信/支付宝\x20以及\x20QQ\x20等\x0a详情参阅:\x0ahttps://www.zhihu.com/question/20206696','unlock_dismiss_layer_swipe_time':'设置整百值可保证匀速滑动\x0a十位小于5可实现不同程度惯性滑动\x0a\x0a*\x20通常无需自行设置\x0a*\x20脚本会自动尝试增量赋值\x0a--\x20以获得最佳值','unlock_dismiss_layer_bottom':'设置滑动起点的屏高百分比\x0a\x0a*\x20通常无需自行设置\x0a*\x20设置过大值可能激活非预期控件','unlock_dismiss_layer_top':'设置滑动终点的屏高百分比\x0a\x0a*\x20通常无需自行设置\x0a*\x20此配置值对滑动影响程度较小','about_unlock_pattern_strategy':'叠加路径:\x0a\x0a采用\x20gestures()\x20方法\x0a将每两个点组成直线路径\x0a所有路径利用微小时间差拼接\x0a最终组合形成完整路径\x0a优点:\x0a1.\x20可实现超高速滑动\x0a2.\x20滑动拐点定位精确\x0a缺点:\x0a1.\x20滑动路径可能会断开\x0a2.\x20滑动总时长=(拐点数+1)×给定参数\x0a\x0a连续路径:\x0a\x0a采用\x20gesture()\x20方法\x0a将所有坐标作为参数传入\x0a完成一次性不间断滑动\x0a优点:\x0a1.\x20滑动路径不会断开\x0a2.\x20滑动总时长=给定参数\x0a缺点:\x0a1.\x20极易发生拐点偏移现象\x0a2.\x20拐点数及分布极大影响成功率\x0a\x0a*\x20不同策略对应不同\x27滑动时长\x27参数\x0a*\x20推荐优先使用\x27叠加路径\x27策略\x0a--\x20当出现路径断开现象时\x0a--\x20可尝试\x22连续路径\x22策略','about_unlock_dismiss_layer_strategy':'解锁前通常需要上滑提示层页面\x0a然后再输入密码或进行图案解锁\x0a\x0a解锁模块执行逻辑默认会\x0a先判断并处理提示层页面\x0a再判断并处理解锁页面\x0a\x0a优先:\x20上述默认行为\x0a滞后:\x20先判断解锁页面\x0a禁用:\x20只判断解锁页面\x0a\x0a*\x20通常无需修改此项设置','unlock_pattern_swipe_time_segmental':'此参数表示两拐点间滑动时长\x0a并非表示滑动总时间\x0a总时间=(拐点数+1)×此参数\x0a如\x221379\x22包含两个拐点\x0a参数给定为120ms\x0a则总时长=(2+1)×120ms\x0a即360ms\x0a如\x2212369\x22有一个拐点\x0a因此结果为240ms\x0a\x0a*\x20通常无需自行设置\x0a--\x20脚本会自动尝试增量赋值\x0a--\x20以获得最佳值','unlock_pattern_swipe_time_solid':'此参数表示首末点间滑动时长\x0a亦即表示滑动总时间\x0a\x0a*\x20通常无需自行设置\x0a--\x20脚本会自动尝试增量赋值\x0a--\x20以获得最佳值','unlock_pattern_size':'图案解锁通常为\x20N\x20×\x20N\x20的点阵\x0a通常边长\x20N\x20为\x203\x0a\x0a若未使用图案解锁方式\x0a则保留默认值','about_message_showing_function':'控制台消息\x0a\x0a简略:\x20只显示最终收取能量总计数据\x0a详细:\x20显示每个好友收取数据\x0a开发者测试模式:\x20详细显示操作信息\x0a\x0a运行前提示对话框\x0a\x0a息屏或上锁启动时自动跳过:\x0a如果勾选\x20当项目启动时\x0a如果设备处于息屏或未解锁状态\x0a则不会显示对话框而直接运行项目\x0a\x0a运行结果展示\x0a\x0aFloaty:\x20彩色悬浮窗方式\x0aToast:\x20消息浮动框方式\x0a\x0a*\x20Floaty方式会伴随全屏遮罩层\x0a--\x20点击遮罩层可立即结束结果展示\x0a*\x20此方式额外支持显示时长参数配置\x0a*\x20若开启了定时任务信息展示\x0a--\x20点击相应区域可全屏展示\x0a*\x20若开启了版本更新提示展示\x0a--\x20点击相应区域可查看更新\x0a*\x20Toast方式仅仅展示信息\x0a--\x20不支持额外的操作或中断提示\x0a*\x20版本更新提示配置参数与\x0a--\x20自动检查更新页面的\x0a--\x20相关配置参数同步','timers_prefer_auto_unlock':'检测到\x22自动解锁\x22功能未开启\x0a\x0a多数情况下定时任务启动需配合\x0a\x22自动解锁\x22功能才能完成\x0a[\x20亮屏\x20-\x20解锁\x20-\x20执行脚本\x20]\x0a等一系列操作\x0a\x0a建议开启并设置\x22自动解锁\x22功能','timers_countdown_check_timed_task_ahead':'此设置值用于将下次定时任务\x0a运行时间提前\x20n\x20分钟\x0a\x0a设置\x200\x20可关闭提前运行','timers_ahead_prefer_monitor_own':'主页能量球监测未开启\x0a\x0a此情况下提前运行脚本\x0a主页能量球可能没有成熟\x0a因此可能无法收取\x0a\x0a*\x20开启主页能量球监测可在\x0a--\x20能量球成熟前不断检测能量球\x0a--\x20进而保证能量球及时收取\x0a\x0a确定要保留当前设置值吗','timers_ahead_prefer_rank_list_threshold_review':'排行榜样本复查未开启\x0a或最小倒计时阈值复查条件未激活\x0a\x0a此情况下提前运行脚本\x0a排行榜可能没有可收取目标\x0a因此可能无法按时完成收取\x0a\x0a*\x20排行榜样本复查能够在\x0a--\x20目标可收取前不断检测倒计时\x0a--\x20进而保证目标及时收取\x0a\x0a确定要保留当前设置值吗','timers_insurance_interval':'设置值用于当保险任务保留时\x0a下次定时任务启动的时间间隔\x0a\x0a*\x20保险任务在脚本运行时设置\x0a*\x20脚本运行中每10秒钟自动重置间隔\x0a*\x20脚本结束前自动移除所有保险任务','timers_insurance_max_continuous_times':'设置值用于当保险任务连续激活\x0a次数超过一定值时\x0a不再继续自动设置保险任务\x0a避免无人值守时的无限定时循环','about_timers_self_manage':'自动管理:\x0a\x0a脚本根据已设置的机制\x0a自动设置一个定时任务\x0a或自动更新已存在的定时任务\x0a以保证在无人值守条件下\x0a实现定期定时的脚本自启功能\x0a\x0a机制简介:\x0a\x0a1.\x20主页最小倒计时机制\x0a脚本计算出能量成熟最小倒计时\x0a并根据\x22定时任务提前运行\x22参数\x0a得到一个定时时间\x0a如果排行榜最小倒计时机制开启\x0a将会用同样的方法得到定时时间\x0a取两个定时时间的最小值\x0a作为最终的下次任务运行时间\x0a\x0a2.\x20排行榜最小倒计时机制\x0a如上所述\x0a另外若主页没有能量球\x0a而且排行榜也没有倒计时数据\x0a则将无法统计出定时时间\x0a此时将激活\x22延时接力机制\x22\x0a\x0a3.\x20延时接力机制\x0a如上所述\x0a此机制仅在倒计时机制全部关闭或倒计时机制未能统计定时时间时被激活\x0a延时接力机制数据格式为:\x0a[\x20开始时间,\x20结束时间,\x20间隔\x20]\x0a\x0a示例:\x20[\x20\x2206:30\x22,\x20\x2200:00\x22,\x2060\x20]\x0aa.\x20现在时刻\x2014:26\x0a下次运行延时\x2060\x20分钟间隔\x0a14:26\x20+\x2060\x20->\x2015:26\x0ab.\x20现在时刻\x2023:41\x0a下次运行延时至\x2000:00\x0ac.\x20现在时刻\x2002:19\x0a下次运行延时至\x2006:30\x0ad.\x20现在时刻\x2006:11\x0a下次运行延时至\x2006:30\x0a\x0a*\x20延时接力可设置多组数据\x0a--\x20最终取所有组数据的最小值\x0a*\x20脚本将自动处理区间边界数据\x0a--\x20设置数据时无需考虑间隔取整\x0a--\x20当右边界时间小于左边界时\x0a--\x20将视右边界时间为次日时间\x0a--\x20如\x20[\x20\x2219:50\x22,\x20\x2203:00\x22,\x208\x20]\x0a*\x20仅在没有最小倒计时数据时\x0a--\x20此机制才有存在意义\x0a--\x20若开启了最小倒计时机制\x0a--\x20通常无需在能量成熟密集时间\x0a--\x20设置延时接力数据\x0a--\x20如\x20[\x20\x2207:00\x22,\x20\x2207:30\x22,\x201\x20]\x0a--\x20这样的设置是没有必要的\x0a\x0a4.\x20意外保险机制\x0a假设\x22保险任务运行间隔\x22设置值为\x205\x0a脚本运行开始后\x0a将自动设置一个\x205\x20分钟定时任务\x0a当脚本异常停止或被终止时\x0a(包括音量键停止了脚本)\x0a则初期设定的保险定时任务\x0a将在\x205\x20分钟后定时执行\x0a确保脚本定时任务的连续性\x0a\x0a*\x20无论是最小倒计时机制\x0a--\x20还是延时接力机制\x0a--\x20均在脚本即将结束之前设定\x0a--\x20若在此之前脚本异常终止\x0a--\x20则会出现定时任务\x22断档\x22\x0a--\x20这正是此机制存在的主要意义\x0a*\x20若脚本长时间运行还未正常结束\x0a--\x205\x20分钟的定时任务将被激活\x0a--\x20并在任务列表排队等待执行\x0a--\x20此时定时任务依然出现\x22断档\x22\x0a--\x20因此脚本在后台每\x2010\x20秒钟\x0a--\x20会自动延期保险任务\x0a--\x20保证保险任务不会被\x22消耗\x22\x0a*\x20保险任务连续执行次数\x0a--\x20受到\x22最大连续保险次数\x22约束\x0a--\x20达到此限制时将不再设置保险任务\x0a--\x20避免保险任务导致脚本无限循环\x0a\x0a有效时段:\x0a\x0a可使项目在自动设置定时任务时\x0a仅会落在设置的有效时段内\x0a避免在某些时间对用户的干扰\x0a如设置时段\x20[\x2009:00,\x2014:00\x20]\x0a则脚本运行结束前设置定时任务时\x0a不会超出这个范围\x0a举三种情况的例子\x0a分别表示不同的定时任务运行时间\x0a1.\x2009:30\x0a正常制定任务\x0a因为\x2009:30\x20落在时段范围内\x0a2.\x2015:20\x0a制定第二天\x2009:00\x20的任务\x0a3.\x2007:10\x0a制定当天\x2009:00\x20的任务\x0a如果时段结束值大于等于起始值\x0a同延时接力机制一样\x0a则将结束值视为第二天的时间点\x0a例如设置\x20[\x2021:00,\x2007:45\x20]\x0a则表示晚\x209\x20点到次日\x2007:45\x0a晚\x2023\x20点和早\x206\x20点都在范围内\x0a而上午\x2011\x20点则不在上述范围\x0a注意区分\x20[\x2007:45,\x2021:00\x20]\x0a如有多个时段将做并集处理\x0a如果设置了一个\x2024\x20小时区间\x0a则时段管理将失去意义\x0a如\x20[\x2005:23,\x2005:23\x20]\x0a等同于\x22全天有效\x22的效果','max_running_time_global':'设置值用于脚本单次运行\x0a可消耗的最大时间\x0a避免无人值守时的无响应情况','max_queue_time_global':'当旧排他性任务运行或排队时\x0a新排他性任务将继续排队\x0a排队时间与排他性任务总数相关\x0a\x0a*\x20当排队时间达到阈值时将强制结束\x0a--\x20当前正在运行的排他性任务\x0a*\x20设置过小的值可能在脚本\x0a--\x20正常结束前被意外终止','min_bomb_interval_global':'若当前脚本与最近一个正在运行的蚂蚁森林脚本的运行时间差小于此阈值\x0a则视当前脚本为炸弹脚本\x0a炸弹脚本将自动强制停止\x0a此安全设置通常针对因某些原因短时间内运行大量相同脚本的意外情况','about_kill_when_done':'此设置用于决定脚本结束时\x0a保留或关闭支付宝应用\x0a\x0a关闭总开关后将在脚本结束时\x0a无条件关闭支付宝应用\x0a\x0a支付宝应用保留:\x0a智能保留:\x0a脚本运行时检测当前前置应用\x0a根据前置应用是否是支付宝\x0a决定保留或关闭操作\x0a总是保留:\x0a无条件保留支付宝应用\x0a\x0a蚂蚁森林页面保留:\x0a智能剔除:\x0a脚本将自动关闭与蚂蚁森林项目相关的全部页面\x0a如蚂蚁森林主页/排行榜页面等\x0a最终回归到脚本启动前的支付宝页面\x0a全部保留:\x0a无条件保留项目运行中的所有页面\x0a除非支付宝应用被触发关闭\x0a\x0a*\x20关闭应用优先使用杀死应用方式\x0a--\x20杀死应用需要\x20Root\x20权限\x0a--\x20无\x20Root\x20权限将尝试最小化应用\x0a--\x20最小化原理并非模拟\x20Home\x20键\x0a*\x20\x27智能保留\x27的智能化程度十分有限','backup_to_local':'此功能将项目相关文件打包保存在本地\x0a可在还原页面恢复或删除已存在的备份','restore_project_confirm':'确定还原此版本项目吗\x0a本地项目将被覆盖\x0a此操作无法撤销\x0a\x0a还原后建议重启配置工具','v1_6_25_restore_confirm':'此版本过于陈旧\x0a不建议还原此版本\x0a\x0a还原后将丢失以下全部功能:\x0a1.\x20项目更新功能\x0a2.\x20项目备份还原功能\x0a3.\x20解锁模块的高效稳定性\x0a4.\x20解锁模块的开发者测试模式\x0a5.\x20重要的工具函数\x0a\x0a缺少工具函数将导致项目无法运行','rank_list_swipe_time':'通常无需自行设置\x0a若出现滑动异常现象\x0a可尝试适当增大此设置值','rank_list_swipe_interval':'若出现遗漏目标的情况\x0a可尝试适当增大此设置值','rank_list_scroll_interval':'若出现遗漏目标的情况\x0a可尝试适当增大此设置值','rank_list_capt_pool_diff_check_threshold':'排行榜滑动前后截图样本相同时\x0a脚本认为滑动无效\x20并进行无效次数统计\x20当连续无效次数达到阈值时\x20将放弃滑动并结束好友能量检查\x0a\x0a达阈值时\x20脚本会判断\x22服务器打瞌睡\x22页面及\x22正在加载\x22按钮\x20根据实际情况点击\x22再试一次\x22或等待\x22正在加载\x22按钮消失\x20(最大等待2分钟)\x0a\x0a*\x20此参数主要避免因意外情况导致当前页面不在排行榜页面时的无限滑动\x0a*\x20截图样本相同指:\x20相似度极高','rank_list_max_not_targeted_times':'排行榜每滑动一次\x0a若当前页面没有好友\x0a则记录一次无目标命中次数\x0a当达到最大阈值时则停止排行榜检查\x0a*\x20此参数主要避免因意外情况导致在某一页面的无限滑动','about_rank_list_review':'样本复查:\x0a\x0a排行榜列表到达底部后\x0a由复查条件决定是否重新检查排行榜\x0a进而达到循环监测的目的\x0a\x0a列表到达底部后\x0a脚本会统计记录列表所有好友数据\x0a包括倒计时数据及对应好友昵称\x0a\x0a复查条件:\x0a\x0a1.\x20列表状态差异:\x0a比较上一次统计的昵称数据\x0a只要昵称数据不一致\x0a则触发复查条件\x0a脚本将复查列表并重新比较数据\x0a直到最近两次昵称数据完全一致\x0a\x0a*\x20因至少需要两组比较数据\x0a--\x20所以列表至少会复查一次\x0a*\x20即便这样会导致额外的操作\x0a--\x20此条件依然是循环检测的利器\x0a--\x20用户可自行斟酌保留与否\x0a\x0a2.\x20样本点击记录:\x0a在一次完整的列表滑动过程中\x0a只要出现了有效点击行为\x0a则触发复查条件\x0a\x0a3.\x20最小倒计时阈值:\x0a统计最小成熟倒计时\x0a如果达到设定阈值\x0a则触发复查条件\x0a\x0a*\x20有效点击指进入好友森林后\x0a--\x20点击过可收取的能量球','stroll_btn_locate_main_color':'参数用于配置多点取色方式\x0a定位逛一逛按钮时的基准色值','stroll_btn_match_threshold':'参数用于配置多点取色方式\x0a定位逛一逛按钮时的匹配阈值','max_continuous_not_targeted_stroll_cycle':'参数用于防止逛一逛策略\x0a在采集过程中遇到无操作好友\x0a可能引起的无限循环\x0a\x0a无操作情况举例:\x0a·\x20好友位于自定义黑名单\x0a·\x20好友使用能量保护罩\x0a·\x20好友能量球采集失败\x0a·\x20好友能量球点击失败\x0a·\x20好友能量球被他人收取\x0a·\x20用户关闭了相关功能\x0a','about_collectable_samples':'排行榜列表\x20(默认策略):\x0a从排行榜遍历可操作目标\x0a优点:\x0a1.\x20方案成熟且不易出现目标遗漏\x0a2.\x20获取倒计时数据无需额外耗时\x0a缺点:\x0a1.\x20采集效率受好友数量影响较大\x0a2.\x20差异样本池消耗较多硬件资源\x0a3.\x20需要频繁进出排行榜页面\x0a\x0a逛一逛按钮:\x0a直接使用官方提供的快捷按钮\x0a优点:\x0a1.\x20采集效率高/不受好友数量影响\x0a2.\x20避开排行榜的所有潜在问题\x0a3.\x20无需考虑循环遍历条件\x0a缺点:\x0a1.\x20按钮定位判断条件可信度低\x0a2.\x20结束页面判断条件可信度低\x0a3.\x20过程可操控性/可预见性低\x0a4.\x20获取倒计时数据依赖排行榜\x0a5.\x20一定概率出现可操作目标遗漏\x0a\x0a注意:\x0a当逛一逛按钮方案出现异常时\x0a脚本将自动在当前会话过程中\x0a切换至\x22排行榜列表\x22采集策略','restore_from_local':'确定还原此备份吗\x0a本地项目将被覆盖\x0a此操作无法撤销\x0a\x0a还原后建议重启配置工具','restore_original_list_data':'要恢复本次会话开始前的列表数据吗\x0a\x0a此操作不可撤销','add_friend_nickname_manually':'手动添加易出错\x0a且难以键入特殊字符\x0a建议使用列表导入功能','phone_call_state_idle_value':'当设备当前通话状态值\x0a与空闲状态值不一致时\x0a将触发通话状态事件\x0a脚本将持续等待\x0a直到通话状态变为空闲\x0a\x0a*\x20事件解除后\x0a--\x20脚本将执行一次支付宝前置操作\x0a*\x20不同设备的通话空闲状态值\x0a--\x20可能存在差异','phone_call_state_idle_value_warn':'输入值与当前通话空闲值不一致\x0a此配置将导致脚本无法正常运行\x0a\x0a确定要使用当前输入值吗','rank_list_bottom_template_hint_base':'排行榜\x22没有更多了\x22控件的图片模板\x0a此模板用于排行榜底部判断\x0a\x0a','rank_list_bottom_template_hint_exists':'正常模板应包含\x22没有更多了\x22字样\x0a查看模板后若发现图片模板存在异常\x0a可选择删除模板\x0a模板删除后\x0a脚本在下次运行时将自动生成新模板','rank_list_bottom_template_hint_not_exists':'当前暂未生成图片模板\x0a脚本在下次运行时将自动生成新模板','about_root_access_functions':'当Auto.js被授予Root权限时\x0a可通过Root权限实现功能升级\x0a如可以直接模拟按键实现快速关屏\x0a或通过adb命令直接杀死应用进程\x0a\x0a即便Auto.js未获取Root权限\x0a用户依然可以进行功能参数配置\x0a此时所有开启的功能均无法生效\x0a脚本在运行过程中将做平稳退化\x0a\x0a注意:\x0aRoot权限关闭应用时\x0a可能出现几秒钟的黑屏现象\x0a此时Toast及Floaty消息会出现阻塞\x0a因此可能影响运行结果展示的效果','about_auto_enable_a11y_svc':'通过修改系统无障碍服务的列表参数\x0a实现Auto.js无障碍服务的自动开启\x0a此过程需要授予Auto.js以下权限:\x0a\x0aWRITE_SECURE_SETTINGS\x0a\x0a如果设备已经获取Root权限\x0a脚本将自动完成上述所需权限的授权\x0a否则需要将手机连接到计算机\x0a然后在计算机使用ADB工具\x0a执行以下指令(无换行):\x0a\x0aadb\x20shell\x20pm\x20grant\x20org.autojs.autojs\x20android.permission.WRITE_SECURE_SETTINGS\x0a\x0a执行后Auto.js将获取上述权限\x0a如需撤销授权需将上述指令的\x0agrant替换为revoke\x0a\x0a注:\x20如果没有权限授权\x0a脚本则会在需要的时候\x0a提示用户手动开启无障碍服务\x0a\x0a*\x20参数默认值:\x20禁用自动启动','about_app_launch_springboard':'某些设备或应用无法直接调用\x20APP\x0a如\x20launch()\x20或\x20startActivity()\x20等\x0a需先调用\x20Auto.js\x20再调用指定\x20APP\x0a当脚本运行结束时\x0a可自动关闭调用过的\x20Auto.js\x20页面\x0a以实现跳板的无痕特性\x0a\x0a*\x20参数默认值:\x20关闭跳板\x0a*\x20无痕特性以跳板页面暴露为前提','about_timed_task_type':'一次性任务执行后将自动失效\x0a每日/每周任务将按日/按周循环执行\x0a\x0a注意:\x0a1.\x20定时任务自动管理功能往往可以\x0a--\x20完成绝大多数定时任务需求\x0a--\x20因此不建议设置过多或\x0a--\x20过于繁杂的手动定时任务\x0a2.\x20也可以使用\x20Auto.js\x20自带的\x0a--\x20定时任务管理功能\x0a--\x20但涉及月份设置或修改时很可能\x0a--\x20会出现\x201\x20个月的偏差问题','delete_min_countdown_task_warn':'正在删除最小倒计时任务\x0a\x0a最小倒计时任务是\x0a定时任务自动管理功能的精髓\x0a除非已确定此任务的异常性\x0a否则强烈不建议删除此任务\x0a\x0a确定要删除最小倒计时任务吗','prompt_before_running_countdown_seconds':'倒计时结束前\x0a用户可自主点击按钮执行相应操作\x0a否则倒计时超时后脚本将自动执行','about_aj_global_log_page':'本地日志功能将Auto.js生成的\x0a所有控制台日志写入文件\x0a包括蚂蚁森林项目及其他所有脚本\x0a同样当关闭此功能时\x0a将停止所有脚本日志的本地写入\x0a\x0aAuto.js因崩溃等原因重启时\x0a本地日志写入功能将失效\x0a但原有的本地日志依然保留\x0a仅仅是停止继续写入\x0a此时运行蚂蚁森林项目\x0a若本地日志写入功能开关开启\x0a将自动重新激活本地日志的写入功能\x0a\x0a功能核心代码:\x0aconsole.setGlobalLogConfig','about_eballs_recognition':'能量球的识别基于霍夫变换\x0a关键参数如下:\x0a\x20\x20\x20\x20image:\x20%img%\x0a\x20\x20\x20\x20dp:\x201\x0a\x20\x20\x20\x20minDist:\x20cX(0.09)\x20(可配置)\x0a\x20\x20\x20\x20minRadius:\x20cX(0.054)\x0a\x20\x20\x20\x20maxRadius:\x20cX(0.078)\x0a\x20\x20\x20\x20param1:\x2015\x0a\x20\x20\x20\x20param2:\x2015\x0a可参阅\x20__image__.js\x20封装模块\x0a内部的\x20images.findCircles()\x20方法\x0a\x0a上述的\x20%img%\x20传入参数有以下策略:\x0a1.\x20灰度化\x0a基本的图像处理策略\x0a霍夫变换必须传入\x208\x20位单通道灰度图像\x0a2.\x20自适应阈值\x0a根据像素的邻域块的像素值分布\x0a确定该像素位置上的二值化阈值\x0a3.\x20中值滤波\x20&\x204.\x20均值滤波\x0a均值滤波和中值滤波都可以平滑图像并虑去噪声\x0a均值滤波采用线性方法对目标像素及周边像素取平均值后再填充目标像素\x0a中值滤波采用非线性方法使用所有像素中值替代中心位置像素值\x0a5.\x20双边滤波\x0a双边滤波是一种非线性滤波方法\x0a结合图像的空间邻近度和像素值相似度的一种折衷处理\x0a同时考虑空域信息和灰度相似性达到保边去噪的目的\x0a\x0a由于双边滤波耗时相对较长\x0a且识别结果准确率也未见明显优势\x0a因此不建议开启双边滤波策略\x0a除非对识别率有极高的要求或用于测试或关闭了\x202,3,4\x20策略仅保留\x201,5\x20等情况\x0a但依然不建议\x201,5\x20这样的策略组合\x0a\x0a通过霍夫变换得到页面的圆形样本后\x0a样本会按照横坐标升序排序\x0a排序后可对样本数据做进一步处理:\x0a1.\x20覆盖检测\x0a如果相邻两个圆形的圆心间距过小\x0a则认为样本重复并将后一个样本去除\x0a2.\x20对称检测\x0a对于所有样本的最左和最右两个样本\x0a如果做中轴镜像后不满足最小球间距\x0a则认为对方位置能量球缺失\x20并会做能量球补算填充\x0a3.\x20线性插值\x0a计算所有球的最小间距作为参考值\x0a如果检测到有相邻两个能量球间距大于这个参考值的某个倍数\x20则会做插值处理\x20可能插入\x201\x20个或多个能量球\x0a\x0a数据处理示例:\x0a森林页面最多可展示\x206\x20个能量球\x0a将这些球大概位置记为\x201,\x202...\x206\x0a以下示例仅针对线性插值和对称检测\x0a示例\x201:\x0a能量球\x201\x20个\x20位于\x203\x20号位置偏右\x0a识别到的能量球位置\x203\x0a对称检测不生效\x0a线性插值不生效\x0a结果:\x203\x20(正确)\x0a示例\x202:\x0a能量球\x202\x20个\x20位于\x203,4\x0a识别到的能量球位置\x204\x0a即遗漏了\x203\x20号位置的球\x0a对称检测生效\x0a由\x204\x20做镜像后补充\x0a线性插值不生效\x0a结果:\x203,4\x20(正确)\x0a示例\x203:\x0a能量球\x206\x20个\x20位于\x201,2,3,4,5,6\x0a识别到的能量球位置\x201,5,6\x0a即遗漏了\x202,3,4\x20位置的球\x0a对称检测不生效\x0a因为\x201\x20和\x206\x20镜像后不需补充\x0a线性插值生效\x0a5\x20和\x206\x20的间距作为参考\x0a会将\x201\x20与\x204\x20之间插入\x202\x20个球\x0a结果:\x201,2,3,4,5,6\x20(正确)\x0a示例\x204:\x0a能量球\x205\x20个\x20位置如下:\x0a1,\x202偏右,\x20居中,\x205偏左,\x206\x0a为方便阅读\x20将位置记为\x20A,B,C,D,E\x0aA,E\x20对称\x20\x20B,D\x20对称\x20\x20C\x20居中\x0a识别到的能量球位置\x20A,C,E\x0a即遗漏了\x20B,D\x20位置的球\x0a对称检测不生效\x0a因为\x20A\x20和\x20E\x20镜像后不需补充\x0a线性插值不生效\x0aA,C\x20和\x20C,E\x20的间距几乎相同\x0a因此无需插值\x0a结果:\x20A,C,E\x20(错误)\x0a如果上述情况的识别结果为\x20A,D,E\x0a则与示例\x203\x20类似\x0a最终将识别到正确结果:\x20A,B,C,D,E','update_ignore_confirm':'确定要忽略当前版本吗\x0a\x0a*\x20忽略后脚本将不再提示当前版本更新\x0a*\x20忽略后可在配置工具中管理已忽略的所有版本','about_update_auto_check':'自动检查更新功能可在不同场景\x0a进行版本更新的提示\x0a\x0a*\x20注意:\x20此功能不会自动下载更新\x0a\x0a更新提示场景:\x0a\x0a1.\x20运行结果展示时\x0a当\x22运行结果展示\x22功能生效时\x0a可同时展示版本更新提示\x0a包括Floaty或Toast方式\x0a\x0a2.\x20配置工具启动时\x0a在配置工具启动后\x0a脚本会在后台检查项目更新\x0a发现更新后以SnackBar方式提示\x0a\x0a版本忽略管理:\x0a\x0a对于不希望提示更新的版本\x0a可添加至忽略列表中\x0a例1:\x20当前版本为v2.0.1\x0a服务器最新版本为v2.0.2\x0a将v2.0.2添加至忽略列表中\x0a则脚本将不会提示项目有更新\x0a例2:\x20当前版本为v2.0.1\x0a服务器最新版本为v2.0.4\x0a将v2.0.4添加至忽略列表中\x0a则脚本将会提示项目有更新\x0a且最新版本为v2.0.3\x0a此时如果再将v2.0.3添加至列表\x0a则脚本依然会提示项目有更新\x0a且最新版本为v2.0.2\x0a','about_rank_list_scan_strategy':'控件滚动:\x0a基于排行榜可滚动控件的\x0a无障碍行为实现列表滚动\x0a优点:\x0a1.\x20滚动效率非常高\x0a2.\x20无需关心滚动距离\x0a3.\x20全平台无惯性滚动\x0a缺点:\x0a1.\x20依赖控件\x0a2.\x20定位唯一性可能不够严谨\x0a\x0a模拟滑动:\x0a基于辅助服务的\x0a无障碍行为实现列表滑动\x0a优点:\x0a1.\x20可定义滑动距离及时长\x0a2.\x20不依赖排行榜控件\x0a缺点:\x0a1.\x20某些平台可能出现惯性滑动','about_rank_list_scroll_distance':'采用\x22控件滑动\x22策略时\x0a无法指定滑动距离\x0a由\x22无障碍行为\x22实现基于控件的滚动','about_rank_list_scroll_time':'采用\x22控件滑动\x22策略时\x0a无法指定滑动时长\x0a由\x22无障碍行为\x22决定控件的滚动时长','about_memory_info':'System\x20Memory:\x20系统内存\x0a剩余内存\x20|\x20总内存\x20|\x20使用率\x0a\x0aRuntime\x20Heap:\x20JVM堆内存\x0aJVM总内存-JVM空闲内存\x20|\x20JVM可用最大内存\x20|\x20使用率\x0a\x0aProcess\x20Heap:\x20进程堆内存\x0a\x27summary.java-heap\x27\x20|\x20JVM可用最大内存\x20|\x20使用率\x0a\x0aPSS\x20(Proportional\x20Set\x20Size):\x20实际使用的物理内存\x20(比例分配共享库占用的内存)\x0aUSS\x20(Unique\x20Set\x20Size):\x20进程独自占用的物理内存\x20(不包含共享库占用的内存)\x0a\x0a*\x20JVM堆内存会定期回收\x0a*\x20进程堆内存更新频率较慢\x0a*\x20当任意内存使用率超过90%时建议重启进程\x0a\x0a*\x20相关内存信息对应的伪代码\x0a\x0aActivityManager.MemoryInfo\x20>\x20totalMem\x20-\x20系统总内存\x0aActivityManager.MemoryInfo\x20>\x20availMem\x20-\x20系统剩余内存\x0a\x0aRuntime\x20>\x20totalMemory()\x20-\x20JVM总内存\x0aRuntime\x20>\x20freeMemory()\x20-\x20JVM空闲内存\x0aRuntime\x20>\x20maxMemory()\x20-\x20JVM可用最大内存\x0a\x0aDebug.MemoryInfo\x20>\x20getTotalSharedDirty()\x0a-\x20RSS\x20(Resident\x20Set\x20Size)\x20-\x20实际使用物理内存\x20(包含共享库占用的内存)\x0aDebug.MemoryInfo\x20>\x20getTotalPss()\x0a-\x20PSS\x20(Proportional\x20Set\x20Size)\x20-\x20实际使用的物理内存\x20(比例分配共享库占用的内存)\x0aDebug.MemoryInfo\x20>\x20getTotalPrivateDirty()\x0a-\x20USS\x20(Unique\x20Set\x20Size)\x20-\x20进程独自占用的物理内存\x20(不包含共享库占用的内存)','about_process_restart':'脚本调用如下代码片段杀死当前应用活动进程:\x0aProcess.killProcess(Process.myPid());\x0a\x0a此操作将清理进程内所有资源\x0a由于ActivityManager时刻监听进程\x0a一旦发现进程非正常结束\x0a它将试图重启此进程\x0a进而实现进程的自动重启'};},724:(V,Y,Z)=>{let {$$impeded:n,$$str:r,$$num:s,$$rex:o,isPlainObject:a,isNullish:l,isNonEmptyObject:c,$$sleep:u,requirex:p,$$toast:h}=Z(0x11e),{consolex:_}=Z(0x2d5),a0=android['provider']['Settings'],a1=a0['Secure'],a2=android['graphics']['Rect'],a3=org['opencv']['core']['Point'],a4=android['content']['Intent'],a5=com['stardust']['automator']['UiObject'],a6=com['stardust']['autojs']['core']['accessibility']['UiSelector'],a7=com['stardust']['autojs']['core']['accessibility']['AccessibilityService'],a8=android['view']['accessibility']['AccessibilityWindowInfo'],a9={'ctx_reso':context['getContentResolver'](),'autojs_a11y_svc_name':context['getPackageName']()+'/'+new a7()['getClass']()['getName'](),get 'sel'(){return this['selector']=this['selector']||aa['selector']();},'parseArgs'(V){let Y=[this['autojs_a11y_svc_name']],Z=!0x1,ae=typeof V[0x0];return'undefined'!==ae&&(Array['isArray'](ae)?(Y=V[0x0],Z=!!V[0x1]):'string'===ae?(Y=[V[0x0]],Z=!!V[0x1]):'boolean'===ae&&(Z=V[0x0])),{'forcible':Z,'svc':Y};},'getString'(){return a1['getString'](this['ctx_reso'],a1['ENABLED_ACCESSIBILITY_SERVICES'])||'';},'tryEnableAndRestart'(){if(aa['enable'](!0x0)){let {enginesx:V}=p('ext-engines');_['$'](['已自动开启无障碍服务','尝试一次项目重启操作'],0x1,0x0,0x0,0x2),V['restart']({'is_debug':!0x0,'is_instant_running':!0x1,'max_restart_e_times':0x1}),sleep(0x1068),exit();}}},aa={'bridge':{'setWindowFilter'(V){auto['setWindowFilter'](function(Y){try{return V(Y);}catch(ai){return!0x1;}});},'setWindowBlacklist'(V){this['setWindowFilter'](Y=>!V['includes'](Y['getRoot']()['getPackageName']()));},'setWindowWhitelist'(V){this['setWindowFilter'](Y=>V['includes'](Y['getRoot']()['getPackageName']()));},'setWindowAllowAll'(){this['setWindowFilter'](()=>!0x0);},'resetWindowFilter'(){this['setWindowFilter'](V=>this['isWindowType'](V,'APPLICATION')||this['isWindowType'](V,'SYSTEM')&&V['isActive']());},'isWindowType'(V,Y){if('number'==typeof Y)return Y===V['getType']();let Z=String(Y)['toUpperCase']();if(!(Z in{'APPLICATION':0x1,'INPUT_METHOD':0x2,'SYSTEM':0x3,'ACCESSIBILITY_OVERLAY':0x4,'SPLIT_SCREEN_DIVIDER':0x5}))throw TypeError('Unknown\x20type\x20of\x20\x22type\x22\x20for\x20isWindowType()');return a8['TYPE_'+Z]===V['getType']();}},'service':{'refreshServiceInfo'(){auto['service']['setServiceInfo'](auto['service']['getServiceInfo']());}},'click$'(){return(this['_click$']=this['_click$']||n['detach'](this['click'],0x2))['apply'](this['arguments']);},'wait$'(){return(this['_wait$']=this['_wait$']||n['detach'](this['wait'],0x3))['apply'](this,arguments);},'swipe$'(){return(this['_swipe$']=this['_swipe$']||n['detach'](this['swipe'],0x3))['apply'](this['arguments']);},'enable'(){try{let V,{forcible:Y,svc:Z}=a9['parseArgs'](arguments);if(this['state'](Z)?Y&&(V=this['enabled_svc']):V=this['enabled_svc']['split'](':')['filter'](V=>!Z['includes'](V))['concat'](Z)['join'](':'),V){a1['putString'](a9['ctx_reso'],a1['ENABLED_ACCESSIBILITY_SERVICES'],V),a1['putInt'](a9['ctx_reso'],a1['ACCESSIBILITY_ENABLED'],0x1);let Y=Date['now']();for(;Date['now']()-Y<0x7d0;){if(this['state'](Z))return!0x0;sleep(0xb4);}_['$']('Operation\x20timed\x20out',0x4,0x1);}return!0x0;}catch(au){return!0x1;}},'disable'(){try{let V=arguments[0x0];if(r(V)&&'all'===V['toLowerCase']())return a1['putString'](a9['ctx_reso'],a1['ENABLED_ACCESSIBILITY_SERVICES'],''),a1['putInt'](a9['ctx_reso'],a1['ACCESSIBILITY_ENABLED'],0x1),!0x0;let Y,{forcible:Z,svc:n}=a9['parseArgs'](arguments),ax=a9['getString'](),ay=function(){for(let V=0x0,Y=n['length'];V!n['includes'](V))['join'](':'):Z&&(Y=ax),Y){a1['putString'](a9['ctx_reso'],a1['ENABLED_ACCESSIBILITY_SERVICES'],Y),a1['putInt'](a9['ctx_reso'],a1['ACCESSIBILITY_ENABLED'],0x1),ax=a9['getString']();let V=Date['now']();for(;Date['now']()-V<0x7d0;){if(!ay())return!0x0;sleep(0xb4);}_['$']('Operation\x20timed\x20out',0x4,0x1);}return!0x0;}catch(aD){return!0x1;}},'restart'(){return this['disable']['apply'](this,arguments)&&this['enable']['apply'](this,arguments);},'state'(V){let Y=this['enabled_svc']=a9['getString'](),Z=[];if(Array['isArray'](V))Z=V['slice']();else if(void 0x0===V)Z=[a9['autojs_a11y_svc_name']];else{if('string'!=typeof V)throw TypeError('Unknown\x20a11y\x20state\x20type');Z=[V];}return Z['every'](V=>Y['includes'](V));},'services':()=>a9['getString']()['split'](':')['filter'](V=>!!V),'test'(){let V='%rand%'+Date['now']()+Math['random']()['toFixed'](0x9);return this['enable'](V,!0x0),this['disable'](V,!0x0);},'selector'(){let V={'sel_body_pool':{},'cache_pool':{}},Y={'pickup'(V,Y,aO){let aP={'loc_keys_abbr':{'bi$':'boundsInside','c$':'clickable','cn$':'className'},'options':aO||{},get 'res_type'(){return this['_res_type']=this['_res_type']||this['getResultType'](Y);},get 'locator'(){return this['_locator']||null;},get 'widget'(){return this['_widget']||null;},get 'widget_collection'(){return this['_wc']||[];},get 'selector'(){return this['_selector']||null;},'tools':{'uiObject2Point':V=>V instanceof a5?new a3(V['bounds']()['centerX'](),V['bounds']()['centerY']()):null,'wrapStrByOptDef':V=>!V&&'default'in aP['options']?aP['options']['default']:V,'isArrResType':()=>/^(widgets|points)$/['test'](aP['res_type']),'isCompass':V=>'string'==typeof V&&/(p\d*|c\d*)*(k\d*)?/['test'](V)},'refreshSvcInfoIFN'(){this['options']['refresh']&&aa['service']['refreshServiceInfo']();},'parseRawLocator'(){let Y,Z,aO=V;if(Array['isArray'](aO)){let V=aO['slice']();this['tools']['isCompass'](V[V['length']-0x1])&&(Z=V['pop']()),[aO,Y]=V;}let aX=this['setUniqueLocator'](aO,Y);aX instanceof a6?(this['_selector']=aX,this['_widget']=this['getWidgetByCompass'](aX['findOnce'](),Z),this['tools']['isArrResType']()&&(this['_wc']=aX['find']()['toArray']())):aX instanceof a5&&(this['_selector']=null,this['_widget']=this['getWidgetByCompass'](aX,Z),this['tools']['isArrResType']()&&(this['_wc']=[aX]));},'setUniqueLocator'(V,Y){if(V instanceof a6)return this['_locator']=this['assembleSelectors'](V,Y);if(r(V)||s(V)||o(V)){let Z=this['parseTextSelector'](V);return this['_locator']=this['assembleSelectors'](Z,Y);}if(a(V)){let Z=global['selector'](),aO=Object['assign'](V,Y);return this['_locator']=this['assembleSelectors'](Z,aO);}return this['_locator']=V;},'extendLocator'(V,Y,aO){let b6,{$$disp:s}=Z(0x19f),b7={get 'W'(){return'object'==typeof s?s['W']:device['width'];},get 'H'(){return'object'==typeof s?s['H']:device['height'];},'isCenterX'(Y){let Z=Number(Y),aO=!0x0===Y||l(Y)||isNaN(Z)?0.01:!0x1===Y?Y:Z['clamp'](0x0,0.25),b6=V=>Math['abs'](V['bounds']()['centerX']()-this['W']/0x2)<=this['W']*aO;return!0x1!==aO?V['filter'](b6['toRegular']()):V['filter']((V=>!b6(V))['toRegular']());},'isFullScreen'(Y){let Z=Number(Y),aO=!0x0===Y||isNaN(Z)?0.15:!0x1===Y?Y:Z['clamp'](0x0,0.5),b6=V=>V['bounds']()['height']()/this['H']>=0x1-aO&&Math['abs'](V['bounds']()['width']()-this['W'])<=0x4;return!0x1!==aO?V['filter'](b6['toRegular']()):V['filter']((V=>!b6(V))['toRegular']());}};try{b6=b7[Y]['apply'](b7,aO);}catch(bk){throw console['warn'](bk['message']),Error('Cannot\x20apply\x20extended\x20locator:\x20'+Y);}if(b6 instanceof a6)return b6;throw Error('Extended\x20locator\x20('+Y+')\x20returns\x20non-UiSelector\x20type');},'assembleSelectors'(V,Y){return l(V)||!c(Y)||Object['keys'](Y)['forEach'](Z=>{let aO=Z in this['loc_keys_abbr']?this['loc_keys_abbr'][Z]:Z,bp=V=>'function'==typeof V?V['toRegular']():V,bq=Array['isArray'](Y[Z])?Y[Z]['map'](bp):[Y[Z]]['map'](bp),br=V[aO];if('function'==typeof br)try{return V=br['apply'](V,bq);}catch(bt){throw console['warn'](bt['message']),Error('Cannot\x20apply\x20selector:\x20'+aO);}return V=this['extendLocator'](V,aO,bq);}),V;},'getTextSelector'(V,Y){let Z={'sel':Y['desc'](V),get 'txt'(){let V=this['sel']['findOnce']();return V&&V['desc']()||'';}},aO={'sel':Y['text'](V),get 'txt'(){let V=this['sel']['findOnce']();return V&&V['text']()||'';}},by=Z['txt']['length'],bz=aO['txt']['length'];if(by||bz)return bz>by?aO['sel']:Z['sel'];let bC=Y['id'](V);return bC['exists']()?bC:null;},'parseTextSelector'(V){return V instanceof RegExp?this['getTextSelector'](V,{'desc':descMatches,'text':textMatches,'id':idMatches}):('number'==typeof V&&(V=V['toString']()),'string'==typeof V?this['getTextSelector'](V,{'desc':desc,'text':text,'id':id}):null);},'getWidgetByCompass'(V,Y){if(!(V instanceof a5))return null;if('string'!=typeof Y)return V;for(;Y['length']>0x0;){let Z,aO,bI,bJ;if(Z=/^p[p\d]*/['exec'](Y)){let aO=Y['match'](/^p\d+|^p+(?!\d)/g)['reduce']((V,Y)=>V+(/\d/['test'](Y)?Number(Y['slice'](0x1)):Y['length']),0x0);for(;aO--;)if(!(V=V['parent']()))return null;Y=Y['slice'](Z[0x0]['length']);}else if(aO=/^c-?\d+([>c]?-?\d+)*/['exec'](Y)){let Z=aO[0x0]['split'](/[>c]/);for(let Y of Z)if(Y['length']){if(!(V instanceof a5))return null;let Z=V['childCount'](),aO=Number(Y);if(aO<0x0&&(aO+=Z),aO<0x0||aO>=Z)return null;V=V['child'](aO);}Y=Y['slice'](aO[0x0]['length']);}else if(bI=/^s[<>]?-?\d+/['exec'](Y)){let Z=V['parent']();if(!(Z instanceof a5))return null;let aO=V['indexInParent']();if(aO<0x0)return null;let bJ=Z['childCount'](),bU=bI[0x0],bV=+bU['match'](/-?\d+/)[0x0];if(bU['includes']('>')?aO+=bV:bU['includes']('<')?aO-=bV:aO=bV<0x0?bV+bJ:bV,aO<0x0||aO>=bJ)return null;V=Z['child'](aO),Y=Y['slice'](bI[0x0]['length']);}else{if(!(bJ=/^k[k\d]*/['exec'](Y)))throw Error('Invalid\x20rest\x20compass\x20for\x20$$sel.pickup():\x20'+Y);{let Z=Y['match'](/^k(\d*)/g)['map'](V=>{let Y=V['match'](/\d+/);return Y?Number(Y[0x0]):0x1;})['reduce']((V,Y)=>V+Y);V=function(){let Y=V;for(;;){if(!(Y instanceof a5))return null;if(Y['clickable']())return Y;if(!Z--)return V;Y=Y['parent']();}}(),Y=Y['slice'](bJ[0x0]['length']);}}}return V||null;},'getResultType'(V){let Y=V?String(V):null;return null===Y||Y['match'](/^w(idget)?$/)?'widget':Y['match'](/^(w(idget)?_?c(ollection)?|wid(get)?s)$/)?'widgets':Y['match'](/^t(xt)?$/)?'txt':Y['match'](/^s(el(ector)?)?$/)?'selector':Y['match'](/^e(xist(s)?)?$/)?'exists':Y['match'](/^s(el(ector)?)?(_?s)(tr(ing)?)?$/)?'selector_name':Y['match'](/^p(oin)?ts?$/)?Y['includes']('s')?'points':'point':Y;},'getInternalResult'(){return{'selector':this['selector'],'widget':this['widget'],'widgets':this['widget_collection'],'exists':Boolean(this['widget']),get 'selector_name'(){if(!this['widget']||!this['selector'])return aP['tools']['wrapStrByOptDef']('');let V=this['selector']['toString']()['match'](/[a-z]+/);return aP['tools']['wrapStrByOptDef'](V?V[0x0]:'');},get 'txt'(){let V=this['widget']&&this['widget']['text']()||'',Y=this['widget']&&this['widget']['desc']()||'';return Y['length']>V['length']?aP['tools']['wrapStrByOptDef'](Y):aP['tools']['wrapStrByOptDef'](V);},get 'point'(){return aP['tools']['uiObject2Point'](this['widget']);},get 'points'(){return this['widgets']['map'](aP['tools']['uiObject2Point'])['filter'](V=>null!==V);}}[this['res_type']];},'getResult'(){this['refreshSvcInfoIFN'](),this['parseRawLocator']();let V=function(){let V=this['getInternalResult']();if(void 0x0!==V)return V;if(null===this['widget'])return null;let Y=this['widget'][this['res_type']];return'function'==typeof Y?Y['call'](this['widget']):Y;}['call'](this);return l(V)?'default'in this['options']?this['options']['default']:null:V;}};return aP['getResult']();},'traverse':(V,Z,cd)=>({'parseFilter'(){this['filter']='string'==typeof Z?V=>Y['pickup'](V,Z):'function'==typeof Z?Z:()=>!0x0;},'parseArgs'(){this['parseFilter'](),this['type']=cd||'widget',this['pickup']=Y['pickup']['bind'](Y),this['pickup_null_res']=this['pickup'](null,this['type']);},'traverse'(V){for(let Y of this['pickup'](V,'children',{'default':[]})){if(!(Y instanceof a5))continue;if(this['filter'](Y))return this['pickup'](Y,this['type']);let V=this['traverse'](Y);if(V!==this['pickup_null_res'])return V;}return this['pickup_null_res'];},'getResult'(){return this['parseArgs'](),this['filter'](V)?this['pickup'](V,this['type']):this['traverse'](V);}}['getResult']()),'traverseAll':(V,Z,ck)=>({'results':[],'type':ck||'widget','filter':'string'==typeof Z?V=>Y['pickup'](V,Z):'function'==typeof Z?Z:()=>!0x0,'pickup':Y['pickup']['bind'](Y),'traverse'(V){for(let Y of this['pickup'](V,'children',{'default':[]}))Y instanceof a5&&(this['filter'](Y)&&this['results']['push'](this['pickup'](Y,'widget')),this['traverse'](Y));return this['type']['match'](/^w(idget)?$/)?this['results']:this['results']['map'](V=>this['pickup'](V,this['type']));},'getResult'(){return this['filter'](V)&&this['results']['push'](this['pickup'](V,'widget')),this['traverse'](V);}}['getResult']()),'add'(Y,Z){return V['sel_body_pool'][Y]='function'==typeof Z?V=>Z(V):V=>this['pickup'](Z,V),this;},'get'(Y,Z){let cw=V['sel_body_pool'][Y];if(void 0x0!==cw)return cw?'cache'===Z?V['cache_pool'][Y]=cw('w'):cw(Z):null;throw Error('Key\x20\x22'+Y+'\x22\x20is\x20not\x20in\x20the\x20pool');},'getAndCache'(V){return this['get'](V,'cache');},'cache':{'save'(V){Y['getAndCache'](V);},'load'(Z,cA){let cB=V['cache_pool'][Z];return cB?Y['pickup'](cB,cA):null;},'refresh'(Y){let Z=V['cache_pool'][Y];Z&&Z['refresh'](),this['save'](Y);},'recycle'(Y){let Z=V['cache_pool'][Y];Z&&Z['recycle']();}}};return Object['assign'](Object['create'](global['selector']()),Y);},'enableByRoot'(){try{let V='enabled=$(settings\x20get\x20secure\x20enabled_accessibility_services)\x0apkg='+a9['autojs_a11y_svc_name']+'\x0aif\x20[[\x20$enabled\x20!=\x20*$pkg*\x20]]\x0athen\x0aenabled=$pkg:$enabled\x0asettings\x20put\x20secure\x20enabled_accessibility_services\x20$enabled\x0afi\x0asettings\x20put\x20secure\x20accessibility_enabled\x201';return 0x0===shell(V,!0x0)['code'];}catch(cH){return!0x1;}},'enableByRootAndWaitFor'(V){return this['enableByRoot']()&&a7['Companion']['waitForEnabled'](V||0x3e8);},'goToAccessibilitySetting'(){context['startActivity'](new a4(a0['ACTION_ACCESSIBILITY_SETTINGS'])['addFlags'](a4['FLAG_ACTIVITY_NEW_TASK']));},'waitForEnabled'(V){return threads['start'](function(){auto['waitFor']();})['join'](V||0xea60),this['state']()||_['$']('等待用户开启无障碍服务超时',0x8,0x2,0x0,0x2);},'isAutoEnableEnabled'(){try{let {storagesx:V}=p('ext-storages');return'ON'===V['create']('af_cfg')['get']('config',{'prop':'auto_enable_a11y_svc'});}catch(cK){return!0x1;}},'autoEnable'(V){if(this['state']())return!0x0;let Y=V||{},Z=Y['is_essential'],cO=Y['is_manual_disallowed'];if(!this['isAutoEnableEnabled']()){if(!Z)return _['_']('自动开启无障碍服务未启用',0x3),!0x1;_['$']('无障碍服务关闭且自动启用未开启',0x8,0x2,0x0,0x2);}let cP=context['getPackageName']()+'\x20android.permission.WRITE_SECURE_SETTINGS';return'undefined'!=typeof activity?(this['enable'](!0x0)?h('已自动启用无障碍服务\x0a需要重新运行当前脚本','long'):Z&&_['$']('自动启用无障碍服务失败',0x4,0x2,0x0,0x2),exit(),!0x1):(a9['tryEnableAndRestart'](),function(){try{return 0x0===shell('date',!0x0)['code'];}catch(cQ){return!0x1;}}()&&(shell('pm\x20grant\x20'+cP,!0x0),a9['tryEnableAndRestart']()),function(){if(_['$']('自动启用无障碍服务失败',0x4,0x2,0x0,-0x1),context['checkCallingOrSelfPermission'](android['Manifest']['permission']['WRITE_SECURE_SETTINGS'])!==android['content']['pm']['PackageManager']['PERMISSION_GRANTED']){let V='adb\x20shell\x20pm\x20grant\x20'+cP;_['$']('Auto.js缺少以下权限:',0x4,0x0,0x0,-0x1),_['$']('WRITE_SECURE_SETTINGS',0x4,0x0,0x0,0x1),_['$']('可尝试使用ADB工具连接手机',0x3),_['$']('并执行以下Shell指令(无换行):\x0a\x0a'+V+'\x0a',0x3),_['$']('Shell指令已复制到剪切板',0x3),_['$']('重启设备后授权不会失效',0x3),setClip(V);}_['__']();}(),Z&&cO&&exit(),this['waitForEnabled']());},'ensureService'(){this['autoEnable']({'is_essential':!0x0});},'ensureFunctionality'(){if('undefined'==typeof activity){let V=0x18;for(;!press(0x5f5e100,0x0,0x1)&&V--;)sleep(0x32);V<0x0&&(_['$']('无障碍服务状态异常',0x4,0x0,0x0,-0x1),_['$']('或基于服务的方法无法使用',0x4,0x0,0x0,0x1),_['$']('可尝试以下解决方案',0x3),_['$']('卸载并重新安装\x22Auto.js\x22',0x3,0x0,0x1),_['$']('安装后重启设备',0x3,0x0,0x1),_['$']('运行\x22Auto.js\x22并拉出侧边栏',0x3,0x0,0x1),_['$']('开启无障碍服务',0x3,0x0,0x1),_['$']('再次尝试运行本项目',0x3,0x0,0x1),_['$']('无障碍服务功能异常',0x8,0x2,0x0,0x2));}},'ensureSvcAndFunc'(){this['ensureService'](),this['ensureFunctionality']();},'click'(V,Y,Z){return a(Y)?this['click'](V,'widget',Y):!l(V)&&{'container':[],'options':Z||{},'wait':aa['wait']['bind'](aa),'pickup':a9['sel']['pickup']['bind'](a9['sel']),'impededIFN'(){this['options']['no_impeded']||'function'==typeof n&&n('a11yx.click');},'parsePadding'(){let V=this['options']['padding'];if(!V)return this['padding']={'x':0x0,'y':0x0};let Y=[];if('number'==typeof V)Y=[0x0,V];else if(!Array['isArray'](V))throw Error('Invalid\x20paddings\x20for\x20a11yx.click()');if(0x1===V['length'])Y=[0x0,V[0x0]];else{if(0x2!==V['length'])throw Error('Invalid\x20paddings\x20amount\x20for\x20a11yx.click()');{let [Z,d1]=V;Y='x'===Z?[d1,0x0]:'y'===Z?[0x0,d1]:[Z,d1];}}let [Z,d3]=Y['map'](V=>Number(V));if(isNaN(Z)||isNaN(d3))throw Error('Invalid\x20paddings\x20calc\x20results\x20for\x20a11yx.click()');this['padding']={'x':Z,'y':d3};},'parseStrategy'(){let V=this['options']['strategy']||this['options']['click_strategy']||this['options']['cs$']||Y||'widget';this['strategy']='string'==typeof V?V:String(this['strategy']);},'parseCondition'(){this['condition']=function(){let Y=this['options']['condition'];if('function'==typeof Y)return Y;if('disappear'===Y)return()=>this['checkDisappearance'](V);if(l(Y))return()=>!0x0;throw Error('Invalid\x20condition\x20for\x20a11yx.click():\x20'+Y);}['call'](this);},'parseArgs'(){this['parsePadding'](),this['parseStrategy'](),this['parseCondition'](),this['times']=this['options']['max_check_times']||0x3,this['timeout']=this['options']['check_time_once']||0x1f4,this['press_time']=this['options']['press_time']||this['options']['pt$']||0x1,this['buffer_time']=this['options']['buffer_time']||this['options']['bt$']||0x0;},'checkDisappearance'(V){if(l(V))return!0x0;if(V instanceof a5){let Y=V['parent']();return!Y||!this['container']['includes'](Y['hashCode']());}if(V instanceof a6){let Y=V['findOnce']();return!Y||!this['container']['includes'](Y['hashCode']());}return this['checkDisappearance'](this['pickup'](V));},'clickOnce'(V){let Y=(V,Y)=>this['strategy']['match'](/^p(ress)?$/)?press(V+this['padding']['x'],Y+this['padding']['y'],this['press_time']):click(V+this['padding']['x'],Y+this['padding']['y']);if(V instanceof a6){let Z=V['findOnce']();if(!Z)return!0x1;if(this['container']['push'](Z['hashCode']()),this['strategy']['match'](/^w(idget)?$/)&&Z['clickable']())return Z['click']();let dh=Z['bounds']();return Y(dh['centerX'](),dh['centerY']());}if(V instanceof a5){let Z=V['parent']();if(null!==Z&&this['container']['push'](Z['hashCode']()),this['strategy']['match'](/^w(idget)?$/)&&V['clickable']())return V['click']();let dj=V['bounds']();return Y(dj['centerX'](),dj['centerY']());}if(V instanceof a2)return Y(V['centerX'](),V['centerY']());if(V instanceof a3)return Y(V['x'],V['y']);if(a(V)&&'number'==typeof V['x']&&'number'==typeof V['y'])return Y(V['x'],V['y']);if(Array['isArray'](V)&&0x2===V['length']&&V['every'](V=>'number'==typeof V))return Y['apply'](null,V);let Z=this['pickup'](V,'widget');return!!Z&&this['clickOnce'](Z);},'getResult'(){this['impededIFN'](),this['parseArgs']();do{if(this['clickOnce'](V)){if(this['wait'](this['condition'],this['timeout'],0x50))return u(this['buffer_time']),!0x0;}else u(this['timeout']);}while(this['times']--);return!0x1;}}['getResult']();},'pipeline'(V,Y,Z){return'string'!=typeof V?this['pipeline'](String(),V,Y):{'options':Z||{},get 'name'(){return this['_name']=this['_name']||String(this['options']['name']||'pipeline')['surround']('\x22');},'pickup':a9['sel']['pickup']['bind'](a9['sel']),'waitAndClick':aa['waitAndClick']['bind'](aa),'parseActions'(){return this['actions']=Y['map'](V=>a(V)?V:{'locator':V});},'getResult'(){return this['parseActions']()['every']((V,Y)=>this['waitAndClick'](V['locator'],Object['assign']({},this['options'],{'condition':function(){return V['condition']?V['condition']:Ythis['pickup'](this['actions'][Y+0x1]['locator']):void 0x0;}['call'](this),'strategy':V['strategy']}))||_['w']([this['name']+'管道破裂',V['locator']],0x2,0x0,-0x2));}}['getResult']();},'wait'(V,Y,Z,dw){return a(Y)?this['wait'](V,null,null,Y):a(Z)?this['wait'](V,Y,null,Z):{'result':!0x1,'start':Date['now'](),'pickup':a9['sel']['pickup']['bind'](a9['sel']),'options':dw||{},'impededIFN'(){this['options']['no_impeded']||'function'==typeof n&&n('a11yx.wait');},'parseArgs'(){let V='number'==typeof Y?Y:Number(Y)||0x2710;this['times']=V<=0x0||!isFinite(V)||isNaN(V)||V>=0x64?0x1/0x0:V,this['timeout']=V>=0x64?V:0x1/0x0,this['interval']=Z||0xc8,this['interval']>=this['timeout']&&(this['times']=0x1);},'check'(){return l(V)?V:'function'==typeof V?V():this['pickup'](V);},'wait'(){for(;this['times']--&&!(this['result']=this['check']())&&!(Date['now']()-this['start']>this['timeout']);)sleep(this['interval']);},'callbackIFN'(){if('function'==typeof this['options']['then']&&this['result']){let V=this['options']['then']['call'](this['options']['this'],this['result']);void 0x0!==V&&(this['result']=V);}'function'==typeof this['options']['else']&&(this['result']||this['options']['else']['call'](this['options']['this']));},'getResult'(){return this['impededIFN'](),this['parseArgs'](),this['wait'](),this['callbackIFN'](),this['result'];}}['getResult']();},'waitEvery'(V,Y,Z,dC){},'waitSome'(V,Y,Z,dG){},'waitAndClick'(V,Y,Z,dK){if(a(Y))return this['waitAndClick'](V,null,null,Y);if(a(Z))return this['waitAndClick'](V,Y,null,Z);let dL=!0x0;return this['wait'](V,Y,Z,{'then':function(V){let Y=dK||{};sleep(Y['intermission']||0xf0),dL=this['click'](V,Y)&&dL;}['bind'](this)})&&dL;},'waitAndStable'(V,Y,Z,dR){if(a(Y))return this['waitAndStable'](V,null,null,Y);if(a(Z))return this['waitAndStable'](V,Y,null,Z);let dS={'parseArgs'(){let V=dR||{};this['reference']=V['reference'],this['timeout']=V['timeout']||0x5dc0,this['threshold']=V['threshold']||0x1a4;},'isTimedOut'(){return Date['now']()-this['condition_start']>this['timeout'];},'condition'(){return this['last_condition']=V();},'checkInitCondition'(){let V=void 0x0!==this['reference']?()=>this['condition']()!==this['reference']:()=>this['condition']();return aa['wait'](V,Y,Z,{'then':V=>dS['last_stable']=V});},'checkStableCondition'(){for(this['condition_start']=Date['now']();aa['wait'](()=>dS['last_stable']!==this['condition'](),this['threshold']);)if(dS['last_stable']=dS['last_condition'],this['isTimedOut']())throw Error('a11yx.waitAndStable()\x20timed\x20out\x20waiting\x20for\x20stable\x20condition');return dS['last_stable'];},'getResult'(){return this['parseArgs'](),this['checkInitCondition']()&&this['checkStableCondition']();}};return dS['getResult']();},'swipe':(V,Y,Z,dZ)=>({'impededIFN'(){this['options']['no_impeded']||'function'==typeof n&&n('a11yx.swipe');},'parsePoint'(V){if('number'==typeof V)return{'x':halfW,'y':this['scale'](V,'y')};if(Array['isArray'](V)){if(0x2!==V['length']||!V['every'](V=>s(V)))throw Error('Invalid\x20array\x20point:\x20'+V['join'](',\x20'));return{'x':this['scale'](V[0x0],'x'),'y':this['scale'](V[0x1],'y')};}if(a(V)){if('number'!=typeof V['x']||'number'!=typeof V['y'])throw Error('Invalid\x20object\x20point:\x20'+V['x']+',\x20'+V['y']);return{'x':this['scale'](V['x'],'x'),'y':this['scale'](V['y'],'y')};}if(V instanceof a3)return{'x':this['scale'](V['x'],'x'),'y':this['scale'](V['y'],'y')};throw TypeError('Unknown\x20type\x20of\x20point\x20for\x20a11yx.swipe()');},'parseDuration'(){this['duration']=Z>=0xc8?Z:Math['max'](Math['dist'](this['start'],this['end'])/0x5,0xc8);},'parseArgs'(){this['options']=dZ||{},this['start']=this['parsePoint'](V),this['end']=this['parsePoint'](Y),this['parseDuration']();},'scale'(V,Y){let Z=void 0x0===Y?'x':Y;return-0x1===V?'x'===Z?W:H:V<0x1?'x'===Z?cX(V):cY(V):V;},'swipe'(){return swipe(this['start']['x'],this['start']['y'],this['end']['x'],this['end']['y'],this['duration']);},'getResult'(){return this['parseArgs'](),this['impededIFN'](),this['swipe']();}}['getResult']()),'swipeInBounds'(){},'swipeInScreen'(){},'swipeAndClick'(){}};V['exports']={'a11yx':aa,'$$sel':aa['selector']()};},203:e5=>{let e6=android['content']['res']['ColorStateList'],e7={'toStr'(e5,e6){'string'==typeof e5&&Number(e5)['toString']()===e5&&(e5=Number(e5));let e7='number'==typeof e5?colors['toString'](e5):e5;if('string'!=typeof e7)throw TypeError('Unknown\x20type\x20of\x20color\x20for\x20colorsx.toStr()');let eb=colors['alpha'](e7),ec=colors['red'](e7),ed=colors['green'](e7),ee=colors['blue'](e7);if(void 0x0===e6||!0x0===e6||'keep'===e6||0x8===e6)return e7;if(!0x1===e6||'none'===e6||0x6===e6)return'#'+colors['toString'](colors['rgb'](ec,ed,ee))['slice'](-0x6);if('auto'===e6)return eb<0xff?e7:colors['toString'](colors['rgb'](ec,ed,ee));throw TypeError('Unknown\x20type\x20of\x20alpha\x20for\x20colorsx.toStr()');},'toInt'(e5){let e6;'string'==typeof e5&&Number(e5)['toString']()===e5&&(e5=Number(e5));try{e6='string'==typeof e5?colors['parseColor'](e5):e5;}catch(eh){throw console['error']('Passed\x20color:\x20'+e5),Error(eh+'\x0a'+eh['stack']);}if('number'!=typeof e6)throw TypeError('Unknown\x20type\x20of\x20color\x20for\x20colorsx.toInt()');return e6;},'hrgba'(e5){if('string'!=typeof e5)throw Error('Param\x20rgba_hex\x20must\x20be\x20a\x20string\x20type');if('#'!==e5[0x0])throw Error('Param\x20rgba_hex\x20must\x20started\x20with\x20hash\x20symbol');if(0x7===(e5=e5['trim']()['toUpperCase']())['length']&&(e5+='FF'),0x9!==e5['length'])throw Error('Length\x20of\x20param\x20rgba_hex\x20must\x20be\x207\x20or\x209');return this['toInt']('#'+e5['slice'](-0x2)+e5['slice'](0x1,-0x2));},'toColorStateList'(e5){return e6['valueOf'](this['toInt'](e5));}};e5['exports']={'colorsx':e7};},725:(ek,el,em)=>{let {isPlainObject:n,$$bool:r,$$toast:s}=em(0x11e),en={'StateManager':function(){let ek=function(ek){this['state']=ek,this['last_state']=ek;};return ek['prototype']={'switchOn'(){this['last_state']=this['state'],this['state']=!0x0;},'switchOff'(){this['last_state']=this['state'],this['state']=!0x1;},'switchGet'(){return this['state'];},'switchSet'(ek){this['last_state']=this['state'],this['state']=n(ek)?ek['is_debug']:ek;},'switchBack'(){let ek=this['state'];this['state']=this['last_state'],this['last_state']=ek;},'enable'(){this['switchOn']();},'disable'(){this['switchOff']();},'isEnabled'(){return!0x0===this['switchGet']();}},ek;}(),'DebugConstructor'(ek,el){let em=function(ek,el,ex,ey){return{'parseMsgLevel'(){this['message_level']=void 0x0===el?0x0:el,this['is_high_level']=0x3===el||'w'===el||'warn'===el||0x4===el||'e'===el||'error'===el||0x8===el||'x'===el||0x9===el||'r'===el;},'trigger':()=>em['switchGet'](),'print'(){en['print'](ek,this['message_level'],0x0,ex,ey,{'msg_prefix':'»','indent_symbol':'-\x20','indent_repeat':'whole','indent_trailing_space':!0x1});},'getResult'(){return this['trigger']()&&(this['parseMsgLevel'](),this['print']()),!this['is_high_level'];}}['getResult']();};return en['StateManager']['call'](em,ek),Object['assign'](em,en['StateManager']['prototype'],{'switchGet'(){let ek=em['state'];if('boolean'==typeof ek)return ek;if(void 0x0!==em['depot']){let ek=em['depot']['state'];if('boolean'==typeof ek)return ek;}return'boolean'==typeof en['debug']['state']?en['debug']['state']:'object'==typeof global['consolex']?global['consolex']['debug']['state']:void 0x0;}}),Object['assign'](em,{'depot':el,'fuel'(ek){let el=n(ek)?ek['is_debug']:ek;return new en['DebugConstructor'](el,em);},'border'(ek,el,eF){em['isEnabled']()&&en['border'](ek,void 0x0===el?0x0:el,eF);},'__'(ek,el,em){this['border']['apply'](this,arguments);}}),em;},'setGlobalLogConfig'(ek){context['getPackageName']()['match'](/Pro\b/i)&&delete ek['filePattern'],console['setGlobalLogConfig'](ek);},'printBorder'(ek,el,em){this['border']['apply'](this,arguments);},'debugBorder'(ek,el,em){this['debug']['border']['apply'](this,arguments);},'$print'(){let ek={'last_border':{'save'(ek,el){this['style']=ek,this['level']=el;},'clear'(){delete this['style'],delete this['level'];},'match'(ek,el){return ek&&ek===this['style']&&el===this['level'];}}};return this['$']=this['print']=function(el,em,eX,eY,eZ,f0){if(el instanceof Error)return this['print'](el['message']+'\x0a\x0a'+el['stack']['replace'](/\s+.+?\n/g,'->$&'),em,eX,eY,eZ,f0);let f1={'trigger':()=>en['print']['isEnabled'](),'parseBorder'(){let ek=Number(eZ)||0x0,el=String(void 0x0===eZ?'':eZ),em=el['match'](/[_\d]n(\d*)$/);this['border_line_break']=null!==em?Number(em[0x1]||0x1):0x0,el['match'](/dash\/|-0\.5/)||-0.5===ek?this['border_line_before']='dash':el['match'](/^(\/?dash|0\.5)(_?n\d*)?$/)||0.5===ek?this['border_line_after']='dash':el['match'](/solid\/|-1/)||-0x1===ek?this['border_line_before']='solid':el['match'](/^(\/?solid|1)(_?n\d*)?$/)||0x1===ek?this['border_line_after']='solid':el['match'](/^(solid\/dash|-1\.5)(_?n\d*)?$/)||-1.5===ek?(this['border_line_before']='solid',this['border_line_after']='dash'):el['match'](/^(dash\/solid|1\.5)(_?n\d*)?$/)||1.5===ek?(this['border_line_before']='dash',this['border_line_after']='solid'):el['match'](/^(dashes|dash\/dash|-2)(_?n\d*)?$/)||-0x2===ek?(this['border_line_before']='dash',this['border_line_after']='dash'):(el['match'](/^(solids|solid\/solid|2)(_?n\d*)?$/)||0x2===ek)&&(this['border_line_before']='solid',this['border_line_after']='solid');},'parseMsgLevel'(){switch(em){case null:this['no_msg_level']=!0x0;break;case 0x0:case'v':case'verbose':this['fn']=console['verbose']['bind'](console);break;case void 0x0:case 0x1:case'l':case'd':case'log':this['fn']=console['log']['bind'](console);break;case 0x2:case'i':case'info':this['fn']=console['info']['bind'](console);break;case 0x3:case'w':case'warn':this['fn']=console['warn']['bind'](console),this['is_high_level']=!0x0;break;case 0x4:case'e':case'error':this['fn']=console['error']['bind'](console),this['is_high_level']=!0x0;break;case 0x8:case'x':this['fn']=console['error']['bind'](console),this['should_exit']=!0x0,this['is_high_level']=!0x0;break;case 0x9:case'r':this['fn']=console['error']['bind'](console),this['show_ex_msg']=!0x0,this['should_exit']=!0x0,this['is_high_level']=!0x0;break;default:throw Error('Invalid\x20message\x20level\x20for\x20consolex.print():\x20'+em);}},'parseIndent'(){this['indent']={'lv':Math['min'](Number(eY)||0x0,0xa),'trigger'(){return this['lv']>0x0&&!f1['no_msg_level'];},'getIndent'(){let ek=f1['options']['indent_symbol']||'->',el=f1['options']['indent_repeat']||'first',em=void 0x0===f1['options']['indent_trailing_space']||Boolean(f1['options']['indent_trailing_space'])?'\x20':'';switch(el){case'first':return ek['slice'](0x0,0x1)['repeat'](this['lv'])+ek['slice'](0x1)+em;case'last':return ek['slice'](0x0,-0x1)+ek['slice'](-0x1)['repeat'](this['lv'])+em;default:return ek['repeat'](this['lv'])+em;}},'getResult'(){return this['trigger']()?this['getIndent']():'';}}['getResult']();},'stringify':ek=>Array['isArray'](ek)?ek['join'](',\x20')['surround']('[\x20'):n(ek)?Object['keys'](ek)['map'](el=>el+':\x20'+ek[el])['join'](',\x20')['surround']('{\x20'):ek&&'function'==typeof ek['toString']?ek['toString']():void 0x0===ek?String():String(ek),'parseArgs'(){this['options']=f0||{},this['parseBorder'](),this['parseMsgLevel'](),this['parseIndent'](),this['msg_body']=Array['isArray'](el)?el['map'](this['stringify']['bind'](this)):this['stringify'](el),this['prefix']=void 0x0===this['options']['msg_prefix']?'':String(this['options']['msg_prefix']||'')+'\x20';},'toastIFN'(){let ek='function'==typeof s?s:toast,el=Array['isArray'](this['msg_body'])?this['msg_body']['join']('\x0a'):this['msg_body'];switch(eX){case 0x2:case'l':case'long':return ek(el,'l');case 0x3:case's/f':case'short/forcible':return ek(el,'s','f');case 0x4:case'l/f':case'long/forcible':return ek(el,'l','f');}eX&&ek(el,'S');},'showBorderIFN'(){let {border_line_before:el,border_line_after:n,border_line_break:eX}=this,{border_prefix:s}=this['options'],eY=(void 0x0===em?0x1:Number(em)||0x0)['clamp'](0x0,0x1),eZ=[()=>{void 0x0===el||this['no_msg_level']||ek['last_border']['match'](el,eY)||en['print']['border'](el,eY,0x0,!0x1,s);},()=>{void 0x0===n||this['no_msg_level']||(en['print']['border'](n,eY,eX,!0x0,s),eX&&ek['last_border']['clear']());}][Symbol['iterator']]();return(this['showBorderIFN']=()=>eZ['next']()['value']())();},'showMessageIFN'(){this['no_msg_level']||(ek['last_border']['clear'](),Array['isArray'](this['msg_body'])?this['msg_body']['forEach'](this['showMsg']['bind'](this)):this['showMsg'](this['msg_body']));},'showMsg'(ek){this['fn'](this['prefix']+this['indent']+ek);},'getResult'(){return this['trigger']()&&(this['parseArgs'](),this['toastIFN'](),this['showBorderIFN'](),this['showMessageIFN'](),this['showBorderIFN'](),this['show_ex_msg']&&en['print']('Forcibly\x20stopped',0x4,0x1),this['should_exit']&&exit()),!this['is_high_level'];}};return f1['getResult']();},Object['assign'](this['print'],new this['StateManager'](!0x0),this['StateManager']['prototype'],{'border'(el,em,fh,fi,fj){let fk={'style':String(el||'solid'),'level':(void 0x0===em?0x1:Number(em)||0x0)['clamp'](0x0,0x1),'break':'\x0a'['repeat'](Math['max'](Number(fh)||0x0,0x0)),'prefix':void 0x0===fj?'':String(fj)+'\x20','trigger'(){return en['print']['isEnabled']()&&!ek['last_border']['match'](this['style'],this['level']);},'saveStateIFN'(){fi&&!this['break']&&ek['last_border']['save'](this['style'],this['level']);},'printIFN'(){let ek=this['style']['match'](/dash/)?this['prefix']+'-\x20'['repeat'](0x11)['trim']():this['prefix']+'-'['repeat'](0x21);this['level']?console['log'](ek+this['break']):console['verbose'](ek+this['break']);}};fk['trigger']()&&(fk['saveStateIFN'](),fk['printIFN']());}}),this['__']=this['border']=function(ek,el,em){this['print']['border'](ek,el,em,!0x0);},this['v']=this['verbose']=(ek,el,em,ft)=>this['$'](ek,0x0,el,em,ft),this['d']=this['log']=(ek,el,em,fx)=>this['$'](ek,0x1,el,em,fx),this['i']=this['info']=(ek,el,em,fB)=>this['$'](ek,0x2,el,em,fB),this['w']=this['warn']=(ek,el,em,fF)=>this['$'](ek,0x3,el,em,fF),this['e']=this['error']=(ek,el,em,fJ)=>this['$'](ek,0x4,el,em,fJ),delete this['$print'],this;},'$debug'(){return this['_']=this['debug']=new this['DebugConstructor'](void 0x0),delete this['$debug'],this;},'$bind'(){return this['$print']()['$debug'](),delete this['$bind'],this;}};en['$bind'](),ek['exports']={'consolex':en};},190:(fK,fL,fM)=>{let {isNullish:n}=fM(0x11e),fN=java['io']['File'],fO=java['util']['zip']['CRC32'],fP=android['util']['Base64'],fQ=javax['crypto']['Cipher'],fR=javax['crypto']['spec']['SecretKeySpec'],fS=java['security']['KeyFactory'],fT=java['security']['MessageDigest'],fU=java['security']['KeyPairGenerator'],fV=java['security']['spec']['X509EncodedKeySpec'],fW=java['security']['spec']['PKCS8EncodedKeySpec'],fX=javax['crypto']['CipherOutputStream'],fY=java['io']['FileInputStream'],fZ=java['io']['FileOutputStream'],g0=java['io']['ByteArrayOutputStream'],g1=function(){let fK=function(fK,fL){let fM=fL||{};this['keyPair']=fM['keyPair'],delete fM['keyPair'];let g7=new java['io']['ByteArrayOutputStream']();g2['_input'](fK,fM,(fK,fL,fM)=>{g7['write'](fK,fL,fM);}),this['data']=g7['toByteArray']();};return fK['prototype']['toKeySpec']=function(fK){let fL=String(fK)['replace'](/^(.+?)(?=\/).*$/,'$1');if('RSA'===fL){if('public'===this['keyPair'])return fS['getInstance'](fL)['generatePublic'](new fV(this['data']));if('private'===this['keyPair'])return fS['getInstance'](fL)['generatePrivate'](new fW(this['data']));throw Error('Property\x20keyPair\x20must\x20be\x20either\x20public\x20or\x20private');}return new fR(this['data'],fL);},fK['prototype']['toString']=function(){let fK=fP['encodeToString'](this['data'],fP['NO_WRAP']);return this['keyPair']?'Key['+this['keyPair']+']{data=\x27'+fK+'\x27}':'Key{data=\x27'+fK+'\x27}';},fK;}(),g2={'_pwmap':new Function('return\x20{_dec(e,l){let\x20i=e.split(/,\x20?/).map(e=>e.replace(/^\x22([^]+)\x22$/g,\x22$1\x22)),s=0,a=\x22\x22;for(var\x20r=\x22_.|._\x22;;){for(let\x20t=0;t0x0;)fM(gh,0x0,fN);}else{let fL=function(){return'base64'===gh['input']?fP['decode'](fK,fP['NO_WRAP']):'hex'===gh['input']?this['_fromHex'](fK):'string'==typeof fK?new java['lang']['String'](fK)['getBytes'](gh['encoding']||'utf-8'):fK;}['call'](this);fM(fL,0x0,fL['length']);}},'_output'(fK,fL,fM){let gp=fL['output']||fM;if('base64'===gp)return fP['encodeToString'](fK,fP['NO_WRAP']);if('bytes'===gp)return fK;let fN=fL['encoding']||'utf-8';return'string'===gp?new java['lang']['String'](fK,fN)['toString']():this['_toHex'](fK);},'_toHex':fK=>fK['map'](fK=>{let fL=java['lang']['Integer']['toHexString'](0xff&fK);return fL['length']%0x2?'0'+fL:fL;})['join']('')['toUpperCase'](),'_fromHex'(fK){let fL=util['java']['array']('byte',fK['length']/0x2);return String(fK)['match'](/\w{2}/g)['forEach']((fK,fM)=>{let gz=java['lang']['Integer']['valueOf'](fK,0x10);fL[fM]='number'==typeof gz?new java['lang']['Integer'](gz)['byteValue']():gz['byteValue']();}),fL;},'_cipher'(fK,fL,fM,gD,fN){let fO=fN||{},fP=fQ['getInstance'](gD);fP['init'](fL,fM['toKeySpec'](gD));let fR=function(){if('file'===fO['output'])return delete fO['output'],void 0x0!==fO['dest'];}(),fS=fR?new fZ(fO['dest']):new g0(),fT=new fX(fS,fP),fU=null;try{this['_input'](fK,fO,(fK,fL,fM)=>{fT['write'](fK,fL,fM);});}catch(gO){fU=gO;}finally{null!==fT&&fT['close'](),null!==fS&&fS['close']();}if(!fR&&!fU)return this['_output'](fS['toByteArray'](),fO,'bytes');},'Key':g1,'KeyPair':function(fK,fL,fM){let gS=fM||{};this['publicKey']=new g1(fK,Object['assign'](gS,{'keyPair':'public'})),this['privateKey']=new g1(fL,Object['assign'](gS,{'keyPair':'private'}));},'digest'(fK,fL,fM){let gW=fM||{},fN='CRC32'===fL?new fO():fT['getInstance'](fL);return this['_input'](fK,gW,(fK,fL,fM)=>{fN['update'](fK,fL,fM);}),'CRC32'===fL?fN['getValue']()['toString'](0x10)['toUpperCase']():this['_output'](fN['digest'](),gW,'hex');},'digestFile'(fK,fL,fM){let h4=Object['assign'](fM||{},{'input':'file'});if('string'==typeof fK)return this['digest'](files['path'](fK),fL,h4);if(fK instanceof fN)return this['digest'](fK,fL,h4);throw TypeError('Invalid\x20type\x20of\x20path\x20for\x20cryptox.digestFile()');},'encrypt'(fK,fL,fM,h8){return this['_cipher'](fK,fQ['ENCRYPT_MODE'],fL,fM,h8);},'decrypt'(fK,fL,fM,hc){return this['_cipher'](fK,fQ['DECRYPT_MODE'],fL,fM,hc);},'generateKeyPair'(fK,fL){let fM=fU['getInstance'](fK);fM['initialize'](fL||0x100);let hg=fM['generateKeyPair']();return new this['KeyPair'](hg['getPublic']()['getEncoded'](),hg['getPrivate']()['getEncoded']());},'generateRandomKeyInput'(fK){let fL=fK||0x20;if(0x20!==fL&&0x10!==fL)throw Error('length\x20must\x20be\x20either\x2016\x20or\x2032');let fM='';for(let fK=0x0;fK<0x20;fK+=0x1)fM+=String['fromCharCode'](0x9fff*Math['random']());return String(this['digest'](fM,'MD5'))['slice'](-fK);},'_getKey'(fK){if(!fK)throw Error('Invalid\x20key\x20for\x20cryptox._getKey()');if(fK['length']%0x10==0x0&&fK['match'](/^[a-f0-9]+$/i))return new this['Key'](fK);let fL=files['join'](files['getSdcardPath'](),'.local','key.nfex');files['exists'](fL)||files['createWithDirs'](fL);let fM=JSON['parse'](files['read'](fL)||'{}');if(fM[fK])return new this['Key'](fM[fK]);let hp=fM[fK]=this['generateRandomKeyInput']();return files['write'](fL,JSON['stringify'](fM)),new this['Key'](hp);},'enc'(fK,fL){return this['encrypt'](fK,this['_getKey'](fL),'AES/ECB/PKCS5Padding',{'output':'hex'});},'dec'(fK,fL){let fM=null,fN=function(){try{return this['decrypt'](fK,this['_getKey'](fL),'AES/ECB/PKCS5Padding',{'output':'string','input':'hex'});}catch(hw){fM=hw;}}['call'](this);if(!n(fN))return fN;let fO=this['_pwmap']['decrypt'](fK);if(!n(fO))return fO;throw Error(null!==fM?fM:'Decrypted\x20failed');}};fK['exports']={'cryptox':g2};},415:(hy,hz,hA)=>{let {$$impeded:n,$$toast:r,$$cvt:s,$$link:o,isNullish:a,$$str:l,$$und:c,$$nul:u,$$arr:p,$$num:h,$$rex:_,$$func:d}=hA(0x11e),{a11yx:g,$$sel:f}=hA(0x2d4),{timersx:m}=hA(0x357),{consolex:y}=hA(0x2d5),hB=android['provider']['Settings'],hC=hB['System'],hD=hB['Global'],hE=hB['Secure'],hF=java['io']['File'],hG=android['net']['Uri'],hH=android['view']['Surface'],hI=android['content']['Intent'],hJ=android['content']['Context'],hK=android['content']['res']['Resources'],hL=android['content']['IntentFilter'],hM=android['os']['Environment'],hN=android['os']['PowerManager'],hO=android['os']['BatteryManager'],hP=android['util']['DisplayMetrics'],hQ=org['autojs']['autojs']['tool']['RootTool'],hR={'FLAGS_ON':hN['SCREEN_BRIGHT_WAKE_LOCK']|hN['ACQUIRE_CAUSES_WAKEUP'],'FLAGS_DIM':hN['SCREEN_DIM_WAKE_LOCK']|hN['ACQUIRE_CAUSES_WAKEUP'],get 'keycode$'(){return this['_keycode$']=this['_keycode$']||n['detach'](this['keycode'],0x1);},get 'power_service'(){return context['getSystemService'](hJ['POWER_SERVICE']);},'screen_metrics':{'metrics':runtime['getScreenMetrics'](),'getInfo'(){return{'width':this['metrics']['rescaleX'](W),'height':this['metrics']['rescaleY'](H)};},'setRatio'(hy){this['setMetrics'](hy*W,hy*H);},'setMetrics'(hy,hz){let hA=hy<=0x0?W:hy<0x1?W*hy:hy,hW=hz<=0x0?H:hz<0x1?H*hz:hz;runtime['setScreenMetrics'](hA,hW);},'getRatio'(){return{'width':this['metrics']['rescaleX'](W)/W,'height':this['metrics']['rescaleY'](H)/H};},'reset'(){this['setRatio'](0x0);},'saveState'(){let hy=this['getInfo']();this['_screen_metrics_w']=hy['width'],this['_screen_metrics_h']=hy['height'];},'loadState'(){let hy=this['_screen_metrics_w'],hz=this['_screen_metrics_h'];if(void 0x0===hy||void 0x0===hz)throw Error('State\x20must\x20be\x20saved\x20before\x20loading');this['setMetrics'](hy,hz),delete this['_screen_metrics_w'],delete this['_screen_metrics_h'];}},'battery':{'_getStatusIntent':()=>context['registerReceiver'](null,new hL(hI['ACTION_BATTERY_CHANGED'])),'_getStatus'(hy,hz,hA){let i3=hy=>void 0x0===hA?hy:hA,i4=this['_getStatusIntent'](),i5=hO['EXTRA_'+hy];switch(hz){case'Boolean':return i4['getBooleanExtra'](i5,i3(!0x1));case'Byte':return i4['getByteExtra'](i5,i3(-0x1));case'Char':return i4['getCharExtra'](i5,i3(''));case'Double':return i4['getDoubleExtra'](i5,i3(-0x1));case'Float':return i4['getFloatExtra'](i5,i3(-0x1));case'Long':return i4['getLongExtra'](i5,i3(-0x1));case'Short':return i4['getShortExtra'](i5,i3(-0x1));case'String':return i4['getStringExtra'](i5);default:return i4['getIntExtra'](i5,i3(-0x1));}},'_checkNumRange'(hy,hz,hA,ia,ib){let ic=(hy,hz)=>void 0x0===hy||isNaN(Number(hy))?hz:Number(hy);return hy>=ic(hz,hA||-0x1/0x0)&&hy<=ic(ia,ib||0x1/0x0);},'getPercentage'(){let hy=this['_getStatusIntent']();return 0x64*hy['getIntExtra'](hO['EXTRA_LEVEL'],-0x1)/hy['getIntExtra'](hO['EXTRA_SCALE'],-0x1);},'checkPercentage'(hy){return this['_checkNumRange'](this['getPercentage'](),hy,0xf);},'isBatteryLow'(){return device['sdkInt']<0x1c?!this['checkPercentage'](0xf):this['_getStatus']('BATTERY_LOW','Boolean',!0x1);},'getTemperature'(hy){let hz=this['_getStatus']('TEMPERATURE')/0xa,hA=hy||{};return{get 'C'(){let hy=ir(hA['unit'],'°C');return null===hy?hz:hz+hy;},get 'F'(){let hy=ir(hA['unit'],'°F'),iq=Number((0x9*hz/0x5+0x20)['toFixed'](0x1));return null===hy?iq:iq+hy;}}['C'===(hA['format']||'C')['toUpperCase']()['slice'](0x0,0x1)?'C':'F'];function ir(hy,hz){return!0x0===hy?hz:'string'==typeof hy?hy:null;}},'getTemperatureString'(){return this['getTemperature']()+'°C';},'checkTemperature'(hy,hz){return this['_checkNumRange'](this['getTemperature'](),hy,-0xf,hz,0x29);},'isOverheating'(){return this['getHealth']()===hO['BATTERY_HEALTH_OVERHEAT'];},'isOvercooling'(){return this['getHealth']()===hO['BATTERY_HEALTH_COLD'];},'getHealth'(){return this['_getStatus']('HEALTH',hO['BATTERY_HEALTH_UNKNOWN']);},'getHealthDescription'(hy){return'detailed'===hy||void 0x0===hy?{1:'状态未知',2:'状态良好',3:'温度过高',4:'已损坏',5:'电压过高',6:'状态未指明',7:'温度过低'}[this['getHealth']()]:{1:'未知',2:'良好',3:'过热',4:'损坏',5:'电压过高',6:'未指明',7:'过冷'}[this['getHealth']()];},'isHealthy'(){return this['getHealth']()===hO['BATTERY_HEALTH_GOOD'];},'isCharging'(){return this['_getStatus']('STATUS')===hO['BATTERY_STATUS_CHARGING']||this['isCharged']();},'isCharged'(){return this['_getStatus']('STATUS')===hO['BATTERY_STATUS_FULL'];},'isAcPlugged'(){return this['_getStatus']('PLUGGED')===hO['BATTERY_PLUGGED_AC'];},'isUsbPlugged'(){return this['_getStatus']('PLUGGED')===hO['BATTERY_PLUGGED_USB'];},'isWirelessPlugged'(){return this['_getStatus']('PLUGGED')===hO['BATTERY_PLUGGED_WIRELESS'];},'isPlugged'(){return this['isAcPlugged']()||this['isUsbPlugged']()||this['isWirelessPlugged']();},'isPluggedAndStayingOn'(){let hy=hR['stay_on_while_plugged_in']['get'](),hz=hz=>(hz&hy)===hz;return this['isAcPlugged']()&&hz(hO['BATTERY_PLUGGED_AC'])||this['isUsbPlugged']()&&hz(hO['BATTERY_PLUGGED_USB'])||this['isWirelessPlugged']()&&hz(hO['BATTERY_PLUGGED_WIRELESS']);},'isIgnoringOptimizations':hy=>hR['power_service']['isIgnoringBatteryOptimizations'](hy||context['getPackageName']()),'requestIgnoreOptimizations'(hy,hz){try{if(!hz&&this['isIgnoringOptimizations']())return!0x0;let hA=new hI()['setAction'](hB['ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS'])['setData'](hG['parse']('package:'+(hy||context['getPackageName']())));return app['startActivity'](hA),this['isIgnoringOptimizations']();}catch(iF){return console['warn'](iF['message']),!0x1;}}},'accelerometer_rotation':new pC('System','ACCELEROMETER_ROTATION','Int',[0x0,0x1]),'user_rotation':new pC('System','USER_ROTATION','Int',[hH['ROTATION_0'],hH['ROTATION_90'],hH['ROTATION_180'],hH['ROTATION_270']]),'screen_off_timeout':new pC('System','SCREEN_OFF_TIMEOUT','Int'),'stay_on_while_plugged_in':new pC('Global','STAY_ON_WHILE_PLUGGED_IN','Int',function(){let hy=hO['BATTERY_PLUGGED_AC'],hz=hO['BATTERY_PLUGGED_USB'],hA=hO['BATTERY_PLUGGED_WIRELESS'];return[0x0,hy,hz,hA,hy|hz,hy|hA,hz|hA,hy|hz|hA];}()),'development_settings_enabled':new pC('Global','DEVELOPMENT_SETTINGS_ENABLED','Int',[0x0,0x1]),'user_dir':new hF(hM['getDataDirectory'](),'user'),'wakeUp'(hy){let hz=context['getSystemService'](hJ['POWER_SERVICE'])['newWakeLock'](hN['FULL_WAKE_LOCK']|hN['ACQUIRE_CAUSES_WAKEUP']|hN['ON_AFTER_RELEASE'],'bright'),hA=hy||0x3a98;hz['acquire'](hA);let iM=Date['now'](),iN=setInterval(()=>{(this['isScreenOn']()||Date['now']()-iM-0xf0>hA)&&(clearInterval(iN),null!==hz&&hz['isHeld']()&&hz['release']());},0xc8);},'wakeUpWithBuffer'(hy){let hz=this['isScreenOn']['bind'](this);if(!hz()){let hA=0x2328,iR=(hy||hA)/0x5dc;for(;this['wakeUp'](),!g['wait$'](hz,0x5dc,0x78);)if(--iR<=0x0)return!0x1;}return!0x0;},'screenOn'(hy){return this['wakeUp'](hy);},'isScreenOn'(){let hy=this['power_service'];return(hy['isInteractive']||hy['isScreenOn'])['call'](hy);},'keepOn'(hy){let hz=hy||0x5;hz*=hz<0x64?0xea60:0x1,device['keepScreenOn'](hz),y['_']('已设置屏幕常亮显示'),y['_']('最大超时时间:\x20'+(hz/0xea60)['toFixedNum'](0x2)+'分钟');},'keepDim'(hy){let hz=hy||0x5;hz*=hz<0x64?0xea60:0x1,device['keepScreenDim'](hz),y['_']('已设置屏幕常暗显示'),y['_']('最大超时时间:\x20'+(hz/0xea60)['toFixedNum'](0x2)+'分钟');},'cancelOn'(){device['cancelKeepingAwake'](),y['_']('屏幕常亮显示已取消');},'cancelDim'(){device['cancelKeepingAwake'](),y['_']('屏幕常暗显示已取消');},'screenOff'(hy){if('boolean'==typeof hy)return this['screenOff']({'is_debug':hy});let hz=hy||{},hA=hz['key_code']||{},j1=hz['provider']||{},j2={},j3=this;y['debug']['switchSet'](hz['is_debug']);let j4={'key_code':{'failed':()=>y['w'](['关屏策略执行失败','按键模拟失败'],0x0,0x0,-0x2),'bugModel':()=>y['_'](['跳过当前策略','设备不支持KeyCode方法','设备型号:\x20'+device['brand']])},'successWithElapsedTime'(hy){y['_'](['策略执行成功','用时:\x20'+hy]);},'noWriteSettingsPermission'(){let hy=files['path']('./tools/auto.js-write-settings-permission-helper.js'),hz='需要\x22修改系统设置\x22权限';y['w'](['关屏策略执行失败',hz,'可使用以下工具获得帮助支持',hy],0x0,0x0,-0x2),r('关闭屏幕失败\x0a'+hz,'long');},'noWriteSecureSettingsPermission'(){let hy='WRITE_SECURE_SETTINGS';y['w'](['无法完成屏幕关闭操作','需要以下必要权限:',hy,'权限的详细信息及获取方式','可参阅项目配置工具','->\x20运行与安全','->\x20自动开启无障碍服务'],0x0,0x0,-0x2),r('关闭屏幕失败\x0a缺少以下必要权限:\x0a'+hy,'long');},'toastWithDebugInfo'(hy){let hz=[];[]['slice']['call'](arguments)['forEach'](hy=>{Array['isArray'](hy)?hz=hz['concat'](hy):'string'==typeof hy?hz['push'](hy):Object['prototype']['toString']['call'](hy)['match']('Arguments')&&(hz=hz['concat']([]['slice']['call'](hy)));}),y['v'](hz,0x4,0x0,-0x2);}};return y['_']('尝试关闭屏幕'),function(hy){try{j2['brake_is_triggered']?y['_']('关闭屏幕操作已被中断'):hy?y['_']('关闭屏幕成功'):y['_']('关闭屏幕失败',0x3);}catch(jd){if(!jd['message']['match'](/InterruptedException/))throw jd;}return y['debug']['switchBack'](),hy;}(function(){if(!hA['is_disabled']&&function(){try{return 0x0===shell('date',!0x0)['code'];}catch(je){return!0x1;}}())if(y['_']('尝试策略:\x20模拟电源按键'),[/[Mm]eizu/]['some'](hy=>device['brand']['match'](hy)))j4['key_code']['bugModel']();else{if(function(){let hy=hA['hint'];'function'==typeof hy?hy['call'](null):!0x0!==hy&&'toast'!==hy||r('正在尝试关闭屏幕...\x0a此过程可能需要几秒钟...','long');}(),m['rec']['save']('scr_off_tt'),hR['keycode']('KEYCODE_POWER',{'no_failed_msg':!0x0})){let hy=s['time'](m['rec']('scr_off_tt'),'$zh');return j4['successWithElapsedTime'](hy),!0x0;}j4['key_code']['failed']();}}()||function(){if(j1['is_disabled'])return;y['_']('尝试策略:\x20修改系统设置参数');let hy=!0x1;return hC['canWrite'](context)?j3['battery']['isPluggedAndStayingOn']()&&!(context['checkCallingOrSelfPermission'](android['Manifest']['permission']['WRITE_SECURE_SETTINGS'])===android['content']['pm']['PackageManager']['PERMISSION_GRANTED']?j2['staying_on_state_matters']=!0x0:void 0x0)?(j4['noWriteSecureSettingsPermission'](),hy):(o(function(){m['rec']['save']('set_provider');let hy=j1['hint'];'function'==typeof hy?hy['call'](null):!0x0!==hy&&'toast'!==hy||r(['正在尝试关闭屏幕...','此过程可能需要几秒钟...\x0a','触摸屏幕任意区域','或按下任意按键可终止关屏']['join']('\x0a'),'Long');})['$'](jo)['$'](function(){'function'==typeof j1['listener']&&j1['listener'](jm);})['$'](function(){for(;!j2['brake_is_triggered'];){let hz=m['rec']('set_provider'),hA=s['time'](hz,'$zh');if(hz>0xd7be){y['w'](['关屏策略执行失败','屏幕关闭超时','耗时:\x20'+hA],0x2,0x0,-0x2);break;}if(!j3['isScreenOn']()){j4['successWithElapsedTime'](hA),hy=!0x0;break;}sleep(0xc8);}})['$'](jp),hy):(j4['noWriteSettingsPermission'](),hy);}());function jm(hy){j2['brake_is_triggered']=!0x0,jp(),j4['toastWithDebugInfo'](arguments);}function jo(){y['_']('备份并设置相关参数:'),j3['stay_on_while_plugged_in']['clearStorage'](),j3['screen_off_timeout']['saveIntoStorage'](),j3['screen_off_timeout']['put'](0x0),j2['staying_on_state_matters']&&(j3['stay_on_while_plugged_in']['saveIntoStorage'](),j3['stay_on_while_plugged_in']['put'](0x0));}function jp(){j2['is_settings_restored']||(y['_']('恢复修改前的设置参数:'),j3['screen_off_timeout']['loadFromStorageIFN'](),j3['stay_on_while_plugged_in']['loadFromStorageIFN'](),j2['is_settings_restored']=!0x0);}},'isScreenOff'(){return!this['isScreenOn']();},'isLocked':()=>context['getSystemService'](hJ['KEYGUARD_SERVICE'])['isKeyguardLocked'](),'isUnlocked'(){return!this['isLocked']();},'unlock':hy=>function(){let hy='com\x5c.android\x5c.systemui:id/',hz='com\x5c.android\x5c.keyguard:id/',jt='com\x5c.smartisanos\x5c.keyguard:id/',{storagesx:r}=hA(0xdc),ju={},jv={'p_container':{'trigger'(){return hI(),[{'desc':'QQ锁屏消息弹框控件','trigger':()=>f['pickup']('按住录音')||f['pickup'](idMatches(/com.tencent.mobileqq:id.+/)),'handle'(){g['click$'](f['pickup']('关闭'),'w'),g['wait$'](this['trigger']['bind'](this),0xbb8)?y['_']('关闭弹框控件成功'):y['_']('关闭弹框控件超时',0x3);}},{'desc':'闹钟应用前置','trigger'(){let hy=currentPackage();return['com\x5c.android\x5c.deskclock','com\x5c.alarmclock\x5c.xtreme.*']['some'](hz=>new RegExp(hz)['test'](hy));},'handle'(){g['wait$'](()=>!this['trigger'](),0x1d4c0)?y['_']('闹钟应用解除前置成功'):y['_']('闹钟应用解除前置超时',0x3);}}]['forEach'](hy=>{hy['trigger']()&&(y['_'](['检测到提示层页面干扰:',hy['desc']]),hy['handle']());}),function(){let hy=jx['unlock_dismiss_layer_strategy'];if('preferred'===hy)return!0x0;if('disabled'===hy)return ju['unlock_dismiss_layer_disabled_hinted']||(y['_']('解锁页面提示层检测已禁用'),ju['unlock_dismiss_layer_disabled_hinted']=!0x0),!0x1;if('deferred'===hy)return!!ju['unlock_dismiss_layer_deferred']||(y['_']('解锁页面提示层检测延迟一次'),ju['unlock_dismiss_layer_deferred']=!0x0,!0x1);throw Error('Unknown\x20unlock\x20dismiss\x20layer\x20strategy:\x20'+hy);}()&&[{'desc':'通用','sel':idMatches(hy+'preview_container')},{'desc':'EMUI','sel':idMatches(hy+'.*(keyguard|lock)_indication.*')},{'desc':'锤子科技','sel':idMatches(jt+'keyguard_(content|.*view)')},{'desc':'MIUI','sel':idMatches(hz+'(.*unlock_screen.*|.*notification_.*(container|view).*|dot_digital)')},{'desc':'MIUI10','sel':idMatches(hy+'(.*lock_screen_container|notification_(container|panel).*|keyguard_.*)')},{'sel':f['pickup'](/上滑.{0,4}解锁/,'selector')}]['some'](hy=>{let {desc:hz,sel:hA}=hy;if(hA instanceof com['stardust']['autojs']['core']['accessibility']['UiSelector']&&hA['exists']())return hz?y['_']('匹配到'+hz+'解锁提示层控件'):(y['_']('匹配到解锁提示层文字:'),y['_'](f['pickup'](hA,'txt'))),(this['trigger']=hA['exists']['bind'](hA))();});},'dismiss'(){let hy=this,hz=jx['unlock_dismiss_layer_bottom'],hA=jx['unlock_dismiss_layer_top'],jt=jx['unlock_dismiss_layer_swipe_time'],jN=!!jt,ju=[hz,hA],jv=jt,jQ=jx['swipe_time_reliable']||[],jR=0x3,jS=jx['continuous_swipe']||{};return jQ['includes'](jv)&&(jR=0x1/0x0,y['_']('当前滑动时长参数可信')),jv in jS||(y['_']('连续成功滑动累积器清零'),jS={},jS[jv]=0x0),function(){let hz=[jv]['concat'](ju['map'](hy=>[halfW,cY(hy)])),hA=0x0;for(hR['keepOn'](0x3);!jt()&&(hG('消除解锁页面提示层',hA,0x1e),y['_']('滑动时长:\x20'+jv+'毫秒'),y['_']('参数来源:\x20'+(jN?'本地存储':'自动计算')),gesture['apply'](null,hz),!hy['succ']());)if(y['_']('单次消除解锁页面提示层超时'),hA+=0x1,jN)--jR<0x0?(jN=!0x1,jv=jx['unlock_dismiss_layer_swipe_time'],y['_']('放弃本地存储数据'),y['_']('从默认值模块获取默认值:\x20'+jv)):y['_']('继续使用本地存储数据');else{let hy=jv<0x78?0x5:0x32;jv+=hy,y['_']('参数增量:\x20'+hy);}function jt(){let hy=hA>0x1e;return hy&&(jS[jv]=0x0,jw['put']('config',{'continuous_swipe':jS}),hH('消除解锁页面提示层失败')),hy;}hR['cancelOn'](),y['_']('解锁页面提示层消除成功'),hy['succ_fg']=!0x0;}(),function(){jv!==jt&&(jw['put']('config',{'unlock_dismiss_layer_swipe_time':jv}),y['_']('存储滑动时长参数:\x20'+jv)),jv in jS||(jS[jv]=0x0);let hy=++jS[jv];jw['put']('config',{'continuous_swipe':jS}),y['_']('存储连续成功滑动次数:\x20'+hy),hy>=0x6&&!jQ['includes'](jv)&&(y['_']('当前滑动时长可信度已达标'),y['_']('存储可信滑动时长数据:\x20'+jv),jw['put']('config',{'swipe_time_reliable':jQ['concat'](jv)}));}(),this['succ_fg'];},'handle'(){return this['succ_fg']||!this['trigger']()||this['dismiss']();},'succ'(){return g['wait$'](function(){return!this['trigger']();}['bind'](this),0x5dc)||jv['unlock_view']['trigger']();}},'unlock_view':{'trigger'(){let hA=this;if(hR['isScreenOn']())return function(){return[{'desc':'通用','sel':idMatches(hy+'lockPatternView')},{'desc':'MIUI','sel':idMatches(hz+'lockPattern(View)?')}]['some'](hy=>{if(hy['sel']['exists']())return y['_']('匹配到'+hy['desc']+'图案解锁控件'),nm(hy['sel'],jt);});function jt(){let hy=jx['unlock_pattern_strategy'],hz={'segmental':'叠加路径','solid':'连续路径'},jt='unlock_pattern_swipe_time_'+hy,k6=jx[jt],ju=!!k6,k8=0x3,k9=0x0,ka=Math['ceil'](0.6*hD);for(;!(k9>ka&&hH('图案解锁方案失败'));){hG('图案密码解锁',k9,ka),y['_']('滑动时长:\x20'+k6+'毫秒'),y['_']('滑动策略:\x20'+hz[hy]);let jv=kn(),jw={'segmental'(){let hy=[],hz=jv['length'];for(let hA=0x0;hA{let {left:hz,top:hA,right:jt,bottom:k6}=hy;return[hz,hA,jt,k6];},jw=hy=>{[hz,hA,jt,k6]=jv(hy);};return g['wait$'](()=>{let kD=hy['findOnce']();if(kD)return ju=kD['bounds'](),c(hz)||c(hA)||c(jt)||c(k6)?jw(ju):!!(hy=>{let [ju,jw,kD,kI]=jv(hy);return hz===ju&&hA===jw&&jt===kD&&k6===kI;})(ju)||void jw(ju);},0x4b0,0x78),ju;}}(hA['sel']);if(!hy)return hH(['图案解锁方案失败','无法获取点阵布局']);let hz=hE,jt=Math['trunc'](hy['width']()/hz),k6=Math['trunc'](hy['height']()/hz),ju=hy['left']+Math['trunc'](jt/0x2),jw=hy['top']+Math['trunc'](k6/0x2),k8=[];for(let hy=0x1;hy<=hz;hy+=0x1)for(let hA=0x1;hA<=hz;hA+=0x1)k8[(hy-0x1)*hz+hA]={'x':ju+(hA-0x1)*jt,'y':jw+(hy-0x1)*k6};return l(hB)&&(hB=hB['match'](/[^1-9]+/)?hB['split'](/[^1-9]+/)['join']('|')['split']('|'):hB['split']('')),jv['unlock_pattern_pts']=function(hy,hz){let hA=hy['filter'](hy=>hy>0x0&&hy<=hz*hz),jt=[];for(;jt['length']!==hA['length'];)jt=hA['slice'](),k6(),ju();return hA;function k6(){let hy=function(){let hy={},hA=0x1;for(let jt=0x1;jt<=hz;jt+=0x1)for(let k6=0x1;k6<=hz;k6+=0x1)hy[hA++]=[jt,k6];return hy;}(),jt=NaN;for(let hy=0x0,hz=hA['length'];hy{if(!c(hz)&&!(hz in hy))return hy[hz]=!0x0;});}}(hB,hz)['filter'](hy=>+hy&&k8[hy])['map'](hy=>[k8[hy]['x'],k8[hy]['y']]);}}}()||function(){return!function(){let hy=hy=>l(hy)&&id(hy)['exists'](),hz=hy=>_(hy)&&idMatches(hy)['exists']();return['com.android.systemui:id/lockPattern']['some'](jt=>{if(hy(jt)||hz(jt))return hA['misjudge']=jt,y['_'](['匹配到误判干扰','转移至PIN解锁方案']),!0x0;});}()&&[{'desc':'通用','sel':idMatches('.*passwordEntry')},{'desc':'MIUI','sel':idMatches(hz+'miui_mixed_password_input_field')},{'desc':'锤子科技','sel':idMatches(jt+'passwordEntry(_.+)?')['className']('EditText')}]['some'](hz=>{if(hz['sel']['exists']())return y['_']('匹配到'+hz['desc']+'密码解锁控件'),nm(hz['sel'],hy);});function hy(){let hy=hB;p(hy)&&(hy=hy['join'](''));let hz=hy=>f['pickup']([/确.|完成|[Cc]onfirm|[Ee]nter/,{'className':'Button','clickable':!0x0}],hy),jt=0x0,lw=Math['ceil'](0.6*hD);for(;!(jt>lw&&hH(['密码解锁方案失败','可能是密码错误','或无法点击密码确认按钮']));){hG('密码解锁',jt,lw),hA['sel']['setText'](hy),ju();let jv=hz('widget');if(jv){y['_']('点击\x22'+hz('txt')+'\x22按钮');try{g['click$'](jv,'w');}catch(lz){y['_']('按钮点击可能未成功',0x3);}}if(hA['succ'](0x2))break;try{if(0x0===shell('date',!0x0)['code']&&0x0===shell('input\x20keyevent\x2066',!0x0)['code']&&(y['_']('使用Root权限模拟回车键'),sleep(0x1e0),hA['succ']()))break;}catch(lA){}jt+=0x1,sleep(0xc8);}return y['_']('密码解锁成功'),!0x0;function ju(){let hz=hy[hy['length']-0x1],jt={'HUAWEI VOG-AL00 9':{'prefix':0x1,'keys':[[0x3f0,0x6aa]]},'HUAWEI ELE-AL00 10':{'keys':['DEL'],'keys_map':function(){let [hy,hz,hA,jt,lw]=[0x4a4,0x546,0x5e7,0x68a,0x72b],[ju,jv,jw,lM,lN,lO,lP,lQ,lR,lS]=[0x38,0xa3,0x10f,0x17a,0x1e7,0x253,0x2bf,0x32a,0x396,0x403],[lT,lU,jx,lW,hB,hC,hD,hE,hF]=[109.5,0xd9,324.5,432.5,0x21d,0x289,756.5,0x360,972.5];return{1:[ju,hy],2:[jv,hy],3:[jw,hy],4:[lM,hy],5:[lN,hy],6:[lO,hy],7:[lP,hy],8:[lQ,hy],9:[lR,hy],0:[lS,hy],'q':[ju,hz],'w':[jv,hz],'e':[jw,hz],'r':[lM,hz],'t':[lN,hz],'y':[lO,hz],'u':[lP,hz],'i':[lQ,hz],'o':[lR,hz],'p':[lS,hz],'a':[lT,hA],'s':[lU,hA],'d':[jx,hA],'f':[lW,hA],'g':[hB,hA],'h':[hC,hA],'j':[hD,hA],'k':[hE,hA],'l':[hF,hA],'z':[lU,jt],'x':[jx,jt],'c':[lW,jt],'v':[hB,jt],'b':[hC,jt],'n':[hD,jt],'m':[hE,jt],',':[lU,lw],' ':[hB,lw],'.':[hE,lw],'del':[lS,jt]};}(),get 'suffix'(){return this['keys_map'][hz];}}};if(!(hF in jt))return;y['_']('此设备机型需要按键辅助');let lw=jt[hF],ju=lw['keys'],jv=lw['keys_map'],jw=lw['prefix'],m6=lw['suffix'];if(!c(jw)&&!u(jw)){let jt='';h(jw)?jt+=hz['repeat'](jw):jt=jw['toString'](),hA['sel']['setText'](hy+jt),y['_']('辅助按键前置填充:\x20'+jt['length']+'项');}return ju['forEach']((hy,hz)=>{hz||sleep(0x12c),g['click$'](l(hy)?jv[hy]:hy),sleep(0x12c);}),m6?m6 instanceof com['stardust']['automator']['UiObject']?(y['_']('辅助按键后置填充类型:\x20控件'),g['click$'](m6)):m6 instanceof com['stardust']['autojs']['core']['accessibility']['UiSelector']?(y['_']('辅助按键后置填充类型:\x20选择器'),g['click$'](m6)):p(m6)?(y['_']('辅助按键后置填充类型:\x20坐标'),g['click$'](m6)):h(m6)||l(m6)||_(m6)?(y['_']('辅助按键后置填充类型:\x20文本'),g['click$'](f['pickup']('(key.?)?'+m6))):hH(['密码解锁失败','无法判断末位字符类型']):void 0x0;}}}()||function(){return[{'desc':'通用','sel':idMatches(hy+'pinEntry')},{'desc':'MIUI','sel':idMatches(hz+'numeric_inputview')},{'desc':'EMUI10','sel':idMatches(hy+'fixedPinEntry')},{'desc':'EMUI','sel':descMatches('[Pp][Ii][Nn]\x20?(码区域|area)')},{'desc':'魅族','sel':idMatches(hy+'lockPattern')},{'desc':'OPPO','sel':idMatches(hy+'(coloros.)?keyguard.pin.(six.)?view')},{'desc':'OPPO','sel':idMatches(hy+'keyguard_security_container')},{'desc':'VIVO','sel':idMatches(hy+'vivo_pin_view')},{'desc':'拨号盘阵列',get 'sel'(){let hy={'_side':0x3,'_nums':[0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0],'_ft':cX(0.0125),'_checkPoints'(){return this['_points']=this['_points']||{},this['_nums']['every'](hy=>this['_points'][hy]=f['pickup'](hy,'point'));},'_checkOffset'(){let hz=hy=>hy['join']('|')['split']('|')['map'](()=>[]),hA=hy['_side'],jt=hz(Array(hA)),mf=hz(Array(hA)),ju=(hz,hA)=>hy['_points'][hy['_nums'][hz]][hA];for(let hy=0x0;hyhz['every']((hA,jt)=>!jt||Math['abs'](hA-hz[jt-0x1])hz['every']((hA,jt)=>!jt||Math['abs'](hA-hz[jt-0x1])!!global['_$_dial_points']};}}]['some'](hy=>{let hz=hy['desc'];if(hy['sel']['exists']())return hz['match'](/\w$/)&&(hz+='/'),y['_']('匹配到'+hz+'PIN解锁控件'),nm(hy['sel'],jt);});function jt(){let jt=0x0,mx=Math['ceil'](0.6*hD);for(;!(jt>mx&&hH(['PIN解锁方案失败','尝试次数已达上限'])||(hG('PIN解锁',jt,mx),d(hA['unlockPin'])?hA['unlockPin']():jw(),hA['succ']()||jv()));)jt+=0x1,sleep(0xc8);return y['_']('PIN解锁成功'),!0x0;function jv(){let hz=idMatches(hy+'key_enter');if(hz['exists']())return y['_']('点击\x22key_enter\x22控件'),g['click$'](hz,'w'),hA['succ']();}function jw(){let jt=[{'desc':'通用PIN/KEY','test'(){let hz=hz=>idMatches(hy+'key'+hz);if(n8(hz))return jv['call'](this),this['sel']=hz;},'click'(){let hy=this['sel'];return jw(()=>hC['forEach'](hz=>g['click$'](hy(hz),'w')));}},{'desc':'通用PIN容器','test'(){let hz=idMatches(hy+'container')['findOnce']();if(hz)return jv['call'](this),this['widget']=hz;},'click'(){let hy=this['widget']['bounds'](),hz=[hy['left'],hy['top'],hy['right'],hy['bottom']];return jw(()=>hC['forEach'](hy=>g['click$']((hy=>f['pickup']([hy,{'boundsInside':hz}]))(hy),'w')));}},{'desc':'MIUI/PIN','test'(){let hy=hy=>idMatches(hz+'numeric_inputview')['text'](hy);if(n8(hy))return jv['call'](this),this['sel']=hy;},'click'(){let hy=this['sel'];return jw(()=>hC['forEach'](hz=>g['click$'](hy(hz),'w')));}},{'desc':'内容描述PIN','test'(){let hy=hy=>desc(hy);if(n8(hy))return jv['call'](this),this['sel']=hy;},'click'(){let hy=this['sel'],hz=hA=>{let jt=hy(hA)['findOnce']();if(hA>0x0||jt)return jt;let mx=hy=>{let hA=hz(hy)['bounds']();return{'x':hA['centerX'](),'y':hA['centerY']()};},ju=hy=>mx(0x8)[hy]+mx(0x5)[hy]-mx(0x2)[hy];return[ju('x'),ju('y')];};return jw(()=>hC['forEach'](hy=>g['click$'](hz(hy),'w')));}},{'desc':'标记匹配PIN','test'(){if(hA['misjudge'])return jv['call'](this),y['_']('已匹配的字符串化标记:'),y['_'](hA['misjudge']),!0x0;},'click':()=>jw(()=>{let hy=idMatches(hA['misjudge'])['findOnce']();hy&&ju(hC,hy['bounds']());})},{'desc':'拨号盘阵列PIN','test'(){if(global['_$_dial_points'])return jv['call'](this),!0x0;},'click':()=>jw(()=>hC['forEach'](hy=>{g['click$'](global['_$_dial_points'][hy],'p',{'pt$':0x78});}))}],mx=0x8;for(;mx--;)for(let hy of jt)if(hy['test']())return hy['click']();return hH('预置的PIN解锁方案全部无效');function jv(){y['_']('采用'+this['desc']+'解锁方案');}function jw(hy){return(hA['unlockPin']=hy['bind'](null))();}function n8(hy){let hz=0x0;for(let hA of'123456789')hz+=Number(hy(hA)['exists']());return hz>0x6;}}}}()||function(){return[{'desc':'\x22Gxzw\x22屏下指纹设备','sel':idMatches(/.*[Gg][Xx][Zz][Ww].*/),'pw_rect':[0.0875,0.47,0.9125,0.788]}]['some'](hz=>{if(hz['sel']['exists']())return y['_'](['匹配到特殊设备解锁方案:',hz['desc']]),nm(hz['sel'],hy['bind'](null,hz['pw_rect']));});function hy(hy){let hz=hy['map']((hy,hz)=>hz%0x2?cY(hy):cX(hy)),[jt,nh,jv,jw]=hz;if(y['_']('已构建密码区域边界:'),y['_']('Rect('+jt+',\x20'+nh+'\x20-\x20'+jv+',\x20'+jw+')'),ju(hC,hz),hA['succ']())return!0x0;hH('尝试特殊解锁方案失败');}}()||void(hR['isUnlocked']()||y['_']('未匹配到可用的解锁控件'));function nm(hy,hz){return hA['sel']=hy,hA['stg']=hz,(hA['trigger']=hy['exists']['bind'](hy))();}function ju(hy,hz){let hA,jt,nm,ju;if(p(hz)){let [hy,jv,jw,nz]=hz;hA=hy,jt=jv,nm=jw-hy,ju=nz-jv;}else hA=hz['left'],jt=hz['top'],nm=hz['width'](),ju=hz['height']();let jv=Math['trunc'](nm/0x3),jw=Math['trunc'](ju/0x4),nC=hA+Math['trunc'](jv/0x2),nD=jt+Math['trunc'](jw/0x2),nE=[];for(let hy=0x1;hy<=0x4;hy+=0x1)for(let hz=0x1;hz<=0x3;hz+=0x1)nE[0x3*(hy-0x1)+hz]={'x':nC+jv*(hz-0x1),'y':nD+jw*(hy-0x1)};y['_']('已构建拨号盘数字坐标'),hy['forEach'](hy=>g['click$'](nE[Number(hy)||0xb]));}y['_'](['跳过解锁控件检测','屏幕未亮起']);},'dismiss'(){return hB?d(this['stg'])?(hR['keepOn'](0x5),this['stg'](),void hR['cancelOn']()):hH('没有可用的解锁方案'):hH('密码为空');},'handle'(){return this['trigger']()&&this['dismiss']();},'succ'(hy){let hA,jt=hy||0x780;return g['wait$'](()=>{if(function(){let hy=f['pickup'](/.*(重试|不正确|错误|[Ii]ncorrect|[Rr]etry|[Ww]rong).*/);return hy?hA||y['_'](f['pickup'](hy,'txt'),0x3):!idMatches(new RegExp(hz+'phone_locked_textview'))['exists']()||hA||y['_']('密码错误',0x3);}())return function(){let hy=()=>f['pickup'](/.*([Tt]ry again in.+|\d+.*后重试).*/);hy()&&(y['_']('正在等待重试超时'),g['wait$'](()=>!hy(),0xfde8,0x1f4));}(),function(){let hy=f['pickup'](/OK|确([认定])|好的?/);hy&&(y['_']('点击\x22'+f['pickup'](hy,'txt')+'\x22按钮'),g['click$'](hy,'w'),sleep(0x3e8));}(),hR['isUnlocked']();hA=!0x0;},jt,0xf0);}},'unlock':function(hy){y['debug']['switchSet'](hy),y['_']('尝试自动解锁',0x0,0x0,-0x2),jw['put']('config',jx),hI();for(let hy=0x0;!hR['isUnlocked']();hy+=0x1)hy>=hD&&hH('解锁尝试次数已达上限'),hG('解锁',hy,hD),jv['p_container']['handle'](),jv['unlock_view']['handle'](),sleep(0xf0);return y['debug']['switchBack'](),y['_']('自动解锁完毕',0x0,0x0,-0x2);}},jw=r['create']('unlock'),jx=Object['assign']({'unlock_code':null,'unlock_max_try_times':0x14,'unlock_pattern_strategy':'segmental','unlock_pattern_size':0x3,'unlock_pattern_swipe_time_segmental':0x78,'unlock_pattern_swipe_time_solid':0xc8,'unlock_dismiss_layer_strategy':'preferred','unlock_dismiss_layer_bottom':0.7,'unlock_dismiss_layer_top':0.2,'unlock_dismiss_layer_swipe_time':0x6e},jw['get']('config')),hB=String(jw['get']('config',{'prop':'unlock_code','is_crypto':!0x0,'default':''})),hC=hB['split'](/\D+/)['join']('')['split'](''),hD=jx['unlock_max_try_times'],hE=jx['unlock_pattern_size'],hF=device['brand']+'\x20'+device['product']+'\x20'+device['release'],hG=(hy,hz,hA)=>hz?y['_']('尝试'+hy+'(\x20'+hz+'/'+hA+')'):y['_']('尝试'+hy);return jv;function hH(hy){hR['cancelOn'](),y['e'](['解锁失败',hy,hF],0x4,0x0,0x2),hR['is_init_screen_on']&&(y['d']('自动关闭屏幕'),hR['screenOff']()||y['w']('自动关闭屏幕失败')),y['__'](),exit(),sleep(0xe10);}function hI(){hR['isScreenOn']()||(hR['wakeUpWithBuffer']()?(y['_']('设备唤起成功'),device['keepScreenOn'](0x1d4c0)):hH('设备唤起失败'));}}()['unlock'](hy),'vibrate'(hy,hz,hA){let nZ=hz||0x1,o0='number'==typeof hy?[hy]:hy;function o1(){let hy=hy=>hy<0xa?0x3e8*hy:hy;for(;nZ--;)o0['forEach']((hz,hA)=>{let nZ=hy(hz),o1=hy(o0[hA-0x1]||0x0);hA%0x2?sleep(nZ+o1):device['vibrate'](nZ);}),hz&&o0['length']%0x2&&sleep(0x3e8);}void 0x0===hA||hA?threads['start'](o1):o1();},'hasRoot':()=>'function'==typeof hQ['isRootAvailable']?hQ['isRootAvailable']():Object['keys'](Shell)['indexOf']('Companion')>-0x1?Shell['Companion']['isRootAvailable']():void 0x0,'keycode'(hy,hz){let hA={'options':hz||{},'relations':[{'str':'home','num':0x3},{'str':'back','num':0x4},{'str':'recents','num':0xbb},{'str':'quick_settings','num':-0x1},{'str':'power_dialog','num':-0x1},{'str':'notifications','num':-0x1},{'str':'split_screen','num':-0x1}],get 'autojs_keycode'(){return this['_aj_kc']=this['_aj_kc']||this['relations']['map'](hy=>hy['str']);},'impededIFN'(){this['options']['no_impeded']||'function'==typeof n&&n('devicex.keycode');},'parseKeycode'(){if('number'==typeof hy||this['autojs_keycode']['includes'](hy))return this['keycode']=hy;if('string'==typeof hy){let hz=hy['match'](/^KEYCODE_/i)?hy:'KEYCODE_'+hy,hA=android['view']['KeyEvent'][hz['toUpperCase']()];if('number'==typeof hA)return this['keycode']=hA;}throw Error('Invalid\x20keycode:\x20'+hy);},'parseStrategy'(){'adb_only'===this['options']['strategy']?this['is_adb_only']=!0x0:'adb_advanced'===this['options']['strategy']?this['is_adb_advanced']=!0x0:'a11y_only'===this['options']['strategy']?this['is_a11y_only']=!0x0:this['is_a11y_advanced']=!0x0;},'parseArgs'(){this['parseStrategy'](),this['parseKeycode']();},'hasRoot'(){return'boolean'==typeof this['options']['root']?this['options']['root']:function(){try{return 0x0===shell('date',!0x0)['code'];}catch(oe){return!0x1;}}();},'toNumIFP'(hy){for(let hz of this['relations'])if(hy===hz['str']){if(hz['num']>-0x1)return hz['num'];break;}return hy;},'toStrIFP'(hy){for(let hz of this['relations'])if(hy===hz['num'])return hz['str'];return hy;},'showFailedMsgIFN'(hy){this['options']['no_failed_msg']||y['w'](['按键模拟失败','键值:\x20'+hy],0x0,0x0,-0x2);},'simulateByAdb'(hy){try{return 0x0===shell('input\x20keyevent\x20'+hy,hA['hasRoot']())['code'];}catch(ol){return this['showFailedMsgIFN'](hy),!0x1;}},'simulateByA11y'(hy){switch(hy){case'home':return home();case'back':return back();case'recents':return recents();case'power_dialog':return powerDialog();case'notifications':return notifications();case'quick_settings':return quickSettings();case'split_screen':return splitScreen();default:return null;}},'simulate'(hy){return this['is_a11y_only']?this['simulateByA11y'](this['toStrIFP'](hy)):this['is_adb_only']?this['simulateByAdb'](this['toNumIFP'](hy)):this['is_a11y_advanced']?this['simulateByA11y'](this['toStrIFP'](hy))||this['simulateByAdb'](this['toNumIFP'](hy)):this['is_adb_advanced']?this['simulateByAdb'](this['toNumIFP'](hy))||this['simulateByA11y'](this['toStrIFP'](hy)):void 0x0;},'simulateOnce'(){return this['simulate'](this['keycode']);},'simulateTwice'(){return this['simulateOnce']()&&this['simulateOnce']();},'getResult'(){return this['impededIFN'](),this['parseArgs'](),this['options']['rush']?this['simulateTwice']():this['simulateOnce']();}};return hA['getResult']();},'getCallState':()=>context['getSystemService'](hJ['TELEPHONY_SERVICE'])['getCallState'](),'getDisplay'(hy){let hz,hA,ot=('boolean'==typeof hy?{'is_globalize':hy}:hy||{})['is_globalize'],ou=new hP(),ov=this['getDefaultDisplay']();ov['getRealMetrics'](ou);let ow=p4(),ox={'cX':oE,'cY':oI,'cYx':oM},oy={'refresh'(){let hy=!0x1;return Object['keys'](ow=hR['getDisplay']())['forEach'](hz=>{let hA=ow[hz];'number'!=typeof hA&&'boolean'!=typeof hA||void 0x0!==global[hz]&&global[hz]!==hA&&(global[hz]=hA,hy=!0x0);}),hy&&(y['_']('屏幕显示数据已更新'),this['debug']()),this;},'globalize'(){return ph(),this;},'debug'(hy){let hz=y['debug']['fuel'](hy);return hz('屏幕宽高:\x20'+ow['W']+'\x20×\x20'+ow['H']),ow['is_display_rotation_portrait']?hz('可用高度:\x20'+ow['USABLE_HEIGHT']):ow['is_display_rotation_landscape']&&hz('可用宽度:\x20'+ow['USABLE_WIDTH']),hz('屏幕旋转:\x20'+0x5a*ow['display_rotation']+'°'),this;}};return ow||g['wait$'](()=>ow=p4(),0xbb8,0x1f4)?ot&&ph():console['error']('devicex.getDisplay()返回结果异常'),Object['assign'](ow,ox,oy);function oE(hy,hz,hA){return'boolean'==typeof hz?oV(0x1,hy,-0x1,Object['assign']({'is_ratio':hz},hA)):oV(0x1,hy,hz,hA);}function oI(hy,hz,hA){return'boolean'==typeof hz?oV(-0x1,hy,-0x1,Object['assign']({'is_ratio':hz},hA)):oV(-0x1,hy,hz,hA);}function oM(hy,ot,ou){let ov=ou||{},ow=ov['is_ratio'];'boolean'==typeof ot&&(ow=void 0x0===ow?ot:ow,ot=-0x1);let ox=Number(hy),oy=Math['abs'](ox)<0x1||ow,oE=Number(ot);if(oE&&-0x1!==oE)if(-0x2===oE)oE=0x438,ox*=oy?0x780:0x1;else if(-0x3===oE)oE=0x448,ox*=oy?0xa00:0x1;else{if(oE<0x0)throw Error('Can\x20not\x20parse\x20base\x20param\x20for\x20cYx()');if(oy)ox*=hA;else if(oE<0x5)throw Error('Base\x20and\x20num\x20options\x20should\x20be\x20both\x20pixels\x20for\x20cYx()');oE=(oE>0x1?0x1/oE:oE)*hA;}else oE=0x2d0,ox*=oy?0x500:0x1;return ov['to_ratio']?Number((0x9*ox/0x10/oE)['toFixed'](0x3)):Math['round'](ox*hz/oE);}function oV(hy,ot,ou,ov){let ow=-0x1!==hy?hz:hA,ox=Number(ot);if(isNaN(ox))throw Error('Can\x20not\x20parse\x20num\x20param\x20for\x20cTrans():\x20'+ot);let oy=Number(ou);ou&&-0x1!==ou?-0x2===ou?oy=-0x1!==hy?0x438:0x780:-0x3===ou&&(oy=-0x1!==hy?0x448:0xa00):oy=-0x1!==hy?0x2d0:0x500;let oE=ov||{};return(Math['abs'](ox)<0x1||oE['is_ratio'])&&(ox*=oy),oE['to_ratio']?Number((ox/oy)['toFixed'](0x3)):Math['min'](Math['round'](ox*ow/oy),ow);}function p4(){try{if(hz=ov['getWidth'](),hA=ov['getHeight'](),!(hz*hA))return hy();let ot=ov['getRotation'](),ow=[0x0,0x2]['indexOf'](ot)>-0x1,ox=Math['max'](ou['widthPixels'],ou['heightPixels']),[oy,oE]=[hA,hz],oI=hy=>{try{let hz=context['getResources'](),hA=hz['getIdentifier'](hy,'dimen','android');if(hA>0x0)return hz['getDimensionPixelSize'](hA);}catch(pe){}return NaN;};return ow?[oy,hA]=[hA,ox]:[oE,hz]=[hz,ox],{'W':hz,'WIDTH':hz,'width':hz,'halfW':hz/0x2,'HALF_WIDTH':hz/0x2,'half_width':hz/0x2,'uW':oE,'USABLE_WIDTH':oE,'usable_width':oE,'H':hA,'HEIGHT':hA,'height':hA,'halfH':hA/0x2,'HALF_HEIGHT':hA/0x2,'half_height':hA/0x2,'uH':oy,'USABLE_HEIGHT':oy,'usable_height':oy,'display_rotation':ot,'ROTATION':ot,'is_display_rotation_portrait':ot===hH['ROTATION_0']||ot===hH['ROTATION_180'],'is_display_rotation_landscape':ot===hH['ROTATION_90']||ot===hH['ROTATION_270'],'status_bar_height':oI('status_bar_height'),'navigation_bar_height':oI('navigation_bar_height'),'navigation_bar_height_computed':ow?hA-oy:hz-oE,'action_bar_default_height':oI('action_bar_stacked_max_height')||oI('action_bar_default_height')};}catch(pf){return hy();}function hy(){return hz=device['width'],hA=device['height'],hz&&hA?{'WIDTH':hz,'HEIGHT':hA,'USABLE_HEIGHT':Math['trunc'](0.9*hA)}:null;}}function ph(){Object['assign'](global,{'W':hz,'WIDTH':hz,'H':hA,'HEIGHT':hA,'halfW':hz/0x2,'halfH':hA/0x2,'uW':ow['USABLE_WIDTH'],'uH':ow['USABLE_HEIGHT'],'ROTATION':ow['display_rotation'],'cX':oE,'cY':oI,'cYx':oM});}},'getDefaultDisplay':()=>context['getSystemService'](hJ['WINDOW_SERVICE'])['getDefaultDisplay'](),'getDisplayRotation'(){return this['getDefaultDisplay']()['getRotation']();},'setUserRotation'(hy,hz){this['setAutoRotationDisabled'](hz);let hA={0:hH['ROTATION_0'],1:hH['ROTATION_90'],2:hH['ROTATION_180'],3:hH['ROTATION_270'],90:hH['ROTATION_90'],180:hH['ROTATION_180'],270:hH['ROTATION_270']}[hy];if(void 0x0===hA)throw Error('Unknown\x20rotation\x20for\x20devicex.setUserRotation()');let pl=()=>this['getDisplayRotation']()===hA;pl()||(this['user_rotation']['saveState'](),this['user_rotation']['put'](hA),hz||(g['wait'](pl,0x7d0,0x50),sleep(0x168)));},'setUserRotationPortrait'(hy){this['setUserRotation'](hH['ROTATION_0'],hy);},'setUserRotationInverted'(hy){this['setUserRotation'](hH['ROTATION_180'],hy);},'setUserRotationLandscapeRight'(hy){this['setUserRotation'](hH['ROTATION_90'],hy);},'setUserRotationLandscapeLeft'(hy){this['setUserRotation'](hH['ROTATION_270'],hy);},'setAutoRotationEnabled'(hy){this['accelerometer_rotation']['verify'](0x1)||(this['accelerometer_rotation']['saveState'](),this['accelerometer_rotation']['put'](0x1),hy||(g['wait'](()=>this['accelerometer_rotation']['verify'](0x1),0x7d0,0x50),sleep(0x168)));},'setAutoRotationDisabled'(hy){this['accelerometer_rotation']['verify'](0x0)||(this['accelerometer_rotation']['saveState'](),this['accelerometer_rotation']['put'](0x0),hy||(g['wait'](()=>this['accelerometer_rotation']['verify'](0x0),0x7d0,0x50),sleep(0x168)));},'restoreUserRotationIFN'(){this['restoreAutoRotationIFN'](),this['user_rotation']['loadStateIFN']();},'restoreAutoRotationIFN'(){this['accelerometer_rotation']['loadStateIFN']();},'getNextAlarmClockTriggerTime'(){let hy=context['getSystemService'](hJ['ALARM_SERVICE'])['getNextAlarmClock']();return null!==hy?hy['getTriggerTime']():Number['NaN'];},'getNextAlarmClockTriggerGap'(){let hy=this['getNextAlarmClockTriggerTime']()-Date['now']();return isNaN(hy)?0x1/0x0:Math['max'](0x0,hy);},'isNextAlarmClockTriggered'(hy){let hz=Number(hy);return hz=isNaN(hz)||hz<0x0?0x0:hz,this['getNextAlarmClockTriggerGap']()\x20'+hy),hy;},this['put']=function(hy){return y['_'](hz+'\x20<-\x20'+hy),function(){try{switch(hA){case'Int':return pH['putInt']['apply'](pH,arguments);case'Long':return pH['putLong']['apply'](pH,arguments);case'Float':return pH['putFloat']['apply'](pH,arguments);case'String':return pH['putString']['apply'](pH,arguments);default:throw y['_']('Unknown\x20data_type:\x20'+hA,0x3),Error('Local\x20Exception');}}catch(pW){return pN('put',arguments);}}(pI,pH[hz],hy);},this['verify']=function(hy){return this['get']()===hy;},this['toggle']=function(hy,hz){if(!Array['isArray'](this['state_set']))throw Error('A\x20\x22state_set\x22\x20must\x20be\x20defined\x20for\x20StateManager.[[instance]].toggle');let hA=this['state_set'];'function'==typeof hz&&(hA=this['state_set']['filter'](hz));let pG=pJ['call'](this,hA,function(hy){return void 0x0===hy||'+'===hy||'clockwise'===hy||Object['is'](hy,0x0);}(hy));return this['put'](pG),pG;},this['saveState']=function(){this['_last_state']=this['get']();},this['loadState']=function(hy){if(a(this['_last_state']))throw Error('State\x20must\x20be\x20saved\x20before\x20loading');this['put'](this['_last_state']),hy||this['clearState']();},this['loadStateIFN']=function(hy){a(this['_last_state'])||this['put'](this['_last_state']),hy||this['clearState']();},this['clearState']=function(){delete this['_last_state'];},this['storage']=storages['create']('devicex_state_manager'),this['saveIntoStorage']=function(){this['storage']['put'](this['key'],this['get']());},this['loadFromStorage']=function(hy){let hz=this['storage']['get'](this['key']);if(a(hz))throw Error('Storage\x20must\x20be\x20saved\x20before\x20loading');y['_'](this['key']+'\x20->\x20'+hz),this['put'](hz),hy||this['clearStorage']();},this['loadFromStorageIFN']=function(hy){let hz=this['storage']['get'](this['key']);a(hz)||this['put'](hz),hy||this['clearStorage']();},this['clearStorage']=function(){this['storage']['remove'](this['key']);};}hR['$bind'](),hy['exports']={'devicex':hR,'$$disp':hR['getDisplay']({'is_globalize':!0x0})};},949:(q9,qa,qb)=>{let {$$und,$$func,$$F,isPlainObject,isNullish,isXMLType}=qb(0x11e),{colorsx}=qb(0xcb),{consolex}=qb(0x2d5),qc=android['view']['WindowManager'],qd=qc['LayoutParams'],qe=android['os']['Looper'],qf=android['text']['util']['Linkify'],qg=android['view']['KeyEvent'],qh=android['content']['res']['ColorStateList'],qi=android['graphics']['drawable']['ColorDrawable'],qj=com['stardust']['autojs']['core']['ui']['dialog']['JsDialog'],qk=com['afollestad']['materialdialogs']['DialogAction'],ql=com['afollestad']['materialdialogs']['MaterialDialog'],qm={'contents':qb(0x2f1),'isUiThread':()=>qe['myLooper']()===qe['getMainLooper'](),'rtDialogs':()=>qm['isUiThread']()?runtime['dialogs']:runtime['dialogs']['nonUiDialogs']},qn={'colors':{'wrap'(qo,qp){if(qp&&this[qp])for(let qq in this[qp])if(this[qp]['hasOwnProperty'](qq)&&qo===qq){let qo=this[qp][qq];return Array['isArray'](qo)?qo[0x0]:qo;}return qo;},'title':{'default':'#212121','caution':'#880E0E','warn':'#880E4F','alert':['#C51162','#FFEFFE']},'content':{'default':'#757575','caution':'#AD1414','warn':'#AD1457','alert':['#283593','#E1F5FE']},'progress':{'download':['#FF6F00','#FFECB3','#C43E00'],'files':['#F9A825','#FFF59D','#C17900'],'backup':['#455A64','#ECEFF1','#1C313A'],'restore':['#AB47BC','#F3E5F5','#790E8B'],'indeterminate':['#00897B','#B2DFDB','#005B4F'],'finish':['#00C853','#DCEDC8','#009624'],'success':['#00C853','#DCEDC8','#009624'],'error':['#1565C0','#BBDEFB','#003C8F'],'failure':['#1565C0','#BBDEFB','#003C8F']},'button':{'default_aj_4':'#01A9F3','default':'#03A9F4','caution':'#FF3D00','warn':'#F57C00','attraction':'#7B1FA2','hint':'#0DA798','reset':'#A1887F','unavailable':'#BDBDBD','finish':'#009624','success':'#009624','error':'#003C8F','failure':'#003C8F'}},'text':{'btn':{'F':'完成','B':'返回','Q':'放弃','X':'退出','I':'终止','K':'确定','S':'确认','C':'关闭','D':'删除','N':'继续','M':'确认修改','R':'使用默认值','T':'了解更多'},'no_more_prompt':'不再提示','user_interrupted':'用户终止'},'pool':{'_data':{},'add'(qs,qt){return isNullish(qs)?qs:this['_data'][(qt||'')+qn['getName'](qs)]=qs;},'get'(qu){return this['_data'][qu];},'clear'(){let qv=Object['keys'](this['_data'])['filter'](qv=>{if(this['_data'][qv]['isShowing']())return!0x0;delete this['_data'][qv];})['map'](qv=>{let qy=this['_data'][qv];return qy['dismiss'](),qv['match'](/@[a-f0-9]{5,}$/)?qv:qv+qn['getName'](qy);});qv['length']&&consolex['_'](['清理扩展对话框样本池:']['concat'](qv),0x0,0x0,-0x2);}},'getName':qz=>'@'+java['lang']['Integer']['toHexString'](qz['hashCode']()),'build'(qA){let qB=Object['create'](runtime['dialogs']['newBuilder']());return qB['thread']=threads['currentThread'](),Object['keys'](qA)['forEach'](qC=>rd['call'](this,qB,qC,qA[qC])),function(qA,qB){if(void 0x0!==qB['inputHint']||void 0x0!==qB['inputPrefill']){let qF=r5(qB['inputHint']),qG=r5(qB['inputPrefill']),qH=function(qB,qJ){return qA['emit']('input_change',qA['dialog'],qJ['toString']());};qA['input'](qF,qG,qH)['alwaysCallInputCallback']();}if(void 0x0!==qB['items']){let qK=qB['itemsSelectMode'];if(void 0x0===qK||'select'===qK)qA['itemsCallback'](function(qB,qK,qN,qO){qA['emit']('item_select',qN,qO['toString'](),qA['dialog']);});else if('single'===qK)qA['itemsCallbackSingleChoice'](void 0x0===qB['itemsSelectedIndex']?-0x1:qB['itemsSelectedIndex'],function(qB,qK,qR,qS){return qA['emit']('single_choice',qR,qS['toString'](),qA['dialog']),!0x0;});else{if('multi'!==qK)throw new Error('Unknown\x20itemsSelectMode\x20'+qK);qA['itemsCallbackMultiChoice'](void 0x0===qB['itemsSelectedIndex']?null:qB['itemsSelectedIndex'],function(qB,qK,qV){return qA['emit']('multi_choice',r7(qK,(qA,qB)=>parseInt(qA[qB])),r7(qV,(qA,qB)=>qA[qB]['toString']()),qA['dialog']),!0x0;});}}if(void 0x0!==qB['progress']){let r0=qB['progress'];qA['progress'](-0x1===r0['max'],r0['max'],!!r0['showMinMax']),qA['progressIndeterminateStyle'](!!r0['horizontal']);}if(void 0x0===qB['checkBoxPrompt']&&void 0x0===qB['checkBoxChecked']||qA['checkBoxPrompt'](r5(qB['checkBoxPrompt']),!!qB['checkBoxChecked'],function(qB,r2){return qA['getDialog']()['emit']('check',r2,qA['getDialog']());}),void 0x0!==qB['customView']){let r3=qB['customView'];(isXMLType(r3)||'string'==typeof r3)&&(r3=ui['run'](()=>ui['inflate']('customView')));let r4=qB['wrapInScrollView'];qA['customView'](r3,void 0x0===r4||r4);}function r5(qA){return qA||'';}function r7(qA,qB){let r5=[],r7=qA['length'];for(let rc=0x0;rcthis['text']['btn'][qA]||qA},'positiveColor':{'adapter':colorsx['toInt']},'neutral':{'method':'neutralText','adapter':qA=>this['text']['btn'][qA]||qA},'neutralColor':{'adapter':colorsx['toInt']},'negative':{'method':'negativeText','adapter':qA=>this['text']['btn'][qA]||qA},'negativeColor':{'adapter':colorsx['toInt']},'cancelable':null,'canceledOnTouchOutside':null,'autoDismiss':null};if(rh['hasOwnProperty'](qB)){let rl=rh[qB]||{};void 0x0===rl['method']&&(rl['method']=qB),rl['adapter']&&(rd=rl['adapter'](rd)),qA[rl['method']]['call'](qA,rd);}}},'builds'(rm,rn){if(isPlainObject(rm))return this['builds']('',rm);let [ro,rp,rq,rr,rs,rt,ru]='string'==typeof rm?[rm]:rm,rv={'autoDismiss':!rt,'canceledOnTouchOutside':!rt,'checkBoxPrompt':ru?'string'==typeof ru?ru:this['text']['no_more_prompt']:void 0x0},rw=rn||{};[['title',ro,this['colors']['title']],['content',rp,this['colors']['content']],['neutral',rq,this['colors']['button'],this['text']['btn']],['negative',rr,this['colors']['button'],this['text']['btn']],['positive',rs,this['colors']['button'],this['text']['btn']]]['map'](rm=>{let [rn,ro]=rm;return $$und(ro)&&!$$und(rw[rn])&&rm['splice'](0x1,0x1,rw[rn]),rm;})['forEach'](rm=>rK['apply'](this,rm)),Object['assign'](rv,rw),['title','content']['forEach'](rm=>{rm in rv&&(rv[rm]=String(rv[rm]));});let rC=this['build'](rv);if(rw['linkify']&&this['linkify'](rC),void 0x0!==rw['keycode_back']){let rm=rw['keycode_back'];('disabled'===rm||$$func(rm)||$$F(rm))&&this['disableBack'](rC,rm);}return ui['post'](()=>{let rm=rC['getWindow'](),rn=rw['dim_amount'];if('number'==typeof rn){for(;rn>0x1;)rn/=0x64;rm['setDimAmount'](rn);}let ro=rw['background'];'string'==typeof ro?ro['match'](/^#/)?rm['setBackgroundDrawable'](new qi(colorsx['toInt'](ro))):rm['setBackgroundDrawableResource'](android['R']['color'][ro]):'number'==typeof ro&&rm['setBackgroundDrawable'](new qi(ro));let rp=rw['animation'];'string'==typeof rp&&(rp=rp['split']('_')['map'](rm=>rm['toTitleCase']())['join'](''),'Default'===rp?rm['setWindowAnimations'](android['R']['style']['Animation']):rm['setWindowAnimations'](android['R']['style']['Animation_'+rp]));let rq=rw['is_keep_screen_on'];void 0x0!==rq&&rq&&rm['addFlags'](qd['FLAG_KEEP_SCREEN_ON']);}),rC;function rK(rm,rn,ro,rp){if(!rw[rm]||Array['isArray'](rw[rm])){let [rq,rr]=Array['isArray'](rn)?rn:[rn];rq&&('content'!==rm||rp||(rp=qm['contents']),rw[rm]=rp&&rp[rq]||rq);let rs=rm+'Color',rt=rw[rs]||ro[rr]||rr||ro['default'];rw[rs]=colorsx['toInt'](rt);}}},'rawInput':(rT,rU,rV)=>qm['isUiThread']()&&!rV?new Promise(rV=>{qm['rtDialogs']()['rawInput'](rT,rU||'',function(){rV['apply'](null,[]['slice']['call'](arguments));});}):qm['rtDialogs']()['rawInput'](rT,rU||'',rV||null),'input'(rX,rY,rZ){if(rZ)return this['rawInput'](rX,rY||'',s0=>rZ(eval(s0)));if(qm['isUiThread']())return new Promise(s1=>{qm['rtDialogs']()['rawInput'](rX,rY||'',s2=>s1(eval(s2)));});let s3=this['rawInput'](rX,rY||'',rZ||null);return'string'==typeof s3?eval(s3):void 0x0;},'alert':(s4,s5,s6)=>qm['isUiThread']()&&!s6?new Promise(s6=>{qm['rtDialogs']()['alert'](s4,s5||'',function(){s6['apply'](null,[]['slice']['call'](arguments));});}):qm['rtDialogs']()['alert'](s4,s5||'',s6||null),'alertTitle'(s8,s9,sa){let sb=global['_$_alert_title_info']=global['_$_alert_title_info']||{};sb[s8]=sb[s8]||{},sb['message_showing']?++sb['message_showing']:sb['message_showing']=0x1;let sc=sb[s8]['ori_text']||'',sd=sb[s8]['ori_text_color']||'',se=sb[s8]['ori_bg_color']||'',sf=s8['getTitleView']();function sg(s8,s9,sa){let sb=s8['getTitleView'](),[sc,sd]=sa;ui['run'](()=>{sb['setText'](s9),sb['setTextColor'](sc),sb['setBackgroundColor'](sd);});}sc||(sb[s8]['ori_text']=sc=sf['getText']()),sd||(sb[s8]['ori_text_color']=sd=sf['getTextColors']()['getColorForState'](util['java']['array']('int',0x0),colors['parseColor']('#de000000'))),se||(sb[s8]['ori_bg_color']=-0x1),sg(s8,s9,this['colors']['title']['alert']['map'](colorsx['toInt'])),0x0===sa||setTimeout(function(){--sb['message_showing']||sg(s8,sc,[sd,se]);},sa||0xbb8);},'alertContent'(sn,so,sp){let sq=sn['getContentView'](),sr=sq['getText']()['toString'](),st='append'===sp||!0x0===sp,[su,sv]=this['colors']['content']['alert']['map'](sn=>colorsx['toInt'](sn));ui['post'](()=>{sq['setText']((st?sr+'\x0a\x0a':'')+so),sq['setTextColor'](su),sq['setBackgroundColor'](sv);});},'prompt'(sx,sy,sz){return this['rawInput'](sx,sy,sz);},'confirm':(sA,sB,sC)=>qm['isUiThread']()&&!sC?new Promise(sC=>{qm['rtDialogs']()['confirm'](sA,sB||'',function(){sC['apply'](null,[]['slice']['call'](arguments));});}):qm['rtDialogs']()['confirm'](sA,sB||'',sC||null),'select'(sE,sF,sG){return sF instanceof Array?qm['isUiThread']()&&!sG?new Promise(sG=>{qm['rtDialogs']()['select'](sE,sF,function(){sG['apply'](null,[]['slice']['call'](arguments));});}):qm['rtDialogs']()['select'](sE,sF,sG||null):qm['rtDialogs']()['select'](sE,[]['slice']['call'](arguments,0x1),null);},'singleChoice':(sI,sJ,sK,sL)=>qm['isUiThread']()&&!sL?new Promise(sL=>{qm['rtDialogs']()['singleChoice'](sI,sK||0x0,sJ,function(){sL['apply'](null,[]['slice']['call'](arguments));});}):qm['rtDialogs']()['singleChoice'](sI,sK||0x0,sJ,sL||null),'multiChoice'(sN,sO,sP,sQ){let sR=sN=>{let sO=[];for(let sP=0x0,sQ=sN['length'];sPsQ(sR(sN)))):qm['isUiThread']()?new Promise(sQ=>{qm['rtDialogs']()['multiChoice'](sN,sP||[],sO,sN=>sQ(sR(sN)));}):sR(qm['rtDialogs']()['multiChoice'](sN,sP||[],sO,null));},'dismiss'(sZ){(Array['isArray'](sZ)?sZ:[]['slice']['call'](arguments))['forEach'](sZ=>{'object'==typeof sZ&&sZ['dismiss']&&sZ['dismiss']();});},'clearPool'(){this['pool']['clear']();},'disableBack':(t1,t2)=>(t1['setOnKeyListener']({'onKey':(t3,t4,t5)=>t5['getAction']()===qg['ACTION_UP']&&('function'==typeof t2&&t2(t1),t4===qg['KEYCODE_BACK'])}),t1),'getTitleText':t6=>t6?t6['getTitleView']()['getText']()['toString']():'','setTitleText'(t7,t8){ui['run'](()=>{t7&&t7['getTitleView']()['setText'](t8?t8['toString']():'');});},'setTitleTextColor'(t9,ta){ui['run'](()=>{t9&&t9['getTitleView']()['setTextColor'](colorsx['toInt'](this['colors']['wrap'](ta,'title')));});},'setTitleBackgroundColor'(tb,tc){ui['run'](()=>{tb&&tb['getTitleView']()['setBackgroundColor'](colorsx['toInt'](this['colors']['wrap'](tc,'title')));});},'getContentText':td=>td?td['getContentView']()['getText']()['toString']():null,'setContentText'(te,tf){ui['run'](()=>{te&&te['getContentView']()['setText'](tf?tf['toString']():'');});},'appendContentText'(tg,th){ui['run'](()=>{tg&&tg['getContentView']()['setText'](this['getContentText'](tg)+(th?th['toString']():''));});},'setContentTextColor'(ti,tj){ui['run'](()=>{ti&&ti['getContentView']()['setTextColor'](colorsx['toInt'](this['colors']['wrap'](tj,'content')));});},'setContentBackgroundColor'(tk,tl){ui['run'](()=>{tk&&tk['getContentView']()['setBackgroundColor'](colorsx['toInt'](this['colors']['wrap'](tl,'content')));});},'getInputText':tm=>tm?tm['getInputEditText']()['getText']()['toString']():'','setInputText'(tn,to){let tp='string'==typeof to?to:void 0x0!==to?to['toString']():'';ui['run'](()=>tn&&tn['getInputEditText']()['setText'](tp));},'setInputTextColor'(tq,tr){ui['run'](()=>{tq&&tq['getInputEditText']()['setTextColor'](colorsx['toInt'](tr));});},'setInputBackgroundColor'(tt,tu){ui['run'](()=>{tt&&tt['getInputEditText']()['setBackgroundColor'](colorsx['toInt'](tu));});},'linkify'(tv,tw){if(tv){let tx=tv['getContentView']();ui['run'](()=>{let tv=tx['getText']()['toString']();tx['setAutoLinkMask'](qf[tw||'ALL']),tx['setText'](tv);});}},'getDialogAction'(tz){try{switch(tz['toLowerCase']()){case'positive':return qk['valueOf']('POSITIVE');case'negative':return qk['valueOf']('NEGATIVE');case'neutral':return qk['valueOf']('NEUTRAL');}}catch(tA){return null;}throw TypeError('unknown\x20action\x20of\x20dialogsx.getDialogAction');},'getActionButton'(tB,tC){let tD=tC['toLowerCase']();if(tB instanceof ql){let tC=this['getDialogAction'](tD);if(null!==tC)return tB['getActionButton'](tC)['getText']()['toString']();if('object'==typeof tB[tD+'Button'])return tB[tD+'Button']['getText']();}return tB instanceof qj?tB['getActionButton'](tD):'';},'setActionButton'(tF,tG,tH,tI){let tJ=function(tG){let tJ=tG['toLowerCase']();tF instanceof ql?ui['run'](()=>{let tG=this['getDialogAction'](tJ);null!==tG?tF['setActionButton'](tG,tH):'object'==typeof tF[tJ+'Button']&&tF[tJ+'Button']['setText'](tH);}):ui['run'](()=>tF['setActionButton'](tJ,tH)),tI&&this['setActionButtonColor'](tF,tJ,tI);}['bind'](this);Array['isArray'](tG)?tG['forEach'](tJ):tJ(tG);},'setActionButtonColor'(tN,tO,tP){let tQ=function(tO){let tQ=tO['toLowerCase'](),tT=colorsx['toInt'](this['colors']['wrap'](tP,'button')),tU=this['getDialogAction'](tQ);ui['run'](()=>null!==tU?tN['getActionButton'](tU)['setTextColor'](tT):tN instanceof ql&&'object'==typeof tN[tQ+'Button']?tN[tQ+'Button']['setTextColor'](tT):void 0x0);}['bind'](this);Array['isArray'](tO)?tO['forEach'](tQ):tQ(tO);},'buildCountdown'(tV,tW){let tX=Object['assign']({'keycode_back':()=>u7['pause'](0x64)},tW),tY=tX['onNeutral']||(tV=>tV),tZ=tX['onNegative']||(tV=>tV),u0=tX['onPositive']||(tV=>tV),u1=tX['onTimeout'];if('function'!=typeof u1&&'string'!=typeof u1)throw Error('onTimeout\x20for\x20dialogsx.buildCountdown()\x20must\x20be\x20specified');let u5=0x0,u6=tX['timeout']||0x5;u6>0x64&&(u6=Math['round'](u6/0x3e8));let u7={'neutral'(){this['pause'](0x12c),tY(u8);},'negative'(){this['pause'](0x12c),tZ(u8);},'positive'(){u5=0x1,this['pause'](0x64),u0(u8);},'pause'(tV){qm['interrupt'](),setTimeout(()=>{if('function'==typeof tX['onPause'])return tX['onPause'](u8);if('object'==typeof tX['onPause']){let tV=tX['onPause'];'function'==typeof tV['action']&&tV['action'](u8),[{'key':'title','get':tV=>qn['getTitleText'](tV),'set'(tV,tW,tX){qn['setTitleText'](tV,tX);}},{'key':'content','get':tV=>qn['getContentText'](tV),'set'(tV,tW,tX){qn['setContentText'](tV,tX);}},{'key':'neutral','get':(tV,tW)=>qn['getActionButton'](tV,tW),'set'(tV,tW,tX){qn['setActionButton'](tV,tW,tX);}},{'key':'negative','get':(tV,tW)=>qn['getActionButton'](tV,tW),'set'(tV,tW,tX){qn['setActionButton'](tV,tW,tX);}},{'key':'positive','get':(tV,tW)=>qn['getActionButton'](tV,tW),'set'(tV,tW,tX){qn['setActionButton'](tV,tW,tX);}}]['forEach'](tW=>{let tY=tW['key'];if(tV[tY])if(Array['isArray'](tV[tY])){let [tX,tZ]=tV[tY];tW['set'](u8,tY,tW['get'](u8,tY)['replace'](tX,tZ));}else tW['set'](u8,tY,tV[tY]);else tX[tY]&&tW['set'](u8,tY,tX[tY]);});}},tV||0x320);},'block'(tV){let tW=tV||{},tX=tW['onStart']||(tV=>tV),tY=tW['onTimeout']||(tV=>tV),tZ=tW['onUnblock']||(tV=>tV),u0=Date['now'](),u1=tW['timeout']||0x1;for(u1<0x64&&(u1*=0xea60),tX(u8);!u5;)Date['now']()-u0>u1&&(this['pause'](0x64),tY(u8)),sleep(0x78);tZ(u8);}},u8=Object['create'](qn['builds'](tV,tX)['on']('neutral',()=>u7['neutral']())['on']('negative',()=>u7['negative']())['on']('positive',()=>u7['positive']())),u9={'act':()=>(u8['isShowing']()||u8['show'](),ua),'block':tV=>(u7['block'](tV),ua)},ua=Object['assign'](u8,u9),qm=threads['start'](function(){let tV=qn['getContentText'](u8),tW=/%timeout%/,tY=tV['match'](tW)?function(tX){u8['setContent'](tV['replace'](tW,tX['toString']()));}:tV=>tV,tZ=tX['timeout_button'],u0=tZ&&u8['getActionButton'](tZ),u5=tZ?function(tV){u8['setActionButton'](tZ,u0+'\x20\x20[\x20'+tV+'\x20]');}:tV=>tV;for(;tY(u6),u5(u6),!(u6<=0x0);)u6-=0x1,sleep(0x3e8);let u9=u1;'function'==typeof u9&&(u9=u1(u8)),u7[u9]['call'](u7);});return ua;},'buildFlow'(v4){let v5=this,v6=Object['create'](v5['builds']([v4['title']||'',v4['steps']['map']((v4,v5)=>'\u3000\x20'+ ++v5+'.\x20'+v4['desc'])['join']('\x0a'),0x0,0x0,'I',0x1],{'progress':{'max':0x64,'showMinMax':!!v4['show_min_max']}})),v7={'act'(){let v7=new Promise(v5=>{v6['on']('positive',()=>{global['_$_dialog_flow_interrupted']=!0x0;}),'function'==typeof v4['onStart']&&v4['onStart'](v4['initial_value'],v6),v5(v4['initial_value']);});return v4['steps']['forEach']((v4,v8)=>{v7=v7['then'](v7=>{if(global['_$_dialog_flow_interrupted'])throw Error(qn['text']['user_interrupted']);let vg=v5=>(v6['setProgress'](0x64),vG(v8+0x1),v4['onSuccess']&&v4['onSuccess'](v7),v5);v6['setProgress'](0x0),function(v4){let v7=v4['toString'](),v8=v5['getContentText'](v6);v5['setContentText'](v6,v8['replace'](/^(. )(\d)(?=\.)/gm,(v4,v5,v6)=>(v6===v7?'▶\x20':v5)+v6));}(v8+0x1);let vo=v4['action'](v7,v6);return vo instanceof Promise?(vo=vo['then'](vg),vo):vg(vo);},v4['onFailure']);}),v7=v7['then'](v7=>{if(global['_$_dialog_flow_interrupted'])throw Error(qn['text']['user_interrupted']);v5['setProgressColorTheme'](v6,'finish'),vG('all'),v6['removeAllListeners']('positive'),v6['setActionButton']('positive',qn['text']['btn']['F']),v6['on']('positive',v4=>v4['dismiss']());let v8=v4['success_title'];v8&&v5['setTitleText'](v6,v8);let vs=v4['success_content'];vs&&v5['appendContentText'](v6,'\x0a\x0a'+vs),delete global['_$_dialog_flow_interrupted'],'function'==typeof v4['onSuccess']&&v4['onSuccess'](v7,v6);}),v7['catch'](v5=>{delete global['_$_dialog_flow_interrupted'],'function'==typeof v4['onFailure']&&v4['onFailure']({'message':v5,'btn_text':qn['text']['btn'][v4['on_interrupt_btn_text']||'B'],'onPositive'(){qn['clearPool'](),exit();}},v6);}),v6['isShowing']()||v6['show'](),v8;},'setStepDesc'(v5,v7,vw){if(v5<0x1)throw Error('step_num\x20is\x20less\x20than\x201');if(v5>=v4['steps']['length'])throw Error('step_num\x20must\x20be\x20less\x20than\x20steps\x20length');let vx=v5['toString'](),vy=v6['getContentView'](),vz=vy['getText']()['toString'](),vA=v4['steps'][vx-0x1]['desc'];if(vz['match'](vA)){let v4=(vw?vA:'')+(v7||'');vy['setText'](vz['replace'](vA,v4));}return v8;},'setProgressData'(v4){if('object'==typeof v4){let v5=v4['processed']/v4['total']*0x64||0x0;v6['setProgress'](Math['min'](Math['max'](0x0,v5),0x64));}return v8;},'setFailureData':v4=>(v6['setActionButton']('positive',v4['btn_text']||qn['text']['btn']['B']),v6['removeAllListeners']('positive'),v6['on']('positive',v4['onPositive']||(v4=>v4['dismiss']())),qn['alertContent'](v6,v4['message'],'append'),v8)},v8=Object['assign'](v6,v7);return v8;function vG(v4){let v7='all'!==v4&&v4?v4:0x1/0x0,v8=v5['getContentText'](v6);v5['setContentText'](v6,v8['replace'](/^(. )(\d)(?=\.)/gm,(v4,v5,v6)=>(v6<=v7?'✔\x20':v5)+v6));}},'buildProgress'(vN){let vO=Object['create'](qn['builds']([vN['title']||'',vN['content']||vN['desc']||'',0x0,0x0,'I',0x1],{'progress':{'max':0x64,'showMinMax':!!vN['show_min_max']}})),vP={'act':()=>(Promise['resolve'](vN['initial_value'])['then'](vP=>('function'==typeof vN['onStart']&&vN['onStart'](vN['initial_value'],vO),vP))['then'](vP=>{if(vO['on']('positive',()=>{global['_$_dialog_flow_interrupted']=!0x0;}),global['_$_dialog_flow_interrupted'])throw Error(qn['text']['user_interrupted']);return vN['action'](vP,vO);})['then'](vP=>{if(global['_$_dialog_flow_interrupted'])throw Error(qn['text']['user_interrupted']);qn['setProgressColorTheme'](vO,'finish'),vO['setProgress'](0x64),vO['removeAllListeners']('positive'),vO['setActionButton']('positive',qn['text']['btn']['F']),vO['on']('positive',vN=>vN['dismiss']());let vQ=vN['success_title'];vQ&&qn['setTitleText'](vO,vQ);let vW=vN['success_content'];vW&&qn['appendContentText'](vO,'\x0a\x0a'+vW),delete global['_$_dialog_flow_interrupted'],'function'==typeof vN['onSuccess']&&vN['onSuccess'](vP,vO);})['catch'](vP=>{qn['setProgressColorTheme'](vO,'error'),vO['removeAllListeners']('positive');let vQ=qn['text']['btn'][vN['on_interrupt_btn_text']||'B'];vO['setActionButton']('positive',vQ),vO['on']('positive',vN=>vN['dismiss']()),qn['alertContent'](vO,vP,'append'),delete global['_$_dialog_flow_interrupted'],'function'==typeof vN['onFailure']&&vN['onFailure'](vP,vO);}),vO['isShowing']()||vO['show'](),vQ),'setStepDesc'(vP,w1){let w2=vO['getContentView'](),w3=w2['getText']()['toString'](),w4=vN['content']||'';if(w3['match'](w4)){let vN=(w1?w4:'')+(vP||'');w2['setText'](w3['replace'](w4,vN));}return vQ;},'setProgressData':vN=>(vO['setProgress'](vN['processed']/vN['total']*0x64),vQ)},vQ=Object['assign'](vO,vP);return vQ;},'setProgress'(w7,w8,w9){let wa='object'==typeof w8?w8['processed']/w8['total']*0x64:w8;ui['run'](()=>w7['getProgressBar']()['setProgress'](wa,!!w9));},'setProgressTintList'(wb,wc){let wd=colorsx['toInt'](this['colors']['wrap'](wc,'progress')),we=qh['valueOf'](wd);wb['getProgressBar']()['setProgressTintList'](we);},'setProgressTintLists'(wf,wg){let wh=wg;if(!Array['isArray'](wh))if('string'==typeof wh)wh=this['colors']['progress'][wg]||[wh];else{if('number'!=typeof wh)throw Error('Unknown\x20colors\x20type\x20for\x20dialogsx.setProgressTintLists()');wh=[wh];}let [wi,wj]=wh;wi&&this['setProgressTintList'](wf,wi),wj&&this['setProgressBackgroundTintList'](wf,wj);},'setProgressColorTheme'(wk,wl){let wm=wl;if(!Array['isArray'](wm))if('string'==typeof wm)wm=this['colors']['progress'][wl]||[wm];else{if('number'!=typeof wm)throw Error('Unknown\x20colors\x20type\x20for\x20dialogsx.setProgressColorTheme()');wm=[wm];}let [wn,wo,wp]=wm;wn&&this['setProgressTintList'](wk,wn),wo&&this['setProgressBackgroundTintList'](wk,wo),wp&&this['setActionButtonColor'](wk,'positive',wp);},'setProgressBackgroundTintList'(wq,wr){let ws=colorsx['toInt'](wr),wt=qh['valueOf'](ws);wq['getProgressBar']()['setProgressBackgroundTintList'](wt);},'setProgressNumberFormat'(wu,wv,ww){ui['run'](()=>wu['setProgressNumberFormat'](java['lang']['String']['format'](wv,ww)));},'clearProgressNumberFormat'(wx){ui['run'](()=>wx['setProgressNumberFormat'](''));},'performClick'(wy,wz){let wA=String(wz)['toLowerCase'](),wB=this['getDialogAction'](wA);null!==wB&&wy['getActionButton'](wB)['performClick']();},'alerts'(wC,wD){let wE=wD||{},wF=wC||'',wG=wE['text_color']||'#E5FFFF',wH=wE['text_font_family']||'sans-serif-condensed',wI=wE['text_gravity']||'center',wJ=wE['text_line_spacing']||'5cx',wK=wE['text_size']||0x12,wL=wE['button_width']||0x64,wM=wE['button_text']||'OK',wN=wE['button_text_color']||'#E5FFFF',wO=wE['button_text_size']||0xf,qm=wE['button_bg_tint_color']||'#00251A',wQ=wE['button_font_family']||'sans-serif',wR=wE['button_layout_gravity']||'center',wS=wE['dialog_bg_color']||colorsx['hrgba']('#005B4F91'),wT=wE['dialog_dim_amount']||0x5a,wU=ui['inflate']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20');wU['text']['attr']('text',wF),wU['text']['attr']('text_color',wG),wU['text']['attr']('text_size',wK),wU['text']['attr']('font_family',wH),wU['text']['attr']('gravity',wI),wU['text']['attr']('line_spacing',wJ),wU['btn']['attr']('width',wL),wU['btn']['attr']('text',wM),wU['btn']['attr']('text_size',wO),wU['btn']['attr']('text_color',wN),wU['btn']['attr']('layout_gravity',wR),wU['btn']['attr']('background_tint',qm),wU['btn']['attr']('font_family',wQ),wU['btn']['on']('click',()=>wV['dismiss']());let wV=this['builds']({'customView':wU,'canceledOnTouchOutside':!0x1,'background':wS,'animation':'input_method','dim_amount':wT,'keycode_back':wC=>wC['dismiss']()})['show']();}};q9['exports']={'dialogsx':qn};},763:(wX,wY,wZ)=>{let {threadsx:n}=wZ(0xef),x0=java['io']['File'],x1=java['io']['FileInputStream'],x2=java['io']['FileOutputStream'],x3=java['io']['BufferedInputStream'],x4=java['io']['BufferedOutputStream'],x5=java['util']['zip']['CheckedOutputStream'],x6=java['util']['zip']['ZipOutputStream'],x7=java['util']['zip']['ZipEntry'],x8=java['util']['zip']['ZipFile'],x9=java['util']['zip']['CRC32'],xa=org['autojs']['autojs']['Pref'],xb={'copy'(wX,wY,wZ){let xg=files['path'](wX),x3=files['path'](wY),x4=wZ||{},x5=x4['onCopyStart']||x4['onStart']||(wX=>wX),x6=x4['onCopyProgress']||x4['onProgress']||(wX=>wX),x7=x4['onCopySuccess']||x4['onSuccess']||(wX=>wX),x8=x4['onCopyFailure']||x4['onFailure']||console['error'];try{return function(wX,wY){x5(),files['createWithDirs'](wY);let wZ=new x0(wY);try{return function(wX,wY,wZ){let x1=util['java']['array']('byte',0x2000),x2=new x0(xg)['length'](),x3=0x0;try{for(;wX['available']()>0x0;){let wZ=wX['read'](x1);wZ>0x0&&(wY['write'](x1,0x0,wZ),x6({'processed':x3+=wZ,'total':x2}));}wZ&&(wX['close'](),wY['close']()),x7();}catch(xA){x8(xA);}}(wX,new x2(wZ),!0x0),!0x0;}catch(xB){return x8(xB),!0x1;}}(new x1(xg),x3);}catch(xC){return x8(xC),!0x1;}}},xc={'sep':x0['separator'],'.local'(wX){let wY=files['join'](files['getSdcardPath'](),'.local');files['isFile'](wY)&&files['remove'](wY);let wZ=files['join']['apply'](files,[wY]['concat']([]['slice']['call'](arguments)));return files['createWithDirs'](wZ['slice'](0x0,wZ['lastIndexOf'](this['sep'])+0x1)),wZ;},'run'(wX,wY){wX['match'](/^(launcher|settings)\$$/)&&(wX='ant-forest-'+wX['slice'](0x0,-0x1)+'.js');let wZ=files['path'](wX['match'](/\.js$/)?wX:wX+'.js');return'object'==typeof wY?(wY['monitor']&&(n['monitor'](wY['monitor']),delete wY['monitor']),engines['execScriptFile'](wZ,{'arguments':wY})):engines['execScriptFile'](wZ,null);},'zip'(wX,wY,wZ,xM){let x4,x8,xa,xb,xR,xS=function(){global['_$_dialog_flow_interrupted']=!0x1,[xR,xb,xa,x8,x4]['forEach'](wX=>{try{wX&&wX['close']();}catch(xY){}});},xT=wZ||{},xU=xM||{},xV=wX=>{let wY=xT['onZipFailure']||xT['onFailure'];return'function'==typeof wY?wY(wX):toastLog(wX),!0x1;},xW=xT['onZipStart']||xT['onStart'];'function'==typeof xW&&xW();let y1=files['path'](wX);if(!files['exists'](y1))throw Error('无效的压缩源');let y2=new x0(y1);y1=y2['getAbsolutePath']();let y3=wY?files['path'](wY):y1+'.zip',y4=new x0(y3);y3=y4['getAbsolutePath'](),'zip'!==files['getExtension'](y3)&&(y4=new x0(y3+='.zip')),files['exists'](y3)&&files['remove'](y3);let y5=0x0,y6=this['getDirSize'](y1);try{xa=new x2(y4),xb=new x5(xa,new x9()),xR=new x6(xb),function(wX){return xU['is_exclude_root_folder']&&wX['isDirectory']()?wX['listFiles']()['filter'](wX=>wX['getAbsolutePath']()!==y4['getAbsolutePath']())['forEach'](wX=>wY(wX)):wY(wX);function wY(wX,wZ){let xM=(wZ?wZ+xc['sep']:'')+wX['getName']();if(wX['isFile']()){let wY,wZ=0x400,x0=util['java']['array']('byte',wZ);for(xR['putNextEntry'](new x7(xM)),x4=new x1(wX),x8=new x3(x4);(wY=x8['read'](x0,0x0,wZ))>-0x1;){if(global['_$_dialog_flow_interrupted'])return xS(),xV('用户终止');xR['write'](x0,0x0,wY);}xR['closeEntry'](),x8['close'](),x4['close']();let x2=xT['onZipProgress']||xT['onProgress'];'function'==typeof x2&&x2({'processed':y5+=wX['length'](),'total':y6});}else wX['listFiles']()['filter'](wX=>wX['getAbsolutePath']()!==y4['getAbsolutePath']())['forEach'](wX=>wY(wX,xM));}}(y2),xS();let wX=xT['onZipSuccess']||xT['onSuccess'];return'function'==typeof wX&&wX({'zipped_path':y3}),xU['is_delete_source']&&this['removeWithDirs'](y1,{'is_async':!0x0}),!0x0;}catch(yl){return xV('压缩失败:\x0a'+yl);}},'unzip'(wX,wY,wZ,yp){let x1,x5,x6,x7=function(){global['_$_dialog_flow_interrupted']=!0x1,[x5,x1,x6]['forEach'](wX=>{try{wX&&wX['close']();}catch(yz){}});},x9=wZ||{},xa=wX=>{let wY=x9['onUnzipFailure']||x9['onFailure'];return'function'==typeof wY?wY(wX):toastLog(wX),!0x1;},xb=x9['onUnzipStart']||x9['onStart'];'function'==typeof xb&&xb();let yC=yp||{},yD=files['path'](wX);if(files['exists'](yD)||(yD+='.zip'),!files['exists'](yD))throw Error('解压缩源不存在');let yE=new x0(yD),yF=yE['length'](),yG=yE['getName'](),yH=yG['slice'](0x0,yG['lastIndexOf']('.')),yI=files['path'](wY);yI&&files['exists'](yI)||(yI=yD['slice'](0x0,yD['lastIndexOf'](this['sep']))),yC['to_archive_name_folder']&&(yI=files['join'](yI,yH)),files['createWithDirs'](yI+this['sep']);try{let wX=0x0,wY=0x400,wZ=util['java']['array']('byte',wY),yp=new x8(yE),xb=yp['entries']();for(;xb['hasMoreElements']();){let x8=xb['nextElement'](),yC=x8['getCompressedSize'](),yD=x8['getName'](),yE=files['join'](yI,yD);files['createWithDirs'](yE+(x8['isDirectory']()?xc['sep']:''));let yG=new x0(yE);if(yG['isDirectory']())continue;let yH=-0x1;for(x1=new x2(yG),x5=new x4(x1),x6=new x3(yp['getInputStream'](x8));(yH=x6['read'](wZ,0x0,wY))>-0x1;){if(global['_$_dialog_flow_interrupted'])return x7(),xa('用户终止');x1['write'](wZ,0x0,yH);}let yU=x9['onUnzipProgress']||x9['onProgress'];'function'==typeof yU&&yU({'processed':wX+=yC,'total':yF});}x7();let yG=x9['onUnzipSuccess']||x9['onSuccess'];return'function'==typeof yG&&yG({'unzipped_path':yI}),yC['is_delete_source']&&this['removeWithDirs'](yD,{'is_async':!0x0}),!0x0;}catch(yW){return xa('解压失败:\x0a'+yW);}},'isValidZip'(wX){let wY=files['path'](wX);if(!wY||!files['exists'](wY))return!0x1;let wZ=new x0(wY);if('zip'!==files['getExtension'](wZ['getName']()))return!0x1;let z0=null;try{return z0=new x8(wZ),!0x0;}catch(z1){return!0x1;}finally{try{null!==z0&&(z0['close'](),z0=null);}catch(z2){}}},'copy'(wX,wY,wZ,x1){let x2=x1||{},x3=x2['onCopyStart']||x2['onStart']||(wX=>wX),x4=x2['onCopyProgress']||x2['onProgress']||(wX=>wX),x5=x2['onCopySuccess']||x2['onSuccess']||(wX=>wX),x6=x2['onCopyFailure']||x2['onFailure']||console['error'];wX&&wY||x6('Source\x20and\x20target\x20path\x20must\x20be\x20both\x20defined'),files['isDir'](wY)||x6('Target\x20path\x20must\x20be\x20a\x20directory');let x7=new x0(files['path'](wX))['getAbsolutePath'](),x8=new x0(files['path'](wY))['getAbsolutePath'](),x9=wZ||{},xa=x9['is_unbundled'],xc=()=>{let wX=!0x0,wY=0x0,wZ=0x1,zn=(x0,x1)=>{let x2=files['join'](x1,files['getName'](x0));files['isFile'](x0)?(xb['copy'](x0,x2)||(wX=!0x1),x4({'processed':wY+=0x1,'total':wZ})):files['listDir'](x0)['forEach'](wX=>{zn(files['join'](x0,wX),x2);});};if('function'==typeof x3&&x3(),files['isDir'](x7)){xa||(x8=files['join'](x8,files['getName'](x7)));let wX=files['listDir'](x7,function(wX){return'function'!=typeof x9['filter']||x9['filter'](wX);});wZ=wX['length'],wX['forEach'](wX=>zn(files['join'](x7,wX),x8));}else zn(x7,x8);return wX&&x5(),wX||x6('An\x20error\x20has\x20occurred\x20in\x20files.copy()'),wX;};if(!x9['is_async'])return xc();n['start'](xc);},'getScriptDirPath':()=>'function'==typeof xa['getScriptDirPath']?xa['getScriptDirPath']():com['stardust']['autojs']['core']['pref']['Pref']['INSTANCE']['getScriptDirPath'](),'isScriptDirPath'(wX){return new x0(files['path'](wX))['getAbsolutePath']()===this['getScriptDirPath']();},'getDirSize'(wX){let wY=files['path'](wX);if(!files['exists'](wY))throw Error('path\x20of\x20filesx.getDirSize()\x20is\x20not\x20exist');return files['isFile'](wY)?new x0(wY)['length']():new x0(wY)['listFiles']()['reduce']((wX,wY)=>wX+(wY['isDirectory']()?this['getDirSize'](wY):wY['length']()),0x0);},'removeWithDirs'(wX,wY,wZ){let x0=wY||{},x1=wZ||{},x2=x1['onRemoveStart']||x1['onStart']||(wX=>wX),x3=x1['onRemoveProgress']||x1['onProgress']||(wX=>wX),x4=x1['onRemoveSuccess']||x1['onSuccess']||(wX=>wX),x5=x1['onRemoveFailure']||x1['onFailure']||console['error'],x6=0x0,x7=0x1,x8=()=>{let wY=!0x0;if(x2(),files['isFile'](wX))wY=x9(wX);else{if(!files['isDir'](wX))throw Error('Cannot\x20parse\x20path\x20for\x20filesx.removeWithDirs()');{let wZ=files['listDir'](wX);x7=wZ['length'],wZ['forEach'](wZ=>{wY=x9(files['join'](wX,wZ))&&wY;}),files['remove'](wX);}}return wY&&x4(),wY||x5('An\x20error\x20has\x20occurred\x20in\x20files.removeWithDirs()'),wY;},x9=wX=>{let wY=files['isDir'](wX)?files['removeDir'](wX):!!files['isFile'](wX)&&files['remove'](wX);return x3({'progress':x6+=0x1,'total':x7}),wY;};try{return x0['is_async']?n['start'](x8):x8();}catch(zV){x5(zV);}},'listAllFiles'(wX){let wY=[];return'string'==typeof wX&&(wX=new x0(files['path'](wX))),function wX(wZ){wZ['isFile']()?wY['push'](wZ):wZ['isDirectory']()&&(wY['push'](wZ),wZ['listFiles']()['forEach'](wX));}(wX),wY;},'deleteRecursively'(wX){if('string'==typeof wX&&(wX=new x0(files['path'](wX))),wX['isDirectory']()){let wY=wX['listFiles']();if(null!==wY&&!wY['every'](wX=>this['deleteRecursively'](wX)))return!0x1;}return wX['delete']();},'deleteByList'(wX,wY,wZ){let x0=this,x1=wY||{},x2=wZ||{},x3=x2['onDeleteStart']||x2['onStart']||(wX=>wX),x4=x2['onDeleteProgress']||x2['onProgress']||(wX=>wX),x5=x2['onDeleteSuccess']||x2['onSuccess']||(wX=>wX),x6=x2['onDeleteFailure']||x2['onFailure']||console['error'];if(x1['is_async'])return x7();function x7(){x3();let wY=!0x0,wZ=x0['listAllFiles'](wX)['reverse'](),Ai=0x0,x1=wZ['length'];return wZ['forEach'](wX=>{wY=wX['delete']()&&wY,x4({'processed':Ai+=0x1,'total':x1});}),wY&&x5(),wY||x6('An\x20error\x20has\x20occurred\x20in\x20files.deleteByList()'),wY;}n['start'](x7);},'read'(wX,wY){let wZ=null;return files['exists'](wX)&&(wZ=files['read'](wX)),wZ||(void 0x0===wY?wZ:wY);},'readJson'(wX,wY,wZ){let Ar=void 0x0===wY?{}:wY;try{return JSON['parse'](this['read'](wX),wZ)||Ar;}catch(As){return Ar;}},'write'(wX,wY){wX&&!files['exists'](wX)&&files['createWithDirs'](wX),files['write'](wX,wY);},'writeJson'(wX,wY,wZ){this['write'](wX,JSON['stringify'](wY,wZ));}};wX['exports']={'filesx':xc};},286:Ay=>{let Az=android['os']['Looper'],AA=android['widget']['Toast'],AB=java['lang']['Runnable'],AC=java['util']['zip']['GZIPInputStream'],AD=java['io']['ByteArrayInputStream'],AE=java['io']['ByteArrayOutputStream'];global['de']=Packages['de'],global['okhttp3']=Packages['okhttp3'],global['androidx']=Packages['androidx'];let AF={'compare':{'<':(Ay,Az)=>AyAy<=Az,'>':(Ay,Az)=>Ay>Az,'>=':(Ay,Az)=>Ay>=Az,'=':(Ay,Az)=>Ay===Az},'isNullish':Ay=>null==Ay,'isPlainObject':Ay=>'Object'===Object['prototype']['toString']['call'](Ay)['slice'](0x8,-0x1)},AG={'string'(){String['prototype']['toTitleCase']||Object['defineProperty'](String['prototype'],'toTitleCase',{'value'(){return this['replace'](/([A-Za-z])([A-Za-z]*)/g,(Ay,Az,AA)=>Az['toUpperCase']()+AA['toLowerCase']());}}),String['prototype']['capitalize']||Object['defineProperty'](String['prototype'],'capitalize',{'value'(){return this['valueOf']()['replace'](/\b\w+\b/g,Ay=>Ay['charAt'](0x0)['toUpperCase']()+Ay['slice'](0x1));}}),String['prototype']['surround']||Object['defineProperty'](String['prototype'],'surround',{'value'(Ay,Az){if(AF['isNullish'](Ay))return this['valueOf']();let AA=Az||{},AB=void 0x0===AA['no_intelli_brackets']||!AA['no_intelli_brackets'],AC=void 0x0===AA['no_symmetrical']||!AA['no_symmetrical'],AD=['()','[]','{}','<>','()','[]','{}','〈〉','《》','〔〕','【】','〖〗','‘’','“”'],AE=function(Ay){let Az={};return Ay['forEach'](Ay=>{Az[Ay[0x0]]=Ay[0x1],Az[Ay[0x1]]=Ay[0x0];}),Az;}(AD),AG=Ay['toString'](),B5=AG['split'](''),B6=AG['split']('');if(AB){let Ay=[];!function(Ay,Az,AA){let AB=Az||['()','[]','{}'],AC=function(Ay){let Az={};return Ay['forEach'](Ay=>Az[Ay[0x0]]=Ay[0x1]),Az;}(AB),AD=function(Ay){let Az={};return Ay['forEach'](Ay=>Az[Ay[0x1]]=Ay[0x0]),Az;}(AB),AE=[];(AA=AA||[])[0x0]=[],AA[0x1]=[];for(let Az of Ay)if(Az in AC)AE['push'](Az),AA[0x0]['push'](Az);else{if(!(Az in AD))return!0x1;if(AD[Az]!==AE['pop']())return!0x1;AA[0x1]['push'](Az);}return!AE['length'];}(AG,AD,Ay)?B5['forEach']((Ay,Az)=>{Ay in AE&&(B6[Az]=AE[Ay]);}):[B5,B6]=Ay;}return AC&&(B6=B6['reverse']()),B5['join']('')+this['valueOf']()+B6['join']('');}}),String['prototype']['ts']||Object['defineProperty'](String['prototype'],'ts',{'get'(){let Ay,Az,AA=String(this);if(AA['length']<0x2||'`'!==AA[0x0]||'`'!==AA[AA['length']-0x1])return AA;for(;Ay=AB(AA);){let [AB,AC]=Ay,AD=Az?'\x22':'';AA=AA['slice'](0x0,AB++)+AD+AA['slice'](AB,AC++)['replace'](/\${(.*?)}/g,(Ay,Az)=>Function('return\x20'+Az)())+AD+AA['slice'](AC);}return AA;function AB(Ay){let AA=[];Object['values'](Ay)['forEach']((Ay,Az)=>'`'===Ay&&AA['push'](Az));let AB=AA['length']/0x2;if(AB>>0x0!==AB)throw Error('Backticks\x20must\x20come\x20in\x20pairs');return Az=AB>0x1,AB?AA['slice'](AB-0x1,AB+0x1):null;}},'configurable':!0x0}),String['unTap']||Object['defineProperty'](String,'unTap',{'value':Ay=>{let Az=[['A','B','C','D','E'],['F','G','H','I','J'],['L','M','N','O','P'],['Q','R','S','T','U'],['V','W','X','Y','Z']],AA=Ay['match'](/../g);return AA?AA['reduce']((Ay,AA)=>{let [AB,AC]=AA;return Ay+(+AB?Az[--AB][--AC]:AC);},String()):String();}}),String['unEsc']||Object['defineProperty'](String,'unEsc',{'value':Ay=>'function'==typeof String['fromCharCode']?Ay['replace'](/.{4}/g,Ay=>String['fromCharCode'](parseInt(Ay,0x10))):unescape(Ay['replace'](/.{4}/g,'%u$&'))}),String['decodeGzip']||Object['defineProperty'](String,'decodeGzip',{'value'(Ay,Az){let AA,AB=new AE(),AF=new AC(new AD(Ay)),AG=util['java']['array']('byte',0x400);for(;-0x1!==(AA=AF['read'](AG));)AB['write'](AG,0x0,AA);let BU=new java['lang']['String'](AB['toByteArray']())['toString']();return'json'===Az?JSON['parse'](BU):BU;}});},'object'(){Object['prototype']['__proto__']||Object['defineProperty'](Object['prototype'],'__proto__',{'get'(){return Object['getPrototypeOf'](Object(this))||this['__proto__'];},'set'(Ay){if(Object(Ay)!==Ay)throw TypeError('Proto\x20must\x20be\x20an\x20non-primitive\x20type');this['__proto__']=Ay;},'configurable':!0x0}),Object['size']||Object['defineProperty'](Object,'size',{'value'(Ay,Az){if(Array['isArray'](Ay))return Ay['length'];if(!AF['isPlainObject'](Ay))return-0x1;let AA=Ay=>Array['isArray'](Ay)?Ay:void 0x0===Ay?[]:[Ay],AB=Az||{},AC=AA(AB['include']),AD=AA(AB['exclude']);return Object['keys'](Ay)['filter'](Ay=>AC['length']?AC['includes'](Ay):!AD['includes'](Ay))['length'];}}),Object['getOwnNonEnumerableNames']||Object['defineProperty'](Object,'getOwnNonEnumerableNames',{'value':Ay=>Object['getOwnPropertyNames'](Ay)['filter'](Az=>!Object['prototype']['propertyIsEnumerable']['call'](Ay,Az))}),Object['getNonEnumerableNames']||Object['defineProperty'](Object,'getNonEnumerableNames',{'value'(Ay){let Az=Ay,AA={};for(;null!==Az;)Object['getOwnNonEnumerableNames'](Az)['forEach'](Ay=>{AA[Ay]=AA[Ay]||!0x0;}),Az=Object['getPrototypeOf'](Az);return Object['keys'](AA);}}),Object['getAllPropertyNames']||Object['defineProperty'](Object,'getAllPropertyNames',{'value'(Ay){let Az=Ay,AA={};for(;null!==Az;)Object['getOwnPropertyNames'](Az)['forEach'](Ay=>{AA[Ay]=AA[Ay]||!0x0;}),Az=Object['getPrototypeOf'](Az);return Object['keys'](AA);}}),Object['assignDescriptors']||Object['defineProperty'](Object,'assignDescriptors',{'value'(Ay,Az){if(void 0x0!==Az){let Az=[]['slice']['call'](arguments),AA=Az['length'];for(;AA-->0x1;){let AB=Object['getOwnPropertyDescriptors'](Az[AA]);Object['defineProperties'](Ay,AB);}}return Ay;}}),Object['shallowClone']||(Object['shallowClone']=Ay=>AF['isPlainObject'](Ay)?Object['create'](Object['getPrototypeOf'](Ay),Object['getOwnPropertyDescriptors'](Ay)):Array['isArray'](Ay)?Ay['slice']():Ay),Object['deepClone']||Object['defineProperty'](Object,'deepClone',{'value':function Ay(Az){if(AF['isPlainObject'](Az)){let AA={};return Object['getOwnPropertyNames'](Az)['forEach'](AB=>{let AC=Object['getOwnPropertyDescriptor'](Az,AB);'object'==typeof AC['value']&&(AC['value']=Ay(AC['value'])),Object['defineProperty'](AA,AB,AC);}),AA;}return Array['isArray'](Az)?Az['map'](Ay):Az;}}),Object['isDeepEqual']||Object['defineProperty'](Object,'isDeepEqual',{'value':function Ay(Az,AA){if(AF['isPlainObject'](Az)&&AF['isPlainObject'](AA)){let AB=Object['getOwnPropertyNames'](Az),AC=Object['getOwnPropertyNames'](AA);return AB['length']===AC['length']&&AB['every'](AB=>Ay(Az[AB],AA[AB]));}return Array['isArray'](Az)&&Array['isArray'](AA)?Az['length']===AA['length']&&Az['every']((Az,AB)=>Ay(Az,AA[AB])):Az===AA;}});},'function'(){Function['prototype']['toRegular']||Object['defineProperty'](Function['prototype'],'toRegular',{'value'(){let Ay=this;return'object'==typeof this['prototype']?this:function(){return Ay['apply'](null,arguments);};}}),Function['prototype']['toRegularAndCall']||Object['defineProperty'](Function['prototype'],'toRegularAndCall',{'value'(Ay){return this['toRegular']()['apply'](null,arguments);}}),Function['prototype']['toRegularAndApply']||Object['defineProperty'](Function['prototype'],'toRegularAndApply',{'value'(Ay){if(!Array['isArray'](Ay))throw Error('Param\x20args\x20must\x20be\x20an\x20Array');return this['toRegular']()['apply'](null,Ay);}});},'number'(){Number['prototype']['ICU']||Object['defineProperty'](Number['prototype'],'ICU',{'value':function(){let Ay='Hard\x20working\x20only'['split'](new RegExp('[your\x20health]'))['map'](Ay=>Ay?Ay['charCodeAt'](0x0):97.6)['reduce']((Ay,Az)=>Ay+Az);return Math['round'](Ay);}()}),Number['prototype']['clamp']||Object['defineProperty'](Number['prototype'],'clamp',{'value'(Ay){let Az=this['valueOf'](),AA=(Array['isArray'](Ay)?Ay:[]['slice']['call'](arguments))['map'](Ay=>Number(Ay))['filter'](Ay=>!isNaN(Ay))['sort']((Ay,Az)=>Ay===Az?0x0:Ay>Az?0x1:-0x1),AB=AA['length'];if(AB){let Ay=AA[0x0],AC=AA[AB-0x1];if(AzAC)return AC;}return Az;}}),Number['prototype']['toFixedNum']||Object['defineProperty'](Number['prototype'],'toFixedNum',{'value'(Ay){return Number(this['toFixed'](Ay));}}),Number['prototype']['padStart']||String['prototype']['padStart']&&Object['defineProperty'](Number['prototype'],'padStart',{'value'(Ay,Az){let AA=this['toString']();return AA['padStart']['call'](AA,Ay,Az||0x0);}}),Number['prototype']['padEnd']||String['prototype']['padEnd']&&Object['defineProperty'](Number['prototype'],'padEnd',{'value'(Ay,Az){let AA=this['toString']();return AA['padEnd']['call'](AA,Ay,Az||0x0);}}),Number['parsePct']||Object['defineProperty'](Number,'parsePct',{'value'(Ay){if('string'==typeof Ay){let Az=Ay['replace'](/\s*/g,'')['match'](/^(\d+(?:\.\d+)?)(%+)$/);if(Az){let Ay=Number(Az[0x1]);for(let AA=0x0,AB=Az[0x2]['length'];AA'number'!=typeof Ay||isFinite(Ay)||isNaN(Ay)?+Ay:Object['is'](0x0/Ay,0x0)?Number['MAX_SAFE_INTEGER']:Number['MIN_SAFE_INTEGER'])['filter'](Ay=>!isNaN(Ay))['sort']((Ay,Az)=>Ay===Az?0x0:Ay>Az?0x1:-0x1))[0x0],AB=Ay[Ay['length']-0x1];let AC=Math['random']()*(AB-AA)+AA;return void 0x0===Az?AC:Object['is'](Az,-0x0)?Math['floor'](AC):+AC['toFixed'](+Az||0x0);}}),Math['sum']||Object['defineProperty'](Math,'sum',{'value'(Az,AA){let [AB,AC]=Ay['parseArgs']['apply'](Ay,arguments);if(!AB['length'])return 0x0;let AD=AB['reduce']((Ay,Az)=>{let [AA,AB]=[+Ay,+Az]['map'](Ay=>isNaN(Ay)?0x0:Ay);return AA+AB;}),AE=parseInt(AC);return isNaN(AE)?AD:+AD['toFixed'](AE);}}),Math['avg']||Object['defineProperty'](Math,'avg',{'value'(Az,AA){let [AB,AC]=Ay['parseArgs']['apply'](Ay,arguments),AD=AB['filter'](Ay=>!isNaN(+Ay));if(!AD['length'])return NaN;let AE=AD['reduce']((Ay,Az)=>+Ay+ +Az)/AD['length'],AF=parseInt(AC);return isNaN(AF)?AE:+AE['toFixed'](AF);}}),Math['median']||Object['defineProperty'](Math,'median',{'value'(Az,AA){let [AB,AC]=Ay['parseArgs']['apply'](Ay,arguments),AD=AB['filter'](Ay=>!isNaN(+Ay));if(!AD['length'])return NaN;AD['sort']((Ay,Az)=>{let AA=Number(Ay);return AA===Number(Az)?0x0:AA>Az?0x1:-0x1;});let AE=AD['length'],AF=AE%0x2?AD[Math['floor'](AE/0x2)]:(AD[AE/0x2-0x1]+AD[AE/0x2])/0x2,AG=parseInt(AC);return isNaN(AG)?AF:+AF['toFixed'](AG);}}),Math['var']||Object['defineProperty'](Math,'var',{'value'(Az,AA){let [AB,AC]=Ay['parseArgs']['apply'](Ay,arguments);if(!AB['length'])return NaN;let AD=AB['filter'](Ay=>!isNaN(+Ay)),AE=Math['avg'](AD),AF=AD['length'],AG=0x0;for(let Ay=0x0;Ay!isNaN(+Ay)),AE=Math['sqrt'](Math['var'](AD)),AF=parseInt(AC);return isNaN(AF)?AE:+AE['toFixed'](AF);}}),Math['cv']||Object['defineProperty'](Math,'cv',{'value'(Az,AA){let [AB,AC]=Ay['parseArgs']['apply'](Ay,arguments),AD=AB['filter'](Ay=>!isNaN(+Ay)),AE=AD['length'];if(AE<0x2)return NaN;let AF=Math['avg'](AD),AG=0x0;for(let Ay=0x0;Ay!isNaN(+Ay)),AE=Math['max']['apply'](null,AD),AF=parseInt(AC);return isNaN(AF)?AE:+AE['toFixed'](AF);}}),Math['mini']||Object['defineProperty'](Math,'mini',{'value'(Az,AA){let AB,AC;Array['isArray'](Az)?(AB=Ay['spreadArr'](Az),AC=AA):AB=Ay['spreadArr'](arguments);let AD=AB['filter'](Ay=>!isNaN(+Ay)),AE=Math['min']['apply'](null,AD),AF=parseInt(AC);return isNaN(AF)?AE:+AE['toFixed'](AF);}}),Math['dist']||Object['defineProperty'](Math,'dist',{'value'(Ay,Az){if(Array['isArray'](Ay)&&Array['isArray'](Az)){let AA=Math['pow'](Az[0x0]-Ay[0x0],0x2),AB=Math['pow'](Az[0x1]-Ay[0x1],0x2);return Math['sqrt'](AA+AB);}if(AF['isPlainObject'](Ay)&&AF['isPlainObject'](Az)){let AA=Math['pow'](Az['x']-Ay['x'],0x2),AB=Math['pow'](Az['y']-Ay['y'],0x2);return Math['sqrt'](AA+AB);}return NaN;}}),Math['logMn']||Object['defineProperty'](Math,'logMn',{'value'(Ay,Az,AA){let AB='number'==typeof AA?AA:0xd,AC=Math['log'](Az)/Math['log'](Ay);return isNaN(AC)||!isFinite(AC)||-0x1!==AB?AC:Number(AC['toFixed'](AB));}}),Math['floorLog']||Object['defineProperty'](Math,'floorLog',{'value'(Ay,Az){return Math['floor'](this['logMn'](Ay,Az));}}),Math['ceilLog']||Object['defineProperty'](Math,'ceilLog',{'value'(Ay,Az){return Math['ceil'](this['logMn'](Ay,Az));}}),Math['roundLog']||Object['defineProperty'](Math,'roundLog',{'value'(Ay,Az){return Math['round'](this['logMn'](Ay,Az));}}),Math['floorPow']||Object['defineProperty'](Math,'floorPow',{'value'(Ay,Az){return Math['pow'](Ay,this['floorLog'](Ay,Az));}}),Math['ceilPow']||Object['defineProperty'](Math,'ceilPow',{'value'(Ay,Az){return Math['pow'](Ay,this['ceilLog'](Ay,Az));}}),Math['roundPow']||Object['defineProperty'](Math,'roundPow',{'value'(Ay,Az){return Math['pow'](Ay,this['roundLog'](Ay,Az));}});}};Ay['exports']={'$$0':Ay=>0x0===Ay,'$$nul':Ay=>null===Ay,'$$und':Ay=>void 0x0===Ay,'$$bool':Ay=>'boolean'==typeof Ay,'$$symb':Ay=>'symbol'==typeof Ay,'$$bigint':Ay=>'bigint'==typeof Ay,'$$func':Ay=>'function'==typeof Ay,'$$arr':Ay=>Array['isArray'](Ay),'$$obj':Ay=>AF['isPlainObject'](Ay),'$$rex':Ay=>Ay instanceof RegExp,'$$xml':Ay=>/^xml$/['test'](typeof Ay),'$$T':Ay=>!0x0===Ay,'$$F':Ay=>!0x1===Ay,'$$num'(Ay){let Az=arguments,AA=Az['length'];if(0x0===AA)return!0x1;if(0x1===AA)return'number'==typeof Ay;if(0x2===AA)return Ay===Az[0x1];for(let Ay=0x1;AyNumber['isInteger'](Ay),'isNullish':Ay=>null==Ay,'isPrimitive':Ay=>Ay!==Object(Ay),'isReference':Ay=>Ay===Object(Ay),'isPlainObject':Ay=>AF['isPlainObject'](Ay),'isEmptyObject':Ay=>AF['isPlainObject'](Ay)&&0x0===Object['keys'](Object['getOwnPropertyDescriptors'](Ay))['length'],'isNonEmptyObject':Ay=>AF['isPlainObject'](Ay)&&Object['keys'](Object['getOwnPropertyDescriptors'](Ay))['length']>0x0,'isNormalFunction':Ay=>'function'==typeof Ay&&AF['isPlainObject'](Ay['prototype']),'isArrowFunction':Ay=>'function'==typeof Ay&&!AF['isPlainObject'](Ay['prototype']),'isXMLType':Ay=>/^xml$/['test'](typeof Ay),'requirex'(Ay){let Az=Ay=>files['exists'](Ay)&&global['require'](files['path'](Ay)),AA=Ay;AA['match'](/\.js$/)||(AA+='.js');let AB=Az('modules/'+AA)||Az(AA)||Az('../modules/'+AA);if('object'==typeof AB)return AB;throw Error('Cannot\x20locate\x20module\x20\x22'+Ay+'\x22\x20for\x20global.requirex()');},'$$sleep'(Ay,Az){if('string'==typeof Az){let AA=Az['match'](/[+-]?(\d+(\.\d+)?(e\d+)?)/);if(AA){let AB=Number(AA[0x0]);Az=Math['min'](Ay+AB,Number['MAX_SAFE_INTEGER']),Ay=Math['max'](Ay-AB,0x0);}}return'number'==typeof Az?sleep(Ay+Math['floor'](Math['random']()*(Az-Ay+0x1))):sleep(Math['max'](Ay,0x0)||0x0);},'$$link':function(){let Ay={'init'(){return delete this['is_break'],this;},'invoke'(Ay){if('function'!=typeof Ay)throw TypeError('$$link\x20invoked\x20with\x20a\x20non-function\x20argument');try{this['is_break']='__BREAK__'===Ay();}catch(FL){if(this['is_break']=!0x0,!FL['message']['match'](/InterruptedException/))throw Error(FL+'\x0a'+FL['stack']);sleep(0x1a4);}}};return function Az(AA){return Ay['init']()['invoke'](AA),Az=function(AA){return Ay['is_break']||Ay['invoke'](AA),Az['$']=Az;},Az['$']=Az;};}(),'$$cvt':function(){let Ay={'parse'(Ay,AA,AB,AC){let AD=AF['isNullish'](AA)?{}:{'init_unit':AA};return Az(Ay,Object['assign'](AC,AD,AB));}},Az=function(Ay,Az){return{'options':Az||{},'parseArgs'(){this['step']=this['options']['step'],this['pot_step']=this['options']['potential_step'],this['ori_units']=this['options']['units'],this['init_unit']=this['options']['init_unit'],this['fixed']=this['options']['fixed'],this['parseSrc'](),this['parseSpace'](),this['parseUnits']();},'parseSrc'(){this['src']=Number('string'==typeof Ay?Ay['split'](/,\s*/)['join'](''):Ay);},'parseSpace'(){this['space']=this['options']['space'],AF['isNullish'](this['space'])&&(this['space']=String()),!0x0===this['space']&&(this['space']='\x20');},'parseUnits'(){this['units']=[],this['ori_units']['forEach'](Ay=>{'string'==typeof Ay&&Ay['match'](/\w+\|\w+/)?Ay['split']('|')['reverse']()['forEach']((Ay,Az)=>{Az?this['units']['push'](0x1,Ay):this['units']['push'](Ay);}):this['units']['push'](Ay);}),this['init_unit']=this['init_unit']||this['units'][0x0];},'generateUnitMap'(){this['unit_map']={},this['unit_map'][this['units'][0x0]]=[0x1,0x1];let Ay=0x1,Az=this['units']['length'];for(let AA=0x1;AAAy>0x0!=0x3e8*Az)return Number(Az['toFixed'](0x2));return Az;},'getResult'(){return this['parseArgs'](),this['generateUnitMap'](),this['units']['includes'](this['init_unit'])&&(this['src']*=this['unit_map'][this['init_unit']][0x0]),this['units']['filter'](Ay=>Ay in this['unit_map'])['reverse']()['some']((Ay,Az,AA)=>{let [AB,AC]=this['unit_map'][Ay];if(this['src']>=AC||Az===AA['length']-0x1)return this['result']=this['calc'](AB)+this['space']+Ay;})?this['result']:String();}}['getResult']();};return Az['bytes']=function(Az,AA,AB){return Ay['parse'](Az,AA,AB,{'step':0x400,'potential_step':0x3e8,'units':['B','KB','MB','GB','TB','PB','EB','ZB','YB']});},Az['time']=function(Az,AA,AB,AC){return'object'==typeof AA?this['time'](Az,'','$en',AA):'string'==typeof AA&&AA['startsWith']('$')?this['time'](Az,'',AA,AB):'object'==typeof AB?this['time'](Az,AA,'$en',AB):Ay['parse'](Az,AA,AC,{'step':0x3c,'units':'$zh'===AB?['毫秒',0x3e8,'秒','分钟','小时',0x18,'天']:['ms',0x3e8,'s','m','h',0x18,'d']});},Az['linear']=function(Az,AA,AB){return Ay['parse'](Az,AA,AB,{'step':0x3e8,'init_unit':'mm','units':['am','fm','pm','nm','μm|um','mm',0xa,'cm',0xa,'dm',0xa,'m','km']});},Az['number']=function(Az,AA,AB){return Ay['parse'](Az,AA,AB,{'step':0x3e8,'space':!0x0,'units':['one',0x64,'hundred',0xa,'thousand','million','billion','trillion','quadrillion','quintillion','sextillion','septillion','octillion','nonillion','decillion','undecillion','duodecillion','tredecillion','quattuordecillion','quindecillion']});},Az['date']=function(Ay,Az){let AA=function(Ay){if(Ay instanceof Date)return Ay;if('number'==typeof Ay)return new Date(Ay);if('string'==typeof Ay){Ay['match'](/^\d+$/)&&(0x8===Ay['length']?Ay=Ay['replace'](/\d{2}/g,'$&%')['split']('%')['slice'](0x0,-0x1)['map']((Ay,Az)=>Az>0x1?'/'+Ay:Ay)['join'](''):0xc===Ay['length']?Ay=Ay['replace'](/\d{2}/g,'$&%')['split']('%')['slice'](0x0,-0x1)['map']((Ay,Az)=>0x0===Az?new Date()['getFullYear']()['toString']()['slice'](0x0,0x2)+Ay:Az<0x3?'/'+Ay:0x3===Az?'\x20'+Ay:Az<0x6?':'+Ay:Ay)['join'](''):0xe===Ay['length']&&(Ay=Ay['replace'](/\d{2}/g,'$&%')['split']('%')['slice'](0x0,-0x1)['map']((Ay,Az)=>Az>0x1&&Az<0x4?'/'+Ay:0x4===Az?'\x20'+Ay:Az>0x4&&Az<0x7?':'+Ay:Ay)['join']('')));let Az=new Date(Ay);if('Invalid\x20Date'===Az['toString']())throw Error('Invalid\x20Date');return Az;}return new Date();}(Ay||new Date()),AB=(Az||'yyyy/MM/dd\x20hh:mm:ss')['toString']();if('ISO'===AB['toUpperCase']()){let Ay=new Date(AA),Az=Ay['getTime']()+0xea60*Ay['getTimezoneOffset'](),AB='yyyy-MM-ddThh:mm:ss.SSSZ';return this['date'](Az,AB);}let AC=AA['getFullYear'](),AD=AC['toString']()['slice'](-0x2),AE=AA['getMonth']()+0x1,AF=AE['toString']()['padStart'](0x2,'0'),AG=AA['getDate'](),GN=AG['toString']()['padStart'](0x2,'0'),GO=AA['getHours'](),GP=GO['toString']()['padStart'](0x2,'0'),GQ=AA['getMinutes'](),GR=GQ['toString']()['padStart'](0x2,'0'),GS=AA['getSeconds'](),GT=GS['toString']()['padStart'](0x2,'0'),GU=AA['getMilliseconds']()%0x3e8,GV=GU['toString']()['padEnd'](0x3,'0')['slice'](0x0,0x1),GW=GU['toString']()['padEnd'](0x3,'0')['slice'](0x0,0x2),GX=GU['toString']()['padEnd'](0x3,'0')['slice'](0x0,0x3),GY={'yyyy':AC,'yy':AD,'MM':AF,'M':AE,'dd':GN,'d':AG,'hh':GP,'h':GO,'mm':GR,'m':GQ,'ss':GT,'s':GS},GZ=function(Ay){let Az=this;return{'get':()=>(delete Az['S'],delete Az['SS'],delete Az['SSS'],Ay),'configurable':!0x0};};return Object['defineProperties'](GY,{'S':GZ['call'](GY,GV),'SS':GZ['call'](GY,GW),'SSS':GZ['call'](GY,GX)}),function(Ay){let Az='';for(;Ay['length'];){let AA=0x4;for(;AA;){let AB=Ay['slice'](0x0,AA);if(AB in GY){Az+=GY[AB],Ay=Ay['slice'](AA);break;}AA-=0x1;}AA||(Az+=Ay[0x0],Ay=Ay['slice'](0x1));}return Az;}(AB);},Az['url']=function(Ay,Az,AA){if(!Ay)throw Error('Source\x20url\x20is\x20required\x20for\x20$$cvt.url()');if(!Az)return Ay;let AB=Ay['match'](/\?/)?'&':'?';return Ay+AB+function Ay(Az){let AB=AA||[];return Array['isArray'](AB)||(AB=[AB]),Object['keys'](Az)['map'](AA=>{let AC=Az[AA];return'object'==typeof AC&&(AC='&'+Ay(AC)),AB['includes'](AA)||(AC=encodeURI(AC)),AA+'='+AC;})['join']('&');}(Az);},Az;}(),'$$toast':function(){let Ay={'toast':null,'parseIsLong':Ay=>'number'==typeof Ay?Number(!!Ay):'string'==typeof Ay?Number(/^l(ong)?$/i['test'](Ay)):'boolean'==typeof Ay?Number(Ay):0x0,'init'(Ay){let [Az,AA,AB]=Ay;this['message']=AF['isNullish'](Az)?'':Az['toString'](),this['is_long']=this['parseIsLong'](AA),this['is_forcible']=AB;},'post'(){ui['post'](()=>{new android['os']['Handler'](Az['getMainLooper']())['post'](new AB({'run':()=>{this['is_forcible']&&this['dismiss'](),this['toast']=AA['makeText'](context,this['message'],this['is_long']),this['show']();}}));});},'dismiss'(){this['toast']instanceof AA&&(this['toast']['cancel'](),this['toast']=null);},'show'(){this['toast']['show']();}},AC=function(Az,AA,AB){Ay['init'](arguments),Ay['post']();};return AC['dismiss']=()=>Ay['dismiss'](),AC;}(),'$$impeded':function(){let Ay={'events_counter':0x0,'border'(){console['log']('-\x20'['repeat'](0x11)['trim']());},'msg'(Ay){this['border'](),[]['slice']['call'](arguments)['forEach'](Ay=>console['log'](Ay)),this['border']();},'trigger'(){return this['events_counter']>0x0;},'increase'(){this['events_counter']+=0x1;},'decrease'(){this['events_counter']-=0x1;},'reset'(){this['events_counter']=0x0;},'onTrigger'(Ay){this['msg']('检测到全局事件触发信号',Ay+'被迫阻塞');},'onRelease'(Ay){this['msg']('全局事件触发信号全部解除',Ay+'解除阻塞');}},Az=function(Az){let AA=Az||'%method%';if(Ay['trigger']()){for(Ay['onTrigger'](AA);Ay['trigger']();)sleep(0xc8);Ay['onRelease'](AA);}};return Object['assign'](Az,{'increase':()=>Ay['increase'](),'decrease':()=>Ay['decrease'](),'reset':()=>Ay['reset'](),'detach'(Ay,Az){if('function'!=typeof Ay)throw TypeError('Param\x20\x22fn\x22\x20for\x20$$impeded.detach\x20must\x20be\x20defined\x20as\x20a\x20function');if('number'!=typeof Az)throw TypeError('Param\x20\x22options_idx\x22\x20for\x20$$impeded.detach\x20must\x20be\x20defined\x20as\x20a\x20number');return function(){let AA=[]['slice']['call'](arguments);return AA[Az]='object'==typeof AA[Az]?Object['assign'](AA[Az],{'no_impeded':!0x0}):{'no_impeded':!0x0},Ay['apply'](null,AA);};}}),Az;}(),'$polyfill'(){let Ay={'getPadStr'(Ay,Az){return{'tar_len':Number(Ay),'str_len':this['length'],'trigger'(){return this['tar_len']>this['str_len'];},'getPad'(){let Ay=void 0x0===Az?'\x20':String(Az),AA=this['tar_len']-this['str_len'],AB=Math['ceil'](AA/Ay['length']);return Ay['repeat'](AB)['slice'](0x0,AA);},'getResult'(){return this['trigger']()?this['getPad']():String();}}['getResult']();}};return String['prototype']['padStart']||Object['defineProperty'](String['prototype'],'padStart',{'value'(Az,AA){return Ay['getPadStr']['apply'](this,arguments)+this['valueOf']();}}),String['prototype']['padEnd']||Object['defineProperty'](String['prototype'],'padEnd',{'value'(Az,AA){return this['valueOf']()+Ay['getPadStr']['apply'](this,arguments);}}),String['prototype']['trimStart']||Object['defineProperty'](String['prototype'],'trimStart',{'value'(){return String['prototype']['trimLeft']['apply'](this,arguments);}}),String['prototype']['trimEnd']||Object['defineProperty'](String['prototype'],'trimEnd',{'value'(){return String['prototype']['trimRight']['apply'](this,arguments);}}),Object['values']||(Object['values']=function(Ay){if(void 0x0!==Ay[Symbol['iterator']]){let Az=[];for(let AA of Ay)Az['push'](AA);return Az;}return Object['keys'](Ay)['map'](Az=>Ay[Az]);}),Object['getOwnPropertyDescriptors']||(Object['getOwnPropertyDescriptors']=function(Ay){let Az={};return Object['getOwnPropertyNames'](Ay)['forEach'](AA=>{Az[AA]=Object['getOwnPropertyDescriptor'](Ay,AA);}),Az;}),Array['from']||(Array['from']=function(Ay,Az,AA){let AB=Ay=>'function'==typeof Ay,AC=Object(Ay);if(AF['isNullish'](Ay))throw TypeError('arrayLike\x20of\x20Array.from\x20must\x20be\x20an\x20array-like\x20object');if(void 0x0!==Az&&!AB(Az))throw TypeError('mapFn\x20of\x20Array.from\x20must\x20be\x20a\x20function\x20or\x20undefined');let AD=Math['min'](Math['max']((AE=AC['length'],isNaN(Number(AE))?0x0:Math['trunc'](AE)),0x0),Number['MAX_SAFE_INTEGER']);var AE;let AG=AB(this)?Object(new this(AD)):new Array(AD),HZ=void 0x0===AA?this:AA;for(let Ay=0x0;Ay{if(void 0x0!==Ay)return Number['isNaN'](Ay)?Number['isNaN'](Az):Ay===Az;});}}),Array['prototype']['fill']||Object['defineProperty'](Array['prototype'],'fill',{'value'(Ay,Az,AA){let AB=this['length'],AC=Az>>0x0;AC=AC<0x0?AC+AB:AC>AB?AB:AC;let AD=void 0x0===AA?AB:AA>>0x0;AD=AD<0x0?AD+AB:AD>AB?AB:AD;for(let Az=AC;AzAz['concat'](Array['isArray'](AB)?Ay(AB,AA-0x1):AB),[]);}(this['slice'](),Ay||0x1);}}),Array['prototype']['keys']||(Array['prototype']['keys']=function(){return(0x0,this['map']((Ay,Az)=>Az)[Symbol['iterator']])();}),Array['prototype']['values']||(Array['prototype']['values']=function(){return this[Symbol['iterator']]();}),Array['prototype']['entries']||(Array['prototype']['entries']=function(){return(0x0,this['map']((Ay,Az)=>[Az,Ay])[Symbol['iterator']])();}),Number['isInteger']||(Number['isInteger']=function(Ay){return'number'==typeof Ay&&isFinite(Ay)&&(0x0|Ay)===Ay;}),Number['EPSILON']||(Number['EPSILON']=Math['pow'](0x2,-0x34)),delete this['$polyfill'],this;},'$bind'(){return this['$polyfill'](),Object['keys'](AG)['forEach'](Ay=>AG[Ay]()),delete this['$bind'],this;}},Ay['exports']['$bind']();},131:(Im,In,Io)=>{let {threadsx:n}=Io(0xef),Ip=java['net']['URL'],Iq=java['io']['File'],Ir=java['lang']['StringBuilder'],Is=java['io']['BufferedReader'],It=java['io']['FileOutputStream'],Iu=java['io']['InputStreamReader'],Iv=java['io']['BufferedInputStream'],Iw=java['io']['BufferedOutputStream'],Ix=java['lang']['reflect']['Array'],Iy=okhttp3['Request']['Builder'],Iz={'getContentLength'(Im,In,Io){if('string'!=typeof Im)throw Error('url\x20for\x20httpx.getContentLength()\x20is\x20required');if('function'!=typeof In)throw Error('callback\x20for\x20httpx.getContentLength()\x20is\x20required');let Iq=Io||{},Ir=Iq['timeout']||0x2710,Is=Date['now']()+Ir,It=n['atomic'](-0x1),Iu=function(Io){let Iq=n['start'](function(){try{let Io=new Ip(Im)['openConnection']();Io['setRequestProperty']('Accept-Encoding','identity'),Io['setConnectTimeout'](Ir);let IM=Io['getContentLengthLong']();Io['disconnect'](),-0x1!==IM&&It['compareAndSet'](-0x1,IM)&&In(It['get']());}catch(IN){}});n['start'](function(){try{for(;;){if(It['get']()>0x0)return Iq['interrupt']();if(Date['now']()>=Is)return Io(-0x1),Iq['interrupt']();sleep(0x78);}}catch(IO){}});},Iv=Iq['concurrence']||0xc;for(let Im=0x0;ImIm),IX=Ip['onResponse']||(Im=>Im),IY=Ip['onDownloadProgress']||(Im=>Im),IZ=Ip['onDownloadSuccess']||(Im=>Im),J0=Im=>{if('function'!=typeof Ip['onDownloadFailure'])throw Error(Im+'\x0a'+Im['stack']);Ip['onDownloadFailure'](Im);};if(!Im)return J0('url\x20for\x20httpx.okhttp3Request()\x20is\x20required');if(void 0x0!==Iz['is_async']&&!Iz['is_async'])return J6();function J6(){try{let In;IW();let Io=new Iy();Object['keys'](Iz['headers']||{})['forEach'](Im=>{Io['addHeader'](Im,Iz['headers'][Im]);});let Ja=new OkHttpClient()['newCall'](Io['url'](Im)['get']()['build']())['execute']();IX(Ja);let Ip=0x1000,J6=Ix['newInstance'](java['lang']['Byte']['TYPE'],Ip),Jd=0x0,Je=Ja['code']();0xc8!==Je&&J0(Je+'\x20'+Ja['message']());let Jf=Ja['body']()['byteStream'](),Jg=Ja['body']()['contentLength']();if('string'==typeof IV){let Im=-0x1,Io=new Iv(Jf),Ja=new It(new Iq(files['path'](IV))),Ir=new Iw(Ja);for(;-0x1!==(Im=Io['read'](J6,0x0,Ip));)global['_$_dialog_flow_interrupted']&&(Jq([Ir,Ja,Io,Jf]),J0('用户终止')),Ja['write'](J6,0x0,Im),Jd+=Im,IY({'processed':Jd,'total':Jg});Jq([Ir,Ja,Io,Jf]),IZ({'downloaded_path':In=IV});}else{let Im=new Iu(Jf),Io=new Is(Im),Ja=new Ir(),Ip=null;for(;null!==(Ip=Io['readLine']());)global['_$_dialog_flow_interrupted']&&(Jq([Io,Im,Jf]),J0('用户终止')),Ja['append'](Ip)['append']('\x0d\x0a'),Jd+=Ip['length'],IY({'processed':Jd,'total':Jg});Jq([Io,Im,Jf]),IZ({'downloaded_string':In=Ja['toString']()});}return In;}catch(Jp){J0('请求失败:\x0a'+Jp);}}function Jq(Im){Im['forEach'](Im=>{try{Im&&Im['close']();}catch(Jt){}}),global['_$_dialog_flow_interrupted']=!0x1;}n['start'](J6);}};Im['exports']={'httpx':Iz};},792:(Ju,Jv,Jw)=>{let {$$cvt:n,isNullish:r}=Jw(0x11e),{httpx:s}=Jw(0x83),{filesx:o}=Jw(0x2fb),{threadsx:a}=Jw(0xef),{dialogsx:l}=Jw(0x3b5),{storagesx:c}=Jw(0xdc),Jx=java['io']['File'],Jy={'step':{'download':'下载数据包','decompress':'解压缩','backup':'备份本地项目','files_check':'检查文件','files_update':'项目文件替换','files_ready':'项目文件就绪','finish_deploy':'清理并完成部署','finish_restore':'清理并完成项目恢复'},'structure':[{'name':'/assets'},{'name':'/modules','necessary':!0x0},{'name':'/tools'},{'name':'ant-forest-launcher.js','necessary':!0x0},{'name':'ant-forest-settings.js'},{'name':'.gitignore'},{'name':'jsconfig.json'},{'name':'project.json','necessary':!0x0},{'name':'LICENSE'},{'name':'README.md'}],get 'ignore_list'(){return this['_ignore_list']=this['_ignore_list']||c['af']['get']('update_ignore_list')||c['@default']['af']['update_ignore_list'];}},Jz={'version':{'isIgnored'(Ju,Jv){let Jw=Jv||Jy['ignore_list'];if(!Jw)throw Error('No\x20available\x20list\x20for\x20projectx.version.isIgnored()');return'string'==typeof Ju?Jw['includes'](Ju):Jw['includes'](Ju['version_name']);},'isCared'(Ju,Jv){let Jw=Jv||Jy['ignore_list'];if(!Jw)throw Error('No\x20available\x20list\x20for\x20projectx.version.isCared()');return!this['isIgnored'](Ju,Jw);},'getHex'(Ju,Jv){if('object'==typeof Ju&&(Ju=Ju['version_name']),!Ju)throw Error('A\x20\x22version\x22\x20must\x20be\x20defined\x20for\x20projectx.version.getHex()');let Jw=Jv||{},JJ=Ju=>('00'+Number(Ju||0x0)['toString'](0x10))['slice'](-0x2),JK=Ju['toString']()['trim']()['replace'](/^[a-z\s]*(\d+)(?:\.(\d+)(?:\.(\d+)(?:-\d+)?\s*(b(?:eta)?|a(?:lpha)?)?\s*(\d*))?)?$/i,(Ju,Jv,Jw,JK,JL,JS)=>{let JT=[Jv,Jw,JK]['map'](Ju=>JJ(Ju))['reduce']((Ju,Jv)=>Ju+Jv),JU=JS?Number(JS):0x1,JV=0xff;if(JL)if(JL['match'](/b(eta)?/i)){if(JU>=0x7f)throw Error('Beta\x20version\x20code\x20must\x20be\x20smaller\x20than\x20127');JV=0x80;}else if(JL['match'](/a(lpha)?/i)){if(JU>0x80)throw Error('Alpha\x20version\x20code\x20cannot\x20be\x20greater\x20than\x20128');JV=0x0;}return JT+JJ(Math['min'](JV+JU,0xff));}),JL='0x'+JK;return'number'===Jw['type']?Number(JL):'string_with_prefix'===Jw['type']?JL:JK;},'parseHex'(Ju,Jv){if('number'==typeof Ju&&(Ju=('0'['repeat'](0x7)+Ju['toString'](0x10))['slice'](-0x8)),!Ju)throw Error('A\x20\x22version\x22\x20must\x20be\x20defined\x20for\x20projectx.version.parseHex()');return Ju['replace'](/^0x/,'')['replace'](/(..)(..)(..)(..)/g,(Ju,Jw,K3,K4,K5)=>{let K6=[Jw,K3,K4]['map'](Ju=>Number('0x'+Ju))['join']('.'),K7=Number('0x'+K5),K8='';return K7<=0x80?K8='\x20Alpha'+(0x1===K7?'':K7):K7<0xff&&(K7-=0x80,K8='\x20Beta'+(0x1===K7?'':K7)),(null===Jv?'':Jv||'v')+K6+K8;});},'parseName'(Ju){return Ju['match'](/^v?\d+\.\d+\.\d+\s*(a(lpha)?|b(eta)?)?\s*\d*$/i)?this['parseHex'](this['getHex'](Ju)):'';},'isNewer'(Ju,Jv){return this['getHex'](Ju)>this['getHex'](Jv);}},'.local'(Ju){return o['.local']['apply'](o,arguments);},'getLocal'(){let Ju=this['getLocalPath']();if(!Ju)throw Error('Cannot\x20locate\x20project\x20path\x20for\x20projectx.getLocal()');let Jv=files['join'](Ju,'project.json'),Jw='ant-forest-launcher.js',Kh=files['join'](Ju,Jw),Ki={'version_name':'','version_code':-0x1,'main':{'name':Jw,'path':Kh},'path':Ju};if(files['exists'](Jv))try{let Jw=JSON['parse'](o['read'](Jv,'{}'));return Object['assign'](Ki,{'version_name':'v'+Jw['versionName'],'version_code':Number(Jw['versionCode']),'main':{'name':Jw['main'],'path':files['join'](Ju,Jw['main'])}});}catch(Kk){console['warn'](Kk['message']),console['warn'](Kk['stack']);}if(files['exists'](Kh))try{return Object['assign'](Ki,{'version_name':'v'+o['read'](Kh)['match'](/version (\d+\.?)+( ?(Alpha|Beta)(\d+)?)?/)[0x0]['slice'](0x8)});}catch(Kl){console['warn'](Kl['message']),console['warn'](Kl['stack']);}return console['warn']('Both\x20project.json\x20and\x20'+Jw+'\x20do\x20not\x20exist'),Ki;},'getLocalPath'(Ju){return Jy['local_path']||(Jy['local_path']=(()=>{let Jv=files['cwd']();if(this['isAlike'](Jv))return Jv;if(Jv=new Jx(Jv)['getParent'](),this['isAlike'](Jv))return Jv;let Jw=files['join'](o['getScriptDirPath'](),'Ant-Forest-003');return files['isDir'](Jw)?Jw:Ju?(files['createWithDirs'](Jw+o['sep']),Jw):String();})());},'getLocalVerName'(){return this['getLocal']()['version_name'];},'getAssetPath'(Ju){return files['join']['apply'](files,[this['getLocalPath'](),'assets']['concat']([]['slice']['call'](arguments)));},'getReleases'(Ju,Jv){if('function'!=typeof Jv)return Jw();function Jw(){let Jv=[],Jw=Ju||{},Kv=null;delete global['_$_get_proj_releases_interrupted'],Jw['show_progress_dialog']&&l['setProgressColorTheme'](Kv=l['builds']([null,'正在获取版本信息...',0x0,0x0,'I',0x1],{'progress':{'max':-0x1,'showMinMax':!0x1,'horizontal':!0x0},'keycode_back':'disabled'})['on']('positive',Ju=>{Ju['dismiss'](),global['_$_get_proj_releases_interrupted']=!0x0;})['show'](),'indeterminate');let Kx=Jw['max_items']||0x1/0x0,Ky=0x1,Kz=Jw['per_page']||0x1e,KA=Jw['min_version_name']||'v0.0.0',Jx=0x3;for(;Jx--;)try{let Ju=http['get']('https://api.github.com/repos/SuperMonster003/Ant-Forest/releases?per_page='+Kz+'&page='+Ky++)['body']['json']()['filter'](Ju=>Ju['tag_name']>=KA);if(global['_$_get_proj_releases_interrupted'])return[];if(Jv=Jv['concat'](Ju),Ju['length']=Kx)break;}catch(KE){sleep(0x78+0xf0*Math['random']());}return Jx<0x0?(Kv&&(Kv['dismiss'](),l['builds'](['失败','版本信息获取失败',0x0,0x0,'X',0x1])['on']('positive',Ju=>Ju['dismiss']())['show']()),[]):(Jv['splice'](Kx),Kv&&(Kv['dismiss'](),Kv=null),Jw['no_extend']?Jv:Jv['map'](function(Ju){return Ju['version_name']=Ju['tag_name'],Ju['brief_info_str']=[{'key':'name','desc':'标题'},{'key':'tag_name','desc':'标签'},{'key':'published_at','desc':'发布','cvt':void 0x0!==n&&n['date']},{'key':'body','desc':'内容描述'}]['map'](Jv=>{let Jw=Jv['key'],KJ=Ju[Jw];if(KJ)return'body'===Jw&&(KJ='\x0a'+KJ),'function'==typeof Jv['cvt']&&(KJ=Jv['cvt']['call'](null,KJ)),Jv['desc']+':\x20'+KJ;})['filter'](Ju=>!!Ju)['join']('\x0a\x0a'),Ju;}));}a['start'](()=>Jv(Jw()));},'getNewestRelease'(Ju,Jv){let Jw=()=>this['getReleases'](Object['assign'](Ju||{},{'max_items':0x1,'per_page':0x1}))[0x0];if('function'!=typeof Jv)return Jw();a['start'](()=>Jv(Jw()));},'getNewestReleaseCared'(Ju,Jv){let Jw=Ju||{},KR=()=>this['getReleases'](Object['assign'](Jw,{'max_items':0x64,'per_page':0x64}))['filter'](Ju=>this['version']['isCared'](Ju,Jw['ignore_list']))[0x0];if('function'!=typeof Jv)return KR();a['start'](()=>Jv(KR()));},'getChangelog'(Ju,Jv,Jw){let KW=Math['trunc'](Number(Ju['toString']()['match'](/\d+/)[0x0])),KX=Jv||{},KY=Jw||{},KZ=KY['onStart']||(Ju=>Ju),Jx=KY['onSuccess']||(Ju=>Ju),Jy=KY['onFailure']||console['error'],L2=null;if(!KX['is_show_dialog'])return L8();let L5=null,L6=Ju=>Ju;function L8(){KZ();let Ju=function(){let Ju=0x5,Jv='https://cdn.jsdelivr.net/gh/SuperMonster003/Ant-Forest@master/assets/docs/CHANGELOG-'+KW+'.md';for(;Ju--;)try{return s['okhttp3Request'](Jv,{'onDownloadFailure'(Jv){Ju||Jy('请求失败:\x20'+Jv);}},{'is_async':!0x1});}catch(Ld){Jy(Ld['message']);}}();if(!Ju){let Ju='获取历史更新信息失败';return L2?L2['setContent'](Ju):Jy(Ju),KX['is_joint']?'':[];}let Jv=/# v\d+\.\d+\.\d+.*/g,Jw=new RegExp(/^(\s*\n\s*)+/['source']+'|'+/(# *){3,}/['source']+'|'+/ +(?=\s+)/['source']+'|'+/.*~~.*/['source']+'|'+/.*`灵感`.*/['source']+'|'+/\(http.+?\)/['source']+'|'+/\[\/\/]:.+\(\n*.+?\n*\)/['source']+'|'+/\s*
/['source'],'g'),KY=Ju['match'](Jv),Li=Ju['split'](Jv),Lj=KY['map']((Ju,Jv)=>({'ver':'v'+Ju['split']('v')[0x1],'log':Li[Jv+0x1]['replace'](/ ?_\[`(issue |pr )?#(\d+)`](\(http.+?\))?_ ?/g,'[$2]')['replace'](Jw,'')['replace'](/(\[\d+])+/g,Ju=>'\x20'+Ju['split'](/\[]/)['join'](',')['replace'](/\d+/g,'#$&'))['replace'](/(\s*\n\s*){2,}/g,'\x0a')}));if(Jx(Lj),!L2&&!KX['is_joint'])return Lj;let Jz=Lj['map'](Ju=>Ju['ver']+'\x0a'+Ju['log'])['join']('\x0a')['slice'](0x0,-0x1);return L2&&L2['setContent'](Jz),KX['is_joint']?Jz:void 0x0;}!KX['no_earlier']&&KW>0x1&&(L5='更早期的历史',L6=function(){l['builds'](['选择一个历史版本记录','',0x0,0x0,'B',0x1],{'items':function(){let Ju=[];for(let Jv=0x1;Jv{Jz['getChangelog'](Ju+0x1,{'is_show_dialog':!0x0,'no_earlier':!0x0});})['show']();}),L2=l['builds'](['历史更新','处理中...',[L5,'hint'],'\u00a0','B',0x1])['on']('neutral',L6)['on']('positive',l['dismiss'])['show'](),a['start'](L8);},'isAlike'(Ju,Jv){let Jw=files['path'](Ju);if(!files['exists'](Jw)){if(Jv)throw Error('Passed\x20\x22dir\x22\x20is\x20not\x20exist');return!0x1;}if(!files['isDir'](Jw)){if(Jv)throw Error('Passed\x20\x22dir\x22\x20is\x20not\x20a\x20directory');return!0x1;}let Lv=files['listDir'](Jw=new Jx(Jw)['getAbsolutePath']());return Jy['structure']['filter'](Ju=>Ju['necessary'])['map'](Ju=>Ju['name'][0x0]===o['sep']?{'name':Ju['name']['slice'](0x1),'is_dir':!0x0}:{'name':Ju['name']})['every'](Ju=>{if(Lv['indexOf'](Ju['name'])>-0x1){let Jv=Ju['is_dir'],Lv=files['isDir'](files['join'](Jw,Ju['name']));return Jv&&Lv||!Jv&&!Lv;}});},'deploy'(Ju,Jv,Jw){let LE=Jw||{},LF=Jv||{},Jx=LF['onDeployStart']||LF['onStart']||(Ju=>Ju),LH=LF['onDeploySuccess']||LF['onSuccess']||(Ju=>Ju),LI=LF['onDeployFailure']||LF['onFailure']||console['error'];if(r(Ju))throw Error('A\x20version\x20for\x20projectx.deploy()\x20must\x20be\x20defined');if('string'==typeof Ju&&!(Ju=(Ju=>{if(Ju['match'](/^(newest|latest)$/))return this['getNewestRelease']({'show_progress_dialog':!0x0});if(Ju['match'](/^(newest|latest)_cared$/))return this['getNewestReleaseCared']({'show_progress_dialog':!0x0,'ignore_list':LE['ignore_list']});let Jv=null;return this['getReleases']({'per_page':0x64,'show_progress_dialog':!0x0})['some'](Jw=>(Jv=Jw)['version_name']===Ju),Jv;})(Ju))){if(global['_$_get_proj_releases_interrupted'])return void delete global['_$_get_proj_releases_interrupted'];throw Error('Cannot\x20parse\x20version\x20tag\x20for\x20projectx.deploy()');}if('object'!=typeof Ju)throw Error('Cannot\x20parse\x20version\x20for\x20projectx.deploy()');let LO=Ju['zipball_url'],LP=LO['slice'](LO['lastIndexOf'](o['sep'])+0x1)+'.zip',LQ=files['join'](o['.local']('bak','ant-forest',LP)),LR=-0x1,LS=LE['is_hide_title_version']?'':'\x20'+Ju['version_name'],LT=Jy['step'],LU=l['buildFlow']({'title':'正在部署项目'+LS,'success_title':LE['success_title']||'部署完成','on_interrupt_btn_text':LE['on_interrupt_btn_text']||'B','show_min_max':!0x0,'onStart'(Ju,Jv){Jx(),l['setProgressColorTheme'](Jv,'download');},'onSuccess'(Ju,Jv){LH(Ju,Jv);},'onFailure'(Ju,Jv){LI(Ju,Jv),Jv['setFailureData'](Ju);},'steps':[{'desc':LT['download'],'action':(Ju,Jv)=>new Promise((Ju,Jw)=>{s['okhttp3Request'](LO,{'onStart'(){let Ju=LR/0x400,Jw=Ju<0x0?'':'0KB/'+Ju['toFixed'](0x1)+'KB';l['setProgressNumberFormat'](Jv,Jw);},'onDownloadProgress'(Ju){Ju['total']=Math['max'](Ju['total'],LR);let Jw=Ju['total']/0x400,M9=Ju['processed']/0x400;l['setProgressNumberFormat'](Jv,'%.1fKB/%.1fKB',[M9,Jw]),Jv['setProgressData'](Ju);},'onDownloadSuccess'(Jw){Ju(Jw),l['clearProgressNumberFormat'](Jv);},'onDownloadFailure'(Ju){Jw(Ju);}},{'is_async':!0x0,'path':LQ});})},{'desc':LT['decompress'],'action':(Ju,Jv)=>new Promise((Jw,Mf)=>{o['unzip'](Ju['downloaded_path'],null,{'onUnzipProgress':Ju=>Jv['setProgressData'](Ju),'onUnzipSuccess'(Jv){let Mi=Jv['unzipped_path'];Jz['isAlike'](Mi)||(Mi=files['join'](Mi,files['listDir'](Mi)[0x0])),Jz['isAlike'](Mi)||Mf('Cannot\x20locate\x20project\x20path\x20in\x20unzipped\x20files'),Jw(Object['assign'](Ju,{'unzipped_files_path':Jv['unzipped_path'],'unzipped_proj_path':Mi}));},'onUnzipFailure':Ju=>Mf(Ju)},{'to_archive_name_folder':!0x0,'is_delete_source':!0x0});})},{'desc':LT['backup'],'action':(Ju,Jv)=>new Promise((Jw,Mn)=>{if(!this['getLocalPath']()||!this['getLocalVerName']())return Jv['setStepDesc'](0x3,'\x20\x20[\x20跳过\x20]',!0x0),Jw(Ju);this['backup']({'onBackupProgress':Ju=>Jv['setProgressData'](Ju),'onBackupSuccess':Jv=>Jw(Object['assign'](Ju,{'backup':Jv})),'onBackupFailure':Ju=>Mn(Ju)},{'remark':'版本升级前的自动备份','is_save_storage':!0x0});})},{'desc':LT['files_update'],'action':(Ju,Jv)=>new Promise((Jw,Mu)=>{let Mv=this['getLocalPath'](!0x0);o['copy'](Ju['unzipped_proj_path'],Mv,{'is_unbundled':!0x0},{'onCopyProgress':Ju=>Jv['setProgressData'](Ju),'onCopySuccess':()=>Jw(Object['assign'](Ju,{'tar_proj_path':Mv})),'onCopyFailure':Ju=>Mu(Ju)});})},{'desc':LT['finish_deploy'],'action':(Ju,Jv)=>new Promise((Jw,MB)=>{o['deleteByList'](Ju['unzipped_files_path'],{'is_async':!0x0},{'onDeleteProgress':Ju=>Jv['setProgressData'](Ju),'onDeleteSuccess':()=>Jw({'target_path':Ju['tar_proj_path']}),'onDeleteFailure':Ju=>MB(Ju)});})}]})['act']();s['getContentLength'](LO,function(Ju){LU['setStepDesc'](0x1,'\x20\x20[\x20'+n['bytes'](LR=Ju,'B',{'fixed':0x1,'space':!0x0})+'\x20]',!0x0);},{'timeout':0x3a98,'concurrence':0xf});},'backup'(Ju,Jv){let Jw=Ju||{},MI=Jv||{},MJ=Date['now'](),MK=this['getLocalVerName'](),Jz=this['version']['getHex'](MK),MN=o['.local']('bak','ant-forest'),MO=n['date'](MJ,'yyMMddhhmmss')+'-'+Jz+'.zip',MP=files['join'](MN,MO),MQ=()=>{let Ju=MI['source_path'];if(Ju&&'cwd'!==Ju&&'current'!==Ju||(Ju=files['cwd']()),!files['isDir'](Ju))throw Error('source_path\x20for\x20projectx.backup\x20must\x20be\x20a\x20directory');if(this['isAlike'](Ju))return Ju;if(Ju=new Jx(Ju)['getParent'](),this['isAlike'](Ju))return Ju;let Jv=o['getScriptDirPath']();if(Ju=files['join'](Jv,'Ant-Forest-003'),this['isAlike'](Ju))return Ju;throw Error('Unable\x20to\x20locate\x20Ant-Forest\x20project\x20folder');},MR=Ju=>{let Jv=Ju||{};return o['zip']((()=>{let Ju=files['join'](MN,'.'+MJ)+o['sep'];files['createWithDirs'](Ju);let Jv=MQ();return o['copy'](Jv,Ju,{'is_unbundled':!0x0,'filter':Ju=>Jy['structure']['map'](Ju=>Ju['name']['replace'](/^\//,''))['includes'](Ju)}),Ju;})(),MP,{'onZipStart'(){'function'==typeof Jv['onStart']&&Jv['onStart']();let Ju=Jw['onBackupStart']||Jw['onStart'];'function'==typeof Ju&&Ju['call'](Jw);},'onZipProgress'(Ju){'function'==typeof Jv['onProgress']&&Jv['onProgress'](Ju);let N2=Jw['onBackupProgress']||Jw['onProgress'];'function'==typeof N2&&N2['call'](Jw,Ju);},'onZipSuccess'(){let Ju={'path':MP,'timestamp':MJ,'version_name':MK,'remark':MI['remark']||'手动备份'};'function'==typeof Jv['onSuccess']&&Jv['onSuccess'](Ju);let N4=Jw['onBackupSuccess']||Jw['onSuccess'];if('function'==typeof N4&&N4['call'](Jw,Ju),MI['is_save_storage']){let Jv=c['af_bak'],Jw=Jv['get']('project',[]);Jv['put']('project',Jw['concat'](Ju));}},'onZipFailure'(Ju){'function'==typeof Jv['onFailure']&&Jv['onFailure'](Ju);let N8=Jw['onBackupFailure']||Jw['onFailure'];'function'==typeof N8&&N8['call'](Jw,Ju);}},{'is_exclude_root_folder':!0x0,'is_delete_source':!0x0});};return MI['is_show_dialog']?l['buildProgress']({'show_min_max':!0x0,'title':'正在备份','content':'此过程可能需要一些时间','success_title':'备份完成','onStart':(Ju,Jv)=>l['setProgressColorTheme'](Jv,'backup'),'action':(Ju,Jv)=>MR({'onProgress'(Ju){let Jw=Ju['processed']/0x400,Nf=Ju['total']/0x400;l['setProgressNumberFormat'](Jv,'%.1fKB/%.1fKB',[Jw,Nf]),Jv['setProgressData'](Ju);},'onSuccess'(Ju){l['setContentText'](Jv,'版本:\x20'+Ju['version_name']+'\x0a路径:\x20'+Ju['path']+'\x0a备注:\x20'+Ju['remark']);}})})['act']():MR();},'restore'(Ju,Jv){let Jw=Jy['step'],Nk=Jv||{},Nl=Nk['onRestoreStart']||Nk['onStart']||(Ju=>Ju),Nm={'local':{'title':'正在从本地恢复','success_title':'本地恢复完成','1st_step':{'desc':Jw['files_check'],'action':()=>{let Jv=files['path'](Ju);if(!files['exists'](Jv))throw Error('Source\x20file\x20of\x20projectx.restore()\x20doesn\x27t\x20exist');if(!o['isValidZip'](Jv))throw Error('Source\x20file\x20of\x20projectx.restore()\x20is\x20corrupted');return{'zip_src_file':Jv};}}},'server':{'title':'正在从服务器恢复','success_title':'服务器恢复完成','1st_step':{'desc':Jw['download'],'action':(Jv,Jw)=>new Promise((Jv,Nk)=>{let Nl=-0x1;s['getContentLength'](Ju,function(Ju){Jw['setStepDesc'](0x1,'\x20\x20[\x20'+n['bytes'](Nl=Ju,'B',{'fixed':0x1,'space':!0x0})+'\x20]',!0x0);},{'timeout':0x3a98,'concurrence':0xf});let Nm=Ju['slice'](Ju['lastIndexOf'](o['sep'])+0x1),Jx=o['.local']('bak','ant-forest'),Jy=files['join'](Jx,Nm+'.zip');s['okhttp3Request'](Ju,{'onStart'(){let Ju=Nl/0x400,Jv=Ju<0x0?'':'0KB/'+Ju['toFixed'](0x1)+'KB';l['setProgressNumberFormat'](Jw,Jv);},'onDownloadProgress'(Ju){let Jv=Ju['processed']/0x400;Ju['total']=Math['max'](Ju['total'],Nl);let ND=Ju['total']/0x400;l['setProgressNumberFormat'](Jw,'%.1fKB/%.1fKB',[Jv,ND]),Jw['setProgressData'](Ju);},'onDownloadSuccess'(Ju){Jv({'zip_src_file':Ju['downloaded_path']}),l['clearProgressNumberFormat'](Jw);},'onDownloadFailure'(Ju){Nk(Ju);}},{'is_async':!0x0,'path':Jy});})}}},Jx='local';files['exists'](Ju)||(Jx='server',Ju['match'](/^https?:\/\//)||(Ju='http://'+Ju));let NG=Nm[Jx];l['buildFlow']({'title':NG['title'],'success_title':NG['success_title'],'show_min_max':!0x0,'onStart'(Ju,Jv){Nl(),l['setProgressColorTheme'](Jv,'restore'),l['clearProgressNumberFormat'](Jv);},'onSuccess':Nk['onRestoreSuccess']||Nk['onSuccess'],'onFailure':Nk['onRestoreFailure']||Nk['onFailure'],'steps':[NG['1st_step'],{'desc':Jw['decompress'],'action':(Ju,Jv)=>new Promise((Jw,NM)=>{o['unzip'](Ju['zip_src_file'],null,{'onProgress':Ju=>Jv['setProgressData'](Ju),'onSuccess'(Jv){let Nk=Jv['unzipped_path'];Jz['isAlike'](Nk)||(Nk=files['join'](Nk,files['listDir'](Nk)[0x0])),Jz['isAlike'](Nk)?Jw(Object['assign'](Ju,{'unzipped_files_path':Jv['unzipped_path'],'unzipped_proj_path':Nk})):NM('Cannot\x20locate\x20project\x20path\x20in\x20unzipped\x20files');},'onFailure':Ju=>NM(Ju)},{'to_archive_name_folder':!0x0,'is_delete_source':!0x1});})},{'desc':Jw['files_update'],'action':(Ju,Jv)=>new Promise((Jw,NU)=>{let Nk=this['getLocalPath'](!0x0);o['copy'](Ju['unzipped_proj_path'],Nk,{'is_unbundled':!0x0},{'onProgress':Ju=>Jv['setProgressData'](Ju),'onSuccess':()=>Jw(Object['assign'](Ju,{'tar_proj_path':Nk})),'onFailure':Ju=>NU(Ju)});})},{'desc':Jw['finish_restore'],'action':(Ju,Jv)=>new Promise((Jw,O1)=>{o['deleteByList'](Ju['unzipped_files_path'],{'is_async':!0x0},{'onStart':()=>'server'===Jx&&files['remove'](Ju['zip_src_file']),'onProgress':Ju=>Jv['setProgressData'](Ju),'onSuccess':()=>Jw({'target_path':Ju['tar_proj_path']}),'onFailure':Ju=>O1(Ju)});})}]})['act']();}};Ju['exports']={'projectx':Jz};},220:(O4,O5,O6)=>{let {isNullish:n,isPlainObject:r}=O6(0x11e),{filesx:s}=O6(0x2fb),{cryptox:o}=O6(0xbe),O7=function(){let O4={'replacer':(O4,O5)=>'number'!=typeof O5||!isNaN(O5)&&isFinite(O5)?O5:'\ufeff'+O5['toString']()+'\ufeff','reviver'(O4,O5){let O6=/^\ufeff(.+)\ufeff$/;return'string'==typeof O5&&O5['match'](O6)?Number(O5['replace'](O6,'$1')):O5;},'parseFile'(O4){let O5=s['read'](O4,'');try{return O5?JSON['parse'](O5,this['reviver']['bind'](this)):{};}catch(Oi){console['warn']('JSON.parse()解析配置文件异常');}try{return this['tryRepairEscChar'](O4,O5);}catch(Oj){console['warn']('转义字符修复失败');}try{return this['tryRepairMojibakeLines'](O4,O5);}catch(Ok){console['warn']('乱码行修复失败');}this['failAndBackup'](O4);},'tryRepairEscChar'(O4,O5){console['warn']('尝试查找并修复异常的转义字符');let O6=/[ntrfb\\'"0xu]/,Oo='';for(let O4 in O5){let Oq=+O4,Or=O5[Oq];if('\x5c'===Or){let O4=O5[Oq-0x1],Oo=O5[Oq+0x1];O4&&Oo&&'\x5c'!==O4&&!Oo['match'](O6)&&(Or+='\x5c');}Oo+=Or;}return this['writeBackFileAndParse'](O4,Oo);},'tryRepairMojibakeLines'(O4,O5){console['warn']('尝试查找并修复异常的乱码行');let O6=O5['split']('\x0a');for(;O6['length']>0x0;)try{return O6['pop'](),this['writeBackFileAndParse'](O4,O6['join']('\x0a'));}catch(Ox){}throw Error('Failed\x20to\x20repair\x20mojibake\x20lines');},'writeBackFileAndParse'(O4,O5){let O6=JSON['parse'](O5,this['reviver']['bind'](this));return console['info']('修复成功'),s['write'](O4,O5),console['info']('已重新写入修复后的数据'),O6;},'failAndBackup'(O4){let O5=files['getName'](O4)+'.'+Date['now']()+'.bak';throw files['rename'](O4,O5),console['error']('修复失败'),console['warn']('已将损坏的配置文件备份至'),console['warn'](files['join'](s['.local'](),O5)),console['warn']('以供手动排查配置文件中的问题'),Error('JSON.parse()\x20failed\x20in\x20ext-storages');},'getKeyInput'(){let O4=files['join'](s['.local'](),'key.nfex'),O5=s['readJson'](O4,{});return O5['af']||(O5['af']=o['generateRandomKeyInput'](),s['writeJson'](O4,O5)),O5['af'];},'encrypt'(O4){if(n(O4))throw TypeError('Nullish\x20typed\x20value\x20cannot\x20be\x20encrypted');return o['enc'](O4['toString'](),this['getKeyInput']());},'decrypt'(O4){if(n(O4))throw TypeError('Non-string\x20typed\x20value\x20cannot\x20be\x20decrypted');return o['dec'](O4['toString'](),this['getKeyInput']());},'reEncryptFromLegacyFile'(O4){let O5=this['replacer']['bind'](this),O6=this['parseFile'](O4),O7=O4=>{if(r(O4))return(O4=>(Object['keys'](O4)['forEach'](O5=>O4[O5]=O7(O4[O5])),O4))(O4);if('string'==typeof O4&&'['===O4['slice'](0x0,0x1)&&']'===O4['slice'](-0x1)){let O5=o['_pwmap']['decrypt'](O4);if(!n(O5))return this['encrypt'](O5);}return O4;};s['writeJson'](O4,O7(O6),O5);}},O5=function(O5){this['name']=O5,this['dir']=s['.local'](),this['path_legacy']=files['join'](this['dir'],this['name']+'.nfe'),this['path']=this['path_legacy']+'x',files['exists'](this['path'])||(files['exists'](this['path_legacy'])?(files['copy'](this['path_legacy'],this['path']),O4['reEncryptFromLegacyFile'](this['path'])):files['createWithDirs'](this['path']));};return O5['prototype']={'constructor':O5,'contains'(O5){return O5 in O4['parseFile'](this['path']);},'put'(O5,O6,OT){if(void 0x0===O6)throw new TypeError('\x22put\x22\x20value\x20can\x27t\x20be\x20undefined');let OU={},O7={},O8=OT||{},OX=O5=>O4['encrypt'](JSON['stringify'](O5,O4['replacer']['bind'](O4))),OY=O4=>{if(!O8['is_crypto'])return O4;if(!r(O4)||O8['is_forcible'])return OX(O4);let O5={};return Object['keys'](O4)['forEach'](O6=>O5[O6]=OX(O4[O6])),O5;};try{OU=O4['parseFile'](this['path']);}catch(P3){console['warn'](P3['message']);}!O8['is_forcible']&&r(O6)&&r(OU[O5])&&Object['keys'](O6)['length']>0x0?O7[O5]=Object['assign'](OU[O5],OY(O6)):O7[O5]=OY(O6),Object['assign'](OU,O7),s['writeJson'](this['path'],OU,O4['replacer']['bind'](O4));},'get'(O5,O6,P6){if(void 0x0===P6&&'object'==typeof O6){let O4=['default','prop','is_crypto'],P8=Object['keys'](O6);if(O4['some'](O4=>P8['indexOf'](O4)>-0x1))return this['get'](O5,O6['default'],O6);}let Pa=O4['parseFile'](this['path']),Pb=P6||{};if(Pa&&O5 in Pa){let O6=Pa[O5];if(void 0x0!==Pb['prop']&&(Array['isArray'](Pb['prop'])?Pb['prop']['forEach'](O4=>O6=O6[O4]):O6=O6[Pb['prop']]),n(O6))return O6;if(Pb['is_crypto']){let O5=O4['reviver']['bind'](O4),Pf=O4['decrypt'](O6);try{return JSON['parse'](Pf,O5);}catch(Pg){return Pf;}}return O6;}return void 0x0!==Pb['default']?Pb['default']:O6;},'remove'(O5){let O6=O4['parseFile'](this['path']);O5 in O6&&(delete O6[O5],s['writeJson'](this['path'],O6));},'clear'(){files['remove'](this['path']);}},O5;}(),O8={'@default':O6(0xd9),get 'af'(){return this['_af']=this['_af']||this['create']('af');},get 'af_auto'(){return this['_af_auto']=this['_af_auto']||this['create']('af_auto');},get 'af_bak'(){return this['_af_bak']=this['_af_bak']||this['create']('af_bak');},get 'af_blist'(){return this['_af_blist']=this['_af_blist']||this['create']('af_blist');},get 'af_cfg'(){return this['_af_cfg']=this['_af_cfg']||this['create']('af_cfg');},get 'af_flist'(){return this['_af_flist']=this['_af_flist']||this['create']('af_flist');},get 'af_ins'(){return this['_af_ins']=this['_af_ins']||this['create']('af_ins');},get 'unlock'(){return this['_unlock']=this['_unlock']||this['create']('unlock');},'create':O4=>new O7(O4),'remove'(O4){this['create'](O4)['clear']();}};O4['exports']={'storagesx':O8};},239:(Pl,Pm,Pn)=>{let {isNormalFunction:n,isArrowFunction:r}=Pn(0x11e),{a11yx:s}=Pn(0x2d4),Po=java['lang']['Runnable'],Pp=java['lang']['Throwable'],Pq=java['util']['concurrent']['atomic']['AtomicLong'],Pr=com['stardust']['autojs']['core']['looper']['TimerThread'],Ps=com['stardust']['autojs']['runtime']['exception']['ScriptInterruptedException'],Pt={'_monitor_preset':{'ensure_open':Pl=>{let Pm=void 0x0===Pl?0x1068:Pl||0x1/0x0;return s['waitAndClick'](/打开/,Pm,0xf0,{'cs$':'w'});}},'_start'(Pl){let Pm=threads['start'](Pl);return Object['create'](Pm,{'join':{'value'(Pl){Pl===0x1/0x0||void 0x0===Pl?Pl=0x0:Pl<0x1&&(Pl=0x1),Pm['join'](Pl);}}});},'monitor'(Pl,Pm){let Pn='string'==typeof Pl?this['_monitor_preset'][Pl]:Pl;if('function'==typeof Pn)return this['start'](()=>Pn['apply'](null,[]['slice']['call'](arguments)['slice'](0x1)));if(Pn instanceof Po)return this['start'](Pn);throw TypeError('Invalid\x20monitor:\x20'+Pl);},'monitorIFN'(Pl,Pm){if(void 0x0!==Pl)return this['monitor']['apply'](this,arguments);},'start'(Pl,Pm){let Pn=Pm||{},PH=!0x0;try{if(n(Pl)||Pl instanceof Po)return this['_start'](Pl);if(r(Pl))return this['_start'](new Po({'run':()=>Pl()}));PH=!0x1;}catch(PI){if(!Ps['causedByInterrupted'](new Pp(PI))&&!PI['message']['match'](/script exiting/)&&!0x1!==Pn['is_show_error'])throw Error(PI+'\x0a'+PI['stack']);}if(!PH)throw TypeError('Unsupported\x20type\x20\x22'+typeof Pl+'\x22\x20for\x20threadsx.start()');},'atomic'(Pl){let Pm=threads['atomic'](Pl);if(Pm instanceof Pq)return Pm;let Pn=Pl;return{'get':()=>Pn,'incrementAndGet':()=>Pn+=0x1,'compareAndSet':(Pl,Pm)=>Pn===Pl&&(Pn=Pm,!0x0)};},'interrupt'(Pl){Pl instanceof Pr&&Pl['isAlive']()&&Pl['interrupt']();}};Pl['exports']={'threadsx':Pt};},855:function(PP,PQ,PR){let {isNullish:n}=PR(0x11e),{threadsx:r}=PR(0xef),PS=context['getPackageName']()['match'](/Pro\b/i),PT=PS?com['stardust']['autojs']['core']['timing']:org['autojs']['autojs']['timing'],PU=PS?PT['TimedTask']['Companion']:PT['TimedTask'],PV=PT['TimedTaskManager'],PW=PS?PV['Companion']['getInstance']():PV['getInstance'](),PX=PR(0x206)['call'](this,'__bridges__'),PY=['monday','tuesday','wednesday','thursday','friday','saturday','sunday','mon','tue','wed','thu','fri','sat','sun','一','二','三','四','五','六','日',0x1,0x2,0x3,0x4,0x5,0x6,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7]['map'](PP=>'string'==typeof PP?PP:PP['toString']()),PZ=function(PP){return PP&&(PS?PW['addTaskSync'](PP):PW['addTask'](PP)),PP||null;},Q0=function(PP){return PP?(PS?PW['removeTaskSync'](PP):PW['removeTask'](PP),PP):null;},Q1={'_taskFulfilled'(PP,PQ){if(!PP)return null;let PR=PQ||{},Q8='function'==typeof PR['condition']?PR['condition']:()=>PP['id']>0x0,PS='function'==typeof PR['callback']?PR['callback']:null,PT=0xbb8,PU=()=>{for(;PT>0x0;){if(Q8())return PS?PS(PP):PP;sleep(0x78),PT-=0x78;}return null;};if(!PR['is_async'])return PU();r['start'](PU);},'addDailyTask'(PP){let PQ=PP||{},PR=RH('LocalTime',PQ['time']),Qf=files['path'](PQ['path']),Qg=RE(PQ),PS=PZ(PU['dailyTask'](PR,Qf,Qg));return this['_taskFulfilled'](PS,PQ);},'addWeeklyTask'(PP){let PQ=PP||{},PR=0x0;for(let PP=0x0;PPPW['getTimedTask'](PP),'getIntentTask':PP=>PW['getIntentTask'](PP),'removeIntentTask'(PP,PQ){let PR=PQ||{},QI=Q0(this['getIntentTask'](PP));return this['_taskFulfilled'](QI,Object['assign'](PR,{'condition':()=>!this['getIntentTask'](PP)}));},'removeTimedTask'(PP,PQ){let PR=PQ||{},QM=Q0(this['getTimedTask'](PP));return this['_taskFulfilled'](QM,Object['assign'](PR,{'condition':()=>!this['getTimedTask'](PP)}));},'updateTimedTask':PP=>PP?function(PP){return PP?(PP['setScheduled'](!0x1),PW['updateTask'](PP),PP):null;}(PP):null,'queryTimedTasks'(PP){let PQ='',PR=[],QS=(PP||{})['path'];var QT;if(QS&&(QT='script_path\x20=\x20?',PQ+=PQ['length']?'\x20AND\x20'+QT:QT,PR['push'](QS)),PS){let PP=PW['queryTimedTasks']['call'](PW,PQ||null,PR);return PX['toArray'](PP);}let PT=PW['getAllTasksAsList']()['toArray']();return QS?PT['filter'](PP=>PP['getScriptPath']()===QS):PT;},'queryIntentTasks'(PP){let PQ=PP||{},PR='',R0=[],R1=PP=>PR+=PR['length']?'\x20AND\x20'+PP:PP,{path:PT,action:PU}=PQ;if(PT&&(R1('script_path\x20=\x20?'),R0['push'](PT)),PU&&(R1('action\x20=\x20?'),R0['push'](PU)),PS){let PP=PW['queryIntentTasks']['call'](PW,PR||null,R0);return PX['toArray'](PP);}let PV=PW['getAllIntentTasksAsList']()['toArray']();return PT||PU?PV['filter'](PP=>!(PT&&PP['getScriptPath']()!==PT||PU&&PP['getAction']()!==PU)):PV;},'timeFlagConverter'(PP){if(Array['isArray'](PP))return Array(0x7)['fill'](0x0)['reduce']((PQ,PR,R9)=>PQ+(PP['includes'](R9)?Math['pow'](0x2,R9):0x0),0x0);let PQ=[],PR=Number(PP)['toString'](0x2),Rc=PR['length']-0x1;for(let PP of PR)PP>0x0&&PQ['unshift'](Rc),Rc-=0x1;return PQ;},'setInterval'(PP,PQ,PR,Rh){({'init_ts':Date['now'](),'interval':PQ>0x0?PQ:0xc8,'timeout':PR>0x0?PR:0x1/0x0,'isTimedOut'(){return'function'!=typeof this['_isTimedOut']&&(this['_isTimedOut']='function'==typeof PR?PR['bind'](this):()=>Date['now']()-this['init_ts']>this['timeout']),this['timeout_result']=this['_isTimedOut'](),!0x1!==this['timeout_result']&&!n(this['timeout_result']);},'relayIFN'(){this['isTimedOut']()?'function'==typeof Rh&&Rh['call'](this,this['timeout_result']):this['setTimeout']();},'run'(){PP(),this['relayIFN']();},'setTimeout'(){setTimeout(this['run']['bind'](this),this['interval']);}}['setTimeout']());},'$rec'(){let PP={'keys':{},'anonymity':[],'ts':PP=>'number'==typeof PP?PP:Date['now'](),'has'(PP){return PP in this['keys'];},'add'(PP,PQ){return void 0x0===PP?this['anonymity']['push'](this['ts'](PQ)):this['keys'][PP]=this['ts'](PQ),this['ts'](PQ);},'get'(PP){return void 0x0===PP?this['anonymity']['pop']():this['keys'][PP];},'save'(PP,PQ){return this['add'](PP,PQ);},'load'(PP,PQ){return this['ts'](PQ)-this['get'](PP);},'shortcut'(PP,PQ){return'function'==typeof PP?(this['save'](),PP['call'](PQ),this['load']()):void 0x0!==PP?this['has'](PP)?this['load'](PP,PQ):this['save'](PP,PQ):this['anonymity']['length']?this['load']():this['save']();}};return this['rec']=function(PQ,PR){return PP['shortcut'](PQ,PR);},this['rec']['save']=(PQ,PR)=>PP['save'](PQ,PR),this['rec']['load']=(PQ,PR)=>PP['load'](PQ,PR),this['rec']['lt']=(PP,PQ)=>this['rec']['load'](PP)this['rec']['load'](PP)>PQ,this['rec']['clear']=()=>{PP['keys']={},PP['anonymity']['splice'](0x0);},delete this['$rec'],this;},'$bind'(){return this['$rec'](),delete this['$bind'],this;}};function RE(PP){let PQ=new com['stardust']['autojs']['execution']['ExecutionConfig']();return PQ['delay']=PP['delay']||0x0,PQ['interval']=PP['interval']||0x0,PQ['loopTimes']=void 0x0===PP['loopTimes']?0x1:PP['loopTimes'],PQ;}function RH(PP,PQ){let PR=PS?PP:org['joda']['time'][PP],RL=PQ,RM=()=>RL['getTime']();if('string'==typeof PQ)return PS?PU['parseDateTime']['call'](PU,PR,RL):PR['parse'](RL);if(PQ instanceof Date)return PS?PU['parseDateTime']['call'](PU,PR,RM()):new PR(RM());if('number'==typeof PQ)return PS?PU['parseDateTime']['call'](PU,PR,RL):new PR(RL);throw new Error('Cannot\x20parse\x20date\x20time:\x20'+PQ);}Q1['$bind'](),PP['exports']={'timersx':Q1};},883:(RN,RO,RP)=>{let {}=RP(0x11e),{filesx:n}=RP(0x2fb),{threadsx:r}=RP(0xef),{dialogsx:s}=RP(0x3b5),{projectx:o}=RP(0x318),RQ={'dialog':s['builds'](['项目部署','欢迎使用蚂蚁森林项目部署工具\x0a此工具用于\x20v2.0.0\x20以上版本的项目部署',['了解项目','hint'],['退出','caution'],['开始部署','attraction'],0x1])['on']('neutral',function(){s['builds'](['关于项目','-\x20功能简介\x20-\x0a'+['自动收取好友能量','自动收取/监测自己能量','收取结果统计/展示','控制台消息提示','自动解锁屏幕','定时任务与循环监测','多任务自动排队','脚本运行安全','事件监测与处理','黑名单机制','项目管理','账户功能','统计功能','图形化配置工具']['map'](RN=>'·\x20'+RN)['join']('\x0a')+'\x0a\x0a-\x20项目作者\x20-\x0a·\x20SuperMonster003\x0a\x0a-\x20项目链接\x20-\x0a·\x20https://github.com/SuperMonster003/Ant-Forest',0x0,0x0,'返回',0x1],{'linkify':'WEB_URLS'})['on']('positive',RN=>RN['dismiss']())['show']();})['on']('negative',RN=>{RN['dismiss'](),exit();})['on']('positive',RN=>{RN['dismiss'](),o['getReleases']({'min_version_name':'v2.0.1','show_progress_dialog':!0x0},RV);}),'view':null,'run'(){this['dialog']['show']();},'config'(){s['alerts']('CUI\x20(Configuration\x20User\x20Interface)\x20for\x20current\x20plugin\x20hasn\x27t\x20been\x20accomplished');},'getView'(){return this['view'];},'getDialog'(){return this['dialog'];}};function RV(RN){if(!RN['length'])return exit();let RO=RN[0x0],RP=RO['version_name'];s['builds'](['选择项目版本','选择希望部署的项目版本',['版本历史','hint'],['X','warn'],'下一步',0x1],{'items':['最新版本\x20('+RP+')','其他版本'],'itemsSelectMode':'single','itemsSelectedIndex':0x0})['on']('neutral',()=>{o['getChangelog'](RP['match'](/v(\d+)/)[0x1],{'is_show_dialog':!0x0});})['on']('negative',RN=>{s['builds'](['提示','项目部署尚未完成\x0a确定要退出吗',0x0,'B',['确定退出','caution'],0x1])['on']('negative',RN=>{RN['dismiss']();})['on']('positive',RO=>{s['dismiss']([RO,RN]),exit();})['show']();})['on']('positive',RP=>{RP['dismiss'](),0x0===RP['getSelectedIndex']()?r['start'](()=>S7(RO)):s['builds'](['选择其他项目版本','',0x0,'上一步','下一步',0x1],{'items':RN['slice'](0x1)['map'](RN=>RN['version_name']),'itemsSelectMode':'single','itemsSelectedIndex':0x0})['on']('negative',RN=>{RN['dismiss'](),RP['show']();})['on']('positive',RO=>{RO['dismiss']();let RP=RO['getSelectedIndex']()+0x1;r['start'](()=>S7(RN[RP]));})['show']();})['show']();}function S7(RN){o['deploy'](RN,{'onSuccess'(RN,RO){let RP=RN['target_path'];RO['removeAllListeners']('positive'),RO['setActionButton']('positive','下一步'),s['appendContentText'](RO,'\x0a\x0a项目部署路径:\x0a'+files['path'](RP)['replace'](files['getSdcardPath'](),'/内部存储')),RO['on']('positive',RN=>{function RO(){let RN=function(){s['clearPool']();let RN=context['getPackageName'](),RO=RO=>{let Sj=RO||RN;app['startActivity']({'packageName':RN,'className':Sj+'.external.open.RunIntentActivity','data':'file://'+RP+'/ant-forest-launcher.js'});};try{RO('org.autojs.autojs');}catch(Sk){RO(RN);}},RO=function(){s['clearPool'](),exit();};s['builds'](['项目使用声明',['代码完全公开','杜绝恶意代码','项目永久免费','欢迎提议反馈','','如需获知项目启动方式','可点击\x22了解更多\x22按钮']['map'](RN=>RN&&'·\x20'+RN)['join']('\x0a'),['T','hint'],0x0,['完成部署','finish'],0x1])['on']('neutral',()=>s['builds'](['项目启动方式','以下方式可用于启动项目:\x0a'+['ant-forest-launcher运行按钮','目录顶部的项目运行按钮\x20(如有)','创建并使用桌面快捷方式']['map'](RN=>RN&&'·\x20'+RN)['join']('\x0a'),['立即运行项目','attraction'],['B','default_aj_4'],['完成部署','finish'],0x1])['on']('neutral',RN)['on']('negative',RN=>RN['dismiss']())['on']('positive',RO)['show']())['on']('positive',RO)['show']();}RN['dismiss'](),engines['myEngine']()['source']['toString']()['match'](/^Ant.Forest.+er/)?dialogs['build']({'title':'新项目使用提示','content':'可能需要在Auto.js程序主页下拉刷新才能看到新项目\x0a新项目默认是以\x22Ant-Forest-003\x22命名的蓝色目录\x20进入目录可运行新项目\x0a对于当前目录下的旧项目文件\x20若无保留需要\x20可全部移除\x0a移除时需谨慎\x20避免误删可能存在的项目以外的重要文件','positive':'下一步','autoDismiss':!0x1,'canceledOnTouchOutside':!0x1})['on']('positive',RN=>{RN['dismiss'](),RO();})['show']():RO();});}},{'on_interrupt_btn_text':'X','success_title':'项目部署完成'});}RN['exports']=RQ;}},E={};function Sp(Sq){var Sr=E[Sq];if(void 0x0!==Sr)return Sr['exports'];var Ss=E[Sq]={'exports':{}};return A[Sq]['call'](Ss['exports'],Ss,Ss['exports'],Sp),Ss['exports'];}Sp['o']=(St,Su)=>Object['prototype']['hasOwnProperty']['call'](St,Su);var Sv={};Sp(0x373)['run']();})(); \ No newline at end of file +(()=>{var A={518:G=>{function J(G){var J=new Error('Cannot\x20find\x20module\x20\x27'+G+'\x27');throw J['code']='MODULE_NOT_FOUND',J;}J['keys']=()=>[],J['resolve']=J,J['id']=0x206,G['exports']=J;},217:P=>{P['exports']={'af':{'project_desc':'蚂蚁森林','self_collect_switch':!0x0,'app_launch_springboard':'OFF','auto_enable_a11y_svc':'OFF','account_switch':!0x1,'account_log_back_in_switch':!0x1,'account_log_back_in_max_continuous_times':0x3,'main_account_info':{},'forest_balls_click_duration':0x36,'forest_balls_click_interval':0x6c,'homepage_monitor_switch':!0x0,'homepage_monitor_threshold':0x2,'homepage_background_monitor_switch':!0x1,'homepage_bg_monitor_threshold':0x1,'homepage_wball_switch':!0x0,'homepage_wball_check_limit':0x78,'homepage_wball_max_hue_no_blue':0x2f,'friend_collect_switch':!0x0,'friend_collect_icon_color':'#1DA06D','friend_collect_icon_threshold':0xa,'get_targets_by_stroll_btn':!0x1,'max_continuous_not_targeted_stroll_cycle':0x3,'forest_image_pool_limit':0x3,'forest_image_pool_itv':0x3c,'eballs_recognition_region':[0.1,0.15,0.9,0.45],'hough_src_img_strategy':{'gray':!0x0,'adapt_thrd':!0x0,'med_blur':!0x0,'blur':!0x0,'blt_fltr':!0x1},'hough_results_strategy':{'anti_ovl':!0x0,'symmetrical':!0x0,'linear_itp':!0x0},'ripe_ball_detect_threshold':0xd,'ripe_ball_detect_color_val':'#DEFF00','min_balls_distance':0.09,'protect_cover_detect_color_val':'#BEF658','protect_cover_detect_threshold':0x5,'auto_unlock_switch':!0x1,'message_showing_switch':!0x0,'console_log_switch':!0x0,'debug_info_switch':!0x1,'result_showing_switch':!0x0,'floaty_result_switch':!0x0,'floaty_result_countdown_sec':0x6,'rank_list_review_switch':!0x0,'rank_list_review_threshold_switch':!0x0,'rank_list_review_threshold':0x1,'rank_list_review_samples_clicked_switch':!0x0,'rank_list_review_difference_switch':!0x0,'rank_list_scan_strategy':'scroll','rank_list_swipe_distance':0.75,'rank_list_swipe_time':0x96,'rank_list_swipe_interval':0x12c,'rank_list_scroll_interval':0xf0,'rank_list_max_not_targeted_times':0xc8,'rank_list_capt_pool_diff_check_threshold':0x14,'timers_switch':!0x1,'timers_self_manage_switch':!0x0,'timers_countdown_check_own_switch':!0x0,'timers_countdown_check_own_timed_task_ahead':0x2,'timers_countdown_check_friends_switch':!0x0,'timers_countdown_check_friends_timed_task_ahead':0x1,'timers_uninterrupted_check_switch':!0x0,'timers_uninterrupted_check_sections':[{'section':['06:30','00:00'],'interval':0x3c}],'timers_auto_task_sections':[],'timers_insurance_switch':!0x0,'timers_insurance_interval':0x5,'timers_insurance_max_continuous_times':0x3,'max_running_time_global':0x2d,'max_queue_time_global':0x3c,'min_bomb_interval_global':0x12c,'min_battery_percentage':0x14,'kill_when_done_switch':!0x1,'kill_when_done_intelligent':!0x0,'kill_when_done_keep_af_pages':!0x1,'phone_call_state_monitor_switch':!0x0,'phone_call_state_idle_value':void 0x0,'prompt_before_running_switch':!0x0,'prompt_before_running_countdown_seconds':0x5,'prompt_before_running_auto_skip':!0x0,'prompt_before_running_quit_confirm':!0x0,'prompt_before_running_postponed_minutes_choices':[0x1,0x2,0x3,0x5,0xa,0xf,0x14,0x1e,0x3c],'prompt_before_running_postponed_minutes':0x0,'prompt_before_running_postponed_minutes_user':0x3,'foreground_app_blacklist':[],'update_ignore_list':[],'update_auto_check_switch':!0x0,'update_show_on_af_settings':!0x0,'update_show_on_e_result':!0x0,'auto_task_show_on_e_result':!0x0,'stat_list_show_zero':0x1,'stat_list_date_range':0x2,'aj_global_log_switch':!0x0,'aj_global_log_cfg_path':'./log/','aj_global_log_cfg_file_pattern':'%d{yyyy-MM-dd/}%m%n','aj_global_log_cfg_max_backup_size':0x7,'aj_global_log_cfg_max_file_size':0x140,'e_dblclick_switch':!0x1,'e_rain_switch':!0x1,'stroll_btn_match_threshold':0xa,'stroll_btn_locate_main_color':'#FF7E00','root_access_functions':{'force_stop':!0x1,'screen_off':!0x0}},'unlock':{'unlock_code':null,'unlock_max_try_times':0x14,'unlock_pattern_strategy':'segmental','unlock_pattern_size':0x3,'unlock_pattern_swipe_time_segmental':0x78,'unlock_pattern_swipe_time_solid':0xc8,'unlock_dismiss_layer_strategy':'preferred','unlock_dismiss_layer_bottom':0.7,'unlock_dismiss_layer_top':0.2,'unlock_dismiss_layer_swipe_time':0x6e},'settings':{'item_area_width':0.78}};},753:U=>{U['exports']={'restore_all_settings':'此操作无法撤销\x0a如需保留此次会话内容建议先保存\x0a\x0a以下功能内部配置不会被还原:\x0a1.\x20自动解锁\x0a2.\x20黑名单管理\x0a','keep_internal_config':'包含内部配置的功能\x0a只还原此功能的开闭状态\x0a而不会清空内部保存的数据\x0a如解锁密码/黑名单列表等\x0a','about_account_function':'主账户:\x0a\x0a执行蚂蚁森林项目时\x0a用户往往希望只针对自己的账户操作\x0a而非他人的账户或小号账户等\x0a尤其是多账号或频繁切换账号的用户\x0a可能出现非预期账户自动执行了脚本\x0a\x0a此功能可在脚本执行时检测当前账户\x0a若非主账户或未登录任何账户\x0a则将自动切换或登陆主账户\x0a再执行后续操作\x0a\x0a*\x20主账户登录需设置账户名\x0a*\x20账户名必须设置\x0a--\x20否则账户功能将自动关闭\x0a*\x20密码可不做设置\x0a*\x20无密码时\x0a--\x20脚本将在需要时\x0a--\x20提示用户手动输入\x0a\x0a旧账户回切:\x0a\x0a若脚本运行时账户非主账户A\x0a记当前账户为账户B\x0a脚本切换或登录至A且任务完成后\x0a此功能可自动将账户回切至B\x0a否则将保持主账户A的登录状态\x0a\x0a关于连续回切:\x0a每次回切将导致计数器累加一次\x0a且将记录回切时的登录账户B\x0a只要新一次运行的账户不是B\x0a无论是主账户A还是另外的账户C\x0a均将导致连续回切计数器清零\x0a当连续回切达到阈值时\x0a自动回切失效且计数器清零','before_use_main_account':'此功能涉及到用户隐私数据\x0a需额外注意账户和密码安全\x0a建议稍后自行点击\x22帮助\x22按钮\x0a查看并了解相关信息及注意事项','account_info_hint':'信息录入方式:\x0a\x0aA.\x20支付宝录入\x0a自动打开支付宝应用\x0a获取当前登录的账户名\x0a获取成功后自动填入当前页面\x0aB.\x20账户库录入\x0a账户库功能暂未开发\x0aC.\x20手动录入\x0a1.\x20全部留空\x0a将跳过信息录入\x0a或清除已存储的录入数据\x0a2.\x20密码留空\x20只填写账户\x0a脚本将在需要账户密码的时候\x0a通过震动提示用户手动输入密码\x0a60秒内输入完成脚本将自动继续\x0a否则脚本终止\x0a3.\x20全部填写\x0a脚本将自动完成主账户的切换\x0a或自动登录操作\x0a\x0a注意:\x0a\x0a1.\x20密码非必填项\x0a且因安全等原因不建议填入\x0a关于密码存储方式相关内容\x0a可点击\x22密码存储方式\x22按钮查看\x0a2.\x20自动切换或登录在遇到问题时\x0a脚本将自动终止\x0a包括但不限于密码错误/网络不稳定/账号录入错误或不存在/账号状态异常/其他特殊情况\x0a3.\x20当密码已录入时\x0a密码输入框留空或不做修改\x0a均会保持原密码不变\x0a输入新内容可覆盖旧密码\x0a如若删除本地已存储的密码\x0a可将\x22账户\x22内容删除留空\x0a或使用\x22信息销毁\x22功能','how_password_stores':'用户输入的密码数据\x0a使用\x22ext-crypto\x22模块进行加密\x0a然后存储在本地相应文件中\x0a\x0a*\x20加密的原理是随机字符映射\x0a--\x20因此难以避免别有用心之人\x0a--\x20对本地数据进行解密\x0a--\x20或插入劫持代码语句等\x0a--\x20因此需要用户妥善保管设备\x0a--\x20避免遗失或随意借予他人\x0a*\x20解密过程与加密过程类似\x0a--\x20依然是多次随机字符映射','destroy_main_account_info':'此操作将从本地存储中\x0a移除已记录的主账户信息\x0a包括账户和密码\x0a\x0a确定要销毁主账户信息吗','get_account_name_from_alipay':'可从支付宝应用获取当前账户名\x0a并自动填入本页\x22账户\x22输入框\x0a\x0a若出现当前未登录任何账户\x0a或脚本运行错误等其他意外情况\x0a将可能导致获取账户名失败\x0a\x0a点击\x22开始获取\x22按钮开始操作','login_password_needed':'在支付宝密码输入框中\x0a手动填写密码\x0a然后点击\x22登录\x22按钮\x0a登陆成功后脚本将自动继续运行\x0a\x0a脚本不会记录或存储密码\x0a如有疑问或疑虑\x0a可按音量键强制停止脚本\x0a成功登陆后再重新运行脚本','account_log_back_in_max_continuous_times':'计数器达最大次数时将不再回切\x0a且计数器将自动清零\x0a\x0a*\x20设置\x200\x20值可不限制回切次数\x0a*\x20详细情况参阅\x27帮助与支持\x27\x0a--\x20位于\x22账户功能\x22主页','about_blacklist':'能量罩黑名单:\x0a\x0a仅用作显示与查看\x0a当检测到好友能量罩时\x0a脚本自动添加好友到此名单中\x0a获取并计算能量罩到期时间\x0a能量罩到期后好友将自动移除\x0a\x0a自定义黑名单:\x0a\x0a用户可自行管理此名单\x0a位于此名单中的好友\x0a脚本将跳过此人的能量球检查\x0a可指定自动解除时间\x0a\x0a前置应用黑名单:\x0a\x0a项目自动运行时\x0a如果检测到当前应用在此名单中\x0a例如名单里有数独游戏\x0a而此时用户正在运行此游戏\x0a则脚本将放弃执行定时任务\x0a将任务推迟数分钟再执行\x0a推迟分钟按以下方案逐次增量\x0a[\x201,\x201,\x202,\x203,\x205,\x208,\x2010\x20]\x0a达到\x2010\x20后将一直保持\x2010\x20分钟','forest_balls_click_duration':'此设置值影响能量球的点击时间\x0a点击方法采用press()\x0a\x0a注意:\x0a此设置值将同时影响以下操作环境:\x0a1.\x20主页森林能量球\x20(绿/橙/金)\x0a2.\x20好友森林能量球\x20(绿/橙/金)\x0a\x0a设置过小值可能造成点击不被响应\x0a设置过大值将影响快速收取体验','forest_balls_click_interval':'当可点击的能量球数量超过\x201\x20时\x0a此设置值影响能量球之间的点击间隔\x0a\x0a注意:\x0a此设置值将同时影响以下操作环境:\x0a1.\x20主页森林能量球\x20(绿/橙/金)\x0a2.\x20好友森林能量球\x20(绿/橙/金)\x0a\x0a设置过小值可能遗漏点击能量球\x0a设置过大值将影响快速收取体验','homepage_wball_max_hue_no_blue':'用以判断能量球是否为浇水能量球\x0a即金色能量球\x0a判断及计算方法:\x0a区域中心横向\x2070%\x20线性扫描\x0a每\x202\x20像素判断色值\x0a色值转换为\x20RGB\x20色值\x0a计算\x20120\x20-\x20(R\x20/\x20G)\x20×\x2060\x0a得到无蓝分量的色值\x20(Hue)\x0aHue\x20在所有像素值中存在极大值\x0a统计出可同时适配白天及黑夜场景\x0a且数值出现概率合适的极大值\x0a将此值作为参数值即可实现匹配','homepage_monitor_threshold':'当进入主页存在未成熟能量球\x0a且最小成熟倒计时达到阈值时\x0a将循环监测直到能量球成熟并收取\x0a收取后\x0a若剩余能量球最小倒计时达到阈值\x0a则继续重复循环监测操作\x0a直到没有未成熟能量球\x0a或最小倒计时未达到设定阈值为止','homepage_bg_monitor_threshold':'好友排行榜操作期间\x0a若主页能量最小成熟时间达到阈值\x0a则返回森林主页开始监控能量球\x0a收取完毕后\x0a将继续进入好友排行榜完成操作\x0a\x0a*\x20此功能不受\x27循环监测\x27开关影响\x0a--\x20除非\x22自收功能\x22关闭\x0a*\x20返检阈值不可大于监测阈值\x0a*\x20接受非整数数值--\x20如\x201.5,\x202.8\x20等','friend_collect_icon_color':'排行榜识别绿色手形图标的参照色值\x0a\x0a示例:\x0argb(67,160,71)\x0a#AEB0B3','friend_collect_icon_threshold':'排行榜识别绿色手形图标的\x0a参照色值检测阈值\x0a阈值越大\x20匹配越宽松\x20反之越严格\x0a0\x20表示完全相似','forest_image_pool_limit':'限制用于存放森林页面截图样本的\x0a采集池数量上限\x0a\x0a数量过多将导致采集时间过长\x0a影响收取体验\x0a数量过少将导致识别率受影响\x0a出现遗漏或误判','forest_image_pool_itv':'森林页面样本采集池样本之间的存放间隔\x0a\x0a间隔的意义主要在于保证\x0a相邻两个样本之间的有效差异性\x0a间隔过大将导致采集时间过长\x0a影响收取体验\x0a间隔过小将导致样本差异过小\x0a影响识别率并出现遗漏或误判','eballs_recognition_region':'用于限制森林页面能量球的识别区域\x0a识别的能量球必须全部包含在此区域\x0a才被视为有效的能量球样本\x0a\x0a需填写\x204\x20个参数并以逗号分隔\x0a支持的参数:\x20百分数/数字/小数\x0a示例\x201\x20:\x20\x2010%,10%,90%,520\x0a示例\x202\x20:\x20\x200.1,120,0.9,53%\x0a\x0a也可使用可视化工具进行参数设置:\x0atools/Floaty_Rectangle_Region.js','ripe_ball_detect_color_val':'森林页面识别成熟能量球的参照色值\x0a\x0a示例:\x0argb(67,160,71)\x0a#AEB0B3','ripe_ball_detect_threshold':'森林页面识别成熟能量球的\x0a参照色值检测阈值\x0a阈值越大\x20匹配越宽松\x20反之越严格\x0a0\x20表示完全相似','unlock_code':'密码长度不小于\x203\x20位\x0a无密码可留空\x0a\x0a若采用图案解锁方式\x0a总点阵数大于\x209\x20需使用逗号分隔\x0a图案解锁密码将自动简化\x0a详情点击\x22查看示例\x22','unlock_code_demo':'滑动即可解锁:\x20(留空)\x0a\x0aPIN\x20解锁:\x201001\x0a\x0a密码解锁:\x2010btv69\x0a\x0a图案解锁:\x20(点阵序号从\x201\x20开始)\x0a3\x20×\x203\x20点阵\x20-\x201235789\x20或\x201,2,3,5,7,8,9\x0a4\x20×\x204\x20点阵\x20-\x201,2,3,4,8,12,16\x0a*\x20点阵密码将自动简化','about_pattern_simplification':'简化原理:\x0a共线的连续线段组只需保留首末两点\x0a途径点将自动激活\x0a\x0a3\x20×\x203\x20-\x201,2,3,5,7,8,9\x20->\x201,3,7,9\x0a4\x20×\x204\x20-\x201,2,3,4,8,12,16\x20->\x201,4,16\x0a5\x20×\x205\x20-\x201,2,3,4,5,6\x20->\x201,5,6\x0a\x0a因此以下一组设置对于图案解锁\x0a可视为相同设置\x20(3\x20×\x203\x20点阵):\x0a1,2,3,6,9\x0a1,1,2,2,3,3,3,6,9,9\x0a1,3,9','unlock_code_safe_confirm':'设备遗失或被盗时\x20自动解锁功能将严重降低设备的安全性\x20甚至导致隐私泄露或财产损失\x20需谨慎使用\x0a\x0a如欲了解设备遗失对策\x0a可点击\x22了解更多\x22\x0a\x0a确定要继续吗','about_lost_device_solution':'一旦设备遗失或被盗\x0a可通过以下方式\x0a将可能的损失降到最低\x0a\x0a*\x20利用\x27查找我的设备\x27功能\x0a\x0a如若遗失安卓手机/平板电脑/手表等\x0a可以寻找/锁定/清空该设备\x0a详情参阅:\x0ahttps://support.google.com/accounts/answer/6160491?hl=zh-Hans\x0a\x0a*\x20及时挂失/冻结卡号/账号\x0a\x0a优先冻结与财产安全相关的账号\x0a或及时修改登录密码或支付密码\x0a如\x20微博/微信/支付宝\x20以及\x20QQ\x20等\x0a详情参阅:\x0ahttps://www.zhihu.com/question/20206696','unlock_dismiss_layer_swipe_time':'设置整百值可保证匀速滑动\x0a十位小于5可实现不同程度惯性滑动\x0a\x0a*\x20通常无需自行设置\x0a*\x20脚本会自动尝试增量赋值\x0a--\x20以获得最佳值','unlock_dismiss_layer_bottom':'设置滑动起点的屏高百分比\x0a\x0a*\x20通常无需自行设置\x0a*\x20设置过大值可能激活非预期控件','unlock_dismiss_layer_top':'设置滑动终点的屏高百分比\x0a\x0a*\x20通常无需自行设置\x0a*\x20此配置值对滑动影响程度较小','about_unlock_pattern_strategy':'叠加路径:\x0a\x0a采用\x20gestures()\x20方法\x0a将每两个点组成直线路径\x0a所有路径利用微小时间差拼接\x0a最终组合形成完整路径\x0a优点:\x0a1.\x20可实现超高速滑动\x0a2.\x20滑动拐点定位精确\x0a缺点:\x0a1.\x20滑动路径可能会断开\x0a2.\x20滑动总时长=(拐点数+1)×给定参数\x0a\x0a连续路径:\x0a\x0a采用\x20gesture()\x20方法\x0a将所有坐标作为参数传入\x0a完成一次性不间断滑动\x0a优点:\x0a1.\x20滑动路径不会断开\x0a2.\x20滑动总时长=给定参数\x0a缺点:\x0a1.\x20极易发生拐点偏移现象\x0a2.\x20拐点数及分布极大影响成功率\x0a\x0a*\x20不同策略对应不同\x27滑动时长\x27参数\x0a*\x20推荐优先使用\x27叠加路径\x27策略\x0a--\x20当出现路径断开现象时\x0a--\x20可尝试\x22连续路径\x22策略','about_unlock_dismiss_layer_strategy':'解锁前通常需要上滑提示层页面\x0a然后再输入密码或进行图案解锁\x0a\x0a解锁模块执行逻辑默认会\x0a先判断并处理提示层页面\x0a再判断并处理解锁页面\x0a\x0a优先:\x20上述默认行为\x0a滞后:\x20先判断解锁页面\x0a禁用:\x20只判断解锁页面\x0a\x0a*\x20通常无需修改此项设置','unlock_pattern_swipe_time_segmental':'此参数表示两拐点间滑动时长\x0a并非表示滑动总时间\x0a总时间=(拐点数+1)×此参数\x0a如\x221379\x22包含两个拐点\x0a参数给定为120ms\x0a则总时长=(2+1)×120ms\x0a即360ms\x0a如\x2212369\x22有一个拐点\x0a因此结果为240ms\x0a\x0a*\x20通常无需自行设置\x0a--\x20脚本会自动尝试增量赋值\x0a--\x20以获得最佳值','unlock_pattern_swipe_time_solid':'此参数表示首末点间滑动时长\x0a亦即表示滑动总时间\x0a\x0a*\x20通常无需自行设置\x0a--\x20脚本会自动尝试增量赋值\x0a--\x20以获得最佳值','unlock_pattern_size':'图案解锁通常为\x20N\x20×\x20N\x20的点阵\x0a通常边长\x20N\x20为\x203\x0a\x0a若未使用图案解锁方式\x0a则保留默认值','about_message_showing_function':'控制台消息\x0a\x0a简略:\x20只显示最终收取能量总计数据\x0a详细:\x20显示每个好友收取数据\x0a开发者测试模式:\x20详细显示操作信息\x0a\x0a运行前提示对话框\x0a\x0a息屏或上锁启动时自动跳过:\x0a如果勾选\x20当项目启动时\x0a如果设备处于息屏或未解锁状态\x0a则不会显示对话框而直接运行项目\x0a\x0a运行结果展示\x0a\x0aFloaty:\x20彩色悬浮窗方式\x0aToast:\x20消息浮动框方式\x0a\x0a*\x20Floaty方式会伴随全屏遮罩层\x0a--\x20点击遮罩层可立即结束结果展示\x0a*\x20此方式额外支持显示时长参数配置\x0a*\x20若开启了定时任务信息展示\x0a--\x20点击相应区域可全屏展示\x0a*\x20若开启了版本更新提示展示\x0a--\x20点击相应区域可查看更新\x0a*\x20Toast方式仅仅展示信息\x0a--\x20不支持额外的操作或中断提示\x0a*\x20版本更新提示配置参数与\x0a--\x20自动检查更新页面的\x0a--\x20相关配置参数同步','timers_prefer_auto_unlock':'检测到\x22自动解锁\x22功能未开启\x0a\x0a多数情况下定时任务启动需配合\x0a\x22自动解锁\x22功能才能完成\x0a[\x20亮屏\x20-\x20解锁\x20-\x20执行脚本\x20]\x0a等一系列操作\x0a\x0a建议开启并设置\x22自动解锁\x22功能','timers_countdown_check_timed_task_ahead':'此设置值用于将下次定时任务\x0a运行时间提前\x20n\x20分钟\x0a\x0a设置\x200\x20可关闭提前运行','timers_ahead_prefer_monitor_own':'主页能量球监测未开启\x0a\x0a此情况下提前运行脚本\x0a主页能量球可能没有成熟\x0a因此可能无法收取\x0a\x0a*\x20开启主页能量球监测可在\x0a--\x20能量球成熟前不断检测能量球\x0a--\x20进而保证能量球及时收取\x0a\x0a确定要保留当前设置值吗','timers_ahead_prefer_rank_list_threshold_review':'排行榜样本复查未开启\x0a或最小倒计时阈值复查条件未激活\x0a\x0a此情况下提前运行脚本\x0a排行榜可能没有可收取目标\x0a因此可能无法按时完成收取\x0a\x0a*\x20排行榜样本复查能够在\x0a--\x20目标可收取前不断检测倒计时\x0a--\x20进而保证目标及时收取\x0a\x0a确定要保留当前设置值吗','timers_insurance_interval':'设置值用于当保险任务保留时\x0a下次定时任务启动的时间间隔\x0a\x0a*\x20保险任务在脚本运行时设置\x0a*\x20脚本运行中每10秒钟自动重置间隔\x0a*\x20脚本结束前自动移除所有保险任务','timers_insurance_max_continuous_times':'设置值用于当保险任务连续激活\x0a次数超过一定值时\x0a不再继续自动设置保险任务\x0a避免无人值守时的无限定时循环','about_timers_self_manage':'自动管理:\x0a\x0a脚本根据已设置的机制\x0a自动设置一个定时任务\x0a或自动更新已存在的定时任务\x0a以保证在无人值守条件下\x0a实现定期定时的脚本自启功能\x0a\x0a机制简介:\x0a\x0a1.\x20主页最小倒计时机制\x0a脚本计算出能量成熟最小倒计时\x0a并根据\x22定时任务提前运行\x22参数\x0a得到一个定时时间\x0a如果排行榜最小倒计时机制开启\x0a将会用同样的方法得到定时时间\x0a取两个定时时间的最小值\x0a作为最终的下次任务运行时间\x0a\x0a2.\x20排行榜最小倒计时机制\x0a如上所述\x0a另外若主页没有能量球\x0a而且排行榜也没有倒计时数据\x0a则将无法统计出定时时间\x0a此时将激活\x22延时接力机制\x22\x0a\x0a3.\x20延时接力机制\x0a如上所述\x0a此机制仅在倒计时机制全部关闭或倒计时机制未能统计定时时间时被激活\x0a延时接力机制数据格式为:\x0a[\x20开始时间,\x20结束时间,\x20间隔\x20]\x0a\x0a示例:\x20[\x20\x2206:30\x22,\x20\x2200:00\x22,\x2060\x20]\x0aa.\x20现在时刻\x2014:26\x0a下次运行延时\x2060\x20分钟间隔\x0a14:26\x20+\x2060\x20->\x2015:26\x0ab.\x20现在时刻\x2023:41\x0a下次运行延时至\x2000:00\x0ac.\x20现在时刻\x2002:19\x0a下次运行延时至\x2006:30\x0ad.\x20现在时刻\x2006:11\x0a下次运行延时至\x2006:30\x0a\x0a*\x20延时接力可设置多组数据\x0a--\x20最终取所有组数据的最小值\x0a*\x20脚本将自动处理区间边界数据\x0a--\x20设置数据时无需考虑间隔取整\x0a--\x20当右边界时间小于左边界时\x0a--\x20将视右边界时间为次日时间\x0a--\x20如\x20[\x20\x2219:50\x22,\x20\x2203:00\x22,\x208\x20]\x0a*\x20仅在没有最小倒计时数据时\x0a--\x20此机制才有存在意义\x0a--\x20若开启了最小倒计时机制\x0a--\x20通常无需在能量成熟密集时间\x0a--\x20设置延时接力数据\x0a--\x20如\x20[\x20\x2207:00\x22,\x20\x2207:30\x22,\x201\x20]\x0a--\x20这样的设置是没有必要的\x0a\x0a4.\x20意外保险机制\x0a假设\x22保险任务运行间隔\x22设置值为\x205\x0a脚本运行开始后\x0a将自动设置一个\x205\x20分钟定时任务\x0a当脚本异常停止或被终止时\x0a(包括音量键停止了脚本)\x0a则初期设定的保险定时任务\x0a将在\x205\x20分钟后定时执行\x0a确保脚本定时任务的连续性\x0a\x0a*\x20无论是最小倒计时机制\x0a--\x20还是延时接力机制\x0a--\x20均在脚本即将结束之前设定\x0a--\x20若在此之前脚本异常终止\x0a--\x20则会出现定时任务\x22断档\x22\x0a--\x20这正是此机制存在的主要意义\x0a*\x20若脚本长时间运行还未正常结束\x0a--\x205\x20分钟的定时任务将被激活\x0a--\x20并在任务列表排队等待执行\x0a--\x20此时定时任务依然出现\x22断档\x22\x0a--\x20因此脚本在后台每\x2010\x20秒钟\x0a--\x20会自动延期保险任务\x0a--\x20保证保险任务不会被\x22消耗\x22\x0a*\x20保险任务连续执行次数\x0a--\x20受到\x22最大连续保险次数\x22约束\x0a--\x20达到此限制时将不再设置保险任务\x0a--\x20避免保险任务导致脚本无限循环\x0a\x0a有效时段:\x0a\x0a可使项目在自动设置定时任务时\x0a仅会落在设置的有效时段内\x0a避免在某些时间对用户的干扰\x0a如设置时段\x20[\x2009:00,\x2014:00\x20]\x0a则脚本运行结束前设置定时任务时\x0a不会超出这个范围\x0a举三种情况的例子\x0a分别表示不同的定时任务运行时间\x0a1.\x2009:30\x0a正常制定任务\x0a因为\x2009:30\x20落在时段范围内\x0a2.\x2015:20\x0a制定第二天\x2009:00\x20的任务\x0a3.\x2007:10\x0a制定当天\x2009:00\x20的任务\x0a如果时段结束值大于等于起始值\x0a同延时接力机制一样\x0a则将结束值视为第二天的时间点\x0a例如设置\x20[\x2021:00,\x2007:45\x20]\x0a则表示晚\x209\x20点到次日\x2007:45\x0a晚\x2023\x20点和早\x206\x20点都在范围内\x0a而上午\x2011\x20点则不在上述范围\x0a注意区分\x20[\x2007:45,\x2021:00\x20]\x0a如有多个时段将做并集处理\x0a如果设置了一个\x2024\x20小时区间\x0a则时段管理将失去意义\x0a如\x20[\x2005:23,\x2005:23\x20]\x0a等同于\x22全天有效\x22的效果','max_running_time_global':'设置值用于脚本单次运行\x0a可消耗的最大时间\x0a避免无人值守时的无响应情况','max_queue_time_global':'当旧排他性任务运行或排队时\x0a新排他性任务将继续排队\x0a排队时间与排他性任务总数相关\x0a\x0a*\x20当排队时间达到阈值时将强制结束\x0a--\x20当前正在运行的排他性任务\x0a*\x20设置过小的值可能在脚本\x0a--\x20正常结束前被意外终止','min_bomb_interval_global':'若当前脚本与最近一个正在运行的蚂蚁森林脚本的运行时间差小于此阈值\x0a则视当前脚本为炸弹脚本\x0a炸弹脚本将自动强制停止\x0a此安全设置通常针对因某些原因短时间内运行大量相同脚本的意外情况','about_kill_when_done':'此设置用于决定脚本结束时\x0a保留或关闭支付宝应用\x0a\x0a关闭总开关后将在脚本结束时\x0a无条件关闭支付宝应用\x0a\x0a支付宝应用保留:\x0a智能保留:\x0a脚本运行时检测当前前置应用\x0a根据前置应用是否是支付宝\x0a决定保留或关闭操作\x0a总是保留:\x0a无条件保留支付宝应用\x0a\x0a蚂蚁森林页面保留:\x0a智能剔除:\x0a脚本将自动关闭与蚂蚁森林项目相关的全部页面\x0a如蚂蚁森林主页/排行榜页面等\x0a最终回归到脚本启动前的支付宝页面\x0a全部保留:\x0a无条件保留项目运行中的所有页面\x0a除非支付宝应用被触发关闭\x0a\x0a*\x20关闭应用优先使用杀死应用方式\x0a--\x20杀死应用需要\x20Root\x20权限\x0a--\x20无\x20Root\x20权限将尝试最小化应用\x0a--\x20最小化原理并非模拟\x20Home\x20键\x0a*\x20\x27智能保留\x27的智能化程度十分有限','backup_to_local':'此功能将项目相关文件打包保存在本地\x0a可在还原页面恢复或删除已存在的备份','restore_project_confirm':'确定还原此版本项目吗\x0a本地项目将被覆盖\x0a此操作无法撤销\x0a\x0a还原后建议重启配置工具','v1_6_25_restore_confirm':'此版本过于陈旧\x0a不建议还原此版本\x0a\x0a还原后将丢失以下全部功能:\x0a1.\x20项目更新功能\x0a2.\x20项目备份还原功能\x0a3.\x20解锁模块的高效稳定性\x0a4.\x20解锁模块的开发者测试模式\x0a5.\x20重要的工具函数\x0a\x0a缺少工具函数将导致项目无法运行','rank_list_swipe_time':'通常无需自行设置\x0a若出现滑动异常现象\x0a可尝试适当增大此设置值','rank_list_swipe_interval':'若出现遗漏目标的情况\x0a可尝试适当增大此设置值','rank_list_scroll_interval':'若出现遗漏目标的情况\x0a可尝试适当增大此设置值','rank_list_capt_pool_diff_check_threshold':'排行榜滑动前后截图样本相同时\x0a脚本认为滑动无效\x20并进行无效次数统计\x20当连续无效次数达到阈值时\x20将放弃滑动并结束好友能量检查\x0a\x0a达阈值时\x20脚本会判断\x22服务器打瞌睡\x22页面及\x22正在加载\x22按钮\x20根据实际情况点击\x22再试一次\x22或等待\x22正在加载\x22按钮消失\x20(最大等待2分钟)\x0a\x0a*\x20此参数主要避免因意外情况导致当前页面不在排行榜页面时的无限滑动\x0a*\x20截图样本相同指:\x20相似度极高','rank_list_max_not_targeted_times':'排行榜每滑动一次\x0a若当前页面没有好友\x0a则记录一次无目标命中次数\x0a当达到最大阈值时则停止排行榜检查\x0a*\x20此参数主要避免因意外情况导致在某一页面的无限滑动','about_rank_list_review':'样本复查:\x0a\x0a排行榜列表到达底部后\x0a由复查条件决定是否重新检查排行榜\x0a进而达到循环监测的目的\x0a\x0a列表到达底部后\x0a脚本会统计记录列表所有好友数据\x0a包括倒计时数据及对应好友昵称\x0a\x0a复查条件:\x0a\x0a1.\x20列表状态差异:\x0a比较上一次统计的昵称数据\x0a只要昵称数据不一致\x0a则触发复查条件\x0a脚本将复查列表并重新比较数据\x0a直到最近两次昵称数据完全一致\x0a\x0a*\x20因至少需要两组比较数据\x0a--\x20所以列表至少会复查一次\x0a*\x20即便这样会导致额外的操作\x0a--\x20此条件依然是循环检测的利器\x0a--\x20用户可自行斟酌保留与否\x0a\x0a2.\x20样本点击记录:\x0a在一次完整的列表滑动过程中\x0a只要出现了有效点击行为\x0a则触发复查条件\x0a\x0a3.\x20最小倒计时阈值:\x0a统计最小成熟倒计时\x0a如果达到设定阈值\x0a则触发复查条件\x0a\x0a*\x20有效点击指进入好友森林后\x0a--\x20点击过可收取的能量球','stroll_btn_locate_main_color':'参数用于配置多点取色方式\x0a定位逛一逛按钮时的基准色值','stroll_btn_match_threshold':'参数用于配置多点取色方式\x0a定位逛一逛按钮时的匹配阈值','max_continuous_not_targeted_stroll_cycle':'参数用于防止逛一逛策略\x0a在采集过程中遇到无操作好友\x0a可能引起的无限循环\x0a\x0a无操作情况举例:\x0a·\x20好友位于自定义黑名单\x0a·\x20好友使用能量保护罩\x0a·\x20好友能量球采集失败\x0a·\x20好友能量球点击失败\x0a·\x20好友能量球被他人收取\x0a·\x20用户关闭了相关功能\x0a','about_collectable_samples':'排行榜列表\x20(默认策略):\x0a从排行榜遍历可操作目标\x0a优点:\x0a1.\x20方案成熟且不易出现目标遗漏\x0a2.\x20获取倒计时数据无需额外耗时\x0a缺点:\x0a1.\x20采集效率受好友数量影响较大\x0a2.\x20差异样本池消耗较多硬件资源\x0a3.\x20需要频繁进出排行榜页面\x0a\x0a逛一逛按钮:\x0a直接使用官方提供的快捷按钮\x0a优点:\x0a1.\x20采集效率高/不受好友数量影响\x0a2.\x20避开排行榜的所有潜在问题\x0a3.\x20无需考虑循环遍历条件\x0a缺点:\x0a1.\x20按钮定位判断条件可信度低\x0a2.\x20结束页面判断条件可信度低\x0a3.\x20过程可操控性/可预见性低\x0a4.\x20获取倒计时数据依赖排行榜\x0a5.\x20一定概率出现可操作目标遗漏\x0a\x0a注意:\x0a当逛一逛按钮方案出现异常时\x0a脚本将自动在当前会话过程中\x0a切换至\x22排行榜列表\x22采集策略','restore_from_local':'确定还原此备份吗\x0a本地项目将被覆盖\x0a此操作无法撤销\x0a\x0a还原后建议重启配置工具','restore_original_list_data':'要恢复本次会话开始前的列表数据吗\x0a\x0a此操作不可撤销','add_friend_nickname_manually':'手动添加易出错\x0a且难以键入特殊字符\x0a建议使用列表导入功能','phone_call_state_idle_value':'当设备当前通话状态值\x0a与空闲状态值不一致时\x0a将触发通话状态事件\x0a脚本将持续等待\x0a直到通话状态变为空闲\x0a\x0a*\x20事件解除后\x0a--\x20脚本将执行一次支付宝前置操作\x0a*\x20不同设备的通话空闲状态值\x0a--\x20可能存在差异','phone_call_state_idle_value_warn':'输入值与当前通话空闲值不一致\x0a此配置将导致脚本无法正常运行\x0a\x0a确定要使用当前输入值吗','rank_list_bottom_template_hint_base':'排行榜\x22没有更多了\x22控件的图片模板\x0a此模板用于排行榜底部判断\x0a\x0a','rank_list_bottom_template_hint_exists':'正常模板应包含\x22没有更多了\x22字样\x0a查看模板后若发现图片模板存在异常\x0a可选择删除模板\x0a模板删除后\x0a脚本在下次运行时将自动生成新模板','rank_list_bottom_template_hint_not_exists':'当前暂未生成图片模板\x0a脚本在下次运行时将自动生成新模板','about_root_access_functions':'当Auto.js被授予Root权限时\x0a可通过Root权限实现功能升级\x0a如可以直接模拟按键实现快速关屏\x0a或通过adb命令直接杀死应用进程\x0a\x0a即便Auto.js未获取Root权限\x0a用户依然可以进行功能参数配置\x0a此时所有开启的功能均无法生效\x0a脚本在运行过程中将做平稳退化\x0a\x0a注意:\x0aRoot权限关闭应用时\x0a可能出现几秒钟的黑屏现象\x0a此时Toast及Floaty消息会出现阻塞\x0a因此可能影响运行结果展示的效果','about_auto_enable_a11y_svc':'通过修改系统无障碍服务的列表参数\x0a实现Auto.js无障碍服务的自动开启\x0a此过程需要授予Auto.js以下权限:\x0a\x0aWRITE_SECURE_SETTINGS\x0a\x0a如果设备已经获取Root权限\x0a脚本将自动完成上述所需权限的授权\x0a否则需要将手机连接到计算机\x0a然后在计算机使用ADB工具\x0a执行以下指令(无换行):\x0a\x0aadb\x20shell\x20pm\x20grant\x20org.autojs.autojs\x20android.permission.WRITE_SECURE_SETTINGS\x0a\x0a执行后Auto.js将获取上述权限\x0a如需撤销授权需将上述指令的\x0agrant替换为revoke\x0a\x0a注:\x20如果没有权限授权\x0a脚本则会在需要的时候\x0a提示用户手动开启无障碍服务\x0a\x0a*\x20参数默认值:\x20禁用自动启动','about_app_launch_springboard':'某些设备或应用无法直接调用\x20APP\x0a如\x20launch()\x20或\x20startActivity()\x20等\x0a需先调用\x20Auto.js\x20再调用指定\x20APP\x0a当脚本运行结束时\x0a可自动关闭调用过的\x20Auto.js\x20页面\x0a以实现跳板的无痕特性\x0a\x0a*\x20参数默认值:\x20关闭跳板\x0a*\x20无痕特性以跳板页面暴露为前提','about_timed_task_type':'一次性任务执行后将自动失效\x0a每日/每周任务将按日/按周循环执行\x0a\x0a注意:\x0a1.\x20定时任务自动管理功能往往可以\x0a--\x20完成绝大多数定时任务需求\x0a--\x20因此不建议设置过多或\x0a--\x20过于繁杂的手动定时任务\x0a2.\x20也可以使用\x20Auto.js\x20自带的\x0a--\x20定时任务管理功能\x0a--\x20但涉及月份设置或修改时很可能\x0a--\x20会出现\x201\x20个月的偏差问题','delete_min_countdown_task_warn':'正在删除最小倒计时任务\x0a\x0a最小倒计时任务是\x0a定时任务自动管理功能的精髓\x0a除非已确定此任务的异常性\x0a否则强烈不建议删除此任务\x0a\x0a确定要删除最小倒计时任务吗','prompt_before_running_countdown_seconds':'倒计时结束前\x0a用户可自主点击按钮执行相应操作\x0a否则倒计时超时后脚本将自动执行','about_aj_global_log_page':'本地日志功能将Auto.js生成的\x0a所有控制台日志写入文件\x0a包括蚂蚁森林项目及其他所有脚本\x0a同样当关闭此功能时\x0a将停止所有脚本日志的本地写入\x0a\x0aAuto.js因崩溃等原因重启时\x0a本地日志写入功能将失效\x0a但原有的本地日志依然保留\x0a仅仅是停止继续写入\x0a此时运行蚂蚁森林项目\x0a若本地日志写入功能开关开启\x0a将自动重新激活本地日志的写入功能\x0a\x0a功能核心代码:\x0aconsole.setGlobalLogConfig','about_eballs_recognition':'能量球的识别基于霍夫变换\x0a关键参数如下:\x0a\x20\x20\x20\x20image:\x20%img%\x0a\x20\x20\x20\x20dp:\x201\x0a\x20\x20\x20\x20minDist:\x20cX(0.09)\x20(可配置)\x0a\x20\x20\x20\x20minRadius:\x20cX(0.054)\x0a\x20\x20\x20\x20maxRadius:\x20cX(0.078)\x0a\x20\x20\x20\x20param1:\x2015\x0a\x20\x20\x20\x20param2:\x2015\x0a可参阅\x20__image__.js\x20封装模块\x0a内部的\x20images.findCircles()\x20方法\x0a\x0a上述的\x20%img%\x20传入参数有以下策略:\x0a1.\x20灰度化\x0a基本的图像处理策略\x0a霍夫变换必须传入\x208\x20位单通道灰度图像\x0a2.\x20自适应阈值\x0a根据像素的邻域块的像素值分布\x0a确定该像素位置上的二值化阈值\x0a3.\x20中值滤波\x20&\x204.\x20均值滤波\x0a均值滤波和中值滤波都可以平滑图像并虑去噪声\x0a均值滤波采用线性方法对目标像素及周边像素取平均值后再填充目标像素\x0a中值滤波采用非线性方法使用所有像素中值替代中心位置像素值\x0a5.\x20双边滤波\x0a双边滤波是一种非线性滤波方法\x0a结合图像的空间邻近度和像素值相似度的一种折衷处理\x0a同时考虑空域信息和灰度相似性达到保边去噪的目的\x0a\x0a由于双边滤波耗时相对较长\x0a且识别结果准确率也未见明显优势\x0a因此不建议开启双边滤波策略\x0a除非对识别率有极高的要求或用于测试或关闭了\x202,3,4\x20策略仅保留\x201,5\x20等情况\x0a但依然不建议\x201,5\x20这样的策略组合\x0a\x0a通过霍夫变换得到页面的圆形样本后\x0a样本会按照横坐标升序排序\x0a排序后可对样本数据做进一步处理:\x0a1.\x20覆盖检测\x0a如果相邻两个圆形的圆心间距过小\x0a则认为样本重复并将后一个样本去除\x0a2.\x20对称检测\x0a对于所有样本的最左和最右两个样本\x0a如果做中轴镜像后不满足最小球间距\x0a则认为对方位置能量球缺失\x20并会做能量球补算填充\x0a3.\x20线性插值\x0a计算所有球的最小间距作为参考值\x0a如果检测到有相邻两个能量球间距大于这个参考值的某个倍数\x20则会做插值处理\x20可能插入\x201\x20个或多个能量球\x0a\x0a数据处理示例:\x0a森林页面最多可展示\x206\x20个能量球\x0a将这些球大概位置记为\x201,\x202...\x206\x0a以下示例仅针对线性插值和对称检测\x0a示例\x201:\x0a能量球\x201\x20个\x20位于\x203\x20号位置偏右\x0a识别到的能量球位置\x203\x0a对称检测不生效\x0a线性插值不生效\x0a结果:\x203\x20(正确)\x0a示例\x202:\x0a能量球\x202\x20个\x20位于\x203,4\x0a识别到的能量球位置\x204\x0a即遗漏了\x203\x20号位置的球\x0a对称检测生效\x0a由\x204\x20做镜像后补充\x0a线性插值不生效\x0a结果:\x203,4\x20(正确)\x0a示例\x203:\x0a能量球\x206\x20个\x20位于\x201,2,3,4,5,6\x0a识别到的能量球位置\x201,5,6\x0a即遗漏了\x202,3,4\x20位置的球\x0a对称检测不生效\x0a因为\x201\x20和\x206\x20镜像后不需补充\x0a线性插值生效\x0a5\x20和\x206\x20的间距作为参考\x0a会将\x201\x20与\x204\x20之间插入\x202\x20个球\x0a结果:\x201,2,3,4,5,6\x20(正确)\x0a示例\x204:\x0a能量球\x205\x20个\x20位置如下:\x0a1,\x202偏右,\x20居中,\x205偏左,\x206\x0a为方便阅读\x20将位置记为\x20A,B,C,D,E\x0aA,E\x20对称\x20\x20B,D\x20对称\x20\x20C\x20居中\x0a识别到的能量球位置\x20A,C,E\x0a即遗漏了\x20B,D\x20位置的球\x0a对称检测不生效\x0a因为\x20A\x20和\x20E\x20镜像后不需补充\x0a线性插值不生效\x0aA,C\x20和\x20C,E\x20的间距几乎相同\x0a因此无需插值\x0a结果:\x20A,C,E\x20(错误)\x0a如果上述情况的识别结果为\x20A,D,E\x0a则与示例\x203\x20类似\x0a最终将识别到正确结果:\x20A,B,C,D,E','update_ignore_confirm':'确定要忽略当前版本吗\x0a\x0a*\x20忽略后脚本将不再提示当前版本更新\x0a*\x20忽略后可在配置工具中管理已忽略的所有版本','about_update_auto_check':'自动检查更新功能可在不同场景\x0a进行版本更新的提示\x0a\x0a*\x20注意:\x20此功能不会自动下载更新\x0a\x0a更新提示场景:\x0a\x0a1.\x20运行结果展示时\x0a当\x22运行结果展示\x22功能生效时\x0a可同时展示版本更新提示\x0a包括Floaty或Toast方式\x0a\x0a2.\x20配置工具启动时\x0a在配置工具启动后\x0a脚本会在后台检查项目更新\x0a发现更新后以SnackBar方式提示\x0a\x0a版本忽略管理:\x0a\x0a对于不希望提示更新的版本\x0a可添加至忽略列表中\x0a例1:\x20当前版本为v2.0.1\x0a服务器最新版本为v2.0.2\x0a将v2.0.2添加至忽略列表中\x0a则脚本将不会提示项目有更新\x0a例2:\x20当前版本为v2.0.1\x0a服务器最新版本为v2.0.4\x0a将v2.0.4添加至忽略列表中\x0a则脚本将会提示项目有更新\x0a且最新版本为v2.0.3\x0a此时如果再将v2.0.3添加至列表\x0a则脚本依然会提示项目有更新\x0a且最新版本为v2.0.2\x0a','about_rank_list_scan_strategy':'控件滚动:\x0a基于排行榜可滚动控件的\x0a无障碍行为实现列表滚动\x0a优点:\x0a1.\x20滚动效率非常高\x0a2.\x20无需关心滚动距离\x0a3.\x20全平台无惯性滚动\x0a缺点:\x0a1.\x20依赖控件\x0a2.\x20定位唯一性可能不够严谨\x0a\x0a模拟滑动:\x0a基于辅助服务的\x0a无障碍行为实现列表滑动\x0a优点:\x0a1.\x20可定义滑动距离及时长\x0a2.\x20不依赖排行榜控件\x0a缺点:\x0a1.\x20某些平台可能出现惯性滑动','about_rank_list_scroll_distance':'采用\x22控件滑动\x22策略时\x0a无法指定滑动距离\x0a由\x22无障碍行为\x22实现基于控件的滚动','about_rank_list_scroll_time':'采用\x22控件滑动\x22策略时\x0a无法指定滑动时长\x0a由\x22无障碍行为\x22决定控件的滚动时长','about_memory_info':'System\x20Memory:\x20系统内存\x0a剩余内存\x20|\x20总内存\x20|\x20使用率\x0a\x0aRuntime\x20Heap:\x20JVM堆内存\x0aJVM总内存-JVM空闲内存\x20|\x20JVM可用最大内存\x20|\x20使用率\x0a\x0aProcess\x20Heap:\x20进程堆内存\x0a\x27summary.java-heap\x27\x20|\x20JVM可用最大内存\x20|\x20使用率\x0a\x0aPSS\x20(Proportional\x20Set\x20Size):\x20实际使用的物理内存\x20(比例分配共享库占用的内存)\x0aUSS\x20(Unique\x20Set\x20Size):\x20进程独自占用的物理内存\x20(不包含共享库占用的内存)\x0a\x0a*\x20JVM堆内存会定期回收\x0a*\x20进程堆内存更新频率较慢\x0a*\x20当任意内存使用率超过90%时建议重启进程\x0a\x0a*\x20相关内存信息对应的伪代码\x0a\x0aActivityManager.MemoryInfo\x20>\x20totalMem\x20-\x20系统总内存\x0aActivityManager.MemoryInfo\x20>\x20availMem\x20-\x20系统剩余内存\x0a\x0aRuntime\x20>\x20totalMemory()\x20-\x20JVM总内存\x0aRuntime\x20>\x20freeMemory()\x20-\x20JVM空闲内存\x0aRuntime\x20>\x20maxMemory()\x20-\x20JVM可用最大内存\x0a\x0aDebug.MemoryInfo\x20>\x20getTotalSharedDirty()\x0a-\x20RSS\x20(Resident\x20Set\x20Size)\x20-\x20实际使用物理内存\x20(包含共享库占用的内存)\x0aDebug.MemoryInfo\x20>\x20getTotalPss()\x0a-\x20PSS\x20(Proportional\x20Set\x20Size)\x20-\x20实际使用的物理内存\x20(比例分配共享库占用的内存)\x0aDebug.MemoryInfo\x20>\x20getTotalPrivateDirty()\x0a-\x20USS\x20(Unique\x20Set\x20Size)\x20-\x20进程独自占用的物理内存\x20(不包含共享库占用的内存)','about_process_restart':'脚本调用如下代码片段杀死当前应用活动进程:\x0aProcess.killProcess(Process.myPid());\x0a\x0a此操作将清理进程内所有资源\x0a由于ActivityManager时刻监听进程\x0a一旦发现进程非正常结束\x0a它将试图重启此进程\x0a进而实现进程的自动重启'};},724:(V,Y,Z)=>{let {$$impeded:n,$$str:r,$$num:s,$$rex:o,isPlainObject:a,isNullish:l,isNonEmptyObject:c,$$sleep:u,requirex:p,$$toast:h}=Z(0x11e),{consolex:_}=Z(0x2d5),a0=android['provider']['Settings'],a1=a0['Secure'],a2=android['graphics']['Rect'],a3=org['opencv']['core']['Point'],a4=android['content']['Intent'],a5=com['stardust']['automator']['UiObject'],a6=com['stardust']['autojs']['core']['accessibility']['UiSelector'],a7=com['stardust']['autojs']['core']['accessibility']['AccessibilityService'],a8=android['view']['accessibility']['AccessibilityWindowInfo'],a9={'ctx_reso':context['getContentResolver'](),'autojs_a11y_svc_name':context['getPackageName']()+'/'+new a7()['getClass']()['getName'](),get 'sel'(){return this['selector']=this['selector']||aa['selector']();},'parseArgs'(V){let Y=[this['autojs_a11y_svc_name']],Z=!0x1,ae=typeof V[0x0];return'undefined'!==ae&&(Array['isArray'](ae)?(Y=V[0x0],Z=!!V[0x1]):'string'===ae?(Y=[V[0x0]],Z=!!V[0x1]):'boolean'===ae&&(Z=V[0x0])),{'forcible':Z,'svc':Y};},'getString'(){return a1['getString'](this['ctx_reso'],a1['ENABLED_ACCESSIBILITY_SERVICES'])||'';},'tryEnableAndRestart'(){if(aa['enable'](!0x0)){let {enginesx:V}=p('ext-engines');_['$'](['已自动开启无障碍服务','尝试一次项目重启操作'],0x1,0x0,0x0,0x2),V['restart']({'is_debug':!0x0,'is_instant_running':!0x1,'max_restart_e_times':0x1}),sleep(0x1068),exit();}}},aa={'bridge':{'setWindowFilter'(V){auto['setWindowFilter'](function(Y){try{return V(Y);}catch(ai){return!0x1;}});},'setWindowBlacklist'(V){this['setWindowFilter'](Y=>!V['includes'](Y['getRoot']()['getPackageName']()));},'setWindowWhitelist'(V){this['setWindowFilter'](Y=>V['includes'](Y['getRoot']()['getPackageName']()));},'setWindowAllowAll'(){this['setWindowFilter'](()=>!0x0);},'resetWindowFilter'(){this['setWindowFilter'](V=>this['isWindowType'](V,'APPLICATION')||this['isWindowType'](V,'SYSTEM')&&V['isActive']());},'isWindowType'(V,Y){if('number'==typeof Y)return Y===V['getType']();let Z=String(Y)['toUpperCase']();if(!(Z in{'APPLICATION':0x1,'INPUT_METHOD':0x2,'SYSTEM':0x3,'ACCESSIBILITY_OVERLAY':0x4,'SPLIT_SCREEN_DIVIDER':0x5}))throw TypeError('Unknown\x20type\x20of\x20\x22type\x22\x20for\x20isWindowType()');return a8['TYPE_'+Z]===V['getType']();}},'service':{'refreshServiceInfo'(){auto['service']['setServiceInfo'](auto['service']['getServiceInfo']());}},'click$'(){return(this['_click$']=this['_click$']||n['detach'](this['click'],0x2))['apply'](this,arguments);},'wait$'(){return(this['_wait$']=this['_wait$']||n['detach'](this['wait'],0x3))['apply'](this,arguments);},'swipe$'(){return(this['_swipe$']=this['_swipe$']||n['detach'](this['swipe'],0x3))['apply'](this,arguments);},'enable'(){try{let V,{forcible:Y,svc:Z}=a9['parseArgs'](arguments);if(this['state'](Z)?Y&&(V=this['enabled_svc']):V=this['enabled_svc']['split'](':')['filter'](V=>!Z['includes'](V))['concat'](Z)['join'](':'),V){a1['putString'](a9['ctx_reso'],a1['ENABLED_ACCESSIBILITY_SERVICES'],V),a1['putInt'](a9['ctx_reso'],a1['ACCESSIBILITY_ENABLED'],0x1);let Y=Date['now']();for(;Date['now']()-Y<0x7d0;){if(this['state'](Z))return!0x0;sleep(0xb4);}_['$']('Operation\x20timed\x20out',0x4,0x1);}return!0x0;}catch(au){return!0x1;}},'disable'(){try{let V=arguments[0x0];if(r(V)&&'all'===V['toLowerCase']())return a1['putString'](a9['ctx_reso'],a1['ENABLED_ACCESSIBILITY_SERVICES'],''),a1['putInt'](a9['ctx_reso'],a1['ACCESSIBILITY_ENABLED'],0x1),!0x0;let Y,{forcible:Z,svc:n}=a9['parseArgs'](arguments),ax=a9['getString'](),ay=function(){for(let V=0x0,Y=n['length'];V!n['includes'](V))['join'](':'):Z&&(Y=ax),Y){a1['putString'](a9['ctx_reso'],a1['ENABLED_ACCESSIBILITY_SERVICES'],Y),a1['putInt'](a9['ctx_reso'],a1['ACCESSIBILITY_ENABLED'],0x1),ax=a9['getString']();let V=Date['now']();for(;Date['now']()-V<0x7d0;){if(!ay())return!0x0;sleep(0xb4);}_['$']('Operation\x20timed\x20out',0x4,0x1);}return!0x0;}catch(aD){return!0x1;}},'restart'(){return this['disable']['apply'](this,arguments)&&this['enable']['apply'](this,arguments);},'state'(V){let Y=this['enabled_svc']=a9['getString'](),Z=[];if(Array['isArray'](V))Z=V['slice']();else if(void 0x0===V)Z=[a9['autojs_a11y_svc_name']];else{if('string'!=typeof V)throw TypeError('Unknown\x20a11y\x20state\x20type');Z=[V];}return Z['every'](V=>Y['includes'](V));},'services':()=>a9['getString']()['split'](':')['filter'](V=>!!V),'test'(){let V='%rand%'+Date['now']()+Math['random']()['toFixed'](0x9);return this['enable'](V,!0x0),this['disable'](V,!0x0);},'selector'(){let V={'sel_body_pool':{},'cache_pool':{}},Y={'pickup'(V,Y,aO){let aP={'loc_keys_abbr':{'bi$':'boundsInside','c$':'clickable','cn$':'className'},'options':aO||{},get 'res_type'(){return this['_res_type']=this['_res_type']||this['getResultType'](Y);},get 'locator'(){return this['_locator']||null;},get 'widget'(){return this['_widget']||null;},get 'widget_collection'(){return this['_wc']||[];},get 'selector'(){return this['_selector']||null;},'tools':{'uiObject2Point':V=>V instanceof a5?new a3(V['bounds']()['centerX'](),V['bounds']()['centerY']()):null,'wrapStrByOptDef':V=>!V&&'default'in aP['options']?aP['options']['default']:V,'isArrResType':()=>/^(widgets|points)$/['test'](aP['res_type']),'isCompass':V=>'string'==typeof V&&/([pck]\d*)+/['test'](V)},'refreshSvcInfoIFN'(){this['options']['refresh']&&aa['service']['refreshServiceInfo']();},'parseRawLocator'(){let Y,Z,aO=V;if(Array['isArray'](aO)){let V=aO['slice']();this['tools']['isCompass'](V[V['length']-0x1])&&(Z=V['pop']()),[aO,Y]=V;}let aX=this['setUniqueLocator'](aO,Y);aX instanceof a6?(this['_selector']=aX,this['_widget']=this['getWidgetByCompass'](aX['findOnce'](),Z),this['tools']['isArrResType']()&&(this['_wc']=aX['find']()['toArray']())):aX instanceof a5&&(this['_selector']=null,this['_widget']=this['getWidgetByCompass'](aX,Z),this['tools']['isArrResType']()&&(this['_wc']=[aX]));},'setUniqueLocator'(V,Y){if(V instanceof a6)return this['_locator']=this['assembleSelectors'](V,Y);if(r(V)||s(V)||o(V)){let Z=this['parseTextSelector'](V);return this['_locator']=this['assembleSelectors'](Z,Y);}if(a(V)){let Z=global['selector'](),aO=Object['assign'](V,Y);return this['_locator']=this['assembleSelectors'](Z,aO);}return this['_locator']=V;},'extendLocator'(V,Y,aO){let b6,{$$disp:s}=Z(0x19f),b7={get 'W'(){return'object'==typeof s?s['W']:device['width'];},get 'H'(){return'object'==typeof s?s['H']:device['height'];},'isCenterX'(Y){let Z=Number(Y),aO=!0x0===Y||l(Y)||isNaN(Z)?0.01:!0x1===Y?Y:Z['clamp'](0x0,0.25),b6=V=>Math['abs'](V['bounds']()['centerX']()-this['W']/0x2)<=this['W']*aO;return!0x1!==aO?V['filter'](b6['toRegular']()):V['filter']((V=>!b6(V))['toRegular']());},'isFullScreen'(Y){let Z=Number(Y),aO=!0x0===Y||isNaN(Z)?0.15:!0x1===Y?Y:Z['clamp'](0x0,0.5),b6=V=>V['bounds']()['height']()/this['H']>=0x1-aO&&Math['abs'](V['bounds']()['width']()-this['W'])<=0x4;return!0x1!==aO?V['filter'](b6['toRegular']()):V['filter']((V=>!b6(V))['toRegular']());},'isAlipay'(Y){if(void 0x0===Y)return Y;let Z='.*(Alipay|alipay).*';return Y?V['packageNameMatches'](Z):V['filter']((V=>!V['packageName']()['match'](Z))['toRegular']());}};try{b6=b7[Y]['apply'](b7,aO);}catch(bn){throw console['warn'](bn['message']),Error('Cannot\x20apply\x20extended\x20locator:\x20'+Y);}if(b6 instanceof a6)return b6;throw Error('Extended\x20locator\x20('+Y+')\x20returns\x20non-UiSelector\x20type');},'assembleSelectors'(V,Y){return l(V)||!c(Y)||Object['keys'](Y)['forEach'](Z=>{let aO=Z in this['loc_keys_abbr']?this['loc_keys_abbr'][Z]:Z,bs=V=>'function'==typeof V?V['toRegular']():V,bt=Array['isArray'](Y[Z])?Y[Z]['map'](bs):[Y[Z]]['map'](bs),bu=V[aO];if('function'==typeof bu)try{return V=bu['apply'](V,bt);}catch(bw){throw console['warn'](bw['message']),Error('Cannot\x20apply\x20selector:\x20'+aO);}return V=this['extendLocator'](V,aO,bt);}),V;},'getTextSelector'(V,Y){let Z={'sel':Y['desc'](V),get 'txt'(){let V=this['sel']['findOnce']();return V&&V['desc']()||'';}},aO={'sel':Y['text'](V),get 'txt'(){let V=this['sel']['findOnce']();return V&&V['text']()||'';}},bB=Z['txt']['length'],bC=aO['txt']['length'];if(bB||bC)return bC>bB?aO['sel']:Z['sel'];let bF=Y['id'](V);return bF['exists']()?bF:null;},'parseTextSelector'(V){return V instanceof RegExp?this['getTextSelector'](V,{'desc':descMatches,'text':textMatches,'id':idMatches}):('number'==typeof V&&(V=V['toString']()),'string'==typeof V?this['getTextSelector'](V,{'desc':desc,'text':text,'id':id}):null);},'getWidgetByCompass'(V,Y){if(!(V instanceof a5))return null;if('string'!=typeof Y)return V;for(;Y['length']>0x0;){let Z,aO,bL,bM;if(Z=/^p[p\d]*/['exec'](Y)){let aO=Y['match'](/^p\d+|^p+(?!\d)/g)['reduce']((V,Y)=>V+(/\d/['test'](Y)?Number(Y['slice'](0x1)):Y['length']),0x0);for(;aO--;)if(!(V=V['parent']()))return null;Y=Y['slice'](Z[0x0]['length']);}else if(aO=/^c-?\d+([>c]?-?\d+)*/['exec'](Y)){let Z=aO[0x0]['split'](/[>c]/);for(let Y of Z)if(Y['length']){if(!(V instanceof a5))return null;let Z=V['childCount'](),aO=Number(Y);if(aO<0x0&&(aO+=Z),aO<0x0||aO>=Z)return null;V=V['child'](aO);}Y=Y['slice'](aO[0x0]['length']);}else if(bL=/^s[<>]?-?\d+/['exec'](Y)){let Z=V['parent']();if(!(Z instanceof a5))return null;let aO=V['indexInParent']();if(aO<0x0)return null;let bM=Z['childCount'](),bX=bL[0x0],bY=+bX['match'](/-?\d+/)[0x0];if(bX['includes']('>')?aO+=bY:bX['includes']('<')?aO-=bY:aO=bY<0x0?bY+bM:bY,aO<0x0||aO>=bM)return null;V=Z['child'](aO),Y=Y['slice'](bL[0x0]['length']);}else{if(!(bM=/^k[k\d]*/['exec'](Y)))throw Error('Invalid\x20rest\x20compass\x20for\x20$$sel.pickup():\x20'+Y);{let Z=Y['match'](/^k(\d*)/g)['map'](V=>{let Y=V['match'](/\d+/);return Y?Number(Y[0x0]):0x1;})['reduce']((V,Y)=>V+Y);V=function(){let Y=V;for(;;){if(!(Y instanceof a5))return null;if(Y['clickable']())return Y;if(!Z--)return V;Y=Y['parent']();}}(),Y=Y['slice'](bM[0x0]['length']);}}}return V||null;},'getResultType'(V){let Y=V?String(V):null;return null===Y||Y['match'](/^w(idget)?$/)?'widget':Y['match'](/^(w(idget)?_?c(ollection)?|wid(get)?s)$/)?'widgets':Y['match'](/^t(xt)?$/)?'txt':Y['match'](/^s(el(ector)?)?$/)?'selector':Y['match'](/^e(xist(s)?)?$/)?'exists':Y['match'](/^s(el(ector)?)?(_?s)(tr(ing)?)?$/)?'selector_name':Y['match'](/^p(oin)?ts?$/)?Y['includes']('s')?'points':'point':Y;},'getInternalResult'(){return{'selector':this['selector'],'widget':this['widget'],'widgets':this['widget_collection'],'exists':Boolean(this['widget']),get 'selector_name'(){if(!this['widget']||!this['selector'])return aP['tools']['wrapStrByOptDef']('');let V=this['selector']['toString']()['match'](/[a-z]+/);return aP['tools']['wrapStrByOptDef'](V?V[0x0]:'');},get 'txt'(){let V=this['widget']&&this['widget']['text']()||'',Y=this['widget']&&this['widget']['desc']()||'';return Y['length']>V['length']?aP['tools']['wrapStrByOptDef'](Y):aP['tools']['wrapStrByOptDef'](V);},get 'point'(){return aP['tools']['uiObject2Point'](this['widget']);},get 'points'(){return this['widgets']['map'](aP['tools']['uiObject2Point'])['filter'](V=>null!==V);}}[this['res_type']];},'getResult'(){this['refreshSvcInfoIFN'](),this['parseRawLocator']();let V=function(){let V=this['getInternalResult']();if(void 0x0!==V)return V;if(null===this['widget'])return null;let Y=this['widget'][this['res_type']];return'function'==typeof Y?Y['call'](this['widget']):Y;}['call'](this);return l(V)?'default'in this['options']?this['options']['default']:null:V;}};return aP['getResult']();},'traverse':(V,Z,cg)=>({'parseFilter'(){this['filter']='string'==typeof Z?V=>Y['pickup'](V,Z):'function'==typeof Z?Z:()=>!0x0;},'parseArgs'(){this['parseFilter'](),this['type']=cg||'widget',this['pickup']=Y['pickup']['bind'](Y),this['pickup_null_res']=this['pickup'](null,this['type']);},'traverse'(V){for(let Y of this['pickup'](V,'children',{'default':[]})){if(!(Y instanceof a5))continue;if(this['filter'](Y))return this['pickup'](Y,this['type']);let V=this['traverse'](Y);if(V!==this['pickup_null_res'])return V;}return this['pickup_null_res'];},'getResult'(){return this['parseArgs'](),this['filter'](V)?this['pickup'](V,this['type']):this['traverse'](V);}}['getResult']()),'traverseAll':(V,Z,cn)=>({'results':[],'type':cn||'widget','filter':'string'==typeof Z?V=>Y['pickup'](V,Z):'function'==typeof Z?Z:()=>!0x0,'pickup':Y['pickup']['bind'](Y),'traverse'(V){for(let Y of this['pickup'](V,'children',{'default':[]}))Y instanceof a5&&(this['filter'](Y)&&this['results']['push'](this['pickup'](Y,'widget')),this['traverse'](Y));return this['type']['match'](/^w(idget)?$/)?this['results']:this['results']['map'](V=>this['pickup'](V,this['type']));},'getResult'(){return this['filter'](V)&&this['results']['push'](this['pickup'](V,'widget')),this['traverse'](V);}}['getResult']()),'add'(Y,Z){return V['sel_body_pool'][Y]='function'==typeof Z?V=>Z(V):V=>this['pickup'](Z,V),this;},'get'(Y,Z){let cz=V['sel_body_pool'][Y];if(void 0x0!==cz)return cz?'cache'===Z?V['cache_pool'][Y]=cz('w'):cz(Z):null;throw Error('Key\x20\x22'+Y+'\x22\x20is\x20not\x20in\x20the\x20pool');},'getAndCache'(V){return this['get'](V,'cache');},'cache':{'save'(V){Y['getAndCache'](V);},'load'(Z,cD){let cE=V['cache_pool'][Z];return cE?Y['pickup'](cE,cD):null;},'refresh'(Y){let Z=V['cache_pool'][Y];Z&&Z['refresh'](),this['save'](Y);},'recycle'(Y){let Z=V['cache_pool'][Y];Z&&Z['recycle']();}}};return Object['assign'](Object['create'](global['selector']()),Y);},'enableByRoot'(){try{let V='enabled=$(settings\x20get\x20secure\x20enabled_accessibility_services)\x0apkg='+a9['autojs_a11y_svc_name']+'\x0aif\x20[[\x20$enabled\x20!=\x20*$pkg*\x20]]\x0athen\x0aenabled=$pkg:$enabled\x0asettings\x20put\x20secure\x20enabled_accessibility_services\x20$enabled\x0afi\x0asettings\x20put\x20secure\x20accessibility_enabled\x201';return 0x0===shell(V,!0x0)['code'];}catch(cK){return!0x1;}},'enableByRootAndWaitFor'(V){return this['enableByRoot']()&&a7['Companion']['waitForEnabled'](V||0x3e8);},'goToAccessibilitySetting'(){context['startActivity'](new a4(a0['ACTION_ACCESSIBILITY_SETTINGS'])['addFlags'](a4['FLAG_ACTIVITY_NEW_TASK']));},'waitForEnabled'(V){return threads['start'](function(){auto['waitFor']();})['join'](V||0xea60),this['state']()||_['$']('等待用户开启无障碍服务超时',0x8,0x2,0x0,0x2);},'isAutoEnableEnabled'(){try{let {storagesx:V}=p('ext-storages');return'ON'===V['create']('af_cfg')['get']('config',{'prop':'auto_enable_a11y_svc'});}catch(cN){return!0x1;}},'autoEnable'(V){if(this['state']())return!0x0;let Y=V||{},Z=Y['is_essential'],cR=Y['is_manual_disallowed'];if(!this['isAutoEnableEnabled']()){if(!Z)return _['_']('自动开启无障碍服务未启用',0x3),!0x1;_['$']('无障碍服务关闭且自动启用未开启',0x8,0x2,0x0,0x2);}let cS=context['getPackageName']()+'\x20android.permission.WRITE_SECURE_SETTINGS';return'undefined'!=typeof activity?(this['enable'](!0x0)?h('已自动启用无障碍服务\x0a需要重新运行当前脚本','long'):Z&&_['$']('自动启用无障碍服务失败',0x4,0x2,0x0,0x2),exit(),!0x1):(a9['tryEnableAndRestart'](),function(){try{return 0x0===shell('date',!0x0)['code'];}catch(cT){return!0x1;}}()&&(shell('pm\x20grant\x20'+cS,!0x0),a9['tryEnableAndRestart']()),function(){if(_['$']('自动启用无障碍服务失败',0x4,0x2,0x0,-0x1),context['checkCallingOrSelfPermission'](android['Manifest']['permission']['WRITE_SECURE_SETTINGS'])!==android['content']['pm']['PackageManager']['PERMISSION_GRANTED']){let V='adb\x20shell\x20pm\x20grant\x20'+cS;_['$']('Auto.js缺少以下权限:',0x4,0x0,0x0,-0x1),_['$']('WRITE_SECURE_SETTINGS',0x4,0x0,0x0,0x1),_['$']('可尝试使用ADB工具连接手机',0x3),_['$']('并执行以下Shell指令(无换行):\x0a\x0a'+V+'\x0a',0x3),_['$']('Shell指令已复制到剪切板',0x3),_['$']('重启设备后授权不会失效',0x3),setClip(V);}_['__']();}(),Z&&cR&&exit(),this['waitForEnabled']());},'ensureService'(){this['autoEnable']({'is_essential':!0x0});},'ensureFunctionality'(){if('undefined'==typeof activity){let V=0x18;for(;!press(0x5f5e100,0x0,0x1)&&V--;)sleep(0x32);V<0x0&&(_['$']('无障碍服务状态异常',0x4,0x0,0x0,-0x1),_['$']('或基于服务的方法无法使用',0x4,0x0,0x0,0x1),_['$']('可尝试以下解决方案',0x3),_['$']('卸载并重新安装\x22Auto.js\x22',0x3,0x0,0x1),_['$']('安装后重启设备',0x3,0x0,0x1),_['$']('运行\x22Auto.js\x22并拉出侧边栏',0x3,0x0,0x1),_['$']('开启无障碍服务',0x3,0x0,0x1),_['$']('再次尝试运行本项目',0x3,0x0,0x1),_['$']('无障碍服务功能异常',0x8,0x2,0x0,0x2));}},'ensureSvcAndFunc'(){this['ensureService'](),this['ensureFunctionality']();},'click'(V,Y,Z){return a(Y)?this['click'](V,'widget',Y):!l(V)&&{'container':[],'options':Z||{},'wait':aa['wait']['bind'](aa),'pickup':a9['sel']['pickup']['bind'](a9['sel']),'impededIFN'(){this['options']['no_impeded']||'function'==typeof n&&n('a11yx.click');},'parsePadding'(){let V=this['options']['padding'];if(!V)return this['padding']={'x':0x0,'y':0x0};if('number'==typeof V)V=[0x0,V];else if(!Array['isArray'](V))throw Error('Invalid\x20paddings\x20for\x20a11yx.click()');let Y=function(){if(0x1===V['length'])return[0x0,V[0x0]];if(0x2===V['length']){let [Y,Z]=V;return'x'===Y?[Z,0x0]:'y'===Y?[0x0,Z]:[Y,Z];}throw Error('Invalid\x20paddings\x20amount\x20for\x20a11yx.click()');}(),[Z,d4]=Y['map'](V=>Number(V));if(isNaN(Z)||isNaN(d4))throw Error('Invalid\x20paddings\x20calc\x20results\x20for\x20a11yx.click()');this['padding']={'x':Z,'y':d4};},'parseStrategy'(){let V=this['options']['strategy']||this['options']['click_strategy']||this['options']['cs$']||Y||'widget';this['strategy']='string'==typeof V?V:String(this['strategy']);},'parseCondition'(){this['condition']=function(){let Y=this['options']['condition'];if('function'==typeof Y)return Y;if('disappear'===Y)return()=>this['checkDisappearance'](V);if(l(Y))return()=>!0x0;throw Error('Invalid\x20condition\x20for\x20a11yx.click():\x20'+Y);}['call'](this);},'parseArgs'(){this['parsePadding'](),this['parseStrategy'](),this['parseCondition'](),this['times']=this['options']['max_check_times']||0x3,this['timeout']=this['options']['check_time_once']||0x1f4,this['press_time']=this['options']['press_time']||this['options']['pt$']||0x1,this['buffer_time']=this['options']['buffer_time']||this['options']['bt$']||0x0;},'checkDisappearance'(V){if(l(V))return!0x0;if(V instanceof a5){let Y=V['parent']();return!Y||!this['container']['includes'](Y['hashCode']());}if(V instanceof a6){let Y=V['findOnce']();return!Y||!this['container']['includes'](Y['hashCode']());}return this['checkDisappearance'](this['pickup'](V));},'clickOnce'(V){let Y=(V,Y)=>this['strategy']['match'](/^p(ress)?$/)?press(V+this['padding']['x'],Y+this['padding']['y'],this['press_time']):click(V+this['padding']['x'],Y+this['padding']['y']);if(V instanceof a6){let Z=V['findOnce']();if(!Z)return!0x1;if(this['container']['push'](Z['hashCode']()),this['strategy']['match'](/^w(idget)?$/)&&Z['clickable']())return Z['click']();let dk=Z['bounds']();return Y(dk['centerX'](),dk['centerY']());}if(V instanceof a5){let Z=V['parent']();if(null!==Z&&this['container']['push'](Z['hashCode']()),this['strategy']['match'](/^w(idget)?$/)&&V['clickable']())return V['click']();let dm=V['bounds']();return Y(dm['centerX'](),dm['centerY']());}if(V instanceof a2)return Y(V['centerX'](),V['centerY']());if(V instanceof a3)return Y(V['x'],V['y']);if(a(V)&&'number'==typeof V['x']&&'number'==typeof V['y'])return Y(V['x'],V['y']);if(Array['isArray'](V)&&0x2===V['length']&&V['every'](V=>'number'==typeof V))return Y['apply'](null,V);let Z=this['pickup'](V,'widget');return!!Z&&this['clickOnce'](Z);},'getResult'(){this['impededIFN'](),this['parseArgs']();do{if(this['clickOnce'](V)){if(this['wait'](this['condition'],this['timeout'],0x50))return u(this['buffer_time']),!0x0;}else u(this['timeout']);}while(this['times']--);return!0x1;}}['getResult']();},'pipeline'(V,Y,Z){return'string'!=typeof V?this['pipeline'](String(),V,Y):{'options':Z||{},get 'name'(){return this['_name']=this['_name']||String(this['options']['name']||'pipeline')['surround']('\x22');},'pickup':a9['sel']['pickup']['bind'](a9['sel']),'waitAndClick':aa['waitAndClick']['bind'](aa),'parseActions'(){return this['actions']=Y['map'](V=>a(V)?V:{'locator':V});},'getResult'(){return this['parseActions']()['every']((V,Y)=>this['waitAndClick'](V['locator'],Object['assign']({},this['options'],{'condition':function(){return V['condition']?V['condition']:Ythis['pickup'](this['actions'][Y+0x1]['locator']):void 0x0;}['call'](this),'strategy':V['strategy']}))||_['w']([this['name']+'管道破裂',V['locator']],0x2,0x0,-0x2));}}['getResult']();},'wait'(V,Y,Z,dz){return a(Y)?this['wait'](V,null,null,Y):a(Z)?this['wait'](V,Y,null,Z):{'result':!0x1,'start':Date['now'](),'pickup':a9['sel']['pickup']['bind'](a9['sel']),'options':dz||{},'impededIFN'(){this['options']['no_impeded']||'function'==typeof n&&n('a11yx.wait');},'parseArgs'(){let V='number'==typeof Y?Y:Number(Y)||0x2710;this['times']=V<=0x0||!isFinite(V)||isNaN(V)||V>=0x64?0x1/0x0:V,this['timeout']=V>=0x64?V:0x1/0x0,this['interval']=Z||0xc8,this['interval']>=this['timeout']&&(this['times']=0x1);},'check'(){return l(V)?V:'function'==typeof V?V():this['pickup'](V);},'wait'(){for(;this['times']--&&!(this['result']=this['check']())&&!(Date['now']()-this['start']>this['timeout']);)sleep(this['interval']);},'callbackIFN'(){if('function'==typeof this['options']['then']&&this['result']){let V=this['options']['then']['call'](this['options']['this'],this['result']);void 0x0!==V&&(this['result']=V);}'function'==typeof this['options']['else']&&(this['result']||this['options']['else']['call'](this['options']['this']));},'getResult'(){return this['impededIFN'](),this['parseArgs'](),this['wait'](),this['callbackIFN'](),this['result'];}}['getResult']();},'waitEvery'(V,Y,Z,dF){},'waitSome'(V,Y,Z,dJ){},'waitAndClick'(V,Y,Z,dN){if(a(Y))return this['waitAndClick'](V,null,null,Y);if(a(Z))return this['waitAndClick'](V,Y,null,Z);let dO=!0x0;return this['wait'](V,Y,Z,{'then':function(V){let Y=dN||{};sleep(Y['intermission']||0xf0),dO=this['click'](V,Y)&&dO;}['bind'](this)})&&dO;},'waitAndStable'(V,Y,Z,dU){if(a(Y))return this['waitAndStable'](V,null,null,Y);if(a(Z))return this['waitAndStable'](V,Y,null,Z);let dV={'parseArgs'(){let V=dU||{};this['reference']=V['reference'],this['timeout']=V['timeout']||0x5dc0,this['threshold']=V['threshold']||0x1a4;},'isTimedOut'(){return Date['now']()-this['condition_start']>this['timeout'];},'condition'(){return this['last_condition']=V();},'checkInitCondition'(){let V=void 0x0!==this['reference']?()=>this['condition']()!==this['reference']:()=>this['condition']();return aa['wait'](V,Y,Z,{'then':V=>dV['last_stable']=V});},'checkStableCondition'(){for(this['condition_start']=Date['now']();aa['wait'](()=>dV['last_stable']!==this['condition'](),this['threshold']);)if(dV['last_stable']=dV['last_condition'],this['isTimedOut']())throw Error('a11yx.waitAndStable()\x20timed\x20out\x20waiting\x20for\x20stable\x20condition');return dV['last_stable'];},'getResult'(){return this['parseArgs'](),this['checkInitCondition']()&&this['checkStableCondition']();}};return dV['getResult']();},'swipe':(V,Y,Z,e2)=>({'impededIFN'(){this['options']['no_impeded']||'function'==typeof n&&n('a11yx.swipe');},'parsePoint'(V){if('number'==typeof V)return{'x':halfW,'y':this['scale'](V,'y')};if(Array['isArray'](V)){if(0x2!==V['length']||!V['every'](V=>s(V)))throw Error('Invalid\x20array\x20point:\x20'+V['join'](',\x20'));return{'x':this['scale'](V[0x0],'x'),'y':this['scale'](V[0x1],'y')};}if(a(V)){if('number'!=typeof V['x']||'number'!=typeof V['y'])throw Error('Invalid\x20object\x20point:\x20'+V['x']+',\x20'+V['y']);return{'x':this['scale'](V['x'],'x'),'y':this['scale'](V['y'],'y')};}if(V instanceof a3)return{'x':this['scale'](V['x'],'x'),'y':this['scale'](V['y'],'y')};throw TypeError('Unknown\x20type\x20of\x20point\x20for\x20a11yx.swipe()');},'parseDuration'(){this['duration']=Z>=0xc8?Z:Math['max'](Math['dist'](this['start'],this['end'])/0x5,0xc8);},'parseArgs'(){this['options']=e2||{},this['start']=this['parsePoint'](V),this['end']=this['parsePoint'](Y),this['parseDuration']();},'scale'(V,Y){let Z=void 0x0===Y?'x':Y;return-0x1===V?'x'===Z?W:H:V<0x1?'x'===Z?cX(V):cY(V):V;},'swipe'(){return swipe(this['start']['x'],this['start']['y'],this['end']['x'],this['end']['y'],this['duration']);},'getResult'(){return this['parseArgs'](),this['impededIFN'](),this['swipe']();}}['getResult']()),'swipeInBounds'(){},'swipeInScreen'(){},'swipeAndClick'(){}};V['exports']={'a11yx':aa,'$$sel':aa['selector']()};},203:e8=>{let e9=android['content']['res']['ColorStateList'],ea={'toStr'(e8,e9){'string'==typeof e8&&Number(e8)['toString']()===e8&&(e8=Number(e8));let ea='number'==typeof e8?colors['toString'](e8):e8;if('string'!=typeof ea)throw TypeError('Unknown\x20type\x20of\x20color\x20for\x20colorsx.toStr()');let ee=colors['alpha'](ea),ef=colors['red'](ea),eg=colors['green'](ea),eh=colors['blue'](ea);if(void 0x0===e9||!0x0===e9||'keep'===e9||0x8===e9)return ea;if(!0x1===e9||'none'===e9||0x6===e9)return'#'+colors['toString'](colors['rgb'](ef,eg,eh))['slice'](-0x6);if('auto'===e9)return ee<0xff?ea:colors['toString'](colors['rgb'](ef,eg,eh));throw TypeError('Unknown\x20type\x20of\x20alpha\x20for\x20colorsx.toStr()');},'toInt'(e8){let e9;'string'==typeof e8&&Number(e8)['toString']()===e8&&(e8=Number(e8));try{e9='string'==typeof e8?colors['parseColor'](e8):e8;}catch(ek){throw console['error']('Passed\x20color:\x20'+e8),Error(ek+'\x0a'+ek['stack']);}if('number'!=typeof e9)throw TypeError('Unknown\x20type\x20of\x20color\x20for\x20colorsx.toInt()');return e9;},'hrgba'(e8){if('string'!=typeof e8)throw Error('Param\x20rgba_hex\x20must\x20be\x20a\x20string\x20type');if('#'!==e8[0x0])throw Error('Param\x20rgba_hex\x20must\x20started\x20with\x20hash\x20symbol');if(0x7===(e8=e8['trim']()['toUpperCase']())['length']&&(e8+='FF'),0x9!==e8['length'])throw Error('Length\x20of\x20param\x20rgba_hex\x20must\x20be\x207\x20or\x209');return this['toInt']('#'+e8['slice'](-0x2)+e8['slice'](0x1,-0x2));},'toColorStateList'(e8){return e9['valueOf'](this['toInt'](e8));}};e8['exports']={'colorsx':ea};},725:(en,eo,ep)=>{let {isPlainObject:n,$$toast:r}=ep(0x11e),eq={'StateManager':function(){let en=function(en){this['state']=en,this['last_state']=en;};return en['prototype']={'switchOn'(){this['last_state']=this['state'],this['state']=!0x0;},'switchOff'(){this['last_state']=this['state'],this['state']=!0x1;},'switchGet'(){return this['state'];},'switchSet'(en){this['last_state']=this['state'],this['state']=n(en)?en['is_debug']:en;},'switchBack'(){let en=this['state'];this['state']=this['last_state'],this['last_state']=en;},'enable'(){this['switchOn']();},'disable'(){this['switchOff']();},'isEnabled'(){return!0x0===this['switchGet']();}},en;}(),'DebugConstructor'(en,eo){let ep=function(en,eo,eA,eB){return{'parseMsgLevel'(){this['message_level']=void 0x0===eo?0x0:eo,this['is_high_level']=0x3===eo||'w'===eo||'warn'===eo||0x4===eo||'e'===eo||'error'===eo||0x8===eo||'x'===eo||0x9===eo||'r'===eo;},'trigger':()=>ep['switchGet'](),'print'(){eq['print'](en,this['message_level'],0x0,eA,eB,{'msg_prefix':'»','indent_symbol':'-\x20','indent_repeat':'whole','indent_trailing_space':!0x1});},'getResult'(){return this['trigger']()&&(this['parseMsgLevel'](),this['print']()),!this['is_high_level'];}}['getResult']();};return eq['StateManager']['call'](ep,en),Object['assign'](ep,eq['StateManager']['prototype'],{'switchGet'(){let en=ep['state'];if('boolean'==typeof en)return en;if(void 0x0!==ep['depot']){let en=ep['depot']['state'];if('boolean'==typeof en)return en;}return'boolean'==typeof eq['debug']['state']?eq['debug']['state']:'object'==typeof global['consolex']?global['consolex']['debug']['state']:void 0x0;}}),Object['assign'](ep,{'depot':eo,'fuel'(en){let eo=n(en)?en['is_debug']:en;return new eq['DebugConstructor'](eo,ep);},'border'(en,eo,eI){ep['isEnabled']()&&eq['border'](en,void 0x0===eo?0x0:eo,eI);},'__'(en,eo,ep){this['border']['apply'](this,arguments);}}),ep;},'setGlobalLogConfig'(en){context['getPackageName']()['match'](/Pro\b/i)&&delete en['filePattern'],console['setGlobalLogConfig'](en);},'printBorder'(en,eo,ep){this['border']['apply'](this,arguments);},'debugBorder'(en,eo,ep){this['debug']['border']['apply'](this,arguments);},'$print'(){let en={'last_border':{'save'(en,eo){this['style']=en,this['level']=eo;},'clear'(){delete this['style'],delete this['level'];},'match'(en,eo){return en&&en===this['style']&&eo===this['level'];}}};return this['$']=this['print']=function(eo,ep,f0,f1,f2,f3){if(eo instanceof Error)return this['print'](eo['message']+'\x0a\x0a'+eo['stack']['replace'](/\s+.+?\n/g,'->$&'),ep,f0,f1,f2,f3);let f4={'trigger':()=>eq['print']['isEnabled'](),'parseBorder'(){let en=Number(f2)||0x0,eo=String(void 0x0===f2?'':f2),ep=eo['match'](/[_\d]n(\d*)$/);this['border_line_break']=null!==ep?Number(ep[0x1]||0x1):0x0,eo['match'](/dash\/|-0\.5/)||-0.5===en?this['border_line_before']='dash':eo['match'](/^(\/?dash|0\.5)(_?n\d*)?$/)||0.5===en?this['border_line_after']='dash':eo['match'](/solid\/|-1/)||-0x1===en?this['border_line_before']='solid':eo['match'](/^(\/?solid|1)(_?n\d*)?$/)||0x1===en?this['border_line_after']='solid':eo['match'](/^(solid\/dash|-1\.5)(_?n\d*)?$/)||-1.5===en?(this['border_line_before']='solid',this['border_line_after']='dash'):eo['match'](/^(dash\/solid|1\.5)(_?n\d*)?$/)||1.5===en?(this['border_line_before']='dash',this['border_line_after']='solid'):eo['match'](/^(dashes|dash\/dash|-2)(_?n\d*)?$/)||-0x2===en?(this['border_line_before']='dash',this['border_line_after']='dash'):(eo['match'](/^(solids|solid\/solid|2)(_?n\d*)?$/)||0x2===en)&&(this['border_line_before']='solid',this['border_line_after']='solid');},'parseMsgLevel'(){switch(ep){case null:this['no_msg_level']=!0x0;break;case 0x0:case'v':case'verbose':this['fn']=console['verbose']['bind'](console);break;case void 0x0:case 0x1:case'l':case'd':case'log':this['fn']=console['log']['bind'](console);break;case 0x2:case'i':case'info':this['fn']=console['info']['bind'](console);break;case 0x3:case'w':case'warn':this['fn']=console['warn']['bind'](console),this['is_high_level']=!0x0;break;case 0x4:case'e':case'error':this['fn']=console['error']['bind'](console),this['is_high_level']=!0x0;break;case 0x8:case'x':this['fn']=console['error']['bind'](console),this['should_exit']=!0x0,this['is_high_level']=!0x0;break;case 0x9:case'r':this['fn']=console['error']['bind'](console),this['show_ex_msg']=!0x0,this['should_exit']=!0x0,this['is_high_level']=!0x0;break;default:throw Error('Invalid\x20message\x20level\x20for\x20consolex.print():\x20'+ep);}},'parseIndent'(){this['indent']={'lv':Math['min'](Number(f1)||0x0,0xa),'trigger'(){return this['lv']>0x0&&!f4['no_msg_level'];},'getIndent'(){let en=f4['options']['indent_symbol']||'->',eo=f4['options']['indent_repeat']||'first',ep=void 0x0===f4['options']['indent_trailing_space']||Boolean(f4['options']['indent_trailing_space'])?'\x20':'';switch(eo){case'first':return en['slice'](0x0,0x1)['repeat'](this['lv'])+en['slice'](0x1)+ep;case'last':return en['slice'](0x0,-0x1)+en['slice'](-0x1)['repeat'](this['lv'])+ep;default:return en['repeat'](this['lv'])+ep;}},'getResult'(){return this['trigger']()?this['getIndent']():'';}}['getResult']();},'stringify':en=>Array['isArray'](en)?en['join'](',\x20')['surround']('[\x20'):n(en)?Object['keys'](en)['map'](eo=>eo+':\x20'+en[eo])['join'](',\x20')['surround']('{\x20'):en&&'function'==typeof en['toString']?en['toString']():void 0x0===en?String():String(en),'parseArgs'(){this['options']=f3||{},this['parseBorder'](),this['parseMsgLevel'](),this['parseIndent'](),this['msg_body']=Array['isArray'](eo)?eo['map'](this['stringify']['bind'](this)):this['stringify'](eo),this['prefix']=void 0x0===this['options']['msg_prefix']?'':String(this['options']['msg_prefix']||'')+'\x20';},'toastIFN'(){let en='function'==typeof r?r:toast,eo=Array['isArray'](this['msg_body'])?this['msg_body']['join']('\x0a'):this['msg_body'];switch(f0){case 0x2:case'l':case'long':return en(eo,'l');case 0x3:case's/f':case'short/forcible':return en(eo,'s','f');case 0x4:case'l/f':case'long/forcible':return en(eo,'l','f');}f0&&en(eo,'S');},'showBorderIFN'(){let {border_line_before:eo,border_line_after:n,border_line_break:r}=this,{border_prefix:f0}=this['options'],f1=(void 0x0===ep?0x1:Number(ep)||0x0)['clamp'](0x0,0x1),f2=[()=>{void 0x0===eo||this['no_msg_level']||en['last_border']['match'](eo,f1)||eq['print']['border'](eo,f1,0x0,!0x1,f0);},()=>{void 0x0===n||this['no_msg_level']||(eq['print']['border'](n,f1,r,!0x0,f0),r&&en['last_border']['clear']());}][Symbol['iterator']]();return(this['showBorderIFN']=()=>f2['next']()['value']())();},'showMessageIFN'(){this['no_msg_level']||(en['last_border']['clear'](),Array['isArray'](this['msg_body'])?this['msg_body']['forEach'](this['showMsg']['bind'](this)):this['showMsg'](this['msg_body']));},'showMsg'(en){this['fn'](this['prefix']+this['indent']+en);},'getResult'(){return this['trigger']()&&(this['parseArgs'](),this['toastIFN'](),this['showBorderIFN'](),this['showMessageIFN'](),this['showBorderIFN'](),this['show_ex_msg']&&eq['print']('Forcibly\x20stopped',0x4,0x1),this['should_exit']&&exit()),!this['is_high_level'];}};return f4['getResult']();},Object['assign'](this['print'],new this['StateManager'](!0x0),this['StateManager']['prototype'],{'border'(eo,ep,fk,fl,fm){let fo={'style':String(eo||'solid'),'level':(void 0x0===ep?0x1:Number(ep)||0x0)['clamp'](0x0,0x1),'break':'\x0a'['repeat'](Math['max'](Number(fk)||0x0,0x0)),'prefix':void 0x0===fm?'':String(fm)+'\x20','trigger'(){return eq['print']['isEnabled']()&&!en['last_border']['match'](this['style'],this['level']);},'saveStateIFN'(){fl&&!this['break']&&en['last_border']['save'](this['style'],this['level']);},'printIFN'(){let en=this['style']['match'](/dash/)?this['prefix']+'-\x20'['repeat'](0x11)['trim']():this['prefix']+'-'['repeat'](0x21);this['level']?console['log'](en+this['break']):console['verbose'](en+this['break']);}};fo['trigger']()&&(fo['saveStateIFN'](),fo['printIFN']());}}),this['__']=this['border']=function(en,eo,ep){this['print']['border'](en,eo,ep,!0x0);},this['v']=this['verbose']=(en,eo,ep,fw)=>this['$'](en,0x0,eo,ep,fw),this['d']=this['log']=(en,eo,ep,fA)=>this['$'](en,0x1,eo,ep,fA),this['i']=this['info']=(en,eo,ep,fE)=>this['$'](en,0x2,eo,ep,fE),this['w']=this['warn']=(en,eo,ep,fI)=>this['$'](en,0x3,eo,ep,fI),this['e']=this['error']=(en,eo,ep,fM)=>this['$'](en,0x4,eo,ep,fM),delete this['$print'],this;},'$debug'(){return this['_']=this['debug']=new this['DebugConstructor'](void 0x0),delete this['$debug'],this;},'$bind'(){return this['$print']()['$debug'](),delete this['$bind'],this;}};eq['$bind'](),en['exports']={'consolex':eq};},190:(fN,fO,fP)=>{let {isNullish:n}=fP(0x11e),{filesx:r}=fP(0x2fb),fQ=java['io']['File'],fR=java['util']['zip']['CRC32'],fS=android['util']['Base64'],fT=javax['crypto']['Cipher'],fU=javax['crypto']['spec']['SecretKeySpec'],fV=java['security']['KeyFactory'],fW=java['security']['MessageDigest'],fX=java['security']['KeyPairGenerator'],fY=java['security']['spec']['X509EncodedKeySpec'],fZ=java['security']['spec']['PKCS8EncodedKeySpec'],g0=javax['crypto']['CipherOutputStream'],g1=java['io']['FileInputStream'],g2=java['io']['FileOutputStream'],g3=java['io']['ByteArrayOutputStream'],g4=function(){let fN=function(fN,fO){let fP=fO||{};this['keyPair']=fP['keyPair'],delete fP['keyPair'];let ga=new java['io']['ByteArrayOutputStream']();g5['_input'](fN,fP,(fN,fO,fP)=>{ga['write'](fN,fO,fP);}),this['data']=ga['toByteArray']();};return fN['prototype']['toKeySpec']=function(fN){let fO=String(fN)['replace'](/^(.+?)(?=\/).*$/,'$1');if('RSA'===fO){if('public'===this['keyPair'])return fV['getInstance'](fO)['generatePublic'](new fY(this['data']));if('private'===this['keyPair'])return fV['getInstance'](fO)['generatePrivate'](new fZ(this['data']));throw Error('Property\x20keyPair\x20must\x20be\x20either\x20public\x20or\x20private');}return new fU(this['data'],fO);},fN['prototype']['toString']=function(){let fN=fS['encodeToString'](this['data'],fS['NO_WRAP']);return this['keyPair']?'Key['+this['keyPair']+']{data=\x27'+fN+'\x27}':'Key{data=\x27'+fN+'\x27}';},fN;}(),g5={'_pwmap':new Function('return\x20{_dec(e,l){let\x20i=e.split(/,\x20?/).map(e=>e.replace(/^\x22([^]+)\x22$/g,\x22$1\x22)),s=0,a=\x22\x22;for(var\x20r=\x22_.|._\x22;;){for(let\x20t=0;t0x0;)fP(gn,0x0,fO);}else{let fO=function(){return'base64'===gk['input']?fS['decode'](fN,fS['NO_WRAP']):'hex'===gk['input']?this['_fromHex'](fN):'string'==typeof fN?new java['lang']['String'](fN)['getBytes'](gk['encoding']||'utf-8'):fN;}['call'](this);fP(fO,0x0,fO['length']);}},'_output'(fN,fO,fP){let gs=fO['output']||fP;if('base64'===gs)return fS['encodeToString'](fN,fS['NO_WRAP']);if('bytes'===gs)return fN;let gu=fO['encoding']||'utf-8';return'string'===gs?new java['lang']['String'](fN,gu)['toString']():this['_toHex'](fN);},'_toHex':fN=>fN['map'](fN=>{let fO=java['lang']['Integer']['toHexString'](0xff&fN);return fO['length']%0x2?'0'+fO:fO;})['join']('')['toUpperCase'](),'_fromHex'(fN){let fO=util['java']['array']('byte',fN['length']/0x2);return String(fN)['match'](/\w{2}/g)['forEach']((fN,fP)=>{let gC=java['lang']['Integer']['valueOf'](fN,0x10);fO[fP]='number'==typeof gC?new java['lang']['Integer'](gC)['byteValue']():gC['byteValue']();}),fO;},'_cipher'(fN,fO,fP,gG,gH){let fQ=gH||{},fR=fT['getInstance'](gG);fR['init'](fO,fP['toKeySpec'](gG));let fS=function(){if('file'===fQ['output'])return delete fQ['output'],void 0x0!==fQ['dest'];}(),fU=fS?new g2(fQ['dest']):new g3(),fV=new g0(fU,fR),fW=null;try{this['_input'](fN,fQ,(fN,fO,fP)=>{fV['write'](fN,fO,fP);});}catch(gR){fW=gR;}finally{fV&&fV['close'](),fU&&fU['close']();}if(!fS&&!fW)return this['_output'](fU['toByteArray'](),fQ,'bytes');},'Key':g4,'KeyPair':function(fN,fO,fP){let gV=fP||{};this['publicKey']=new g4(fN,Object['assign'](gV,{'keyPair':'public'})),this['privateKey']=new g4(fO,Object['assign'](gV,{'keyPair':'private'}));},'digest'(fN,fO,fP){let gZ=fP||{},h0='CRC32'===fO?new fR():fW['getInstance'](fO);return this['_input'](fN,gZ,(fN,fO,fP)=>{h0['update'](fN,fO,fP);}),'CRC32'===fO?h0['getValue']()['toString'](0x10)['toUpperCase']():this['_output'](h0['digest'](),gZ,'hex');},'digestFile'(fN,fO,fP){let h7=Object['assign'](fP||{},{'input':'file'});if('string'==typeof fN)return this['digest'](files['path'](fN),fO,h7);if(fN instanceof fQ)return this['digest'](fN,fO,h7);throw TypeError('Invalid\x20type\x20of\x20path\x20for\x20cryptox.digestFile()');},'encrypt'(fN,fO,fP,hb){return this['_cipher'](fN,fT['ENCRYPT_MODE'],fO,fP,hb);},'decrypt'(fN,fO,fP,hf){return this['_cipher'](fN,fT['DECRYPT_MODE'],fO,fP,hf);},'generateKeyPair'(fN,fO){let fP=fX['getInstance'](fN);fP['initialize'](fO||0x100);let hk=fP['generateKeyPair']();return new this['KeyPair'](hk['getPublic']()['getEncoded'](),hk['getPrivate']()['getEncoded']());},'generateRandomKeyInput'(fN){let fO=fN||0x20;if(0x20!==fO&&0x10!==fO)throw Error('length\x20must\x20be\x20either\x2016\x20or\x2032');let fP='';for(let fN=0x0;fN<0x20;fN+=0x1)fP+=String['fromCharCode'](0x9fff*Math['random']());return String(this['digest'](fP,'MD5'))['slice'](-fN);},'_getKey'(fN){if(!fN)throw Error('Invalid\x20key\x20for\x20cryptox._getKey()');if(fN['length']%0x10==0x0&&fN['match'](/^[a-f0-9]+$/i))return new this['Key'](fN);let fO=r['.local']('key.nfex');files['exists'](fO)||files['createWithDirs'](fO);let fP=r['readJson'](fO);if(fP[fN])return new this['Key'](fP[fN]);let hs=fP[fN]=this['generateRandomKeyInput']();return r['writeJson'](fO,fP),new this['Key'](hs);},'enc'(fN,fO){return this['encrypt'](fN,this['_getKey'](fO),'AES/ECB/PKCS5Padding',{'output':'hex'});},'dec'(fN,fO){let fP=null,hy=function(){try{return this['decrypt'](fN,this['_getKey'](fO),'AES/ECB/PKCS5Padding',{'output':'string','input':'hex'});}catch(hz){fP=hz;}}['call'](this);if(!n(hy))return hy;let fQ=this['_pwmap']['decrypt'](fN);if(!n(fQ))return fQ;throw Error(null!==fP?fP:'Decrypted\x20failed');}};fN['exports']={'cryptox':g5};},415:(hB,hC,hD)=>{let {$$impeded:n,$$toast:r,$$cvt:s,$$link:o,isNullish:a,$$str:l,$$und:c,$$nul:u,$$arr:p,$$num:h,$$rex:_,$$func:d}=hD(0x11e),{a11yx:g,$$sel:f}=hD(0x2d4),{timersx:m}=hD(0x357),{consolex:y}=hD(0x2d5),hE=android['provider']['Settings'],hF=hE['System'],hG=hE['Global'],hH=hE['Secure'],hI=java['io']['File'],hJ=android['net']['Uri'],hK=android['view']['Surface'],hL=android['content']['Intent'],hM=android['content']['Context'],hN=android['content']['res']['Resources'],hO=android['content']['IntentFilter'],hP=android['os']['Environment'],hQ=android['os']['PowerManager'],hR=android['os']['BatteryManager'],hS=android['util']['DisplayMetrics'],hT=org['autojs']['autojs']['tool']['RootTool'],hU={'FLAGS_ON':hQ['SCREEN_BRIGHT_WAKE_LOCK']|hQ['ACQUIRE_CAUSES_WAKEUP'],'FLAGS_DIM':hQ['SCREEN_DIM_WAKE_LOCK']|hQ['ACQUIRE_CAUSES_WAKEUP'],get 'keycode$'(){return this['_keycode$']=this['_keycode$']||n['detach'](this['keycode'],0x1);},get 'power_service'(){return context['getSystemService'](hM['POWER_SERVICE']);},'screen_metrics':{'metrics':runtime['getScreenMetrics'](),'getInfo'(){return{'width':this['metrics']['rescaleX'](W),'height':this['metrics']['rescaleY'](H)};},'setRatio'(hB){this['setMetrics'](hB*W,hB*H);},'setMetrics'(hB,hC){let hD=hB<=0x0?W:hB<0x1?W*hB:hB,hZ=hC<=0x0?H:hC<0x1?H*hC:hC;runtime['setScreenMetrics'](hD,hZ);},'getRatio'(){return{'width':this['metrics']['rescaleX'](W)/W,'height':this['metrics']['rescaleY'](H)/H};},'reset'(){this['setRatio'](0x0);},'saveState'(){let hB=this['getInfo']();this['_screen_metrics_w']=hB['width'],this['_screen_metrics_h']=hB['height'];},'loadState'(){let hB=this['_screen_metrics_w'],hC=this['_screen_metrics_h'];if(void 0x0===hB||void 0x0===hC)throw Error('State\x20must\x20be\x20saved\x20before\x20loading');this['setMetrics'](hB,hC),delete this['_screen_metrics_w'],delete this['_screen_metrics_h'];}},'battery':{'_getStatusIntent':()=>context['registerReceiver'](null,new hO(hL['ACTION_BATTERY_CHANGED'])),'_getStatus'(hB,hC,hD){let i6=hB=>void 0x0===hD?hB:hD,i7=this['_getStatusIntent'](),i8=hR['EXTRA_'+hB];switch(hC){case'Boolean':return i7['getBooleanExtra'](i8,i6(!0x1));case'Byte':return i7['getByteExtra'](i8,i6(-0x1));case'Char':return i7['getCharExtra'](i8,i6(''));case'Double':return i7['getDoubleExtra'](i8,i6(-0x1));case'Float':return i7['getFloatExtra'](i8,i6(-0x1));case'Long':return i7['getLongExtra'](i8,i6(-0x1));case'Short':return i7['getShortExtra'](i8,i6(-0x1));case'String':return i7['getStringExtra'](i8);default:return i7['getIntExtra'](i8,i6(-0x1));}},'_checkNumRange'(hB,hC,hD,ie,ig){let ih=(hB,hC)=>void 0x0===hB||isNaN(Number(hB))?hC:Number(hB);return hB>=ih(hC,hD||-0x1/0x0)&&hB<=ih(ie,ig||0x1/0x0);},'getPercentage'(){let hB=this['_getStatusIntent']();return 0x64*hB['getIntExtra'](hR['EXTRA_LEVEL'],-0x1)/hB['getIntExtra'](hR['EXTRA_SCALE'],-0x1);},'checkPercentage'(hB){return this['_checkNumRange'](this['getPercentage'](),hB,0xf);},'isBatteryLow'(){return device['sdkInt']<0x1c?!this['checkPercentage'](0xf):this['_getStatus']('BATTERY_LOW','Boolean',!0x1);},'getTemperature'(hB){let hC=this['_getStatus']('TEMPERATURE')/0xa,hD=hB||{};return{get 'C'(){let hB=iv(hD['unit'],'°C');return null===hB?hC:hC+hB;},get 'F'(){let hB=iv(hD['unit'],'°F'),iu=Number((0x9*hC/0x5+0x20)['toFixed'](0x1));return null===hB?iu:iu+hB;}}['C'===(hD['format']||'C')['toUpperCase']()['slice'](0x0,0x1)?'C':'F'];function iv(hB,hC){return!0x0===hB?hC:'string'==typeof hB?hB:null;}},'getTemperatureString'(){return this['getTemperature']()+'°C';},'checkTemperature'(hB,hC){return this['_checkNumRange'](this['getTemperature'](),hB,-0xf,hC,0x29);},'isOverheating'(){return this['getHealth']()===hR['BATTERY_HEALTH_OVERHEAT'];},'isOvercooling'(){return this['getHealth']()===hR['BATTERY_HEALTH_COLD'];},'getHealth'(){return this['_getStatus']('HEALTH',hR['BATTERY_HEALTH_UNKNOWN']);},'getHealthDescription'(hB){return'detailed'===hB||void 0x0===hB?{1:'状态未知',2:'状态良好',3:'温度过高',4:'已损坏',5:'电压过高',6:'状态未指明',7:'温度过低'}[this['getHealth']()]:{1:'未知',2:'良好',3:'过热',4:'损坏',5:'电压过高',6:'未指明',7:'过冷'}[this['getHealth']()];},'isHealthy'(){return this['getHealth']()===hR['BATTERY_HEALTH_GOOD'];},'isCharging'(){return this['_getStatus']('STATUS')===hR['BATTERY_STATUS_CHARGING']||this['isCharged']();},'isCharged'(){return this['_getStatus']('STATUS')===hR['BATTERY_STATUS_FULL'];},'isAcPlugged'(){return this['_getStatus']('PLUGGED')===hR['BATTERY_PLUGGED_AC'];},'isUsbPlugged'(){return this['_getStatus']('PLUGGED')===hR['BATTERY_PLUGGED_USB'];},'isWirelessPlugged'(){return this['_getStatus']('PLUGGED')===hR['BATTERY_PLUGGED_WIRELESS'];},'isPlugged'(){return this['isAcPlugged']()||this['isUsbPlugged']()||this['isWirelessPlugged']();},'isPluggedAndStayingOn'(){let hB=hU['stay_on_while_plugged_in']['get'](),hC=hC=>(hC&hB)===hC;return this['isAcPlugged']()&&hC(hR['BATTERY_PLUGGED_AC'])||this['isUsbPlugged']()&&hC(hR['BATTERY_PLUGGED_USB'])||this['isWirelessPlugged']()&&hC(hR['BATTERY_PLUGGED_WIRELESS']);},'isIgnoringOptimizations':hB=>hU['power_service']['isIgnoringBatteryOptimizations'](hB||context['getPackageName']()),'requestIgnoreOptimizations'(hB,hC){try{if(!hC&&this['isIgnoringOptimizations']())return!0x0;let hD=new hL()['setAction'](hE['ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS'])['setData'](hJ['parse']('package:'+(hB||context['getPackageName']())));return app['startActivity'](hD),this['isIgnoringOptimizations']();}catch(iI){return console['warn'](iI['message']),!0x1;}}},'accelerometer_rotation':new pG('System','ACCELEROMETER_ROTATION','Int',[0x0,0x1]),'user_rotation':new pG('System','USER_ROTATION','Int',[hK['ROTATION_0'],hK['ROTATION_90'],hK['ROTATION_180'],hK['ROTATION_270']]),'screen_off_timeout':new pG('System','SCREEN_OFF_TIMEOUT','Int'),'stay_on_while_plugged_in':new pG('Global','STAY_ON_WHILE_PLUGGED_IN','Int',function(){let hB=hR['BATTERY_PLUGGED_AC'],hC=hR['BATTERY_PLUGGED_USB'],hD=hR['BATTERY_PLUGGED_WIRELESS'];return[0x0,hB,hC,hD,hB|hC,hB|hD,hC|hD,hB|hC|hD];}()),'development_settings_enabled':new pG('Global','DEVELOPMENT_SETTINGS_ENABLED','Int',[0x0,0x1]),'user_dir':new hI(hP['getDataDirectory'](),'user'),'wakeUp'(hB){let hC=context['getSystemService'](hM['POWER_SERVICE'])['newWakeLock'](hQ['FULL_WAKE_LOCK']|hQ['ACQUIRE_CAUSES_WAKEUP']|hQ['ON_AFTER_RELEASE'],'bright'),hD=hB||0x3a98;hC['acquire'](hD);let iP=Date['now'](),iQ=setInterval(()=>{(this['isScreenOn']()||Date['now']()-iP-0xf0>hD)&&(clearInterval(iQ),null!==hC&&hC['isHeld']()&&hC['release']());},0xc8);},'wakeUpWithBuffer'(hB){let hC=this['isScreenOn']['bind'](this);if(!hC()){let hD=0x2328,iU=(hB||hD)/0x5dc;for(;this['wakeUp'](),!g['wait$'](hC,0x5dc,0x78);)if(--iU<=0x0)return!0x1;}return!0x0;},'screenOn'(hB){return this['wakeUp'](hB);},'isScreenOn'(){let hB=this['power_service'];return(hB['isInteractive']||hB['isScreenOn'])['call'](hB);},'keepOn'(hB){let hC=hB||0x5;hC*=hC<0x64?0xea60:0x1,device['keepScreenOn'](hC),y['_']('已设置屏幕常亮显示'),y['_']('最大超时时间:\x20'+(hC/0xea60)['toFixedNum'](0x2)+'分钟');},'keepDim'(hB){let hC=hB||0x5;hC*=hC<0x64?0xea60:0x1,device['keepScreenDim'](hC),y['_']('已设置屏幕常暗显示'),y['_']('最大超时时间:\x20'+(hC/0xea60)['toFixedNum'](0x2)+'分钟');},'cancelOn'(){device['cancelKeepingAwake'](),y['_']('屏幕常亮显示已取消');},'cancelDim'(){device['cancelKeepingAwake'](),y['_']('屏幕常暗显示已取消');},'screenOff'(hB){if('boolean'==typeof hB)return this['screenOff']({'is_debug':hB});let hC=hB||{},hD=hC['key_code']||{},j4=hC['provider']||{},j5={},j6=this;y['debug']['switchSet'](hC['is_debug']);let j7={'key_code':{'failed':()=>y['w'](['关屏策略执行失败','按键模拟失败'],0x0,0x0,-0x2),'bugModel':()=>y['_'](['跳过当前策略','设备不支持KeyCode方法','设备型号:\x20'+device['brand']])},'successWithElapsedTime'(hB){y['_'](['策略执行成功','用时:\x20'+hB]);},'noWriteSettingsPermission'(){let hB=files['path']('./tools/auto.js-write-settings-permission-helper.js'),hC='需要\x22修改系统设置\x22权限';y['w'](['关屏策略执行失败',hC,'可使用以下工具获得帮助支持',hB],0x0,0x0,-0x2),r('关闭屏幕失败\x0a'+hC,'long');},'noWriteSecureSettingsPermission'(){let hB='WRITE_SECURE_SETTINGS';y['w'](['无法完成屏幕关闭操作','需要以下必要权限:',hB,'权限的详细信息及获取方式','可参阅项目配置工具','->\x20运行与安全','->\x20自动开启无障碍服务'],0x0,0x0,-0x2),r('关闭屏幕失败\x0a缺少以下必要权限:\x0a'+hB,'long');},'toastWithDebugInfo'(hB){let hC=[];[]['slice']['call'](arguments)['forEach'](hB=>{Array['isArray'](hB)?hC=hC['concat'](hB):'string'==typeof hB?hC['push'](hB):Object['prototype']['toString']['call'](hB)['match']('Arguments')&&(hC=hC['concat']([]['slice']['call'](hB)));}),y['v'](hC,0x4,0x0,-0x2);}};return y['_']('尝试关闭屏幕'),function(hB){try{j5['brake_is_triggered']?y['_']('关闭屏幕操作已被中断'):hB?y['_']('关闭屏幕成功'):y['_']('关闭屏幕失败',0x3);}catch(jg){if(!jg['message']['match'](/InterruptedException/))throw jg;}return y['debug']['switchBack'](),hB;}(function(){if(!hD['is_disabled']&&function(){try{return 0x0===shell('date',!0x0)['code'];}catch(jh){return!0x1;}}())if(y['_']('尝试策略:\x20模拟电源按键'),[/[Mm]eizu/]['some'](hB=>device['brand']['match'](hB)))j7['key_code']['bugModel']();else{if(function(){let hB=hD['hint'];'function'==typeof hB?hB['call'](null):!0x0!==hB&&'toast'!==hB||r('正在尝试关闭屏幕...\x0a此过程可能需要几秒钟...','long');}(),m['rec']['save']('scr_off_tt'),hU['keycode']('KEYCODE_POWER',{'no_failed_msg':!0x0})){let hB=s['time'](m['rec']('scr_off_tt'),'$zh');return j7['successWithElapsedTime'](hB),!0x0;}j7['key_code']['failed']();}}()||function(){if(j4['is_disabled'])return;y['_']('尝试策略:\x20修改系统设置参数');let hB=!0x1;return hF['canWrite'](context)?j6['battery']['isPluggedAndStayingOn']()&&!(context['checkCallingOrSelfPermission'](android['Manifest']['permission']['WRITE_SECURE_SETTINGS'])===android['content']['pm']['PackageManager']['PERMISSION_GRANTED']?j5['staying_on_state_matters']=!0x0:void 0x0)?(j7['noWriteSecureSettingsPermission'](),hB):(o(function(){m['rec']['save']('set_provider');let hB=j4['hint'];'function'==typeof hB?hB['call'](null):!0x0!==hB&&'toast'!==hB||r(['正在尝试关闭屏幕...','此过程可能需要几秒钟...\x0a','触摸屏幕任意区域','或按下任意按键可终止关屏']['join']('\x0a'),'Long');})['$'](jr)['$'](function(){'function'==typeof j4['listener']&&j4['listener'](jp);})['$'](function(){for(;!j5['brake_is_triggered'];){let hC=m['rec']('set_provider'),hD=s['time'](hC,'$zh');if(hC>0xd7be){y['w'](['关屏策略执行失败','屏幕关闭超时','耗时:\x20'+hD],0x2,0x0,-0x2);break;}if(!j6['isScreenOn']()){j7['successWithElapsedTime'](hD),hB=!0x0;break;}sleep(0xc8);}})['$'](js),hB):(j7['noWriteSettingsPermission'](),hB);}());function jp(hB){j5['brake_is_triggered']=!0x0,js(),j7['toastWithDebugInfo'](arguments);}function jr(){y['_']('备份并设置相关参数:'),j6['stay_on_while_plugged_in']['clearStorage'](),j6['screen_off_timeout']['saveIntoStorage'](),j6['screen_off_timeout']['put'](0x0),j5['staying_on_state_matters']&&(j6['stay_on_while_plugged_in']['saveIntoStorage'](),j6['stay_on_while_plugged_in']['put'](0x0));}function js(){j5['is_settings_restored']||(y['_']('恢复修改前的设置参数:'),j6['screen_off_timeout']['loadFromStorageIFN'](),j6['stay_on_while_plugged_in']['loadFromStorageIFN'](),j5['is_settings_restored']=!0x0);}},'isScreenOff'(){return!this['isScreenOn']();},'isLocked':()=>context['getSystemService'](hM['KEYGUARD_SERVICE'])['isKeyguardLocked'](),'isUnlocked'(){return!this['isLocked']();},'unlock':hB=>function(){let hB='com\x5c.android\x5c.systemui:id/',hC='com\x5c.android\x5c.keyguard:id/',jw='com\x5c.smartisanos\x5c.keyguard:id/',{storagesx:r}=hD(0xdc),jx={},jy={'p_container':{'trigger'(){return hL(),[{'desc':'QQ锁屏消息弹框控件','trigger':()=>f['pickup']('按住录音')||f['pickup'](idMatches(/com.tencent.mobileqq:id.+/)),'handle'(){g['click$'](f['pickup']('关闭'),'w'),g['wait$'](this['trigger']['bind'](this),0xbb8)?y['_']('关闭弹框控件成功'):y['_']('关闭弹框控件超时',0x3);}},{'desc':'闹钟应用前置','trigger'(){let hB=currentPackage();return['com\x5c.android\x5c.deskclock','com\x5c.alarmclock\x5c.xtreme.*']['some'](hC=>new RegExp(hC)['test'](hB));},'handle'(){g['wait$'](()=>!this['trigger'](),0x1d4c0)?y['_']('闹钟应用解除前置成功'):y['_']('闹钟应用解除前置超时',0x3);}}]['forEach'](hB=>{hB['trigger']()&&(y['_'](['检测到提示层页面干扰:',hB['desc']]),hB['handle']());}),function(){let hB=jA['unlock_dismiss_layer_strategy'];if('preferred'===hB)return!0x0;if('disabled'===hB)return jx['unlock_dismiss_layer_disabled_hinted']||(y['_']('解锁页面提示层检测已禁用'),jx['unlock_dismiss_layer_disabled_hinted']=!0x0),!0x1;if('deferred'===hB)return!!jx['unlock_dismiss_layer_deferred']||(y['_']('解锁页面提示层检测延迟一次'),jx['unlock_dismiss_layer_deferred']=!0x0,!0x1);throw Error('Unknown\x20unlock\x20dismiss\x20layer\x20strategy:\x20'+hB);}()&&[{'desc':'通用','sel':idMatches(hB+'preview_container')},{'desc':'EMUI','sel':idMatches(hB+'.*(keyguard|lock)_indication.*')},{'desc':'锤子科技','sel':idMatches(jw+'keyguard_(content|.*view)')},{'desc':'MIUI','sel':idMatches(hC+'(.*unlock_screen.*|.*notification_.*(container|view).*|dot_digital)')},{'desc':'MIUI10','sel':idMatches(hB+'(.*lock_screen_container|notification_(container|panel).*|keyguard_.*)')},{'sel':f['pickup'](/上滑.{0,4}解锁/,'selector')}]['some'](hB=>{let {desc:hC,sel:hD}=hB;if(hD instanceof com['stardust']['autojs']['core']['accessibility']['UiSelector']&&hD['exists']())return hC?y['_']('匹配到'+hC+'解锁提示层控件'):(y['_']('匹配到解锁提示层文字:'),y['_'](f['pickup'](hD,'txt'))),(this['trigger']=hD['exists']['bind'](hD))();});},'dismiss'(){let hB=this,hC=jA['unlock_dismiss_layer_bottom'],hD=jA['unlock_dismiss_layer_top'],jw=jA['unlock_dismiss_layer_swipe_time'],jQ=!!jw,jx=[hC,hD],jy=jw,jT=jA['swipe_time_reliable']||[],jU=0x3,jV=jA['continuous_swipe']||{};return jT['includes'](jy)&&(jU=0x1/0x0,y['_']('当前滑动时长参数可信')),jy in jV||(y['_']('连续成功滑动累积器清零'),jV={},jV[jy]=0x0),function(){let hC=[jy]['concat'](jx['map'](hB=>[halfW,cY(hB)])),hD=0x0;for(hU['keepOn'](0x3);!jw()&&(hJ('消除解锁页面提示层',hD,0x1e),y['_']('滑动时长:\x20'+jy+'毫秒'),y['_']('参数来源:\x20'+(jQ?'本地存储':'自动计算')),gesture['apply'](null,hC),!hB['succ']());)if(y['_']('单次消除解锁页面提示层超时'),hD+=0x1,jQ)--jU<0x0?(jQ=!0x1,jy=jA['unlock_dismiss_layer_swipe_time'],y['_']('放弃本地存储数据'),y['_']('从默认值模块获取默认值:\x20'+jy)):y['_']('继续使用本地存储数据');else{let hB=jy<0x78?0x5:0x32;jy+=hB,y['_']('参数增量:\x20'+hB);}function jw(){let hB=hD>0x1e;return hB&&(jV[jy]=0x0,jz['put']('config',{'continuous_swipe':jV}),hK('消除解锁页面提示层失败')),hB;}hU['cancelOn'](),y['_']('解锁页面提示层消除成功'),hB['succ_fg']=!0x0;}(),function(){jy!==jw&&(jz['put']('config',{'unlock_dismiss_layer_swipe_time':jy}),y['_']('存储滑动时长参数:\x20'+jy)),jy in jV||(jV[jy]=0x0);let hB=++jV[jy];jz['put']('config',{'continuous_swipe':jV}),y['_']('存储连续成功滑动次数:\x20'+hB),hB>=0x6&&!jT['includes'](jy)&&(y['_']('当前滑动时长可信度已达标'),y['_']('存储可信滑动时长数据:\x20'+jy),jz['put']('config',{'swipe_time_reliable':jT['concat'](jy)}));}(),this['succ_fg'];},'handle'(){return this['succ_fg']||!this['trigger']()||this['dismiss']();},'succ'(){return g['wait$'](function(){return!this['trigger']();}['bind'](this),0x5dc)||jy['unlock_view']['trigger']();}},'unlock_view':{'trigger'(){let hD=this;if(hU['isScreenOn']())return function(){return[{'desc':'通用','sel':idMatches(hB+'lockPatternView')},{'desc':'MIUI','sel':idMatches(hC+'lockPattern(View)?')}]['some'](hB=>{if(hB['sel']['exists']())return y['_']('匹配到'+hB['desc']+'图案解锁控件'),np(hB['sel'],jw);});function jw(){let hB=jA['unlock_pattern_strategy'],hC={'segmental':'叠加路径','solid':'连续路径'},jw='unlock_pattern_swipe_time_'+hB,k9=jA[jw],jx=!!k9,kb=0x3,kc=0x0,kd=Math['ceil'](0.6*hG);for(;!(kc>kd&&hK('图案解锁方案失败'));){hJ('图案密码解锁',kc,kd),y['_']('滑动时长:\x20'+k9+'毫秒'),y['_']('滑动策略:\x20'+hC[hB]);let jy=kq(),jz={'segmental'(){let hB=[],hC=jy['length'];for(let hD=0x0;hD{let {left:hC,top:hD,right:jw,bottom:k9}=hB;return[hC,hD,jw,k9];},jz=hB=>{[hC,hD,jw,k9]=jy(hB);};return g['wait$'](()=>{let kG=hB['findOnce']();if(kG)return jx=kG['bounds'](),c(hC)||c(hD)||c(jw)||c(k9)?jz(jx):!!(hB=>{let [jx,jz,kG,kL]=jy(hB);return hC===jx&&hD===jz&&jw===kG&&k9===kL;})(jx)||void jz(jx);},0x4b0,0x78),jx;}}(hD['sel']);if(!hB)return hK(['图案解锁方案失败','无法获取点阵布局']);let hC=hH,jw=Math['trunc'](hB['width']()/hC),k9=Math['trunc'](hB['height']()/hC),jx=hB['left']+Math['trunc'](jw/0x2),jz=hB['top']+Math['trunc'](k9/0x2),kb=[];for(let hB=0x1;hB<=hC;hB+=0x1)for(let hD=0x1;hD<=hC;hD+=0x1)kb[(hB-0x1)*hC+hD]={'x':jx+(hD-0x1)*jw,'y':jz+(hB-0x1)*k9};return l(hE)&&(hE=hE['match'](/[^1-9]+/)?hE['split'](/[^1-9]+/)['join']('|')['split']('|'):hE['split']('')),jy['unlock_pattern_pts']=function(hB,hC){let hD=hB['filter'](hB=>hB>0x0&&hB<=hC*hC),jw=[];for(;jw['length']!==hD['length'];)jw=hD['slice'](),k9(),jx();return hD;function k9(){let hB=function(){let hB={},hD=0x1;for(let jw=0x1;jw<=hC;jw+=0x1)for(let k9=0x1;k9<=hC;k9+=0x1)hB[hD++]=[jw,k9];return hB;}(),jw=NaN;for(let hB=0x0,hC=hD['length'];hB{if(!c(hC)&&!(hC in hB))return hB[hC]=!0x0;});}}(hE,hC)['filter'](hB=>+hB&&kb[hB])['map'](hB=>[kb[hB]['x'],kb[hB]['y']]);}}}()||function(){return!function(){let hB=hB=>l(hB)&&id(hB)['exists'](),hC=hB=>_(hB)&&idMatches(hB)['exists']();return['com.android.systemui:id/lockPattern']['some'](jw=>{if(hB(jw)||hC(jw))return hD['misjudge']=jw,y['_'](['匹配到误判干扰','转移至PIN解锁方案']),!0x0;});}()&&[{'desc':'通用','sel':idMatches('.*passwordEntry')},{'desc':'MIUI','sel':idMatches(hC+'miui_mixed_password_input_field')},{'desc':'锤子科技','sel':idMatches(jw+'passwordEntry(_.+)?')['className']('EditText')}]['some'](hC=>{if(hC['sel']['exists']())return y['_']('匹配到'+hC['desc']+'密码解锁控件'),np(hC['sel'],hB);});function hB(){let hB=hE;p(hB)&&(hB=hB['join'](''));let hC=hB=>f['pickup']([/确.|完成|[Cc]onfirm|[Ee]nter/,{'className':'Button','clickable':!0x0}],hB),jw=0x0,lz=Math['ceil'](0.6*hG);for(;!(jw>lz&&hK(['密码解锁方案失败','可能是密码错误','或无法点击密码确认按钮']));){hJ('密码解锁',jw,lz),hD['sel']['setText'](hB),jx();let jy=hC('widget');if(jy){y['_']('点击\x22'+hC('txt')+'\x22按钮');try{g['click$'](jy,'w');}catch(lC){y['_']('按钮点击可能未成功',0x3);}}if(hD['succ'](0x2))break;try{if(0x0===shell('date',!0x0)['code']&&0x0===shell('input\x20keyevent\x2066',!0x0)['code']&&(y['_']('使用Root权限模拟回车键'),sleep(0x1e0),hD['succ']()))break;}catch(lD){}jw+=0x1,sleep(0xc8);}return y['_']('密码解锁成功'),!0x0;function jx(){let hC=hB[hB['length']-0x1],jw={'HUAWEI VOG-AL00 9':{'prefix':0x1,'keys':[[0x3f0,0x6aa]]},'HUAWEI ELE-AL00 10':{'keys':['DEL'],'keys_map':function(){let [hB,hC,hD,jw,lz]=[0x4a4,0x546,0x5e7,0x68a,0x72b],[jx,jy,jz,lP,lQ,lR,lS,lT,lU,lV]=[0x38,0xa3,0x10f,0x17a,0x1e7,0x253,0x2bf,0x32a,0x396,0x403],[lW,lX,jA,lZ,hE,hF,hG,hH,hI]=[109.5,0xd9,324.5,432.5,0x21d,0x289,756.5,0x360,972.5];return{1:[jx,hB],2:[jy,hB],3:[jz,hB],4:[lP,hB],5:[lQ,hB],6:[lR,hB],7:[lS,hB],8:[lT,hB],9:[lU,hB],0:[lV,hB],'q':[jx,hC],'w':[jy,hC],'e':[jz,hC],'r':[lP,hC],'t':[lQ,hC],'y':[lR,hC],'u':[lS,hC],'i':[lT,hC],'o':[lU,hC],'p':[lV,hC],'a':[lW,hD],'s':[lX,hD],'d':[jA,hD],'f':[lZ,hD],'g':[hE,hD],'h':[hF,hD],'j':[hG,hD],'k':[hH,hD],'l':[hI,hD],'z':[lX,jw],'x':[jA,jw],'c':[lZ,jw],'v':[hE,jw],'b':[hF,jw],'n':[hG,jw],'m':[hH,jw],',':[lX,lz],' ':[hE,lz],'.':[hH,lz],'del':[lV,jw]};}(),get 'suffix'(){return this['keys_map'][hC];}}};if(!(hI in jw))return;y['_']('此设备机型需要按键辅助');let lz=jw[hI],jx=lz['keys'],jy=lz['keys_map'],jz=lz['prefix'],m9=lz['suffix'];if(!c(jz)&&!u(jz)){let jw='';h(jz)?jw+=hC['repeat'](jz):jw=jz['toString'](),hD['sel']['setText'](hB+jw),y['_']('辅助按键前置填充:\x20'+jw['length']+'项');}return jx['forEach']((hB,hC)=>{hC||sleep(0x12c),g['click$'](l(hB)?jy[hB]:hB),sleep(0x12c);}),m9?m9 instanceof com['stardust']['automator']['UiObject']?(y['_']('辅助按键后置填充类型:\x20控件'),g['click$'](m9)):m9 instanceof com['stardust']['autojs']['core']['accessibility']['UiSelector']?(y['_']('辅助按键后置填充类型:\x20选择器'),g['click$'](m9)):p(m9)?(y['_']('辅助按键后置填充类型:\x20坐标'),g['click$'](m9)):h(m9)||l(m9)||_(m9)?(y['_']('辅助按键后置填充类型:\x20文本'),g['click$'](f['pickup']('(key.?)?'+m9))):hK(['密码解锁失败','无法判断末位字符类型']):void 0x0;}}}()||function(){return[{'desc':'通用','sel':idMatches(hB+'pinEntry')},{'desc':'MIUI','sel':idMatches(hC+'numeric_inputview')},{'desc':'EMUI10','sel':idMatches(hB+'fixedPinEntry')},{'desc':'EMUI','sel':descMatches('[Pp][Ii][Nn]\x20?(码区域|area)')},{'desc':'魅族','sel':idMatches(hB+'lockPattern')},{'desc':'OPPO','sel':idMatches(hB+'(coloros.)?keyguard.pin.(six.)?view')},{'desc':'OPPO','sel':idMatches(hB+'keyguard_security_container')},{'desc':'VIVO','sel':idMatches(hB+'vivo_pin_view')},{'desc':'拨号盘阵列',get 'sel'(){let hB={'_side':0x3,'_nums':[0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0],'_ft':cX(0.0125),'_checkPoints'(){return this['_points']=this['_points']||{},this['_nums']['every'](hB=>this['_points'][hB]=f['pickup'](hB,'point'));},'_checkOffset'(){let hC=hB=>hB['join']('|')['split']('|')['map'](()=>[]),hD=hB['_side'],jw=hC(Array(hD)),mi=hC(Array(hD)),jx=(hC,hD)=>hB['_points'][hB['_nums'][hC]][hD];for(let hB=0x0;hBhC['every']((hD,jw)=>!jw||Math['abs'](hD-hC[jw-0x1])hC['every']((hD,jw)=>!jw||Math['abs'](hD-hC[jw-0x1])!!global['_$_dial_points']};}}]['some'](hB=>{let hC=hB['desc'];if(hB['sel']['exists']())return hC['match'](/\w$/)&&(hC+='/'),y['_']('匹配到'+hC+'PIN解锁控件'),np(hB['sel'],jw);});function jw(){let jw=0x0,mA=Math['ceil'](0.6*hG);for(;!(jw>mA&&hK(['PIN解锁方案失败','尝试次数已达上限'])||(hJ('PIN解锁',jw,mA),d(hD['unlockPin'])?hD['unlockPin']():jz(),hD['succ']()||jy()));)jw+=0x1,sleep(0xc8);return y['_']('PIN解锁成功'),!0x0;function jy(){let hC=idMatches(hB+'key_enter');if(hC['exists']())return y['_']('点击\x22key_enter\x22控件'),g['click$'](hC,'w'),hD['succ']();}function jz(){let jw=[{'desc':'通用PIN/KEY','test'(){let hC=hC=>idMatches(hB+'key'+hC);if(nb(hC))return jy['call'](this),this['sel']=hC;},'click'(){let hB=this['sel'];return jz(()=>hF['forEach'](hC=>g['click$'](hB(hC),'w')));}},{'desc':'通用PIN容器','test'(){let hC=idMatches(hB+'container')['findOnce']();if(hC)return jy['call'](this),this['widget']=hC;},'click'(){let hB=this['widget']['bounds'](),hC=[hB['left'],hB['top'],hB['right'],hB['bottom']];return jz(()=>hF['forEach'](hB=>g['click$']((hB=>f['pickup']([hB,{'boundsInside':hC}]))(hB),'w')));}},{'desc':'MIUI/PIN','test'(){let hB=hB=>idMatches(hC+'numeric_inputview')['text'](hB);if(nb(hB))return jy['call'](this),this['sel']=hB;},'click'(){let hB=this['sel'];return jz(()=>hF['forEach'](hC=>g['click$'](hB(hC),'w')));}},{'desc':'内容描述PIN','test'(){let hB=hB=>desc(hB);if(nb(hB))return jy['call'](this),this['sel']=hB;},'click'(){let hB=this['sel'],hC=hD=>{let jw=hB(hD)['findOnce']();if(hD>0x0||jw)return jw;let mA=hB=>{let hD=hC(hB)['bounds']();return{'x':hD['centerX'](),'y':hD['centerY']()};},jx=hB=>mA(0x8)[hB]+mA(0x5)[hB]-mA(0x2)[hB];return[jx('x'),jx('y')];};return jz(()=>hF['forEach'](hB=>g['click$'](hC(hB),'w')));}},{'desc':'标记匹配PIN','test'(){if(hD['misjudge'])return jy['call'](this),y['_']('已匹配的字符串化标记:'),y['_'](hD['misjudge']),!0x0;},'click':()=>jz(()=>{let hB=idMatches(hD['misjudge'])['findOnce']();hB&&jx(hF,hB['bounds']());})},{'desc':'拨号盘阵列PIN','test'(){if(global['_$_dial_points'])return jy['call'](this),!0x0;},'click':()=>jz(()=>hF['forEach'](hB=>{g['click$'](global['_$_dial_points'][hB],'p',{'pt$':0x78});}))}],mA=0x8;for(;mA--;)for(let hB of jw)if(hB['test']())return hB['click']();return hK('预置的PIN解锁方案全部无效');function jy(){y['_']('采用'+this['desc']+'解锁方案');}function jz(hB){return(hD['unlockPin']=hB['bind'](null))();}function nb(hB){let hC=0x0;for(let hD of'123456789')hC+=Number(hB(hD)['exists']());return hC>0x6;}}}}()||function(){return[{'desc':'\x22Gxzw\x22屏下指纹设备','sel':idMatches(/.*[Gg][Xx][Zz][Ww].*/),'pw_rect':[0.0875,0.47,0.9125,0.788]}]['some'](hC=>{if(hC['sel']['exists']())return y['_'](['匹配到特殊设备解锁方案:',hC['desc']]),np(hC['sel'],hB['bind'](null,hC['pw_rect']));});function hB(hB){let hC=hB['map']((hB,hC)=>hC%0x2?cY(hB):cX(hB)),[jw,nk,jy,jz]=hC;if(y['_']('已构建密码区域边界:'),y['_']('Rect('+jw+',\x20'+nk+'\x20-\x20'+jy+',\x20'+jz+')'),jx(hF,hC),hD['succ']())return!0x0;hK('尝试特殊解锁方案失败');}}()||void(hU['isUnlocked']()||y['_']('未匹配到可用的解锁控件'));function np(hB,hC){return hD['sel']=hB,hD['stg']=hC,(hD['trigger']=hB['exists']['bind'](hB))();}function jx(hB,hC){let hD,jw,np,jx;if(p(hC)){let [hB,jy,jz,nC]=hC;hD=hB,jw=jy,np=jz-hB,jx=nC-jy;}else hD=hC['left'],jw=hC['top'],np=hC['width'](),jx=hC['height']();let jy=Math['trunc'](np/0x3),jz=Math['trunc'](jx/0x4),nF=hD+Math['trunc'](jy/0x2),nG=jw+Math['trunc'](jz/0x2),nH=[];for(let hB=0x1;hB<=0x4;hB+=0x1)for(let hC=0x1;hC<=0x3;hC+=0x1)nH[0x3*(hB-0x1)+hC]={'x':nF+jy*(hC-0x1),'y':nG+jz*(hB-0x1)};y['_']('已构建拨号盘数字坐标'),hB['forEach'](hB=>g['click$'](nH[Number(hB)||0xb]));}y['_'](['跳过解锁控件检测','屏幕未亮起']);},'dismiss'(){return hE?d(this['stg'])?(hU['keepOn'](0x5),this['stg'](),void hU['cancelOn']()):hK('没有可用的解锁方案'):hK('密码为空');},'handle'(){return this['trigger']()&&this['dismiss']();},'succ'(hB){let hD,jw=hB||0x780;return g['wait$'](()=>{if(function(){let hB=f['pickup'](/.*(重试|不正确|错误|[Ii]ncorrect|[Rr]etry|[Ww]rong).*/);return hB?hD||y['_'](f['pickup'](hB,'txt'),0x3):!idMatches(new RegExp(hC+'phone_locked_textview'))['exists']()||hD||y['_']('密码错误',0x3);}())return function(){let hB=()=>f['pickup'](/.*([Tt]ry again in.+|\d+.*后重试).*/);hB()&&(y['_']('正在等待重试超时'),g['wait$'](()=>!hB(),0xfde8,0x1f4));}(),function(){let hB=f['pickup'](/OK|确([认定])|好的?/);hB&&(y['_']('点击\x22'+f['pickup'](hB,'txt')+'\x22按钮'),g['click$'](hB,'w'),sleep(0x3e8));}(),hU['isUnlocked']();hD=!0x0;},jw,0xf0);}},'unlock':function(hB){y['debug']['switchSet'](hB),y['_']('尝试自动解锁',0x0,0x0,-0x2),jz['put']('config',jA),hL();for(let hB=0x0;!hU['isUnlocked']();hB+=0x1)hB>=hG&&hK('解锁尝试次数已达上限'),hJ('解锁',hB,hG),jy['p_container']['handle'](),jy['unlock_view']['handle'](),sleep(0xf0);return y['_']('自动解锁完毕',0x0,0x0,-0x2),y['debug']['switchBack'](),!0x0;}},jz=r['create']('unlock'),jA=Object['assign']({'unlock_code':null,'unlock_max_try_times':0x14,'unlock_pattern_strategy':'segmental','unlock_pattern_size':0x3,'unlock_pattern_swipe_time_segmental':0x78,'unlock_pattern_swipe_time_solid':0xc8,'unlock_dismiss_layer_strategy':'preferred','unlock_dismiss_layer_bottom':0.7,'unlock_dismiss_layer_top':0.2,'unlock_dismiss_layer_swipe_time':0x6e},jz['get']('config')),hE=String(jz['get']('config',{'prop':'unlock_code','is_crypto':!0x0,'default':''})),hF=hE['split'](/\D+/)['join']('')['split'](''),hG=jA['unlock_max_try_times'],hH=jA['unlock_pattern_size'],hI=device['brand']+'\x20'+device['product']+'\x20'+device['release'],hJ=(hB,hC,hD)=>hC?y['_']('重试'+hB+'(\x20'+hC+'/'+hD+')'):y['_']('尝试'+hB);return jy;function hK(hB){hU['cancelOn'](),y['e'](['解锁失败',hB,hI]['flat'](),0x4,0x0,0x2),hU['is_init_screen_on']||(y['d']('自动关闭屏幕'),hU['screenOff']()||y['w']('自动关闭屏幕失败')),y['__'](),exit(),sleep(0xe10);}function hL(){hU['isScreenOn']()||(hU['wakeUpWithBuffer']()?(y['_']('设备唤起成功'),device['keepScreenOn'](0x1d4c0)):hK('设备唤起失败'));}}()['unlock'](hB),'vibrate'(hB,hC,hD){let o2=hC||0x1,o3='number'==typeof hB?[hB]:hB;function o4(){let hB=hB=>hB<0xa?0x3e8*hB:hB;for(;o2--;)o3['forEach']((hC,hD)=>{let o2=hB(hC),o4=hB(o3[hD-0x1]||0x0);hD%0x2?sleep(o2+o4):device['vibrate'](o2);}),hC&&o3['length']%0x2&&sleep(0x3e8);}void 0x0===hD||hD?threads['start'](o4):o4();},'hasRoot':()=>'function'==typeof hT['isRootAvailable']?hT['isRootAvailable']():Object['keys'](Shell)['indexOf']('Companion')>-0x1?Shell['Companion']['isRootAvailable']():void 0x0,'keycode'(hB,hC){let hD={'options':hC||{},'relations':[{'str':'home','num':0x3},{'str':'back','num':0x4},{'str':'recents','num':0xbb},{'str':'quick_settings','num':-0x1},{'str':'power_dialog','num':-0x1},{'str':'notifications','num':-0x1},{'str':'split_screen','num':-0x1}],get 'autojs_keycode'(){return this['_aj_kc']=this['_aj_kc']||this['relations']['map'](hB=>hB['str']);},'impededIFN'(){this['options']['no_impeded']||'function'==typeof n&&n('devicex.keycode');},'parseKeycode'(){if('number'==typeof hB||this['autojs_keycode']['includes'](hB))return this['keycode']=hB;if('string'==typeof hB){let hC=hB['match'](/^KEYCODE_/i)?hB:'KEYCODE_'+hB,hD=android['view']['KeyEvent'][hC['toUpperCase']()];if('number'==typeof hD)return this['keycode']=hD;}throw Error('Invalid\x20keycode:\x20'+hB);},'parseStrategy'(){'adb_only'===this['options']['strategy']?this['is_adb_only']=!0x0:'adb_advanced'===this['options']['strategy']?this['is_adb_advanced']=!0x0:'a11y_only'===this['options']['strategy']?this['is_a11y_only']=!0x0:this['is_a11y_advanced']=!0x0;},'parseArgs'(){this['parseStrategy'](),this['parseKeycode']();},'hasRoot'(){return'boolean'==typeof this['options']['root']?this['options']['root']:function(){try{return 0x0===shell('date',!0x0)['code'];}catch(oh){return!0x1;}}();},'toNumIFP'(hB){for(let hC of this['relations'])if(hB===hC['str']){if(hC['num']>-0x1)return hC['num'];break;}return hB;},'toStrIFP'(hB){for(let hC of this['relations'])if(hB===hC['num'])return hC['str'];return hB;},'showFailedMsgIFN'(hB){this['options']['no_failed_msg']||y['w'](['按键模拟失败','键值:\x20'+hB],0x0,0x0,-0x2);},'simulateByAdb'(hB){try{return 0x0===shell('input\x20keyevent\x20'+hB,hD['hasRoot']())['code'];}catch(op){return this['showFailedMsgIFN'](hB),!0x1;}},'simulateByA11y'(hB){switch(hB){case'home':return home();case'back':return back();case'recents':return recents();case'power_dialog':return powerDialog();case'notifications':return notifications();case'quick_settings':return quickSettings();case'split_screen':return splitScreen();default:return null;}},'simulate'(hB){return this['is_a11y_only']?this['simulateByA11y'](this['toStrIFP'](hB)):this['is_adb_only']?this['simulateByAdb'](this['toNumIFP'](hB)):this['is_a11y_advanced']?this['simulateByA11y'](this['toStrIFP'](hB))||this['simulateByAdb'](this['toNumIFP'](hB)):this['is_adb_advanced']?this['simulateByAdb'](this['toNumIFP'](hB))||this['simulateByA11y'](this['toStrIFP'](hB)):void 0x0;},'simulateOnce'(){return this['simulate'](this['keycode']);},'simulateTwice'(){let hB=0x2;for(;hB--;)if(!this['simulateOnce']())return!0x1;return!0x0;},'getResult'(){return this['impededIFN'](),this['parseArgs'](),this['options']['rush']?this['simulateTwice']():this['simulateOnce']();}};return hD['getResult']();},'getCallState':()=>context['getSystemService'](hM['TELEPHONY_SERVICE'])['getCallState'](),'getDisplay'(hB){let hC,hD,ox=('boolean'==typeof hB?{'is_globalize':hB}:hB||{})['is_globalize'],oy=new hS(),oz=this['getDefaultDisplay']();oz['getRealMetrics'](oy);let oA=p8(),oB={'cX':oI,'cY':oM,'cYx':oQ},oC={'refresh'(){let hB=!0x1;return Object['keys'](oA=hU['getDisplay']())['forEach'](hC=>{let hD=oA[hC];'number'!=typeof hD&&'boolean'!=typeof hD||void 0x0!==global[hC]&&global[hC]!==hD&&(global[hC]=hD,hB=!0x0);}),hB&&(y['_']('屏幕显示数据已更新'),this['debug']()),this;},'globalize'(){return pl(),this;},'debug'(hB){let hC=y['debug']['fuel'](hB);return hC('屏幕宽高:\x20'+oA['W']+'\x20×\x20'+oA['H']),oA['is_display_rotation_portrait']?hC('可用高度:\x20'+oA['USABLE_HEIGHT']):oA['is_display_rotation_landscape']&&hC('可用宽度:\x20'+oA['USABLE_WIDTH']),hC('屏幕旋转:\x20'+0x5a*oA['display_rotation']+'°'),this;}};return oA||g['wait$'](()=>oA=p8(),0xbb8,0x1f4)?ox&&pl():console['error']('devicex.getDisplay()返回结果异常'),Object['assign'](oA,oB,oC);function oI(hB,hC,hD){return'boolean'==typeof hC?oZ(0x1,hB,-0x1,Object['assign']({'is_ratio':hC},hD)):oZ(0x1,hB,hC,hD);}function oM(hB,hC,hD){return'boolean'==typeof hC?oZ(-0x1,hB,-0x1,Object['assign']({'is_ratio':hC},hD)):oZ(-0x1,hB,hC,hD);}function oQ(hB,ox,oy){let oz=oy||{},oA=oz['is_ratio'];'boolean'==typeof ox&&(oA=void 0x0===oA?ox:oA,ox=-0x1);let oB=Number(hB),oC=Math['abs'](oB)<0x1||oA,oI=Number(ox);if(oI&&-0x1!==oI)if(-0x2===oI)oI=0x438,oB*=oC?0x780:0x1;else if(-0x3===oI)oI=0x448,oB*=oC?0xa00:0x1;else{if(oI<0x0)throw Error('Can\x20not\x20parse\x20base\x20param\x20for\x20cYx()');if(oC)oB*=hD;else if(oI<0x5)throw Error('Base\x20and\x20num\x20options\x20should\x20be\x20both\x20pixels\x20for\x20cYx()');oI=(oI>0x1?0x1/oI:oI)*hD;}else oI=0x2d0,oB*=oC?0x500:0x1;return oz['to_ratio']?Number((0x9*oB/0x10/oI)['toFixed'](0x3)):Math['round'](oB*hC/oI);}function oZ(hB,ox,oy,oz){let oA=-0x1!==hB?hC:hD,oB=Number(ox);if(isNaN(oB))throw Error('Can\x20not\x20parse\x20num\x20param\x20for\x20cTrans():\x20'+ox);let oC=Number(oy);oy&&-0x1!==oy?-0x2===oy?oC=-0x1!==hB?0x438:0x780:-0x3===oy&&(oC=-0x1!==hB?0x448:0xa00):oC=-0x1!==hB?0x2d0:0x500;let oI=oz||{};return(Math['abs'](oB)<0x1||oI['is_ratio'])&&(oB*=oC),oI['to_ratio']?Number((oB/oC)['toFixed'](0x3)):Math['min'](Math['round'](oB*oA/oC),oA);}function p8(){try{if(hC=oz['getWidth'](),hD=oz['getHeight'](),!(hC*hD))return hB();let ox=oz['getRotation'](),oA=[0x0,0x2]['indexOf'](ox)>-0x1,oB=Math['max'](oy['widthPixels'],oy['heightPixels']),[oC,oI]=[hD,hC],oM=hB=>{try{let hC=context['getResources'](),hD=hC['getIdentifier'](hB,'dimen','android');if(hD>0x0)return hC['getDimensionPixelSize'](hD);}catch(pi){}return NaN;};return oA?[oC,hD]=[hD,oB]:[oI,hC]=[hC,oB],{'W':hC,'WIDTH':hC,'width':hC,'halfW':hC/0x2,'HALF_WIDTH':hC/0x2,'half_width':hC/0x2,'uW':oI,'USABLE_WIDTH':oI,'usable_width':oI,'H':hD,'HEIGHT':hD,'height':hD,'halfH':hD/0x2,'HALF_HEIGHT':hD/0x2,'half_height':hD/0x2,'uH':oC,'USABLE_HEIGHT':oC,'usable_height':oC,'display_rotation':ox,'ROTATION':ox,'is_display_rotation_portrait':ox===hK['ROTATION_0']||ox===hK['ROTATION_180'],'is_display_rotation_landscape':ox===hK['ROTATION_90']||ox===hK['ROTATION_270'],'status_bar_height':oM('status_bar_height'),'navigation_bar_height':oM('navigation_bar_height'),'navigation_bar_height_computed':oA?hD-oC:hC-oI,'action_bar_default_height':oM('action_bar_stacked_max_height')||oM('action_bar_default_height')};}catch(pj){return hB();}function hB(){return hC=device['width'],hD=device['height'],hC&&hD?{'WIDTH':hC,'HEIGHT':hD,'USABLE_HEIGHT':Math['trunc'](0.9*hD)}:null;}}function pl(){Object['assign'](global,{'W':hC,'WIDTH':hC,'H':hD,'HEIGHT':hD,'halfW':hC/0x2,'halfH':hD/0x2,'uW':oA['USABLE_WIDTH'],'uH':oA['USABLE_HEIGHT'],'ROTATION':oA['display_rotation'],'cX':oI,'cY':oM,'cYx':oQ});}},'getDefaultDisplay':()=>context['getSystemService'](hM['WINDOW_SERVICE'])['getDefaultDisplay'](),'getDisplayRotation'(){return this['getDefaultDisplay']()['getRotation']();},'setUserRotation'(hB,hC){this['setAutoRotationDisabled'](hC);let hD={0:hK['ROTATION_0'],1:hK['ROTATION_90'],2:hK['ROTATION_180'],3:hK['ROTATION_270'],90:hK['ROTATION_90'],180:hK['ROTATION_180'],270:hK['ROTATION_270']}[hB];if(void 0x0===hD)throw Error('Unknown\x20rotation\x20for\x20devicex.setUserRotation()');let pq=()=>this['getDisplayRotation']()===hD;pq()||(this['user_rotation']['saveState'](),this['user_rotation']['put'](hD),hC||(g['wait'](pq,0x7d0,0x50),sleep(0x168)));},'setUserRotationPortrait'(hB){this['setUserRotation'](hK['ROTATION_0'],hB);},'setUserRotationInverted'(hB){this['setUserRotation'](hK['ROTATION_180'],hB);},'setUserRotationLandscapeRight'(hB){this['setUserRotation'](hK['ROTATION_90'],hB);},'setUserRotationLandscapeLeft'(hB){this['setUserRotation'](hK['ROTATION_270'],hB);},'setAutoRotationEnabled'(hB){this['accelerometer_rotation']['verify'](0x1)||(this['accelerometer_rotation']['saveState'](),this['accelerometer_rotation']['put'](0x1),hB||(g['wait'](()=>this['accelerometer_rotation']['verify'](0x1),0x7d0,0x50),sleep(0x168)));},'setAutoRotationDisabled'(hB){this['accelerometer_rotation']['verify'](0x0)||(this['accelerometer_rotation']['saveState'](),this['accelerometer_rotation']['put'](0x0),hB||(g['wait'](()=>this['accelerometer_rotation']['verify'](0x0),0x7d0,0x50),sleep(0x168)));},'restoreUserRotationIFN'(){this['restoreAutoRotationIFN'](),this['user_rotation']['loadStateIFN']();},'restoreAutoRotationIFN'(){this['accelerometer_rotation']['loadStateIFN']();},'getNextAlarmClockTriggerTime'(){let hB=context['getSystemService'](hM['ALARM_SERVICE'])['getNextAlarmClock']();return null!==hB?hB['getTriggerTime']():Number['NaN'];},'getNextAlarmClockTriggerGap'(){let hB=this['getNextAlarmClockTriggerTime']()-Date['now']();return isNaN(hB)?0x1/0x0:Math['max'](0x0,hB);},'isNextAlarmClockTriggered'(hB){let hC=Number(hB);return hC=isNaN(hC)||hC<0x0?0x0:hC,this['getNextAlarmClockTriggerGap']()\x20'+hB),hB;},this['put']=function(hB){return y['_'](hC+'\x20<-\x20'+hB),function(){try{switch(hD){case'Int':return pL['putInt']['apply'](pL,arguments);case'Long':return pL['putLong']['apply'](pL,arguments);case'Float':return pL['putFloat']['apply'](pL,arguments);case'String':return pL['putString']['apply'](pL,arguments);default:throw y['_']('Unknown\x20data_type:\x20'+hD,0x3),Error('Local\x20Exception');}}catch(q0){return pR('put',arguments);}}(pM,pL[hC],hB);},this['verify']=function(hB){return this['get']()===hB;},this['toggle']=function(hB,hC){if(!Array['isArray'](this['state_set']))throw Error('A\x20\x22state_set\x22\x20must\x20be\x20defined\x20for\x20StateManager.[[instance]].toggle');let hD=this['state_set'];'function'==typeof hC&&(hD=this['state_set']['filter'](hC));let pK=pN['call'](this,hD,function(hB){return void 0x0===hB||'+'===hB||'clockwise'===hB||Object['is'](hB,0x0);}(hB));return this['put'](pK),pK;},this['saveState']=function(){this['_last_state']=this['get']();},this['loadState']=function(hB){if(a(this['_last_state']))throw Error('State\x20must\x20be\x20saved\x20before\x20loading');this['put'](this['_last_state']),hB||this['clearState']();},this['loadStateIFN']=function(hB){a(this['_last_state'])||this['put'](this['_last_state']),hB||this['clearState']();},this['clearState']=function(){delete this['_last_state'];},this['storage']=storages['create']('devicex_state_manager'),this['saveIntoStorage']=function(){this['storage']['put'](this['key'],this['get']());},this['loadFromStorage']=function(hB){let hC=this['storage']['get'](this['key']);if(a(hC))throw Error('Storage\x20must\x20be\x20saved\x20before\x20loading');y['_'](this['key']+'\x20->\x20'+hC),this['put'](hC),hB||this['clearStorage']();},this['loadFromStorageIFN']=function(hB){let hC=this['storage']['get'](this['key']);a(hC)||this['put'](hC),hB||this['clearStorage']();},this['clearStorage']=function(){this['storage']['remove'](this['key']);};}hU['$bind'](),hB['exports']={'devicex':hU,'$$disp':hU['getDisplay']({'is_globalize':!0x0})};},949:(qd,qe,qf)=>{let {$$und,$$func,$$F,isPlainObject,isNullish,isXMLType}=qf(0x11e),{colorsx}=qf(0xcb),{consolex}=qf(0x2d5),qg=android['view']['WindowManager'],qh=qg['LayoutParams'],qi=android['os']['Looper'],qj=android['text']['util']['Linkify'],qk=android['view']['KeyEvent'],ql=android['content']['res']['ColorStateList'],qm=android['graphics']['drawable']['ColorDrawable'],qn=com['stardust']['autojs']['core']['ui']['dialog']['JsDialog'],qo=com['afollestad']['materialdialogs']['DialogAction'],qp=com['afollestad']['materialdialogs']['MaterialDialog'],qq={'contents':qf(0x2f1),'isUiThread':()=>qi['myLooper']()===qi['getMainLooper'](),'rtDialogs':()=>qq['isUiThread']()?runtime['dialogs']:runtime['dialogs']['nonUiDialogs']},qr={'colors':{'wrap'(qs,qt){if(qt&&this[qt])for(let qu in this[qt])if(this[qt]['hasOwnProperty'](qu)&&qs===qu){let qs=this[qt][qu];return Array['isArray'](qs)?qs[0x0]:qs;}return qs;},'title':{'default':'#212121','caution':'#880E0E','warn':'#880E4F','alert':['#C51162','#FFEFFE']},'content':{'default':'#757575','caution':'#AD1414','warn':'#AD1457','alert':['#283593','#E1F5FE']},'progress':{'download':['#FF6F00','#FFECB3','#C43E00'],'files':['#F9A825','#FFF59D','#C17900'],'backup':['#455A64','#ECEFF1','#1C313A'],'restore':['#AB47BC','#F3E5F5','#790E8B'],'indeterminate':['#00897B','#B2DFDB','#005B4F'],'finish':['#00C853','#DCEDC8','#009624'],'success':['#00C853','#DCEDC8','#009624'],'error':['#1565C0','#BBDEFB','#003C8F'],'failure':['#1565C0','#BBDEFB','#003C8F']},'button':{'default_aj_4':'#01A9F3','default':'#03A9F4','caution':'#FF3D00','warn':'#F57C00','attraction':'#7B1FA2','hint':'#0DA798','reset':'#A1887F','unavailable':'#BDBDBD','finish':'#009624','success':'#009624','error':'#003C8F','failure':'#003C8F'}},'text':{'btn':{'F':'完成','B':'返回','Q':'放弃','X':'退出','I':'终止','K':'确定','S':'确认','C':'关闭','D':'删除','N':'继续','M':'确认修改','R':'使用默认值','T':'了解更多'},'no_more_prompt':'不再提示','user_interrupted':'用户终止'},'pool':{'_data':{},'add'(qw,qx){return isNullish(qw)?qw:this['_data'][(qx||'')+qr['getName'](qw)]=qw;},'get'(qy){return this['_data'][qy];},'clear'(){let qz=Object['keys'](this['_data'])['filter'](qz=>{if(this['_data'][qz]['isShowing']())return!0x0;delete this['_data'][qz];})['map'](qz=>{let qC=this['_data'][qz];return qC['dismiss'](),qz['match'](/@[a-f0-9]{5,}$/)?qz:qz+qr['getName'](qC);});qz['length']&&consolex['_'](['清理扩展对话框样本池:']['concat'](qz),0x0,0x0,-0x2);}},'getName':qD=>'@'+java['lang']['Integer']['toHexString'](qD['hashCode']()),'build'(qE){let qF=Object['create'](runtime['dialogs']['newBuilder']());return qF['thread']=threads['currentThread'](),Object['keys'](qE)['forEach'](qG=>rh['call'](this,qF,qG,qE[qG])),function(qE,qF){if(void 0x0!==qF['inputHint']||void 0x0!==qF['inputPrefill']){let qJ=r9(qF['inputHint']),qK=r9(qF['inputPrefill']),qL=function(qF,qN){return qE['emit']('input_change',qE['dialog'],qN['toString']());};qE['input'](qJ,qK,qL)['alwaysCallInputCallback']();}if(void 0x0!==qF['items']){let qO=qF['itemsSelectMode'];if(void 0x0===qO||'select'===qO)qE['itemsCallback'](function(qF,qO,qR,qS){qE['emit']('item_select',qR,qS['toString'](),qE['dialog']);});else if('single'===qO)qE['itemsCallbackSingleChoice'](void 0x0===qF['itemsSelectedIndex']?-0x1:qF['itemsSelectedIndex'],function(qF,qO,qV,qW){return qE['emit']('single_choice',qV,qW['toString'](),qE['dialog']),!0x0;});else{if('multi'!==qO)throw new Error('Unknown\x20itemsSelectMode\x20'+qO);qE['itemsCallbackMultiChoice'](void 0x0===qF['itemsSelectedIndex']?null:qF['itemsSelectedIndex'],function(qF,qO,qZ){return qE['emit']('multi_choice',rb(qO,(qE,qF)=>parseInt(qE[qF])),rb(qZ,(qE,qF)=>qE[qF]['toString']()),qE['dialog']),!0x0;});}}if(void 0x0!==qF['progress']){let r4=qF['progress'];qE['progress'](-0x1===r4['max'],r4['max'],!!r4['showMinMax']),qE['progressIndeterminateStyle'](!!r4['horizontal']);}if(void 0x0===qF['checkBoxPrompt']&&void 0x0===qF['checkBoxChecked']||qE['checkBoxPrompt'](r9(qF['checkBoxPrompt']),!!qF['checkBoxChecked'],function(qF,r6){return qE['getDialog']()['emit']('check',r6,qE['getDialog']());}),void 0x0!==qF['customView']){let r7=qF['customView'];(isXMLType(r7)||'string'==typeof r7)&&(r7=ui['run'](()=>ui['inflate']('customView')));let r8=qF['wrapInScrollView'];qE['customView'](r7,void 0x0===r8||r8);}function r9(qE){return qE||'';}function rb(qE,qF){let r9=[],rb=qE['length'];for(let rg=0x0;rgthis['text']['btn'][qE]||qE},'positiveColor':{'adapter':colorsx['toInt']},'neutral':{'method':'neutralText','adapter':qE=>this['text']['btn'][qE]||qE},'neutralColor':{'adapter':colorsx['toInt']},'negative':{'method':'negativeText','adapter':qE=>this['text']['btn'][qE]||qE},'negativeColor':{'adapter':colorsx['toInt']},'cancelable':null,'canceledOnTouchOutside':null,'autoDismiss':null};if(rl['hasOwnProperty'](qF)){let rp=rl[qF]||{};void 0x0===rp['method']&&(rp['method']=qF),rp['adapter']&&(rh=rp['adapter'](rh)),qE[rp['method']]['call'](qE,rh);}}},'builds'(rq,rr){if(isPlainObject(rq))return this['builds']('',rq);let [rs,rt,ru,rv,rw,rx,ry]='string'==typeof rq?[rq]:rq,rz={'autoDismiss':!rx,'canceledOnTouchOutside':!rx,'checkBoxPrompt':ry?'string'==typeof ry?ry:this['text']['no_more_prompt']:void 0x0},rA=rr||{};[['title',rs,this['colors']['title']],['content',rt,this['colors']['content']],['neutral',ru,this['colors']['button'],this['text']['btn']],['negative',rv,this['colors']['button'],this['text']['btn']],['positive',rw,this['colors']['button'],this['text']['btn']]]['map'](rq=>{let [rr,rs]=rq;return $$und(rs)&&!$$und(rA[rr])&&rq['splice'](0x1,0x1,rA[rr]),rq;})['forEach'](rq=>rO['apply'](this,rq)),Object['assign'](rz,rA),['title','content']['forEach'](rq=>{rq in rz&&(rz[rq]=String(rz[rq]));});let rG=this['build'](rz);if(rA['linkify']&&this['linkify'](rG),void 0x0!==rA['keycode_back']){let rq=rA['keycode_back'];('disabled'===rq||$$func(rq)||$$F(rq))&&this['disableBack'](rG,rq);}return ui['post'](()=>{let rq=rG['getWindow'](),rr=rA['dim_amount'];if('number'==typeof rr){for(;rr>0x1;)rr/=0x64;rq['setDimAmount'](rr);}let rs=rA['background'];'string'==typeof rs?rs['match'](/^#/)?rq['setBackgroundDrawable'](new qm(colorsx['toInt'](rs))):rq['setBackgroundDrawableResource'](android['R']['color'][rs]):'number'==typeof rs&&rq['setBackgroundDrawable'](new qm(rs));let rt=rA['animation'];'string'==typeof rt&&(rt=rt['split']('_')['map'](rq=>rq['toTitleCase']())['join'](''),'Default'===rt?rq['setWindowAnimations'](android['R']['style']['Animation']):rq['setWindowAnimations'](android['R']['style']['Animation_'+rt]));let ru=rA['is_keep_screen_on'];void 0x0!==ru&&ru&&rq['addFlags'](qh['FLAG_KEEP_SCREEN_ON']);}),rG;function rO(rq,rr,rs,rt){if(!rA[rq]||Array['isArray'](rA[rq])){let [ru,rv]=Array['isArray'](rr)?rr:[rr];ru&&('content'!==rq||rt||(rt=qq['contents']),rA[rq]=rt&&rt[ru]||ru);let rw=rq+'Color',rx=rA[rw]||rs[rv]||rv||rs['default'];rA[rw]=colorsx['toInt'](rx);}}},'rawInput':(rX,rY,rZ)=>qq['isUiThread']()&&!rZ?new Promise(rZ=>{qq['rtDialogs']()['rawInput'](rX,rY||'',function(){rZ['apply'](null,[]['slice']['call'](arguments));});}):qq['rtDialogs']()['rawInput'](rX,rY||'',rZ||null),'input'(s1,s2,s3){if(s3)return this['rawInput'](s1,s2||'',s4=>s3(eval(s4)));if(qq['isUiThread']())return new Promise(s5=>{qq['rtDialogs']()['rawInput'](s1,s2||'',s6=>s5(eval(s6)));});let s7=this['rawInput'](s1,s2||'',s3||null);return'string'==typeof s7?eval(s7):void 0x0;},'alert':(s8,s9,sa)=>qq['isUiThread']()&&!sa?new Promise(sa=>{qq['rtDialogs']()['alert'](s8,s9||'',function(){sa['apply'](null,[]['slice']['call'](arguments));});}):qq['rtDialogs']()['alert'](s8,s9||'',sa||null),'alertTitle'(sc,sd,se){let sf=global['_$_alert_title_info']=global['_$_alert_title_info']||{};sf[sc]=sf[sc]||{},sf['message_showing']?++sf['message_showing']:sf['message_showing']=0x1;let sg=sf[sc]['ori_text']||'',sh=sf[sc]['ori_text_color']||'',si=sf[sc]['ori_bg_color']||'',sj=sc['getTitleView']();function sk(sc,sd,se){let sf=sc['getTitleView'](),[sg,sh]=se;ui['run'](()=>{sf['setText'](sd),sf['setTextColor'](sg),sf['setBackgroundColor'](sh);});}sg||(sf[sc]['ori_text']=sg=sj['getText']()),sh||(sf[sc]['ori_text_color']=sh=sj['getTextColors']()['getColorForState'](util['java']['array']('int',0x0),colors['parseColor']('#de000000'))),si||(sf[sc]['ori_bg_color']=-0x1),sk(sc,sd,this['colors']['title']['alert']['map'](colorsx['toInt'])),0x0===se||setTimeout(function(){--sf['message_showing']||sk(sc,sg,[sh,si]);},se||0xbb8);},'alertContent'(sr,st,su){let sv=sr['getContentView'](),sw=sv['getText']()['toString'](),sx='append'===su||!0x0===su,[sy,sz]=this['colors']['content']['alert']['map'](sr=>colorsx['toInt'](sr));ui['post'](()=>{sv['setText']((sx?sw+'\x0a\x0a':'')+st),sv['setTextColor'](sy),sv['setBackgroundColor'](sz);});},'prompt'(sB,sC,sD){return this['rawInput'](sB,sC,sD);},'confirm':(sE,sF,sG)=>qq['isUiThread']()&&!sG?new Promise(sG=>{qq['rtDialogs']()['confirm'](sE,sF||'',function(){sG['apply'](null,[]['slice']['call'](arguments));});}):qq['rtDialogs']()['confirm'](sE,sF||'',sG||null),'select'(sI,sJ,sK){return sJ instanceof Array?qq['isUiThread']()&&!sK?new Promise(sK=>{qq['rtDialogs']()['select'](sI,sJ,function(){sK['apply'](null,[]['slice']['call'](arguments));});}):qq['rtDialogs']()['select'](sI,sJ,sK||null):qq['rtDialogs']()['select'](sI,[]['slice']['call'](arguments,0x1),null);},'singleChoice':(sM,sN,sO,sP)=>qq['isUiThread']()&&!sP?new Promise(sP=>{qq['rtDialogs']()['singleChoice'](sM,sO||0x0,sN,function(){sP['apply'](null,[]['slice']['call'](arguments));});}):qq['rtDialogs']()['singleChoice'](sM,sO||0x0,sN,sP||null),'multiChoice'(sR,sS,sT,sU){let sV=sR=>{let sS=[];for(let sT=0x0,sU=sR['length'];sTsU(sV(sR)))):qq['isUiThread']()?new Promise(sU=>{qq['rtDialogs']()['multiChoice'](sR,sT||[],sS,sR=>sU(sV(sR)));}):sV(qq['rtDialogs']()['multiChoice'](sR,sT||[],sS,null));},'dismiss'(t3){(Array['isArray'](t3)?t3:[]['slice']['call'](arguments))['forEach'](t3=>{'object'==typeof t3&&t3['dismiss']&&t3['dismiss']();});},'clearPool'(){this['pool']['clear']();},'disableBack':(t5,t6)=>(t5['setOnKeyListener']({'onKey':(t7,t8,t9)=>t9['getAction']()===qk['ACTION_UP']&&('function'==typeof t6&&t6(t5),t8===qk['KEYCODE_BACK'])}),t5),'getTitleText':ta=>ta?ta['getTitleView']()['getText']()['toString']():'','setTitleText'(tb,tc){ui['run'](()=>{tb&&tb['getTitleView']()['setText'](tc?tc['toString']():'');});},'setTitleTextColor'(td,te){ui['run'](()=>{td&&td['getTitleView']()['setTextColor'](colorsx['toInt'](this['colors']['wrap'](te,'title')));});},'setTitleBackgroundColor'(tf,tg){ui['run'](()=>{tf&&tf['getTitleView']()['setBackgroundColor'](colorsx['toInt'](this['colors']['wrap'](tg,'title')));});},'getContentText':th=>th?th['getContentView']()['getText']()['toString']():null,'setContentText'(ti,tj){ui['run'](()=>{ti&&ti['getContentView']()['setText'](tj?tj['toString']():'');});},'appendContentText'(tk,tl){ui['run'](()=>{tk&&tk['getContentView']()['setText'](this['getContentText'](tk)+(tl?tl['toString']():''));});},'setContentTextColor'(tm,tn){ui['run'](()=>{tm&&tm['getContentView']()['setTextColor'](colorsx['toInt'](this['colors']['wrap'](tn,'content')));});},'setContentBackgroundColor'(to,tp){ui['run'](()=>{to&&to['getContentView']()['setBackgroundColor'](colorsx['toInt'](this['colors']['wrap'](tp,'content')));});},'getInputText':tq=>tq?tq['getInputEditText']()['getText']()['toString']():'','setInputText'(tr,tt){let tu='string'==typeof tt?tt:void 0x0!==tt?tt['toString']():'';ui['run'](()=>tr&&tr['getInputEditText']()['setText'](tu));},'setInputTextColor'(tv,tw){ui['run'](()=>{tv&&tv['getInputEditText']()['setTextColor'](colorsx['toInt'](tw));});},'setInputBackgroundColor'(tx,ty){ui['run'](()=>{tx&&tx['getInputEditText']()['setBackgroundColor'](colorsx['toInt'](ty));});},'linkify'(tz,tA){if(tz){let tB=tz['getContentView']();ui['run'](()=>{let tz=tB['getText']()['toString']();tB['setAutoLinkMask'](qj[tA||'ALL']),tB['setText'](tz);});}},'getDialogAction'(tD){try{switch(tD['toLowerCase']()){case'positive':return qo['valueOf']('POSITIVE');case'negative':return qo['valueOf']('NEGATIVE');case'neutral':return qo['valueOf']('NEUTRAL');}}catch(tE){return null;}throw TypeError('unknown\x20action\x20of\x20dialogsx.getDialogAction');},'getActionButton'(tF,tG){let tH=tG['toLowerCase']();if(tF instanceof qp){let tG=this['getDialogAction'](tH);if(null!==tG)return tF['getActionButton'](tG)['getText']()['toString']();if('object'==typeof tF[tH+'Button'])return tF[tH+'Button']['getText']();}return tF instanceof qn?tF['getActionButton'](tH):'';},'setActionButton'(tJ,tK,tL,tM){let tN=function(tK){let tN=tK['toLowerCase']();tJ instanceof qp?ui['run'](()=>{let tK=this['getDialogAction'](tN);null!==tK?tJ['setActionButton'](tK,tL):'object'==typeof tJ[tN+'Button']&&tJ[tN+'Button']['setText'](tL);}):ui['run'](()=>tJ['setActionButton'](tN,tL)),tM&&this['setActionButtonColor'](tJ,tN,tM);}['bind'](this);Array['isArray'](tK)?tK['forEach'](tN):tN(tK);},'setActionButtonColor'(tR,tS,tT){let tU=function(tS){let tU=tS['toLowerCase'](),tX=colorsx['toInt'](this['colors']['wrap'](tT,'button')),tY=this['getDialogAction'](tU);ui['run'](()=>null!==tY?tR['getActionButton'](tY)['setTextColor'](tX):tR instanceof qp&&'object'==typeof tR[tU+'Button']?tR[tU+'Button']['setTextColor'](tX):void 0x0);}['bind'](this);Array['isArray'](tS)?tS['forEach'](tU):tU(tS);},'buildCountdown'(tZ,u0){let u1=Object['assign']({'keycode_back':()=>ub['pause'](0x64)},u0),u2=u1['onNeutral']||(tZ=>tZ),u3=u1['onNegative']||(tZ=>tZ),u4=u1['onPositive']||(tZ=>tZ),u5=u1['onTimeout'];if('function'!=typeof u5&&'string'!=typeof u5)throw Error('onTimeout\x20for\x20dialogsx.buildCountdown()\x20must\x20be\x20specified');let u9=0x0,ua=u1['timeout']||0x5;ua>0x64&&(ua=Math['round'](ua/0x3e8));let ub={'neutral'(){this['pause'](0x12c),u2(uc);},'negative'(){this['pause'](0x12c),u3(uc);},'positive'(){u9=0x1,this['pause'](0x64),u4(uc);},'pause'(tZ){qq['interrupt'](),setTimeout(()=>{if('function'==typeof u1['onPause'])return u1['onPause'](uc);if('object'==typeof u1['onPause']){let tZ=u1['onPause'];'function'==typeof tZ['action']&&tZ['action'](uc),[{'key':'title','get':tZ=>qr['getTitleText'](tZ),'set'(tZ,u0,u1){qr['setTitleText'](tZ,u1);}},{'key':'content','get':tZ=>qr['getContentText'](tZ),'set'(tZ,u0,u1){qr['setContentText'](tZ,u1);}},{'key':'neutral','get':(tZ,u0)=>qr['getActionButton'](tZ,u0),'set'(tZ,u0,u1){qr['setActionButton'](tZ,u0,u1);}},{'key':'negative','get':(tZ,u0)=>qr['getActionButton'](tZ,u0),'set'(tZ,u0,u1){qr['setActionButton'](tZ,u0,u1);}},{'key':'positive','get':(tZ,u0)=>qr['getActionButton'](tZ,u0),'set'(tZ,u0,u1){qr['setActionButton'](tZ,u0,u1);}}]['forEach'](u0=>{let u2=u0['key'];if(tZ[u2])if(Array['isArray'](tZ[u2])){let [u1,u3]=tZ[u2];u0['set'](uc,u2,u0['get'](uc,u2)['replace'](u1,u3));}else u0['set'](uc,u2,tZ[u2]);else u1[u2]&&u0['set'](uc,u2,u1[u2]);});}},tZ||0x320);},'block'(tZ){let u0=tZ||{},u1=u0['onStart']||(tZ=>tZ),u2=u0['onTimeout']||(tZ=>tZ),u3=u0['onUnblock']||(tZ=>tZ),u4=Date['now'](),u5=u0['timeout']||0x1;for(u5<0x64&&(u5*=0xea60),u1(uc);!u9;)Date['now']()-u4>u5&&(this['pause'](0x64),u2(uc)),sleep(0x78);u3(uc);}},uc=Object['create'](qr['builds'](tZ,u1)['on']('neutral',()=>ub['neutral']())['on']('negative',()=>ub['negative']())['on']('positive',()=>ub['positive']())),ud={'act':()=>(uc['isShowing']()||uc['show'](),ue),'block':tZ=>(ub['block'](tZ),ue)},ue=Object['assign'](uc,ud),qq=threads['start'](function(){let tZ=qr['getContentText'](uc),u0=/%timeout%/,u2=tZ['match'](u0)?function(u1){uc['setContent'](tZ['replace'](u0,u1['toString']()));}:tZ=>tZ,u3=u1['timeout_button'],u4=u3&&uc['getActionButton'](u3),u9=u3?function(tZ){uc['setActionButton'](u3,u4+'\x20\x20[\x20'+tZ+'\x20]');}:tZ=>tZ;for(;u2(ua),u9(ua),!(ua<=0x0);)ua-=0x1,sleep(0x3e8);let ud=u5;'function'==typeof ud&&(ud=u5(uc)),ub[ud]['call'](ub);});return ue;},'buildFlow'(v8){let v9=this,va=Object['create'](v9['builds']([v8['title']||'',v8['steps']['map']((v8,v9)=>'\u3000\x20'+ ++v9+'.\x20'+v8['desc'])['join']('\x0a'),0x0,0x0,'I',0x1],{'progress':{'max':0x64,'showMinMax':!!v8['show_min_max']}})),vb={'act'(){let vb=new Promise(v9=>{va['on']('positive',()=>{global['_$_dialog_flow_interrupted']=!0x0;}),'function'==typeof v8['onStart']&&v8['onStart'](v8['initial_value'],va),v9(v8['initial_value']);});return v8['steps']['forEach']((v8,vc)=>{vb=vb['then'](vb=>{if(global['_$_dialog_flow_interrupted'])throw Error(qr['text']['user_interrupted']);let vk=v9=>(va['setProgress'](0x64),vK(vc+0x1),v8['onSuccess']&&v8['onSuccess'](vb),v9);va['setProgress'](0x0),function(v8){let vb=v8['toString'](),vc=v9['getContentText'](va);v9['setContentText'](va,vc['replace'](/^(. )(\d)(?=\.)/gm,(v8,v9,va)=>(va===vb?'▶\x20':v9)+va));}(vc+0x1);let vs=v8['action'](vb,va);return vs instanceof Promise?(vs=vs['then'](vk),vs):vk(vs);},v8['onFailure']);}),vb=vb['then'](vb=>{if(global['_$_dialog_flow_interrupted'])throw Error(qr['text']['user_interrupted']);v9['setProgressColorTheme'](va,'finish'),vK('all'),va['removeAllListeners']('positive'),va['setActionButton']('positive',qr['text']['btn']['F']),va['on']('positive',v8=>v8['dismiss']());let vc=v8['success_title'];vc&&v9['setTitleText'](va,vc);let vw=v8['success_content'];vw&&v9['appendContentText'](va,'\x0a\x0a'+vw),delete global['_$_dialog_flow_interrupted'],'function'==typeof v8['onSuccess']&&v8['onSuccess'](vb,va);}),vb['catch'](v9=>{delete global['_$_dialog_flow_interrupted'],'function'==typeof v8['onFailure']&&v8['onFailure']({'message':v9,'btn_text':qr['text']['btn'][v8['on_interrupt_btn_text']||'B'],'onPositive'(){qr['clearPool'](),exit();}},va);}),va['isShowing']()||va['show'](),vc;},'setStepDesc'(v9,vb,vA){if(v9<0x1)throw Error('step_num\x20is\x20less\x20than\x201');if(v9>=v8['steps']['length'])throw Error('step_num\x20must\x20be\x20less\x20than\x20steps\x20length');let vB=v9['toString'](),vC=va['getContentView'](),vD=vC['getText']()['toString'](),vE=v8['steps'][vB-0x1]['desc'];if(vD['match'](vE)){let v8=(vA?vE:'')+(vb||'');vC['setText'](vD['replace'](vE,v8));}return vc;},'setProgressData'(v8){if('object'==typeof v8){let v9=v8['processed']/v8['total']*0x64||0x0;va['setProgress'](Math['min'](Math['max'](0x0,v9),0x64));}return vc;},'setFailureData':v8=>(va['setActionButton']('positive',v8['btn_text']||qr['text']['btn']['B']),va['removeAllListeners']('positive'),va['on']('positive',v8['onPositive']||(v8=>v8['dismiss']())),qr['alertContent'](va,v8['message'],'append'),vc)},vc=Object['assign'](va,vb);return vc;function vK(v8){let vb='all'!==v8&&v8?v8:0x1/0x0,vc=v9['getContentText'](va);v9['setContentText'](va,vc['replace'](/^(. )(\d)(?=\.)/gm,(v8,v9,va)=>(va<=vb?'✔\x20':v9)+va));}},'buildProgress'(vR){let vS=Object['create'](qr['builds']([vR['title']||'',vR['content']||vR['desc']||'',0x0,0x0,'I',0x1],{'progress':{'max':0x64,'showMinMax':!!vR['show_min_max']}})),vT={'act':()=>(Promise['resolve'](vR['initial_value'])['then'](vT=>('function'==typeof vR['onStart']&&vR['onStart'](vR['initial_value'],vS),vT))['then'](vT=>{if(vS['on']('positive',()=>{global['_$_dialog_flow_interrupted']=!0x0;}),global['_$_dialog_flow_interrupted'])throw Error(qr['text']['user_interrupted']);return vR['action'](vT,vS);})['then'](vT=>{if(global['_$_dialog_flow_interrupted'])throw Error(qr['text']['user_interrupted']);qr['setProgressColorTheme'](vS,'finish'),vS['setProgress'](0x64),vS['removeAllListeners']('positive'),vS['setActionButton']('positive',qr['text']['btn']['F']),vS['on']('positive',vR=>vR['dismiss']());let vU=vR['success_title'];vU&&qr['setTitleText'](vS,vU);let w0=vR['success_content'];w0&&qr['appendContentText'](vS,'\x0a\x0a'+w0),delete global['_$_dialog_flow_interrupted'],'function'==typeof vR['onSuccess']&&vR['onSuccess'](vT,vS);})['catch'](vT=>{qr['setProgressColorTheme'](vS,'error'),vS['removeAllListeners']('positive');let vU=qr['text']['btn'][vR['on_interrupt_btn_text']||'B'];vS['setActionButton']('positive',vU),vS['on']('positive',vR=>vR['dismiss']()),qr['alertContent'](vS,vT,'append'),delete global['_$_dialog_flow_interrupted'],'function'==typeof vR['onFailure']&&vR['onFailure'](vT,vS);}),vS['isShowing']()||vS['show'](),vU),'setStepDesc'(vT,w5){let w6=vS['getContentView'](),w7=w6['getText']()['toString'](),w8=vR['content']||'';if(w7['match'](w8)){let vR=(w5?w8:'')+(vT||'');w6['setText'](w7['replace'](w8,vR));}return vU;},'setProgressData':vR=>(vS['setProgress'](vR['processed']/vR['total']*0x64),vU)},vU=Object['assign'](vS,vT);return vU;},'setProgress'(wb,wc,wd){let we='object'==typeof wc?wc['processed']/wc['total']*0x64:wc;ui['run'](()=>wb['getProgressBar']()['setProgress'](we,!!wd));},'setProgressTintList'(wf,wg){let wh=colorsx['toInt'](this['colors']['wrap'](wg,'progress')),wi=ql['valueOf'](wh);wf['getProgressBar']()['setProgressTintList'](wi);},'setProgressTintLists'(wj,wk){let wl=wk;if(!Array['isArray'](wl))if('string'==typeof wl)wl=this['colors']['progress'][wk]||[wl];else{if('number'!=typeof wl)throw Error('Unknown\x20colors\x20type\x20for\x20dialogsx.setProgressTintLists()');wl=[wl];}let [wm,wn]=wl;wm&&this['setProgressTintList'](wj,wm),wn&&this['setProgressBackgroundTintList'](wj,wn);},'setProgressColorTheme'(wo,wp){let wq=wp;if(!Array['isArray'](wq))if('string'==typeof wq)wq=this['colors']['progress'][wp]||[wq];else{if('number'!=typeof wq)throw Error('Unknown\x20colors\x20type\x20for\x20dialogsx.setProgressColorTheme()');wq=[wq];}let [wr,ws,wt]=wq;wr&&this['setProgressTintList'](wo,wr),ws&&this['setProgressBackgroundTintList'](wo,ws),wt&&this['setActionButtonColor'](wo,'positive',wt);},'setProgressBackgroundTintList'(wu,wv){let ww=colorsx['toInt'](wv),wx=ql['valueOf'](ww);wu['getProgressBar']()['setProgressBackgroundTintList'](wx);},'setProgressNumberFormat'(wy,wz,wA){ui['run'](()=>wy['setProgressNumberFormat'](java['lang']['String']['format'](wz,wA)));},'clearProgressNumberFormat'(wB){ui['run'](()=>wB['setProgressNumberFormat'](''));},'performClick'(wC,wD){let wE=String(wD)['toLowerCase'](),wF=this['getDialogAction'](wE);null!==wF&&wC['getActionButton'](wF)['performClick']();},'alerts'(wG,wH){let wI=wH||{},wJ=wG||'',wK=wI['text_color']||'#E5FFFF',wL=wI['text_font_family']||'sans-serif-condensed',wM=wI['text_gravity']||'center',wN=wI['text_line_spacing']||'5cx',wO=wI['text_size']||0x12,wP=wI['button_width']||0x64,wQ=wI['button_text']||'OK',wR=wI['button_text_color']||'#E5FFFF',wS=wI['button_text_size']||0xf,qq=wI['button_bg_tint_color']||'#00251A',wU=wI['button_font_family']||'sans-serif',wV=wI['button_layout_gravity']||'center',wW=wI['dialog_bg_color']||colorsx['hrgba']('#005B4F91'),wX=wI['dialog_dim_amount']||0x5a,wY=ui['inflate']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20');wY['text']['attr']('text',wJ),wY['text']['attr']('text_color',wK),wY['text']['attr']('text_size',wO),wY['text']['attr']('font_family',wL),wY['text']['attr']('gravity',wM),wY['text']['attr']('line_spacing',wN),wY['btn']['attr']('width',wP),wY['btn']['attr']('text',wQ),wY['btn']['attr']('text_size',wS),wY['btn']['attr']('text_color',wR),wY['btn']['attr']('layout_gravity',wV),wY['btn']['attr']('background_tint',qq),wY['btn']['attr']('font_family',wU),wY['btn']['on']('click',()=>wZ['dismiss']());let wZ=this['builds']({'customView':wY,'canceledOnTouchOutside':!0x1,'background':wW,'animation':'input_method','dim_amount':wX,'keycode_back':wG=>wG['dismiss']()})['show']();}};qd['exports']={'dialogsx':qr};},763:(x1,x2,x3)=>{let {threadsx:n}=x3(0xef),x4=java['io']['File'],x5=java['io']['FileInputStream'],x6=java['io']['FileOutputStream'],x7=java['io']['BufferedInputStream'],x8=java['io']['BufferedOutputStream'],x9=java['util']['zip']['CheckedOutputStream'],xa=java['util']['zip']['ZipOutputStream'],xb=java['util']['zip']['ZipEntry'],xc=java['util']['zip']['ZipFile'],xd=java['util']['zip']['CRC32'],xe=org['autojs']['autojs']['Pref'],xf={'copy'(x1,x2,x3){let xk=files['path'](x1),x7=files['path'](x2),x8=x3||{},x9=x8['onCopyStart']||x8['onStart']||(x1=>x1),xa=x8['onCopyProgress']||x8['onProgress']||(x1=>x1),xb=x8['onCopySuccess']||x8['onSuccess']||(x1=>x1),xc=x8['onCopyFailure']||x8['onFailure']||console['error'];try{return function(x1,x2){x9(),files['createWithDirs'](x2);let x3=new x4(x2);try{return function(x1,x2,x3){let x5=util['java']['array']('byte',0x2000),x6=new x4(xk)['length'](),x7=0x0;try{for(;x1['available']()>0x0;){let x3=x1['read'](x5);x3>0x0&&(x2['write'](x5,0x0,x3),xa({'processed':x7+=x3,'total':x6}));}x3&&(x1['close'](),x2['close']()),xb();}catch(xE){xc(xE);}}(x1,new x6(x3),!0x0),!0x0;}catch(xF){return xc(xF),!0x1;}}(new x5(xk),x7);}catch(xG){return xc(xG),!0x1;}}},xg={'sep':x4['separator'],'json':{'replacer':(x1,x2)=>'number'!=typeof x2||!isNaN(x2)&&isFinite(x2)?x2:'\ufeff'+x2['toString']()+'\ufeff','reviver'(x1,x2){let x3=/^\ufeff(.+)\ufeff$/;return'string'==typeof x2&&x2['match'](x3)?Number(x2['replace'](x3,'$1')):x2;}},'.local'(x1){let x2=files['join'](files['getSdcardPath'](),'.local');files['isFile'](x2)&&files['remove'](x2);let x3=files['join']['apply'](files,[x2]['concat']([]['slice']['call'](arguments)));return files['createWithDirs'](x3['slice'](0x0,x3['lastIndexOf'](this['sep'])+0x1)),x3;},'run'(x1,x2){x1['match'](/^(launcher|settings)\$$/)&&(x1='ant-forest-'+x1['slice'](0x0,-0x1)+'.js');let x3=files['path'](x1['match'](/\.js$/)?x1:x1+'.js');return'object'==typeof x2?(x2['monitor']&&(n['monitor'](x2['monitor']),delete x2['monitor']),engines['execScriptFile'](x3,{'arguments':x2})):engines['execScriptFile'](x3,null);},'zip'(x1,x2,x3,xV){let x8,xc,xe,xf,y0,y1=function(){global['_$_dialog_flow_interrupted']=!0x1,[y0,xf,xe,xc,x8]['forEach'](x1=>{try{x1&&x1['close']();}catch(y7){}});},y2=x3||{},y3=xV||{},y4=x1=>{let x2=y2['onZipFailure']||y2['onFailure'];return'function'==typeof x2?x2(x1):toastLog(x1),!0x1;},y5=y2['onZipStart']||y2['onStart'];'function'==typeof y5&&y5();let ya=files['path'](x1);if(!files['exists'](ya))throw Error('无效的压缩源');let yb=new x4(ya);ya=yb['getAbsolutePath']();let yc=x2?files['path'](x2):ya+'.zip',yd=new x4(yc);yc=yd['getAbsolutePath'](),'zip'!==files['getExtension'](yc)&&(yd=new x4(yc+='.zip')),files['exists'](yc)&&files['remove'](yc);let ye=0x0,yf=this['getDirSize'](ya);try{xe=new x6(yd),xf=new x9(xe,new xd()),y0=new xa(xf),function(x1){return y3['is_exclude_root_folder']&&x1['isDirectory']()?x1['listFiles']()['filter'](x1=>x1['getAbsolutePath']()!==yd['getAbsolutePath']())['forEach'](x1=>x2(x1)):x2(x1);function x2(x1,x3){let xV=(x3?x3+xg['sep']:'')+x1['getName']();if(x1['isFile']()){let x2,x3=0x400,x4=util['java']['array']('byte',x3);for(y0['putNextEntry'](new xb(xV)),x8=new x5(x1),xc=new x7(x8);(x2=xc['read'](x4,0x0,x3))>-0x1;){if(global['_$_dialog_flow_interrupted'])return y1(),y4('用户终止');y0['write'](x4,0x0,x2);}y0['closeEntry'](),xc['close'](),x8['close']();let x6=y2['onZipProgress']||y2['onProgress'];'function'==typeof x6&&x6({'processed':ye+=x1['length'](),'total':yf});}else x1['listFiles']()['filter'](x1=>x1['getAbsolutePath']()!==yd['getAbsolutePath']())['forEach'](x1=>x2(x1,xV));}}(yb),y1();let x1=y2['onZipSuccess']||y2['onSuccess'];return'function'==typeof x1&&x1({'zipped_path':yc}),y3['is_delete_source']&&this['removeWithDirs'](ya,{'is_async':!0x0}),!0x0;}catch(yu){return y4('压缩失败:\x0a'+yu);}},'unzip'(x1,x2,x3,yz){let x5,x9,xa,xb=function(){global['_$_dialog_flow_interrupted']=!0x1,[x9,x5,xa]['forEach'](x1=>{try{x1&&x1['close']();}catch(yI){}});},xd=x3||{},xe=x1=>{let x2=xd['onUnzipFailure']||xd['onFailure'];return'function'==typeof x2?x2(x1):toastLog(x1),!0x1;},xf=xd['onUnzipStart']||xd['onStart'];'function'==typeof xf&&xf();let yL=yz||{},yM=files['path'](x1);if(files['exists'](yM)||(yM+='.zip'),!files['exists'](yM))throw Error('解压缩源不存在');let yN=new x4(yM),yO=yN['length'](),yP=yN['getName'](),yQ=yP['slice'](0x0,yP['lastIndexOf']('.')),yR=files['path'](x2);yR&&files['exists'](yR)||(yR=yM['slice'](0x0,yM['lastIndexOf'](this['sep']))),yL['to_archive_name_folder']&&(yR=files['join'](yR,yQ)),files['createWithDirs'](yR+this['sep']);try{let x1=0x0,x2=0x400,x3=util['java']['array']('byte',x2),yz=new xc(yN),xf=yz['entries']();for(;xf['hasMoreElements']();){let xc=xf['nextElement'](),yL=xc['getCompressedSize'](),yM=xc['getName'](),yN=files['join'](yR,yM);files['createWithDirs'](yN+(xc['isDirectory']()?xg['sep']:''));let yP=new x4(yN);if(yP['isDirectory']())continue;let yQ=-0x1;for(x5=new x6(yP),x9=new x8(x5),xa=new x7(yz['getInputStream'](xc));(yQ=xa['read'](x3,0x0,x2))>-0x1;){if(global['_$_dialog_flow_interrupted'])return xb(),xe('用户终止');x5['write'](x3,0x0,yQ);}let z3=xd['onUnzipProgress']||xd['onProgress'];'function'==typeof z3&&z3({'processed':x1+=yL,'total':yO});}xb();let yP=xd['onUnzipSuccess']||xd['onSuccess'];return'function'==typeof yP&&yP({'unzipped_path':yR}),yL['is_delete_source']&&this['removeWithDirs'](yM,{'is_async':!0x0}),!0x0;}catch(z5){return xe('解压失败:\x0a'+z5);}},'isValidZip'(x1){let x2=files['path'](x1);if(!x2||!files['exists'](x2))return!0x1;let x3=new x4(x2);if('zip'!==files['getExtension'](x3['getName']()))return!0x1;let z9=null;try{return z9=new xc(x3),!0x0;}catch(za){return!0x1;}finally{try{null!==z9&&(z9['close'](),z9=null);}catch(zb){}}},'copy'(x1,x2,x3,x5){let x6=x5||{},x7=x6['onCopyStart']||x6['onStart']||(x1=>x1),x8=x6['onCopyProgress']||x6['onProgress']||(x1=>x1),x9=x6['onCopySuccess']||x6['onSuccess']||(x1=>x1),xa=x6['onCopyFailure']||x6['onFailure']||console['error'];x1&&x2||xa('Source\x20and\x20target\x20path\x20must\x20be\x20both\x20defined'),files['isDir'](x2)||xa('Target\x20path\x20must\x20be\x20a\x20directory');let xb=new x4(files['path'](x1))['getAbsolutePath'](),xc=new x4(files['path'](x2))['getAbsolutePath'](),xd=x3||{},xe=xd['is_unbundled'],xg=()=>{let x1=!0x0,x2=0x0,x3=0x1,zw=(x4,x5)=>{let x6=files['join'](x5,files['getName'](x4));files['isFile'](x4)?(xf['copy'](x4,x6)||(x1=!0x1),x8({'processed':x2+=0x1,'total':x3})):files['listDir'](x4)['forEach'](x1=>{zw(files['join'](x4,x1),x6);});};if('function'==typeof x7&&x7(),files['isDir'](xb)){xe||(xc=files['join'](xc,files['getName'](xb)));let x1=files['listDir'](xb,function(x1){return'function'!=typeof xd['filter']||xd['filter'](x1);});x3=x1['length'],x1['forEach'](x1=>zw(files['join'](xb,x1),xc));}else zw(xb,xc);return x1&&x9(),x1||xa('An\x20error\x20has\x20occurred\x20in\x20files.copy()'),x1;};if(!xd['is_async'])return xg();n['start'](xg);},'getScriptDirPath':()=>'function'==typeof xe['getScriptDirPath']?xe['getScriptDirPath']():com['stardust']['autojs']['core']['pref']['Pref']['INSTANCE']['getScriptDirPath'](),'isScriptDirPath'(x1){return new x4(files['path'](x1))['getAbsolutePath']()===this['getScriptDirPath']();},'getDirSize'(x1){let x2=files['path'](x1);if(!files['exists'](x2))throw Error('path\x20of\x20filesx.getDirSize()\x20is\x20not\x20exist');return files['isFile'](x2)?new x4(x2)['length']():new x4(x2)['listFiles']()['reduce']((x1,x2)=>x1+(x2['isDirectory']()?this['getDirSize'](x2):x2['length']()),0x0);},'removeWithDirs'(x1,x2,x3){let x4=x2||{},x5=x3||{},x6=x5['onRemoveStart']||x5['onStart']||(x1=>x1),x7=x5['onRemoveProgress']||x5['onProgress']||(x1=>x1),x8=x5['onRemoveSuccess']||x5['onSuccess']||(x1=>x1),x9=x5['onRemoveFailure']||x5['onFailure']||console['error'],xa=0x0,xb=0x1,xc=()=>{let x2=!0x0;if(x6(),files['isFile'](x1))x2=xd(x1);else{if(!files['isDir'](x1))throw Error('Cannot\x20parse\x20path\x20for\x20filesx.removeWithDirs()');{let x3=files['listDir'](x1);xb=x3['length'],x3['forEach'](x3=>{x2=xd(files['join'](x1,x3))&&x2;}),files['remove'](x1);}}return x2&&x8(),x2||x9('An\x20error\x20has\x20occurred\x20in\x20files.removeWithDirs()'),x2;},xd=x1=>{let x2=files['isDir'](x1)?files['removeDir'](x1):!!files['isFile'](x1)&&files['remove'](x1);return x7({'progress':xa+=0x1,'total':xb}),x2;};try{return x4['is_async']?n['start'](xc):xc();}catch(A4){x9(A4);}},'listAllFiles'(x1){let x2=[];return'string'==typeof x1&&(x1=new x4(files['path'](x1))),function x1(x3){x3['isFile']()?x2['push'](x3):x3['isDirectory']()&&(x2['push'](x3),x3['listFiles']()['forEach'](x1));}(x1),x2;},'deleteRecursively'(x1){if('string'==typeof x1&&(x1=new x4(files['path'](x1))),x1['isDirectory']()){let x2=x1['listFiles']();if(null!==x2&&!x2['every'](x1=>this['deleteRecursively'](x1)))return!0x1;}return x1['delete']();},'deleteByList'(x1,x2,x3){let x4=this,x5=x2||{},x6=x3||{},x7=x6['onDeleteStart']||x6['onStart']||(x1=>x1),x8=x6['onDeleteProgress']||x6['onProgress']||(x1=>x1),x9=x6['onDeleteSuccess']||x6['onSuccess']||(x1=>x1),xa=x6['onDeleteFailure']||x6['onFailure']||console['error'];if(x5['is_async'])return xb();function xb(){x7();let x2=!0x0,x3=x4['listAllFiles'](x1)['reverse'](),Ar=0x0,x5=x3['length'];return x3['forEach'](x1=>{x2=x1['delete']()&&x2,x8({'processed':Ar+=0x1,'total':x5});}),x2&&x9(),x2||xa('An\x20error\x20has\x20occurred\x20in\x20files.deleteByList()'),x2;}n['start'](xb);},'read'(x1,x2){let x3=null;return files['exists'](x1)&&(x3=files['read'](x1)),x3||(void 0x0===x2?x3:x2);},'readJson'(x1,x2,x3){let AA=void 0x0===x2?{}:x2;try{return JSON['parse'](this['read'](x1),x3||this['json']['reviver'])||AA;}catch(AB){return AA;}},'write'(x1,x2){x1&&!files['exists'](x1)&&files['createWithDirs'](x1),files['write'](x1,x2);},'writeJson'(x1,x2,x3){this['write'](x1,JSON['stringify'](x2,x3||this['json']['replacer']));}};x1['exports']={'filesx':xg};},286:AH=>{let AI=android['os']['Looper'],AJ=android['widget']['Toast'],AK=java['lang']['Runnable'],AL=java['util']['zip']['GZIPInputStream'],AM=java['io']['ByteArrayInputStream'],AN=java['io']['ByteArrayOutputStream'];global['de']=Packages['de'],global['okhttp3']=Packages['okhttp3'],global['androidx']=Packages['androidx'];let AO={'compare':{'<':(AH,AI)=>AHAH<=AI,'>':(AH,AI)=>AH>AI,'>=':(AH,AI)=>AH>=AI,'=':(AH,AI)=>AH===AI},'isNullish':AH=>null==AH,'isPlainObject':AH=>'Object'===Object['prototype']['toString']['call'](AH)['slice'](0x8,-0x1)},AP={'string'(){String['prototype']['toTitleCase']||Object['defineProperty'](String['prototype'],'toTitleCase',{'value'(){return this['replace'](/([A-Za-z])([A-Za-z]*)/g,(AH,AI,AJ)=>AI['toUpperCase']()+AJ['toLowerCase']());}}),String['prototype']['capitalize']||Object['defineProperty'](String['prototype'],'capitalize',{'value'(){return this['valueOf']()['replace'](/\b\w+\b/g,AH=>AH['charAt'](0x0)['toUpperCase']()+AH['slice'](0x1));}}),String['prototype']['surround']||Object['defineProperty'](String['prototype'],'surround',{'value'(AH,AI){if(AO['isNullish'](AH))return this['valueOf']();let AJ=AI||{},AK=void 0x0===AJ['no_intelli_brackets']||!AJ['no_intelli_brackets'],AL=void 0x0===AJ['no_symmetrical']||!AJ['no_symmetrical'],AM=['()','[]','{}','<>','()','[]','{}','〈〉','《》','〔〕','【】','〖〗','‘’','“”'],AN=function(AH){let AI={};return AH['forEach'](AH=>{AI[AH[0x0]]=AH[0x1],AI[AH[0x1]]=AH[0x0];}),AI;}(AM),AP=AH['toString'](),Be=AP['split'](''),Bf=AP['split']('');if(AK){let AH=[];!function(AH,AI,AJ){let AK=AI||['()','[]','{}'],AL=function(AH){let AI={};return AH['forEach'](AH=>AI[AH[0x0]]=AH[0x1]),AI;}(AK),AM=function(AH){let AI={};return AH['forEach'](AH=>AI[AH[0x1]]=AH[0x0]),AI;}(AK),AN=[];(AJ=AJ||[])[0x0]=[],AJ[0x1]=[];for(let AI of AH)if(AI in AL)AN['push'](AI),AJ[0x0]['push'](AI);else{if(!(AI in AM))return!0x1;if(AM[AI]!==AN['pop']())return!0x1;AJ[0x1]['push'](AI);}return!AN['length'];}(AP,AM,AH)?Be['forEach']((AH,AI)=>{AH in AN&&(Bf[AI]=AN[AH]);}):[Be,Bf]=AH;}return AL&&(Bf=Bf['reverse']()),Be['join']('')+this['valueOf']()+Bf['join']('');}}),String['prototype']['ts']||Object['defineProperty'](String['prototype'],'ts',{'get'(){let AH,AI,AJ=String(this);if(AJ['length']<0x2||'`'!==AJ[0x0]||'`'!==AJ[AJ['length']-0x1])return AJ;for(;AH=AK(AJ);){let [AK,AL]=AH,AM=AI?'\x22':'';AJ=AJ['slice'](0x0,AK++)+AM+AJ['slice'](AK,AL++)['replace'](/\${(.*?)}/g,(AH,AI)=>Function('return\x20'+AI)())+AM+AJ['slice'](AL);}return AJ;function AK(AH){let AJ=[];Object['values'](AH)['forEach']((AH,AI)=>'`'===AH&&AJ['push'](AI));let AK=AJ['length']/0x2;if(AK>>0x0!==AK)throw Error('Backticks\x20must\x20come\x20in\x20pairs');return AI=AK>0x1,AK?AJ['slice'](AK-0x1,AK+0x1):null;}},'configurable':!0x0}),String['unTap']||Object['defineProperty'](String,'unTap',{'value':AH=>{let AI=[['A','B','C','D','E'],['F','G','H','I','J'],['L','M','N','O','P'],['Q','R','S','T','U'],['V','W','X','Y','Z']],AJ=AH['match'](/../g);return AJ?AJ['reduce']((AH,AJ)=>{let [AK,AL]=AJ;return AH+(+AK?AI[--AK][--AL]:AL);},String()):String();}}),String['unEsc']||Object['defineProperty'](String,'unEsc',{'value':AH=>'function'==typeof String['fromCharCode']?AH['replace'](/.{4}/g,AH=>String['fromCharCode'](parseInt(AH,0x10))):unescape(AH['replace'](/.{4}/g,'%u$&'))}),String['decodeGzip']||Object['defineProperty'](String,'decodeGzip',{'value'(AH,AI){let AJ,AK=new AN(),AO=new AL(new AM(AH)),AP=util['java']['array']('byte',0x400);for(;-0x1!==(AJ=AO['read'](AP));)AK['write'](AP,0x0,AJ);let C3=new java['lang']['String'](AK['toByteArray']())['toString']();return'json'===AI?JSON['parse'](C3):C3;}});},'object'(){Object['prototype']['__proto__']||Object['defineProperty'](Object['prototype'],'__proto__',{'get'(){return Object['getPrototypeOf'](Object(this))||this['__proto__'];},'set'(AH){if(Object(AH)!==AH)throw TypeError('Proto\x20must\x20be\x20an\x20non-primitive\x20type');this['__proto__']=AH;},'configurable':!0x0}),Object['size']||Object['defineProperty'](Object,'size',{'value'(AH,AI){if(Array['isArray'](AH))return AH['length'];if(!AO['isPlainObject'](AH))return-0x1;let AJ=AH=>Array['isArray'](AH)?AH:void 0x0===AH?[]:[AH],AK=AI||{},AL=AJ(AK['include']),AM=AJ(AK['exclude']);return Object['keys'](AH)['filter'](AH=>AL['length']?AL['includes'](AH):!AM['includes'](AH))['length'];}}),Object['getOwnNonEnumerableNames']||Object['defineProperty'](Object,'getOwnNonEnumerableNames',{'value':AH=>Object['getOwnPropertyNames'](AH)['filter'](AI=>!Object['prototype']['propertyIsEnumerable']['call'](AH,AI))}),Object['getNonEnumerableNames']||Object['defineProperty'](Object,'getNonEnumerableNames',{'value'(AH){let AI=AH,AJ={};for(;null!==AI;)Object['getOwnNonEnumerableNames'](AI)['forEach'](AH=>{AJ[AH]=AJ[AH]||!0x0;}),AI=Object['getPrototypeOf'](AI);return Object['keys'](AJ);}}),Object['getAllPropertyNames']||Object['defineProperty'](Object,'getAllPropertyNames',{'value'(AH){let AI=AH,AJ={};for(;null!==AI;)Object['getOwnPropertyNames'](AI)['forEach'](AH=>{AJ[AH]=AJ[AH]||!0x0;}),AI=Object['getPrototypeOf'](AI);return Object['keys'](AJ);}}),Object['assignDescriptors']||Object['defineProperty'](Object,'assignDescriptors',{'value'(AH,AI){if(void 0x0!==AI){let AI=[]['slice']['call'](arguments),AJ=AI['length'];for(;AJ-->0x1;){let AK=Object['getOwnPropertyDescriptors'](AI[AJ]);Object['defineProperties'](AH,AK);}}return AH;}}),Object['shallowClone']||(Object['shallowClone']=AH=>AO['isPlainObject'](AH)?Object['create'](Object['getPrototypeOf'](AH),Object['getOwnPropertyDescriptors'](AH)):Array['isArray'](AH)?AH['slice']():AH),Object['deepClone']||Object['defineProperty'](Object,'deepClone',{'value':function AH(AI){if(AO['isPlainObject'](AI)){let AJ={};return Object['getOwnPropertyNames'](AI)['forEach'](AK=>{let AL=Object['getOwnPropertyDescriptor'](AI,AK);'object'==typeof AL['value']&&(AL['value']=AH(AL['value'])),Object['defineProperty'](AJ,AK,AL);}),AJ;}return Array['isArray'](AI)?AI['map'](AH):AI;}}),Object['isDeepEqual']||Object['defineProperty'](Object,'isDeepEqual',{'value':function AH(AI,AJ){if(AO['isPlainObject'](AI)&&AO['isPlainObject'](AJ)){let AK=Object['getOwnPropertyNames'](AI),AL=Object['getOwnPropertyNames'](AJ);return AK['length']===AL['length']&&AK['every'](AK=>AH(AI[AK],AJ[AK]));}return Array['isArray'](AI)&&Array['isArray'](AJ)?AI['length']===AJ['length']&&AI['every']((AI,AK)=>AH(AI,AJ[AK])):AI===AJ;}});},'function'(){Function['prototype']['toRegular']||Object['defineProperty'](Function['prototype'],'toRegular',{'value'(){let AH=this;return'object'==typeof this['prototype']?this:function(){return AH['apply'](null,arguments);};}}),Function['prototype']['toRegularAndCall']||Object['defineProperty'](Function['prototype'],'toRegularAndCall',{'value'(AH){return this['toRegular']()['apply'](null,arguments);}}),Function['prototype']['toRegularAndApply']||Object['defineProperty'](Function['prototype'],'toRegularAndApply',{'value'(AH){if(!Array['isArray'](AH))throw Error('Param\x20args\x20must\x20be\x20an\x20Array');return this['toRegular']()['apply'](null,AH);}});},'number'(){Number['prototype']['ICU']||Object['defineProperty'](Number['prototype'],'ICU',{'value':function(){let AH='Hard\x20working\x20only'['split'](new RegExp('[your\x20health]'))['map'](AH=>AH?AH['charCodeAt'](0x0):97.6)['reduce']((AH,AI)=>AH+AI);return Math['round'](AH);}()}),Number['prototype']['clamp']||Object['defineProperty'](Number['prototype'],'clamp',{'value'(AH){let AI=this['valueOf'](),AJ=(Array['isArray'](AH)?AH:[]['slice']['call'](arguments))['map'](AH=>Number(AH))['filter'](AH=>!isNaN(AH))['sort']((AH,AI)=>AH===AI?0x0:AH>AI?0x1:-0x1),AK=AJ['length'];if(AK){let AH=AJ[0x0],AL=AJ[AK-0x1];if(AIAL)return AL;}return AI;}}),Number['prototype']['toFixedNum']||Object['defineProperty'](Number['prototype'],'toFixedNum',{'value'(AH){return Number(this['toFixed'](AH));}}),Number['prototype']['padStart']||String['prototype']['padStart']&&Object['defineProperty'](Number['prototype'],'padStart',{'value'(AH,AI){let AJ=this['toString']();return AJ['padStart']['call'](AJ,AH,AI||0x0);}}),Number['prototype']['padEnd']||String['prototype']['padEnd']&&Object['defineProperty'](Number['prototype'],'padEnd',{'value'(AH,AI){let AJ=this['toString']();return AJ['padEnd']['call'](AJ,AH,AI||0x0);}}),Number['parsePct']||Object['defineProperty'](Number,'parsePct',{'value'(AH){if('string'==typeof AH){let AI=AH['replace'](/\s*/g,'')['match'](/^(\d+(?:\.\d+)?)(%+)$/);if(AI){let AH=Number(AI[0x1]);for(let AJ=0x0,AK=AI[0x2]['length'];AJ'number'!=typeof AH||isFinite(AH)||isNaN(AH)?+AH:Object['is'](0x0/AH,0x0)?Number['MAX_SAFE_INTEGER']:Number['MIN_SAFE_INTEGER'])['filter'](AH=>!isNaN(AH))['sort']((AH,AI)=>AH===AI?0x0:AH>AI?0x1:-0x1))[0x0],AK=AH[AH['length']-0x1];let AL=Math['random']()*(AK-AJ)+AJ;return void 0x0===AI?AL:Object['is'](AI,-0x0)?Math['floor'](AL):+AL['toFixed'](+AI||0x0);}}),Math['sum']||Object['defineProperty'](Math,'sum',{'value'(AI,AJ){let [AK,AL]=AH['parseArgs']['apply'](AH,arguments);if(!AK['length'])return 0x0;let AM=AK['reduce']((AH,AI)=>{let [AJ,AK]=[+AH,+AI]['map'](AH=>isNaN(AH)?0x0:AH);return AJ+AK;}),AN=parseInt(AL);return isNaN(AN)?AM:+AM['toFixed'](AN);}}),Math['avg']||Object['defineProperty'](Math,'avg',{'value'(AI,AJ){let [AK,AL]=AH['parseArgs']['apply'](AH,arguments),AM=AK['filter'](AH=>!isNaN(+AH));if(!AM['length'])return NaN;let AN=AM['reduce']((AH,AI)=>+AH+ +AI)/AM['length'],AO=parseInt(AL);return isNaN(AO)?AN:+AN['toFixed'](AO);}}),Math['median']||Object['defineProperty'](Math,'median',{'value'(AI,AJ){let [AK,AL]=AH['parseArgs']['apply'](AH,arguments),AM=AK['filter'](AH=>!isNaN(+AH));if(!AM['length'])return NaN;AM['sort']((AH,AI)=>{let AJ=Number(AH);return AJ===Number(AI)?0x0:AJ>AI?0x1:-0x1;});let AN=AM['length'],AO=AN%0x2?AM[Math['floor'](AN/0x2)]:(AM[AN/0x2-0x1]+AM[AN/0x2])/0x2,AP=parseInt(AL);return isNaN(AP)?AO:+AO['toFixed'](AP);}}),Math['var']||Object['defineProperty'](Math,'var',{'value'(AI,AJ){let [AK,AL]=AH['parseArgs']['apply'](AH,arguments);if(!AK['length'])return NaN;let AM=AK['filter'](AH=>!isNaN(+AH)),AN=Math['avg'](AM),AO=AM['length'],AP=0x0;for(let AH=0x0;AH!isNaN(+AH)),AN=Math['sqrt'](Math['var'](AM)),AO=parseInt(AL);return isNaN(AO)?AN:+AN['toFixed'](AO);}}),Math['cv']||Object['defineProperty'](Math,'cv',{'value'(AI,AJ){let [AK,AL]=AH['parseArgs']['apply'](AH,arguments),AM=AK['filter'](AH=>!isNaN(+AH)),AN=AM['length'];if(AN<0x2)return NaN;let AO=Math['avg'](AM),AP=0x0;for(let AH=0x0;AH!isNaN(+AH)),AN=Math['max']['apply'](null,AM),AO=parseInt(AL);return isNaN(AO)?AN:+AN['toFixed'](AO);}}),Math['mini']||Object['defineProperty'](Math,'mini',{'value'(AI,AJ){let AK,AL;Array['isArray'](AI)?(AK=AH['spreadArr'](AI),AL=AJ):AK=AH['spreadArr'](arguments);let AM=AK['filter'](AH=>!isNaN(+AH)),AN=Math['min']['apply'](null,AM),AO=parseInt(AL);return isNaN(AO)?AN:+AN['toFixed'](AO);}}),Math['dist']||Object['defineProperty'](Math,'dist',{'value'(AH,AI){if(Array['isArray'](AH)&&Array['isArray'](AI)){let AJ=Math['pow'](AI[0x0]-AH[0x0],0x2),AK=Math['pow'](AI[0x1]-AH[0x1],0x2);return Math['sqrt'](AJ+AK);}if(AO['isPlainObject'](AH)&&AO['isPlainObject'](AI)){let AJ=Math['pow'](AI['x']-AH['x'],0x2),AK=Math['pow'](AI['y']-AH['y'],0x2);return Math['sqrt'](AJ+AK);}return NaN;}}),Math['logMn']||Object['defineProperty'](Math,'logMn',{'value'(AH,AI,AJ){let AK='number'==typeof AJ?AJ:0xd,AL=Math['log'](AI)/Math['log'](AH);return isNaN(AL)||!isFinite(AL)||-0x1!==AK?AL:Number(AL['toFixed'](AK));}}),Math['floorLog']||Object['defineProperty'](Math,'floorLog',{'value'(AH,AI){return Math['floor'](this['logMn'](AH,AI));}}),Math['ceilLog']||Object['defineProperty'](Math,'ceilLog',{'value'(AH,AI){return Math['ceil'](this['logMn'](AH,AI));}}),Math['roundLog']||Object['defineProperty'](Math,'roundLog',{'value'(AH,AI){return Math['round'](this['logMn'](AH,AI));}}),Math['floorPow']||Object['defineProperty'](Math,'floorPow',{'value'(AH,AI){return Math['pow'](AH,this['floorLog'](AH,AI));}}),Math['ceilPow']||Object['defineProperty'](Math,'ceilPow',{'value'(AH,AI){return Math['pow'](AH,this['ceilLog'](AH,AI));}}),Math['roundPow']||Object['defineProperty'](Math,'roundPow',{'value'(AH,AI){return Math['pow'](AH,this['roundLog'](AH,AI));}});}};AH['exports']={'$$0':AH=>0x0===AH,'$$nul':AH=>null===AH,'$$und':AH=>void 0x0===AH,'$$bool':AH=>'boolean'==typeof AH,'$$symb':AH=>'symbol'==typeof AH,'$$bigint':AH=>'bigint'==typeof AH,'$$func':AH=>'function'==typeof AH,'$$arr':AH=>Array['isArray'](AH),'$$obj':AH=>AO['isPlainObject'](AH),'$$rex':AH=>AH instanceof RegExp,'$$xml':AH=>/^xml$/['test'](typeof AH),'$$T':AH=>!0x0===AH,'$$F':AH=>!0x1===AH,'$$num'(AH){let AI=arguments,AJ=AI['length'];if(0x0===AJ)return!0x1;if(0x1===AJ)return'number'==typeof AH;if(0x2===AJ)return AH===AI[0x1];for(let AH=0x1;AHNumber['isInteger'](AH),'isNullish':AH=>null==AH,'isPrimitive':AH=>AH!==Object(AH),'isReference':AH=>AH===Object(AH),'isPlainObject':AH=>AO['isPlainObject'](AH),'isEmptyObject':AH=>AO['isPlainObject'](AH)&&0x0===Object['keys'](Object['getOwnPropertyDescriptors'](AH))['length'],'isNonEmptyObject':AH=>AO['isPlainObject'](AH)&&Object['keys'](Object['getOwnPropertyDescriptors'](AH))['length']>0x0,'isNormalFunction':AH=>'function'==typeof AH&&AO['isPlainObject'](AH['prototype']),'isArrowFunction':AH=>'function'==typeof AH&&!AO['isPlainObject'](AH['prototype']),'isXMLType':AH=>/^xml$/['test'](typeof AH),'requirex'(AH){let AI=AH=>files['exists'](AH)&&global['require'](files['path'](AH)),AJ=AH;AJ['match'](/\.js$/)||(AJ+='.js');let AK=AI('modules/'+AJ)||AI(AJ)||AI('../modules/'+AJ);if('object'==typeof AK)return AK;throw Error('Cannot\x20locate\x20module\x20\x22'+AH+'\x22\x20for\x20global.requirex()');},'$$sleep'(AH,AI){if('string'==typeof AI){let AJ=AI['match'](/[+-]?(\d+(\.\d+)?(e\d+)?)/);if(AJ){let AK=Number(AJ[0x0]);AI=Math['min'](AH+AK,Number['MAX_SAFE_INTEGER']),AH=Math['max'](AH-AK,0x0);}}return'number'==typeof AI?sleep(AH+Math['floor'](Math['random']()*(AI-AH+0x1))):sleep(Math['max'](AH,0x0)||0x0);},'$$link':function(){let AH={'init'(){return delete this['is_break'],this;},'invoke'(AH){if('function'!=typeof AH)throw TypeError('$$link\x20invoked\x20with\x20a\x20non-function\x20argument');try{this['is_break']='__BREAK__'===AH();}catch(FU){if(this['is_break']=!0x0,!FU['message']['match'](/InterruptedException/))throw Error(FU+'\x0a'+FU['stack']);sleep(0x1a4);}}};return function AI(AJ){return AH['init']()['invoke'](AJ),AI=function(AJ){return AH['is_break']||AH['invoke'](AJ),AI['$']=AI;},AI['$']=AI;};}(),'$$cvt':function(){let AH={'parse'(AH,AJ,AK,AL){let AM=AO['isNullish'](AJ)?{}:{'init_unit':AJ};return AI(AH,Object['assign'](AL,AM,AK));}},AI=function(AH,AI){return{'options':AI||{},'parseArgs'(){this['step']=this['options']['step'],this['pot_step']=this['options']['potential_step'],this['ori_units']=this['options']['units'],this['init_unit']=this['options']['init_unit'],this['fixed']=this['options']['fixed'],this['parseSrc'](),this['parseSpace'](),this['parseUnits']();},'parseSrc'(){this['src']=Number('string'==typeof AH?AH['split'](/,\s*/)['join'](''):AH);},'parseSpace'(){this['space']=this['options']['space'],AO['isNullish'](this['space'])&&(this['space']=String()),!0x0===this['space']&&(this['space']='\x20');},'parseUnits'(){this['units']=[],this['ori_units']['forEach'](AH=>{'string'==typeof AH&&AH['match'](/\w+\|\w+/)?AH['split']('|')['reverse']()['forEach']((AH,AI)=>{AI?this['units']['push'](0x1,AH):this['units']['push'](AH);}):this['units']['push'](AH);}),this['init_unit']=this['init_unit']||this['units'][0x0];},'generateUnitMap'(){this['unit_map']={},this['unit_map'][this['units'][0x0]]=[0x1,0x1];let AH=0x1,AI=this['units']['length'];for(let AJ=0x1;AJAH>0x0!=0x3e8*AI)return Number(AI['toFixed'](0x2));return AI;},'getResult'(){return this['parseArgs'](),this['generateUnitMap'](),this['units']['includes'](this['init_unit'])&&(this['src']*=this['unit_map'][this['init_unit']][0x0]),this['units']['filter'](AH=>AH in this['unit_map'])['reverse']()['some']((AH,AI,AJ)=>{let [AK,AL]=this['unit_map'][AH];if(this['src']>=AL||AI===AJ['length']-0x1)return this['result']=this['calc'](AK)+this['space']+AH;})?this['result']:String();}}['getResult']();};return AI['bytes']=function(AI,AJ,AK){return AH['parse'](AI,AJ,AK,{'step':0x400,'potential_step':0x3e8,'units':['B','KB','MB','GB','TB','PB','EB','ZB','YB']});},AI['time']=function(AI,AJ,AK,AL){return'object'==typeof AJ?this['time'](AI,'','$en',AJ):'string'==typeof AJ&&AJ['startsWith']('$')?this['time'](AI,'',AJ,AK):'object'==typeof AK?this['time'](AI,AJ,'$en',AK):AH['parse'](AI,AJ,AL,{'step':0x3c,'units':'$zh'===AK?['毫秒',0x3e8,'秒','分钟','小时',0x18,'天']:['ms',0x3e8,'s','m','h',0x18,'d']});},AI['linear']=function(AI,AJ,AK){return AH['parse'](AI,AJ,AK,{'step':0x3e8,'init_unit':'mm','units':['am','fm','pm','nm','μm|um','mm',0xa,'cm',0xa,'dm',0xa,'m','km']});},AI['number']=function(AI,AJ,AK){return AH['parse'](AI,AJ,AK,{'step':0x3e8,'space':!0x0,'units':['one',0x64,'hundred',0xa,'thousand','million','billion','trillion','quadrillion','quintillion','sextillion','septillion','octillion','nonillion','decillion','undecillion','duodecillion','tredecillion','quattuordecillion','quindecillion']});},AI['date']=function(AH,AI){let AJ=function(AH){if(AH instanceof Date)return AH;if('number'==typeof AH)return new Date(AH);if('string'==typeof AH){AH['match'](/^\d+$/)&&(0x8===AH['length']?AH=AH['replace'](/\d{2}/g,'$&%')['split']('%')['slice'](0x0,-0x1)['map']((AH,AI)=>AI>0x1?'/'+AH:AH)['join'](''):0xc===AH['length']?AH=AH['replace'](/\d{2}/g,'$&%')['split']('%')['slice'](0x0,-0x1)['map']((AH,AI)=>0x0===AI?new Date()['getFullYear']()['toString']()['slice'](0x0,0x2)+AH:AI<0x3?'/'+AH:0x3===AI?'\x20'+AH:AI<0x6?':'+AH:AH)['join'](''):0xe===AH['length']&&(AH=AH['replace'](/\d{2}/g,'$&%')['split']('%')['slice'](0x0,-0x1)['map']((AH,AI)=>AI>0x1&&AI<0x4?'/'+AH:0x4===AI?'\x20'+AH:AI>0x4&&AI<0x7?':'+AH:AH)['join']('')));let AI=new Date(AH);if('Invalid\x20Date'===AI['toString']())throw Error('Invalid\x20Date');return AI;}return new Date();}(AH||new Date()),AK=(AI||'yyyy/MM/dd\x20hh:mm:ss')['toString']();if('ISO'===AK['toUpperCase']()){let AH=new Date(AJ),AI=AH['getTime']()+0xea60*AH['getTimezoneOffset'](),AK='yyyy-MM-ddThh:mm:ss.SSSZ';return this['date'](AI,AK);}let AL=AJ['getFullYear'](),AM=AL['toString']()['slice'](-0x2),AN=AJ['getMonth']()+0x1,AO=AN['toString']()['padStart'](0x2,'0'),AP=AJ['getDate'](),GW=AP['toString']()['padStart'](0x2,'0'),GX=AJ['getHours'](),GY=GX['toString']()['padStart'](0x2,'0'),GZ=AJ['getMinutes'](),H0=GZ['toString']()['padStart'](0x2,'0'),H1=AJ['getSeconds'](),H2=H1['toString']()['padStart'](0x2,'0'),H3=AJ['getMilliseconds']()%0x3e8,H4=H3['toString']()['padEnd'](0x3,'0')['slice'](0x0,0x1),H5=H3['toString']()['padEnd'](0x3,'0')['slice'](0x0,0x2),H6=H3['toString']()['padEnd'](0x3,'0')['slice'](0x0,0x3),H7={'yyyy':AL,'yy':AM,'MM':AO,'M':AN,'dd':GW,'d':AP,'hh':GY,'h':GX,'mm':H0,'m':GZ,'ss':H2,'s':H1},H8=function(AH){let AI=this;return{'get':()=>(delete AI['S'],delete AI['SS'],delete AI['SSS'],AH),'configurable':!0x0};};return Object['defineProperties'](H7,{'S':H8['call'](H7,H4),'SS':H8['call'](H7,H5),'SSS':H8['call'](H7,H6)}),function(AH){let AI='';for(;AH['length'];){let AJ=0x4;for(;AJ;){let AK=AH['slice'](0x0,AJ);if(AK in H7){AI+=H7[AK],AH=AH['slice'](AJ);break;}AJ-=0x1;}AJ||(AI+=AH[0x0],AH=AH['slice'](0x1));}return AI;}(AK);},AI['url']=function(AH,AI,AJ){if(!AH)throw Error('Source\x20url\x20is\x20required\x20for\x20$$cvt.url()');if(!AI)return AH;let AK=AH['match'](/\?/)?'&':'?';return AH+AK+function AH(AI){let AK=AJ||[];return Array['isArray'](AK)||(AK=[AK]),Object['keys'](AI)['map'](AJ=>{let AL=AI[AJ];return'object'==typeof AL&&(AL='&'+AH(AL)),AK['includes'](AJ)||(AL=encodeURI(AL)),AJ+'='+AL;})['join']('&');}(AI);},AI;}(),'$$toast':function(){let AH={'toast':null,'parseIsLong':AH=>'number'==typeof AH?Number(!!AH):'string'==typeof AH?Number(/^l(ong)?$/i['test'](AH)):'boolean'==typeof AH?Number(AH):0x0,'init'(AH){let [AI,AJ,AK]=AH;this['message']=AO['isNullish'](AI)?'':AI['toString'](),this['is_long']=this['parseIsLong'](AJ),this['is_forcible']=AK;},'post'(){ui['post'](()=>{new android['os']['Handler'](AI['getMainLooper']())['post'](new AK({'run':()=>{this['is_forcible']&&this['dismiss'](),this['toast']=AJ['makeText'](context,this['message'],this['is_long']),this['show']();}}));});},'dismiss'(){this['toast']instanceof AJ&&(this['toast']['cancel'](),this['toast']=null);},'show'(){this['toast']['show']();}},AL=function(AI,AJ,AK){AH['init'](arguments),AH['post']();};return AL['dismiss']=()=>AH['dismiss'](),AL;}(),'$$impeded':function(){let AH={'events_counter':0x0,'border'(){console['log']('-\x20'['repeat'](0x11)['trim']());},'msg'(AH){this['border'](),[]['slice']['call'](arguments)['forEach'](AH=>console['log'](AH)),this['border']();},'trigger'(){return this['events_counter']>0x0;},'increase'(){this['events_counter']+=0x1;},'decrease'(){this['events_counter']-=0x1;},'reset'(){this['events_counter']=0x0;},'onTrigger'(AH){this['msg']('检测到全局事件触发信号',AH+'被迫阻塞');},'onRelease'(AH){this['msg']('全局事件触发信号全部解除',AH+'解除阻塞');}},AI=function(AI){let AJ=AI||'%method%';if(AH['trigger']()){for(AH['onTrigger'](AJ);AH['trigger']();)sleep(0xc8);AH['onRelease'](AJ);}};return Object['assign'](AI,{'increase':()=>AH['increase'](),'decrease':()=>AH['decrease'](),'reset':()=>AH['reset'](),'detach'(AH,AI){if('function'!=typeof AH)throw TypeError('Param\x20\x22fn\x22\x20for\x20$$impeded.detach\x20must\x20be\x20defined\x20as\x20a\x20function');if('number'!=typeof AI)throw TypeError('Param\x20\x22options_idx\x22\x20for\x20$$impeded.detach\x20must\x20be\x20defined\x20as\x20a\x20number');return function(){let AJ=[]['slice']['call'](arguments);return AJ[AI]='object'==typeof AJ[AI]?Object['assign'](AJ[AI],{'no_impeded':!0x0}):{'no_impeded':!0x0},AH['apply'](null,AJ);};}}),AI;}(),'$polyfill'(){let AH={'getPadStr'(AH,AI){return{'tar_len':Number(AH),'str_len':this['length'],'trigger'(){return this['tar_len']>this['str_len'];},'getPad'(){let AH=void 0x0===AI?'\x20':String(AI),AJ=this['tar_len']-this['str_len'],AK=Math['ceil'](AJ/AH['length']);return AH['repeat'](AK)['slice'](0x0,AJ);},'getResult'(){return this['trigger']()?this['getPad']():String();}}['getResult']();}};return String['prototype']['padStart']||Object['defineProperty'](String['prototype'],'padStart',{'value'(AI,AJ){return AH['getPadStr']['apply'](this,arguments)+this['valueOf']();}}),String['prototype']['padEnd']||Object['defineProperty'](String['prototype'],'padEnd',{'value'(AI,AJ){return this['valueOf']()+AH['getPadStr']['apply'](this,arguments);}}),String['prototype']['trimStart']||Object['defineProperty'](String['prototype'],'trimStart',{'value'(){return String['prototype']['trimLeft']['apply'](this,arguments);}}),String['prototype']['trimEnd']||Object['defineProperty'](String['prototype'],'trimEnd',{'value'(){return String['prototype']['trimRight']['apply'](this,arguments);}}),Object['values']||(Object['values']=function(AH){if(void 0x0!==AH[Symbol['iterator']]){let AI=[];for(let AJ of AH)AI['push'](AJ);return AI;}return Object['keys'](AH)['map'](AI=>AH[AI]);}),Object['getOwnPropertyDescriptors']||(Object['getOwnPropertyDescriptors']=function(AH){let AI={};return Object['getOwnPropertyNames'](AH)['forEach'](AJ=>{AI[AJ]=Object['getOwnPropertyDescriptor'](AH,AJ);}),AI;}),Array['from']||(Array['from']=function(AH,AI,AJ){let AK=AH=>'function'==typeof AH,AL=Object(AH);if(AO['isNullish'](AH))throw TypeError('arrayLike\x20of\x20Array.from\x20must\x20be\x20an\x20array-like\x20object');if(void 0x0!==AI&&!AK(AI))throw TypeError('mapFn\x20of\x20Array.from\x20must\x20be\x20a\x20function\x20or\x20undefined');let AM=Math['min'](Math['max']((AN=AL['length'],isNaN(Number(AN))?0x0:Math['trunc'](AN)),0x0),Number['MAX_SAFE_INTEGER']);var AN;let AP=AK(this)?Object(new this(AM)):new Array(AM),I8=void 0x0===AJ?this:AJ;for(let AH=0x0;AH{if(void 0x0!==AH)return Number['isNaN'](AH)?Number['isNaN'](AI):AH===AI;});}}),Array['prototype']['fill']||Object['defineProperty'](Array['prototype'],'fill',{'value'(AH,AI,AJ){let AK=this['length'],AL=AI>>0x0;AL=AL<0x0?AL+AK:AL>AK?AK:AL;let AM=void 0x0===AJ?AK:AJ>>0x0;AM=AM<0x0?AM+AK:AM>AK?AK:AM;for(let AI=AL;AIAI['concat'](Array['isArray'](AK)?AH(AK,AJ-0x1):AK),[]);}(this['slice'](),AH||0x1);}}),Array['prototype']['keys']||(Array['prototype']['keys']=function(){return(0x0,this['map']((AH,AI)=>AI)[Symbol['iterator']])();}),Array['prototype']['values']||(Array['prototype']['values']=function(){return this[Symbol['iterator']]();}),Array['prototype']['entries']||(Array['prototype']['entries']=function(){return(0x0,this['map']((AH,AI)=>[AI,AH])[Symbol['iterator']])();}),Number['isInteger']||(Number['isInteger']=function(AH){return'number'==typeof AH&&isFinite(AH)&&(0x0|AH)===AH;}),Number['EPSILON']||(Number['EPSILON']=Math['pow'](0x2,-0x34)),delete this['$polyfill'],this;},'$bind'(){return this['$polyfill'](),Object['keys'](AP)['forEach'](AH=>AP[AH]()),delete this['$bind'],this;}},AH['exports']['$bind']();},131:(Iv,Iw,Ix)=>{let {threadsx:n}=Ix(0xef),Iy=java['net']['URL'],Iz=java['io']['File'],IA=java['lang']['StringBuilder'],IB=java['io']['BufferedReader'],IC=java['io']['FileOutputStream'],ID=java['io']['InputStreamReader'],IE=java['io']['BufferedInputStream'],IF=java['io']['BufferedOutputStream'],IG=java['lang']['reflect']['Array'],IH=okhttp3['Request']['Builder'],II={'getContentLength'(Iv,Iw,Ix){if('string'!=typeof Iv)throw Error('url\x20for\x20httpx.getContentLength()\x20is\x20required');if('function'!=typeof Iw)throw Error('callback\x20for\x20httpx.getContentLength()\x20is\x20required');let Iz=Ix||{},IA=Iz['timeout']||0x2710,IB=Date['now']()+IA,IC=n['atomic'](-0x1),ID=function(Ix){let Iz=n['start'](function(){try{let Ix=new Iy(Iv)['openConnection']();Ix['setRequestProperty']('Accept-Encoding','identity'),Ix['setConnectTimeout'](IA);let IV=Ix['getContentLengthLong']();Ix['disconnect'](),-0x1!==IV&&IC['compareAndSet'](-0x1,IV)&&Iw(IC['get']());}catch(IW){}});n['start'](function(){try{for(;;){if(IC['get']()>0x0)return Iz['interrupt']();if(Date['now']()>=IB)return Ix(-0x1),Iz['interrupt']();sleep(0x78);}}catch(IX){}});},IE=Iz['concurrence']||0xc;for(let Iv=0x0;IvIv),J6=Iy['onResponse']||(Iv=>Iv),J7=Iy['onDownloadProgress']||(Iv=>Iv),J8=Iy['onDownloadSuccess']||(Iv=>Iv),J9=Iv=>{if('function'!=typeof Iy['onDownloadFailure'])throw Error(Iv+'\x0a'+Iv['stack']);Iy['onDownloadFailure'](Iv);};if(!Iv)return J9('url\x20for\x20httpx.okhttp3Request()\x20is\x20required');if(void 0x0!==II['is_async']&&!II['is_async'])return Jf();function Jf(){try{let Iw;J5();let Ix=new IH();Object['keys'](II['headers']||{})['forEach'](Iv=>{Ix['addHeader'](Iv,II['headers'][Iv]);});let Jj=new OkHttpClient()['newCall'](Ix['url'](Iv)['get']()['build']())['execute']();J6(Jj);let Iy=0x1000,Jf=IG['newInstance'](java['lang']['Byte']['TYPE'],Iy),Jm=0x0,Jn=Jj['code']();0xc8!==Jn&&J9(Jn+'\x20'+Jj['message']());let Jo=Jj['body']()['byteStream'](),Jp=Jj['body']()['contentLength']();if('string'==typeof J4){let Iv=-0x1,Ix=new IE(Jo),Jj=new IC(new Iz(files['path'](J4))),IA=new IF(Jj);for(;-0x1!==(Iv=Ix['read'](Jf,0x0,Iy));)global['_$_dialog_flow_interrupted']&&(Jz([IA,Jj,Ix,Jo]),J9('用户终止')),Jj['write'](Jf,0x0,Iv),Jm+=Iv,J7({'processed':Jm,'total':Jp});Jz([IA,Jj,Ix,Jo]),J8({'downloaded_path':Iw=J4});}else{let Iv=new ID(Jo),Ix=new IB(Iv),Jj=new IA(),Iy=null;for(;null!==(Iy=Ix['readLine']());)global['_$_dialog_flow_interrupted']&&(Jz([Ix,Iv,Jo]),J9('用户终止')),Jj['append'](Iy)['append']('\x0d\x0a'),Jm+=Iy['length'],J7({'processed':Jm,'total':Jp});Jz([Ix,Iv,Jo]),J8({'downloaded_string':Iw=Jj['toString']()});}return Iw;}catch(Jy){J9('请求失败:\x0a'+Jy);}}function Jz(Iv){Iv['forEach'](Iv=>{try{Iv&&Iv['close']();}catch(JC){}}),global['_$_dialog_flow_interrupted']=!0x1;}n['start'](Jf);}};Iv['exports']={'httpx':II};},792:(JD,JE,JF)=>{let {$$cvt:n,isNullish:r}=JF(0x11e),{httpx:s}=JF(0x83),{filesx:o}=JF(0x2fb),{threadsx:a}=JF(0xef),{dialogsx:l}=JF(0x3b5),{storagesx:c}=JF(0xdc),JG=java['io']['File'],JH={'step':{'download':'下载数据包','decompress':'解压缩','backup':'备份本地项目','files_check':'检查文件','files_update':'项目文件替换','files_ready':'项目文件就绪','finish_deploy':'清理并完成部署','finish_restore':'清理并完成项目恢复'},'structure':[{'name':'/assets'},{'name':'/modules','necessary':!0x0},{'name':'/tools'},{'name':'ant-forest-launcher.js','necessary':!0x0},{'name':'ant-forest-settings.js'},{'name':'.gitignore'},{'name':'jsconfig.json'},{'name':'project.json','necessary':!0x0},{'name':'LICENSE'},{'name':'README.md'}],get 'ignore_list'(){return this['_ignore_list']=this['_ignore_list']||c['af']['get']('update_ignore_list')||c['@default']['af']['update_ignore_list'];}},JI={'version':{'isIgnored'(JD,JE){let JF=JE||JH['ignore_list'];if(!JF)throw Error('No\x20available\x20list\x20for\x20projectx.version.isIgnored()');return'string'==typeof JD?JF['includes'](JD):JF['includes'](JD['version_name']);},'isCared'(JD,JE){let JF=JE||JH['ignore_list'];if(!JF)throw Error('No\x20available\x20list\x20for\x20projectx.version.isCared()');return!this['isIgnored'](JD,JF);},'getHex'(JD,JE){if('object'==typeof JD&&(JD=JD['version_name']),!JD)throw Error('A\x20\x22version\x22\x20must\x20be\x20defined\x20for\x20projectx.version.getHex()');let JF=JE||{},JS=JD=>('00'+Number(JD||0x0)['toString'](0x10))['slice'](-0x2),JT=JD['toString']()['trim']()['replace'](/^[a-z\s]*(\d+)(?:\.(\d+)(?:\.(\d+)(?:-\d+)?\s*(b(?:eta)?|a(?:lpha)?)?\s*(\d*))?)?$/i,(JD,JE,JF,JT,JU,K1)=>{let K2=[JE,JF,JT]['map'](JD=>JS(JD))['reduce']((JD,JE)=>JD+JE),K3=K1?Number(K1):0x1,K4=0xff;if(JU)if(JU['match'](/b(eta)?/i)){if(K3>=0x7f)throw Error('Beta\x20version\x20code\x20must\x20be\x20smaller\x20than\x20127');K4=0x80;}else if(JU['match'](/a(lpha)?/i)){if(K3>0x80)throw Error('Alpha\x20version\x20code\x20cannot\x20be\x20greater\x20than\x20128');K4=0x0;}return K2+JS(Math['min'](K4+K3,0xff));}),JU='0x'+JT;return'number'===JF['type']?Number(JU):'string_with_prefix'===JF['type']?JU:JT;},'parseHex'(JD,JE){if('number'==typeof JD&&(JD=('0'['repeat'](0x7)+JD['toString'](0x10))['slice'](-0x8)),!JD)throw Error('A\x20\x22version\x22\x20must\x20be\x20defined\x20for\x20projectx.version.parseHex()');return JD['replace'](/^0x/,'')['replace'](/(..)(..)(..)(..)/g,(JD,JF,Kc,Kd,Ke)=>{let Kf=[JF,Kc,Kd]['map'](JD=>Number('0x'+JD))['join']('.'),Kg=Number('0x'+Ke),Kh='';return Kg<=0x80?Kh='\x20Alpha'+(0x1===Kg?'':Kg):Kg<0xff&&(Kg-=0x80,Kh='\x20Beta'+(0x1===Kg?'':Kg)),(null===JE?'':JE||'v')+Kf+Kh;});},'parseName'(JD){return JD['match'](/^v?\d+\.\d+\.\d+\s*(a(lpha)?|b(eta)?)?\s*\d*$/i)?this['parseHex'](this['getHex'](JD)):'';},'isNewer'(JD,JE){return this['getHex'](JD)>this['getHex'](JE);}},'.local'(JD){return o['.local']['apply'](o,arguments);},'getLocal'(){let JD=this['getLocalPath']();if(!JD)throw Error('Cannot\x20locate\x20project\x20path\x20for\x20projectx.getLocal()');let JE=files['join'](JD,'project.json'),JF='ant-forest-launcher.js',Kq=files['join'](JD,JF),Kr={'version_name':'','version_code':-0x1,'main':{'name':JF,'path':Kq},'path':JD};if(files['exists'](JE))try{let JF=JSON['parse'](o['read'](JE,'{}'));return Object['assign'](Kr,{'version_name':'v'+JF['versionName'],'version_code':Number(JF['versionCode']),'main':{'name':JF['main'],'path':files['join'](JD,JF['main'])}});}catch(Kt){console['warn'](Kt['message']),console['warn'](Kt['stack']);}if(files['exists'](Kq))try{return Object['assign'](Kr,{'version_name':'v'+o['read'](Kq)['match'](/version (\d+\.?)+( ?(Alpha|Beta)(\d+)?)?/)[0x0]['slice'](0x8)});}catch(Ku){console['warn'](Ku['message']),console['warn'](Ku['stack']);}return console['warn']('Both\x20project.json\x20and\x20'+JF+'\x20do\x20not\x20exist'),Kr;},'getLocalPath'(JD){return JH['local_path']||(JH['local_path']=(()=>{let JE=files['cwd']();if(this['isAlike'](JE))return JE;if(JE=new JG(JE)['getParent'](),this['isAlike'](JE))return JE;let JF=files['join'](o['getScriptDirPath'](),'Ant-Forest-003');return files['isDir'](JF)?JF:JD?(files['createWithDirs'](JF+o['sep']),JF):String();})());},'getLocalVerName'(){return this['getLocal']()['version_name'];},'getAssetPath'(JD){return files['join']['apply'](files,[this['getLocalPath'](),'assets']['concat']([]['slice']['call'](arguments)));},'getReleases'(JD,JE){if('function'!=typeof JE)return JF();function JF(){let JE=[],JF=JD||{},KE=null;delete global['_$_get_proj_releases_interrupted'],JF['show_progress_dialog']&&l['setProgressColorTheme'](KE=l['builds']([null,'正在获取版本信息...',0x0,0x0,'I',0x1],{'progress':{'max':-0x1,'showMinMax':!0x1,'horizontal':!0x0},'keycode_back':'disabled'})['on']('positive',JD=>{JD['dismiss'](),global['_$_get_proj_releases_interrupted']=!0x0;})['show'](),'indeterminate');let KG=JF['max_items']||0x1/0x0,KH=0x1,KI=JF['per_page']||0x1e,KJ=JF['min_version_name']||'v0.0.0',JG=0x3;for(;JG--;)try{let JD=http['get']('https://api.github.com/repos/SuperMonster003/Ant-Forest/releases?per_page='+KI+'&page='+KH++)['body']['json']()['filter'](JD=>JD['tag_name']>=KJ);if(global['_$_get_proj_releases_interrupted'])return[];if(JE=JE['concat'](JD),JD['length']=KG)break;}catch(KN){sleep(0x78+0xf0*Math['random']());}return JG<0x0?(KE&&(KE['dismiss'](),l['builds'](['失败','版本信息获取失败',0x0,0x0,'X',0x1])['on']('positive',JD=>JD['dismiss']())['show']()),[]):(JE['splice'](KG),KE&&(KE['dismiss'](),KE=null),JF['no_extend']?JE:JE['map'](function(JD){return JD['version_name']=JD['tag_name'],JD['brief_info_str']=[{'key':'name','desc':'标题'},{'key':'tag_name','desc':'标签'},{'key':'published_at','desc':'发布','cvt':void 0x0!==n&&n['date']},{'key':'body','desc':'内容描述'}]['map'](JE=>{let JF=JE['key'],KS=JD[JF];if(KS)return'body'===JF&&(KS='\x0a'+KS),'function'==typeof JE['cvt']&&(KS=JE['cvt']['call'](null,KS)),JE['desc']+':\x20'+KS;})['filter'](JD=>!!JD)['join']('\x0a\x0a'),JD;}));}a['start'](()=>JE(JF()));},'getNewestRelease'(JD,JE){let JF=()=>this['getReleases'](Object['assign'](JD||{},{'max_items':0x1,'per_page':0x1}))[0x0];if('function'!=typeof JE)return JF();a['start'](()=>JE(JF()));},'getNewestReleaseCared'(JD,JE){let JF=JD||{},L0=()=>this['getReleases'](Object['assign'](JF,{'max_items':0x64,'per_page':0x64}))['filter'](JD=>this['version']['isCared'](JD,JF['ignore_list']))[0x0];if('function'!=typeof JE)return L0();a['start'](()=>JE(L0()));},'getChangelog'(JD,JE,JF){let L5=Math['trunc'](Number(JD['toString']()['match'](/\d+/)[0x0])),L6=JE||{},L7=JF||{},L8=L7['onStart']||(JD=>JD),JG=L7['onSuccess']||(JD=>JD),JH=L7['onFailure']||console['error'],Lb=null;if(!L6['is_show_dialog'])return Lh();let Le=null,Lf=JD=>JD;function Lh(){L8();let JD=function(){let JD=0x5,JE='https://cdn.jsdelivr.net/gh/SuperMonster003/Ant-Forest@master/assets/docs/CHANGELOG-'+L5+'.md';for(;JD--;)try{return s['okhttp3Request'](JE,{'onDownloadFailure'(JE){JD||JH('请求失败:\x20'+JE);}},{'is_async':!0x1});}catch(Lm){JH(Lm['message']);}}();if(!JD){let JD='获取历史更新信息失败';return Lb?Lb['setContent'](JD):JH(JD),L6['is_joint']?'':[];}let JE=/# v\d+\.\d+\.\d+.*/g,JF=new RegExp(/^(\s*\n\s*)+/['source']+'|'+/(# *){3,}/['source']+'|'+/ +(?=\s+)/['source']+'|'+/.*~~.*/['source']+'|'+/.*`灵感`.*/['source']+'|'+/\(http.+?\)/['source']+'|'+/\[\/\/]:.+\(\n*.+?\n*\)/['source']+'|'+/\s*
/['source'],'g'),L7=JD['match'](JE),Lr=JD['split'](JE),Ls=L7['map']((JD,JE)=>({'ver':'v'+JD['split']('v')[0x1],'log':Lr[JE+0x1]['replace'](/ ?_\[`(issue |pr )?#(\d+)`](\(http.+?\))?_ ?/g,'[$2]')['replace'](JF,'')['replace'](/(\[\d+])+/g,JD=>'\x20'+JD['split'](/\[]/)['join'](',')['replace'](/\d+/g,'#$&'))['replace'](/(\s*\n\s*){2,}/g,'\x0a')}));if(JG(Ls),!Lb&&!L6['is_joint'])return Ls;let JI=Ls['map'](JD=>JD['ver']+'\x0a'+JD['log'])['join']('\x0a')['slice'](0x0,-0x1);return Lb&&Lb['setContent'](JI),L6['is_joint']?JI:void 0x0;}!L6['no_earlier']&&L5>0x1&&(Le='更早期的历史',Lf=function(){l['builds'](['选择一个历史版本记录','',0x0,0x0,'B',0x1],{'items':function(){let JD=[];for(let JE=0x1;JE{JI['getChangelog'](JD+0x1,{'is_show_dialog':!0x0,'no_earlier':!0x0});})['show']();}),Lb=l['builds'](['历史更新','处理中...',[Le,'hint'],'\u00a0','B',0x1])['on']('neutral',Lf)['on']('positive',l['dismiss'])['show'](),a['start'](Lh);},'isAlike'(JD,JE){let JF=files['path'](JD);if(!files['exists'](JF)){if(JE)throw Error('Passed\x20\x22dir\x22\x20is\x20not\x20exist');return!0x1;}if(!files['isDir'](JF)){if(JE)throw Error('Passed\x20\x22dir\x22\x20is\x20not\x20a\x20directory');return!0x1;}let LE=files['listDir'](JF=new JG(JF)['getAbsolutePath']());return JH['structure']['filter'](JD=>JD['necessary'])['map'](JD=>JD['name'][0x0]===o['sep']?{'name':JD['name']['slice'](0x1),'is_dir':!0x0}:{'name':JD['name']})['every'](JD=>{if(LE['indexOf'](JD['name'])>-0x1){let JE=JD['is_dir'],LE=files['isDir'](files['join'](JF,JD['name']));return JE&&LE||!JE&&!LE;}});},'deploy'(JD,JE,JF){let LN=JF||{},LO=JE||{},JG=LO['onDeployStart']||LO['onStart']||(JD=>JD),LQ=LO['onDeploySuccess']||LO['onSuccess']||(JD=>JD),LR=LO['onDeployFailure']||LO['onFailure']||console['error'];if(r(JD))throw Error('A\x20version\x20for\x20projectx.deploy()\x20must\x20be\x20defined');if('string'==typeof JD&&!(JD=(JD=>{if(JD['match'](/^(newest|latest)$/))return this['getNewestRelease']({'show_progress_dialog':!0x0});if(JD['match'](/^(newest|latest)_cared$/))return this['getNewestReleaseCared']({'show_progress_dialog':!0x0,'ignore_list':LN['ignore_list']});let JE=null;return this['getReleases']({'per_page':0x64,'show_progress_dialog':!0x0})['some'](JF=>(JE=JF)['version_name']===JD),JE;})(JD))){if(global['_$_get_proj_releases_interrupted'])return void delete global['_$_get_proj_releases_interrupted'];throw Error('Cannot\x20parse\x20version\x20tag\x20for\x20projectx.deploy()');}if('object'!=typeof JD)throw Error('Cannot\x20parse\x20version\x20for\x20projectx.deploy()');let LX=JD['zipball_url'],LY=LX['slice'](LX['lastIndexOf'](o['sep'])+0x1)+'.zip',LZ=files['join'](o['.local']('bak','ant-forest',LY)),M0=-0x1,M1=LN['is_hide_title_version']?'':'\x20'+JD['version_name'],M2=JH['step'],M3=l['buildFlow']({'title':'正在部署项目'+M1,'success_title':LN['success_title']||'部署完成','on_interrupt_btn_text':LN['on_interrupt_btn_text']||'B','show_min_max':!0x0,'onStart'(JD,JE){JG(),l['setProgressColorTheme'](JE,'download');},'onSuccess'(JD,JE){LQ(JD,JE);},'onFailure'(JD,JE){LR(JD,JE),JE['setFailureData'](JD);},'steps':[{'desc':M2['download'],'action':(JD,JE)=>new Promise((JD,JF)=>{s['okhttp3Request'](LX,{'onStart'(){let JD=M0/0x400,JF=JD<0x0?'':'0KB/'+JD['toFixed'](0x1)+'KB';l['setProgressNumberFormat'](JE,JF);},'onDownloadProgress'(JD){JD['total']=Math['max'](JD['total'],M0);let JF=JD['total']/0x400,Mi=JD['processed']/0x400;l['setProgressNumberFormat'](JE,'%.1fKB/%.1fKB',[Mi,JF]),JE['setProgressData'](JD);},'onDownloadSuccess'(JF){JD(JF),l['clearProgressNumberFormat'](JE);},'onDownloadFailure'(JD){JF(JD);}},{'is_async':!0x0,'path':LZ});})},{'desc':M2['decompress'],'action':(JD,JE)=>new Promise((JF,Mo)=>{o['unzip'](JD['downloaded_path'],null,{'onUnzipProgress':JD=>JE['setProgressData'](JD),'onUnzipSuccess'(JE){let Mr=JE['unzipped_path'];JI['isAlike'](Mr)||(Mr=files['join'](Mr,files['listDir'](Mr)[0x0])),JI['isAlike'](Mr)||Mo('Cannot\x20locate\x20project\x20path\x20in\x20unzipped\x20files'),JF(Object['assign'](JD,{'unzipped_files_path':JE['unzipped_path'],'unzipped_proj_path':Mr}));},'onUnzipFailure':JD=>Mo(JD)},{'to_archive_name_folder':!0x0,'is_delete_source':!0x0});})},{'desc':M2['backup'],'action':(JD,JE)=>new Promise((JF,Mw)=>{if(!this['getLocalPath']()||!this['getLocalVerName']())return JE['setStepDesc'](0x3,'\x20\x20[\x20跳过\x20]',!0x0),JF(JD);this['backup']({'onBackupProgress':JD=>JE['setProgressData'](JD),'onBackupSuccess':JE=>JF(Object['assign'](JD,{'backup':JE})),'onBackupFailure':JD=>Mw(JD)},{'remark':'版本升级前的自动备份','is_save_storage':!0x0});})},{'desc':M2['files_update'],'action':(JD,JE)=>new Promise((JF,MD)=>{let ME=this['getLocalPath'](!0x0);o['copy'](JD['unzipped_proj_path'],ME,{'is_unbundled':!0x0},{'onCopyProgress':JD=>JE['setProgressData'](JD),'onCopySuccess':()=>JF(Object['assign'](JD,{'tar_proj_path':ME})),'onCopyFailure':JD=>MD(JD)});})},{'desc':M2['finish_deploy'],'action':(JD,JE)=>new Promise((JF,MK)=>{o['deleteByList'](JD['unzipped_files_path'],{'is_async':!0x0},{'onDeleteProgress':JD=>JE['setProgressData'](JD),'onDeleteSuccess':()=>JF({'target_path':JD['tar_proj_path']}),'onDeleteFailure':JD=>MK(JD)});})}]})['act']();s['getContentLength'](LX,function(JD){M3['setStepDesc'](0x1,'\x20\x20[\x20'+n['bytes'](M0=JD,'B',{'fixed':0x1,'space':!0x0})+'\x20]',!0x0);},{'timeout':0x3a98,'concurrence':0xf});},'backup'(JD,JE){let JF=JD||{},MS=JE||{},MT=Date['now'](),MU=this['getLocalVerName'](),JI=this['version']['getHex'](MU),MW=o['.local']('bak','ant-forest'),MX=n['date'](MT,'yyMMddhhmmss')+'-'+JI+'.zip',MY=files['join'](MW,MX),MZ=()=>{let JD=MS['source_path'];if(JD&&'cwd'!==JD&&'current'!==JD||(JD=files['cwd']()),!files['isDir'](JD))throw Error('source_path\x20for\x20projectx.backup\x20must\x20be\x20a\x20directory');if(this['isAlike'](JD))return JD;if(JD=new JG(JD)['getParent'](),this['isAlike'](JD))return JD;let JE=o['getScriptDirPath']();if(JD=files['join'](JE,'Ant-Forest-003'),this['isAlike'](JD))return JD;throw Error('Unable\x20to\x20locate\x20Ant-Forest\x20project\x20folder');},N0=JD=>{let JE=JD||{};return o['zip']((()=>{let JD=files['join'](MW,'.'+MT)+o['sep'];files['createWithDirs'](JD);let JE=MZ();return o['copy'](JE,JD,{'is_unbundled':!0x0,'filter':JD=>JH['structure']['map'](JD=>JD['name']['replace'](/^\//,''))['includes'](JD)}),JD;})(),MY,{'onZipStart'(){'function'==typeof JE['onStart']&&JE['onStart']();let JD=JF['onBackupStart']||JF['onStart'];'function'==typeof JD&&JD['call'](JF);},'onZipProgress'(JD){'function'==typeof JE['onProgress']&&JE['onProgress'](JD);let Nb=JF['onBackupProgress']||JF['onProgress'];'function'==typeof Nb&&Nb['call'](JF,JD);},'onZipSuccess'(){let JD={'path':MY,'timestamp':MT,'version_name':MU,'remark':MS['remark']||'手动备份'};'function'==typeof JE['onSuccess']&&JE['onSuccess'](JD);let Nd=JF['onBackupSuccess']||JF['onSuccess'];if('function'==typeof Nd&&Nd['call'](JF,JD),MS['is_save_storage']){let JE=c['af_bak'],JF=JE['get']('project',[]);JE['put']('project',JF['concat'](JD));}},'onZipFailure'(JD){'function'==typeof JE['onFailure']&&JE['onFailure'](JD);let Nh=JF['onBackupFailure']||JF['onFailure'];'function'==typeof Nh&&Nh['call'](JF,JD);}},{'is_exclude_root_folder':!0x0,'is_delete_source':!0x0});};return MS['is_show_dialog']?l['buildProgress']({'show_min_max':!0x0,'title':'正在备份','content':'此过程可能需要一些时间','success_title':'备份完成','onStart':(JD,JE)=>l['setProgressColorTheme'](JE,'backup'),'action':(JD,JE)=>N0({'onProgress'(JD){let JF=JD['processed']/0x400,No=JD['total']/0x400;l['setProgressNumberFormat'](JE,'%.1fKB/%.1fKB',[JF,No]),JE['setProgressData'](JD);},'onSuccess'(JD){l['setContentText'](JE,'版本:\x20'+JD['version_name']+'\x0a路径:\x20'+JD['path']+'\x0a备注:\x20'+JD['remark']);}})})['act']():N0();},'restore'(JD,JE){let JF=JH['step'],Nt=JE||{},Nu=Nt['onRestoreStart']||Nt['onStart']||(JD=>JD),Nv={'local':{'title':'正在从本地恢复','success_title':'本地恢复完成','1st_step':{'desc':JF['files_check'],'action':()=>{let JE=files['path'](JD);if(!files['exists'](JE))throw Error('Source\x20file\x20of\x20projectx.restore()\x20doesn\x27t\x20exist');if(!o['isValidZip'](JE))throw Error('Source\x20file\x20of\x20projectx.restore()\x20is\x20corrupted');return{'zip_src_file':JE};}}},'server':{'title':'正在从服务器恢复','success_title':'服务器恢复完成','1st_step':{'desc':JF['download'],'action':(JE,JF)=>new Promise((JE,Nt)=>{let Nu=-0x1;s['getContentLength'](JD,function(JD){JF['setStepDesc'](0x1,'\x20\x20[\x20'+n['bytes'](Nu=JD,'B',{'fixed':0x1,'space':!0x0})+'\x20]',!0x0);},{'timeout':0x3a98,'concurrence':0xf});let Nv=JD['slice'](JD['lastIndexOf'](o['sep'])+0x1),JG=o['.local']('bak','ant-forest'),JH=files['join'](JG,Nv+'.zip');s['okhttp3Request'](JD,{'onStart'(){let JD=Nu/0x400,JE=JD<0x0?'':'0KB/'+JD['toFixed'](0x1)+'KB';l['setProgressNumberFormat'](JF,JE);},'onDownloadProgress'(JD){let JE=JD['processed']/0x400;JD['total']=Math['max'](JD['total'],Nu);let NM=JD['total']/0x400;l['setProgressNumberFormat'](JF,'%.1fKB/%.1fKB',[JE,NM]),JF['setProgressData'](JD);},'onDownloadSuccess'(JD){JE({'zip_src_file':JD['downloaded_path']}),l['clearProgressNumberFormat'](JF);},'onDownloadFailure'(JD){Nt(JD);}},{'is_async':!0x0,'path':JH});})}}},JG='local';files['exists'](JD)||(JG='server',JD['match'](/^https?:\/\//)||(JD='http://'+JD));let NP=Nv[JG];l['buildFlow']({'title':NP['title'],'success_title':NP['success_title'],'show_min_max':!0x0,'onStart'(JD,JE){Nu(),l['setProgressColorTheme'](JE,'restore'),l['clearProgressNumberFormat'](JE);},'onSuccess':Nt['onRestoreSuccess']||Nt['onSuccess'],'onFailure':Nt['onRestoreFailure']||Nt['onFailure'],'steps':[NP['1st_step'],{'desc':JF['decompress'],'action':(JD,JE)=>new Promise((JF,NV)=>{o['unzip'](JD['zip_src_file'],null,{'onProgress':JD=>JE['setProgressData'](JD),'onSuccess'(JE){let Nt=JE['unzipped_path'];JI['isAlike'](Nt)||(Nt=files['join'](Nt,files['listDir'](Nt)[0x0])),JI['isAlike'](Nt)?JF(Object['assign'](JD,{'unzipped_files_path':JE['unzipped_path'],'unzipped_proj_path':Nt})):NV('Cannot\x20locate\x20project\x20path\x20in\x20unzipped\x20files');},'onFailure':JD=>NV(JD)},{'to_archive_name_folder':!0x0,'is_delete_source':!0x1});})},{'desc':JF['files_update'],'action':(JD,JE)=>new Promise((JF,O3)=>{let Nt=this['getLocalPath'](!0x0);o['copy'](JD['unzipped_proj_path'],Nt,{'is_unbundled':!0x0},{'onProgress':JD=>JE['setProgressData'](JD),'onSuccess':()=>JF(Object['assign'](JD,{'tar_proj_path':Nt})),'onFailure':JD=>O3(JD)});})},{'desc':JF['finish_restore'],'action':(JD,JE)=>new Promise((JF,Oa)=>{o['deleteByList'](JD['unzipped_files_path'],{'is_async':!0x0},{'onStart':()=>'server'===JG&&files['remove'](JD['zip_src_file']),'onProgress':JD=>JE['setProgressData'](JD),'onSuccess':()=>JF({'target_path':JD['tar_proj_path']}),'onFailure':JD=>Oa(JD)});})}]})['act']();}};JD['exports']={'projectx':JI};},220:(Od,Oe,Of)=>{let {isNullish:n,isPlainObject:r}=Of(0x11e),{filesx:s}=Of(0x2fb),{cryptox:o}=Of(0xbe),Og=function(){let Od={'parseFile'(Od){let Oe=s['read'](Od,'');try{return Oe?JSON['parse'](Oe,s['json']['reviver']):{};}catch(Om){console['warn']('JSON.parse()解析配置文件异常');}try{return this['tryRepairEscChar'](Od,Oe);}catch(On){console['warn']('转义字符修复失败');}try{return this['tryRepairMojibakeLines'](Od,Oe);}catch(Oo){console['warn']('乱码行修复失败');}this['failAndBackup'](Od);},'tryRepairEscChar'(Od,Oe){console['warn']('尝试查找并修复异常的转义字符');let Of=/[ntrfb\\'"0xu]/,Os='';for(let Od in Oe){let Ou=+Od,Ov=Oe[Ou];if('\x5c'===Ov){let Od=Oe[Ou-0x1],Os=Oe[Ou+0x1];Od&&Os&&'\x5c'!==Od&&!Os['match'](Of)&&(Ov+='\x5c');}Os+=Ov;}return this['writeBackFileAndParse'](Od,Os);},'tryRepairMojibakeLines'(Od,Oe){console['warn']('尝试查找并修复异常的乱码行');let Of=Oe['split']('\x0a');for(;Of['length']>0x0;)try{return Of['pop'](),this['writeBackFileAndParse'](Od,Of['join']('\x0a'));}catch(OB){}throw Error('Failed\x20to\x20repair\x20mojibake\x20lines');},'writeBackFileAndParse'(Od,Oe){let Of=JSON['parse'](Oe,s['json']['reviver']);return console['info']('修复成功'),s['write'](Od,Oe),console['info']('已重新写入修复后的数据'),Of;},'failAndBackup'(Od){let Oe=files['getName'](Od)+'.'+Date['now']()+'.bak';throw files['rename'](Od,Oe),console['error']('修复失败'),console['warn']('已将损坏的配置文件备份至'),console['warn'](files['join'](s['.local'](),Oe)),console['warn']('以供手动排查配置文件中的问题'),Error('JSON.parse()\x20failed\x20in\x20ext-storages');},'getKeyInput'(){let Od=files['join'](s['.local'](),'key.nfex'),Oe=s['readJson'](Od,{});return Oe['af']||(Oe['af']=o['generateRandomKeyInput'](),s['writeJson'](Od,Oe)),Oe['af'];},'encrypt'(Od){if(n(Od))throw TypeError('Nullish\x20typed\x20value\x20cannot\x20be\x20encrypted');return o['enc'](Od['toString'](),this['getKeyInput']());},'decrypt'(Od){if(n(Od))throw TypeError('Non-string\x20typed\x20value\x20cannot\x20be\x20decrypted');return o['dec'](Od['toString'](),this['getKeyInput']());},'reEncryptFromLegacyFile'(Od){let Oe=this['parseFile'](Od),Of=Od=>{if(r(Od))return(Od=>(Object['keys'](Od)['forEach'](Oe=>Od[Oe]=Of(Od[Oe])),Od))(Od);if('string'==typeof Od&&Od['startsWith']('[')&&Od['endsWith'](']')){let Oe=o['_pwmap']['decrypt'](Od);if(!n(Oe))return this['encrypt'](Oe);}return Od;};s['writeJson'](Od,Of(Oe));}},Oe=function(Oe){this['name']=Oe,this['dir']=s['.local'](),this['path_legacy']=files['join'](this['dir'],this['name']+'.nfe'),this['path']=this['path_legacy']+'x',files['exists'](this['path'])||(files['exists'](this['path_legacy'])?(files['copy'](this['path_legacy'],this['path']),Od['reEncryptFromLegacyFile'](this['path'])):files['createWithDirs'](this['path']));};return Oe['prototype']={'constructor':Oe,'contains'(Oe){return Oe in Od['parseFile'](this['path']);},'put'(Oe,Of,OW){if(void 0x0===Of)throw new TypeError('\x22put\x22\x20value\x20can\x27t\x20be\x20undefined');let OX={},Og={},Oh=OW||{},P0=Oe=>Od['encrypt'](JSON['stringify'](Oe,s['json']['replacer'])),P1=Od=>{if(!Oh['is_crypto'])return Od;if(!r(Od)||Oh['is_forcible'])return P0(Od);let Oe={};return Object['keys'](Od)['forEach'](Of=>Oe[Of]=P0(Od[Of])),Oe;};try{OX=Od['parseFile'](this['path']);}catch(P6){console['warn'](P6['message']);}!Oh['is_forcible']&&r(Of)&&r(OX[Oe])&&Object['keys'](Of)['length']>0x0?Og[Oe]=Object['assign'](OX[Oe],P1(Of)):Og[Oe]=P1(Of),Object['assign'](OX,Og),s['writeJson'](this['path'],OX);},'get'(Oe,Of,P9){if(void 0x0===P9&&'object'==typeof Of){let Od=['default','prop','is_crypto'],Pb=Object['keys'](Of);if(Od['some'](Od=>Pb['indexOf'](Od)>-0x1))return this['get'](Oe,Of['default'],Of);}let Pd=Od['parseFile'](this['path']),Og=P9||{};if(Pd&&Oe in Pd){let Of=Pd[Oe];if(void 0x0!==Og['prop']&&(Array['isArray'](Og['prop'])?Og['prop']['forEach'](Od=>Of=Of[Od]):Of=Of[Og['prop']]),n(Of))return Of;if(Og['is_crypto']){let Oe=Od['decrypt'](Of);try{return JSON['parse'](Oe,s['json']['reviver']);}catch(Pi){return Oe;}}return Of;}return void 0x0!==Og['default']?Og['default']:Of;},'remove'(Oe){let Of=Od['parseFile'](this['path']);Oe in Of&&(delete Of[Oe],s['writeJson'](this['path'],Of));},'clear'(){files['remove'](this['path']);}},Oe;}(),Oh={'@default':Of(0xd9),get 'af'(){return this['_af']=this['_af']||this['create']('af');},get 'af_auto'(){return this['_af_auto']=this['_af_auto']||this['create']('af_auto');},get 'af_bak'(){return this['_af_bak']=this['_af_bak']||this['create']('af_bak');},get 'af_blist'(){return this['_af_blist']=this['_af_blist']||this['create']('af_blist');},get 'af_cfg'(){return this['_af_cfg']=this['_af_cfg']||this['create']('af_cfg');},get 'af_flist'(){return this['_af_flist']=this['_af_flist']||this['create']('af_flist');},get 'af_ins'(){return this['_af_ins']=this['_af_ins']||this['create']('af_ins');},get 'unlock'(){return this['_unlock']=this['_unlock']||this['create']('unlock');},'create':Od=>new Og(Od),'remove'(Od){this['create'](Od)['clear']();}};Od['exports']={'storagesx':Oh};},239:(Pn,Po,Pp)=>{let {isNormalFunction:n,isArrowFunction:r}=Pp(0x11e),{a11yx:s}=Pp(0x2d4),Pq=java['lang']['Runnable'],Pr=java['lang']['Throwable'],Ps=java['util']['concurrent']['atomic']['AtomicLong'],Pt=com['stardust']['autojs']['core']['looper']['TimerThread'],Pu=com['stardust']['autojs']['runtime']['exception']['ScriptInterruptedException'],Pv={'_monitor_preset':{'ensure_open':Pn=>{let Po=void 0x0===Pn?0x1068:Pn||0x1/0x0;return s['waitAndClick'](/打开/,Po,0xf0,{'cs$':'w'});}},'_start'(Pn){let Po=threads['start'](Pn);return Object['create'](Po,{'join':{'value'(Pn){Pn===0x1/0x0||void 0x0===Pn?Pn=0x0:Pn<0x1&&(Pn=0x1),Po['join'](Pn);}}});},'monitor'(Pn,Po){let Pp='string'==typeof Pn?this['_monitor_preset'][Pn]:Pn;if('function'==typeof Pp)return this['start'](()=>Pp['apply'](null,[]['slice']['call'](arguments)['slice'](0x1)));if(Pp instanceof Pq)return this['start'](Pp);throw TypeError('Invalid\x20monitor:\x20'+Pn);},'monitorIFN'(Pn,Po){if(void 0x0!==Pn)return this['monitor']['apply'](this,arguments);},'start'(Pn,Po){let Pp=Po||{},PJ=!0x0;try{if(n(Pn)||Pn instanceof Pq)return this['_start'](Pn);if(r(Pn))return this['_start'](new Pq({'run':()=>Pn()}));PJ=!0x1;}catch(PK){if(!Pu['causedByInterrupted'](new Pr(PK))&&!PK['message']['match'](/script exiting/)&&!0x1!==Pp['is_show_error'])throw Error(PK+'\x0a'+PK['stack']);}if(!PJ)throw TypeError('Unsupported\x20type\x20\x22'+typeof Pn+'\x22\x20for\x20threadsx.start()');},'atomic'(Pn){let Po=threads['atomic'](Pn);if(Po instanceof Ps)return Po;let Pp=Pn;return{'get':()=>Pp,'incrementAndGet':()=>Pp+=0x1,'compareAndSet':(Pn,Po)=>Pp===Pn&&(Pp=Po,!0x0)};},'interrupt'(Pn){Pn instanceof Pt&&Pn['isAlive']()&&Pn['interrupt']();}};Pn['exports']={'threadsx':Pv};},855:function(PR,PS,PT){let {isNullish:n}=PT(0x11e),{threadsx:r}=PT(0xef),PU=context['getPackageName']()['match'](/Pro\b/i),PV=PU?com['stardust']['autojs']['core']['timing']:org['autojs']['autojs']['timing'],PW=PU?PV['TimedTask']['Companion']:PV['TimedTask'],PX=PV['TimedTaskManager'],PY=PU?PX['Companion']['getInstance']():PX['getInstance'](),PZ=PT(0x206)['call'](this,'__bridges__'),Q0=['monday','tuesday','wednesday','thursday','friday','saturday','sunday','mon','tue','wed','thu','fri','sat','sun','一','二','三','四','五','六','日',0x1,0x2,0x3,0x4,0x5,0x6,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7]['map'](PR=>'string'==typeof PR?PR:PR['toString']()),Q1={'_taskFulfilled'(PR,PS){if(!PR)return null;let PT=PS||{},Q6='function'==typeof PT['condition']?PT['condition']:()=>PR['id']>0x0,PU='function'==typeof PT['callback']?PT['callback']:null,PV=0xbb8,PW=()=>{for(;PV>0x0;){if(Q6())return PU?PU(PR):PR;sleep(0x78),PV-=0x78;}return null;};if(!PT['is_async'])return PW();r['start'](PW);},'addTask':PR=>(PR&&(PU?PY['addTaskSync'](PR):PY['addTask'](PR)),PR||null),'addDailyTask'(PR){let PS=PR||{},PT=RG('LocalTime',PS['time']),Qe=files['path'](PS['path']),Qf=RD(PS),PU=this['addTask'](PW['dailyTask'](PT,Qe,Qf));return this['_taskFulfilled'](PU,PS);},'addWeeklyTask'(PR){let PS=PR||{},PT=0x0;for(let PR=0x0;PRPY['getTimedTask'](PR),'getIntentTask':PR=>PY['getIntentTask'](PR),'removeTask':PR=>PR?(PU?PY['removeTaskSync'](PR):PY['removeTask'](PR),PR):null,'removeIntentTask'(PR,PS){let PT=PS||{},QI=this['removeTask'](this['getIntentTask'](PR));return this['_taskFulfilled'](QI,Object['assign'](PT,{'condition':()=>!this['getIntentTask'](PR)}));},'removeTimedTask'(PR,PS){let PT=PS||{},QM=this['removeTask'](this['getTimedTask'](PR));return this['_taskFulfilled'](QM,Object['assign'](PT,{'condition':()=>!this['getTimedTask'](PR)}));},'updateTask':PR=>PR?(PR['setScheduled'](!0x1),PY['updateTask'](PR),PR):null,'queryTimedTasks'(PR){let PS='',PT=[],QR=(PR||{})['path'];var QS;if(QR&&(QS='script_path\x20=\x20?',PS+=PS['length']?'\x20AND\x20'+QS:QS,PT['push'](QR)),PU){let PR=PY['queryTimedTasks']['call'](PY,PS||null,PT);return PZ['toArray'](PR);}let PV=PY['getAllTasksAsList']()['toArray']();return QR?PV['filter'](PR=>PR['getScriptPath']()===QR):PV;},'queryIntentTasks'(PR){let PS=PR||{},PT='',QZ=[],R0=PR=>PT+=PT['length']?'\x20AND\x20'+PR:PR,{path:PV,action:PW}=PS;if(PV&&(R0('script_path\x20=\x20?'),QZ['push'](PV)),PW&&(R0('action\x20=\x20?'),QZ['push'](PW)),PU){let PR=PY['queryIntentTasks']['call'](PY,PT||null,QZ);return PZ['toArray'](PR);}let PX=PY['getAllIntentTasksAsList']()['toArray']();return PV||PW?PX['filter'](PR=>!(PV&&PR['getScriptPath']()!==PV||PW&&PR['getAction']()!==PW)):PX;},'timeFlagConverter'(PR){if(Array['isArray'](PR))return Array(0x7)['fill'](0x0)['reduce']((PS,PT,R8)=>PS+(PR['includes'](R8)?Math['pow'](0x2,R8):0x0),0x0);let PS=[],PT=Number(PR)['toString'](0x2),Rb=PT['length']-0x1;for(let PR of PT)PR>0x0&&PS['unshift'](Rb),Rb-=0x1;return PS;},'setInterval'(PR,PS,PT,Rg){({'init_ts':Date['now'](),'interval':PS>0x0?PS:0xc8,'timeout':PT>0x0?PT:0x1/0x0,'isTimedOut'(){return'function'!=typeof this['_isTimedOut']&&(this['_isTimedOut']='function'==typeof PT?PT['bind'](this):()=>Date['now']()-this['init_ts']>this['timeout']),this['timeout_result']=this['_isTimedOut'](),!0x1!==this['timeout_result']&&!n(this['timeout_result']);},'relayIFN'(){this['isTimedOut']()?'function'==typeof Rg&&Rg['call'](this,this['timeout_result']):this['setTimeout']();},'run'(){PR(),this['relayIFN']();},'setTimeout'(){setTimeout(this['run']['bind'](this),this['interval']);}}['setTimeout']());},'$rec'(){let PR={'keys':{},'anonymity':[],'ts':PR=>'number'==typeof PR?PR:Date['now'](),'has'(PR){return PR in this['keys'];},'add'(PR,PS){return void 0x0===PR?this['anonymity']['push'](this['ts'](PS)):this['keys'][PR]=this['ts'](PS),this['ts'](PS);},'get'(PR){return void 0x0===PR?this['anonymity']['pop']():this['keys'][PR];},'save'(PR,PS){return this['add'](PR,PS);},'load'(PR,PS){return this['ts'](PS)-this['get'](PR);},'shortcut'(PR,PS){return'function'==typeof PR?(this['save'](),PR['call'](PS),this['load']()):void 0x0!==PR?this['has'](PR)?this['load'](PR,PS):this['save'](PR,PS):this['anonymity']['length']?this['load']():this['save']();}};return this['rec']=function(PS,PT){return PR['shortcut'](PS,PT);},this['rec']['save']=(PS,PT)=>PR['save'](PS,PT),this['rec']['load']=(PS,PT)=>PR['load'](PS,PT),this['rec']['lt']=(PR,PS)=>this['rec']['load'](PR)this['rec']['load'](PR)>PS,this['rec']['clear']=()=>{PR['keys']={},PR['anonymity']['splice'](0x0);},delete this['$rec'],this;},'$bind'(){return this['$rec'](),delete this['$bind'],this;}};function RD(PR){let PS=new com['stardust']['autojs']['execution']['ExecutionConfig']();return PS['delay']=PR['delay']||0x0,PS['interval']=PR['interval']||0x0,PS['loopTimes']=void 0x0===PR['loopTimes']?0x1:PR['loopTimes'],PS;}function RG(PR,PS){let PT=PU?PR:org['joda']['time'][PR],RK=PS,RL=()=>RK['getTime']();if('string'==typeof PS)return PU?PW['parseDateTime']['call'](PW,PT,RK):PT['parse'](RK);if(PS instanceof Date)return PU?PW['parseDateTime']['call'](PW,PT,RL()):new PT(RL());if('number'==typeof PS)return PU?PW['parseDateTime']['call'](PW,PT,RK):new PT(RK);throw new Error('Cannot\x20parse\x20date\x20time:\x20'+PS);}Q1['$bind'](),PR['exports']={'timersx':Q1};},883:(RM,RN,RO)=>{let {}=RO(0x11e),{threadsx:n}=RO(0xef),{dialogsx:r}=RO(0x3b5),{projectx:s}=RO(0x318),RP={'dialog':r['builds'](['项目部署','欢迎使用蚂蚁森林项目部署工具\x0a此工具用于\x20v2.0.0\x20以上版本的项目部署',['了解项目','hint'],['退出','caution'],['开始部署','attraction'],0x1])['on']('neutral',function(){r['builds'](['关于项目','-\x20功能简介\x20-\x0a'+['自动收取好友能量','自动收取/监测自己能量','收取结果统计/展示','控制台消息提示','自动解锁屏幕','定时任务与循环监测','多任务自动排队','脚本运行安全','事件监测与处理','黑名单机制','项目管理','账户功能','统计功能','图形化配置工具']['map'](RM=>'·\x20'+RM)['join']('\x0a')+'\x0a\x0a-\x20项目作者\x20-\x0a·\x20SuperMonster003\x0a\x0a-\x20项目链接\x20-\x0a·\x20https://github.com/SuperMonster003/Ant-Forest',0x0,0x0,'返回',0x1],{'linkify':'WEB_URLS'})['on']('positive',RM=>RM['dismiss']())['show']();})['on']('negative',RM=>{RM['dismiss'](),exit();})['on']('positive',RM=>{RM['dismiss'](),s['getReleases']({'min_version_name':'v2.0.1','show_progress_dialog':!0x0},RU);}),'view':null,'run'(){this['dialog']['show']();},'config'(){r['alerts']('CUI\x20(Configuration\x20User\x20Interface)\x20for\x20current\x20plugin\x20hasn\x27t\x20been\x20accomplished');},'getView'(){return this['view'];},'getDialog'(){return this['dialog'];}};function RU(RM){if(!RM['length'])return exit();let RN=RM[0x0],RO=RN['version_name'];r['builds'](['选择项目版本','选择希望部署的项目版本',['版本历史','hint'],['X','warn'],'下一步',0x1],{'items':['最新版本\x20('+RO+')','其他版本'],'itemsSelectMode':'single','itemsSelectedIndex':0x0})['on']('neutral',()=>{s['getChangelog'](RO['match'](/v(\d+)/)[0x1],{'is_show_dialog':!0x0});})['on']('negative',RM=>{r['builds'](['提示','项目部署尚未完成\x0a确定要退出吗',0x0,'B',['确定退出','caution'],0x1])['on']('negative',RM=>{RM['dismiss']();})['on']('positive',RN=>{r['dismiss']([RN,RM]),exit();})['show']();})['on']('positive',RO=>{RO['dismiss'](),0x0===RO['getSelectedIndex']()?n['start'](()=>S6(RN)):r['builds'](['选择其他项目版本','',0x0,'上一步','下一步',0x1],{'items':RM['slice'](0x1)['map'](RM=>RM['version_name']),'itemsSelectMode':'single','itemsSelectedIndex':0x0})['on']('negative',RM=>{RM['dismiss'](),RO['show']();})['on']('positive',RN=>{RN['dismiss']();let RO=RN['getSelectedIndex']()+0x1;n['start'](()=>S6(RM[RO]));})['show']();})['show']();}function S6(RM){s['deploy'](RM,{'onSuccess'(RM,RN){let RO=RM['target_path'];RN['removeAllListeners']('positive'),RN['setActionButton']('positive','下一步'),r['appendContentText'](RN,'\x0a\x0a项目部署路径:\x0a'+files['path'](RO)['replace'](files['getSdcardPath'](),'/内部存储')),RN['on']('positive',RM=>{function RN(){let RM=function(){r['clearPool']();let RM=context['getPackageName'](),RN=RN=>{let Si=RN||RM;app['startActivity']({'packageName':RM,'className':Si+'.external.open.RunIntentActivity','data':'file://'+RO+'/ant-forest-launcher.js'});};try{RN('org.autojs.autojs');}catch(Sj){RN(RM);}},RN=function(){r['clearPool'](),exit();};r['builds'](['项目使用声明',['代码完全公开','杜绝恶意代码','项目永久免费','欢迎提议反馈','','如需获知项目启动方式','可点击\x22了解更多\x22按钮']['map'](RM=>RM&&'·\x20'+RM)['join']('\x0a'),['T','hint'],0x0,['完成部署','finish'],0x1])['on']('neutral',()=>r['builds'](['项目启动方式','以下方式可用于启动项目:\x0a'+['ant-forest-launcher运行按钮','目录顶部的项目运行按钮\x20(如有)','创建并使用桌面快捷方式']['map'](RM=>RM&&'·\x20'+RM)['join']('\x0a'),['立即运行项目','attraction'],['B','default_aj_4'],['完成部署','finish'],0x1])['on']('neutral',RM)['on']('negative',RM=>RM['dismiss']())['on']('positive',RN)['show']())['on']('positive',RN)['show']();}RM['dismiss'](),engines['myEngine']()['source']['toString']()['match'](/^Ant.Forest.+er/)?dialogs['build']({'title':'新项目使用提示','content':'可能需要在Auto.js程序主页下拉刷新才能看到新项目\x0a新项目默认是以\x22Ant-Forest-003\x22命名的蓝色目录\x20进入目录可运行新项目\x0a对于当前目录下的旧项目文件\x20若无保留需要\x20可全部移除\x0a移除时需谨慎\x20避免误删可能存在的项目以外的重要文件','positive':'下一步','autoDismiss':!0x1,'canceledOnTouchOutside':!0x1})['on']('positive',RM=>{RM['dismiss'](),RN();})['show']():RN();});}},{'on_interrupt_btn_text':'X','success_title':'项目部署完成'});}RM['exports']=RP;}},E={};function So(Sp){var Sq=E[Sp];if(void 0x0!==Sq)return Sq['exports'];var Sr=E[Sp]={'exports':{}};return A[Sp]['call'](Sr['exports'],Sr,Sr['exports'],So),Sr['exports'];}So['o']=(Ss,St)=>Object['prototype']['hasOwnProperty']['call'](Ss,St);var Su={};So(0x373)['run']();})(); \ No newline at end of file