Files
YukiHookAPI/docs/assets/changelog.html.f7e20a5d.js

2 lines
46 KiB
JavaScript

import{_ as a,r as c,o as s,c as l,b as e,d as t,a as n,e as o}from"./app.99fcdd51.js";const r={},h=n('<h1 id="changelog" tabindex="-1"><a class="header-anchor" href="#changelog" aria-hidden="true">#</a> Changelog</h1><blockquote><p>The version update history of <code>YukiHookAPI</code> is recorded here.</p></blockquote><div class="custom-container danger"><p class="custom-container-title">Pay Attention</p><p>We will only maintain the latest API version, if you are using an outdate API version, you voluntarily renounce any possibility of maintenance.</p></div><div class="custom-container warning"><p class="custom-container-title">Notice</p><p>To avoid translation time consumption, Changelog will use <strong>Google Translation</strong> from <strong>Chinese</strong> to <strong>English</strong>, please refer to the original text for actual reference.</p><p>Time zone of version release date: <strong>UTC+8</strong></p></div>',4),u={id:"_1-1-4-2022-10-04",tabindex:"-1"},_=e("a",{class:"header-anchor",href:"#_1-1-4-2022-10-04","aria-hidden":"true"},"#",-1),m=o(" 1.1.4 | 2022.10.04 \u2002"),p=n("<ul><li>Fixed the issue that <code>YukiHookDataChannel</code> may not respond to broadcast events in the system framework, reproduced in A13</li><li>Fixed the issue that <code>YukiHookDataChannel</code> could not communicate with Module App in Host App for multiple versions</li><li>Added <code>obtainLoggerInMemoryData</code> method in <code>YukiHookDataChannel</code> to share debug log data between module and host</li><li>Modify the type of <code>YukiHookLogger.inMemoryData</code> to <code>ArrayList</code> and change <code>YukiLoggerData</code> to <code>data class</code></li><li>Fixed <code>YukiLoggerData</code> printing blank when the package name is empty in the module</li><li>Added <code>loadApp</code>, <code>loadZygote</code>, <code>loadSystem</code>, <code>withProcess</code> multi-parameter methods of the same name in <code>PackageParam</code></li><li>Fixed some possible bugs</li></ul>",1),f={id:"_1-1-3-2022-09-30",tabindex:"-1"},g=e("a",{class:"header-anchor",href:"#_1-1-3-2022-09-30","aria-hidden":"true"},"#",-1),k=o(" 1.1.3 | 2022.09.30 \u2002"),b=e("ul",null,[e("li",null,"Fixed a fatal bug where the Hook entry class name could not be customized"),e("li",null,[o("Added some code notes in "),e("code",null,"LoggerFactory"),o(" and updated special features documentation")])],-1),y={id:"_1-1-2-2022-09-30",tabindex:"-1"},x=e("a",{class:"header-anchor",href:"#_1-1-2-2022-09-30","aria-hidden":"true"},"#",-1),v=o(" 1.1.2 | 2022.09.30 \u2002"),w=n('<ul><li>Documentation <a href="../guide/knowledge">Basic Knowledge</a> page add a friend link to the English version</li><li>Fixed <code>YukiBaseHooker</code> comments in English code note link errors</li><li>Fixed <code>ClassCastException</code> in <code>ModuleClassLoader</code></li><li>Fixed and standardize some code notes</li><li>Added <code>ModuleClassLoader</code> exclusion list function, you can use <code>excludeHostClasses</code> and <code>excludeModuleClasses</code> methods to customize the exclusion list</li><li>Added <code>YukiLoggerData</code> real-time log data class, you can get the log array in real time through <code>YukiHookLogger.inMemoryData</code></li><li>Added <code>ClassLoader.listOfClasses</code> method, which can directly get all <code>Class</code> in the current <code>Dex</code></li></ul>',1),A={id:"_1-1-1-2022-09-28",tabindex:"-1"},H=e("a",{class:"header-anchor",href:"#_1-1-1-2022-09-28","aria-hidden":"true"},"#",-1),P=o(" 1.1.1 | 2022.09.28 \u2002"),F=e("ul",null,[e("li",null,[o("Fixed the problem of wrong document friend links in "),e("a",{href:"../guide/knowledge"},"Basic Knowledge"),o(" page")]),e("li",null,[o("Fixed document "),e("code",null,"favicon"),o(" not showing up")]),e("li",null,[o("Fixed bug in "),e("code",null,"DexClassFinder"),o(" search conditions")])],-1),C={id:"_1-1-0-2022-09-28",tabindex:"-1"},M=e("a",{class:"header-anchor",href:"#_1-1-0-2022-09-28","aria-hidden":"true"},"#",-1),I=o(" 1.1.0 | 2022.09.28 \u2002"),R=e("li",null,[o("This is a major version update, please refer to "),e("a",{href:"../api/home"},"API Document"),o(" and "),e("a",{href:"../api/special-features/reflection"},"Special Features"),o(" for the changes and usage mentioned in the changelog")],-1),Y=o("Change the help documentation framework to "),S={href:"https://v2.vuepress.vuejs.org",target:"_blank",rel:"noopener noreferrer"},L=o("VuePress"),D=n('<li>Unify and standardize the terms and nouns in the document, for example, &quot;query&quot; is always changed to &quot;find&quot;, <code>XposedHelper</code> is misspelled and changed to <code>XposedHelpers</code></li><li>Documentation <a href="../guide/knowledge">Basic Knowledge</a> page to add friend links, Simplified Chinese only</li><li>Convert <code>Class</code> and <code>Method</code> of Hook App Demo to Java to provide better demo effect</li><li>Fixed code comment naming in Hook Module Demo</li><li>Refactored a lot of low-level Hook logic and the docking method of Xposed API</li><li>Removed <code>HookParamWrapper</code>, it now interfaces directly with <code>YukiBridgeFactory</code></li><li>Moved methods in section <code>YukiHookBridge</code> to <code>AppParasitics</code></li><li>Removed <code>HookParam.args</code> and the underlying direct connection method <code>setArgs</code>, directly get and set the object of the current array</li><li>Optimized automatic handler to merge referenced <code>jar</code> into <code>stub</code> project</li>',9),X=o("Fixed the problem that the module package name cannot be correctly matched when multi-project packaging, and modify the module package name matching logic of the automatic handler, thanks to "),z={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},T=o("5ec1cff"),W=o(" for the feedback and solutions provided"),j=n("<li>Internal closure processing for the methods of API private tool classes to avoid polluting the top-level namespace</li><li>Fixed <code>Creater</code> naming to <code>Creator</code> for all reflection and Hook classes</li><li>Added <code>YukiHookAPI.Status.compiledTimestamp</code> function, which can get the compilation completion timestamp when used as an Xposed module</li><li>Added <code>YukiHookAPI.Status.isXposedEnvironment</code> function, which can determine whether the current (Xposed) host environment or module environment is</li><li>The debug logging function has been overhauled, and functions such as <code>YukiHookAPI.Configs.debugTag</code> have been merged into <code>YukiHookLogger.Configs</code></li><li>The debug log can be added to specify the printing method as <code>XposedBridge.log</code> or <code>Logd</code></li><li>The package name of the current host and the current user ID are added to the debug log by default for debugging, you can change it yourself in the <code>debugLog</code> configuration</li><li>Added <code>generic</code> function to reflect and call generics, you can use it in <code>Class</code> or <code>CurrentClass</code></li><li>obsolete the <code>buildOfAny</code> method, now use the <code>buildOf</code> method directly (without generics) to use the constructor to create a new object and get the result <code>Any</code></li><li>Fixed the issue of null pointer exception when using <code>hasExtends</code></li><li><code>CurrentClass</code> added non-<code>lambda</code> method of calling</li><li><code>CurrentClass</code> adds <code>name</code> and <code>simpleName</code> functions</li><li>Completely rewrite the core method of <code>ReflectionTool</code>, sorting and classifying different search conditions</li><li>Fixed the problem that <code>Member</code> obtained by directly calling <code>declared</code> in <code>ReflectionTool</code> throws an exception</li><li>Fixed <code>UndefinedType</code> in <code>ReflectionTool</code> is not correctly judged in <code>Method</code> and <code>Constructor</code> conditions</li><li>Added a friendly prompt method when the reflection search result is abnormal, which can specifically locate the problem that <code>Member</code> cannot be found under specified conditions</li><li>Added <code>VagueType</code> condition in <code>Method</code> and <code>Constructor</code> for reflection search, which can be used in <code>param</code> condition to ignore parameters you don&#39;t want to fill in</li><li>Added <code>paramCount { ... }</code> condition in <code>Method</code> and <code>Constructor</code> of reflection search, now you can directly get <code>it</code> in it to customize your judgment condition</li><li>The <code>current</code> method is added to the <code>FieldFinder</code> result, which can directly create a call space for the result instance</li><li>Modified the <code>modifiers</code> condition and <code>name</code> condition in the reflection lookup function, now you need to return a <code>Boolean</code> at the end of the method body to make the condition true</li>",20),B=e("code",null,"as*",-1),O=o(" function in "),N=e("code",null,"ModifierRules",-1),E=o(" renamed to "),U=e("code",null,"is*",-1),q=o(", thanks to "),K={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},V=o("Kitsune"),Z=o(" suggestion"),G=n("<li>Added <code>RemedyPlan</code> feature in <code>FieldFinder</code></li><li>Added <code>Class</code> fuzzy search function (Beta) in <code>Dex</code>, you can now directly use <code>searchClass</code> function to fuzzy search <code>Class</code> with specified conditions</li>",2),J=o("Added multiple search function in reflection search, you can use relative search conditions to obtain multiple search results at the same time, thanks to "),Q=e("strong",null,"AA",-1),$=o(" and "),ee={href:"https://github.com/KyuubiRan",target:"_blank",rel:"noopener noreferrer"},oe=o("Kitsune"),te=o(" for suggestions"),de=o("Fixed the problem that the object obtained by "),ie=e("code",null,"appClassLoader",-1),ne=o(" is incorrect in system applications in some systems, thanks to "),ce={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},ae=o("Luckyzyx"),se=o(" for the feedback"),le=e("li",null,[o("Modified the calling method of "),e("code",null,"XposedBridge.invokeOriginalMethod"),o(" and added "),e("code",null,"original"),o(" function in "),e("code",null,"MethodFinder.Result.Instance")],-1),re=o("Fixed the problem of wrong value of "),he=e("code",null,"getStringSet",-1),ue=o(" method in "),_e=e("code",null,"YukiHookModulePrefs",-1),me=o(" and optimize the code style, thanks to "),pe={href:"https://github.com/Teddy-Zhu",target:"_blank",rel:"noopener noreferrer"},fe=o("Teddy_Zhu"),ge=o(),ke={href:"https://github.com/fankes/YukiHookAPI/pull/19",target:"_blank",rel:"noopener noreferrer"},be=o("PR"),ye=e("li",null,[o("Modify "),e("code",null,"YukiHookModulePrefs"),o(" to intercept exceptions that may not exist in "),e("code",null,"XSharePreference")],-1),xe=e("li",null,[o("Fixed the problem that "),e("code",null,"YukiHookDataChannel"),o(" could not be successfully registered in some third-party ROM system frameworks")],-1),ve=e("li",null,[o("Secured "),e("code",null,"YukiHookDataChannel"),o(", now it can only communicate between modules from the specified package name and the host")],-1),we=o("Added automatic hook "),Ae=e("code",null,"SharedPreferences",-1),He=o(" to fix the problem that file permissions are not "),Pe=e("code",null,"0664",-1),Fe=o(" in some systems, thanks to "),Ce={href:"https://github.com/5ec1cff",target:"_blank",rel:"noopener noreferrer"},Me=o("5ec1cff"),Ie=o(" for the feedback and implementation code provided"),Re=n("<li>Added <code>YukiHookAPI.Configs.isEnableHookSharedPreferences</code> function, which is disabled by default and can be enabled if the permission of <code>SharedPreferences</code> is incorrect</li><li>Fixed the bug that the no-parameter construction method cannot be found when searching for <code>Constructor</code> without filling in the search conditions, thanks <strong>B5 KAKA</strong> for the feedback</li><li>Detach <code>Result</code> instances located in <code>method</code>, <code>constructor</code> in <code>injectMember</code> to <code>Process</code></li><li>Added the <code>useDangerousOperation</code> method in the Hook process, which will automatically stop the Hook and print an error after the function in the Hook Dangerous List is not declared</li><li>Added module resource injection and <code>Activity</code> proxy functions, you can call <code>injectModuleAppResources</code> and <code>registerModuleAppActivities</code> to use</li><li>Added <code>ModuleContextThemeWrapper</code> function, you can call <code>applyModuleTheme</code> to create the <code>Context</code> of a module in any <code>Activity</code></li><li>Added <code>ClassLoader.onLoadClass</code> function, which can be used to listen for events when the <code>loadClass</code> method of <code>ClassLoader</code> is called</li><li>obsolete <code>classOf</code> and <code>clazz</code> extension methods, add <code>toClass</code> and <code>toClassOrNull</code> usage, please move to the new method now</li><li><code>VariousClass</code> adds a <code>getOrNull</code> method, which can return <code>null</code> instead of throwing an exception when it can&#39;t match <code>Class</code></li><li>Removed <code>isUseAppClassLoader</code> parameter in <code>PackageParam.hook</code>, changed it to <code>isForceUseAbsolute</code> and automatically matched the target <code>Class</code></li><li><code>PackageParam</code> adds <code>systemContext</code> function, you can call this function at any time to get a persistent <code>Context</code></li><li>no longer expose any methods in <code>HookClass</code></li><li>Added <code>throwToApp</code> function in <code>HookParam</code>, which can throw exceptions directly to the host</li><li>The <code>onFailureThrowToApp</code> function is added to the Hook callback, which can be directly thrown to the host when an exception occurs</li><li>Modified the printing logic of the debug log, the time-consuming records in the reflection search function will only be printed during the Hook process</li><li>Added the function of removing Hook in the Hook process, you can use the <code>remove</code> and <code>removeSelf</code> methods to remove the hook</li><li>Fixed the issue that caused the host to throw an exception when ReplaceHook failed, and now it is modified to call the original method to ensure the normal operation of the host function</li><li>Added the function of checking the return value of the method in the Hook process. If the return value does not match, it will automatically throw an exception or print an error according to the situation</li>",18),Ye=o("Added "),Se=e("code",null,"array",-1),Le=o(" type to Resources Hook, thanks to "),De={href:"https://github.com/fankes/YukiHookAPI/pull/12",target:"_blank",rel:"noopener noreferrer"},Xe=o("PR"),ze=o(" of "),Te={href:"https://github.com/GSWXXN",target:"_blank",rel:"noopener noreferrer"},We=o("GSWXXN"),je=e("li",null,[o("Moved "),e("code",null,"me.weishu.reflection"),o(" to "),e("code",null,"thirdparty"),o(" to prevent conflicting dependencies of the same name introduced at the same time")],-1),Be=e("li",null,"Remove the exception thrown when the Hook method body is empty, and modify it to print the warning log",-1),Oe=e("li",null,[o("Modify the exception handling logic of "),e("code",null,"AppLifecycle"),o(" and throw it directly to the host when an exception occurs")],-1),Ne=e("li",null,"Updated Demo API version to 33",-1),Ee={id:"_1-0-92-2022-05-31",tabindex:"-1"},Ue=e("a",{class:"header-anchor",href:"#_1-0-92-2022-05-31","aria-hidden":"true"},"#",-1),qe=o(" 1.0.92 | 2022.05.31 \u2002"),Ke=n("<ul><li>Fixed the naming method of callback in a large number of methods</li><li>Changed the solution to fix the problem that <code>YukiHookDataChannel</code> cannot call back the current <code>Activity</code> broadcast on devices lower than <strong>Android 12</strong></li><li>The <code>InjectYukiHookWithXposed</code> annotation adds the <code>isUsingResourcesHook</code> function, now you can selectively disable the dependency interface that automatically generates <code>IXposedHookInitPackageResources</code></li></ul>",1),Ve={id:"_1-0-91-2022-05-29",tabindex:"-1"},Ze=e("a",{class:"header-anchor",href:"#_1-0-91-2022-05-29","aria-hidden":"true"},"#",-1),Ge=o(" 1.0.91 | 2022.05.29 \u2002"),Je=o("Fixed the "),Qe=e("code",null,"ClassLoader",-1),$e=o(" error when the customized system of some devices is booted in the LSPosed environment, thanks to "),eo={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},oo=o("Luckyzyx"),to=o(" for the feedback"),io=n("<li>Fixed <code>YukiHookDataChannel</code> not being able to call back the current <code>Activity</code> broadcast on <strong>ZUI</strong> and systems below <strong>Android 12</strong></li><li>Integrate the <code>YukiHookModuleStatus</code> function into <code>YukiHookAPI.Status</code>, rewrite a lot of methods, now you can judge the status information such as module activation in the module and the host in both directions</li>",2),no={id:"_1-0-90-2022-05-27",tabindex:"-1"},co=e("a",{class:"header-anchor",href:"#_1-0-90-2022-05-27","aria-hidden":"true"},"#",-1),ao=o(" 1.0.90 | 2022.05.27 \u2002"),so=n("<ul><li>Fixed <code>YukiHookDataChannel</code> crashing when the module sets the listener callback</li><li>Fixed <code>YukiHookDataChannel</code> still calling back when not in current <code>Activity</code></li><li>Remove the default value of <code>YukiHookDataChannel</code> callback event, no callback</li><li>Removed <code>YukiHookModulePrefs</code> warning printed if XShare is unreadable</li><li>Added the <code>isXSharePrefsReadable</code> method in <code>YukiHookModulePrefs</code> to determine whether the current XShare is available</li></ul>",1),lo={id:"_1-0-89-2022-05-26",tabindex:"-1"},ro=e("a",{class:"header-anchor",href:"#_1-0-89-2022-05-26","aria-hidden":"true"},"#",-1),ho=o(" 1.0.89 | 2022.05.26 \u2002"),uo=n("<ul><li>Fixed the problem that <code>YukiHookDataChannel</code> cannot be repeatedly set to monitor, and added the function of repeating response in different <code>Activity</code> modules and automatically following <code>Activity</code> to destroy the monitor function</li><li>Added <code>YukiHookDataChannel</code> repeated listening use case description document</li><li>Add the <code>onAlreadyHooked</code> method to determine whether the current method is repeated Hook</li><li>Modify part of the logic of repeatedly adding HashMap, remove the <code>putIfAbsent</code> method, allow to override the addition</li><li>Fixed several possible bugs</li></ul>",1),_o={id:"_1-0-88-2022-05-25",tabindex:"-1"},mo=e("a",{class:"header-anchor",href:"#_1-0-88-2022-05-25","aria-hidden":"true"},"#",-1),po=o(" 1.0.88 | 2022.05.25 \u2002"),fo=n("<ul><li>Fully decoupled from Xposed API</li><li>Added <code>android</code> type in <code>type</code></li><li>Separate <code>YukiHookModuleStatus</code> from auto-generated code and add <code>isEnableHookModuleStatus</code> switch, it is up to you to enable or not</li><li>Internal closure processing for the constructors of a large number of classes in the API</li><li>Set <code>YukiHookModulePrefs</code> to run as a singleton to prevent repeated creation and waste of system resources</li><li>Fixed the bug that Hook cannot be nested since version <code>1.0.80</code>, and optimize the related functions of nested Hook</li><li>Modify the Hooker storage scheme from HashSet to HashMap to prevent the problem of repeatedly adding Hookers</li><li>Modify the core implementation method of Hook, add duplicate checking to avoid repeating the Hook multiple callbacks to the <code>HookParam</code> method</li><li><code>MethodFinder</code> and <code>FieldFinder</code> add the function of finding fuzzy methods and variable names, you can call <code>name { ... }</code> to set search conditions, and support regular expressions</li><li>Optimize and modify the way to get <code>appContext</code> to reduce the possibility of getting empty</li><li>Modify the print <code>TAG</code> of <code>logger</code> in the automatically generated code to default to your custom name, which is convenient for debugging</li><li>Optimize the <code>Hooker</code> implementation of <code>YukiHookBridge</code> to improve Hook performance</li><li><code>PackageParam</code> adds the <code>onAppLifecycle</code> method, which can natively monitor the life cycle of the host and implement the registration system broadcast function</li><li>Added <code>YukiHookDataChannel</code> function to communicate using system out-of-order broadcast while the module and the host remain alive</li><li><code>YukiHookDataChannel</code> adds the <code>checkingVersionEquals</code> method, which can be monitored to verify that the host has not updated the version mismatch problem after the module is updated</li><li>Added Java version example in the example code of <code>demo-module</code> for reference only</li></ul>",1),go={id:"_1-0-87-2022-05-10",tabindex:"-1"},ko=e("a",{class:"header-anchor",href:"#_1-0-87-2022-05-10","aria-hidden":"true"},"#",-1),bo=o(" 1.0.87 | 2022.05.10 \u2002"),yo=e("ul",null,[e("li",null,[o("Added "),e("code",null,"refreshModuleAppResources"),o(" function to adapt Resources refresh when the language region, font size, resolution changes, etc.")]),e("li",null,[o("Added "),e("code",null,"isEnableModuleAppResourcesCache"),o(" function, you can set whether to automatically cache the resources of the current module")])],-1),xo={id:"_1-0-86-2022-05-06",tabindex:"-1"},vo=e("a",{class:"header-anchor",href:"#_1-0-86-2022-05-06","aria-hidden":"true"},"#",-1),wo=o(" 1.0.86 | 2022.05.06 \u2002"),Ao=e("ul",null,[e("li",null,[o("Fixed the problem of continuous error reporting during "),e("code",null,"initZygote"),o(" when Resources Hook is not supported, reproduced in "),e("strong",null,"ZUI"),o("/"),e("strong",null,"LSPosed CI(1.8.3-6550)")]),e("li",null,"Optimize and handle exceptions for Resources Hook, only print errors and warnings if they are used and not supported")],-1),Ho={id:"_1-0-85-2022-05-04",tabindex:"-1"},Po=e("a",{class:"header-anchor",href:"#_1-0-85-2022-05-04","aria-hidden":"true"},"#",-1),Fo=o(" 1.0.85 | 2022.05.04 \u2002"),Co=e("ul",null,[e("li",null,[o("Fixed a serious problem of not being able to hook the system framework, since "),e("code",null,"1.0.80")]),e("li",null,[o("Added in the debug log to distinguish the package name loaded by "),e("code",null,"initZygote"),o(" as "),e("code",null,"android-zygote"),o(", "),e("code",null,"packageName"),o(" keeps "),e("code",null,"android"),o(" unchanged")])],-1),Mo={id:"_1-0-83-2022-05-04",tabindex:"-1"},Io=e("a",{class:"header-anchor",href:"#_1-0-83-2022-05-04","aria-hidden":"true"},"#",-1),Ro=o(" 1.0.83 | 2022.05.04 \u2002"),Yo=e("ul",null,[e("li",null,[o("Fixed "),e("code",null,"YukiHookModuleStatus"),o(" reporting a lot of errors after "),e("code",null,"loadSystem")]),e("li",null,[o("Added "),e("code",null,"android"),o(" type in "),e("code",null,"type")]),e("li",null,"Updated example descriptions in help documentation")],-1),So={id:"_1-0-82-2022-05-04",tabindex:"-1"},Lo=e("a",{class:"header-anchor",href:"#_1-0-82-2022-05-04","aria-hidden":"true"},"#",-1),Do=o(" 1.0.82 | 2022.05.04 \u2002"),Xo=e("ul",null,[e("li",null,[o("Fixed a concept confusion error, distinguishing the relationship between "),e("code",null,"initZygote"),o(" and the system framework, there are problems with the previous comments and documentation, I am very sorry")]),e("li",null,[e("code",null,"PackageParam"),o(" adds "),e("code",null,"loadSystem"),o(" method, no need to write "),e("code",null,'loadApp(name = "android")'),o(" to hook the system framework")])],-1),zo={id:"_1-0-81-2022-05-04",tabindex:"-1"},To=e("a",{class:"header-anchor",href:"#_1-0-81-2022-05-04","aria-hidden":"true"},"#",-1),Wo=o(" 1.0.81 | 2022.05.04 \u2002"),jo=e("ul",null,[e("li",null,[o("Fixed the problem that the method and constructor that cannot be found in the Hook method body still output the error log after setting the condition using the "),e("code",null,"by"),o(" method")]),e("li",null,"Added a global log to display the package name of the current Hook APP during the execution of the Hook, and fixed a problem with the printing style of the error log")],-1),Bo={id:"_1-0-80-2022-05-01",tabindex:"-1"},Oo=e("a",{class:"header-anchor",href:"#_1-0-80-2022-05-01","aria-hidden":"true"},"#",-1),No=o(" 1.0.80 | 2022.05.01 \u2002"),Eo=n("<li>The <code>InjectYukiHookWithXposed</code> annotation adds the <code>entryClassName</code> function, which can customize the generated <code>xposed_init</code> entry class name</li><li><s><code>YukiHookXposedInitProxy</code></s> renamed to <code>IYukiHookXposedInit</code>, the original interface name has been invalidated and will be deleted directly in subsequent versions</li><li>Added <code>initZygote</code> and Resources Hook functions to support Hook Layout</li><li>Added <code>onXposedEvent</code> method to listen to all events of native Xposed API</li><li>Perform <code>inline</code> processing on the <code>lambda</code> of the Hook function to avoid generating excessively broken anonymous classes and improve the running performance after compilation</li><li>Fixed <code>PrefsData</code> compiled method body copy is too large</li><li>Added <code>XSharePreference</code> readability test, which will automatically print a warning log if it fails</li><li><code>PackageParam</code> adds <code>appResources</code>, <code>moduleAppResources</code>, <code>moduleAppFilePath</code> functions</li><li><code>loadApp</code> of <code>PackageParam</code> adds the function of not writing <code>name</code>, and all APPs are filtered by default</li><li><code>PackageParam</code> adds the <code>loadZygote</code> method, which can directly hook the system framework</li><li><code>PackageParam</code> added <code>resources().hook</code> function</li><li>Optimization method, construction method, variable search function, the error log that cannot be found will display the set query conditions first</li><li>Added <code>hasExtends</code> extension method to determine whether the current <code>Class</code> has an inheritance relationship</li><li>Added <code>isSupportResourcesHook</code> function to determine whether resource hooks are currently supported (Resources Hook)</li><li><code>current</code> function adds <code>superClass</code> method to call superclass</li><li>New <code>superClass</code> query conditions for search methods, construction methods and variables, you can continue to search in the parent class</li><li><code>YukiHookAPI</code> lots of methods are decoupled from Xposed API</li><li>Added native Hook priority function of Xposed API</li><li>Fixed the problem that <code>isFirstApplication</code> may be inaccurate</li><li>Block the problem that MiuiCatcherPatch repeatedly calls the Hook entry method on the MIUI system</li><li>Optimize Hook entry calling method to avoid multiple calls due to Hook Framework issues</li>",21),Uo=o("Fixed the problem that Hook "),qo=e("code",null,"ClassLoader",-1),Ko=o(" causes Hook to freeze, thanks to "),Vo={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Zo=o("WankkoRee"),Go=o(" for the feedback"),Jo=e("li",null,[o("Improve the performance after the "),e("code",null,"XC_Callback"),o(" interface is connected")],-1),Qo=e("li",null,[o("Java "),e("code",null,"type"),o(" added "),e("code",null,"ClassLoader"),o(" type")],-1),$o=e("li",null,"Optimize the API help documentation, fix the problem that the page may be continuously cached",-1),et={id:"_1-0-78-2022-04-18",tabindex:"-1"},ot=e("a",{class:"header-anchor",href:"#_1-0-78-2022-04-18","aria-hidden":"true"},"#",-1),tt=o(" 1.0.78 | 2022.04.18 \u2002"),dt=n("<li><code>YukiHookModulePrefs</code> adds <code>isRunInNewXShareMode</code> method, which can be used to determine whether the module is currently in <code>New XSharePreference</code> mode</li><li>Fixed <code>YukiHookModulePrefs</code> working in <code>New XSharePreference</code> mode</li><li>Added <code>ModulePreferenceFragment</code>, now you can completely replace <code>PreferenceFragmentCompat</code> and start using the new functionality</li>",3),it=o("Adapt the Sp data storage solution of "),nt=e("code",null,"PreferenceFragmentCompat",-1),ct=o(", thanks to "),at={href:"https://github.com/mahoshojoHCG",target:"_blank",rel:"noopener noreferrer"},st=o("mahoshojoHCG"),lt=o(" for feedback"),rt=e("li",null,[o("Update autohandlers and "),e("code",null,"Kotlin"),o(" dependencies to the latest version")],-1),ht=e("li",null,"Fixed some bugs in documentation and code comments",-1),ut={id:"_1-0-77-2022-04-15",tabindex:"-1"},_t=e("a",{class:"header-anchor",href:"#_1-0-77-2022-04-15","aria-hidden":"true"},"#",-1),mt=o(" 1.0.77 | 2022.04.15 \u2002"),pt=e("code",null,"YukiHookModulePrefs",-1),ft=o(" added "),gt=e("code",null,"clear",-1),kt=o(" method, thanks to "),bt={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},yt=o("WankkoRee"),xt=o(" for the suggestion"),vt=n("<li><code>YukiHookModulePrefs</code> added <code>getStringSet</code>, <code>putStringSet</code>, <code>all</code> methods</li><li>Added <code>any</code> method to <code>args</code> of <code>HookParam</code></li><li>Added <code>ModuleApplication</code>, which can be inherited in modules to achieve more functions</li><li>Connect all <code>findClass</code> functions to the Xposed API, and continue to use native <code>ClassLoader</code> in non-hosted environments</li><li>Fixed some possible bugs</li>",5),wt={id:"_1-0-75-2022-04-13",tabindex:"-1"},At=e("a",{class:"header-anchor",href:"#_1-0-75-2022-04-13","aria-hidden":"true"},"#",-1),Ht=o(" 1.0.75 | 2022.04.13 \u2002"),Pt=o("Corrected the logic recognition part of the automatic handler, thanks to "),Ft={href:"https://github.com/ApeaSuperz",target:"_blank",rel:"noopener noreferrer"},Ct=o("ApeaSuperz"),Mt=o(" contribution"),It=n("<li>Fixed an issue where the reference to a doc comment was not changed</li><li><code>firstArgs</code> and <code>lastArgs</code> methods have been removed from <code>HookParam</code>, now you can use <code>args().first()</code> and <code>args().last()</code> instead of it</li><li>Removed default parameter <code>index = 0</code> in <code>args()</code> in <code>HookParam</code>, now you can use <code>args().first()</code> or <code>args(index = 0)</code> to replace it</li><li>The <code>result</code> function in <code>HookParam</code> adds generic matching, now you can use <code>result&lt;T&gt;</code> to match the known return value type of your target method</li><li>The <code>emptyParam</code> condition is added to the method and constructor query function, and the misunderstanding of the query condition that needs to be paid attention to in the document has been improved</li><li>Added <code>android</code> type in <code>type</code></li>",6),Rt={id:"_1-0-73-2022-04-10",tabindex:"-1"},Yt=e("a",{class:"header-anchor",href:"#_1-0-73-2022-04-10","aria-hidden":"true"},"#",-1),St=o(" 1.0.73 | 2022.04.10 \u2002"),Lt=o("Fixed some Chinese translation errors in documents, thanks to "),Dt={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Xt=o("WankkoRee"),zt=o(" for their contributions"),Tt=o("Fixed the problem that "),Wt=e("code",null,"XC_LoadPackage.LoadPackageParam",-1),jt=o(" throws an exception when the content is empty in some cases, thanks to "),Bt={href:"https://github.com/luckyzyx",target:"_blank",rel:"noopener noreferrer"},Ot=o("Luckyzyx"),Nt=o(" for the feedback"),Et=e("li",null,"Fixed some known bugs and improve Hook stability",-1),Ut={id:"_1-0-72-2022-04-09",tabindex:"-1"},qt=e("a",{class:"header-anchor",href:"#_1-0-72-2022-04-09","aria-hidden":"true"},"#",-1),Kt=o(" 1.0.72 | 2022.04.09 \u2002"),Vt=e("ul",null,[e("li",null,"Update API documentation to new address"),e("li",null,[o("Add "),e("code",null,"appContext"),o(" function to "),e("code",null,"PackageParam")]),e("li",null,"Fixed some known bugs and improve Hook stability")],-1),Zt={id:"_1-0-71-2022-04-04",tabindex:"-1"},Gt=e("a",{class:"header-anchor",href:"#_1-0-71-2022-04-04","aria-hidden":"true"},"#",-1),Jt=o(" 1.0.71 | 2022.04.04 \u2002"),Qt=e("ul",null,[e("li",null,"Fixed a serious issue that would stop the Hook from throwing an exception when VariousClass could not be matched")],-1),$t={id:"_1-0-70-2022-04-04",tabindex:"-1"},ed=e("a",{class:"header-anchor",href:"#_1-0-70-2022-04-04","aria-hidden":"true"},"#",-1),od=o(" 1.0.70 | 2022.04.04 \u2002"),td=e("li",null,[o("Fixed "),e("code",null,"instanceClass"),o(" reporting an error after being called in a static instance")],-1),dd=o("Add "),id=e("code",null,"isUseAppClassLoader",-1),nd=o(" function in Hook process, thanks to "),cd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},ad=o("WankkoRee"),sd=o(" for feedback"),ld=e("li",null,[o("Added the "),e("code",null,"withProcess"),o(" function, which can be hooked according to the currently specified process of the APP")],-1),rd=e("li",null,"Fixed critical logic errors in lookup methods, constructor classes and variables",-1),hd=e("li",null,"Fixed the problem that the abnormal output cannot be ignored when the Hook target class does not exist",-1),ud=e("li",null,"Fixed the problem that the Hook could not take effect due to the fast loading of the APP startup method in some cases",-1),_d=o("Fixed "),md=e("code",null,"allMethods",-1),pd=o(" not throwing an exception when it is not hooked to a method, thanks to "),fd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},gd=o("WankkoRee"),kd=o(" for the feedback"),bd=o("Added Hook status monitoring function, thanks to "),yd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},xd=o("WankkoRee"),vd=o(" for the suggestion"),wd=e("li",null,"Modify the way the Xposed entry is injected into the class, and redefine the definition domain of the API",-1),Ad=o("Added obfuscated method and variable lookup function, you can use different types of filter "),Hd=e("code",null,"index",-1),Pd=o(" to locate the specified method and variable, thanks to "),Fd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Cd=o("WankkoRee"),Md=o(" for the ideas provided"),Id=e("li",null,[o("When looking for methods and variables, multiple types are allowed, such as the class name declared by "),e("code",null,"String"),o(" and "),e("code",null,"VariousClass")],-1),Rd=e("li",null,[o("Add a new "),e("code",null,"current"),o(" function, which can build a reflection method operation space for any class, and easily call and modify the methods and variables in it")],-1),Yd=o("Fixed a lot of bugs in the hook process, thanks to "),Sd={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Ld=o("WankkoRee"),Dd=o(" for contributing to this project"),Xd={id:"_1-0-69-2022-03-30",tabindex:"-1"},zd=e("a",{class:"header-anchor",href:"#_1-0-69-2022-03-30","aria-hidden":"true"},"#",-1),Td=o(" 1.0.69 | 2022.03.30 \u2002"),Wd=e("li",null,"Added and improved annotations for some method functions",-1),jd=e("li",null,"Added more example Hook content in Demo",-1),Bd=o("Fixed the issue that only the last one takes effect when "),Od=e("code",null,"allMethods",-1),Nd=o(" is used multiple times in a Hook instance, thanks to "),Ed={href:"https://github.com/WankkoRee",target:"_blank",rel:"noopener noreferrer"},Ud=o("WankkoRee"),qd=o(" for the feedback"),Kd={id:"_1-0-68-2022-03-29",tabindex:"-1"},Vd=e("a",{class:"header-anchor",href:"#_1-0-68-2022-03-29","aria-hidden":"true"},"#",-1),Zd=o(" 1.0.68 | 2022.03.29 \u2002"),Gd=n("<ul><li>Added new use case and LSPosed scope in Demo</li><li>Added <code>Member</code> lookup cache and lookup cache configuration switches</li><li>Removed and modified <code>MethodFinder</code>, <code>FieldFinder</code> and <code>HookParam</code> related method calls</li><li>Add more <code>cast</code> types in <code>Finder</code> and support <code>cast</code> as array</li><li>Overall performance and stability improvements</li><li>Fixed bugs that may exist in the previous version</li></ul>",1),Jd={id:"_1-0-67-2022-03-27",tabindex:"-1"},Qd=e("a",{class:"header-anchor",href:"#_1-0-67-2022-03-27","aria-hidden":"true"},"#",-1),$d=o(" 1.0.67 | 2022.03.27 \u2002"),ei=n("<ul><li>Added three <code>modifiers</code> functions in <code>Finder</code>, which can filter <code>static</code>, <code>native</code>, <code>public</code>, <code>abstract</code> and many other description types</li><li>When searching for methods and constructors, the method parameter type can be blurred to a specified number for searching</li><li>Added <code>hasModifiers</code> extension for <code>Member</code></li><li>Added <code>give</code> method in <code>MethodFinder</code> and <code>ConstructorFinder</code> to get primitive types</li><li>Added <code>PrefsData</code> template function in <code>YukiHookModulePrefs</code></li><li>Completely refactored method, constructor and variable lookup scheme</li><li>Optimized code comments and fixed possible bugs</li></ul>",1),oi={id:"_1-0-66-2022-03-25",tabindex:"-1"},ti=e("a",{class:"header-anchor",href:"#_1-0-66-2022-03-25","aria-hidden":"true"},"#",-1),di=o(" 1.0.66 | 2022.03.25 \u2002"),ii=e("ul",null,[e("li",null,[o("Fixed a serious bug in "),e("code",null,"MethodFinder")]),e("li",null,[o("Added "),e("code",null,"args"),o(" call method in "),e("code",null,"hookParam")]),e("li",null,"Fixed other possible problems and fix some class annotation problems")],-1),ni={id:"_1-0-65-2022-03-25",tabindex:"-1"},ci=e("a",{class:"header-anchor",href:"#_1-0-65-2022-03-25","aria-hidden":"true"},"#",-1),ai=o(" 1.0.65 | 2022.03.25 \u2002"),si=n("<ul><li>Republished version to fix the incorrect new version of the Maven repository due to cache issues</li><li>Added <code>MethodFinder</code> and <code>FieldFinder</code> new return value calling methods</li><li>Fixed possible problems and fix possible problems during the use of Tai Chi</li><li>Fixed possible problems with auto-generated Xposed entry classes</li><li>Added <code>android</code> type and <code>java</code> type in <code>type</code></li></ul>",1),li={id:"_1-0-6-2022-03-20",tabindex:"-1"},ri=e("a",{class:"header-anchor",href:"#_1-0-6-2022-03-20","aria-hidden":"true"},"#",-1),hi=o(" 1.0.6 | 2022.03.20 \u2002"),ui=n("<ul><li>Fixed <code>YukiHookModulePrefs</code> being ignored every time after using <code>direct</code> once to ignore cache</li><li>Added new API, abolished the traditional usage of <code>isActive</code> to judge module activation</li><li>Fixed the issue of printing debug logs when using the API in a non-Xposed environment</li><li>Fixed log output issue and unintercepted exception issue when looking for <code>Field</code></li><li>Decoupling Xposed API in <code>ReflectionUtils</code></li><li>Added <code>YukiHookModuleStatus</code> method name confusion to reduce the size of module generation</li><li>The welcome message will no longer be printed when loading the module&#39;s own Hook</li><li>Fixed some bugs that still exist in the previous version</li></ul>",1),_i={id:"_1-0-55-2022-03-18",tabindex:"-1"},mi=e("a",{class:"header-anchor",href:"#_1-0-55-2022-03-18","aria-hidden":"true"},"#",-1),pi=o(" 1.0.55 | 2022.03.18 \u2002"),fi=e("ul",null,[e("li",null,"Fixed an annotation error"),e("li",null,"Temporarily fix a bug"),e("li",null,[o("Added a large number of "),e("code",null,"android"),o(" types in "),e("code",null,"type"),o(" and a small number of "),e("code",null,"java"),o(" types")]),e("li",null,"Fixed compatibility issues between new and old Kotlin APIs")],-1),gi={id:"_1-0-5-2022-03-18",tabindex:"-1"},ki=e("a",{class:"header-anchor",href:"#_1-0-5-2022-03-18","aria-hidden":"true"},"#",-1),bi=o(" 1.0.5 | 2022.03.18 \u2002"),yi=n("<ul><li>Fixed the problem that the welcome message was printed multiple times in the case of the old version of the LSPosed framework</li><li>Added <code>onInit</code> method to configure <code>YukiHookAPI</code></li><li>Added <code>executorName</code> and <code>executorVersion</code> to get the name and version number of the current hook framework</li><li>Added <code>by</code> method to set the timing and condition of Hook</li><li><code>YukiHookModulePrefs</code> adds a controllable key-value cache, which can dynamically update data when the host is running</li><li>Fixed some possible bugs</li></ul>",1),xi={id:"_1-0-4-2022-03-06",tabindex:"-1"},vi=e("a",{class:"header-anchor",href:"#_1-0-4-2022-03-06","aria-hidden":"true"},"#",-1),wi=o(" 1.0.4 | 2022.03.06 \u2002"),Ai=n("<ul><li>Fixed LSPosed cannot find <code>XposedBridge</code> after enabling &quot;Only module classloader can use Xposed API&quot; option in latest version</li><li>Added constant version name and version number for <code>YukiHookAPI</code></li><li>Added <code>hasField</code> method and <code>isAllowPrintingLogs</code> configuration parameter</li><li>Added <code>isDebug</code> to enable the API to automatically print the welcome message to test whether the module is valid</li></ul>",1),Hi={id:"_1-0-3-2022-03-02",tabindex:"-1"},Pi=e("a",{class:"header-anchor",href:"#_1-0-3-2022-03-02","aria-hidden":"true"},"#",-1),Fi=o(" 1.0.3 | 2022.03.02 \u2002"),Ci=n("<ul><li>Fixed a potential exception not intercepted BUG</li><li>Added <code>ignoredError</code> function</li><li>Added <code>android</code> type in <code>type</code></li><li>Added <code>ClassNotFound</code> function after listening to <code>hook</code></li></ul>",1),Mi={id:"_1-0-2-2022-02-18",tabindex:"-1"},Ii=e("a",{class:"header-anchor",href:"#_1-0-2-2022-02-18","aria-hidden":"true"},"#",-1),Ri=o(" 1.0.2 | 2022.02.18 \u2002"),Yi=e("ul",null,[e("li",null,"Fixed the problem that the project path cannot be found under Windows"),e("li",null,[o("Remove part of reflection API, merge into "),e("code",null,"BaseFinder"),o(" for integration")]),e("li",null,"Add a method to create Hook directly using string")],-1),Si={id:"_1-0-1-2022-02-15",tabindex:"-1"},Li=e("a",{class:"header-anchor",href:"#_1-0-1-2022-02-15","aria-hidden":"true"},"#",-1),Di=o(" 1.0.1 | 2022.02.15 \u2002"),Xi=e("ul",null,[e("li",null,[e("code",null,"RemedyPlan"),o(" adds "),e("code",null,"onFind"),o(" function")]),e("li",null,"Integrate and modify some reflection API code"),e("li",null,[o("Added "),e("code",null,"java"),o(" type in "),e("code",null,"type")]),e("li",null,"Fixed the issue that ignored errors still output in the console")],-1),zi={id:"_1-0-2022-02-14",tabindex:"-1"},Ti=e("a",{class:"header-anchor",href:"#_1-0-2022-02-14","aria-hidden":"true"},"#",-1),Wi=o(" 1.0 | 2022.02.14 \u2002"),ji=e("ul",null,[e("li",null,"The first version is submitted to Maven")],-1);function Bi(Oi,Ni){const d=c("Badge"),i=c("ExternalLinkIcon");return s(),l("div",null,[h,e("h3",u,[_,m,t(d,{type:"tip",text:"latest",vertical:"middle"})]),p,e("h3",f,[g,k,t(d,{type:"warning",text:"stale",vertical:"middle"})]),b,e("h3",y,[x,v,t(d,{type:"warning",text:"stale",vertical:"middle"})]),w,e("h3",A,[H,P,t(d,{type:"warning",text:"stale",vertical:"middle"})]),F,e("h3",C,[M,I,t(d,{type:"warning",text:"stale",vertical:"middle"})]),e("ul",null,[R,e("li",null,[Y,e("a",S,[L,t(i)])]),D,e("li",null,[X,e("a",z,[T,t(i)]),W]),j,e("li",null,[B,O,N,E,U,q,e("a",K,[V,t(i)]),Z]),G,e("li",null,[J,Q,$,e("a",ee,[oe,t(i)]),te]),e("li",null,[de,ie,ne,e("a",ce,[ae,t(i)]),se]),le,e("li",null,[re,he,ue,_e,me,e("a",pe,[fe,t(i)]),ge,e("a",ke,[be,t(i)])]),ye,xe,ve,e("li",null,[we,Ae,He,Pe,Fe,e("a",Ce,[Me,t(i)]),Ie]),Re,e("li",null,[Ye,Se,Le,e("a",De,[Xe,t(i)]),ze,e("a",Te,[We,t(i)])]),je,Be,Oe,Ne]),e("h3",Ee,[Ue,qe,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ke,e("h3",Ve,[Ze,Ge,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[Je,Qe,$e,e("a",eo,[oo,t(i)]),to]),io]),e("h3",no,[co,ao,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),so,e("h3",lo,[ro,ho,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),uo,e("h3",_o,[mo,po,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),fo,e("h3",go,[ko,bo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),yo,e("h3",xo,[vo,wo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ao,e("h3",Ho,[Po,Fo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Co,e("h3",Mo,[Io,Ro,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Yo,e("h3",So,[Lo,Do,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Xo,e("h3",zo,[To,Wo,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),jo,e("h3",Bo,[Oo,No,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[Eo,e("li",null,[Uo,qo,Ko,e("a",Vo,[Zo,t(i)]),Go]),Jo,Qo,$o]),e("h3",et,[ot,tt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[dt,e("li",null,[it,nt,ct,e("a",at,[st,t(i)]),lt]),rt,ht]),e("h3",ut,[_t,mt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[pt,ft,gt,kt,e("a",bt,[yt,t(i)]),xt]),vt]),e("h3",wt,[At,Ht,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[Pt,e("a",Ft,[Ct,t(i)]),Mt]),It]),e("h3",Rt,[Yt,St,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[e("li",null,[Lt,e("a",Dt,[Xt,t(i)]),zt]),e("li",null,[Tt,Wt,jt,e("a",Bt,[Ot,t(i)]),Nt]),Et]),e("h3",Ut,[qt,Kt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Vt,e("h3",Zt,[Gt,Jt,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Qt,e("h3",$t,[ed,od,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[td,e("li",null,[dd,id,nd,e("a",cd,[ad,t(i)]),sd]),ld,rd,hd,ud,e("li",null,[_d,md,pd,e("a",fd,[gd,t(i)]),kd]),e("li",null,[bd,e("a",yd,[xd,t(i)]),vd]),wd,e("li",null,[Ad,Hd,Pd,e("a",Fd,[Cd,t(i)]),Md]),Id,Rd,e("li",null,[Yd,e("a",Sd,[Ld,t(i)]),Dd])]),e("h3",Xd,[zd,Td,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),e("ul",null,[Wd,jd,e("li",null,[Bd,Od,Nd,e("a",Ed,[Ud,t(i)]),qd])]),e("h3",Kd,[Vd,Zd,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Gd,e("h3",Jd,[Qd,$d,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),ei,e("h3",oi,[ti,di,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),ii,e("h3",ni,[ci,ai,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),si,e("h3",li,[ri,hi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),ui,e("h3",_i,[mi,pi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),fi,e("h3",gi,[ki,bi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),yi,e("h3",xi,[vi,wi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ai,e("h3",Hi,[Pi,Fi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Ci,e("h3",Mi,[Ii,Ri,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Yi,e("h3",Si,[Li,Di,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),Xi,e("h3",zi,[Ti,Wi,t(d,{type:"danger",text:"outdate",vertical:"middle"})]),ji])}const Ui=a(r,[["render",Bi],["__file","changelog.html.vue"]]);export{Ui as default};