diff --git a/404.html b/404.html index e774cb88f..94557f55c 100644 --- a/404.html +++ b/404.html @@ -31,10 +31,10 @@ } - + -
Skip to main content

404

Page not found

Looks like we've got some broken links.

- +
Skip to main content

404

Page not found

That’s a Four-Oh-Four.

+ diff --git a/assets/404.html-1aebf0e6.js b/assets/404.html-97007618.js similarity index 71% rename from assets/404.html-1aebf0e6.js rename to assets/404.html-97007618.js index 228fe79a9..57400eb9e 100644 --- a/assets/404.html-1aebf0e6.js +++ b/assets/404.html-97007618.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c}from"./app-8a0ddeb8.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c}from"./app-96c84a17.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; diff --git a/assets/SearchResult-f47ae451.js b/assets/SearchResult-286cfce8.js similarity index 98% rename from assets/SearchResult-f47ae451.js rename to assets/SearchResult-286cfce8.js index 466f6d23a..ca790ca18 100644 --- a/assets/SearchResult-f47ae451.js +++ b/assets/SearchResult-286cfce8.js @@ -1 +1 @@ -import{u as I,f as ee,g as j,h as B,Z as ae,i as le,t as se,j as x,k as D,l as te,m as M,n as l,p as _,q as F,s as U,v as re,x as ue,y as ie,z as ne,R as oe,O as ce,A as ve,B as pe,C as he,D as ye,E as de,F as me,G as b,H as fe}from"./app-8a0ddeb8.js";const ge="SEARCH_PRO_QUERY_HISTORY",y=I(ge,[]),He=()=>{const{queryHistoryCount:r}=b,n=r>0;return{enabled:n,queryHistory:y,addQueryHistory:t=>{n&&(y.value.length{y.value=[...y.value.slice(0,t),...y.value.slice(t+1)]}}},Re="SEARCH_PRO_RESULT_HISTORY",{resultHistoryCount:E}=b,d=I(Re,[]),Qe=()=>{const r=j(),n=E>0,t=s=>r.resolve({name:s.key,..."anchor"in s?{hash:`#${s.anchor}`}:{}}).fullPath;return{enabled:n,resultHistory:d,addResultHistory:s=>{if(n){const u={link:t(s),display:s.display};"header"in s&&(u.header=s.header),d.value.length{d.value=[...d.value.slice(0,s),...d.value.slice(s+1)]}}},ke=r=>{const n=oe(),t=B(),{search:s,terminate:u}=ce(),f=x(!1),g=ve([]);return pe(()=>{const m=()=>{g.value=[],f.value=!1},w=fe(H=>{f.value=!0,H?s({type:"search",query:H,locale:t.value,options:n}).then(h=>{g.value=h,f.value=!1}).catch(h=>{console.error(h),m()}):m()},b.searchDelay);M([r,t],()=>w(r.value),{immediate:!0}),he(()=>{u()})}),{searching:f,results:g}};var we=ee({name:"SearchResult",props:{query:{type:String,required:!0},isFocusing:Boolean},emits:["close","updateQuery"],setup(r,{emit:n}){const t=j(),s=B(),u=ae(le),{enabled:f,addQueryHistory:g,queryHistory:m,removeQueryHistory:w}=He(),{enabled:H,resultHistory:h,addResultHistory:O,removeResultHistory:Y}=Qe(),P=f||H,S=se(r,"query"),{results:R,searching:z}=ke(S),o=x({isQuery:!0,index:0}),p=x(0),c=x(0),L=D(()=>P&&(m.value.length>0||h.value.length>0)),C=D(()=>R.value.length>0),q=D(()=>R.value[p.value]||null),T=e=>t.resolve({name:e.key,..."anchor"in e?{hash:`#${e.anchor}`}:{}}).fullPath,G=()=>{const{isQuery:e,index:a}=o.value;a===0?o.value={isQuery:!e,index:e?h.value.length-1:m.value.length-1}:o.value={isQuery:e,index:a-1}},V=()=>{const{isQuery:e,index:a}=o.value;a===(e?m.value.length-1:h.value.length-1)?o.value={isQuery:!e,index:0}:o.value={isQuery:e,index:a+1}},Z=()=>{p.value=p.value>0?p.value-1:R.value.length-1,c.value=q.value.contents.length-1},J=()=>{p.value=p.value{c.value{c.value>0?c.value=c.value-1:Z()},A=e=>e.map(a=>ye(a)?a:l(a[0],a[1])),W=e=>{if(e.type==="customField"){const a=de[e.index]||"$content",[i,k=""]=me(a)?a[s.value].split("$content"):a.split("$content");return e.display.map(v=>l("div",A([i,...v,k])))}return e.display.map(a=>l("div",A(a)))},Q=()=>{p.value=0,c.value=0,n("updateQuery",""),n("close")};return te("keydown",e=>{if(r.isFocusing){if(C.value){if(e.key==="ArrowUp")N();else if(e.key==="ArrowDown")K();else if(e.key==="Enter"){const a=q.value.contents[c.value],i=T(a);g(r.query),O(a),t.push(i),Q()}}else if(H){if(e.key==="ArrowUp")G();else if(e.key==="ArrowDown")V();else if(e.key==="Enter"){const{index:a}=o.value;o.value.isQuery?(n("updateQuery",m.value[a]),e.preventDefault()):(t.push(h.value[a].link),Q())}}}}),M([p,c],()=>{var e;(e=document.querySelector(".search-pro-result-list-item.active .search-pro-result-item.active"))==null||e.scrollIntoView(!1)},{flush:"post"}),()=>l("div",{class:["search-pro-result-wrapper",{empty:S.value?!C.value:!L.value}],id:"search-pro-results"},S.value===""?P?L.value?[f?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.history),m.value.map((e,a)=>l("div",{class:["search-pro-result-item",{active:o.value.isQuery&&o.value.index===a}],onClick:()=>{n("updateQuery",e)}},[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},e),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),w(a)}})]))])):null,H?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.history),h.value.map((e,a)=>l(U,{to:e.link,class:["search-pro-result-item",{active:!o.value.isQuery&&o.value.index===a}],onClick:()=>{Q()}},()=>[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[e.header?l("div",{class:"content-header"},e.header):null,l("div",e.display.map(i=>A(i)).flat())]),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),Y(a)}})]))])):null]:u.value.emptyHistory:u.value.emptyResult:z.value?l(re,{hint:u.value.searching}):C.value?l("ul",{class:"search-pro-result-list"},R.value.map(({title:e,contents:a},i)=>{const k=p.value===i;return l("li",{class:["search-pro-result-list-item",{active:k}]},[l("div",{class:"search-pro-result-title"},e||u.value.defaultTitle),a.map((v,X)=>{const $=k&&c.value===X;return l(U,{to:T(v),class:["search-pro-result-item",{active:$,"aria-selected":$}],onClick:()=>{g(r.query),O(v),Q()}},()=>[v.type==="text"?null:l(v.type==="title"?ue:v.type==="heading"?ie:ne,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[v.type==="text"&&v.header?l("div",{class:"content-header"},v.header):null,l("div",W(v))])])})])})):u.value.emptyResult)}});export{we as default}; +import{u as I,f as ee,g as j,h as B,Z as ae,i as le,t as se,j as x,k as D,l as te,m as M,n as l,p as _,q as F,s as U,v as re,x as ue,y as ie,z as ne,R as oe,O as ce,A as ve,B as pe,C as he,D as ye,E as de,F as me,G as b,H as fe}from"./app-96c84a17.js";const ge="SEARCH_PRO_QUERY_HISTORY",y=I(ge,[]),He=()=>{const{queryHistoryCount:r}=b,n=r>0;return{enabled:n,queryHistory:y,addQueryHistory:t=>{n&&(y.value.length{y.value=[...y.value.slice(0,t),...y.value.slice(t+1)]}}},Re="SEARCH_PRO_RESULT_HISTORY",{resultHistoryCount:E}=b,d=I(Re,[]),Qe=()=>{const r=j(),n=E>0,t=s=>r.resolve({name:s.key,..."anchor"in s?{hash:`#${s.anchor}`}:{}}).fullPath;return{enabled:n,resultHistory:d,addResultHistory:s=>{if(n){const u={link:t(s),display:s.display};"header"in s&&(u.header=s.header),d.value.length{d.value=[...d.value.slice(0,s),...d.value.slice(s+1)]}}},ke=r=>{const n=oe(),t=B(),{search:s,terminate:u}=ce(),f=x(!1),g=ve([]);return pe(()=>{const m=()=>{g.value=[],f.value=!1},w=fe(H=>{f.value=!0,H?s({type:"search",query:H,locale:t.value,options:n}).then(h=>{g.value=h,f.value=!1}).catch(h=>{console.error(h),m()}):m()},b.searchDelay);M([r,t],()=>w(r.value),{immediate:!0}),he(()=>{u()})}),{searching:f,results:g}};var we=ee({name:"SearchResult",props:{query:{type:String,required:!0},isFocusing:Boolean},emits:["close","updateQuery"],setup(r,{emit:n}){const t=j(),s=B(),u=ae(le),{enabled:f,addQueryHistory:g,queryHistory:m,removeQueryHistory:w}=He(),{enabled:H,resultHistory:h,addResultHistory:O,removeResultHistory:Y}=Qe(),P=f||H,S=se(r,"query"),{results:R,searching:z}=ke(S),o=x({isQuery:!0,index:0}),p=x(0),c=x(0),L=D(()=>P&&(m.value.length>0||h.value.length>0)),C=D(()=>R.value.length>0),q=D(()=>R.value[p.value]||null),T=e=>t.resolve({name:e.key,..."anchor"in e?{hash:`#${e.anchor}`}:{}}).fullPath,G=()=>{const{isQuery:e,index:a}=o.value;a===0?o.value={isQuery:!e,index:e?h.value.length-1:m.value.length-1}:o.value={isQuery:e,index:a-1}},V=()=>{const{isQuery:e,index:a}=o.value;a===(e?m.value.length-1:h.value.length-1)?o.value={isQuery:!e,index:0}:o.value={isQuery:e,index:a+1}},Z=()=>{p.value=p.value>0?p.value-1:R.value.length-1,c.value=q.value.contents.length-1},J=()=>{p.value=p.value{c.value{c.value>0?c.value=c.value-1:Z()},A=e=>e.map(a=>ye(a)?a:l(a[0],a[1])),W=e=>{if(e.type==="customField"){const a=de[e.index]||"$content",[i,k=""]=me(a)?a[s.value].split("$content"):a.split("$content");return e.display.map(v=>l("div",A([i,...v,k])))}return e.display.map(a=>l("div",A(a)))},Q=()=>{p.value=0,c.value=0,n("updateQuery",""),n("close")};return te("keydown",e=>{if(r.isFocusing){if(C.value){if(e.key==="ArrowUp")N();else if(e.key==="ArrowDown")K();else if(e.key==="Enter"){const a=q.value.contents[c.value],i=T(a);g(r.query),O(a),t.push(i),Q()}}else if(H){if(e.key==="ArrowUp")G();else if(e.key==="ArrowDown")V();else if(e.key==="Enter"){const{index:a}=o.value;o.value.isQuery?(n("updateQuery",m.value[a]),e.preventDefault()):(t.push(h.value[a].link),Q())}}}}),M([p,c],()=>{var e;(e=document.querySelector(".search-pro-result-list-item.active .search-pro-result-item.active"))==null||e.scrollIntoView(!1)},{flush:"post"}),()=>l("div",{class:["search-pro-result-wrapper",{empty:S.value?!C.value:!L.value}],id:"search-pro-results"},S.value===""?P?L.value?[f?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.history),m.value.map((e,a)=>l("div",{class:["search-pro-result-item",{active:o.value.isQuery&&o.value.index===a}],onClick:()=>{n("updateQuery",e)}},[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},e),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),w(a)}})]))])):null,H?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.history),h.value.map((e,a)=>l(U,{to:e.link,class:["search-pro-result-item",{active:!o.value.isQuery&&o.value.index===a}],onClick:()=>{Q()}},()=>[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[e.header?l("div",{class:"content-header"},e.header):null,l("div",e.display.map(i=>A(i)).flat())]),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),Y(a)}})]))])):null]:u.value.emptyHistory:u.value.emptyResult:z.value?l(re,{hint:u.value.searching}):C.value?l("ul",{class:"search-pro-result-list"},R.value.map(({title:e,contents:a},i)=>{const k=p.value===i;return l("li",{class:["search-pro-result-list-item",{active:k}]},[l("div",{class:"search-pro-result-title"},e||u.value.defaultTitle),a.map((v,X)=>{const $=k&&c.value===X;return l(U,{to:T(v),class:["search-pro-result-item",{active:$,"aria-selected":$}],onClick:()=>{g(r.query),O(v),Q()}},()=>[v.type==="text"?null:l(v.type==="title"?ue:v.type==="heading"?ie:ne,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[v.type==="text"&&v.header?l("div",{class:"content-header"},v.header):null,l("div",W(v))])])})])})):u.value.emptyResult)}});export{we as default}; diff --git a/assets/abap-language-version.html-2b261184.js b/assets/abap-language-version.html-ef2077d1.js similarity index 99% rename from assets/abap-language-version.html-2b261184.js rename to assets/abap-language-version.html-ef2077d1.js index 2e5419a92..6fe3c4a06 100644 --- a/assets/abap-language-version.html-2b261184.js +++ b/assets/abap-language-version.html-ef2077d1.js @@ -1 +1 @@ -import{_ as d}from"./plugin-vue_export-helper-c27b6911.js";import{r as s,o as l,c as p,a as e,b as t,d as o,w as i,e as n}from"./app-8a0ddeb8.js";const h={},c=n('

ABAP Language Version

With the 7.52 release, SAP provides the usage of the ABAP language version information in the on-premises world.

abapGit has been enhanced to support consistent handling of the ABAP language version across the different abapGit "flavors" (open-source / part of SAP BTP ABAP environment).

Note

Using ABAP language version in abapGit is still an experimental feature.

So far, abapGit handles ABAP language version only for a limited set of object types. See Supported Object Types, below.

Settings

',5),u=n('
SettingDescription
Any (default)Object-specific ABAP language version
IgnoreABAP language version not serialized
Standard ABAPOnly objects with "Standard ABAP" are allowed
ABAP for Key UsersOnly objects with "ABAP for Key Users" are allowed
ABAP for Cloud DevelopmentOnly objects with "ABAP for Cloud Development" are allowed

Any ABAP Language Version

If you do not define the ABAP language version (default setting "Any"), you can mix objects of any ABAP language version in a repository.

Info

This setting is recommended for repositories containing objects of more than one ABAP language version, which you would like to keep during import.

Export

When serializing objects, the ABAP language version will be part of the metadata of each object.

Import

When deserializing objects, abapGit will set the ABAP language version according to the metadata of each object.

Note

The ABAP language version of an object might lead to errors during import or when trying to activate objects. For example, if you try to import "Standard ABAP" into BTP which requires "ABAP for Cloud Development" you might get syntax errors.

Ignore ABAP Language Version

If you set the ABAP language version to "Ignore" it will not be serialized. This avoids diffs due to variations in development and target environments.

Info

This setting is recommended for cross-platform repositories with code running on-premises and BTP.

Export

When serializing objects, the ABAP language version will not be part of the object metadata.

Import

When deserializing objects, abapGit will set the ABAP language version according to the target SAP package (software component).

Note

The ABAP language version of an object might lead to errors during import or when trying to activate objects.

Standard ABAP, ABAP for Key Users, ABAP for Cloud Development

If a specific ABAP language version is defined, then all objects in the repository must adhere to this ABAP language version. If not, you will receive an error message.

Info

This setting is recommended for repositories that support only one platform.

Export

When serializing objects, the ABAP language version will be part of the metadata of each object.

Import

We distinguish two cases:

  1. The root package has the same or an undefined ABAP language version as specified in the repository

    When deserializing objects, abapGit will set the ABAP language version according to the setting in the repository.

  2. The root package has a different ABAP language version than specified in the repository

    When deserializing objects, abapGit will raise an error message alerting you to the mismatch. To import objects, change the ABAP language version of your root package to match the repository. However, this might not be possible since you can't use "Standard ABAP" on BTP, for example.

Summary

The following table shows the combinations of ABAP language settings of the repository and of the root package used for importing:

Root Package:Repo:
Any or Ignore
Repo:
Standard ABAP
Repo:
ABAP for Key Users
Repo:
ABAP for Cloud Development
Undefined (Any)(1)(1)(1)(1)
Standard ABAP(1)(2)(3)(3)
ABAP for Key Users(1)(3)(2)(3)
ABAP for Cloud Development(1)(3)(3)(2)

(1) Import possible (success if the individual objects are compatible with the target system and ABAP language version)

(2) Import possible

(3) Import not possible (error message)

Examples

If your project uses programs, function modules, or classes not released for "ABAP for Cloud Development", set the ABAP language version to "Standard ABAP".
This will ensure that users will not be able to install the project in systems where the use of "ABAP for Cloud Development" is enforced*.

Conversely, if your project uses exclusively objects and code released for ABAP for Key Users or Cloud Development, set the ABAP language version accordingly.
This will ensure that only objects compatible with systems will be included in your project, where the use of "ABAP for Cloud Development" is enforced*.

When transferring code from an on premise system to a system where the use of "ABAP for Cloud Development" is enforced* you can use the repository setting Ignore ABAP Language Version if your code has been developed using ABAP language version "Standard ABAP" though it could be activated using ABAP language version "ABAP for Cloud Development" as well. An example for this would be a RAP business object that uses tables with custom developed data elements. In this case the ABAP language version would be set to "ABAP for Cloud Development" based on the settings of the target package.

*(SAP BTP ABAP Environment, SAP S/4HANA ABAP Environment or SAP S/4HANA on prem / private cloud when using a software component with ABAP language version "ABAP for Cloud Development")

',36),g={class:"hint-container info"},A=e("p",{class:"hint-container-title"},"Info",-1),f={href:"https://github.com/abaplint/abaplint/blob/main/docs/getting_started.md",target:"_blank",rel:"noopener noreferrer"},b=n('

Supported Object Types

So far, handling of ABAP language version is implemented for the following object types:

CLAS, DEVC, FUGR, INTF, PROG, and objects based on the ABAP file format.

It's planned to support other object types that include the ABAP language version as well.

',4),m=e("h3",{id:"further-information",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#further-information","aria-hidden":"true"},"#"),t(" Further Information")],-1),v={href:"https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abenabap_versions.htm",target:"_blank",rel:"noopener noreferrer"},y=e("br",null,null,-1),P={href:"https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/abenabap_versions.htm",target:"_blank",rel:"noopener noreferrer"},B=e("br",null,null,-1),_={href:"https://blogs.sap.com/2022/09/09/abap-language-versions-faqs/",target:"_blank",rel:"noopener noreferrer"},w=e("br",null,null,-1),x={href:"https://github.com/abapGit/abapGit/issues/6154#issuecomment-1749086748",target:"_blank",rel:"noopener noreferrer"};function j(q,S){const r=s("RouterLink"),a=s("ExternalLinkIcon");return l(),p("div",null,[c,e("p",null,[t("There are five possible "),o(r,{to:"/user-guide/repo-settings/dot-abapgit.html"},{default:i(()=>[t("settings")]),_:1}),t(" for defining how the ABAP language version is handled by abapGit:")]),u,e("div",g,[A,e("p",null,[t("You can use "),e("a",f,[t("abaplint"),o(a)]),t(" to automatically check for compatibility.")])]),b,e("p",null,[t("See "),o(r,{to:"/user-guide/reference/supported.html"},{default:i(()=>[t("Supported Object Types")]),_:1}),t(" for details.")]),m,e("p",null,[e("a",v,[t("Standard Documentation"),o(a)]),y,e("a",P,[t("Cloud Documentation"),o(a)]),B,e("a",_,[t("Blog and FAQ"),o(a)]),w,e("a",x,[t("Object Types Supporting ABAP Language Version (in general)"),o(a)])])])}const k=d(h,[["render",j],["__file","abap-language-version.html.vue"]]);export{k as default}; +import{_ as d}from"./plugin-vue_export-helper-c27b6911.js";import{r as s,o as l,c as p,a as e,b as t,d as o,w as i,e as n}from"./app-96c84a17.js";const h={},c=n('

ABAP Language Version

With the 7.52 release, SAP provides the usage of the ABAP language version information in the on-premises world.

abapGit has been enhanced to support consistent handling of the ABAP language version across the different abapGit "flavors" (open-source / part of SAP BTP ABAP environment).

Note

Using ABAP language version in abapGit is still an experimental feature.

So far, abapGit handles ABAP language version only for a limited set of object types. See Supported Object Types, below.

Settings

',5),u=n('
SettingDescription
Any (default)Object-specific ABAP language version
IgnoreABAP language version not serialized
Standard ABAPOnly objects with "Standard ABAP" are allowed
ABAP for Key UsersOnly objects with "ABAP for Key Users" are allowed
ABAP for Cloud DevelopmentOnly objects with "ABAP for Cloud Development" are allowed

Any ABAP Language Version

If you do not define the ABAP language version (default setting "Any"), you can mix objects of any ABAP language version in a repository.

Info

This setting is recommended for repositories containing objects of more than one ABAP language version, which you would like to keep during import.

Export

When serializing objects, the ABAP language version will be part of the metadata of each object.

Import

When deserializing objects, abapGit will set the ABAP language version according to the metadata of each object.

Note

The ABAP language version of an object might lead to errors during import or when trying to activate objects. For example, if you try to import "Standard ABAP" into BTP which requires "ABAP for Cloud Development" you might get syntax errors.

Ignore ABAP Language Version

If you set the ABAP language version to "Ignore" it will not be serialized. This avoids diffs due to variations in development and target environments.

Info

This setting is recommended for cross-platform repositories with code running on-premises and BTP.

Export

When serializing objects, the ABAP language version will not be part of the object metadata.

Import

When deserializing objects, abapGit will set the ABAP language version according to the target SAP package (software component).

Note

The ABAP language version of an object might lead to errors during import or when trying to activate objects.

Standard ABAP, ABAP for Key Users, ABAP for Cloud Development

If a specific ABAP language version is defined, then all objects in the repository must adhere to this ABAP language version. If not, you will receive an error message.

Info

This setting is recommended for repositories that support only one platform.

Export

When serializing objects, the ABAP language version will be part of the metadata of each object.

Import

We distinguish two cases:

  1. The root package has the same or an undefined ABAP language version as specified in the repository

    When deserializing objects, abapGit will set the ABAP language version according to the setting in the repository.

  2. The root package has a different ABAP language version than specified in the repository

    When deserializing objects, abapGit will raise an error message alerting you to the mismatch. To import objects, change the ABAP language version of your root package to match the repository. However, this might not be possible since you can't use "Standard ABAP" on BTP, for example.

Summary

The following table shows the combinations of ABAP language settings of the repository and of the root package used for importing:

Root Package:Repo:
Any or Ignore
Repo:
Standard ABAP
Repo:
ABAP for Key Users
Repo:
ABAP for Cloud Development
Undefined (Any)(1)(1)(1)(1)
Standard ABAP(1)(2)(3)(3)
ABAP for Key Users(1)(3)(2)(3)
ABAP for Cloud Development(1)(3)(3)(2)

(1) Import possible (success if the individual objects are compatible with the target system and ABAP language version)

(2) Import possible

(3) Import not possible (error message)

Examples

If your project uses programs, function modules, or classes not released for "ABAP for Cloud Development", set the ABAP language version to "Standard ABAP".
This will ensure that users will not be able to install the project in systems where the use of "ABAP for Cloud Development" is enforced*.

Conversely, if your project uses exclusively objects and code released for ABAP for Key Users or Cloud Development, set the ABAP language version accordingly.
This will ensure that only objects compatible with systems will be included in your project, where the use of "ABAP for Cloud Development" is enforced*.

When transferring code from an on premise system to a system where the use of "ABAP for Cloud Development" is enforced* you can use the repository setting Ignore ABAP Language Version if your code has been developed using ABAP language version "Standard ABAP" though it could be activated using ABAP language version "ABAP for Cloud Development" as well. An example for this would be a RAP business object that uses tables with custom developed data elements. In this case the ABAP language version would be set to "ABAP for Cloud Development" based on the settings of the target package.

*(SAP BTP ABAP Environment, SAP S/4HANA ABAP Environment or SAP S/4HANA on prem / private cloud when using a software component with ABAP language version "ABAP for Cloud Development")

',36),g={class:"hint-container info"},A=e("p",{class:"hint-container-title"},"Info",-1),f={href:"https://github.com/abaplint/abaplint/blob/main/docs/getting_started.md",target:"_blank",rel:"noopener noreferrer"},b=n('

Supported Object Types

So far, handling of ABAP language version is implemented for the following object types:

CLAS, DEVC, FUGR, INTF, PROG, and objects based on the ABAP file format.

It's planned to support other object types that include the ABAP language version as well.

',4),m=e("h3",{id:"further-information",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#further-information","aria-hidden":"true"},"#"),t(" Further Information")],-1),v={href:"https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abenabap_versions.htm",target:"_blank",rel:"noopener noreferrer"},y=e("br",null,null,-1),P={href:"https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/abenabap_versions.htm",target:"_blank",rel:"noopener noreferrer"},B=e("br",null,null,-1),_={href:"https://blogs.sap.com/2022/09/09/abap-language-versions-faqs/",target:"_blank",rel:"noopener noreferrer"},w=e("br",null,null,-1),x={href:"https://github.com/abapGit/abapGit/issues/6154#issuecomment-1749086748",target:"_blank",rel:"noopener noreferrer"};function j(q,S){const r=s("RouterLink"),a=s("ExternalLinkIcon");return l(),p("div",null,[c,e("p",null,[t("There are five possible "),o(r,{to:"/user-guide/repo-settings/dot-abapgit.html"},{default:i(()=>[t("settings")]),_:1}),t(" for defining how the ABAP language version is handled by abapGit:")]),u,e("div",g,[A,e("p",null,[t("You can use "),e("a",f,[t("abaplint"),o(a)]),t(" to automatically check for compatibility.")])]),b,e("p",null,[t("See "),o(r,{to:"/user-guide/reference/supported.html"},{default:i(()=>[t("Supported Object Types")]),_:1}),t(" for details.")]),m,e("p",null,[e("a",v,[t("Standard Documentation"),o(a)]),y,e("a",P,[t("Cloud Documentation"),o(a)]),B,e("a",_,[t("Blog and FAQ"),o(a)]),w,e("a",x,[t("Object Types Supporting ABAP Language Version (in general)"),o(a)])])])}const k=d(h,[["render",j],["__file","abap-language-version.html.vue"]]);export{k as default}; diff --git a/assets/adding-icons.html-8eac0d4e.js b/assets/adding-icons.html-66211484.js similarity index 94% rename from assets/adding-icons.html-8eac0d4e.js rename to assets/adding-icons.html-66211484.js index 1340aa802..e310d5b7e 100644 --- a/assets/adding-icons.html-8eac0d4e.js +++ b/assets/adding-icons.html-66211484.js @@ -1 +1 @@ -import{_ as l}from"./plugin-vue_export-helper-c27b6911.js";import{r as i,o as s,c as r,a as e,b as t,d as n,w as c}from"./app-8a0ddeb8.js";const d={},_=e("p",null,"abapGit uses SIL and MIT-licensed fonts, they are included in the distribution as a MIME object. This includes MIME objects:",-1),h=e("ul",null,[e("li",null,[e("code",null,"ZABAPGIT_ICON_FONT"),t(" - font in WOFF format containing the custom icon set. WOFF is used due to compatibility, SAP GUI for Windows reusing Internet Explorer control (IE 11)")]),e("li",null,[e("code",null,"ZABAPGIT_ICON_FONT_CSS"),t(" - CSS icon map")])],-1),p=e("p",null,"To add an icon to the icon set follow the next procedure:",-1),u={href:"https://github.com/abapGit/icon-font",target:"_blank",rel:"noopener noreferrer"},f={href:"https://github.com/abapGit/icon-font/blob/main/README.md",target:"_blank",rel:"noopener noreferrer"},m=e("li",null,"Get the new abapGit font and icon files from the icon-font GitHub action",-1),b=e("li",null,[t("Go to transaction "),e("code",null,"SMW0"),t(" and display the abapGit MIME objects (Binary > Package $abapgit)")],-1),I=e("li",null,[t("Upload the new font file to "),e("code",null,"ZABAPGIT_ICON_FONT")],-1),g=e("li",null,[t("Upload the new CSS file to "),e("code",null,"ZABAPGIT_ICON_FONT_CSS")],-1),G={href:"https://github.com/abapGit/abapGit",target:"_blank",rel:"noopener noreferrer"},S=e("p",null,[t("Please "),e("strong",null,"mind the licensing"),t(" when adding icons that are not from Font Awesome.")],-1),A={class:"hint-container info"},T=e("p",{class:"hint-container-title"},"Info",-1),k={href:"https://github.com/sbcgua/abap_w3mi_poller",target:"_blank",rel:"noopener noreferrer"};function w(C,N){const o=i("ExternalLinkIcon"),a=i("RouterLink");return s(),r("div",null,[_,h,p,e("ol",null,[e("li",null,[t("Add the icon to repo "),e("a",u,[t("abapGit Icon Font"),n(o)]),t(" as documented "),e("a",f,[t("here"),n(o)])]),m,b,I,g,e("li",null,[t("Start abapGit and commit the changes the "),e("a",G,[t("abapGit/abapGit"),n(o)]),t(" repo (preferably in a separate commit)")])]),S,e("div",A,[T,e("p",null,[t("Alternatively you can use "),e("a",k,[t("w3mipoller"),n(o)]),t(" for the upload step. See also "),n(a,{to:"/development-guide/user-interface/developing-ui-css.html"},{default:c(()=>[t("UI - CSS and assets")]),_:1}),t(".")])])])}const O=l(d,[["render",w],["__file","adding-icons.html.vue"]]);export{O as default}; +import{_ as l}from"./plugin-vue_export-helper-c27b6911.js";import{r as i,o as s,c as r,a as e,b as t,d as n,w as c}from"./app-96c84a17.js";const d={},_=e("p",null,"abapGit uses SIL and MIT-licensed fonts, they are included in the distribution as a MIME object. This includes MIME objects:",-1),h=e("ul",null,[e("li",null,[e("code",null,"ZABAPGIT_ICON_FONT"),t(" - font in WOFF format containing the custom icon set. WOFF is used due to compatibility, SAP GUI for Windows reusing Internet Explorer control (IE 11)")]),e("li",null,[e("code",null,"ZABAPGIT_ICON_FONT_CSS"),t(" - CSS icon map")])],-1),p=e("p",null,"To add an icon to the icon set follow the next procedure:",-1),u={href:"https://github.com/abapGit/icon-font",target:"_blank",rel:"noopener noreferrer"},f={href:"https://github.com/abapGit/icon-font/blob/main/README.md",target:"_blank",rel:"noopener noreferrer"},m=e("li",null,"Get the new abapGit font and icon files from the icon-font GitHub action",-1),b=e("li",null,[t("Go to transaction "),e("code",null,"SMW0"),t(" and display the abapGit MIME objects (Binary > Package $abapgit)")],-1),I=e("li",null,[t("Upload the new font file to "),e("code",null,"ZABAPGIT_ICON_FONT")],-1),g=e("li",null,[t("Upload the new CSS file to "),e("code",null,"ZABAPGIT_ICON_FONT_CSS")],-1),G={href:"https://github.com/abapGit/abapGit",target:"_blank",rel:"noopener noreferrer"},S=e("p",null,[t("Please "),e("strong",null,"mind the licensing"),t(" when adding icons that are not from Font Awesome.")],-1),A={class:"hint-container info"},T=e("p",{class:"hint-container-title"},"Info",-1),k={href:"https://github.com/sbcgua/abap_w3mi_poller",target:"_blank",rel:"noopener noreferrer"};function w(C,N){const o=i("ExternalLinkIcon"),a=i("RouterLink");return s(),r("div",null,[_,h,p,e("ol",null,[e("li",null,[t("Add the icon to repo "),e("a",u,[t("abapGit Icon Font"),n(o)]),t(" as documented "),e("a",f,[t("here"),n(o)])]),m,b,I,g,e("li",null,[t("Start abapGit and commit the changes the "),e("a",G,[t("abapGit/abapGit"),n(o)]),t(" repo (preferably in a separate commit)")])]),S,e("div",A,[T,e("p",null,[t("Alternatively you can use "),e("a",k,[t("w3mipoller"),n(o)]),t(" for the upload step. See also "),n(a,{to:"/development-guide/user-interface/developing-ui-css.html"},{default:c(()=>[t("UI - CSS and assets")]),_:1}),t(".")])])])}const O=l(d,[["render",w],["__file","adding-icons.html.vue"]]);export{O as default}; diff --git a/assets/apack.html-ba2061fd.js b/assets/apack.html-00e73ce1.js similarity index 97% rename from assets/apack.html-ba2061fd.js rename to assets/apack.html-00e73ce1.js index 738e82a2a..032c1ec96 100644 --- a/assets/apack.html-ba2061fd.js +++ b/assets/apack.html-00e73ce1.js @@ -1 +1 @@ -import{_ as i}from"./plugin-vue_export-helper-c27b6911.js";import{r as s,o as r,c,a as e,b as t,d as a,e as n}from"./app-8a0ddeb8.js";const l={},d=e("p",null,[t("Packages with a class that implements "),e("code",null,"ZIF_APACK_MANIFEST"),t(" (the interface is automatically created at the initial start of abapGit) can define metadata that is interpreted by clients that support the APACK package and dependency management framework.")],-1),p={class:"hint-container info"},h=e("p",{class:"hint-container-title"},"Info",-1),u={href:"https://developers.sap.com/tutorials/abap-environment-abapgit.html",target:"_blank",rel:"noopener noreferrer"},m=e("p",null,[t("Such an APACK implementation class must reside in the top-level ABAP package which is serialized by abapGit so that it can be detected properly. After the class is instantiated, it needs to have the field "),e("code",null,"ZIF_APACK_MANIFEST~DESCRIPTOR"),t(" populated with the respective APACK metadata.")],-1),_=e("p",null,[e("strong",null,"Note:"),t(" Don't put any functionality in such implementation classes, only use them to advertise APACK metadata.")],-1),f={href:"https://maven.apache.org/pom.html#Maven_Coordinates",target:"_blank",rel:"noopener noreferrer"},A=e("li",null,[e("code",null,"group_id"),t(": Unique name for your organization or project, e.g. "),e("code",null,"github.com/abapGit")],-1),g=e("li",null,[e("code",null,"artifact_id"),t(": The name for the project, needs to be unique together with the specified "),e("code",null,"group_id"),t(", e.g. "),e("code",null,"abapGit")],-1),y=e("code",null,"version",-1),b={href:"https://semver.org/",target:"_blank",rel:"noopener noreferrer"},v=e("code",null,"1.85",-1),P=n("
  • repository_type: Currently fixed to abapGit as it's currently the only supported repository type and is set automatically during serialization
  • git_url: The URL where your main repository is located, e.g. https://github.com/abapGit/abapGit.git
  • dependencies: Optional, only needs to be filled if this project has dependencies to other projects. You only need to specify group_id, artifact_id, version, and git_url to identify the dependency. target_package is ignored during serialization. Note: Be sure to specify the git_url for each dependency properly as this is currently the only way how dependencies can automatically be resolved.
  • ",3),k=n('

    If such an implementation class is detected during the serialization process, a corresponding .apack-manifest.xml file will be created on the top level of the Git repository. This contains the APACK metadata information.

    APACK in Namespaces

    If your project is using a namespace, then using ZIF_APACK_MANIFEST will not work (since it's not part of the namespace, obviously). Simply copy ZIF_APACK_MANIFEST to /namespace/ZIF_APACK_MANIFEST and use this interface in your APACK implementation class (requires abapGit v1.126.0 or higher).

    Transporting APACK implementation classes

    The interface ZIF_APACK_MANIFEST is automatically created as a local object, i.e. in package $TMP. If you intend to transport projects containing an implementation class to follow-on systems, you either need to remove the implementation class from the transport or ensure that ZIF_APACK_MANIFEST is available on each follow-on system to avoid syntax errors. So, either let abapGit create it in all systems (don't do that on production) or change the package assignment to a package with the same transport target as your projects and transport them together.

    Examples

    See the sample code on GitHub (uses IF_APACK_MANIFEST which is exclusively available on the SAP Cloud Platform ABAP Environment. However, the descriptor format is compatible with ZIF_APACK_MANIFEST.):

    ',7),I={href:"https://github.com/SAP/abap-platform-yy",target:"_blank",rel:"noopener noreferrer"},C={href:"https://github.com/SAP/abap-platform-jak",target:"_blank",rel:"noopener noreferrer"};function S(T,w){const o=s("ExternalLinkIcon");return r(),c("div",null,[d,e("div",p,[h,e("p",null,[t("APACK including dependencies is currently only supported by abapGit for ABAP Development Tools (ADT). Please also see the "),e("a",u,[t("respective tutorial"),a(o)]),t(" for details.")])]),m,_,e("p",null,[t("The metadata follows the "),e("a",f,[t("POM format by Apache Maven"),a(o)]),t(" and specifies additional information as well:")]),e("ul",null,[A,g,e("li",null,[y,t(": The version of your project, should adhere to the "),e("a",b,[t("semantic versioning concept"),a(o)]),t(", e.g. "),v]),P]),k,e("ul",null,[e("li",null,[e("a",I,[t("YY Data Service"),a(o)])]),e("li",null,[e("a",C,[t("JSON ABAP Konverter"),a(o)]),t(" (specifies a dependency on the YY Data Service)")])])])}const N=i(l,[["render",S],["__file","apack.html.vue"]]);export{N as default}; +import{_ as i}from"./plugin-vue_export-helper-c27b6911.js";import{r as s,o as r,c,a as e,b as t,d as a,e as n}from"./app-96c84a17.js";const l={},d=e("p",null,[t("Packages with a class that implements "),e("code",null,"ZIF_APACK_MANIFEST"),t(" (the interface is automatically created at the initial start of abapGit) can define metadata that is interpreted by clients that support the APACK package and dependency management framework.")],-1),p={class:"hint-container info"},h=e("p",{class:"hint-container-title"},"Info",-1),u={href:"https://developers.sap.com/tutorials/abap-environment-abapgit.html",target:"_blank",rel:"noopener noreferrer"},m=e("p",null,[t("Such an APACK implementation class must reside in the top-level ABAP package which is serialized by abapGit so that it can be detected properly. After the class is instantiated, it needs to have the field "),e("code",null,"ZIF_APACK_MANIFEST~DESCRIPTOR"),t(" populated with the respective APACK metadata.")],-1),_=e("p",null,[e("strong",null,"Note:"),t(" Don't put any functionality in such implementation classes, only use them to advertise APACK metadata.")],-1),f={href:"https://maven.apache.org/pom.html#Maven_Coordinates",target:"_blank",rel:"noopener noreferrer"},A=e("li",null,[e("code",null,"group_id"),t(": Unique name for your organization or project, e.g. "),e("code",null,"github.com/abapGit")],-1),g=e("li",null,[e("code",null,"artifact_id"),t(": The name for the project, needs to be unique together with the specified "),e("code",null,"group_id"),t(", e.g. "),e("code",null,"abapGit")],-1),y=e("code",null,"version",-1),b={href:"https://semver.org/",target:"_blank",rel:"noopener noreferrer"},v=e("code",null,"1.85",-1),P=n("
  • repository_type: Currently fixed to abapGit as it's currently the only supported repository type and is set automatically during serialization
  • git_url: The URL where your main repository is located, e.g. https://github.com/abapGit/abapGit.git
  • dependencies: Optional, only needs to be filled if this project has dependencies to other projects. You only need to specify group_id, artifact_id, version, and git_url to identify the dependency. target_package is ignored during serialization. Note: Be sure to specify the git_url for each dependency properly as this is currently the only way how dependencies can automatically be resolved.
  • ",3),k=n('

    If such an implementation class is detected during the serialization process, a corresponding .apack-manifest.xml file will be created on the top level of the Git repository. This contains the APACK metadata information.

    APACK in Namespaces

    If your project is using a namespace, then using ZIF_APACK_MANIFEST will not work (since it's not part of the namespace, obviously). Simply copy ZIF_APACK_MANIFEST to /namespace/ZIF_APACK_MANIFEST and use this interface in your APACK implementation class (requires abapGit v1.126.0 or higher).

    Transporting APACK implementation classes

    The interface ZIF_APACK_MANIFEST is automatically created as a local object, i.e. in package $TMP. If you intend to transport projects containing an implementation class to follow-on systems, you either need to remove the implementation class from the transport or ensure that ZIF_APACK_MANIFEST is available on each follow-on system to avoid syntax errors. So, either let abapGit create it in all systems (don't do that on production) or change the package assignment to a package with the same transport target as your projects and transport them together.

    Examples

    See the sample code on GitHub (uses IF_APACK_MANIFEST which is exclusively available on the SAP Cloud Platform ABAP Environment. However, the descriptor format is compatible with ZIF_APACK_MANIFEST.):

    ',7),I={href:"https://github.com/SAP/abap-platform-yy",target:"_blank",rel:"noopener noreferrer"},C={href:"https://github.com/SAP/abap-platform-jak",target:"_blank",rel:"noopener noreferrer"};function S(T,w){const o=s("ExternalLinkIcon");return r(),c("div",null,[d,e("div",p,[h,e("p",null,[t("APACK including dependencies is currently only supported by abapGit for ABAP Development Tools (ADT). Please also see the "),e("a",u,[t("respective tutorial"),a(o)]),t(" for details.")])]),m,_,e("p",null,[t("The metadata follows the "),e("a",f,[t("POM format by Apache Maven"),a(o)]),t(" and specifies additional information as well:")]),e("ul",null,[A,g,e("li",null,[y,t(": The version of your project, should adhere to the "),e("a",b,[t("semantic versioning concept"),a(o)]),t(", e.g. "),v]),P]),k,e("ul",null,[e("li",null,[e("a",I,[t("YY Data Service"),a(o)])]),e("li",null,[e("a",C,[t("JSON ABAP Konverter"),a(o)]),t(" (specifies a dependency on the YY Data Service)")])])])}const N=i(l,[["render",S],["__file","apack.html.vue"]]);export{N as default}; diff --git a/assets/api.html-0592a7a6.js b/assets/api.html-812b99b8.js similarity index 99% rename from assets/api.html-0592a7a6.js rename to assets/api.html-812b99b8.js index 67d2d65fc..1da2c8786 100644 --- a/assets/api.html-0592a7a6.js +++ b/assets/api.html-812b99b8.js @@ -1,4 +1,4 @@ -import{_ as o}from"./plugin-vue_export-helper-c27b6911.js";import{r as p,o as i,c,a,b as n,d as t,e as s}from"./app-8a0ddeb8.js";const l={},r=s(`

    This page describes how to execute various abapGit tasks using your code.

    Note

    These classes and methods have existed for quite some time and are stable.
    However, they do not provide a guaranteed API. Future changes are a possibility.

    Repositories

    Create Online

    Create a new abapGit repository for a given online project and branch and associate it with an SAP package:

    DATA(lo_repo) = zcl_abapgit_repo_srv=>get_instance( )->new_online(
    +import{_ as o}from"./plugin-vue_export-helper-c27b6911.js";import{r as p,o as i,c,a,b as n,d as t,e as s}from"./app-96c84a17.js";const l={},r=s(`

    This page describes how to execute various abapGit tasks using your code.

    Note

    These classes and methods have existed for quite some time and are stable.
    However, they do not provide a guaranteed API. Future changes are a possibility.

    Repositories

    Create Online

    Create a new abapGit repository for a given online project and branch and associate it with an SAP package:

    DATA(lo_repo) = zcl_abapgit_repo_srv=>get_instance( )->new_online(
       iv_url         = lv_url
       iv_branch_name = lv_branch_name " optional
       iv_package     = lv_package ).
    diff --git a/assets/app-8a0ddeb8.js b/assets/app-96c84a17.js
    similarity index 96%
    rename from assets/app-8a0ddeb8.js
    rename to assets/app-96c84a17.js
    index a4832dd5d..4c38e9c6e 100644
    --- a/assets/app-8a0ddeb8.js
    +++ b/assets/app-96c84a17.js
    @@ -1,4 +1,4 @@
    -const Ou="modulepreload",Au=function(e){return"/"+e},ra={},b=function(t,n,r){if(!n||n.length===0)return t();const o=document.getElementsByTagName("link");return Promise.all(n.map(l=>{if(l=Au(l),l in ra)return;ra[l]=!0;const a=l.endsWith(".css"),s=a?'[rel="stylesheet"]':"";if(!!r)for(let i=o.length-1;i>=0;i--){const f=o[i];if(f.href===l&&(!a||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${s}`))return;const u=document.createElement("link");if(u.rel=a?"stylesheet":Ou,a||(u.as="script",u.crossOrigin=""),u.href=l,document.head.appendChild(u),a)return new Promise((i,f)=>{u.addEventListener("load",i),u.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${l}`)))})})).then(()=>t()).catch(l=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=l,window.dispatchEvent(a),!a.defaultPrevented)throw l})};function ll(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const Te={},En=[],ut=()=>{},Pu=()=>!1,Cu=/^on[^a-z]/,ir=e=>Cu.test(e),al=e=>e.startsWith("onUpdate:"),Ce=Object.assign,sl=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ku=Object.prototype.hasOwnProperty,ue=(e,t)=>ku.call(e,t),J=Array.isArray,Un=e=>Kr(e)==="[object Map]",xu=e=>Kr(e)==="[object Set]",ne=e=>typeof e=="function",pe=e=>typeof e=="string",il=e=>typeof e=="symbol",Le=e=>e!==null&&typeof e=="object",xs=e=>Le(e)&&ne(e.then)&&ne(e.catch),Iu=Object.prototype.toString,Kr=e=>Iu.call(e),Ru=e=>Kr(e).slice(8,-1),Su=e=>Kr(e)==="[object Object]",cl=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Kn=ll(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),qr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Du=/-(\w)/g,tt=qr(e=>e.replace(Du,(t,n)=>n?n.toUpperCase():"")),$u=/\B([A-Z])/g,$n=qr(e=>e.replace($u,"-$1").toLowerCase()),cr=qr(e=>e.charAt(0).toUpperCase()+e.slice(1)),io=qr(e=>e?`on${cr(e)}`:""),er=(e,t)=>!Object.is(e,t),co=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Mu=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Vu=e=>{const t=pe(e)?Number(e):NaN;return isNaN(t)?e:t};let oa;const Do=()=>oa||(oa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ul(e){if(J(e)){const t={};for(let n=0;n{if(n){const r=n.split(ju);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function dl(e){let t="";if(pe(e))t=e;else if(J(e))for(let n=0;n{const t=new Set(e);return t.w=0,t.n=0,t},Ss=e=>(e.w&Bt)>0,Ds=e=>(e.n&Bt)>0,qu=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(i==="length"||i>=c)&&s.push(u)})}else switch(n!==void 0&&s.push(a.get(n)),t){case"add":J(e)?cl(n)&&s.push(a.get("length")):(s.push(a.get(en)),Un(e)&&s.push(a.get(Mo)));break;case"delete":J(e)||(s.push(a.get(en)),Un(e)&&s.push(a.get(Mo)));break;case"set":Un(e)&&s.push(a.get(en));break}if(s.length===1)s[0]&&Vo(s[0]);else{const c=[];for(const u of s)u&&c.push(...u);Vo(fl(c))}}function Vo(e,t){const n=J(e)?e:[...e];for(const r of n)r.computed&&aa(r);for(const r of n)r.computed||aa(r)}function aa(e,t){(e!==it||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Zu(e,t){var n;return(n=$r.get(e))==null?void 0:n.get(t)}const Yu=ll("__proto__,__v_isRef,__isVue"),Vs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(il)),Xu=vl(),Ju=vl(!1,!0),Qu=vl(!0),sa=ed();function ed(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=se(this);for(let l=0,a=this.length;l{e[t]=function(...n){Mn();const r=se(this)[t].apply(this,n);return Vn(),r}}),e}function td(e){const t=se(this);return ze(t,"has",e),t.hasOwnProperty(e)}function vl(e=!1,t=!1){return function(r,o,l){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&l===(e?t?gd:Bs:t?Hs:Fs).get(r))return r;const a=J(r);if(!e){if(a&&ue(sa,o))return Reflect.get(sa,o,l);if(o==="hasOwnProperty")return td}const s=Reflect.get(r,o,l);return(il(o)?Vs.has(o):Yu(o))||(e||ze(r,"get",o),t)?s:Se(s)?a&&cl(o)?s:s.value:Le(s)?e?ln(s):ur(s):s}}const nd=Ns(),rd=Ns(!0);function Ns(e=!1){return function(n,r,o,l){let a=n[r];if(Cn(a)&&Se(a)&&!Se(o))return!1;if(!e&&(!Mr(o)&&!Cn(o)&&(a=se(a),o=se(o)),!J(n)&&Se(a)&&!Se(o)))return a.value=o,!0;const s=J(n)&&cl(r)?Number(r)e,Gr=e=>Reflect.getPrototypeOf(e);function br(e,t,n=!1,r=!1){e=e.__v_raw;const o=se(e),l=se(t);n||(t!==l&&ze(o,"get",t),ze(o,"get",l));const{has:a}=Gr(o),s=r?hl:n?_l:tr;if(a.call(o,t))return s(e.get(t));if(a.call(o,l))return s(e.get(l));e!==o&&e.get(t)}function yr(e,t=!1){const n=this.__v_raw,r=se(n),o=se(e);return t||(e!==o&&ze(r,"has",e),ze(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Er(e,t=!1){return e=e.__v_raw,!t&&ze(se(e),"iterate",en),Reflect.get(e,"size",e)}function ia(e){e=se(e);const t=se(this);return Gr(t).has.call(t,e)||(t.add(e),Pt(t,"add",e,e)),this}function ca(e,t){t=se(t);const n=se(this),{has:r,get:o}=Gr(n);let l=r.call(n,e);l||(e=se(e),l=r.call(n,e));const a=o.call(n,e);return n.set(e,t),l?er(t,a)&&Pt(n,"set",e,t):Pt(n,"add",e,t),this}function ua(e){const t=se(this),{has:n,get:r}=Gr(t);let o=n.call(t,e);o||(e=se(e),o=n.call(t,e)),r&&r.call(t,e);const l=t.delete(e);return o&&Pt(t,"delete",e,void 0),l}function da(){const e=se(this),t=e.size!==0,n=e.clear();return t&&Pt(e,"clear",void 0,void 0),n}function wr(e,t){return function(r,o){const l=this,a=l.__v_raw,s=se(a),c=t?hl:e?_l:tr;return!e&&ze(s,"iterate",en),a.forEach((u,i)=>r.call(o,c(u),c(i),l))}}function Tr(e,t,n){return function(...r){const o=this.__v_raw,l=se(o),a=Un(l),s=e==="entries"||e===Symbol.iterator&&a,c=e==="keys"&&a,u=o[e](...r),i=n?hl:t?_l:tr;return!t&&ze(l,"iterate",c?Mo:en),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:s?[i(f[0]),i(f[1])]:i(f),done:p}},[Symbol.iterator](){return this}}}}function Rt(e){return function(...t){return e==="delete"?!1:this}}function cd(){const e={get(l){return br(this,l)},get size(){return Er(this)},has:yr,add:ia,set:ca,delete:ua,clear:da,forEach:wr(!1,!1)},t={get(l){return br(this,l,!1,!0)},get size(){return Er(this)},has:yr,add:ia,set:ca,delete:ua,clear:da,forEach:wr(!1,!0)},n={get(l){return br(this,l,!0)},get size(){return Er(this,!0)},has(l){return yr.call(this,l,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:wr(!0,!1)},r={get(l){return br(this,l,!0,!0)},get size(){return Er(this,!0)},has(l){return yr.call(this,l,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:wr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=Tr(l,!1,!1),n[l]=Tr(l,!0,!1),t[l]=Tr(l,!1,!0),r[l]=Tr(l,!0,!0)}),[e,n,t,r]}const[ud,dd,fd,pd]=cd();function ml(e,t){const n=t?e?pd:fd:e?dd:ud;return(r,o,l)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(ue(n,o)&&o in r?n:r,o,l)}const vd={get:ml(!1,!1)},hd={get:ml(!1,!0)},md={get:ml(!0,!1)},Fs=new WeakMap,Hs=new WeakMap,Bs=new WeakMap,gd=new WeakMap;function _d(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function bd(e){return e.__v_skip||!Object.isExtensible(e)?0:_d(Ru(e))}function ur(e){return Cn(e)?e:gl(e,!1,js,vd,Fs)}function zs(e){return gl(e,!1,id,hd,Hs)}function ln(e){return gl(e,!0,sd,md,Bs)}function gl(e,t,n,r,o){if(!Le(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const l=o.get(e);if(l)return l;const a=bd(e);if(a===0)return e;const s=new Proxy(e,a===2?r:n);return o.set(e,s),s}function wn(e){return Cn(e)?wn(e.__v_raw):!!(e&&e.__v_isReactive)}function Cn(e){return!!(e&&e.__v_isReadonly)}function Mr(e){return!!(e&&e.__v_isShallow)}function Ws(e){return wn(e)||Cn(e)}function se(e){const t=e&&e.__v_raw;return t?se(t):e}function Us(e){return Dr(e,"__v_skip",!0),e}const tr=e=>Le(e)?ur(e):e,_l=e=>Le(e)?ln(e):e;function bl(e){Ft&&it&&(e=se(e),Ms(e.dep||(e.dep=fl())))}function yl(e,t){e=se(e);const n=e.dep;n&&Vo(n)}function Se(e){return!!(e&&e.__v_isRef===!0)}function K(e){return Ks(e,!1)}function Oe(e){return Ks(e,!0)}function Ks(e,t){return Se(e)?e:new yd(e,t)}class yd{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:se(t),this._value=n?t:tr(t)}get value(){return bl(this),this._value}set value(t){const n=this.__v_isShallow||Mr(t)||Cn(t);t=n?t:se(t),er(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:tr(t),yl(this))}}function tn(e){return Se(e)?e.value:e}const Ed={get:(e,t,n)=>tn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Se(o)&&!Se(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function qs(e){return wn(e)?e:new Proxy(e,Ed)}class wd{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>bl(this),()=>yl(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Td(e){return new wd(e)}class Ld{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Zu(se(this._object),this._key)}}class Od{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Zr(e,t,n){return Se(e)?e:ne(e)?new Od(e):Le(e)&&arguments.length>1?Ad(e,t,n):K(e)}function Ad(e,t,n){const r=e[t];return Se(r)?r:new Ld(e,t,n)}class Pd{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new pl(t,()=>{this._dirty||(this._dirty=!0,yl(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=se(this);return bl(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Cd(e,t,n=!1){let r,o;const l=ne(e);return l?(r=e,o=ut):(r=e.get,o=e.set),new Pd(r,o,l||!o,n)}function Ht(e,t,n,r){let o;try{o=r?e(...r):e()}catch(l){dr(l,t,n)}return o}function et(e,t,n,r){if(ne(e)){const l=Ht(e,t,n,r);return l&&xs(l)&&l.catch(a=>{dr(a,t,n)}),l}const o=[];for(let l=0;l>>1;rr($e[r])gt&&$e.splice(t,1)}function Rd(e){J(e)?Tn.push(...e):(!Ot||!Ot.includes(e,e.allowRecurse?Xt+1:Xt))&&Tn.push(e),Zs()}function fa(e,t=nr?gt+1:0){for(;t<$e.length;t++){const n=$e[t];n&&n.pre&&($e.splice(t,1),t--,n())}}function Vr(e){if(Tn.length){const t=[...new Set(Tn)];if(Tn.length=0,Ot){Ot.push(...t);return}for(Ot=t,Ot.sort((n,r)=>rr(n)-rr(r)),Xt=0;Xte.id==null?1/0:e.id,Sd=(e,t)=>{const n=rr(e)-rr(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ys(e){No=!1,nr=!0,$e.sort(Sd);const t=ut;try{for(gt=0;gt<$e.length;gt++){const n=$e[gt];n&&n.active!==!1&&Ht(n,null,14)}}finally{gt=0,$e.length=0,Vr(),nr=!1,El=null,($e.length||Tn.length)&&Ys()}}function Dd(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Te;let o=n;const l=t.startsWith("update:"),a=l&&t.slice(7);if(a&&a in r){const i=`${a==="modelValue"?"model":a}Modifiers`,{number:f,trim:p}=r[i]||Te;p&&(o=n.map(v=>pe(v)?v.trim():v)),f&&(o=n.map(Mu))}let s,c=r[s=io(t)]||r[s=io(tt(t))];!c&&l&&(c=r[s=io($n(t))]),c&&et(c,e,6,o);const u=r[s+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,et(u,e,6,o)}}function Xs(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const l=e.emits;let a={},s=!1;if(!ne(e)){const c=u=>{const i=Xs(u,t,!0);i&&(s=!0,Ce(a,i))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!l&&!s?(Le(e)&&r.set(e,null),null):(J(l)?l.forEach(c=>a[c]=null):Ce(a,l),Le(e)&&r.set(e,a),a)}function Xr(e,t){return!e||!ir(t)?!1:(t=t.slice(2).replace(/Once$/,""),ue(e,t[0].toLowerCase()+t.slice(1))||ue(e,$n(t))||ue(e,t))}let Qe=null,Js=null;function Nr(e){const t=Qe;return Qe=e,Js=e&&e.type.__scopeId||null,t}function $d(e,t=Qe,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&La(-1);const l=Nr(t);let a;try{a=e(...o)}finally{Nr(l),r._d&&La(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function uo(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:l,propsOptions:[a],slots:s,attrs:c,emit:u,render:i,renderCache:f,data:p,setupState:v,ctx:_,inheritAttrs:w}=e;let T,g;const y=Nr(e);try{if(n.shapeFlag&4){const R=o||r;T=st(i.call(R,R,f,l,v,p,_)),g=c}else{const R=t;T=st(R.length>1?R(l,{attrs:c,slots:s,emit:u}):R(l,null)),g=t.props?c:Md(c)}}catch(R){Yn.length=0,dr(R,e,1),T=De(_t)}let D=T;if(g&&w!==!1){const R=Object.keys(g),{shapeFlag:U}=D;R.length&&U&7&&(a&&R.some(al)&&(g=Vd(g,a)),D=zt(D,g))}return n.dirs&&(D=zt(D),D.dirs=D.dirs?D.dirs.concat(n.dirs):n.dirs),n.transition&&(D.transition=n.transition),T=D,Nr(y),T}const Md=e=>{let t;for(const n in e)(n==="class"||n==="style"||ir(n))&&((t||(t={}))[n]=e[n]);return t},Vd=(e,t)=>{const n={};for(const r in e)(!al(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Nd(e,t,n){const{props:r,children:o,component:l}=e,{props:a,children:s,patchFlag:c}=t,u=l.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?pa(r,a,u):!!a;if(c&8){const i=t.dynamicProps;for(let f=0;fe.__isSuspense;function Qs(e,t){t&&t.pendingBranch?J(e)?t.effects.push(...e):t.effects.push(e):Rd(e)}function ei(e,t){return wl(e,null,t)}const Lr={};function ae(e,t,n){return wl(e,t,n)}function wl(e,t,{immediate:n,deep:r,flush:o,onTrack:l,onTrigger:a}=Te){var s;const c=Rs()===((s=Re)==null?void 0:s.scope)?Re:null;let u,i=!1,f=!1;if(Se(e)?(u=()=>e.value,i=Mr(e)):wn(e)?(u=()=>e,r=!0):J(e)?(f=!0,i=e.some(R=>wn(R)||Mr(R)),u=()=>e.map(R=>{if(Se(R))return R.value;if(wn(R))return gn(R);if(ne(R))return Ht(R,c,2)})):ne(e)?t?u=()=>Ht(e,c,2):u=()=>{if(!(c&&c.isUnmounted))return p&&p(),et(e,c,3,[v])}:u=ut,t&&r){const R=u;u=()=>gn(R())}let p,v=R=>{p=y.onStop=()=>{Ht(R,c,4)}},_;if(In)if(v=ut,t?n&&et(t,c,3,[u(),f?[]:void 0,v]):u(),o==="sync"){const R=$f();_=R.__watcherHandles||(R.__watcherHandles=[])}else return ut;let w=f?new Array(e.length).fill(Lr):Lr;const T=()=>{if(y.active)if(t){const R=y.run();(r||i||(f?R.some((U,x)=>er(U,w[x])):er(R,w)))&&(p&&p(),et(t,c,3,[R,w===Lr?void 0:f&&w[0]===Lr?[]:w,v]),w=R)}else y.run()};T.allowRecurse=!!t;let g;o==="sync"?g=T:o==="post"?g=()=>Fe(T,c&&c.suspense):(T.pre=!0,c&&(T.id=c.uid),g=()=>Yr(T));const y=new pl(u,g);t?n?T():w=y.run():o==="post"?Fe(y.run.bind(y),c&&c.suspense):y.run();const D=()=>{y.stop(),c&&c.scope&&sl(c.scope.effects,y)};return _&&_.push(D),D}function Hd(e,t,n){const r=this.proxy,o=pe(e)?e.includes(".")?ti(r,e):()=>r[e]:e.bind(r,r);let l;ne(t)?l=t:(l=t.handler,n=t);const a=Re;xn(this);const s=wl(o,l.bind(r),n);return a?xn(a):rn(),s}function ti(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{gn(n,t)});else if(Su(e))for(const n in e)gn(e[n],t);return e}function mt(e,t,n,r){const o=e.dirs,l=t&&t.dirs;for(let a=0;a{e.isMounted=!0}),Ll(()=>{e.isUnmounting=!0}),e}const Ye=[Function,Array],ri={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ye,onEnter:Ye,onAfterEnter:Ye,onEnterCancelled:Ye,onBeforeLeave:Ye,onLeave:Ye,onAfterLeave:Ye,onLeaveCancelled:Ye,onBeforeAppear:Ye,onAppear:Ye,onAfterAppear:Ye,onAppearCancelled:Ye},Bd={name:"BaseTransition",props:ri,setup(e,{slots:t}){const n=sn(),r=ni();let o;return()=>{const l=t.default&&Tl(t.default(),!0);if(!l||!l.length)return;let a=l[0];if(l.length>1){for(const w of l)if(w.type!==_t){a=w;break}}const s=se(e),{mode:c}=s;if(r.isLeaving)return fo(a);const u=va(a);if(!u)return fo(a);const i=or(u,s,r,n);lr(u,i);const f=n.subTree,p=f&&va(f);let v=!1;const{getTransitionKey:_}=u.type;if(_){const w=_();o===void 0?o=w:w!==o&&(o=w,v=!0)}if(p&&p.type!==_t&&(!Jt(u,p)||v)){const w=or(p,s,r,n);if(lr(p,w),c==="out-in")return r.isLeaving=!0,w.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},fo(a);c==="in-out"&&u.type!==_t&&(w.delayLeave=(T,g,y)=>{const D=oi(r,p);D[String(p.key)]=p,T._leaveCb=()=>{g(),T._leaveCb=void 0,delete i.delayedLeave},i.delayedLeave=y})}return a}}},zd=Bd;function oi(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function or(e,t,n,r){const{appear:o,mode:l,persisted:a=!1,onBeforeEnter:s,onEnter:c,onAfterEnter:u,onEnterCancelled:i,onBeforeLeave:f,onLeave:p,onAfterLeave:v,onLeaveCancelled:_,onBeforeAppear:w,onAppear:T,onAfterAppear:g,onAppearCancelled:y}=t,D=String(e.key),R=oi(n,e),U=(O,B)=>{O&&et(O,r,9,B)},x=(O,B)=>{const z=B[1];U(O,B),J(O)?O.every(re=>re.length<=1)&&z():O.length<=1&&z()},M={mode:l,persisted:a,beforeEnter(O){let B=s;if(!n.isMounted)if(o)B=w||s;else return;O._leaveCb&&O._leaveCb(!0);const z=R[D];z&&Jt(e,z)&&z.el._leaveCb&&z.el._leaveCb(),U(B,[O])},enter(O){let B=c,z=u,re=i;if(!n.isMounted)if(o)B=T||c,z=g||u,re=y||i;else return;let W=!1;const Q=O._enterCb=q=>{W||(W=!0,q?U(re,[O]):U(z,[O]),M.delayedLeave&&M.delayedLeave(),O._enterCb=void 0)};B?x(B,[O,Q]):Q()},leave(O,B){const z=String(e.key);if(O._enterCb&&O._enterCb(!0),n.isUnmounting)return B();U(f,[O]);let re=!1;const W=O._leaveCb=Q=>{re||(re=!0,B(),Q?U(_,[O]):U(v,[O]),O._leaveCb=void 0,R[z]===e&&delete R[z])};R[z]=e,p?x(p,[O,W]):W()},clone(O){return or(O,t,n,r)}};return M}function fo(e){if(fr(e))return e=zt(e),e.children=null,e}function va(e){return fr(e)?e.children?e.children[0]:void 0:e}function lr(e,t){e.shapeFlag&6&&e.component?lr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Tl(e,t=!1,n){let r=[],o=0;for(let l=0;l1)for(let l=0;lCe({name:e.name},t,{setup:e}))():e}const qn=e=>!!e.type.__asyncLoader;function S(e){ne(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:l,suspensible:a=!0,onError:s}=e;let c=null,u,i=0;const f=()=>(i++,c=null,p()),p=()=>{let v;return c||(v=c=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),s)return new Promise((w,T)=>{s(_,()=>w(f()),()=>T(_),i+1)});throw _}).then(_=>v!==c&&c?c:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),u=_,_)))};return H({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return u},setup(){const v=Re;if(u)return()=>po(u,v);const _=y=>{c=null,dr(y,v,13,!r)};if(a&&v.suspense||In)return p().then(y=>()=>po(y,v)).catch(y=>(_(y),()=>r?De(r,{error:y}):null));const w=K(!1),T=K(),g=K(!!o);return o&&setTimeout(()=>{g.value=!1},o),l!=null&&setTimeout(()=>{if(!w.value&&!T.value){const y=new Error(`Async component timed out after ${l}ms.`);_(y),T.value=y}},l),p().then(()=>{w.value=!0,v.parent&&fr(v.parent.vnode)&&Yr(v.parent.update)}).catch(y=>{_(y),T.value=y}),()=>{if(w.value&&u)return po(u,v);if(T.value&&r)return De(r,{error:T.value});if(n&&!g.value)return De(n)}}})}function po(e,t){const{ref:n,props:r,children:o,ce:l}=t.vnode,a=De(e,r,o);return a.ref=n,a.ce=l,delete t.vnode.ce,a}const fr=e=>e.type.__isKeepAlive;function Wd(e,t){li(e,"a",t)}function Ud(e,t){li(e,"da",t)}function li(e,t,n=Re){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Jr(t,r,n),n){let o=n.parent;for(;o&&o.parent;)fr(o.parent.vnode)&&Kd(r,t,n,o),o=o.parent}}function Kd(e,t,n,r){const o=Jr(t,e,r,!0);kt(()=>{sl(r[t],o)},n)}function Jr(e,t,n=Re,r=!1){if(n){const o=n[e]||(n[e]=[]),l=t.__weh||(t.__weh=(...a)=>{if(n.isUnmounted)return;Mn(),xn(n);const s=et(t,n,e,a);return rn(),Vn(),s});return r?o.unshift(l):o.push(l),l}}const Ct=e=>(t,n=Re)=>(!In||e==="sp")&&Jr(e,(...r)=>t(...r),n),qd=Ct("bm"),de=Ct("m"),Gd=Ct("bu"),ai=Ct("u"),Ll=Ct("bum"),kt=Ct("um"),Zd=Ct("sp"),Yd=Ct("rtg"),Xd=Ct("rtc");function Jd(e,t=Re){Jr("ec",e,t)}const si="components";function dt(e,t){return ef(si,e,!0,t)||e}const Qd=Symbol.for("v-ndc");function ef(e,t,n=!0,r=!1){const o=Qe||Re;if(o){const l=o.type;if(e===si){const s=Rf(l,!1);if(s&&(s===t||s===tt(t)||s===cr(tt(t))))return l}const a=ha(o[e]||l[e],t)||ha(o.appContext[e],t);return!a&&r?l:a}}function ha(e,t){return e&&(e[t]||e[tt(t)]||e[cr(tt(t))])}const jo=e=>e?bi(e)?kl(e)||e.proxy:jo(e.parent):null,Gn=Ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>jo(e.parent),$root:e=>jo(e.root),$emit:e=>e.emit,$options:e=>Ol(e),$forceUpdate:e=>e.f||(e.f=()=>Yr(e.update)),$nextTick:e=>e.n||(e.n=an.bind(e.proxy)),$watch:e=>Hd.bind(e)}),vo=(e,t)=>e!==Te&&!e.__isScriptSetup&&ue(e,t),tf={get({_:e},t){const{ctx:n,setupState:r,data:o,props:l,accessCache:a,type:s,appContext:c}=e;let u;if(t[0]!=="$"){const v=a[t];if(v!==void 0)switch(v){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return l[t]}else{if(vo(r,t))return a[t]=1,r[t];if(o!==Te&&ue(o,t))return a[t]=2,o[t];if((u=e.propsOptions[0])&&ue(u,t))return a[t]=3,l[t];if(n!==Te&&ue(n,t))return a[t]=4,n[t];Fo&&(a[t]=0)}}const i=Gn[t];let f,p;if(i)return t==="$attrs"&&ze(e,"get",t),i(e);if((f=s.__cssModules)&&(f=f[t]))return f;if(n!==Te&&ue(n,t))return a[t]=4,n[t];if(p=c.config.globalProperties,ue(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:l}=e;return vo(o,t)?(o[t]=n,!0):r!==Te&&ue(r,t)?(r[t]=n,!0):ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(l[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:l}},a){let s;return!!n[a]||e!==Te&&ue(e,a)||vo(t,a)||(s=l[0])&&ue(s,a)||ue(r,a)||ue(Gn,a)||ue(o.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ue(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ma(e){return J(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Fo=!0;function nf(e){const t=Ol(e),n=e.proxy,r=e.ctx;Fo=!1,t.beforeCreate&&ga(t.beforeCreate,e,"bc");const{data:o,computed:l,methods:a,watch:s,provide:c,inject:u,created:i,beforeMount:f,mounted:p,beforeUpdate:v,updated:_,activated:w,deactivated:T,beforeDestroy:g,beforeUnmount:y,destroyed:D,unmounted:R,render:U,renderTracked:x,renderTriggered:M,errorCaptured:O,serverPrefetch:B,expose:z,inheritAttrs:re,components:W,directives:Q,filters:q}=t;if(u&&rf(u,r,null),a)for(const fe in a){const te=a[fe];ne(te)&&(r[fe]=te.bind(n))}if(o){const fe=o.call(n,n);Le(fe)&&(e.data=ur(fe))}if(Fo=!0,l)for(const fe in l){const te=l[fe],ot=ne(te)?te.bind(n,n):ne(te.get)?te.get.bind(n,n):ut,vt=!ne(te)&&ne(te.set)?te.set.bind(n):ut,je=A({get:ot,set:vt});Object.defineProperty(r,fe,{enumerable:!0,configurable:!0,get:()=>je.value,set:Ae=>je.value=Ae})}if(s)for(const fe in s)ii(s[fe],r,n,fe);if(c){const fe=ne(c)?c.call(n):c;Reflect.ownKeys(fe).forEach(te=>{nn(te,fe[te])})}i&&ga(i,e,"c");function oe(fe,te){J(te)?te.forEach(ot=>fe(ot.bind(n))):te&&fe(te.bind(n))}if(oe(qd,f),oe(de,p),oe(Gd,v),oe(ai,_),oe(Wd,w),oe(Ud,T),oe(Jd,O),oe(Xd,x),oe(Yd,M),oe(Ll,y),oe(kt,R),oe(Zd,B),J(z))if(z.length){const fe=e.exposed||(e.exposed={});z.forEach(te=>{Object.defineProperty(fe,te,{get:()=>n[te],set:ot=>n[te]=ot})})}else e.exposed||(e.exposed={});U&&e.render===ut&&(e.render=U),re!=null&&(e.inheritAttrs=re),W&&(e.components=W),Q&&(e.directives=Q)}function rf(e,t,n=ut){J(e)&&(e=Ho(e));for(const r in e){const o=e[r];let l;Le(o)?"default"in o?l=ye(o.from||r,o.default,!0):l=ye(o.from||r):l=ye(o),Se(l)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>l.value,set:a=>l.value=a}):t[r]=l}}function ga(e,t,n){et(J(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function ii(e,t,n,r){const o=r.includes(".")?ti(n,r):()=>n[r];if(pe(e)){const l=t[e];ne(l)&&ae(o,l)}else if(ne(e))ae(o,e.bind(n));else if(Le(e))if(J(e))e.forEach(l=>ii(l,t,n,r));else{const l=ne(e.handler)?e.handler.bind(n):t[e.handler];ne(l)&&ae(o,l,e)}}function Ol(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:l,config:{optionMergeStrategies:a}}=e.appContext,s=l.get(t);let c;return s?c=s:!o.length&&!n&&!r?c=t:(c={},o.length&&o.forEach(u=>jr(c,u,a,!0)),jr(c,t,a)),Le(t)&&l.set(t,c),c}function jr(e,t,n,r=!1){const{mixins:o,extends:l}=t;l&&jr(e,l,n,!0),o&&o.forEach(a=>jr(e,a,n,!0));for(const a in t)if(!(r&&a==="expose")){const s=of[a]||n&&n[a];e[a]=s?s(e[a],t[a]):t[a]}return e}const of={data:_a,props:ba,emits:ba,methods:Wn,computed:Wn,beforeCreate:Me,created:Me,beforeMount:Me,mounted:Me,beforeUpdate:Me,updated:Me,beforeDestroy:Me,beforeUnmount:Me,destroyed:Me,unmounted:Me,activated:Me,deactivated:Me,errorCaptured:Me,serverPrefetch:Me,components:Wn,directives:Wn,watch:af,provide:_a,inject:lf};function _a(e,t){return t?e?function(){return Ce(ne(e)?e.call(this,this):e,ne(t)?t.call(this,this):t)}:t:e}function lf(e,t){return Wn(Ho(e),Ho(t))}function Ho(e){if(J(e)){const t={};for(let n=0;n1)return n&&ne(t)?t.call(r&&r.proxy):t}}function uf(e,t,n,r=!1){const o={},l={};Dr(l,Qr,1),e.propsDefaults=Object.create(null),ui(e,t,o,l);for(const a in e.propsOptions[0])a in o||(o[a]=void 0);n?e.props=r?o:zs(o):e.type.props?e.props=o:e.props=l,e.attrs=l}function df(e,t,n,r){const{props:o,attrs:l,vnode:{patchFlag:a}}=e,s=se(o),[c]=e.propsOptions;let u=!1;if((r||a>0)&&!(a&16)){if(a&8){const i=e.vnode.dynamicProps;for(let f=0;f{c=!0;const[p,v]=di(f,t,!0);Ce(a,p),v&&s.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}if(!l&&!c)return Le(e)&&r.set(e,En),En;if(J(l))for(let i=0;i-1,v[1]=w<0||_-1||ue(v,"default"))&&s.push(f)}}}const u=[a,s];return Le(e)&&r.set(e,u),u}function ya(e){return e[0]!=="$"}function Ea(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function wa(e,t){return Ea(e)===Ea(t)}function Ta(e,t){return J(t)?t.findIndex(n=>wa(n,e)):ne(t)&&wa(t,e)?0:-1}const fi=e=>e[0]==="_"||e==="$stable",Al=e=>J(e)?e.map(st):[st(e)],ff=(e,t,n)=>{if(t._n)return t;const r=$d((...o)=>Al(t(...o)),n);return r._c=!1,r},pi=(e,t,n)=>{const r=e._ctx;for(const o in e){if(fi(o))continue;const l=e[o];if(ne(l))t[o]=ff(o,l,r);else if(l!=null){const a=Al(l);t[o]=()=>a}}},vi=(e,t)=>{const n=Al(t);e.slots.default=()=>n},pf=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=se(t),Dr(t,"_",n)):pi(t,e.slots={})}else e.slots={},t&&vi(e,t);Dr(e.slots,Qr,1)},vf=(e,t,n)=>{const{vnode:r,slots:o}=e;let l=!0,a=Te;if(r.shapeFlag&32){const s=t._;s?n&&s===1?l=!1:(Ce(o,t),!n&&s===1&&delete o._):(l=!t.$stable,pi(t,o)),a=t}else t&&(vi(e,t),a={default:1});if(l)for(const s in o)!fi(s)&&!(s in a)&&delete o[s]};function Hr(e,t,n,r,o=!1){if(J(e)){e.forEach((p,v)=>Hr(p,t&&(J(t)?t[v]:t),n,r,o));return}if(qn(r)&&!o)return;const l=r.shapeFlag&4?kl(r.component)||r.component.proxy:r.el,a=o?null:l,{i:s,r:c}=e,u=t&&t.r,i=s.refs===Te?s.refs={}:s.refs,f=s.setupState;if(u!=null&&u!==c&&(pe(u)?(i[u]=null,ue(f,u)&&(f[u]=null)):Se(u)&&(u.value=null)),ne(c))Ht(c,s,12,[a,i]);else{const p=pe(c),v=Se(c);if(p||v){const _=()=>{if(e.f){const w=p?ue(f,c)?f[c]:i[c]:c.value;o?J(w)&&sl(w,l):J(w)?w.includes(l)||w.push(l):p?(i[c]=[l],ue(f,c)&&(f[c]=i[c])):(c.value=[l],e.k&&(i[e.k]=c.value))}else p?(i[c]=a,ue(f,c)&&(f[c]=a)):v&&(c.value=a,e.k&&(i[e.k]=a))};a?(_.id=-1,Fe(_,n)):_()}}}let St=!1;const Or=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Ar=e=>e.nodeType===8;function hf(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:l,parentNode:a,remove:s,insert:c,createComment:u}}=e,i=(g,y)=>{if(!y.hasChildNodes()){n(null,g,y),Vr(),y._vnode=g;return}St=!1,f(y.firstChild,g,null,null,null),Vr(),y._vnode=g,St&&console.error("Hydration completed but contains mismatches.")},f=(g,y,D,R,U,x=!1)=>{const M=Ar(g)&&g.data==="[",O=()=>w(g,y,D,R,U,M),{type:B,ref:z,shapeFlag:re,patchFlag:W}=y;let Q=g.nodeType;y.el=g,W===-2&&(x=!1,y.dynamicChildren=null);let q=null;switch(B){case kn:Q!==3?y.children===""?(c(y.el=o(""),a(g),g),q=g):q=O():(g.data!==y.children&&(St=!0,g.data=y.children),q=l(g));break;case _t:Q!==8||M?q=O():q=l(g);break;case Zn:if(M&&(g=l(g),Q=g.nodeType),Q===1||Q===3){q=g;const we=!y.children.length;for(let oe=0;oe{x=x||!!y.dynamicChildren;const{type:M,props:O,patchFlag:B,shapeFlag:z,dirs:re}=y,W=M==="input"&&re||M==="option";if(W||B!==-1){if(re&&mt(y,null,D,"created"),O)if(W||!x||B&48)for(const q in O)(W&&q.endsWith("value")||ir(q)&&!Kn(q))&&r(g,q,null,O[q],!1,void 0,D);else O.onClick&&r(g,"onClick",null,O.onClick,!1,void 0,D);let Q;if((Q=O&&O.onVnodeBeforeMount)&&Xe(Q,D,y),re&&mt(y,null,D,"beforeMount"),((Q=O&&O.onVnodeMounted)||re)&&Qs(()=>{Q&&Xe(Q,D,y),re&&mt(y,null,D,"mounted")},R),z&16&&!(O&&(O.innerHTML||O.textContent))){let q=v(g.firstChild,y,g,D,R,U,x);for(;q;){St=!0;const we=q;q=q.nextSibling,s(we)}}else z&8&&g.textContent!==y.children&&(St=!0,g.textContent=y.children)}return g.nextSibling},v=(g,y,D,R,U,x,M)=>{M=M||!!y.dynamicChildren;const O=y.children,B=O.length;for(let z=0;z{const{slotScopeIds:M}=y;M&&(U=U?U.concat(M):M);const O=a(g),B=v(l(g),y,O,D,R,U,x);return B&&Ar(B)&&B.data==="]"?l(y.anchor=B):(St=!0,c(y.anchor=u("]"),O,B),B)},w=(g,y,D,R,U,x)=>{if(St=!0,y.el=null,x){const B=T(g);for(;;){const z=l(g);if(z&&z!==B)s(z);else break}}const M=l(g),O=a(g);return s(g),n(null,y,O,M,D,R,Or(O),U),M},T=g=>{let y=0;for(;g;)if(g=l(g),g&&Ar(g)&&(g.data==="["&&y++,g.data==="]")){if(y===0)return l(g);y--}return g};return[i,f]}const Fe=Qs;function mf(e){return gf(e,hf)}function gf(e,t){const n=Do();n.__VUE__=!0;const{insert:r,remove:o,patchProp:l,createElement:a,createText:s,createComment:c,setText:u,setElementText:i,parentNode:f,nextSibling:p,setScopeId:v=ut,insertStaticContent:_}=e,w=(h,m,E,L=null,C=null,k=null,j=!1,$=null,N=!!m.dynamicChildren)=>{if(h===m)return;h&&!Jt(h,m)&&(L=P(h),Ae(h,C,k,!0),h=null),m.patchFlag===-2&&(N=!1,m.dynamicChildren=null);const{type:I,ref:Y,shapeFlag:G}=m;switch(I){case kn:T(h,m,E,L);break;case _t:g(h,m,E,L);break;case Zn:h==null&&y(m,E,L,j);break;case Ke:W(h,m,E,L,C,k,j,$,N);break;default:G&1?U(h,m,E,L,C,k,j,$,N):G&6?Q(h,m,E,L,C,k,j,$,N):(G&64||G&128)&&I.process(h,m,E,L,C,k,j,$,N,V)}Y!=null&&C&&Hr(Y,h&&h.ref,k,m||h,!m)},T=(h,m,E,L)=>{if(h==null)r(m.el=s(m.children),E,L);else{const C=m.el=h.el;m.children!==h.children&&u(C,m.children)}},g=(h,m,E,L)=>{h==null?r(m.el=c(m.children||""),E,L):m.el=h.el},y=(h,m,E,L)=>{[h.el,h.anchor]=_(h.children,m,E,L,h.el,h.anchor)},D=({el:h,anchor:m},E,L)=>{let C;for(;h&&h!==m;)C=p(h),r(h,E,L),h=C;r(m,E,L)},R=({el:h,anchor:m})=>{let E;for(;h&&h!==m;)E=p(h),o(h),h=E;o(m)},U=(h,m,E,L,C,k,j,$,N)=>{j=j||m.type==="svg",h==null?x(m,E,L,C,k,j,$,N):B(h,m,C,k,j,$,N)},x=(h,m,E,L,C,k,j,$)=>{let N,I;const{type:Y,props:G,shapeFlag:X,transition:ee,dirs:le}=h;if(N=h.el=a(h.type,k,G&&G.is,G),X&8?i(N,h.children):X&16&&O(h.children,N,null,L,C,k&&Y!=="foreignObject",j,$),le&&mt(h,null,L,"created"),M(N,h,h.scopeId,j,L),G){for(const he in G)he!=="value"&&!Kn(he)&&l(N,he,null,G[he],k,h.children,L,C,ke);"value"in G&&l(N,"value",null,G.value),(I=G.onVnodeBeforeMount)&&Xe(I,L,h)}le&&mt(h,null,L,"beforeMount");const be=(!C||C&&!C.pendingBranch)&&ee&&!ee.persisted;be&&ee.beforeEnter(N),r(N,m,E),((I=G&&G.onVnodeMounted)||be||le)&&Fe(()=>{I&&Xe(I,L,h),be&&ee.enter(N),le&&mt(h,null,L,"mounted")},C)},M=(h,m,E,L,C)=>{if(E&&v(h,E),L)for(let k=0;k{for(let I=N;I{const $=m.el=h.el;let{patchFlag:N,dynamicChildren:I,dirs:Y}=m;N|=h.patchFlag&16;const G=h.props||Te,X=m.props||Te;let ee;E&&Zt(E,!1),(ee=X.onVnodeBeforeUpdate)&&Xe(ee,E,m,h),Y&&mt(m,h,E,"beforeUpdate"),E&&Zt(E,!0);const le=C&&m.type!=="foreignObject";if(I?z(h.dynamicChildren,I,$,E,L,le,k):j||te(h,m,$,null,E,L,le,k,!1),N>0){if(N&16)re($,m,G,X,E,L,C);else if(N&2&&G.class!==X.class&&l($,"class",null,X.class,C),N&4&&l($,"style",G.style,X.style,C),N&8){const be=m.dynamicProps;for(let he=0;he{ee&&Xe(ee,E,m,h),Y&&mt(m,h,E,"updated")},L)},z=(h,m,E,L,C,k,j)=>{for(let $=0;${if(E!==L){if(E!==Te)for(const $ in E)!Kn($)&&!($ in L)&&l(h,$,E[$],null,j,m.children,C,k,ke);for(const $ in L){if(Kn($))continue;const N=L[$],I=E[$];N!==I&&$!=="value"&&l(h,$,I,N,j,m.children,C,k,ke)}"value"in L&&l(h,"value",E.value,L.value)}},W=(h,m,E,L,C,k,j,$,N)=>{const I=m.el=h?h.el:s(""),Y=m.anchor=h?h.anchor:s("");let{patchFlag:G,dynamicChildren:X,slotScopeIds:ee}=m;ee&&($=$?$.concat(ee):ee),h==null?(r(I,E,L),r(Y,E,L),O(m.children,E,Y,C,k,j,$,N)):G>0&&G&64&&X&&h.dynamicChildren?(z(h.dynamicChildren,X,E,C,k,j,$),(m.key!=null||C&&m===C.subTree)&&hi(h,m,!0)):te(h,m,E,Y,C,k,j,$,N)},Q=(h,m,E,L,C,k,j,$,N)=>{m.slotScopeIds=$,h==null?m.shapeFlag&512?C.ctx.activate(m,E,L,j,N):q(m,E,L,C,k,j,N):we(h,m,N)},q=(h,m,E,L,C,k,j)=>{const $=h.component=Pf(h,L,C);if(fr(h)&&($.ctx.renderer=V),Cf($),$.asyncDep){if(C&&C.registerDep($,oe),!h.el){const N=$.subTree=De(_t);g(null,N,m,E)}return}oe($,h,m,E,C,k,j)},we=(h,m,E)=>{const L=m.component=h.component;if(Nd(h,m,E))if(L.asyncDep&&!L.asyncResolved){fe(L,m,E);return}else L.next=m,Id(L.update),L.update();else m.el=h.el,L.vnode=m},oe=(h,m,E,L,C,k,j)=>{const $=()=>{if(h.isMounted){let{next:Y,bu:G,u:X,parent:ee,vnode:le}=h,be=Y,he;Zt(h,!1),Y?(Y.el=le.el,fe(h,Y,j)):Y=le,G&&co(G),(he=Y.props&&Y.props.onVnodeBeforeUpdate)&&Xe(he,ee,Y,le),Zt(h,!0);const xe=uo(h),lt=h.subTree;h.subTree=xe,w(lt,xe,f(lt.el),P(lt),h,C,k),Y.el=xe.el,be===null&&jd(h,xe.el),X&&Fe(X,C),(he=Y.props&&Y.props.onVnodeUpdated)&&Fe(()=>Xe(he,ee,Y,le),C)}else{let Y;const{el:G,props:X}=m,{bm:ee,m:le,parent:be}=h,he=qn(m);if(Zt(h,!1),ee&&co(ee),!he&&(Y=X&&X.onVnodeBeforeMount)&&Xe(Y,be,m),Zt(h,!0),G&&ie){const xe=()=>{h.subTree=uo(h),ie(G,h.subTree,h,C,null)};he?m.type.__asyncLoader().then(()=>!h.isUnmounted&&xe()):xe()}else{const xe=h.subTree=uo(h);w(null,xe,E,L,h,C,k),m.el=xe.el}if(le&&Fe(le,C),!he&&(Y=X&&X.onVnodeMounted)){const xe=m;Fe(()=>Xe(Y,be,xe),C)}(m.shapeFlag&256||be&&qn(be.vnode)&&be.vnode.shapeFlag&256)&&h.a&&Fe(h.a,C),h.isMounted=!0,m=E=L=null}},N=h.effect=new pl($,()=>Yr(I),h.scope),I=h.update=()=>N.run();I.id=h.uid,Zt(h,!0),I()},fe=(h,m,E)=>{m.component=h;const L=h.vnode.props;h.vnode=m,h.next=null,df(h,m.props,L,E),vf(h,m.children,E),Mn(),fa(),Vn()},te=(h,m,E,L,C,k,j,$,N=!1)=>{const I=h&&h.children,Y=h?h.shapeFlag:0,G=m.children,{patchFlag:X,shapeFlag:ee}=m;if(X>0){if(X&128){vt(I,G,E,L,C,k,j,$,N);return}else if(X&256){ot(I,G,E,L,C,k,j,$,N);return}}ee&8?(Y&16&&ke(I,C,k),G!==I&&i(E,G)):Y&16?ee&16?vt(I,G,E,L,C,k,j,$,N):ke(I,C,k,!0):(Y&8&&i(E,""),ee&16&&O(G,E,L,C,k,j,$,N))},ot=(h,m,E,L,C,k,j,$,N)=>{h=h||En,m=m||En;const I=h.length,Y=m.length,G=Math.min(I,Y);let X;for(X=0;XY?ke(h,C,k,!0,!1,G):O(m,E,L,C,k,j,$,N,G)},vt=(h,m,E,L,C,k,j,$,N)=>{let I=0;const Y=m.length;let G=h.length-1,X=Y-1;for(;I<=G&&I<=X;){const ee=h[I],le=m[I]=N?Vt(m[I]):st(m[I]);if(Jt(ee,le))w(ee,le,E,null,C,k,j,$,N);else break;I++}for(;I<=G&&I<=X;){const ee=h[G],le=m[X]=N?Vt(m[X]):st(m[X]);if(Jt(ee,le))w(ee,le,E,null,C,k,j,$,N);else break;G--,X--}if(I>G){if(I<=X){const ee=X+1,le=eeX)for(;I<=G;)Ae(h[I],C,k,!0),I++;else{const ee=I,le=I,be=new Map;for(I=le;I<=X;I++){const We=m[I]=N?Vt(m[I]):st(m[I]);We.key!=null&&be.set(We.key,I)}let he,xe=0;const lt=X-le+1;let pn=!1,ea=0;const Fn=new Array(lt);for(I=0;I=lt){Ae(We,C,k,!0);continue}let ht;if(We.key!=null)ht=be.get(We.key);else for(he=le;he<=X;he++)if(Fn[he-le]===0&&Jt(We,m[he])){ht=he;break}ht===void 0?Ae(We,C,k,!0):(Fn[ht-le]=I+1,ht>=ea?ea=ht:pn=!0,w(We,m[ht],E,null,C,k,j,$,N),xe++)}const ta=pn?_f(Fn):En;for(he=ta.length-1,I=lt-1;I>=0;I--){const We=le+I,ht=m[We],na=We+1{const{el:k,type:j,transition:$,children:N,shapeFlag:I}=h;if(I&6){je(h.component.subTree,m,E,L);return}if(I&128){h.suspense.move(m,E,L);return}if(I&64){j.move(h,m,E,V);return}if(j===Ke){r(k,m,E);for(let G=0;G$.enter(k),C);else{const{leave:G,delayLeave:X,afterLeave:ee}=$,le=()=>r(k,m,E),be=()=>{G(k,()=>{le(),ee&&ee()})};X?X(k,le,be):be()}else r(k,m,E)},Ae=(h,m,E,L=!1,C=!1)=>{const{type:k,props:j,ref:$,children:N,dynamicChildren:I,shapeFlag:Y,patchFlag:G,dirs:X}=h;if($!=null&&Hr($,null,E,h,!0),Y&256){m.ctx.deactivate(h);return}const ee=Y&1&&X,le=!qn(h);let be;if(le&&(be=j&&j.onVnodeBeforeUnmount)&&Xe(be,m,h),Y&6)It(h.component,E,L);else{if(Y&128){h.suspense.unmount(E,L);return}ee&&mt(h,null,m,"beforeUnmount"),Y&64?h.type.remove(h,m,E,C,V,L):I&&(k!==Ke||G>0&&G&64)?ke(I,m,E,!1,!0):(k===Ke&&G&384||!C&&Y&16)&&ke(N,m,E),L&&yt(h)}(le&&(be=j&&j.onVnodeUnmounted)||ee)&&Fe(()=>{be&&Xe(be,m,h),ee&&mt(h,null,m,"unmounted")},E)},yt=h=>{const{type:m,el:E,anchor:L,transition:C}=h;if(m===Ke){Ze(E,L);return}if(m===Zn){R(h);return}const k=()=>{o(E),C&&!C.persisted&&C.afterLeave&&C.afterLeave()};if(h.shapeFlag&1&&C&&!C.persisted){const{leave:j,delayLeave:$}=C,N=()=>j(E,k);$?$(h.el,k,N):N()}else k()},Ze=(h,m)=>{let E;for(;h!==m;)E=p(h),o(h),h=E;o(m)},It=(h,m,E)=>{const{bum:L,scope:C,update:k,subTree:j,um:$}=h;L&&co(L),C.stop(),k&&(k.active=!1,Ae(j,h,m,E)),$&&Fe($,m),Fe(()=>{h.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},ke=(h,m,E,L=!1,C=!1,k=0)=>{for(let j=k;jh.shapeFlag&6?P(h.component.subTree):h.shapeFlag&128?h.suspense.next():p(h.anchor||h.el),F=(h,m,E)=>{h==null?m._vnode&&Ae(m._vnode,null,null,!0):w(m._vnode||null,h,m,null,null,null,E),fa(),Vr(),m._vnode=h},V={p:w,um:Ae,m:je,r:yt,mt:q,mc:O,pc:te,pbc:z,n:P,o:e};let Z,ie;return t&&([Z,ie]=t(V)),{render:F,hydrate:Z,createApp:cf(F,Z)}}function Zt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function hi(e,t,n=!1){const r=e.children,o=t.children;if(J(r)&&J(o))for(let l=0;l>1,e[n[s]]0&&(t[r]=n[l-1]),n[l]=r)}}for(l=n.length,a=n[l-1];l-- >0;)n[l]=a,a=t[a];return n}const bf=e=>e.__isTeleport,Ke=Symbol.for("v-fgt"),kn=Symbol.for("v-txt"),_t=Symbol.for("v-cmt"),Zn=Symbol.for("v-stc"),Yn=[];let ct=null;function K2(e=!1){Yn.push(ct=e?null:[])}function yf(){Yn.pop(),ct=Yn[Yn.length-1]||null}let ar=1;function La(e){ar+=e}function Ef(e){return e.dynamicChildren=ar>0?ct||En:null,yf(),ar>0&&ct&&ct.push(e),e}function q2(e,t,n,r,o,l){return Ef(gi(e,t,n,r,o,l,!0))}function zo(e){return e?e.__v_isVNode===!0:!1}function Jt(e,t){return e.type===t.type&&e.key===t.key}const Qr="__vInternal",mi=({key:e})=>e??null,Sr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pe(e)||Se(e)||ne(e)?{i:Qe,r:e,k:t,f:!!n}:e:null);function gi(e,t=null,n=null,r=0,o=null,l=e===Ke?0:1,a=!1,s=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&mi(t),ref:t&&Sr(t),scopeId:Js,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Qe};return s?(Pl(c,n),l&128&&e.normalize(c)):n&&(c.shapeFlag|=pe(n)?8:16),ar>0&&!a&&ct&&(c.patchFlag>0||l&6)&&c.patchFlag!==32&&ct.push(c),c}const De=wf;function wf(e,t=null,n=null,r=0,o=null,l=!1){if((!e||e===Qd)&&(e=_t),zo(e)){const s=zt(e,t,!0);return n&&Pl(s,n),ar>0&&!l&&ct&&(s.shapeFlag&6?ct[ct.indexOf(e)]=s:ct.push(s)),s.patchFlag|=-2,s}if(Sf(e)&&(e=e.__vccOpts),t){t=Tf(t);let{class:s,style:c}=t;s&&!pe(s)&&(t.class=dl(s)),Le(c)&&(Ws(c)&&!J(c)&&(c=Ce({},c)),t.style=ul(c))}const a=pe(e)?1:Fd(e)?128:bf(e)?64:Le(e)?4:ne(e)?2:0;return gi(e,t,n,r,o,a,l,!0)}function Tf(e){return e?Ws(e)||Qr in e?Ce({},e):e:null}function zt(e,t,n=!1){const{props:r,ref:o,patchFlag:l,children:a}=e,s=t?Lf(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&mi(s),ref:t&&t.ref?n&&o?J(o)?o.concat(Sr(t)):[o,Sr(t)]:Sr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ke?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&zt(e.ssContent),ssFallback:e.ssFallback&&zt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function _i(e=" ",t=0){return De(kn,null,e,t)}function G2(e,t){const n=De(Zn,null,e);return n.staticCount=t,n}function st(e){return e==null||typeof e=="boolean"?De(_t):J(e)?De(Ke,null,e.slice()):typeof e=="object"?Vt(e):De(kn,null,String(e))}function Vt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:zt(e)}function Pl(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(J(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Pl(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(Qr in t)?t._ctx=Qe:o===3&&Qe&&(Qe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ne(t)?(t={default:t,_ctx:Qe},n=32):(t=String(t),r&64?(n=16,t=[_i(t)]):n=8);e.children=t,e.shapeFlag|=n}function Lf(...e){const t={};for(let n=0;nRe||Qe;let Cl,vn,Oa="__VUE_INSTANCE_SETTERS__";(vn=Do()[Oa])||(vn=Do()[Oa]=[]),vn.push(e=>Re=e),Cl=e=>{vn.length>1?vn.forEach(t=>t(e)):vn[0](e)};const xn=e=>{Cl(e),e.scope.on()},rn=()=>{Re&&Re.scope.off(),Cl(null)};function bi(e){return e.vnode.shapeFlag&4}let In=!1;function Cf(e,t=!1){In=t;const{props:n,children:r}=e.vnode,o=bi(e);uf(e,n,o,t),pf(e,r);const l=o?kf(e,t):void 0;return In=!1,l}function kf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Us(new Proxy(e.ctx,tf));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?If(e):null;xn(e),Mn();const l=Ht(r,e,0,[e.props,o]);if(Vn(),rn(),xs(l)){if(l.then(rn,rn),t)return l.then(a=>{Aa(e,a,t)}).catch(a=>{dr(a,e,0)});e.asyncDep=l}else Aa(e,l,t)}else yi(e,t)}function Aa(e,t,n){ne(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Le(t)&&(e.setupState=qs(t)),yi(e,n)}let Pa;function yi(e,t,n){const r=e.type;if(!e.render){if(!t&&Pa&&!r.render){const o=r.template||Ol(e).template;if(o){const{isCustomElement:l,compilerOptions:a}=e.appContext.config,{delimiters:s,compilerOptions:c}=r,u=Ce(Ce({isCustomElement:l,delimiters:s},a),c);r.render=Pa(o,u)}}e.render=r.render||ut}xn(e),Mn(),nf(e),Vn(),rn()}function xf(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ze(e,"get","$attrs"),t[n]}}))}function If(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return xf(e)},slots:e.slots,emit:e.emit,expose:t}}function kl(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(qs(Us(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Gn)return Gn[n](e)},has(t,n){return n in t||n in Gn}}))}function Rf(e,t=!0){return ne(e)?e.displayName||e.name:e.name||t&&e.__name}function Sf(e){return ne(e)&&"__vccOpts"in e}const A=(e,t)=>Cd(e,t,In);function d(e,t,n){const r=arguments.length;return r===2?Le(t)&&!J(t)?zo(t)?De(e,null,[t]):De(e,t):De(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&zo(n)&&(n=[n]),De(e,t,n))}const Df=Symbol.for("v-scx"),$f=()=>ye(Df),Mf="3.3.4",Vf="http://www.w3.org/2000/svg",Qt=typeof document<"u"?document:null,Ca=Qt&&Qt.createElement("template"),Nf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Qt.createElementNS(Vf,e):Qt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Qt.createTextNode(e),createComment:e=>Qt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Qt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,l){const a=n?n.previousSibling:t.lastChild;if(o&&(o===l||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===l||!(o=o.nextSibling)););else{Ca.innerHTML=r?`${e}`:e;const s=Ca.content;if(r){const c=s.firstChild;for(;c.firstChild;)s.appendChild(c.firstChild);s.removeChild(c)}t.insertBefore(s,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function jf(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Ff(e,t,n){const r=e.style,o=pe(n);if(n&&!o){if(t&&!pe(t))for(const l in t)n[l]==null&&Wo(r,l,"");for(const l in n)Wo(r,l,n[l])}else{const l=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=l)}}const ka=/\s*!important$/;function Wo(e,t,n){if(J(n))n.forEach(r=>Wo(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Hf(e,t);ka.test(n)?e.setProperty($n(r),n.replace(ka,""),"important"):e[r]=n}}const xa=["Webkit","Moz","ms"],ho={};function Hf(e,t){const n=ho[t];if(n)return n;let r=tt(t);if(r!=="filter"&&r in e)return ho[t]=r;r=cr(r);for(let o=0;omo||(Gf.then(()=>mo=0),mo=Date.now());function Yf(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;et(Xf(r,n.value),t,5,[r])};return n.value=e,n.attached=Zf(),n}function Xf(e,t){if(J(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Sa=/^on[a-z]/,Jf=(e,t,n,r,o=!1,l,a,s,c)=>{t==="class"?jf(e,r,o):t==="style"?Ff(e,n,r):ir(t)?al(t)||Kf(e,t,n,r,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qf(e,t,r,o))?zf(e,t,r,l,a,s,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Bf(e,t,r,o))};function Qf(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&Sa.test(t)&&ne(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Sa.test(t)&&pe(n)?!1:t in e}const Dt="transition",Hn="animation",Wt=(e,{slots:t})=>d(zd,wi(e),t);Wt.displayName="Transition";const Ei={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ep=Wt.props=Ce({},ri,Ei),Yt=(e,t=[])=>{J(e)?e.forEach(n=>n(...t)):e&&e(...t)},Da=e=>e?J(e)?e.some(t=>t.length>1):e.length>1:!1;function wi(e){const t={};for(const W in e)W in Ei||(t[W]=e[W]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:l=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=l,appearActiveClass:u=a,appearToClass:i=s,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,_=tp(o),w=_&&_[0],T=_&&_[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:D,onLeave:R,onLeaveCancelled:U,onBeforeAppear:x=g,onAppear:M=y,onAppearCancelled:O=D}=t,B=(W,Q,q)=>{Mt(W,Q?i:s),Mt(W,Q?u:a),q&&q()},z=(W,Q)=>{W._isLeaving=!1,Mt(W,f),Mt(W,v),Mt(W,p),Q&&Q()},re=W=>(Q,q)=>{const we=W?M:y,oe=()=>B(Q,W,q);Yt(we,[Q,oe]),$a(()=>{Mt(Q,W?c:l),wt(Q,W?i:s),Da(we)||Ma(Q,r,w,oe)})};return Ce(t,{onBeforeEnter(W){Yt(g,[W]),wt(W,l),wt(W,a)},onBeforeAppear(W){Yt(x,[W]),wt(W,c),wt(W,u)},onEnter:re(!1),onAppear:re(!0),onLeave(W,Q){W._isLeaving=!0;const q=()=>z(W,Q);wt(W,f),Li(),wt(W,p),$a(()=>{W._isLeaving&&(Mt(W,f),wt(W,v),Da(R)||Ma(W,r,T,q))}),Yt(R,[W,q])},onEnterCancelled(W){B(W,!1),Yt(D,[W])},onAppearCancelled(W){B(W,!0),Yt(O,[W])},onLeaveCancelled(W){z(W),Yt(U,[W])}})}function tp(e){if(e==null)return null;if(Le(e))return[go(e.enter),go(e.leave)];{const t=go(e);return[t,t]}}function go(e){return Vu(e)}function wt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Mt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function $a(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let np=0;function Ma(e,t,n,r){const o=e._endId=++np,l=()=>{o===e._endId&&r()};if(n)return setTimeout(l,n);const{type:a,timeout:s,propCount:c}=Ti(e,t);if(!a)return r();const u=a+"end";let i=0;const f=()=>{e.removeEventListener(u,p),l()},p=v=>{v.target===e&&++i>=c&&f()};setTimeout(()=>{i(n[_]||"").split(", "),o=r(`${Dt}Delay`),l=r(`${Dt}Duration`),a=Va(o,l),s=r(`${Hn}Delay`),c=r(`${Hn}Duration`),u=Va(s,c);let i=null,f=0,p=0;t===Dt?a>0&&(i=Dt,f=a,p=l.length):t===Hn?u>0&&(i=Hn,f=u,p=c.length):(f=Math.max(a,u),i=f>0?a>u?Dt:Hn:null,p=i?i===Dt?l.length:c.length:0);const v=i===Dt&&/\b(transform|all)(,|$)/.test(r(`${Dt}Property`).toString());return{type:i,timeout:f,propCount:p,hasTransform:v}}function Va(e,t){for(;e.lengthNa(n)+Na(e[r])))}function Na(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Li(){return document.body.offsetHeight}const Oi=new WeakMap,Ai=new WeakMap,Pi={name:"TransitionGroup",props:Ce({},ep,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=sn(),r=ni();let o,l;return ai(()=>{if(!o.length)return;const a=e.moveClass||`${e.name||"v"}-move`;if(!ip(o[0].el,n.vnode.el,a))return;o.forEach(lp),o.forEach(ap);const s=o.filter(sp);Li(),s.forEach(c=>{const u=c.el,i=u.style;wt(u,a),i.transform=i.webkitTransform=i.transitionDuration="";const f=u._moveCb=p=>{p&&p.target!==u||(!p||/transform$/.test(p.propertyName))&&(u.removeEventListener("transitionend",f),u._moveCb=null,Mt(u,a))};u.addEventListener("transitionend",f)})}),()=>{const a=se(e),s=wi(a);let c=a.tag||Ke;o=l,l=t.default?Tl(t.default()):[];for(let u=0;udelete e.mode;Pi.props;const op=Pi;function lp(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function ap(e){Ai.set(e,e.el.getBoundingClientRect())}function sp(e){const t=Oi.get(e),n=Ai.get(e),r=t.left-n.left,o=t.top-n.top;if(r||o){const l=e.el.style;return l.transform=l.webkitTransform=`translate(${r}px,${o}px)`,l.transitionDuration="0s",e}}function ip(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach(a=>{a.split(/\s+/).forEach(s=>s&&r.classList.remove(s))}),n.split(/\s+/).forEach(a=>a&&r.classList.add(a)),r.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(r);const{hasTransform:l}=Ti(r);return o.removeChild(r),l}const cp=Ce({patchProp:Jf},Nf);let _o,ja=!1;function up(){return _o=ja?_o:mf(cp),ja=!0,_o}const dp=(...e)=>{const t=up().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=fp(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function fp(e){return pe(e)?document.querySelector(e):e}const pp={"v-8daa1a0e":()=>b(()=>import("./index.html-c5aff358.js"),[]).then(({data:e})=>e),"v-495a303e":()=>b(()=>import("./index.html-a3d59bf2.js"),[]).then(({data:e})=>e),"v-7f4aff48":()=>b(()=>import("./index.html-308b9cfb.js"),[]).then(({data:e})=>e),"v-974caada":()=>b(()=>import("./index.html-fe59353c.js"),[]).then(({data:e})=>e),"v-174d6e92":()=>b(()=>import("./api.html-a4c0141d.js"),[]).then(({data:e})=>e),"v-50b2c6d0":()=>b(()=>import("./index.html-55ed2560.js"),[]).then(({data:e})=>e),"v-26c7c346":()=>b(()=>import("./changelog.html-fca83de8.js"),[]).then(({data:e})=>e),"v-7554a597":()=>b(()=>import("./contributing.html-3080332f.js"),[]).then(({data:e})=>e),"v-1605c99e":()=>b(()=>import("./guidelines.html-4ae07334.js"),[]).then(({data:e})=>e),"v-f6ea7b76":()=>b(()=>import("./package-structure.html-443c8c9c.js"),[]).then(({data:e})=>e),"v-2ff4a912":()=>b(()=>import("./versioning.html-fbe8ba14.js"),[]).then(({data:e})=>e),"v-cabbab28":()=>b(()=>import("./index.html-3cd818aa.js"),[]).then(({data:e})=>e),"v-4b7a327c":()=>b(()=>import("./file-formats.html-b244b52f.js"),[]).then(({data:e})=>e),"v-0669fc14":()=>b(()=>import("./overview.html-6ab61eb2.js"),[]).then(({data:e})=>e),"v-142be2c4":()=>b(()=>import("./serializers.html-5fe64867.js"),[]).then(({data:e})=>e),"v-4ce5761f":()=>b(()=>import("./task-list.html-137e9390.js"),[]).then(({data:e})=>e),"v-6cca6f5b":()=>b(()=>import("./index.html-803489df.js"),[]).then(({data:e})=>e),"v-35faf283":()=>b(()=>import("./docs.html-205e1811.js"),[]).then(({data:e})=>e),"v-23d1f10b":()=>b(()=>import("./technical-links.html-9084e979.js"),[]).then(({data:e})=>e),"v-6f27bb46":()=>b(()=>import("./index.html-6b27342d.js"),[]).then(({data:e})=>e),"v-14742194":()=>b(()=>import("./ci.html-83409b0c.js"),[]).then(({data:e})=>e),"v-9e17fb70":()=>b(()=>import("./debugging.html-a2143ec3.js"),[]).then(({data:e})=>e),"v-41f63175":()=>b(()=>import("./tests.html-c5c1daf8.js"),[]).then(({data:e})=>e),"v-6df5895a":()=>b(()=>import("./index.html-e2ac7db3.js"),[]).then(({data:e})=>e),"v-0912a191":()=>b(()=>import("./adding-icons.html-f24fcef0.js"),[]).then(({data:e})=>e),"v-3b749041":()=>b(()=>import("./developing-ui-css.html-60144fe3.js"),[]).then(({data:e})=>e),"v-680c4ad5":()=>b(()=>import("./developing-ui-forms.html-44a4abad.js"),[]).then(({data:e})=>e),"v-79cd1776":()=>b(()=>import("./developing-ui-js.html-a314c253.js"),[]).then(({data:e})=>e),"v-43c30229":()=>b(()=>import("./developing-ui-tables.html-5055a2b7.js"),[]).then(({data:e})=>e),"v-286ba437":()=>b(()=>import("./developing-ui.html-67064402.js"),[]).then(({data:e})=>e),"v-0aeb53ac":()=>b(()=>import("./html-popups.html-fca1dc9e.js"),[]).then(({data:e})=>e),"v-23b84093":()=>b(()=>import("./index.html-d6c2101f.js"),[]).then(({data:e})=>e),"v-7d2e6031":()=>b(()=>import("./install.html-ea393893.js"),[]).then(({data:e})=>e),"v-da6c54ee":()=>b(()=>import("./ui-layout.html-225dd165.js"),[]).then(({data:e})=>e),"v-dc289a5c":()=>b(()=>import("./ui.html-aeff420e.js"),[]).then(({data:e})=>e),"v-3aecceec":()=>b(()=>import("./uninstall.html-b31faa15.js"),[]).then(({data:e})=>e),"v-97a4d760":()=>b(()=>import("./upgrade.html-e805da86.js"),[]).then(({data:e})=>e),"v-79352e7b":()=>b(()=>import("./index.html-b9ee809f.js"),[]).then(({data:e})=>e),"v-b753c16a":()=>b(()=>import("./articles-and-presentations.html-da5d93f1.js"),[]).then(({data:e})=>e),"v-8ffe8b28":()=>b(()=>import("./logos.html-162bb7f0.js"),[]).then(({data:e})=>e),"v-b4d4656a":()=>b(()=>import("./regular-backup.html-8acf0655.js"),[]).then(({data:e})=>e),"v-5c3b6510":()=>b(()=>import("./saplink.html-6b1a2306.js"),[]).then(({data:e})=>e),"v-b86e8c0a":()=>b(()=>import("./where-used.html-450401fa.js"),[]).then(({data:e})=>e),"v-c774b90c":()=>b(()=>import("./xml-mismatch.html-f032586f.js"),[]).then(({data:e})=>e),"v-52841e19":()=>b(()=>import("./index.html-31ff22f4.js"),[]).then(({data:e})=>e),"v-741130c0":()=>b(()=>import("./index.html-6920104c.js"),[]).then(({data:e})=>e),"v-0de740f9":()=>b(()=>import("./abap-language-version.html-c24cf374.js"),[]).then(({data:e})=>e),"v-088182bf":()=>b(()=>import("./apack.html-5c6a9fb4.js"),[]).then(({data:e})=>e),"v-4959a65f":()=>b(()=>import("./authorizations.html-f35033f9.js"),[]).then(({data:e})=>e),"v-72455036":()=>b(()=>import("./database-util.html-3f1e5915.js"),[]).then(({data:e})=>e),"v-4bc4da84":()=>b(()=>import("./exits.html-fb515032.js"),[]).then(({data:e})=>e),"v-43980e6a":()=>b(()=>import("./flow.html-ccffb026.js"),[]).then(({data:e})=>e),"v-78e86c96":()=>b(()=>import("./folders-filenames.html-2b163229.js"),[]).then(({data:e})=>e),"v-71ce9558":()=>b(()=>import("./hotkeys.html-8b36de00.js"),[]).then(({data:e})=>e),"v-252f2d9f":()=>b(()=>import("./icons.html-154106d3.js"),[]).then(({data:e})=>e),"v-3914cc7e":()=>b(()=>import("./namespaces.html-00d9e871.js"),[]).then(({data:e})=>e),"v-1d61fcf8":()=>b(()=>import("./note-analyzer.html-164b616a.js"),[]).then(({data:e})=>e),"v-47821728":()=>b(()=>import("./packages.html-f02402e5.js"),[]).then(({data:e})=>e),"v-f51e8eea":()=>b(()=>import("./supported.html-6baf2bc8.js"),[]).then(({data:e})=>e),"v-ec7a72d2":()=>b(()=>import("./translations.html-59a405ca.js"),[]).then(({data:e})=>e),"v-01e98f2d":()=>b(()=>import("./index.html-189dc5d5.js"),[]).then(({data:e})=>e),"v-d7ac3c38":()=>b(()=>import("./background-mode.html-75123a5b.js"),[]).then(({data:e})=>e),"v-17c01b88":()=>b(()=>import("./dot-abapgit.html-10b2e95c.js"),[]).then(({data:e})=>e),"v-ac98f18a":()=>b(()=>import("./local.html-66891a46.js"),[]).then(({data:e})=>e),"v-0be4b1f4":()=>b(()=>import("./remote.html-24ea83d4.js"),[]).then(({data:e})=>e),"v-6651c287":()=>b(()=>import("./stats.html-7906d7bc.js"),[]).then(({data:e})=>e),"v-7f3ae0ae":()=>b(()=>import("./index.html-a007e1b8.js"),[]).then(({data:e})=>e),"v-43307cf2":()=>b(()=>import("./sapgui.html-96daaaed.js"),[]).then(({data:e})=>e),"v-218e7a1a":()=>b(()=>import("./settings-global.html-12660f12.js"),[]).then(({data:e})=>e),"v-d7087ec6":()=>b(()=>import("./settings-personal.html-9ca63b6f.js"),[]).then(({data:e})=>e),"v-b4e259ea":()=>b(()=>import("./ssl-setup.html-15162eeb.js"),[]).then(({data:e})=>e),"v-362eb318":()=>b(()=>import("./ssl-test.html-f015a542.js"),[]).then(({data:e})=>e),"v-3e76b876":()=>b(()=>import("./index.html-4cd63ea8.js"),[]).then(({data:e})=>e),"v-7bddc9ec":()=>b(()=>import("./export-zip.html-61c11160.js"),[]).then(({data:e})=>e),"v-3ad8b04d":()=>b(()=>import("./import-rfc.html-a1eb0300.js"),[]).then(({data:e})=>e),"v-2ec3c91b":()=>b(()=>import("./import-zip.html-f068cd5e.js"),[]).then(({data:e})=>e),"v-49558863":()=>b(()=>import("./install.html-790d4438.js"),[]).then(({data:e})=>e),"v-6a30cffa":()=>b(()=>import("./index.html-668975ce.js"),[]).then(({data:e})=>e),"v-fd49d704":()=>b(()=>import("./authentication.html-e8bc75fd.js"),[]).then(({data:e})=>e),"v-c87ae4e8":()=>b(()=>import("./contributing.html-a00e311e.js"),[]).then(({data:e})=>e),"v-755a2ac0":()=>b(()=>import("./first-project.html-8e904f05.js"),[]).then(({data:e})=>e),"v-9333e0be":()=>b(()=>import("./install.html-e7b99895.js"),[]).then(({data:e})=>e),"v-aa70c2e2":()=>b(()=>import("./moving-package.html-0a98281b.js"),[]).then(({data:e})=>e),"v-d3eccfe0":()=>b(()=>import("./stage-commit.html-b7c725f4.js"),[]).then(({data:e})=>e),"v-c9cf1466":()=>b(()=>import("./update.html-876754d3.js"),[]).then(({data:e})=>e),"v-5a4f9bf2":()=>b(()=>import("./index.html-d3fe7e49.js"),[]).then(({data:e})=>e),"v-c7dbbcae":()=>b(()=>import("./uninstall.html-2610c469.js"),[]).then(({data:e})=>e),"v-3706649a":()=>b(()=>import("./404.html-e98d903c.js"),[]).then(({data:e})=>e)},vp=JSON.parse('{"base":"/","lang":"en-US","title":"","description":"","head":[["link",{"rel":"icon","href":"/favicon.svg"}]],"locales":{"/":{"lang":"en-US","title":"abapGit Docs","description":"A git client for ABAP developed in ABAP"}}}');var hp=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),mp=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=hp(r);t.has(o)||(t.add(o),n.push(r))}),n},gp=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,_p=e=>e.startsWith("ftp://"),Nn=e=>/^(https?:)?\/\//.test(e),bp=/.md((\?|#).*)?$/,Br=(e,t="/")=>!!(Nn(e)||_p(e)||e.startsWith("/")&&!e.startsWith(t)&&!bp.test(e)),Ci=e=>/^mailto:/.test(e),yp=e=>/^tel:/.test(e),eo=e=>Object.prototype.toString.call(e)==="[object Object]",xl=e=>e[e.length-1]==="/"?e.slice(0,-1):e,ki=e=>e[0]==="/"?e.slice(1):e,Ep=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const l=o.split("/").length-r.split("/").length;return l!==0?l:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const xi={"v-8daa1a0e":S(()=>b(()=>import("./index.html-62c953f4.js"),["assets/index.html-62c953f4.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-495a303e":S(()=>b(()=>import("./index.html-d772a5cb.js"),["assets/index.html-d772a5cb.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7f4aff48":S(()=>b(()=>import("./index.html-a7044ccc.js"),["assets/index.html-a7044ccc.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-974caada":S(()=>b(()=>import("./index.html-5927d816.js"),["assets/index.html-5927d816.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-174d6e92":S(()=>b(()=>import("./api.html-0592a7a6.js"),["assets/api.html-0592a7a6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-50b2c6d0":S(()=>b(()=>import("./index.html-9eeb90d2.js"),["assets/index.html-9eeb90d2.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-26c7c346":S(()=>b(()=>import("./changelog.html-17b4232a.js"),["assets/changelog.html-17b4232a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7554a597":S(()=>b(()=>import("./contributing.html-79806582.js"),["assets/contributing.html-79806582.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1605c99e":S(()=>b(()=>import("./guidelines.html-f0b5150a.js"),["assets/guidelines.html-f0b5150a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-f6ea7b76":S(()=>b(()=>import("./package-structure.html-bcaf7cd1.js"),["assets/package-structure.html-bcaf7cd1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2ff4a912":S(()=>b(()=>import("./versioning.html-6511cbc9.js"),["assets/versioning.html-6511cbc9.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-cabbab28":S(()=>b(()=>import("./index.html-636f4f00.js"),["assets/index.html-636f4f00.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4b7a327c":S(()=>b(()=>import("./file-formats.html-7efa9b4b.js"),["assets/file-formats.html-7efa9b4b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0669fc14":S(()=>b(()=>import("./overview.html-4c4e6631.js"),["assets/overview.html-4c4e6631.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-142be2c4":S(()=>b(()=>import("./serializers.html-b2e2ac7c.js"),["assets/serializers.html-b2e2ac7c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4ce5761f":S(()=>b(()=>import("./task-list.html-2153243d.js"),["assets/task-list.html-2153243d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6cca6f5b":S(()=>b(()=>import("./index.html-56675b9d.js"),["assets/index.html-56675b9d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-35faf283":S(()=>b(()=>import("./docs.html-83943352.js"),["assets/docs.html-83943352.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-23d1f10b":S(()=>b(()=>import("./technical-links.html-d657a223.js"),["assets/technical-links.html-d657a223.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6f27bb46":S(()=>b(()=>import("./index.html-678daeab.js"),["assets/index.html-678daeab.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-14742194":S(()=>b(()=>import("./ci.html-abfc76ef.js"),["assets/ci.html-abfc76ef.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-9e17fb70":S(()=>b(()=>import("./debugging.html-879e1f17.js"),["assets/debugging.html-879e1f17.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-41f63175":S(()=>b(()=>import("./tests.html-f408220e.js"),["assets/tests.html-f408220e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6df5895a":S(()=>b(()=>import("./index.html-aedfca42.js"),["assets/index.html-aedfca42.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0912a191":S(()=>b(()=>import("./adding-icons.html-8eac0d4e.js"),["assets/adding-icons.html-8eac0d4e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3b749041":S(()=>b(()=>import("./developing-ui-css.html-f7c397b5.js"),["assets/developing-ui-css.html-f7c397b5.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-680c4ad5":S(()=>b(()=>import("./developing-ui-forms.html-cf8b22ba.js"),["assets/developing-ui-forms.html-cf8b22ba.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-79cd1776":S(()=>b(()=>import("./developing-ui-js.html-b20f2769.js"),["assets/developing-ui-js.html-b20f2769.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-43c30229":S(()=>b(()=>import("./developing-ui-tables.html-e2b882b3.js"),["assets/developing-ui-tables.html-e2b882b3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-286ba437":S(()=>b(()=>import("./developing-ui.html-a208fd99.js"),["assets/developing-ui.html-a208fd99.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0aeb53ac":S(()=>b(()=>import("./html-popups.html-565f2157.js"),["assets/html-popups.html-565f2157.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-23b84093":S(()=>b(()=>import("./index.html-6791e469.js"),["assets/index.html-6791e469.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7d2e6031":S(()=>b(()=>import("./install.html-13db438d.js"),["assets/install.html-13db438d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-da6c54ee":S(()=>b(()=>import("./ui-layout.html-dcb0b2f4.js"),["assets/ui-layout.html-dcb0b2f4.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-dc289a5c":S(()=>b(()=>import("./ui.html-8f684f9c.js"),["assets/ui.html-8f684f9c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3aecceec":S(()=>b(()=>import("./uninstall.html-28bc42ee.js"),["assets/uninstall.html-28bc42ee.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-97a4d760":S(()=>b(()=>import("./upgrade.html-dcdb0269.js"),["assets/upgrade.html-dcdb0269.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-79352e7b":S(()=>b(()=>import("./index.html-97b79dde.js"),["assets/index.html-97b79dde.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-b753c16a":S(()=>b(()=>import("./articles-and-presentations.html-0733b799.js"),["assets/articles-and-presentations.html-0733b799.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-8ffe8b28":S(()=>b(()=>import("./logos.html-df36ff0b.js"),["assets/logos.html-df36ff0b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-b4d4656a":S(()=>b(()=>import("./regular-backup.html-4e2e73d6.js"),["assets/regular-backup.html-4e2e73d6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-5c3b6510":S(()=>b(()=>import("./saplink.html-102951ba.js"),["assets/saplink.html-102951ba.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-b86e8c0a":S(()=>b(()=>import("./where-used.html-8ea59dc2.js"),["assets/where-used.html-8ea59dc2.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c774b90c":S(()=>b(()=>import("./xml-mismatch.html-27ecc741.js"),["assets/xml-mismatch.html-27ecc741.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-52841e19":S(()=>b(()=>import("./index.html-970d1d8b.js"),["assets/index.html-970d1d8b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-741130c0":S(()=>b(()=>import("./index.html-f1c70d25.js"),["assets/index.html-f1c70d25.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0de740f9":S(()=>b(()=>import("./abap-language-version.html-2b261184.js"),["assets/abap-language-version.html-2b261184.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-088182bf":S(()=>b(()=>import("./apack.html-ba2061fd.js"),["assets/apack.html-ba2061fd.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4959a65f":S(()=>b(()=>import("./authorizations.html-03d24e89.js"),["assets/authorizations.html-03d24e89.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-72455036":S(()=>b(()=>import("./database-util.html-5560069e.js"),["assets/database-util.html-5560069e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4bc4da84":S(()=>b(()=>import("./exits.html-a749860c.js"),["assets/exits.html-a749860c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-43980e6a":S(()=>b(()=>import("./flow.html-a4688e2a.js"),["assets/flow.html-a4688e2a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-78e86c96":S(()=>b(()=>import("./folders-filenames.html-c52e9335.js"),["assets/folders-filenames.html-c52e9335.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-71ce9558":S(()=>b(()=>import("./hotkeys.html-a5d8a499.js"),["assets/hotkeys.html-a5d8a499.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-252f2d9f":S(()=>b(()=>import("./icons.html-e74e7339.js"),["assets/icons.html-e74e7339.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3914cc7e":S(()=>b(()=>import("./namespaces.html-f654d902.js"),["assets/namespaces.html-f654d902.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1d61fcf8":S(()=>b(()=>import("./note-analyzer.html-263b5f86.js"),["assets/note-analyzer.html-263b5f86.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-47821728":S(()=>b(()=>import("./packages.html-1561048c.js"),["assets/packages.html-1561048c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-f51e8eea":S(()=>b(()=>import("./supported.html-f32281d0.js"),["assets/supported.html-f32281d0.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-ec7a72d2":S(()=>b(()=>import("./translations.html-f1656eea.js"),["assets/translations.html-f1656eea.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-01e98f2d":S(()=>b(()=>import("./index.html-d6411688.js"),["assets/index.html-d6411688.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d7ac3c38":S(()=>b(()=>import("./background-mode.html-1a08e876.js"),["assets/background-mode.html-1a08e876.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-17c01b88":S(()=>b(()=>import("./dot-abapgit.html-071b8197.js"),["assets/dot-abapgit.html-071b8197.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-ac98f18a":S(()=>b(()=>import("./local.html-ad9a4805.js"),["assets/local.html-ad9a4805.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0be4b1f4":S(()=>b(()=>import("./remote.html-e03449ad.js"),["assets/remote.html-e03449ad.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6651c287":S(()=>b(()=>import("./stats.html-5ee7a112.js"),["assets/stats.html-5ee7a112.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7f3ae0ae":S(()=>b(()=>import("./index.html-0913ee3e.js"),["assets/index.html-0913ee3e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-43307cf2":S(()=>b(()=>import("./sapgui.html-03186a6e.js"),["assets/sapgui.html-03186a6e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-218e7a1a":S(()=>b(()=>import("./settings-global.html-c2c5db38.js"),["assets/settings-global.html-c2c5db38.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d7087ec6":S(()=>b(()=>import("./settings-personal.html-65fb411e.js"),["assets/settings-personal.html-65fb411e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-b4e259ea":S(()=>b(()=>import("./ssl-setup.html-101df145.js"),["assets/ssl-setup.html-101df145.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-362eb318":S(()=>b(()=>import("./ssl-test.html-e9e3be0b.js"),["assets/ssl-test.html-e9e3be0b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3e76b876":S(()=>b(()=>import("./index.html-6eb22647.js"),["assets/index.html-6eb22647.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7bddc9ec":S(()=>b(()=>import("./export-zip.html-054c894b.js"),["assets/export-zip.html-054c894b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3ad8b04d":S(()=>b(()=>import("./import-rfc.html-86039a59.js"),["assets/import-rfc.html-86039a59.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2ec3c91b":S(()=>b(()=>import("./import-zip.html-3b8ba453.js"),["assets/import-zip.html-3b8ba453.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-49558863":S(()=>b(()=>import("./install.html-1cf1a87a.js"),["assets/install.html-1cf1a87a.js","assets/start-b8c8f9c6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6a30cffa":S(()=>b(()=>import("./index.html-66ce1066.js"),["assets/index.html-66ce1066.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-fd49d704":S(()=>b(()=>import("./authentication.html-f868c893.js"),["assets/authentication.html-f868c893.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c87ae4e8":S(()=>b(()=>import("./contributing.html-29f3346e.js"),["assets/contributing.html-29f3346e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-755a2ac0":S(()=>b(()=>import("./first-project.html-9ddc3ab2.js"),["assets/first-project.html-9ddc3ab2.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-9333e0be":S(()=>b(()=>import("./install.html-6425d85f.js"),["assets/install.html-6425d85f.js","assets/start-b8c8f9c6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-aa70c2e2":S(()=>b(()=>import("./moving-package.html-a768c24e.js"),["assets/moving-package.html-a768c24e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d3eccfe0":S(()=>b(()=>import("./stage-commit.html-c5ced5ba.js"),["assets/stage-commit.html-c5ced5ba.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c9cf1466":S(()=>b(()=>import("./update.html-09cd5ab3.js"),["assets/update.html-09cd5ab3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-5a4f9bf2":S(()=>b(()=>import("./index.html-51caa125.js"),["assets/index.html-51caa125.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c7dbbcae":S(()=>b(()=>import("./uninstall.html-cc45b0b9.js"),["assets/uninstall.html-cc45b0b9.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3706649a":S(()=>b(()=>import("./404.html-1aebf0e6.js"),["assets/404.html-1aebf0e6.js","assets/plugin-vue_export-helper-c27b6911.js"]))};var wp=Symbol(""),Tp=K(pp),Ii=ln({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),Nt=K(Ii),ge=()=>Nt,Ri=Symbol(""),Ie=()=>{const e=ye(Ri);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},Si=Symbol(""),Lp=()=>{const e=ye(Si);if(!e)throw new Error("usePageHead() is called without provider.");return e},Op=Symbol(""),Di=Symbol(""),$i=()=>{const e=ye(Di);if(!e)throw new Error("usePageLang() is called without provider.");return e},Mi=Symbol(""),Ap=()=>{const e=ye(Mi);if(!e)throw new Error("usePageLayout() is called without provider.");return e},Il=Symbol(""),cn=()=>{const e=ye(Il);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},_n=K(vp),Pp=()=>_n,Vi=Symbol(""),to=()=>{const e=ye(Vi);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},Cp=Symbol(""),kp="Layout",xp="NotFound",Tt=ur({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageData:async e=>{const t=Tp.value[e];return await(t==null?void 0:t())??Ii},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=pe(t.description)?t.description:n.description,o=[...J(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return mp(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const r=e.frontmatter.layout;pe(r)?n=r:n=kp}else n=xp;return t[n]},resolveRouteLocale:(e,t)=>Ep(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),no=H({name:"ClientOnly",setup(e,t){const n=K(!1);return de(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),Rl=H({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=ge(),n=A(()=>xi[e.pageKey||t.value.key]);return()=>n.value?d(n.value):d("div","404 Not Found")}}),pt=(e={})=>e,He=e=>Nn(e)?e:`/${ki(e)}`;const Ip={};/*!
    +const Ou="modulepreload",Au=function(e){return"/"+e},ra={},b=function(t,n,r){if(!n||n.length===0)return t();const o=document.getElementsByTagName("link");return Promise.all(n.map(l=>{if(l=Au(l),l in ra)return;ra[l]=!0;const a=l.endsWith(".css"),s=a?'[rel="stylesheet"]':"";if(!!r)for(let i=o.length-1;i>=0;i--){const f=o[i];if(f.href===l&&(!a||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${s}`))return;const u=document.createElement("link");if(u.rel=a?"stylesheet":Ou,a||(u.as="script",u.crossOrigin=""),u.href=l,document.head.appendChild(u),a)return new Promise((i,f)=>{u.addEventListener("load",i),u.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${l}`)))})})).then(()=>t()).catch(l=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=l,window.dispatchEvent(a),!a.defaultPrevented)throw l})};function ll(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const Te={},En=[],ut=()=>{},Pu=()=>!1,Cu=/^on[^a-z]/,ir=e=>Cu.test(e),al=e=>e.startsWith("onUpdate:"),Ce=Object.assign,sl=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ku=Object.prototype.hasOwnProperty,ue=(e,t)=>ku.call(e,t),J=Array.isArray,Un=e=>Kr(e)==="[object Map]",xu=e=>Kr(e)==="[object Set]",ne=e=>typeof e=="function",pe=e=>typeof e=="string",il=e=>typeof e=="symbol",Le=e=>e!==null&&typeof e=="object",xs=e=>Le(e)&&ne(e.then)&&ne(e.catch),Iu=Object.prototype.toString,Kr=e=>Iu.call(e),Ru=e=>Kr(e).slice(8,-1),Su=e=>Kr(e)==="[object Object]",cl=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Kn=ll(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),qr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Du=/-(\w)/g,tt=qr(e=>e.replace(Du,(t,n)=>n?n.toUpperCase():"")),$u=/\B([A-Z])/g,$n=qr(e=>e.replace($u,"-$1").toLowerCase()),cr=qr(e=>e.charAt(0).toUpperCase()+e.slice(1)),io=qr(e=>e?`on${cr(e)}`:""),er=(e,t)=>!Object.is(e,t),co=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Mu=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Vu=e=>{const t=pe(e)?Number(e):NaN;return isNaN(t)?e:t};let oa;const Do=()=>oa||(oa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ul(e){if(J(e)){const t={};for(let n=0;n{if(n){const r=n.split(ju);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function dl(e){let t="";if(pe(e))t=e;else if(J(e))for(let n=0;n{const t=new Set(e);return t.w=0,t.n=0,t},Ss=e=>(e.w&Bt)>0,Ds=e=>(e.n&Bt)>0,qu=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(i==="length"||i>=c)&&s.push(u)})}else switch(n!==void 0&&s.push(a.get(n)),t){case"add":J(e)?cl(n)&&s.push(a.get("length")):(s.push(a.get(en)),Un(e)&&s.push(a.get(Mo)));break;case"delete":J(e)||(s.push(a.get(en)),Un(e)&&s.push(a.get(Mo)));break;case"set":Un(e)&&s.push(a.get(en));break}if(s.length===1)s[0]&&Vo(s[0]);else{const c=[];for(const u of s)u&&c.push(...u);Vo(fl(c))}}function Vo(e,t){const n=J(e)?e:[...e];for(const r of n)r.computed&&aa(r);for(const r of n)r.computed||aa(r)}function aa(e,t){(e!==it||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Zu(e,t){var n;return(n=$r.get(e))==null?void 0:n.get(t)}const Yu=ll("__proto__,__v_isRef,__isVue"),Vs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(il)),Xu=vl(),Ju=vl(!1,!0),Qu=vl(!0),sa=ed();function ed(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=se(this);for(let l=0,a=this.length;l{e[t]=function(...n){Mn();const r=se(this)[t].apply(this,n);return Vn(),r}}),e}function td(e){const t=se(this);return ze(t,"has",e),t.hasOwnProperty(e)}function vl(e=!1,t=!1){return function(r,o,l){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&l===(e?t?gd:Bs:t?Hs:Fs).get(r))return r;const a=J(r);if(!e){if(a&&ue(sa,o))return Reflect.get(sa,o,l);if(o==="hasOwnProperty")return td}const s=Reflect.get(r,o,l);return(il(o)?Vs.has(o):Yu(o))||(e||ze(r,"get",o),t)?s:Se(s)?a&&cl(o)?s:s.value:Le(s)?e?ln(s):ur(s):s}}const nd=Ns(),rd=Ns(!0);function Ns(e=!1){return function(n,r,o,l){let a=n[r];if(Cn(a)&&Se(a)&&!Se(o))return!1;if(!e&&(!Mr(o)&&!Cn(o)&&(a=se(a),o=se(o)),!J(n)&&Se(a)&&!Se(o)))return a.value=o,!0;const s=J(n)&&cl(r)?Number(r)e,Gr=e=>Reflect.getPrototypeOf(e);function br(e,t,n=!1,r=!1){e=e.__v_raw;const o=se(e),l=se(t);n||(t!==l&&ze(o,"get",t),ze(o,"get",l));const{has:a}=Gr(o),s=r?hl:n?_l:tr;if(a.call(o,t))return s(e.get(t));if(a.call(o,l))return s(e.get(l));e!==o&&e.get(t)}function yr(e,t=!1){const n=this.__v_raw,r=se(n),o=se(e);return t||(e!==o&&ze(r,"has",e),ze(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Er(e,t=!1){return e=e.__v_raw,!t&&ze(se(e),"iterate",en),Reflect.get(e,"size",e)}function ia(e){e=se(e);const t=se(this);return Gr(t).has.call(t,e)||(t.add(e),Pt(t,"add",e,e)),this}function ca(e,t){t=se(t);const n=se(this),{has:r,get:o}=Gr(n);let l=r.call(n,e);l||(e=se(e),l=r.call(n,e));const a=o.call(n,e);return n.set(e,t),l?er(t,a)&&Pt(n,"set",e,t):Pt(n,"add",e,t),this}function ua(e){const t=se(this),{has:n,get:r}=Gr(t);let o=n.call(t,e);o||(e=se(e),o=n.call(t,e)),r&&r.call(t,e);const l=t.delete(e);return o&&Pt(t,"delete",e,void 0),l}function da(){const e=se(this),t=e.size!==0,n=e.clear();return t&&Pt(e,"clear",void 0,void 0),n}function wr(e,t){return function(r,o){const l=this,a=l.__v_raw,s=se(a),c=t?hl:e?_l:tr;return!e&&ze(s,"iterate",en),a.forEach((u,i)=>r.call(o,c(u),c(i),l))}}function Tr(e,t,n){return function(...r){const o=this.__v_raw,l=se(o),a=Un(l),s=e==="entries"||e===Symbol.iterator&&a,c=e==="keys"&&a,u=o[e](...r),i=n?hl:t?_l:tr;return!t&&ze(l,"iterate",c?Mo:en),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:s?[i(f[0]),i(f[1])]:i(f),done:p}},[Symbol.iterator](){return this}}}}function Rt(e){return function(...t){return e==="delete"?!1:this}}function cd(){const e={get(l){return br(this,l)},get size(){return Er(this)},has:yr,add:ia,set:ca,delete:ua,clear:da,forEach:wr(!1,!1)},t={get(l){return br(this,l,!1,!0)},get size(){return Er(this)},has:yr,add:ia,set:ca,delete:ua,clear:da,forEach:wr(!1,!0)},n={get(l){return br(this,l,!0)},get size(){return Er(this,!0)},has(l){return yr.call(this,l,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:wr(!0,!1)},r={get(l){return br(this,l,!0,!0)},get size(){return Er(this,!0)},has(l){return yr.call(this,l,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:wr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=Tr(l,!1,!1),n[l]=Tr(l,!0,!1),t[l]=Tr(l,!1,!0),r[l]=Tr(l,!0,!0)}),[e,n,t,r]}const[ud,dd,fd,pd]=cd();function ml(e,t){const n=t?e?pd:fd:e?dd:ud;return(r,o,l)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(ue(n,o)&&o in r?n:r,o,l)}const vd={get:ml(!1,!1)},hd={get:ml(!1,!0)},md={get:ml(!0,!1)},Fs=new WeakMap,Hs=new WeakMap,Bs=new WeakMap,gd=new WeakMap;function _d(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function bd(e){return e.__v_skip||!Object.isExtensible(e)?0:_d(Ru(e))}function ur(e){return Cn(e)?e:gl(e,!1,js,vd,Fs)}function zs(e){return gl(e,!1,id,hd,Hs)}function ln(e){return gl(e,!0,sd,md,Bs)}function gl(e,t,n,r,o){if(!Le(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const l=o.get(e);if(l)return l;const a=bd(e);if(a===0)return e;const s=new Proxy(e,a===2?r:n);return o.set(e,s),s}function wn(e){return Cn(e)?wn(e.__v_raw):!!(e&&e.__v_isReactive)}function Cn(e){return!!(e&&e.__v_isReadonly)}function Mr(e){return!!(e&&e.__v_isShallow)}function Ws(e){return wn(e)||Cn(e)}function se(e){const t=e&&e.__v_raw;return t?se(t):e}function Us(e){return Dr(e,"__v_skip",!0),e}const tr=e=>Le(e)?ur(e):e,_l=e=>Le(e)?ln(e):e;function bl(e){Ft&&it&&(e=se(e),Ms(e.dep||(e.dep=fl())))}function yl(e,t){e=se(e);const n=e.dep;n&&Vo(n)}function Se(e){return!!(e&&e.__v_isRef===!0)}function K(e){return Ks(e,!1)}function Oe(e){return Ks(e,!0)}function Ks(e,t){return Se(e)?e:new yd(e,t)}class yd{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:se(t),this._value=n?t:tr(t)}get value(){return bl(this),this._value}set value(t){const n=this.__v_isShallow||Mr(t)||Cn(t);t=n?t:se(t),er(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:tr(t),yl(this))}}function tn(e){return Se(e)?e.value:e}const Ed={get:(e,t,n)=>tn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Se(o)&&!Se(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function qs(e){return wn(e)?e:new Proxy(e,Ed)}class wd{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>bl(this),()=>yl(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Td(e){return new wd(e)}class Ld{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Zu(se(this._object),this._key)}}class Od{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Zr(e,t,n){return Se(e)?e:ne(e)?new Od(e):Le(e)&&arguments.length>1?Ad(e,t,n):K(e)}function Ad(e,t,n){const r=e[t];return Se(r)?r:new Ld(e,t,n)}class Pd{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new pl(t,()=>{this._dirty||(this._dirty=!0,yl(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=se(this);return bl(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Cd(e,t,n=!1){let r,o;const l=ne(e);return l?(r=e,o=ut):(r=e.get,o=e.set),new Pd(r,o,l||!o,n)}function Ht(e,t,n,r){let o;try{o=r?e(...r):e()}catch(l){dr(l,t,n)}return o}function et(e,t,n,r){if(ne(e)){const l=Ht(e,t,n,r);return l&&xs(l)&&l.catch(a=>{dr(a,t,n)}),l}const o=[];for(let l=0;l>>1;rr($e[r])gt&&$e.splice(t,1)}function Rd(e){J(e)?Tn.push(...e):(!Ot||!Ot.includes(e,e.allowRecurse?Xt+1:Xt))&&Tn.push(e),Zs()}function fa(e,t=nr?gt+1:0){for(;t<$e.length;t++){const n=$e[t];n&&n.pre&&($e.splice(t,1),t--,n())}}function Vr(e){if(Tn.length){const t=[...new Set(Tn)];if(Tn.length=0,Ot){Ot.push(...t);return}for(Ot=t,Ot.sort((n,r)=>rr(n)-rr(r)),Xt=0;Xte.id==null?1/0:e.id,Sd=(e,t)=>{const n=rr(e)-rr(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ys(e){No=!1,nr=!0,$e.sort(Sd);const t=ut;try{for(gt=0;gt<$e.length;gt++){const n=$e[gt];n&&n.active!==!1&&Ht(n,null,14)}}finally{gt=0,$e.length=0,Vr(),nr=!1,El=null,($e.length||Tn.length)&&Ys()}}function Dd(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Te;let o=n;const l=t.startsWith("update:"),a=l&&t.slice(7);if(a&&a in r){const i=`${a==="modelValue"?"model":a}Modifiers`,{number:f,trim:p}=r[i]||Te;p&&(o=n.map(v=>pe(v)?v.trim():v)),f&&(o=n.map(Mu))}let s,c=r[s=io(t)]||r[s=io(tt(t))];!c&&l&&(c=r[s=io($n(t))]),c&&et(c,e,6,o);const u=r[s+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,et(u,e,6,o)}}function Xs(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const l=e.emits;let a={},s=!1;if(!ne(e)){const c=u=>{const i=Xs(u,t,!0);i&&(s=!0,Ce(a,i))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!l&&!s?(Le(e)&&r.set(e,null),null):(J(l)?l.forEach(c=>a[c]=null):Ce(a,l),Le(e)&&r.set(e,a),a)}function Xr(e,t){return!e||!ir(t)?!1:(t=t.slice(2).replace(/Once$/,""),ue(e,t[0].toLowerCase()+t.slice(1))||ue(e,$n(t))||ue(e,t))}let Qe=null,Js=null;function Nr(e){const t=Qe;return Qe=e,Js=e&&e.type.__scopeId||null,t}function $d(e,t=Qe,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&La(-1);const l=Nr(t);let a;try{a=e(...o)}finally{Nr(l),r._d&&La(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function uo(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:l,propsOptions:[a],slots:s,attrs:c,emit:u,render:i,renderCache:f,data:p,setupState:v,ctx:_,inheritAttrs:w}=e;let T,g;const y=Nr(e);try{if(n.shapeFlag&4){const R=o||r;T=st(i.call(R,R,f,l,v,p,_)),g=c}else{const R=t;T=st(R.length>1?R(l,{attrs:c,slots:s,emit:u}):R(l,null)),g=t.props?c:Md(c)}}catch(R){Yn.length=0,dr(R,e,1),T=De(_t)}let D=T;if(g&&w!==!1){const R=Object.keys(g),{shapeFlag:U}=D;R.length&&U&7&&(a&&R.some(al)&&(g=Vd(g,a)),D=zt(D,g))}return n.dirs&&(D=zt(D),D.dirs=D.dirs?D.dirs.concat(n.dirs):n.dirs),n.transition&&(D.transition=n.transition),T=D,Nr(y),T}const Md=e=>{let t;for(const n in e)(n==="class"||n==="style"||ir(n))&&((t||(t={}))[n]=e[n]);return t},Vd=(e,t)=>{const n={};for(const r in e)(!al(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Nd(e,t,n){const{props:r,children:o,component:l}=e,{props:a,children:s,patchFlag:c}=t,u=l.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?pa(r,a,u):!!a;if(c&8){const i=t.dynamicProps;for(let f=0;fe.__isSuspense;function Qs(e,t){t&&t.pendingBranch?J(e)?t.effects.push(...e):t.effects.push(e):Rd(e)}function ei(e,t){return wl(e,null,t)}const Lr={};function ae(e,t,n){return wl(e,t,n)}function wl(e,t,{immediate:n,deep:r,flush:o,onTrack:l,onTrigger:a}=Te){var s;const c=Rs()===((s=Re)==null?void 0:s.scope)?Re:null;let u,i=!1,f=!1;if(Se(e)?(u=()=>e.value,i=Mr(e)):wn(e)?(u=()=>e,r=!0):J(e)?(f=!0,i=e.some(R=>wn(R)||Mr(R)),u=()=>e.map(R=>{if(Se(R))return R.value;if(wn(R))return gn(R);if(ne(R))return Ht(R,c,2)})):ne(e)?t?u=()=>Ht(e,c,2):u=()=>{if(!(c&&c.isUnmounted))return p&&p(),et(e,c,3,[v])}:u=ut,t&&r){const R=u;u=()=>gn(R())}let p,v=R=>{p=y.onStop=()=>{Ht(R,c,4)}},_;if(In)if(v=ut,t?n&&et(t,c,3,[u(),f?[]:void 0,v]):u(),o==="sync"){const R=$f();_=R.__watcherHandles||(R.__watcherHandles=[])}else return ut;let w=f?new Array(e.length).fill(Lr):Lr;const T=()=>{if(y.active)if(t){const R=y.run();(r||i||(f?R.some((U,x)=>er(U,w[x])):er(R,w)))&&(p&&p(),et(t,c,3,[R,w===Lr?void 0:f&&w[0]===Lr?[]:w,v]),w=R)}else y.run()};T.allowRecurse=!!t;let g;o==="sync"?g=T:o==="post"?g=()=>Fe(T,c&&c.suspense):(T.pre=!0,c&&(T.id=c.uid),g=()=>Yr(T));const y=new pl(u,g);t?n?T():w=y.run():o==="post"?Fe(y.run.bind(y),c&&c.suspense):y.run();const D=()=>{y.stop(),c&&c.scope&&sl(c.scope.effects,y)};return _&&_.push(D),D}function Hd(e,t,n){const r=this.proxy,o=pe(e)?e.includes(".")?ti(r,e):()=>r[e]:e.bind(r,r);let l;ne(t)?l=t:(l=t.handler,n=t);const a=Re;xn(this);const s=wl(o,l.bind(r),n);return a?xn(a):rn(),s}function ti(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{gn(n,t)});else if(Su(e))for(const n in e)gn(e[n],t);return e}function mt(e,t,n,r){const o=e.dirs,l=t&&t.dirs;for(let a=0;a{e.isMounted=!0}),Ll(()=>{e.isUnmounting=!0}),e}const Ye=[Function,Array],ri={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ye,onEnter:Ye,onAfterEnter:Ye,onEnterCancelled:Ye,onBeforeLeave:Ye,onLeave:Ye,onAfterLeave:Ye,onLeaveCancelled:Ye,onBeforeAppear:Ye,onAppear:Ye,onAfterAppear:Ye,onAppearCancelled:Ye},Bd={name:"BaseTransition",props:ri,setup(e,{slots:t}){const n=sn(),r=ni();let o;return()=>{const l=t.default&&Tl(t.default(),!0);if(!l||!l.length)return;let a=l[0];if(l.length>1){for(const w of l)if(w.type!==_t){a=w;break}}const s=se(e),{mode:c}=s;if(r.isLeaving)return fo(a);const u=va(a);if(!u)return fo(a);const i=or(u,s,r,n);lr(u,i);const f=n.subTree,p=f&&va(f);let v=!1;const{getTransitionKey:_}=u.type;if(_){const w=_();o===void 0?o=w:w!==o&&(o=w,v=!0)}if(p&&p.type!==_t&&(!Jt(u,p)||v)){const w=or(p,s,r,n);if(lr(p,w),c==="out-in")return r.isLeaving=!0,w.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},fo(a);c==="in-out"&&u.type!==_t&&(w.delayLeave=(T,g,y)=>{const D=oi(r,p);D[String(p.key)]=p,T._leaveCb=()=>{g(),T._leaveCb=void 0,delete i.delayedLeave},i.delayedLeave=y})}return a}}},zd=Bd;function oi(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function or(e,t,n,r){const{appear:o,mode:l,persisted:a=!1,onBeforeEnter:s,onEnter:c,onAfterEnter:u,onEnterCancelled:i,onBeforeLeave:f,onLeave:p,onAfterLeave:v,onLeaveCancelled:_,onBeforeAppear:w,onAppear:T,onAfterAppear:g,onAppearCancelled:y}=t,D=String(e.key),R=oi(n,e),U=(O,B)=>{O&&et(O,r,9,B)},x=(O,B)=>{const z=B[1];U(O,B),J(O)?O.every(re=>re.length<=1)&&z():O.length<=1&&z()},M={mode:l,persisted:a,beforeEnter(O){let B=s;if(!n.isMounted)if(o)B=w||s;else return;O._leaveCb&&O._leaveCb(!0);const z=R[D];z&&Jt(e,z)&&z.el._leaveCb&&z.el._leaveCb(),U(B,[O])},enter(O){let B=c,z=u,re=i;if(!n.isMounted)if(o)B=T||c,z=g||u,re=y||i;else return;let W=!1;const Q=O._enterCb=q=>{W||(W=!0,q?U(re,[O]):U(z,[O]),M.delayedLeave&&M.delayedLeave(),O._enterCb=void 0)};B?x(B,[O,Q]):Q()},leave(O,B){const z=String(e.key);if(O._enterCb&&O._enterCb(!0),n.isUnmounting)return B();U(f,[O]);let re=!1;const W=O._leaveCb=Q=>{re||(re=!0,B(),Q?U(_,[O]):U(v,[O]),O._leaveCb=void 0,R[z]===e&&delete R[z])};R[z]=e,p?x(p,[O,W]):W()},clone(O){return or(O,t,n,r)}};return M}function fo(e){if(fr(e))return e=zt(e),e.children=null,e}function va(e){return fr(e)?e.children?e.children[0]:void 0:e}function lr(e,t){e.shapeFlag&6&&e.component?lr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Tl(e,t=!1,n){let r=[],o=0;for(let l=0;l1)for(let l=0;lCe({name:e.name},t,{setup:e}))():e}const qn=e=>!!e.type.__asyncLoader;function S(e){ne(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:l,suspensible:a=!0,onError:s}=e;let c=null,u,i=0;const f=()=>(i++,c=null,p()),p=()=>{let v;return c||(v=c=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),s)return new Promise((w,T)=>{s(_,()=>w(f()),()=>T(_),i+1)});throw _}).then(_=>v!==c&&c?c:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),u=_,_)))};return H({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return u},setup(){const v=Re;if(u)return()=>po(u,v);const _=y=>{c=null,dr(y,v,13,!r)};if(a&&v.suspense||In)return p().then(y=>()=>po(y,v)).catch(y=>(_(y),()=>r?De(r,{error:y}):null));const w=K(!1),T=K(),g=K(!!o);return o&&setTimeout(()=>{g.value=!1},o),l!=null&&setTimeout(()=>{if(!w.value&&!T.value){const y=new Error(`Async component timed out after ${l}ms.`);_(y),T.value=y}},l),p().then(()=>{w.value=!0,v.parent&&fr(v.parent.vnode)&&Yr(v.parent.update)}).catch(y=>{_(y),T.value=y}),()=>{if(w.value&&u)return po(u,v);if(T.value&&r)return De(r,{error:T.value});if(n&&!g.value)return De(n)}}})}function po(e,t){const{ref:n,props:r,children:o,ce:l}=t.vnode,a=De(e,r,o);return a.ref=n,a.ce=l,delete t.vnode.ce,a}const fr=e=>e.type.__isKeepAlive;function Wd(e,t){li(e,"a",t)}function Ud(e,t){li(e,"da",t)}function li(e,t,n=Re){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Jr(t,r,n),n){let o=n.parent;for(;o&&o.parent;)fr(o.parent.vnode)&&Kd(r,t,n,o),o=o.parent}}function Kd(e,t,n,r){const o=Jr(t,e,r,!0);kt(()=>{sl(r[t],o)},n)}function Jr(e,t,n=Re,r=!1){if(n){const o=n[e]||(n[e]=[]),l=t.__weh||(t.__weh=(...a)=>{if(n.isUnmounted)return;Mn(),xn(n);const s=et(t,n,e,a);return rn(),Vn(),s});return r?o.unshift(l):o.push(l),l}}const Ct=e=>(t,n=Re)=>(!In||e==="sp")&&Jr(e,(...r)=>t(...r),n),qd=Ct("bm"),de=Ct("m"),Gd=Ct("bu"),ai=Ct("u"),Ll=Ct("bum"),kt=Ct("um"),Zd=Ct("sp"),Yd=Ct("rtg"),Xd=Ct("rtc");function Jd(e,t=Re){Jr("ec",e,t)}const si="components";function dt(e,t){return ef(si,e,!0,t)||e}const Qd=Symbol.for("v-ndc");function ef(e,t,n=!0,r=!1){const o=Qe||Re;if(o){const l=o.type;if(e===si){const s=Rf(l,!1);if(s&&(s===t||s===tt(t)||s===cr(tt(t))))return l}const a=ha(o[e]||l[e],t)||ha(o.appContext[e],t);return!a&&r?l:a}}function ha(e,t){return e&&(e[t]||e[tt(t)]||e[cr(tt(t))])}const jo=e=>e?bi(e)?kl(e)||e.proxy:jo(e.parent):null,Gn=Ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>jo(e.parent),$root:e=>jo(e.root),$emit:e=>e.emit,$options:e=>Ol(e),$forceUpdate:e=>e.f||(e.f=()=>Yr(e.update)),$nextTick:e=>e.n||(e.n=an.bind(e.proxy)),$watch:e=>Hd.bind(e)}),vo=(e,t)=>e!==Te&&!e.__isScriptSetup&&ue(e,t),tf={get({_:e},t){const{ctx:n,setupState:r,data:o,props:l,accessCache:a,type:s,appContext:c}=e;let u;if(t[0]!=="$"){const v=a[t];if(v!==void 0)switch(v){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return l[t]}else{if(vo(r,t))return a[t]=1,r[t];if(o!==Te&&ue(o,t))return a[t]=2,o[t];if((u=e.propsOptions[0])&&ue(u,t))return a[t]=3,l[t];if(n!==Te&&ue(n,t))return a[t]=4,n[t];Fo&&(a[t]=0)}}const i=Gn[t];let f,p;if(i)return t==="$attrs"&&ze(e,"get",t),i(e);if((f=s.__cssModules)&&(f=f[t]))return f;if(n!==Te&&ue(n,t))return a[t]=4,n[t];if(p=c.config.globalProperties,ue(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:l}=e;return vo(o,t)?(o[t]=n,!0):r!==Te&&ue(r,t)?(r[t]=n,!0):ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(l[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:l}},a){let s;return!!n[a]||e!==Te&&ue(e,a)||vo(t,a)||(s=l[0])&&ue(s,a)||ue(r,a)||ue(Gn,a)||ue(o.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ue(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ma(e){return J(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Fo=!0;function nf(e){const t=Ol(e),n=e.proxy,r=e.ctx;Fo=!1,t.beforeCreate&&ga(t.beforeCreate,e,"bc");const{data:o,computed:l,methods:a,watch:s,provide:c,inject:u,created:i,beforeMount:f,mounted:p,beforeUpdate:v,updated:_,activated:w,deactivated:T,beforeDestroy:g,beforeUnmount:y,destroyed:D,unmounted:R,render:U,renderTracked:x,renderTriggered:M,errorCaptured:O,serverPrefetch:B,expose:z,inheritAttrs:re,components:W,directives:Q,filters:q}=t;if(u&&rf(u,r,null),a)for(const fe in a){const te=a[fe];ne(te)&&(r[fe]=te.bind(n))}if(o){const fe=o.call(n,n);Le(fe)&&(e.data=ur(fe))}if(Fo=!0,l)for(const fe in l){const te=l[fe],ot=ne(te)?te.bind(n,n):ne(te.get)?te.get.bind(n,n):ut,vt=!ne(te)&&ne(te.set)?te.set.bind(n):ut,je=A({get:ot,set:vt});Object.defineProperty(r,fe,{enumerable:!0,configurable:!0,get:()=>je.value,set:Ae=>je.value=Ae})}if(s)for(const fe in s)ii(s[fe],r,n,fe);if(c){const fe=ne(c)?c.call(n):c;Reflect.ownKeys(fe).forEach(te=>{nn(te,fe[te])})}i&&ga(i,e,"c");function oe(fe,te){J(te)?te.forEach(ot=>fe(ot.bind(n))):te&&fe(te.bind(n))}if(oe(qd,f),oe(de,p),oe(Gd,v),oe(ai,_),oe(Wd,w),oe(Ud,T),oe(Jd,O),oe(Xd,x),oe(Yd,M),oe(Ll,y),oe(kt,R),oe(Zd,B),J(z))if(z.length){const fe=e.exposed||(e.exposed={});z.forEach(te=>{Object.defineProperty(fe,te,{get:()=>n[te],set:ot=>n[te]=ot})})}else e.exposed||(e.exposed={});U&&e.render===ut&&(e.render=U),re!=null&&(e.inheritAttrs=re),W&&(e.components=W),Q&&(e.directives=Q)}function rf(e,t,n=ut){J(e)&&(e=Ho(e));for(const r in e){const o=e[r];let l;Le(o)?"default"in o?l=ye(o.from||r,o.default,!0):l=ye(o.from||r):l=ye(o),Se(l)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>l.value,set:a=>l.value=a}):t[r]=l}}function ga(e,t,n){et(J(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function ii(e,t,n,r){const o=r.includes(".")?ti(n,r):()=>n[r];if(pe(e)){const l=t[e];ne(l)&&ae(o,l)}else if(ne(e))ae(o,e.bind(n));else if(Le(e))if(J(e))e.forEach(l=>ii(l,t,n,r));else{const l=ne(e.handler)?e.handler.bind(n):t[e.handler];ne(l)&&ae(o,l,e)}}function Ol(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:l,config:{optionMergeStrategies:a}}=e.appContext,s=l.get(t);let c;return s?c=s:!o.length&&!n&&!r?c=t:(c={},o.length&&o.forEach(u=>jr(c,u,a,!0)),jr(c,t,a)),Le(t)&&l.set(t,c),c}function jr(e,t,n,r=!1){const{mixins:o,extends:l}=t;l&&jr(e,l,n,!0),o&&o.forEach(a=>jr(e,a,n,!0));for(const a in t)if(!(r&&a==="expose")){const s=of[a]||n&&n[a];e[a]=s?s(e[a],t[a]):t[a]}return e}const of={data:_a,props:ba,emits:ba,methods:Wn,computed:Wn,beforeCreate:Me,created:Me,beforeMount:Me,mounted:Me,beforeUpdate:Me,updated:Me,beforeDestroy:Me,beforeUnmount:Me,destroyed:Me,unmounted:Me,activated:Me,deactivated:Me,errorCaptured:Me,serverPrefetch:Me,components:Wn,directives:Wn,watch:af,provide:_a,inject:lf};function _a(e,t){return t?e?function(){return Ce(ne(e)?e.call(this,this):e,ne(t)?t.call(this,this):t)}:t:e}function lf(e,t){return Wn(Ho(e),Ho(t))}function Ho(e){if(J(e)){const t={};for(let n=0;n1)return n&&ne(t)?t.call(r&&r.proxy):t}}function uf(e,t,n,r=!1){const o={},l={};Dr(l,Qr,1),e.propsDefaults=Object.create(null),ui(e,t,o,l);for(const a in e.propsOptions[0])a in o||(o[a]=void 0);n?e.props=r?o:zs(o):e.type.props?e.props=o:e.props=l,e.attrs=l}function df(e,t,n,r){const{props:o,attrs:l,vnode:{patchFlag:a}}=e,s=se(o),[c]=e.propsOptions;let u=!1;if((r||a>0)&&!(a&16)){if(a&8){const i=e.vnode.dynamicProps;for(let f=0;f{c=!0;const[p,v]=di(f,t,!0);Ce(a,p),v&&s.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}if(!l&&!c)return Le(e)&&r.set(e,En),En;if(J(l))for(let i=0;i-1,v[1]=w<0||_-1||ue(v,"default"))&&s.push(f)}}}const u=[a,s];return Le(e)&&r.set(e,u),u}function ya(e){return e[0]!=="$"}function Ea(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function wa(e,t){return Ea(e)===Ea(t)}function Ta(e,t){return J(t)?t.findIndex(n=>wa(n,e)):ne(t)&&wa(t,e)?0:-1}const fi=e=>e[0]==="_"||e==="$stable",Al=e=>J(e)?e.map(st):[st(e)],ff=(e,t,n)=>{if(t._n)return t;const r=$d((...o)=>Al(t(...o)),n);return r._c=!1,r},pi=(e,t,n)=>{const r=e._ctx;for(const o in e){if(fi(o))continue;const l=e[o];if(ne(l))t[o]=ff(o,l,r);else if(l!=null){const a=Al(l);t[o]=()=>a}}},vi=(e,t)=>{const n=Al(t);e.slots.default=()=>n},pf=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=se(t),Dr(t,"_",n)):pi(t,e.slots={})}else e.slots={},t&&vi(e,t);Dr(e.slots,Qr,1)},vf=(e,t,n)=>{const{vnode:r,slots:o}=e;let l=!0,a=Te;if(r.shapeFlag&32){const s=t._;s?n&&s===1?l=!1:(Ce(o,t),!n&&s===1&&delete o._):(l=!t.$stable,pi(t,o)),a=t}else t&&(vi(e,t),a={default:1});if(l)for(const s in o)!fi(s)&&!(s in a)&&delete o[s]};function Hr(e,t,n,r,o=!1){if(J(e)){e.forEach((p,v)=>Hr(p,t&&(J(t)?t[v]:t),n,r,o));return}if(qn(r)&&!o)return;const l=r.shapeFlag&4?kl(r.component)||r.component.proxy:r.el,a=o?null:l,{i:s,r:c}=e,u=t&&t.r,i=s.refs===Te?s.refs={}:s.refs,f=s.setupState;if(u!=null&&u!==c&&(pe(u)?(i[u]=null,ue(f,u)&&(f[u]=null)):Se(u)&&(u.value=null)),ne(c))Ht(c,s,12,[a,i]);else{const p=pe(c),v=Se(c);if(p||v){const _=()=>{if(e.f){const w=p?ue(f,c)?f[c]:i[c]:c.value;o?J(w)&&sl(w,l):J(w)?w.includes(l)||w.push(l):p?(i[c]=[l],ue(f,c)&&(f[c]=i[c])):(c.value=[l],e.k&&(i[e.k]=c.value))}else p?(i[c]=a,ue(f,c)&&(f[c]=a)):v&&(c.value=a,e.k&&(i[e.k]=a))};a?(_.id=-1,Fe(_,n)):_()}}}let St=!1;const Or=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Ar=e=>e.nodeType===8;function hf(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:l,parentNode:a,remove:s,insert:c,createComment:u}}=e,i=(g,y)=>{if(!y.hasChildNodes()){n(null,g,y),Vr(),y._vnode=g;return}St=!1,f(y.firstChild,g,null,null,null),Vr(),y._vnode=g,St&&console.error("Hydration completed but contains mismatches.")},f=(g,y,D,R,U,x=!1)=>{const M=Ar(g)&&g.data==="[",O=()=>w(g,y,D,R,U,M),{type:B,ref:z,shapeFlag:re,patchFlag:W}=y;let Q=g.nodeType;y.el=g,W===-2&&(x=!1,y.dynamicChildren=null);let q=null;switch(B){case kn:Q!==3?y.children===""?(c(y.el=o(""),a(g),g),q=g):q=O():(g.data!==y.children&&(St=!0,g.data=y.children),q=l(g));break;case _t:Q!==8||M?q=O():q=l(g);break;case Zn:if(M&&(g=l(g),Q=g.nodeType),Q===1||Q===3){q=g;const we=!y.children.length;for(let oe=0;oe{x=x||!!y.dynamicChildren;const{type:M,props:O,patchFlag:B,shapeFlag:z,dirs:re}=y,W=M==="input"&&re||M==="option";if(W||B!==-1){if(re&&mt(y,null,D,"created"),O)if(W||!x||B&48)for(const q in O)(W&&q.endsWith("value")||ir(q)&&!Kn(q))&&r(g,q,null,O[q],!1,void 0,D);else O.onClick&&r(g,"onClick",null,O.onClick,!1,void 0,D);let Q;if((Q=O&&O.onVnodeBeforeMount)&&Xe(Q,D,y),re&&mt(y,null,D,"beforeMount"),((Q=O&&O.onVnodeMounted)||re)&&Qs(()=>{Q&&Xe(Q,D,y),re&&mt(y,null,D,"mounted")},R),z&16&&!(O&&(O.innerHTML||O.textContent))){let q=v(g.firstChild,y,g,D,R,U,x);for(;q;){St=!0;const we=q;q=q.nextSibling,s(we)}}else z&8&&g.textContent!==y.children&&(St=!0,g.textContent=y.children)}return g.nextSibling},v=(g,y,D,R,U,x,M)=>{M=M||!!y.dynamicChildren;const O=y.children,B=O.length;for(let z=0;z{const{slotScopeIds:M}=y;M&&(U=U?U.concat(M):M);const O=a(g),B=v(l(g),y,O,D,R,U,x);return B&&Ar(B)&&B.data==="]"?l(y.anchor=B):(St=!0,c(y.anchor=u("]"),O,B),B)},w=(g,y,D,R,U,x)=>{if(St=!0,y.el=null,x){const B=T(g);for(;;){const z=l(g);if(z&&z!==B)s(z);else break}}const M=l(g),O=a(g);return s(g),n(null,y,O,M,D,R,Or(O),U),M},T=g=>{let y=0;for(;g;)if(g=l(g),g&&Ar(g)&&(g.data==="["&&y++,g.data==="]")){if(y===0)return l(g);y--}return g};return[i,f]}const Fe=Qs;function mf(e){return gf(e,hf)}function gf(e,t){const n=Do();n.__VUE__=!0;const{insert:r,remove:o,patchProp:l,createElement:a,createText:s,createComment:c,setText:u,setElementText:i,parentNode:f,nextSibling:p,setScopeId:v=ut,insertStaticContent:_}=e,w=(h,m,E,L=null,C=null,k=null,j=!1,$=null,N=!!m.dynamicChildren)=>{if(h===m)return;h&&!Jt(h,m)&&(L=P(h),Ae(h,C,k,!0),h=null),m.patchFlag===-2&&(N=!1,m.dynamicChildren=null);const{type:I,ref:Y,shapeFlag:G}=m;switch(I){case kn:T(h,m,E,L);break;case _t:g(h,m,E,L);break;case Zn:h==null&&y(m,E,L,j);break;case Ke:W(h,m,E,L,C,k,j,$,N);break;default:G&1?U(h,m,E,L,C,k,j,$,N):G&6?Q(h,m,E,L,C,k,j,$,N):(G&64||G&128)&&I.process(h,m,E,L,C,k,j,$,N,V)}Y!=null&&C&&Hr(Y,h&&h.ref,k,m||h,!m)},T=(h,m,E,L)=>{if(h==null)r(m.el=s(m.children),E,L);else{const C=m.el=h.el;m.children!==h.children&&u(C,m.children)}},g=(h,m,E,L)=>{h==null?r(m.el=c(m.children||""),E,L):m.el=h.el},y=(h,m,E,L)=>{[h.el,h.anchor]=_(h.children,m,E,L,h.el,h.anchor)},D=({el:h,anchor:m},E,L)=>{let C;for(;h&&h!==m;)C=p(h),r(h,E,L),h=C;r(m,E,L)},R=({el:h,anchor:m})=>{let E;for(;h&&h!==m;)E=p(h),o(h),h=E;o(m)},U=(h,m,E,L,C,k,j,$,N)=>{j=j||m.type==="svg",h==null?x(m,E,L,C,k,j,$,N):B(h,m,C,k,j,$,N)},x=(h,m,E,L,C,k,j,$)=>{let N,I;const{type:Y,props:G,shapeFlag:X,transition:ee,dirs:le}=h;if(N=h.el=a(h.type,k,G&&G.is,G),X&8?i(N,h.children):X&16&&O(h.children,N,null,L,C,k&&Y!=="foreignObject",j,$),le&&mt(h,null,L,"created"),M(N,h,h.scopeId,j,L),G){for(const he in G)he!=="value"&&!Kn(he)&&l(N,he,null,G[he],k,h.children,L,C,ke);"value"in G&&l(N,"value",null,G.value),(I=G.onVnodeBeforeMount)&&Xe(I,L,h)}le&&mt(h,null,L,"beforeMount");const be=(!C||C&&!C.pendingBranch)&&ee&&!ee.persisted;be&&ee.beforeEnter(N),r(N,m,E),((I=G&&G.onVnodeMounted)||be||le)&&Fe(()=>{I&&Xe(I,L,h),be&&ee.enter(N),le&&mt(h,null,L,"mounted")},C)},M=(h,m,E,L,C)=>{if(E&&v(h,E),L)for(let k=0;k{for(let I=N;I{const $=m.el=h.el;let{patchFlag:N,dynamicChildren:I,dirs:Y}=m;N|=h.patchFlag&16;const G=h.props||Te,X=m.props||Te;let ee;E&&Zt(E,!1),(ee=X.onVnodeBeforeUpdate)&&Xe(ee,E,m,h),Y&&mt(m,h,E,"beforeUpdate"),E&&Zt(E,!0);const le=C&&m.type!=="foreignObject";if(I?z(h.dynamicChildren,I,$,E,L,le,k):j||te(h,m,$,null,E,L,le,k,!1),N>0){if(N&16)re($,m,G,X,E,L,C);else if(N&2&&G.class!==X.class&&l($,"class",null,X.class,C),N&4&&l($,"style",G.style,X.style,C),N&8){const be=m.dynamicProps;for(let he=0;he{ee&&Xe(ee,E,m,h),Y&&mt(m,h,E,"updated")},L)},z=(h,m,E,L,C,k,j)=>{for(let $=0;${if(E!==L){if(E!==Te)for(const $ in E)!Kn($)&&!($ in L)&&l(h,$,E[$],null,j,m.children,C,k,ke);for(const $ in L){if(Kn($))continue;const N=L[$],I=E[$];N!==I&&$!=="value"&&l(h,$,I,N,j,m.children,C,k,ke)}"value"in L&&l(h,"value",E.value,L.value)}},W=(h,m,E,L,C,k,j,$,N)=>{const I=m.el=h?h.el:s(""),Y=m.anchor=h?h.anchor:s("");let{patchFlag:G,dynamicChildren:X,slotScopeIds:ee}=m;ee&&($=$?$.concat(ee):ee),h==null?(r(I,E,L),r(Y,E,L),O(m.children,E,Y,C,k,j,$,N)):G>0&&G&64&&X&&h.dynamicChildren?(z(h.dynamicChildren,X,E,C,k,j,$),(m.key!=null||C&&m===C.subTree)&&hi(h,m,!0)):te(h,m,E,Y,C,k,j,$,N)},Q=(h,m,E,L,C,k,j,$,N)=>{m.slotScopeIds=$,h==null?m.shapeFlag&512?C.ctx.activate(m,E,L,j,N):q(m,E,L,C,k,j,N):we(h,m,N)},q=(h,m,E,L,C,k,j)=>{const $=h.component=Pf(h,L,C);if(fr(h)&&($.ctx.renderer=V),Cf($),$.asyncDep){if(C&&C.registerDep($,oe),!h.el){const N=$.subTree=De(_t);g(null,N,m,E)}return}oe($,h,m,E,C,k,j)},we=(h,m,E)=>{const L=m.component=h.component;if(Nd(h,m,E))if(L.asyncDep&&!L.asyncResolved){fe(L,m,E);return}else L.next=m,Id(L.update),L.update();else m.el=h.el,L.vnode=m},oe=(h,m,E,L,C,k,j)=>{const $=()=>{if(h.isMounted){let{next:Y,bu:G,u:X,parent:ee,vnode:le}=h,be=Y,he;Zt(h,!1),Y?(Y.el=le.el,fe(h,Y,j)):Y=le,G&&co(G),(he=Y.props&&Y.props.onVnodeBeforeUpdate)&&Xe(he,ee,Y,le),Zt(h,!0);const xe=uo(h),lt=h.subTree;h.subTree=xe,w(lt,xe,f(lt.el),P(lt),h,C,k),Y.el=xe.el,be===null&&jd(h,xe.el),X&&Fe(X,C),(he=Y.props&&Y.props.onVnodeUpdated)&&Fe(()=>Xe(he,ee,Y,le),C)}else{let Y;const{el:G,props:X}=m,{bm:ee,m:le,parent:be}=h,he=qn(m);if(Zt(h,!1),ee&&co(ee),!he&&(Y=X&&X.onVnodeBeforeMount)&&Xe(Y,be,m),Zt(h,!0),G&&ie){const xe=()=>{h.subTree=uo(h),ie(G,h.subTree,h,C,null)};he?m.type.__asyncLoader().then(()=>!h.isUnmounted&&xe()):xe()}else{const xe=h.subTree=uo(h);w(null,xe,E,L,h,C,k),m.el=xe.el}if(le&&Fe(le,C),!he&&(Y=X&&X.onVnodeMounted)){const xe=m;Fe(()=>Xe(Y,be,xe),C)}(m.shapeFlag&256||be&&qn(be.vnode)&&be.vnode.shapeFlag&256)&&h.a&&Fe(h.a,C),h.isMounted=!0,m=E=L=null}},N=h.effect=new pl($,()=>Yr(I),h.scope),I=h.update=()=>N.run();I.id=h.uid,Zt(h,!0),I()},fe=(h,m,E)=>{m.component=h;const L=h.vnode.props;h.vnode=m,h.next=null,df(h,m.props,L,E),vf(h,m.children,E),Mn(),fa(),Vn()},te=(h,m,E,L,C,k,j,$,N=!1)=>{const I=h&&h.children,Y=h?h.shapeFlag:0,G=m.children,{patchFlag:X,shapeFlag:ee}=m;if(X>0){if(X&128){vt(I,G,E,L,C,k,j,$,N);return}else if(X&256){ot(I,G,E,L,C,k,j,$,N);return}}ee&8?(Y&16&&ke(I,C,k),G!==I&&i(E,G)):Y&16?ee&16?vt(I,G,E,L,C,k,j,$,N):ke(I,C,k,!0):(Y&8&&i(E,""),ee&16&&O(G,E,L,C,k,j,$,N))},ot=(h,m,E,L,C,k,j,$,N)=>{h=h||En,m=m||En;const I=h.length,Y=m.length,G=Math.min(I,Y);let X;for(X=0;XY?ke(h,C,k,!0,!1,G):O(m,E,L,C,k,j,$,N,G)},vt=(h,m,E,L,C,k,j,$,N)=>{let I=0;const Y=m.length;let G=h.length-1,X=Y-1;for(;I<=G&&I<=X;){const ee=h[I],le=m[I]=N?Vt(m[I]):st(m[I]);if(Jt(ee,le))w(ee,le,E,null,C,k,j,$,N);else break;I++}for(;I<=G&&I<=X;){const ee=h[G],le=m[X]=N?Vt(m[X]):st(m[X]);if(Jt(ee,le))w(ee,le,E,null,C,k,j,$,N);else break;G--,X--}if(I>G){if(I<=X){const ee=X+1,le=eeX)for(;I<=G;)Ae(h[I],C,k,!0),I++;else{const ee=I,le=I,be=new Map;for(I=le;I<=X;I++){const We=m[I]=N?Vt(m[I]):st(m[I]);We.key!=null&&be.set(We.key,I)}let he,xe=0;const lt=X-le+1;let pn=!1,ea=0;const Fn=new Array(lt);for(I=0;I=lt){Ae(We,C,k,!0);continue}let ht;if(We.key!=null)ht=be.get(We.key);else for(he=le;he<=X;he++)if(Fn[he-le]===0&&Jt(We,m[he])){ht=he;break}ht===void 0?Ae(We,C,k,!0):(Fn[ht-le]=I+1,ht>=ea?ea=ht:pn=!0,w(We,m[ht],E,null,C,k,j,$,N),xe++)}const ta=pn?_f(Fn):En;for(he=ta.length-1,I=lt-1;I>=0;I--){const We=le+I,ht=m[We],na=We+1{const{el:k,type:j,transition:$,children:N,shapeFlag:I}=h;if(I&6){je(h.component.subTree,m,E,L);return}if(I&128){h.suspense.move(m,E,L);return}if(I&64){j.move(h,m,E,V);return}if(j===Ke){r(k,m,E);for(let G=0;G$.enter(k),C);else{const{leave:G,delayLeave:X,afterLeave:ee}=$,le=()=>r(k,m,E),be=()=>{G(k,()=>{le(),ee&&ee()})};X?X(k,le,be):be()}else r(k,m,E)},Ae=(h,m,E,L=!1,C=!1)=>{const{type:k,props:j,ref:$,children:N,dynamicChildren:I,shapeFlag:Y,patchFlag:G,dirs:X}=h;if($!=null&&Hr($,null,E,h,!0),Y&256){m.ctx.deactivate(h);return}const ee=Y&1&&X,le=!qn(h);let be;if(le&&(be=j&&j.onVnodeBeforeUnmount)&&Xe(be,m,h),Y&6)It(h.component,E,L);else{if(Y&128){h.suspense.unmount(E,L);return}ee&&mt(h,null,m,"beforeUnmount"),Y&64?h.type.remove(h,m,E,C,V,L):I&&(k!==Ke||G>0&&G&64)?ke(I,m,E,!1,!0):(k===Ke&&G&384||!C&&Y&16)&&ke(N,m,E),L&&yt(h)}(le&&(be=j&&j.onVnodeUnmounted)||ee)&&Fe(()=>{be&&Xe(be,m,h),ee&&mt(h,null,m,"unmounted")},E)},yt=h=>{const{type:m,el:E,anchor:L,transition:C}=h;if(m===Ke){Ze(E,L);return}if(m===Zn){R(h);return}const k=()=>{o(E),C&&!C.persisted&&C.afterLeave&&C.afterLeave()};if(h.shapeFlag&1&&C&&!C.persisted){const{leave:j,delayLeave:$}=C,N=()=>j(E,k);$?$(h.el,k,N):N()}else k()},Ze=(h,m)=>{let E;for(;h!==m;)E=p(h),o(h),h=E;o(m)},It=(h,m,E)=>{const{bum:L,scope:C,update:k,subTree:j,um:$}=h;L&&co(L),C.stop(),k&&(k.active=!1,Ae(j,h,m,E)),$&&Fe($,m),Fe(()=>{h.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},ke=(h,m,E,L=!1,C=!1,k=0)=>{for(let j=k;jh.shapeFlag&6?P(h.component.subTree):h.shapeFlag&128?h.suspense.next():p(h.anchor||h.el),F=(h,m,E)=>{h==null?m._vnode&&Ae(m._vnode,null,null,!0):w(m._vnode||null,h,m,null,null,null,E),fa(),Vr(),m._vnode=h},V={p:w,um:Ae,m:je,r:yt,mt:q,mc:O,pc:te,pbc:z,n:P,o:e};let Z,ie;return t&&([Z,ie]=t(V)),{render:F,hydrate:Z,createApp:cf(F,Z)}}function Zt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function hi(e,t,n=!1){const r=e.children,o=t.children;if(J(r)&&J(o))for(let l=0;l>1,e[n[s]]0&&(t[r]=n[l-1]),n[l]=r)}}for(l=n.length,a=n[l-1];l-- >0;)n[l]=a,a=t[a];return n}const bf=e=>e.__isTeleport,Ke=Symbol.for("v-fgt"),kn=Symbol.for("v-txt"),_t=Symbol.for("v-cmt"),Zn=Symbol.for("v-stc"),Yn=[];let ct=null;function K2(e=!1){Yn.push(ct=e?null:[])}function yf(){Yn.pop(),ct=Yn[Yn.length-1]||null}let ar=1;function La(e){ar+=e}function Ef(e){return e.dynamicChildren=ar>0?ct||En:null,yf(),ar>0&&ct&&ct.push(e),e}function q2(e,t,n,r,o,l){return Ef(gi(e,t,n,r,o,l,!0))}function zo(e){return e?e.__v_isVNode===!0:!1}function Jt(e,t){return e.type===t.type&&e.key===t.key}const Qr="__vInternal",mi=({key:e})=>e??null,Sr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pe(e)||Se(e)||ne(e)?{i:Qe,r:e,k:t,f:!!n}:e:null);function gi(e,t=null,n=null,r=0,o=null,l=e===Ke?0:1,a=!1,s=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&mi(t),ref:t&&Sr(t),scopeId:Js,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Qe};return s?(Pl(c,n),l&128&&e.normalize(c)):n&&(c.shapeFlag|=pe(n)?8:16),ar>0&&!a&&ct&&(c.patchFlag>0||l&6)&&c.patchFlag!==32&&ct.push(c),c}const De=wf;function wf(e,t=null,n=null,r=0,o=null,l=!1){if((!e||e===Qd)&&(e=_t),zo(e)){const s=zt(e,t,!0);return n&&Pl(s,n),ar>0&&!l&&ct&&(s.shapeFlag&6?ct[ct.indexOf(e)]=s:ct.push(s)),s.patchFlag|=-2,s}if(Sf(e)&&(e=e.__vccOpts),t){t=Tf(t);let{class:s,style:c}=t;s&&!pe(s)&&(t.class=dl(s)),Le(c)&&(Ws(c)&&!J(c)&&(c=Ce({},c)),t.style=ul(c))}const a=pe(e)?1:Fd(e)?128:bf(e)?64:Le(e)?4:ne(e)?2:0;return gi(e,t,n,r,o,a,l,!0)}function Tf(e){return e?Ws(e)||Qr in e?Ce({},e):e:null}function zt(e,t,n=!1){const{props:r,ref:o,patchFlag:l,children:a}=e,s=t?Lf(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&mi(s),ref:t&&t.ref?n&&o?J(o)?o.concat(Sr(t)):[o,Sr(t)]:Sr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ke?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&zt(e.ssContent),ssFallback:e.ssFallback&&zt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function _i(e=" ",t=0){return De(kn,null,e,t)}function G2(e,t){const n=De(Zn,null,e);return n.staticCount=t,n}function st(e){return e==null||typeof e=="boolean"?De(_t):J(e)?De(Ke,null,e.slice()):typeof e=="object"?Vt(e):De(kn,null,String(e))}function Vt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:zt(e)}function Pl(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(J(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Pl(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(Qr in t)?t._ctx=Qe:o===3&&Qe&&(Qe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ne(t)?(t={default:t,_ctx:Qe},n=32):(t=String(t),r&64?(n=16,t=[_i(t)]):n=8);e.children=t,e.shapeFlag|=n}function Lf(...e){const t={};for(let n=0;nRe||Qe;let Cl,vn,Oa="__VUE_INSTANCE_SETTERS__";(vn=Do()[Oa])||(vn=Do()[Oa]=[]),vn.push(e=>Re=e),Cl=e=>{vn.length>1?vn.forEach(t=>t(e)):vn[0](e)};const xn=e=>{Cl(e),e.scope.on()},rn=()=>{Re&&Re.scope.off(),Cl(null)};function bi(e){return e.vnode.shapeFlag&4}let In=!1;function Cf(e,t=!1){In=t;const{props:n,children:r}=e.vnode,o=bi(e);uf(e,n,o,t),pf(e,r);const l=o?kf(e,t):void 0;return In=!1,l}function kf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Us(new Proxy(e.ctx,tf));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?If(e):null;xn(e),Mn();const l=Ht(r,e,0,[e.props,o]);if(Vn(),rn(),xs(l)){if(l.then(rn,rn),t)return l.then(a=>{Aa(e,a,t)}).catch(a=>{dr(a,e,0)});e.asyncDep=l}else Aa(e,l,t)}else yi(e,t)}function Aa(e,t,n){ne(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Le(t)&&(e.setupState=qs(t)),yi(e,n)}let Pa;function yi(e,t,n){const r=e.type;if(!e.render){if(!t&&Pa&&!r.render){const o=r.template||Ol(e).template;if(o){const{isCustomElement:l,compilerOptions:a}=e.appContext.config,{delimiters:s,compilerOptions:c}=r,u=Ce(Ce({isCustomElement:l,delimiters:s},a),c);r.render=Pa(o,u)}}e.render=r.render||ut}xn(e),Mn(),nf(e),Vn(),rn()}function xf(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ze(e,"get","$attrs"),t[n]}}))}function If(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return xf(e)},slots:e.slots,emit:e.emit,expose:t}}function kl(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(qs(Us(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Gn)return Gn[n](e)},has(t,n){return n in t||n in Gn}}))}function Rf(e,t=!0){return ne(e)?e.displayName||e.name:e.name||t&&e.__name}function Sf(e){return ne(e)&&"__vccOpts"in e}const A=(e,t)=>Cd(e,t,In);function d(e,t,n){const r=arguments.length;return r===2?Le(t)&&!J(t)?zo(t)?De(e,null,[t]):De(e,t):De(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&zo(n)&&(n=[n]),De(e,t,n))}const Df=Symbol.for("v-scx"),$f=()=>ye(Df),Mf="3.3.4",Vf="http://www.w3.org/2000/svg",Qt=typeof document<"u"?document:null,Ca=Qt&&Qt.createElement("template"),Nf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Qt.createElementNS(Vf,e):Qt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Qt.createTextNode(e),createComment:e=>Qt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Qt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,l){const a=n?n.previousSibling:t.lastChild;if(o&&(o===l||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===l||!(o=o.nextSibling)););else{Ca.innerHTML=r?`${e}`:e;const s=Ca.content;if(r){const c=s.firstChild;for(;c.firstChild;)s.appendChild(c.firstChild);s.removeChild(c)}t.insertBefore(s,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function jf(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Ff(e,t,n){const r=e.style,o=pe(n);if(n&&!o){if(t&&!pe(t))for(const l in t)n[l]==null&&Wo(r,l,"");for(const l in n)Wo(r,l,n[l])}else{const l=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=l)}}const ka=/\s*!important$/;function Wo(e,t,n){if(J(n))n.forEach(r=>Wo(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Hf(e,t);ka.test(n)?e.setProperty($n(r),n.replace(ka,""),"important"):e[r]=n}}const xa=["Webkit","Moz","ms"],ho={};function Hf(e,t){const n=ho[t];if(n)return n;let r=tt(t);if(r!=="filter"&&r in e)return ho[t]=r;r=cr(r);for(let o=0;omo||(Gf.then(()=>mo=0),mo=Date.now());function Yf(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;et(Xf(r,n.value),t,5,[r])};return n.value=e,n.attached=Zf(),n}function Xf(e,t){if(J(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Sa=/^on[a-z]/,Jf=(e,t,n,r,o=!1,l,a,s,c)=>{t==="class"?jf(e,r,o):t==="style"?Ff(e,n,r):ir(t)?al(t)||Kf(e,t,n,r,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qf(e,t,r,o))?zf(e,t,r,l,a,s,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Bf(e,t,r,o))};function Qf(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&Sa.test(t)&&ne(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Sa.test(t)&&pe(n)?!1:t in e}const Dt="transition",Hn="animation",Wt=(e,{slots:t})=>d(zd,wi(e),t);Wt.displayName="Transition";const Ei={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ep=Wt.props=Ce({},ri,Ei),Yt=(e,t=[])=>{J(e)?e.forEach(n=>n(...t)):e&&e(...t)},Da=e=>e?J(e)?e.some(t=>t.length>1):e.length>1:!1;function wi(e){const t={};for(const W in e)W in Ei||(t[W]=e[W]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:l=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=l,appearActiveClass:u=a,appearToClass:i=s,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,_=tp(o),w=_&&_[0],T=_&&_[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:D,onLeave:R,onLeaveCancelled:U,onBeforeAppear:x=g,onAppear:M=y,onAppearCancelled:O=D}=t,B=(W,Q,q)=>{Mt(W,Q?i:s),Mt(W,Q?u:a),q&&q()},z=(W,Q)=>{W._isLeaving=!1,Mt(W,f),Mt(W,v),Mt(W,p),Q&&Q()},re=W=>(Q,q)=>{const we=W?M:y,oe=()=>B(Q,W,q);Yt(we,[Q,oe]),$a(()=>{Mt(Q,W?c:l),wt(Q,W?i:s),Da(we)||Ma(Q,r,w,oe)})};return Ce(t,{onBeforeEnter(W){Yt(g,[W]),wt(W,l),wt(W,a)},onBeforeAppear(W){Yt(x,[W]),wt(W,c),wt(W,u)},onEnter:re(!1),onAppear:re(!0),onLeave(W,Q){W._isLeaving=!0;const q=()=>z(W,Q);wt(W,f),Li(),wt(W,p),$a(()=>{W._isLeaving&&(Mt(W,f),wt(W,v),Da(R)||Ma(W,r,T,q))}),Yt(R,[W,q])},onEnterCancelled(W){B(W,!1),Yt(D,[W])},onAppearCancelled(W){B(W,!0),Yt(O,[W])},onLeaveCancelled(W){z(W),Yt(U,[W])}})}function tp(e){if(e==null)return null;if(Le(e))return[go(e.enter),go(e.leave)];{const t=go(e);return[t,t]}}function go(e){return Vu(e)}function wt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Mt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function $a(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let np=0;function Ma(e,t,n,r){const o=e._endId=++np,l=()=>{o===e._endId&&r()};if(n)return setTimeout(l,n);const{type:a,timeout:s,propCount:c}=Ti(e,t);if(!a)return r();const u=a+"end";let i=0;const f=()=>{e.removeEventListener(u,p),l()},p=v=>{v.target===e&&++i>=c&&f()};setTimeout(()=>{i(n[_]||"").split(", "),o=r(`${Dt}Delay`),l=r(`${Dt}Duration`),a=Va(o,l),s=r(`${Hn}Delay`),c=r(`${Hn}Duration`),u=Va(s,c);let i=null,f=0,p=0;t===Dt?a>0&&(i=Dt,f=a,p=l.length):t===Hn?u>0&&(i=Hn,f=u,p=c.length):(f=Math.max(a,u),i=f>0?a>u?Dt:Hn:null,p=i?i===Dt?l.length:c.length:0);const v=i===Dt&&/\b(transform|all)(,|$)/.test(r(`${Dt}Property`).toString());return{type:i,timeout:f,propCount:p,hasTransform:v}}function Va(e,t){for(;e.lengthNa(n)+Na(e[r])))}function Na(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Li(){return document.body.offsetHeight}const Oi=new WeakMap,Ai=new WeakMap,Pi={name:"TransitionGroup",props:Ce({},ep,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=sn(),r=ni();let o,l;return ai(()=>{if(!o.length)return;const a=e.moveClass||`${e.name||"v"}-move`;if(!ip(o[0].el,n.vnode.el,a))return;o.forEach(lp),o.forEach(ap);const s=o.filter(sp);Li(),s.forEach(c=>{const u=c.el,i=u.style;wt(u,a),i.transform=i.webkitTransform=i.transitionDuration="";const f=u._moveCb=p=>{p&&p.target!==u||(!p||/transform$/.test(p.propertyName))&&(u.removeEventListener("transitionend",f),u._moveCb=null,Mt(u,a))};u.addEventListener("transitionend",f)})}),()=>{const a=se(e),s=wi(a);let c=a.tag||Ke;o=l,l=t.default?Tl(t.default()):[];for(let u=0;udelete e.mode;Pi.props;const op=Pi;function lp(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function ap(e){Ai.set(e,e.el.getBoundingClientRect())}function sp(e){const t=Oi.get(e),n=Ai.get(e),r=t.left-n.left,o=t.top-n.top;if(r||o){const l=e.el.style;return l.transform=l.webkitTransform=`translate(${r}px,${o}px)`,l.transitionDuration="0s",e}}function ip(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach(a=>{a.split(/\s+/).forEach(s=>s&&r.classList.remove(s))}),n.split(/\s+/).forEach(a=>a&&r.classList.add(a)),r.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(r);const{hasTransform:l}=Ti(r);return o.removeChild(r),l}const cp=Ce({patchProp:Jf},Nf);let _o,ja=!1;function up(){return _o=ja?_o:mf(cp),ja=!0,_o}const dp=(...e)=>{const t=up().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=fp(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function fp(e){return pe(e)?document.querySelector(e):e}const pp={"v-8daa1a0e":()=>b(()=>import("./index.html-c5aff358.js"),[]).then(({data:e})=>e),"v-495a303e":()=>b(()=>import("./index.html-a3d59bf2.js"),[]).then(({data:e})=>e),"v-7f4aff48":()=>b(()=>import("./index.html-308b9cfb.js"),[]).then(({data:e})=>e),"v-974caada":()=>b(()=>import("./index.html-fe59353c.js"),[]).then(({data:e})=>e),"v-174d6e92":()=>b(()=>import("./api.html-a4c0141d.js"),[]).then(({data:e})=>e),"v-50b2c6d0":()=>b(()=>import("./index.html-55ed2560.js"),[]).then(({data:e})=>e),"v-26c7c346":()=>b(()=>import("./changelog.html-fca83de8.js"),[]).then(({data:e})=>e),"v-7554a597":()=>b(()=>import("./contributing.html-3080332f.js"),[]).then(({data:e})=>e),"v-1605c99e":()=>b(()=>import("./guidelines.html-4ae07334.js"),[]).then(({data:e})=>e),"v-f6ea7b76":()=>b(()=>import("./package-structure.html-443c8c9c.js"),[]).then(({data:e})=>e),"v-2ff4a912":()=>b(()=>import("./versioning.html-fbe8ba14.js"),[]).then(({data:e})=>e),"v-cabbab28":()=>b(()=>import("./index.html-3cd818aa.js"),[]).then(({data:e})=>e),"v-4b7a327c":()=>b(()=>import("./file-formats.html-b244b52f.js"),[]).then(({data:e})=>e),"v-0669fc14":()=>b(()=>import("./overview.html-6ab61eb2.js"),[]).then(({data:e})=>e),"v-142be2c4":()=>b(()=>import("./serializers.html-5fe64867.js"),[]).then(({data:e})=>e),"v-4ce5761f":()=>b(()=>import("./task-list.html-137e9390.js"),[]).then(({data:e})=>e),"v-6cca6f5b":()=>b(()=>import("./index.html-803489df.js"),[]).then(({data:e})=>e),"v-35faf283":()=>b(()=>import("./docs.html-205e1811.js"),[]).then(({data:e})=>e),"v-23d1f10b":()=>b(()=>import("./technical-links.html-9084e979.js"),[]).then(({data:e})=>e),"v-6f27bb46":()=>b(()=>import("./index.html-6b27342d.js"),[]).then(({data:e})=>e),"v-14742194":()=>b(()=>import("./ci.html-83409b0c.js"),[]).then(({data:e})=>e),"v-9e17fb70":()=>b(()=>import("./debugging.html-a2143ec3.js"),[]).then(({data:e})=>e),"v-41f63175":()=>b(()=>import("./tests.html-c5c1daf8.js"),[]).then(({data:e})=>e),"v-6df5895a":()=>b(()=>import("./index.html-e2ac7db3.js"),[]).then(({data:e})=>e),"v-0912a191":()=>b(()=>import("./adding-icons.html-f24fcef0.js"),[]).then(({data:e})=>e),"v-3b749041":()=>b(()=>import("./developing-ui-css.html-60144fe3.js"),[]).then(({data:e})=>e),"v-680c4ad5":()=>b(()=>import("./developing-ui-forms.html-44a4abad.js"),[]).then(({data:e})=>e),"v-79cd1776":()=>b(()=>import("./developing-ui-js.html-a314c253.js"),[]).then(({data:e})=>e),"v-43c30229":()=>b(()=>import("./developing-ui-tables.html-5a5fb9fa.js"),[]).then(({data:e})=>e),"v-286ba437":()=>b(()=>import("./developing-ui.html-67064402.js"),[]).then(({data:e})=>e),"v-0aeb53ac":()=>b(()=>import("./html-popups.html-fca1dc9e.js"),[]).then(({data:e})=>e),"v-23b84093":()=>b(()=>import("./index.html-d6c2101f.js"),[]).then(({data:e})=>e),"v-7d2e6031":()=>b(()=>import("./install.html-ea393893.js"),[]).then(({data:e})=>e),"v-da6c54ee":()=>b(()=>import("./ui-layout.html-225dd165.js"),[]).then(({data:e})=>e),"v-dc289a5c":()=>b(()=>import("./ui.html-aeff420e.js"),[]).then(({data:e})=>e),"v-3aecceec":()=>b(()=>import("./uninstall.html-b31faa15.js"),[]).then(({data:e})=>e),"v-97a4d760":()=>b(()=>import("./upgrade.html-e805da86.js"),[]).then(({data:e})=>e),"v-79352e7b":()=>b(()=>import("./index.html-b9ee809f.js"),[]).then(({data:e})=>e),"v-b753c16a":()=>b(()=>import("./articles-and-presentations.html-da5d93f1.js"),[]).then(({data:e})=>e),"v-8ffe8b28":()=>b(()=>import("./logos.html-162bb7f0.js"),[]).then(({data:e})=>e),"v-b4d4656a":()=>b(()=>import("./regular-backup.html-8acf0655.js"),[]).then(({data:e})=>e),"v-5c3b6510":()=>b(()=>import("./saplink.html-6b1a2306.js"),[]).then(({data:e})=>e),"v-b86e8c0a":()=>b(()=>import("./where-used.html-450401fa.js"),[]).then(({data:e})=>e),"v-c774b90c":()=>b(()=>import("./xml-mismatch.html-f032586f.js"),[]).then(({data:e})=>e),"v-52841e19":()=>b(()=>import("./index.html-31ff22f4.js"),[]).then(({data:e})=>e),"v-741130c0":()=>b(()=>import("./index.html-6920104c.js"),[]).then(({data:e})=>e),"v-0de740f9":()=>b(()=>import("./abap-language-version.html-c24cf374.js"),[]).then(({data:e})=>e),"v-088182bf":()=>b(()=>import("./apack.html-5c6a9fb4.js"),[]).then(({data:e})=>e),"v-4959a65f":()=>b(()=>import("./authorizations.html-f35033f9.js"),[]).then(({data:e})=>e),"v-72455036":()=>b(()=>import("./database-util.html-3f1e5915.js"),[]).then(({data:e})=>e),"v-4bc4da84":()=>b(()=>import("./exits.html-fb515032.js"),[]).then(({data:e})=>e),"v-43980e6a":()=>b(()=>import("./flow.html-ccffb026.js"),[]).then(({data:e})=>e),"v-78e86c96":()=>b(()=>import("./folders-filenames.html-2b163229.js"),[]).then(({data:e})=>e),"v-71ce9558":()=>b(()=>import("./hotkeys.html-8b36de00.js"),[]).then(({data:e})=>e),"v-252f2d9f":()=>b(()=>import("./icons.html-154106d3.js"),[]).then(({data:e})=>e),"v-3914cc7e":()=>b(()=>import("./namespaces.html-00d9e871.js"),[]).then(({data:e})=>e),"v-1d61fcf8":()=>b(()=>import("./note-analyzer.html-164b616a.js"),[]).then(({data:e})=>e),"v-47821728":()=>b(()=>import("./packages.html-f02402e5.js"),[]).then(({data:e})=>e),"v-f51e8eea":()=>b(()=>import("./supported.html-6baf2bc8.js"),[]).then(({data:e})=>e),"v-ec7a72d2":()=>b(()=>import("./translations.html-59a405ca.js"),[]).then(({data:e})=>e),"v-01e98f2d":()=>b(()=>import("./index.html-189dc5d5.js"),[]).then(({data:e})=>e),"v-d7ac3c38":()=>b(()=>import("./background-mode.html-75123a5b.js"),[]).then(({data:e})=>e),"v-17c01b88":()=>b(()=>import("./dot-abapgit.html-10b2e95c.js"),[]).then(({data:e})=>e),"v-ac98f18a":()=>b(()=>import("./local.html-66891a46.js"),[]).then(({data:e})=>e),"v-0be4b1f4":()=>b(()=>import("./remote.html-24ea83d4.js"),[]).then(({data:e})=>e),"v-6651c287":()=>b(()=>import("./stats.html-7906d7bc.js"),[]).then(({data:e})=>e),"v-7f3ae0ae":()=>b(()=>import("./index.html-a007e1b8.js"),[]).then(({data:e})=>e),"v-43307cf2":()=>b(()=>import("./sapgui.html-96daaaed.js"),[]).then(({data:e})=>e),"v-218e7a1a":()=>b(()=>import("./settings-global.html-12660f12.js"),[]).then(({data:e})=>e),"v-d7087ec6":()=>b(()=>import("./settings-personal.html-9ca63b6f.js"),[]).then(({data:e})=>e),"v-b4e259ea":()=>b(()=>import("./ssl-setup.html-15162eeb.js"),[]).then(({data:e})=>e),"v-362eb318":()=>b(()=>import("./ssl-test.html-f015a542.js"),[]).then(({data:e})=>e),"v-3e76b876":()=>b(()=>import("./index.html-4cd63ea8.js"),[]).then(({data:e})=>e),"v-7bddc9ec":()=>b(()=>import("./export-zip.html-61c11160.js"),[]).then(({data:e})=>e),"v-3ad8b04d":()=>b(()=>import("./import-rfc.html-a1eb0300.js"),[]).then(({data:e})=>e),"v-2ec3c91b":()=>b(()=>import("./import-zip.html-f068cd5e.js"),[]).then(({data:e})=>e),"v-49558863":()=>b(()=>import("./install.html-790d4438.js"),[]).then(({data:e})=>e),"v-6a30cffa":()=>b(()=>import("./index.html-668975ce.js"),[]).then(({data:e})=>e),"v-fd49d704":()=>b(()=>import("./authentication.html-e8bc75fd.js"),[]).then(({data:e})=>e),"v-c87ae4e8":()=>b(()=>import("./contributing.html-a00e311e.js"),[]).then(({data:e})=>e),"v-755a2ac0":()=>b(()=>import("./first-project.html-8e904f05.js"),[]).then(({data:e})=>e),"v-9333e0be":()=>b(()=>import("./install.html-e7b99895.js"),[]).then(({data:e})=>e),"v-aa70c2e2":()=>b(()=>import("./moving-package.html-0a98281b.js"),[]).then(({data:e})=>e),"v-d3eccfe0":()=>b(()=>import("./stage-commit.html-b7c725f4.js"),[]).then(({data:e})=>e),"v-c9cf1466":()=>b(()=>import("./update.html-876754d3.js"),[]).then(({data:e})=>e),"v-5a4f9bf2":()=>b(()=>import("./index.html-d3fe7e49.js"),[]).then(({data:e})=>e),"v-c7dbbcae":()=>b(()=>import("./uninstall.html-2610c469.js"),[]).then(({data:e})=>e),"v-3706649a":()=>b(()=>import("./404.html-e98d903c.js"),[]).then(({data:e})=>e)},vp=JSON.parse('{"base":"/","lang":"en-US","title":"","description":"","head":[["link",{"rel":"icon","href":"/favicon.svg"}]],"locales":{"/":{"lang":"en-US","title":"abapGit Docs","description":"A git client for ABAP developed in ABAP"}}}');var hp=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),mp=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=hp(r);t.has(o)||(t.add(o),n.push(r))}),n},gp=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,_p=e=>e.startsWith("ftp://"),Nn=e=>/^(https?:)?\/\//.test(e),bp=/.md((\?|#).*)?$/,Br=(e,t="/")=>!!(Nn(e)||_p(e)||e.startsWith("/")&&!e.startsWith(t)&&!bp.test(e)),Ci=e=>/^mailto:/.test(e),yp=e=>/^tel:/.test(e),eo=e=>Object.prototype.toString.call(e)==="[object Object]",xl=e=>e[e.length-1]==="/"?e.slice(0,-1):e,ki=e=>e[0]==="/"?e.slice(1):e,Ep=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const l=o.split("/").length-r.split("/").length;return l!==0?l:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const xi={"v-8daa1a0e":S(()=>b(()=>import("./index.html-44ab9c5c.js"),["assets/index.html-44ab9c5c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-495a303e":S(()=>b(()=>import("./index.html-c6b21fe4.js"),["assets/index.html-c6b21fe4.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7f4aff48":S(()=>b(()=>import("./index.html-c4c62e93.js"),["assets/index.html-c4c62e93.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-974caada":S(()=>b(()=>import("./index.html-4d9f4f3e.js"),["assets/index.html-4d9f4f3e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-174d6e92":S(()=>b(()=>import("./api.html-812b99b8.js"),["assets/api.html-812b99b8.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-50b2c6d0":S(()=>b(()=>import("./index.html-76dec6a9.js"),["assets/index.html-76dec6a9.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-26c7c346":S(()=>b(()=>import("./changelog.html-4c206d4e.js"),["assets/changelog.html-4c206d4e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7554a597":S(()=>b(()=>import("./contributing.html-a678b326.js"),["assets/contributing.html-a678b326.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1605c99e":S(()=>b(()=>import("./guidelines.html-4b7488b0.js"),["assets/guidelines.html-4b7488b0.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-f6ea7b76":S(()=>b(()=>import("./package-structure.html-acdc8382.js"),["assets/package-structure.html-acdc8382.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2ff4a912":S(()=>b(()=>import("./versioning.html-5fb1c535.js"),["assets/versioning.html-5fb1c535.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-cabbab28":S(()=>b(()=>import("./index.html-ee109f4f.js"),["assets/index.html-ee109f4f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4b7a327c":S(()=>b(()=>import("./file-formats.html-dfb15934.js"),["assets/file-formats.html-dfb15934.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0669fc14":S(()=>b(()=>import("./overview.html-1c20f6ca.js"),["assets/overview.html-1c20f6ca.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-142be2c4":S(()=>b(()=>import("./serializers.html-5edfc46d.js"),["assets/serializers.html-5edfc46d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4ce5761f":S(()=>b(()=>import("./task-list.html-63462f6a.js"),["assets/task-list.html-63462f6a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6cca6f5b":S(()=>b(()=>import("./index.html-f103c3b6.js"),["assets/index.html-f103c3b6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-35faf283":S(()=>b(()=>import("./docs.html-ad610b48.js"),["assets/docs.html-ad610b48.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-23d1f10b":S(()=>b(()=>import("./technical-links.html-22d3821a.js"),["assets/technical-links.html-22d3821a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6f27bb46":S(()=>b(()=>import("./index.html-d8c7e775.js"),["assets/index.html-d8c7e775.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-14742194":S(()=>b(()=>import("./ci.html-551f0e6a.js"),["assets/ci.html-551f0e6a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-9e17fb70":S(()=>b(()=>import("./debugging.html-7dccd680.js"),["assets/debugging.html-7dccd680.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-41f63175":S(()=>b(()=>import("./tests.html-e0a40b6c.js"),["assets/tests.html-e0a40b6c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6df5895a":S(()=>b(()=>import("./index.html-f6b26ec2.js"),["assets/index.html-f6b26ec2.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0912a191":S(()=>b(()=>import("./adding-icons.html-66211484.js"),["assets/adding-icons.html-66211484.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3b749041":S(()=>b(()=>import("./developing-ui-css.html-ddcdf28f.js"),["assets/developing-ui-css.html-ddcdf28f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-680c4ad5":S(()=>b(()=>import("./developing-ui-forms.html-d80663b3.js"),["assets/developing-ui-forms.html-d80663b3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-79cd1776":S(()=>b(()=>import("./developing-ui-js.html-4ff94c3f.js"),["assets/developing-ui-js.html-4ff94c3f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-43c30229":S(()=>b(()=>import("./developing-ui-tables.html-47182ade.js"),["assets/developing-ui-tables.html-47182ade.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-286ba437":S(()=>b(()=>import("./developing-ui.html-75e2548d.js"),["assets/developing-ui.html-75e2548d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0aeb53ac":S(()=>b(()=>import("./html-popups.html-23cc634c.js"),["assets/html-popups.html-23cc634c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-23b84093":S(()=>b(()=>import("./index.html-3cbde89d.js"),["assets/index.html-3cbde89d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7d2e6031":S(()=>b(()=>import("./install.html-a2a99ce9.js"),["assets/install.html-a2a99ce9.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-da6c54ee":S(()=>b(()=>import("./ui-layout.html-29acd116.js"),["assets/ui-layout.html-29acd116.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-dc289a5c":S(()=>b(()=>import("./ui.html-4cf69a12.js"),["assets/ui.html-4cf69a12.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3aecceec":S(()=>b(()=>import("./uninstall.html-b62af86f.js"),["assets/uninstall.html-b62af86f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-97a4d760":S(()=>b(()=>import("./upgrade.html-bd2543d6.js"),["assets/upgrade.html-bd2543d6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-79352e7b":S(()=>b(()=>import("./index.html-7f7b8a51.js"),["assets/index.html-7f7b8a51.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-b753c16a":S(()=>b(()=>import("./articles-and-presentations.html-9a584363.js"),["assets/articles-and-presentations.html-9a584363.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-8ffe8b28":S(()=>b(()=>import("./logos.html-a01d5a60.js"),["assets/logos.html-a01d5a60.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-b4d4656a":S(()=>b(()=>import("./regular-backup.html-1980fbd2.js"),["assets/regular-backup.html-1980fbd2.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-5c3b6510":S(()=>b(()=>import("./saplink.html-092d4bdf.js"),["assets/saplink.html-092d4bdf.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-b86e8c0a":S(()=>b(()=>import("./where-used.html-e084af9d.js"),["assets/where-used.html-e084af9d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c774b90c":S(()=>b(()=>import("./xml-mismatch.html-9f2dcbdc.js"),["assets/xml-mismatch.html-9f2dcbdc.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-52841e19":S(()=>b(()=>import("./index.html-b4a96cba.js"),["assets/index.html-b4a96cba.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-741130c0":S(()=>b(()=>import("./index.html-38c950d7.js"),["assets/index.html-38c950d7.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0de740f9":S(()=>b(()=>import("./abap-language-version.html-ef2077d1.js"),["assets/abap-language-version.html-ef2077d1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-088182bf":S(()=>b(()=>import("./apack.html-00e73ce1.js"),["assets/apack.html-00e73ce1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4959a65f":S(()=>b(()=>import("./authorizations.html-38a0f38a.js"),["assets/authorizations.html-38a0f38a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-72455036":S(()=>b(()=>import("./database-util.html-5fb91a9a.js"),["assets/database-util.html-5fb91a9a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4bc4da84":S(()=>b(()=>import("./exits.html-073294f6.js"),["assets/exits.html-073294f6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-43980e6a":S(()=>b(()=>import("./flow.html-f33ec70d.js"),["assets/flow.html-f33ec70d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-78e86c96":S(()=>b(()=>import("./folders-filenames.html-22281d62.js"),["assets/folders-filenames.html-22281d62.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-71ce9558":S(()=>b(()=>import("./hotkeys.html-0f0cc4d5.js"),["assets/hotkeys.html-0f0cc4d5.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-252f2d9f":S(()=>b(()=>import("./icons.html-37f3d136.js"),["assets/icons.html-37f3d136.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3914cc7e":S(()=>b(()=>import("./namespaces.html-47dd9dfa.js"),["assets/namespaces.html-47dd9dfa.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1d61fcf8":S(()=>b(()=>import("./note-analyzer.html-f026b62f.js"),["assets/note-analyzer.html-f026b62f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-47821728":S(()=>b(()=>import("./packages.html-8349ee02.js"),["assets/packages.html-8349ee02.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-f51e8eea":S(()=>b(()=>import("./supported.html-1320ed1d.js"),["assets/supported.html-1320ed1d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-ec7a72d2":S(()=>b(()=>import("./translations.html-d28fb635.js"),["assets/translations.html-d28fb635.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-01e98f2d":S(()=>b(()=>import("./index.html-8437b501.js"),["assets/index.html-8437b501.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d7ac3c38":S(()=>b(()=>import("./background-mode.html-920d7a63.js"),["assets/background-mode.html-920d7a63.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-17c01b88":S(()=>b(()=>import("./dot-abapgit.html-1c35cd70.js"),["assets/dot-abapgit.html-1c35cd70.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-ac98f18a":S(()=>b(()=>import("./local.html-0fa29e79.js"),["assets/local.html-0fa29e79.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0be4b1f4":S(()=>b(()=>import("./remote.html-61de75ad.js"),["assets/remote.html-61de75ad.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6651c287":S(()=>b(()=>import("./stats.html-8babc1d1.js"),["assets/stats.html-8babc1d1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7f3ae0ae":S(()=>b(()=>import("./index.html-1fe39e28.js"),["assets/index.html-1fe39e28.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-43307cf2":S(()=>b(()=>import("./sapgui.html-8dbd7063.js"),["assets/sapgui.html-8dbd7063.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-218e7a1a":S(()=>b(()=>import("./settings-global.html-23e3fd63.js"),["assets/settings-global.html-23e3fd63.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d7087ec6":S(()=>b(()=>import("./settings-personal.html-67955bed.js"),["assets/settings-personal.html-67955bed.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-b4e259ea":S(()=>b(()=>import("./ssl-setup.html-8ede38d2.js"),["assets/ssl-setup.html-8ede38d2.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-362eb318":S(()=>b(()=>import("./ssl-test.html-8caec29a.js"),["assets/ssl-test.html-8caec29a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3e76b876":S(()=>b(()=>import("./index.html-79f4613e.js"),["assets/index.html-79f4613e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7bddc9ec":S(()=>b(()=>import("./export-zip.html-887f8f8c.js"),["assets/export-zip.html-887f8f8c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3ad8b04d":S(()=>b(()=>import("./import-rfc.html-3de96f2a.js"),["assets/import-rfc.html-3de96f2a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-2ec3c91b":S(()=>b(()=>import("./import-zip.html-a7086a43.js"),["assets/import-zip.html-a7086a43.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-49558863":S(()=>b(()=>import("./install.html-9bb3e2ba.js"),["assets/install.html-9bb3e2ba.js","assets/start-b8c8f9c6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-6a30cffa":S(()=>b(()=>import("./index.html-a1ab357a.js"),["assets/index.html-a1ab357a.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-fd49d704":S(()=>b(()=>import("./authentication.html-c0f76b1b.js"),["assets/authentication.html-c0f76b1b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c87ae4e8":S(()=>b(()=>import("./contributing.html-9670f13d.js"),["assets/contributing.html-9670f13d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-755a2ac0":S(()=>b(()=>import("./first-project.html-5726d7b3.js"),["assets/first-project.html-5726d7b3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-9333e0be":S(()=>b(()=>import("./install.html-3a4f32f5.js"),["assets/install.html-3a4f32f5.js","assets/start-b8c8f9c6.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-aa70c2e2":S(()=>b(()=>import("./moving-package.html-3266e705.js"),["assets/moving-package.html-3266e705.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d3eccfe0":S(()=>b(()=>import("./stage-commit.html-e490777e.js"),["assets/stage-commit.html-e490777e.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c9cf1466":S(()=>b(()=>import("./update.html-11ff8fbc.js"),["assets/update.html-11ff8fbc.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-5a4f9bf2":S(()=>b(()=>import("./index.html-b69084f1.js"),["assets/index.html-b69084f1.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-c7dbbcae":S(()=>b(()=>import("./uninstall.html-e675e209.js"),["assets/uninstall.html-e675e209.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3706649a":S(()=>b(()=>import("./404.html-97007618.js"),["assets/404.html-97007618.js","assets/plugin-vue_export-helper-c27b6911.js"]))};var wp=Symbol(""),Tp=K(pp),Ii=ln({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),Nt=K(Ii),ge=()=>Nt,Ri=Symbol(""),Ie=()=>{const e=ye(Ri);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},Si=Symbol(""),Lp=()=>{const e=ye(Si);if(!e)throw new Error("usePageHead() is called without provider.");return e},Op=Symbol(""),Di=Symbol(""),$i=()=>{const e=ye(Di);if(!e)throw new Error("usePageLang() is called without provider.");return e},Mi=Symbol(""),Ap=()=>{const e=ye(Mi);if(!e)throw new Error("usePageLayout() is called without provider.");return e},Il=Symbol(""),cn=()=>{const e=ye(Il);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},_n=K(vp),Pp=()=>_n,Vi=Symbol(""),to=()=>{const e=ye(Vi);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},Cp=Symbol(""),kp="Layout",xp="NotFound",Tt=ur({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageData:async e=>{const t=Tp.value[e];return await(t==null?void 0:t())??Ii},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=pe(t.description)?t.description:n.description,o=[...J(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return mp(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const r=e.frontmatter.layout;pe(r)?n=r:n=kp}else n=xp;return t[n]},resolveRouteLocale:(e,t)=>Ep(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),no=H({name:"ClientOnly",setup(e,t){const n=K(!1);return de(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),Rl=H({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=ge(),n=A(()=>xi[e.pageKey||t.value.key]);return()=>n.value?d(n.value):d("div","404 Not Found")}}),pt=(e={})=>e,He=e=>Nn(e)?e:`/${ki(e)}`;const Ip={};/*!
       * vue-router v4.2.4
       * (c) 2023 Eduardo San Martin Morote
       * @license MIT
    @@ -20,4 +20,4 @@ ${e}
     __echarts_config__={width,height,option};
     }
     return __echarts_config__;
    -`)(n):Promise.resolve({option:JSON.parse(e)});var vh=H({name:"ECharts",props:{config:{type:String,required:!0},id:{type:String,required:!0},title:{type:String,default:""},type:{type:String,default:"json"}},setup(e){const t=K(!0),n=Oe();let r;return Pe("resize",Fl(()=>r==null?void 0:r.resize(),100)),de(()=>{Promise.all([b(()=>import("./index-2bf332f6.js"),[]),new Promise(o=>setTimeout(o,800))]).then(async([o])=>{r=o.init(n.value);const{option:l,...a}=await ph(on(e.config),e.type,r);r.resize(a),r.setOption(l),t.value=!1})}),kt(()=>{r==null||r.dispose()}),()=>[e.title?d("div",{class:"echarts-title"},decodeURIComponent(e.title)):null,d("div",{class:"echarts-wrapper"},[d("div",{ref:n,class:"echarts-container",id:e.id}),t.value?d(un,{class:"echarts-loading",height:360}):null])]}});var Ul={x:0,y:0,"line-width":2,"line-length":40,"text-margin":8,"font-size":14,"font-color":"#8DA1AC","line-color":"#8DA1AC","element-color":"black",fill:"white","yes-text":"Yes","no-text":"No","arrow-end":"block",scale:1},hh={...Ul,symbols:{start:{class:"start-element","font-color":"#fff",fill:"#595959","line-width":"0px"},end:{class:"end-element","font-color":"#fff",fill:"#595959","line-width":"0px"},operation:{class:"operation-element","font-color":"#fff",fill:"#1890ff","line-width":"0px"},inputoutput:{class:"inputoutput-element","font-color":"#fff",fill:"#1890ff","line-width":"0px"},subroutine:{class:"subroutine-element","font-color":"#fff",fill:"#FF485E","element-color":"#fff","line-color":"red"},condition:{class:"condition-element","font-color":"#fff",fill:"#FF485E","line-width":"0px"},parallel:{class:"parallel-element","font-color":"#fff",fill:"#1890ff","line-width":"0px"}}},mh={...Ul,"line-width":1,symbols:{start:{class:"start-element",fill:"#ccc","line-color":"#5c6ac4","font-color":"#000"},end:{class:"end-element",fill:"#ccc","line-color":"#5c6ac4","font-color":"#000"},operation:{class:"operation-element",fill:"#f1f1f1","line-color":"#5c6ac4","font-color":"#000"},inputoutput:{class:"inputoutput-element",fill:"#f1f1f1","line-color":"#5c6ac4","font-color":"#000"},subroutine:{class:"subroutine-element",fill:"#f1f1f1","line-color":"#5c6ac4","font-color":"#000"},condition:{class:"condition-element",fill:"#f1f1f1","line-color":"#5c6ac4","font-color":"#000"},parallel:{class:"parallel-element",fill:"#f1f1f1","line-color":"#5c6ac4","font-color":"#000"}}},gh={...Ul,symbols:{start:{class:"start-element","font-color":"#fff",fill:"#2F495F","line-width":"0px"},end:{class:"end-element","font-color":"#fff",fill:"#2F495F","line-width":"0px"},operation:{class:"operation-element","font-color":"#fff",fill:"#00BC7D","line-width":"0px"},inputoutput:{class:"inputoutput-element","font-color":"#fff",fill:"#EB4D5D","line-width":"0px"},subroutine:{class:"subroutine-element","font-color":"#fff",fill:"#937AC4","element-color":"#fff","line-color":"red"},condition:{class:"condition-element","font-color":"#fff",fill:"#FFB500","line-width":"0px"},parallel:{class:"parallel-element","font-color":"#fff",fill:"#2F495F","line-width":"0px"}}};const Ls={ant:hh,vue:gh,pie:mh};var _h=H({name:"FlowChart",props:{code:{type:String,required:!0},id:{type:String,required:!0},preset:{type:String,default:"vue"}},setup(e){let t=null;const n=Oe(),r=K(!0),o=K(1),l=A(()=>Ls[e.preset]||(console.warn(`[md-enhance:flowchart] Unknown preset: ${e.preset}`),Ls.vue)),a=s=>s<419?.8:s>1280?1:.9;return de(()=>{Promise.all([b(()=>import("./flowchart-c441f34d.js"),[]),new Promise(s=>setTimeout(s,800))]).then(([{parse:s}])=>{t=s(on(e.code)),o.value=a(window.innerWidth),r.value=!1,t.draw(e.id,{...l.value,scale:o.value})}),Pe("resize",Fl(()=>{if(t){const s=a(window.innerWidth);o.value!==s&&(o.value=s,t.draw(e.id,{...l.value,scale:s}))}},100))}),()=>[r.value?d(un,{class:"flowchart-loading",height:192}):null,d("div",{ref:n,class:["flowchart-wrapper",e.preset],id:e.id,style:{display:r.value?"none":"block"}})]}});let bh={};const $c=Symbol(""),yh=()=>ye($c),Eh=e=>{e.provide($c,bh)},hn={useMaxWidth:!1},wh=e=>({dark:e,background:e?"#1e1e1e":"#fff",primaryColor:e?"#389d70":"#4abf8a",primaryBorderColor:e?"#389d70":"#4abf8a",primaryTextColor:"#fff",secondaryColor:"#ffb500",secondaryBorderColor:e?"#fff":"#000",secondaryTextColor:e?"#ddd":"#333",tertiaryColor:e?"#282828":"#efeef4",tertiaryBorderColor:e?"#bbb":"#242424",tertiaryTextColor:e?"#ddd":"#333",noteBkgColor:e?"#f6d365":"#fff5ad",noteTextColor:"#242424",noteBorderColor:e?"#f6d365":"#333",lineColor:e?"#d3d3d3":"#333",textColor:e?"#fff":"#242424",mainBkg:e?"#389d70":"#4abf8a",errorBkgColor:"#eb4d5d",errorTextColor:"#fff",nodeBorder:e?"#389d70":"#4abf8a",nodeTextColor:e?"#fff":"#242424",signalTextColor:e?"#9e9e9e":"#242424",classText:"#fff",labelColor:"#fff",fillType0:e?"#cf1322":"#f1636e",fillType1:"#f39c12",fillType2:"#2ecc71",fillType3:"#fa541c",fillType4:"#25a55b",fillType5:"#13c2c2",fillType6:"#096dd9",fillType7:"#aa6fe9"});var Th=H({name:"Mermaid",props:{id:{type:String,required:!0},code:{type:String,required:!0}},setup(e){const{themeVariables:t,...n}=yh(),r=Oe(),o=A(()=>on(e.code)),l=K(""),a=K(!1),s=async()=>{const[{default:i}]=await Promise.all([b(()=>import("./mermaid.core-76b63171.js").then(f=>f.aP),[]),new Promise(f=>setTimeout(f,800))]);i.initialize({theme:"base",themeVariables:{...wh(a.value),...i1(t)?t(a.value):t},flowchart:hn,sequence:hn,journey:hn,gantt:hn,er:hn,pie:hn,...n,startOnLoad:!1}),l.value=(await i.render(e.id,o.value)).svg},c=()=>{const{body:i}=document,f=document.createElement("div");f.classList.add("mermaid-preview"),f.innerHTML=l.value,i.appendChild(f),f.addEventListener("click",()=>{i.removeChild(f)})},u=()=>{const i=`data:image/svg+xml;charset=utf8,${l.value.replace(/
    /g,"
    ").replace(/%/g,"%25").replace(/"/g,"%22").replace(/'/g,"%27").replace(/&/g,"%26").replace(/#/g,"%23").replace(/{/g,"%7B").replace(/}/g,"%7D").replace(//g,"%3E")}`,f=document.createElement("a");f.setAttribute("href",i),f.setAttribute("download",`${e.id}.svg`),f.click()};return de(()=>{const i=document.documentElement,f=()=>i.classList.contains("dark")||i.getAttribute("data-theme")==="dark";a.value=f(),s(),r0(i,()=>{a.value=f()},{attributeFilter:["class","data-theme"],attributes:!0}),ae(a,()=>s())}),()=>[d("div",{class:"mermaid-actions"},[d("button",{class:"preview-button",onClick:()=>c(),title:"preview",innerHTML:''}),d("button",{class:"download-button",onClick:()=>u(),title:"download",innerHTML:''})]),d("div",{ref:r,class:"mermaid-wrapper"},l.value?d("div",{class:"mermaid-content",innerHTML:l.value}):d(un,{class:"mermaid-loading",height:96}))]}});let Lh={};const Mc=Symbol(""),Oh=()=>ye(Mc),Ah=e=>{e.provide(Mc,Lh)},Ph=()=>b(()=>import("./highlight.esm-75b11b9d.js"),[]),Ch=()=>b(()=>import("./markdown.esm-abe06b83.js"),[]),kh=()=>b(()=>import("./math.esm-70a288c8.js"),[]),xh=()=>b(()=>import("./notes.esm-a106bb2c.js"),[]),Ih=()=>b(()=>import("./reveal.esm-ec5549c1.js"),[]),Rh=()=>b(()=>import("./search.esm-7e6792e2.js"),[]),Sh=()=>b(()=>import("./zoom.esm-b83b91d0.js"),[]);const Dh=()=>[Ih(),Ch(),Ph(),kh(),Rh(),xh(),Sh()];var $h=H({name:"Presentation",props:{id:{type:String,required:!0},code:{type:String,required:!0},theme:{type:String,default:"auto"}},setup(e){const t=Oh(),n=Ie(),r=K(""),o=K(!0),l=Oe();let a=null;const s=async c=>{const u=[new Promise(v=>setTimeout(v,800)),...Dh()],[,i,...f]=await Promise.all(u),p=new i.default(c,{backgroundTransition:"slide",hash:n.value.layout==="Slide",mouseWheel:n.value.layout==="Slide",transition:"slide",slideNumber:!0,...t,...n.value.reveal||{},embedded:n.value.layout!=="Slide",plugins:[...f.map(({default:v})=>v),...t.plugins??[]]});return await p.initialize(),p};return de(async()=>{const c=l.value;c&&(r.value=on(e.code),c.setAttribute("id",e.id),c.setAttribute("data-theme",e.theme),a=await s(c),o.value=!1)}),kt(()=>{a==null||a.destroy()}),()=>d("div",{class:"vp-reveal"},[d("div",{ref:l,class:["reveal","reveal-viewport"]},d("div",{class:"slides",innerHTML:`
    - +
    Skip to main content

    API

    abapGitAbout 4 minapi

    This page describes how to execute various abapGit tasks using your code.

    Note

    These classes and methods have existed for quite some time and are stable.
    However, they do not provide a guaranteed API. Future changes are a possibility.

    Repositories

    Create Online

    Create a new abapGit repository for a given online project and branch and associate it with an SAP package:

    DATA(lo_repo) = zcl_abapgit_repo_srv=>get_instance( )->new_online(
    @@ -207,6 +207,6 @@
       iv_path = lv_file_with_path
       iv_xstr = lv_xstr ).
     

    Progress Indicator

    The default progress indicator shows progress in SAP GUI, however, it is possible to inject a custom progress indicator via ZCL_ABAPGIT_PROGRESS=>SET_INSTANCE which can catch the status in non-SAP GUI scenarios.

    - + diff --git a/development-guide/api/index.html b/development-guide/api/index.html index f6ccce4a7..e2b764edb 100644 --- a/development-guide/api/index.html +++ b/development-guide/api/index.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    API

    abapGitLess than 1 minute

    Catalog

    - + diff --git a/development-guide/index.html b/development-guide/index.html index 0c5b083d5..5663453e4 100644 --- a/development-guide/index.html +++ b/development-guide/index.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Development Guide

    abapGitLess than 1 minute

    - + diff --git a/development-guide/read-first/changelog.html b/development-guide/read-first/changelog.html index efa6c4612..9db39a287 100644 --- a/development-guide/read-first/changelog.html +++ b/development-guide/read-first/changelog.html @@ -31,7 +31,7 @@ } - +
    Skip to main content

    Changelog

    abapGitLess than 1 minuteread-first

    abapGit allows showing a changelog notes, based on the changelog file in the repository base, and on APACK class containing the current version.

    abapGit itself does not use APACK and gets the current version from zif_abapgit_version=>c_abap_version. The version is then used to determine if the changelog was updated and should be shown to the user.

    Here's what the settings look like for another repository:

    version_setup
    version_setup

    File format

    A file named with pattern CHANGELOG* or changelog*

    The changelog file should have a specific format:

    Header with the title

    abapGit changelog
    @@ -46,6 +46,6 @@
     ------------------
     + Notes.....
     

    Check abapGit changelogopen in new window as an example.

    - + diff --git a/development-guide/read-first/contributing.html b/development-guide/read-first/contributing.html index 5bf57cd4b..2c20f457e 100644 --- a/development-guide/read-first/contributing.html +++ b/development-guide/read-first/contributing.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Contributing

    abapGitAbout 1 minread-first

    General contribution guidelines can be found hereopen in new window.

    How to submit a pull request:


    Having already installed the abapGit standalone program,

    1. Install the development version of abapGit, by running ZABAPGIT_STANDALONE and either:

      1. cloning your own forkopen in new window of the abapGit repositoryopen in new window using abapGit's "New Online" option or
      2. downloading the zip file and installing it using the "New Offline" option
    2. When specifying a package for the repository in step 1, assign a different (new, e.g. $ZABAPGIT) package to the one ZABAPGIT_STANDALONE is in

    3. Your system will now contain the abapGit package, along with several sub-packages and development objects such as classes, interfaces, function groups, etc. There will also be the development version of the abapGit program (transaction ZABAPGIT). The standalone program, ZABAPGIT_STANDALONE will remain unaffected, to serve as fallback.

    4. Make your changes to abapGit development objects and test locally.

    5. Using abapGit on your system, commit the changes to your online fork (so if you had chosen the "offline" option in step 1, you will need to have switched to online).

    6. Submit a pull requestopen in new window with the changes.

    Alternatively to the steps above, use the GitHub web interface to change the files directly on a GitHub branch of your forked abapGit repository and then submit a pull request. This might make sense when, e.g., contributing to the documentation files such as the one you are reading right now (where contributions may be initiated through the "Edit this page" link below).

    If you already have an old fork and would like to create a new pull request, you can sync your old fork to the current state following this guide: Sync your fork to original repositoryopen in new window.

    After your pull request is merged to the abapGit default branch, abapmerge will automatically run to build the standalone report version of abapGit. Every time a commit is pushed to the default branch, GitHub Actions is triggered to perform this build. It uses abapmergeopen in new window to merge all the includes into a single file (the standalone version) which can be downloaded from hereopen in new window

    - + diff --git a/development-guide/read-first/guidelines.html b/development-guide/read-first/guidelines.html index 8c6f43aed..55fa943b6 100644 --- a/development-guide/read-first/guidelines.html +++ b/development-guide/read-first/guidelines.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Development Guidelines

    abapGitAbout 2 minread-first

    Object Types

    abapGit is merged into a stand-alone version. For this reason, the only allowed object types for new repository objects are classes and interfaces. In particular, function groups or modules must not be included.

    Exceptions for existing objects:

    • Transaction ZABAPGIT
    • Program ZABAPGIT and includes
    • Function group ZABAPGIT_PARALLEL for parallel serialization (only available in the developer version)
    • MIME objects ZABAPGIT_* for UI (CSS, JS, and fonts)

    Conventions

    Naming

    Object Prefixing

    Classes and interfaces are prefixed using zcl_abapgit_ or zif_abapgit_ (zcx_abapgit_ for exception classes, lcl_ and ltcl_ for local and test classes).

    Object Descriptions

    The description of objects should begin with abapGit - ... (for example, abapGit - Repository Content List). For serializer classes, the text should contain the TADIR object type and description (for example, abapGit - INTF - Interface (ABAP Objects)).

    Variable Prefixing

    Variables are prefixed using the standard setting in abapOpenChecks Naming Conventionsopen in new window

    Downport

    Syntax

    abapGit is targeted for version 7.02open in new window and higher. Therefore, the code must only contain expressions and statements that work on 7.02.

    abaplintopen in new window will automatically check every pull request for language syntax that is compatible with 7.02.

    Standard Objects

    The code must only reference standard SAP objects (classes, interfaces, DDIC types) that exist in version 7.02 and higher. Referencing objects that do not exist in 7.02 creates syntax errors and therefore requires using dynamic ABAP. DDIC types that do not exist in 7.02 should be replaced by local type definitions.

    File Formats

    General file format guidelines are specified in .editorconfigopen in new window. If you are using abapGit to push files to the repository, these guidelines are followed automatically.

    If you are editing files outside of SAP GUI or ADT, for example on GitHub.comopen in new window or in VS Code, the most common issues are using cr instead of lf at end of line, missing new line at end of file, and missing BOM at beginning of XML files. Please ensure that your IDE is setup to follow the .editorconfig specifications to avoid any issues.

    For more details, see editorconfig.orgopen in new window.

    Info

    VS Code requires an extension for .editorconfig which you can find at marketplaceopen in new window.

    Formatting the Source Code

    Line Width

    The maximum width of ABAP source code should be set at 120 characters per line and is checked during linting.

    Pretty Printer

    Use pretty-printer, keywords upper case + indentation, abapOpenChecksopen in new window can be used for checking this.

    Dynpros

    For the user interface, we are moving towards everything in HTML, i.e. new Dynpro screens or the use of Dynpro screens and popups should not be added to the source code.

    abaplint

    Pull requests must pass all abaplint configured checks before they can be merged. You find the current rules in abaplint.jsonopen in new window.

    Info

    You can view abaplint findings directly in abapGit using an extensionopen in new window.

    eslint

    JavaScript is checked using eslint. You can find the rules hereopen in new window. All JavaScript code has to adhere to ES5 (ECMAScript 2009open in new window) to be compatible with the IE-based HTML browser control used in older releases of SAP GUI.

    Internationalization (I18N)

    abapGit supports only the English language. Neither objects nor text literals are translated. Therefore, all objects shall be set to English as the original language, and text literals in the code shall be maintained in English.

    Since there's only one language, using the ##NO_TEXT pragma is not required and will actually lead to lint errors. The exceptions are global class and interface definitions, where the pragmas are added automatically by SE24/SE80.

    - + diff --git a/development-guide/read-first/index.html b/development-guide/read-first/index.html index b2f0696b4..2ce00e154 100644 --- a/development-guide/read-first/index.html +++ b/development-guide/read-first/index.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Read First

    abapGitLess than 1 minute

    - + diff --git a/development-guide/read-first/package-structure.html b/development-guide/read-first/package-structure.html index 7e87bdc22..1390bc4f1 100644 --- a/development-guide/read-first/package-structure.html +++ b/development-guide/read-first/package-structure.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Package Structure

    abapGitLess than 1 minuteread-first

    Package Structure

    Various conventions for packages,

    /src/git/

    Raw git client, uses http package

    Does not know about UI, objects or repositories, everything is file based.

    Ideally possible to run and use standalone

    /src/ui/core/

    UI framework

    Does not know about objects or repositories

    Ideally possible to run and use standalone

    /src/http/

    Raw http client

    Does not know about UI, objects or repositories

    Ideally possible to run and use standalone

    /src/json/

    Don't do any manual changes in this folder, its a renamed copy of https://github.com/sbcgua/ajsonopen in new window via https://github.com/abapGit/ajson_mirroropen in new window

    /src/objects/aff/

    Dont do any manual changes in this folder, mirroed from https://github.com/abapGit/aff_mirroropen in new window

    - + diff --git a/development-guide/read-first/versioning.html b/development-guide/read-first/versioning.html index cd2102054..4ed768dfe 100644 --- a/development-guide/read-first/versioning.html +++ b/development-guide/read-first/versioning.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Versioning

    abapGitAbout 1 minread-first

    abapGit is continuously developed and updated. The main branch always represents the latest development version and corresponds to the published standalone version.

    abapGit does not have a predefined release cycle. However, we strive to tag a new version once a month (or two).

    Version

    abapGit follows semantic versionopen in new window format. The community has settled on releasing enhancements and changes as minor versions. A more granular approach to releasing every change as a patch is adding too much overhead.

    Example release sequence: 1.118.0 > 1.119.0 > 1.120.0

    Changelog

    All additions, changes, fixes, and removals that are relevant to abapGit users are listed in the changelog.

    Reorgs, refactoring, or changes related to testing or repo actions are omitted from the changelog.

    Since abapGit is enforcing a linear history, you can find all changes in commit listopen in new window of the main branch.

    Process

    The following steps need to be taken to create a new abapGit version:

    1. Create a new branch name like the new version. For example, v1.121.0.
    2. Update zif_abapgit_versionopen in new window and increase the minor version of constant c_abap_version by one. Example: '1.120.0' > '1.121.'.
    3. Update changelog.txtopen in new window and add a section at the top for the new version.
    4. Compile a list of the relevant pull requests (see above) based on a comparison between the most recent tag and main. For example, v1.123.0 vs mainopen in new window.
    5. Label each change (PR) corresponding to the legend (*: fixed, !: changed, +: added, -: removed).
    6. Create a new, draft pull request from the new branch.
    7. Have the changes reviewed by someone else.
    8. On the release day, update the date in the changelog, and merge the pull request.

    The merge will trigger a GitHub action to automatically tag the new release and perform some downstream tasks (like updating the build repository).

    - + diff --git a/development-guide/serializers/file-formats.html b/development-guide/serializers/file-formats.html index 2805fe0ee..8d43b1022 100644 --- a/development-guide/serializers/file-formats.html +++ b/development-guide/serializers/file-formats.html @@ -31,7 +31,7 @@ } - +
    Skip to main content

    File Naming and Formats

    abapGitAbout 2 minserializers

    All files for an object are located in the same folder, each folder corresponds to a package. Sub-packages are organized under parent packages (directories) according to the logic described in the Repository Settings.

    Naming

    In general, the names of files containing the object definitions are derived from the TADIR entry i.e. object type and object name. Filenames are lower case and adhere to the following patterns:

    • <object_name>.<object_type>.<extension>: Object metadata. Supported extensions: xml or json
    • <object_name>.<object_type>.<extra>.<extension>: Additional object data. Typical extensions: abap, html, js, etc.
    • <object_name>.<object_type>.i18n.<language>.<extension>: Language-specific translation files: Supported extensions: po or properties

    Codepage, EOL, EOF, Indentation

    Metadata, ABAP coding, and translation files are stored in UFT-8 with leading Byte-order-mark (xEF BB BF)open in new window, linefeed (x0A) as end-of-line character and a final newline character. Indentation is set to 2 and uses spaces, not tabs. See .editorconfigopen in new window for details.

    Formats

    Classic abapGit Format

    Each object is represented by at least one XML file, which contains the object metadata. Depending on the object type, other files may be added like a file with abap extension for source code.

    The XML file contains a root <abapGit> tag which specifies the serializer class and version used by abapGit to convert the object to files and vice versa (see example below).

    Translations are either included in the XML file or stored in a separate i18n.<language>.po file.

    Example

    Here's an example for an ABAP OO Class, object type CLAS (See also test repoopen in new window).

    The following files correspond to the editable parts in source-based class builder or ABAP in Eclipse:

    • zcl_example.clas.abap
    • zcl_example.clas.locals_def.abap
    • zcl_example.clas.locals_imp.abap
    • zcl_example.clas.testclasses.abap
    • zcl_example.clas.macros.abap

    Files do not exist if empty, i.e. the developer did not choose to implement them.

    One XML file zcl_example.clas.xml containing:

    *<?xml version="1.0" encoding="utf-8"?>
    @@ -53,6 +53,6 @@
     
     *: 
     

    Example XML data:

    • VSEOCLASS information
    • TPOOL information
    • SOTR information
    • LINES from DOKU
    • Descriptions from SEOCOMPOTX

    SAP ABAP File Format

    Newer object types are represented by a JSON file and follow the ABAP File Format (AFF)open in new window.

    Object types supporting AFF are registered hereopen in new window.

    Translations are stored in separate i18n.<language>.properties files (see AFF properties fileopen in new window).

    Source Code Reference

    zcl_abapgit_filename_logicopen in new window

    • file_to_object: Get object from filename and path
    • object_to_file: Get filename from object
    • detect_object_definition: Return flags to detect if filename represents an object definition i.e. has an xml or json extension
    • is_obj_definition_file: Return boolean flag, if the filename represents an object definition or not (metadata)
    - + diff --git a/development-guide/serializers/index.html b/development-guide/serializers/index.html index 110021407..6c366a8c3 100644 --- a/development-guide/serializers/index.html +++ b/development-guide/serializers/index.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Serialization

    abapGitLess than 1 minute

    - + diff --git a/development-guide/serializers/overview.html b/development-guide/serializers/overview.html index 5ec458df9..a2cd72c7a 100644 --- a/development-guide/serializers/overview.html +++ b/development-guide/serializers/overview.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Overview

    abapGitLess than 1 minuteserializers

    Overview

    An abapGit Serializer is an ABAP class that supports creating, reading, updating, and deleting (CRUD) objects of a given object type. In abapGit, the reading of an object is implemented in a serialize method. Create and update are combined into a deserialize method. There is a delete method to remove an object from the system.

    All object serializers must implement interface ZIF_ABAPGIT_OBJECT and be named ZCL_ABAPGIT_OBJECT_{type}, where {type} is the corresponding SAP object type (TADIR-OBJECT). As a description for the class, use {type} - {description of type} (for example, TABL - Table). It's recommended to use ZCL_ABAPGIT_OBJECTS_SUPER as a superclass since it provides several convenient methods.

    In general, only SAP Standard APIs for retrieving and updating object information shall be used. If that is not possible, try using ZCL_ABAPGIT_OBJECTS_GENERIC which handles any logical transport object.

    As code is stored in git, no usernames, timestamps, states (e.g. active/inactive), or other system-specific information should be part of the serialized object files. Only the active, most recent, and consistent version of an object shall be serialized.

    Auto-generated artifacts should be skipped if possible, for example, a CDS view might generate a VIEW artifact, and the VIEW should not be serialized, as it is not something the developer creates.

    If an inactive version of an object exists, the class shall indicate so in the is_active method. abapGit displays such objects with a yellow bolt icon in the repo view. However, the inactive version must be ignored by the serializer.

    As a result, a repo shall only contain the definition of active objects. Therefore, the deserializer can assume that the repo has a consistent object definition and shall create an active version of the object (or update and activate it).

    - + diff --git a/development-guide/serializers/serializers.html b/development-guide/serializers/serializers.html index 15a6c0f9d..4716ee327 100644 --- a/development-guide/serializers/serializers.html +++ b/development-guide/serializers/serializers.html @@ -31,7 +31,7 @@ } - +
    Skip to main content

    Serializer Class

    abapGitAbout 5 minserializers

    Constructor

    The constructor is implemented in the superclass and takes two parameters as input:

    ParameterDescription
    IS_ITEMContains object type, object name, SAP package, and state (active/inactive)
    IV_LANGUAGEContains the language key for the main language of the repository
    IO_FILESCollection of files associtated with the object
    IO_I18N_PARAMSParameters related to translation of objects

    These parameters are stored in attributes MS_ITEM, MV_LANGUAGE, MO_FILES, and MO_I18N_PARAMS respectively.

    Requirements that are necessary to support an object type should be checked in the constructor using the following logic. This is typical if object types are not supported in lower releases.

      METHOD constructor.
    @@ -53,6 +53,6 @@
     
       ENDMETHOD.
     

    This will ensure that none of the other class methods are called, even if objects of the given type exist in a repo.

    Example: SRFCopen in new window.

    Interface

    Serializers must implement all methods of interface ZIF_ABAPGIT_OBJECTopen in new window:

    MethodDescription
    SERIALIZEContains all process steps to read the relevant object type-specific information and serialize it (as one or more files)
    DESERIALIZEContains all process steps to create or update an object based on one or more files
    DELETEContains all process steps to delete an object based on one or more files
    EXISTSReturns whether a given object already exists in any state (i.e. return abap_true for inactive objects)
    IS_LOCKEDReturns whether a given object is currently locked
    IS_ACTIVEReturns whether a given object exists in an active state
    CHANGED_BYReturns the name of the user who last changed a given object (if undetermined, return c_user_unknown)
    JUMPNavigates to the corresponding object maintenance screen
    GET_METADATAReturns object-specific metadata (see below)
    GET_COMPARATORTriggered before deserialization to perform checks (for example, to warn the user that database tables are changed)
    GET_DESERIALIZE_STEPSDefines the deserialzation step or steps used to build the processing sequence (see below)
    GET_DESERIALIZE_ORDERReturns the list of objects that shall be deserialized before an object (optional, see below)
    MAP_FILENAME_TO_OBJECTDerive the object from a given filename (optional)
    MAP_OBJECT_TO_FILENAMEDerive the filename from a given object (optional)

    Example: DOMAopen in new window.

    Metadata

    It is mandatory to provide the following metadata:

    AttributeDescription
    CLASSTechnical name used to identify the serializer within serialized XML files (format LCL_OBJECT_{type})
    VERSIONVersion number of the serializer (format v1.0.0)

    It's recommended to fill CLASS and VERSION metadata using SUPER->GET_METADATA( ) and then change settings as required.

    Deserialization Step

    It is mandatory to provide at least one deserialization step (see below).

    Deserialization Order

    This method is used to return a list of objects that shall be deserialized before the given object.

    Super Class

    Serializers can take advantage of the following methods in ZCL_ABAPGIT_OBJECTS_SUPERopen in new window:

    MethodDescription
    GET_METADATAReturn default metadata for class and version
    CORR_INSERTInsert the object into a transport (for transportable objects)
    TADIR_INSERTInsert the object into TADIR
    TADIR_DELETEDelete the object from TADIR
    EXISTS_A_LOCK_ENTRY_FORCheck if an enqueue lock exists
    SET_DEFAULT_PACKAGESet SAP package for RS_CORR_INSERT when it can't be supplied via APIs
    SET_DEFAULT_TRANSPORTSet transport request for RS_CORR_INSERT when it can't be supplied via APIs
    IS_ACTIVEMethod to check if an ABAP Workbench object or its parts are active
    DELETE_DDICMethod to remove DDIC objects

    In addition, there are some methods to handle documents associated with an object (transaction SE61, table DOKIL).

    MethodDescription
    SERIALIZE_LONGTEXTSSerialize document including I18N handling
    DESERIALIZE_LONGTEXTSDeserialize document including I18N handling
    DELETE_LONGTEXTSDelete document
    SERIALIZE_LXE_TEXTSSerialize translation texts (new approach, see below)
    DESERIALIZE_LXE_TEXTSDeserialize translation texts (new approach, see below)

    Generic Class

    If it's not possible to provide a native implementation for an object serializer, using generic class ZCL_ABAPGIT_OBJECTS_GENERICopen in new window is possible for logical transport objects (see table OBJH, object type L).

    Example: IWMOopen in new window.

    Serialize Object

    The serialize method shall produce one or several files containing the data that represents a given object. There are a few methods available to define files and attach data using ZIF_ABAPGIT_OUTPUT_XMLopen in new window (input parameter IO_XML).

    MethodDescription
    ADDAppend a value, structure, or internal table to the output (using ID transformation to XML suppressing initial fields)
    ADD_XMLAppend an instance of an XML document to the output (IF_XML_ELEMENT)
    SET_RAWSet the output to an instance of an XML document (IF_XML_ELEMENT)
    I18N_PARAMSGet the settings for internationalization (see below)

    Deserialize Object

    The deserialize method shall read the file or files representing a given object and create the object in the system. If the object already exists, it shall be updated according to the definition in the file or files. There are a few methods available to process files using ZIF_ABAPGIT_INPUT_XMLopen in new window (input parameter IO_XML).

    MethodDescription
    READReturn a value, structure, or internal table from the input (using ID transformation from XML accepting data loss)
    GET_RAWReturn the input as an instance of an XML document (IF_XML_ELEMENT)
    GET_METADATAReturn the metadata used at the time of serializing the object
    I18N_PARAMSGet the settings for internationalization (see below)

    In addition, the deserialize method must add or update the TADIR entry for the given object and insert the object into a transport request (for transportable packages). If the used SAP APIs are not performing these tasks, TADIR_INSERT( iv_package ) and CORR_INSERT( iv_package ) shall be called by the deserialize method.

    Activate Object

    After deserializing, an object (or dependent objects) might have to be activated. Add such objects to the activation queue using [ZCL_ABAPGIT_OBJECTS_ACTIVATION]:

    MethodDescription
    ADDAppend a given object type and name to the queue (for example, INDX {table} for database indexes when deserializing tables)
    ADD_ITEMAppend a given object to the queue (for example, use ms_item for activating the object itself)

    The activation queue is built separately for each phase (see 'Deserialize Process' below).

    Internationalization (I18N)

    In general, the serializer class shall process texts of an object in all available languages i.e. the original language as well as any translations. It shall respect the "Serialize Main Language Only" setting of a repository and limit the texts to the language provided to the constructor (MV_LANGUAGE).

    The recommended approach is to check io_xml->i18n_params( )-main_language_only = abap_false and then serialize the additional translations in the XML (typically using the I18N prefix). During deserialize, the translation languages can then be retrieved and processed accordingly.

    Example: TABLopen in new window.

    Note: A new approach for serializing translations based on LXE is under development. See #4470open in new window for further details and discussion.

    Testing

    When adding new serializers, add at least one test repository to the organization abapGit-testsopen in new window with the name of the object type in capitals (for example, TABLopen in new window. This test will be used by abapGit Continuous Integrationopen in new window.

    Example (using SUSH):

    1. Go to https://github.com/abapGit-tests/SUSHopen in new window and create a fork
    2. In your system (where you have the new SUSH class), start abapGit and create a new online repo for the URL of your fork (pick any local package like $SUSH).
    3. Add one SUSH object to this package (like ZAG_UNIT_TEST)
    4. Go back to abapGit and you should see the new object in the object list of the repo
    5. Stage everything and commit
    6. Go to your forked repo and create a pull request (at the top there's a section showing the delta to the original and a compare button which you can click to create the PR)

    Processing Order and Dependencies

    Serialize Process

    abapGit determines which objects need to be serialized based on the SAP package assigned to a repository (including sub-packages unless "Ignore sub-packages" is selected in the repository settings). The list of objects is then sorted by package, object type, and object name.

    If a sufficient number of work processes is available, abapGit will activate objects in parallel (unless "Disable Parallel Processing" is selected in the repository settings).

    For details, see ZCL_ABAPGIT_SERIALIZEopen in new window.

    Deserialize Process

    Objects are deserialized in three phases. After each phase, all objects included in the phase will be activated.

    StepDescriptionActivation
    EARLYUsed for objects (like classes and interfaces) that are dependencies for DDIC objectsNone
    DDICUsed for DDIC objects which require processing and activation before other object typesDDIC Mass Activation
    ABAPUsed for non-DDIC objects (code or mostly anything else) which might depend on DDIC objectsWorkbench Mass Activation
    LATEUsed for objects that depend on other objects processed in the previous two phasesDDIC & Workbench Mass Activation

    Within each phase, the sequence of objects is determined by abapGit based on known object type dependencies. For details, see method PRIORITIZE_DESER in ZCL_ABAPGIT_FILE_DESERIALIZEopen in new window.

    Uninstall Process

    During the uninstallation of a repository, abapGit will determine the objects in the same fashion as the serialize process. The sequence of objects is determined by abapGit based on known object type dependencies. For details, see method RESOLVE in ZCL_ABAPGIT_DEPENDENCIESopen in new window.

    Note: There are suggestions to refactor the logic to determine the processing orderopen in new window.

    - + diff --git a/development-guide/serializers/task-list.html b/development-guide/serializers/task-list.html index 0fe9efd69..17050900d 100644 --- a/development-guide/serializers/task-list.html +++ b/development-guide/serializers/task-list.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    New Serializers

    abapGitAbout 2 minserializers

    Task List for New Serializers

    The following list includes the mandatory and recommended tasks for adding a new serializer to abapGit:

    1. Check Support for New Object Typesopen in new window

      If the object type is listed already (and not implemented), check the corresponding issue. Typically, you will find valuable discussions to continue or previous work to use as a starting point.

      If the object type is not included in the list, create an issueopen in new window with the title "<OBJECT_TYPE>: Support for <OBJECT_TYPE_DESCRIPTION>" (for example, "TABL: Support for Tables"). Briefly describe why the object is needed and outline the implementation approach.

    2. Wait for the OK from abapGit maintainers

      Before starting the implementation, it's best to wait for feedback from the community. Once you get the go-ahead, the issue will be assigned to you.

    Info

    abapGit maintainers will add your issue to a central listopen in new window and, if there's no further discussion required, close it.

    1. Implement the serializer class

      Follow the instructions below. Often, it makes sense to use an existing serializer class as a template. This can save a lot of work especially if the new object type is similar to others.

    Note

    Your code must comply with the development guidelines for abapGit. Most notably your code must be compatible with 7.02 ABAP syntax and available standard SAP objects, use prefixing of variables, be pretty-printed, and pass all abaplint checks.

    You might get lots of abaplint errors. If you are uncertain how to resolve these, maintainers are happy to help.

    1. Create a test repository

      Define a minimal test case for the new object type and commit it to a test repo in abapGit Test Repositoriesopen in new window. If you don't have access, use the issue you created initially to ask for it. See "Testing" below for an example.

    2. Test your implementation

      Perform a complete test cycle with your test repository:

      • Create New Online Repo for a local package (for example $TABL)
      • Execute a Pull (should install without any diffs)
      • Uninstall the repository (should not leave any objects of TADIR entries behind)
      • Repeat the process for a transportable package (for example ZTABL)
    3. Create a pull request for your implementation

      Fork the abapGit repository and add a branch for your serializer class. Commit your implementation (the zcl_abapgit_object_<type> class) to the branch, and create a pull request to the abapGit repository. Reference your issue in the pull request and add a link to the test repository.

      Note: Object types using the ABAP File Format must be added to the AFF Registryopen in new window as well.

    4. Update documentation

      Add the new object type to the list of supported objects. If the object type is using the ABAP File Format (JSON), add a link to the corresponding JSON schema in the AFF repositoryopen in new window.

    5. Wait for feedback from and merge by abapGit maintainers

      One of the maintainers will typically do a code review, run the test themselves, and either provide feedback or merge the pull request.

    6. Completing tasks

      After a successful merge, abapGit developer and standalone version will support the new object type. Congratulations. Feel free to tell the world about it!

    - + diff --git a/development-guide/technical-details/docs.html b/development-guide/technical-details/docs.html index 5db410d0e..5def115dc 100644 --- a/development-guide/technical-details/docs.html +++ b/development-guide/technical-details/docs.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Documentation

    abapGitLess than 1 minutedetails

    abapGit uses GitHub Pagesopen in new window for documentation.

    The website itself is created via VuePress (v2)open in new window together with the MIT licensed theme Hope Themeopen in new window.

    All used icons are freely available at Font Awesomeopen in new window.

    Running the site locally

    1. npm install

    2. npm run docs:dev

    3. Open the URL http://localhost:8080 in a browser

    - + diff --git a/development-guide/technical-details/index.html b/development-guide/technical-details/index.html index 4b47db56d..78b347d84 100644 --- a/development-guide/technical-details/index.html +++ b/development-guide/technical-details/index.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Technical Details

    abapGitLess than 1 minute

    - + diff --git a/development-guide/technical-details/technical-links.html b/development-guide/technical-details/technical-links.html index 82943fccc..824770113 100644 --- a/development-guide/technical-details/technical-links.html +++ b/development-guide/technical-details/technical-links.html @@ -31,7 +31,7 @@ } - +
    Skip to main content

    Links

    abapGitLess than 1 minutedetails

    - + diff --git a/development-guide/testing/ci.html b/development-guide/testing/ci.html index 11157cf8f..6ee7dff69 100644 --- a/development-guide/testing/ci.html +++ b/development-guide/testing/ci.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    CI Tests

    abapGitAbout 1 mintesting

    abapGit CI Tests

    Results from latest CI run: https://ci.abapgit.orgopen in new window

    Repo abapGit CIopen in new window provides basic continuous integration capabilities for abapGit. The repository aims to test the serialization and deserialization of object types, as these cannot be unit-tested properly.

    The CI process fetches abapGit test repos from abapGit Testsopen in new window. Then for each repository, the following steps are executed:

    • create a package (if needed)
    • clone
    • pull
    • syntax check
    • object check
    • create transport request
    • purge (uninstall)
    • delete transport request
    • check for leftovers

    Additionally, a set of generic tests is performed checking the latest abapGit build.

    If there is any error in these steps abapGit CI will indicate that.

    Run report ZABAPGIT_CI_UPDATE_ABAPGIT to update the abapGit repo.

    Run report ZABAPGIT_CI_UPDATE_ABAPGIT_CI to update the abapGit CI repo.

    There are currently three possibilities to run abapGit CI:

    1. Adhoc CI with report ZABAPGIT_CI

    Selection screen:

    abapGit CI selection screen
    abapGit CI selection screen

    Result list:

    abapGit CI results
    abapGit CI results

    2. REST API

    POST /sap/zabapgit_ci/run

    response.json

    3. Schedule job sequence with report ZABAPGIT_CI_JOB_SCHEDULER

    A job sequence is created with

    1. Update abapGit repo
    2. Update abapGit CI repo
    3. Run abapGit CI
    abapGit CI job scheduler
    abapGit CI job scheduler

    Check transportable packages

    Optionally you can also let abapGit CI create the repositories in transportable packages. You need to activate the checkbox in the selection screen and specify the transport layer. Then the pull and purge actions will each get recorded into a transport request per repository. These get released and their content is checked to ensure it matches the objects in the repository.

    To set up a suitable transport landscape on the AS ABAP Developer Edition you need to create a new virtual system in STMS (for example EXP, Virtual export system). This serves as a dummy export target for transport requests. Next, you need to create a new transport layer (for example ZEXP) and connect the current system and the virtual system with it. Then save and activate the configuration.

    STMS transports landscape
    STMS transports landscape

    Prerequisites

    There are a few prerequisites for running the CI test suite:

    • abapGit developer version must be installed
    • SAP Basis 7.50 or higher
    • Tests are hosted at https://github.com/abapGit-testsopen in new window
    • Test objects shall be included in SAP Basis 7.50 (Exception: the main object type is only available in higher releases)
    • Test objects from SAP ERP or industry solutions shall be avoided (Exception: the main object type is only available in ERP)
    - + diff --git a/development-guide/testing/debugging.html b/development-guide/testing/debugging.html index dd4e5387f..6120a228a 100644 --- a/development-guide/testing/debugging.html +++ b/development-guide/testing/debugging.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Debugging

    abapGitAbout 1 mintesting

    ABAP

    Using the standalone version for debugging is not recommended since the very large source will have to be loaded and parsed by the debugger. It's much more efficient to debug using the developer version.

    If you suspect an issue in the object serializer classes, then be sure to disable parallel processing in the abapGit settings. Otherwise, the debugger will not stop at your break points.

    In case you can't resolve or pinpoint the issue, try to reproduce it using a case from the abapGit-testopen in new window organization. If you don't find a test case, open an issue and we will create a new repo for it.

    JavaScript

    Some pages in abapGit contain JavaScript. If the script fails, you typically see the following banner:

    Script Issue
    Script Issue

    Also, the lower right corner of the HTML output will NOT show "JS OK". Troubleshooting depends on the type of SAP GUI you are using.

    Note

    Check SAP GUI Setup for known issues related to SAP GUI.

    SAP GUI for Windows

    If you are using SAP GUI 7.6 or below, or SAP GUI 7.7 and higher with Internet Explorer browser control, then follow these instructions on how to use the IE Debugger in abapGit:

    Obscure productivity tips: Debug Javascript running within SAPGUI browseropen in new window

    If you are using SAP GUI 7.7 or higher with Edge (Chrome) browser control, use the developer tools that come with WebView2:

    General: Debug WebView2 Appsopen in new window
    SAP Note 3099670open in new window - SAP GUI for Windows Chromium-based Edge Control: Adding remote debugging feature
    How to Debug WebView2 in SAP GUIopen in new window

    SAP GUI for HTML (Web)

    Troubleshooting depends on the type of browser you are using.

    SAP GUI for Java

    JavaScript is not supported with this SAP GUI.

    Web Edition

    Running abapGit completely in a browser is still a proof-of-concept. Open an issue hereopen in new window.

    - + diff --git a/development-guide/testing/index.html b/development-guide/testing/index.html index 3c43090af..03c8b61db 100644 --- a/development-guide/testing/index.html +++ b/development-guide/testing/index.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Testing

    abapGitLess than 1 minute

    - + diff --git a/development-guide/testing/tests.html b/development-guide/testing/tests.html index 4ab477840..f4987ceda 100644 --- a/development-guide/testing/tests.html +++ b/development-guide/testing/tests.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Unit Tests

    abapGitLess than 1 minutetesting

    abapGit uses dependency lookup as an approach for writing unit tests, see examples in ZCL_ABAPGIT_TADIR, ZCL_ABAPGIT_FACTORY, and ZCL_ABAPGIT_INJECTORopen in new window.

    Unit tests that create and delete objects in the system are categorized as dangerous, these tests can be enabled via "Advanced > Settings".

    Use organization abapGit-testsopen in new window for storing serialization test cases.

    - + diff --git a/development-guide/user-interface/adding-icons.html b/development-guide/user-interface/adding-icons.html index 9ff1c6db1..652511d50 100644 --- a/development-guide/user-interface/adding-icons.html +++ b/development-guide/user-interface/adding-icons.html @@ -31,10 +31,10 @@ } - +
    Skip to main content

    Icons

    abapGitLess than 1 minuteui

    abapGit uses SIL and MIT-licensed fonts, they are included in the distribution as a MIME object. This includes MIME objects:

    • ZABAPGIT_ICON_FONT - font in WOFF format containing the custom icon set. WOFF is used due to compatibility, SAP GUI for Windows reusing Internet Explorer control (IE 11)
    • ZABAPGIT_ICON_FONT_CSS - CSS icon map

    To add an icon to the icon set follow the next procedure:

    1. Add the icon to repo abapGit Icon Fontopen in new window as documented hereopen in new window
    2. Get the new abapGit font and icon files from the icon-font GitHub action
    3. Go to transaction SMW0 and display the abapGit MIME objects (Binary > Package $abapgit)
    4. Upload the new font file to ZABAPGIT_ICON_FONT
    5. Upload the new CSS file to ZABAPGIT_ICON_FONT_CSS
    6. Start abapGit and commit the changes the abapGit/abapGitopen in new window repo (preferably in a separate commit)

    Please mind the licensing when adding icons that are not from Font Awesome.

    Info

    Alternatively you can use w3mipolleropen in new window for the upload step. See also UI - CSS and assets.

    - + diff --git a/development-guide/user-interface/developing-ui-css.html b/development-guide/user-interface/developing-ui-css.html index 6836b41d4..880d2960a 100644 --- a/development-guide/user-interface/developing-ui-css.html +++ b/development-guide/user-interface/developing-ui-css.html @@ -31,7 +31,7 @@ } - +
    Skip to main content

    CSS and Assets

    abapGitAbout 4 minui

    This documentation covers asset management, CSS processing, and recommended asset development flow. See also the UI - HTML Pages.

    TL;DR

    • If you add an asset - code it in ZCL_ABAPGIT_UI_FACTORY=>INIT_ASSET_MANAGER
    • There are 3 main CSS sheets to mind: ag-icons.css with icon definitions, common.css with layouts (don't use for colors!), and theme-default.css for colors
    • Custom themes ("Dark" and "Belize") are combined with "Default" so that missing attributes are inherited from the default one
    • abapGit uses internal CSS preprocessing to support CSS variables (which are otherwise not supported by IE - undercover browser of SAP GUI)
    • A convenient way for changing and uploading CSS and other assets is W3MIPOLLERopen in new window

    Asset Manager

    ZCL_ABAPGIT_GUI_ASSET_MANAGER class is responsible for managing static assets. Very briefly: relevant assets must be registered in the asset manager instance during GUI initiation so that they can be used in the browser UI. The registration happens in ZCL_ABAPGIT_UI_FACTORY=>INIT_ASSET_MANAGER. Here is an abstract from the method for example:

    DEFINE _inline.
    @@ -73,6 +73,6 @@
         <!-- COMMENT THIS ^^^^^^^^^^^^^^^^^^ -->
       </head>
     

    To edit CSS files you have to download them to the frontend, edit, debug in IE or Chrome Devtools, and upload them back. Doing so via SMW0 may be inconvenient for multiple assets (main CSS + themes + js). One of the solutions is to use W3MIPOLLERopen in new window. The idea of the tool is to define a connection between a MIME asset and a frontend file and then monitor file changes - as soon as you save the file, the poller detects it and automatically uploads it to the MIME storage.

    sel.screen
    sel.screen

    In the selection screen, you define one or several pairs MIME-to-File. You can also save them as variants. Choose the right option at the bottom:

    • Just start polling - just start the detection of changes
    • Download before polling - take existing MIME object and overwrite the files - useful for initial setup or after remote AG changes
    • Upload before polling - overwrites MIME object with existing files

    Just a handy recommendation: if you save a variant, save it with "just start polling", not to overwrite something occasionally.

    Run the program. After the initial action (if chosen) it will start monitoring file changes - leave it running. Eventually, after a file was modified, it will report the upload on the screen.

    result
    result

    The latest version of the w3mipoller has also an option to track all W3MI files in the package (and its sub-packages) at once. This can be convenient in case of simultaneous multiple file editing. Briefly:

    • choose the $ABAPGIT package
    • choose the root directory to save files to
    • optionally enter regex for file names (e.g. ".*css$" if you intend to edit css file only)
    • optionally select "Sort by ..." flag to split files by sub-directories by extension (since abapgit html pages refer to css/.. and js/.. URIs is may be helpful)
    • see more in project readmeopen in new window
    whole project
    whole project
    - + diff --git a/development-guide/user-interface/developing-ui-forms.html b/development-guide/user-interface/developing-ui-forms.html index 31c54d4d5..b775c7634 100644 --- a/development-guide/user-interface/developing-ui-forms.html +++ b/development-guide/user-interface/developing-ui-forms.html @@ -31,7 +31,7 @@ } - +
    Skip to main content

    HTML Forms

    abapGitAbout 2 minui

    This doc covers the HTML form component in abapGit UI. See also the UI - HTML pages.

    General

    There is a helper class to render HTML forms - zcl_abapgit_html_form. To see an example - open the online repo creation dialog (code: class zcl_abapgit_gui_page_addonline). Typical usage:

    • create the form (preferably in constructor - it is descriptive)
    • add fields one by one
    • for complex fields (radio) - add options right after the field
    • on render - pass zcl_abapgit_string_map instance of values and, optionally, a map of validation results (see below)
    • fields can be required (iv_required = abap_true)
    • fields can have tooltips (iv_hint = 'help for the field')
    • text fields may have placeholders (iv_placeholder = '...')
    • text fields may be uppercased (iv_upper_case = abap_bool - for normalization - see below)
    • text fields may have side-actions - button next to them - passing current form state to abap for additional logic and re-render
    • a form may have one or more commands at the bottom. Main ones (iv_is_main = abap_true) - will be highlighted
    
    @@ -109,6 +109,6 @@
         io_values         = mo_form_data
         io_validation_log = mo_validation_log ) ). " <<< ERRORS HERE
     
    - + diff --git a/development-guide/user-interface/developing-ui-js.html b/development-guide/user-interface/developing-ui-js.html index 393248644..33c4266d4 100644 --- a/development-guide/user-interface/developing-ui-js.html +++ b/development-guide/user-interface/developing-ui-js.html @@ -31,7 +31,7 @@ } - +
    Skip to main content

    JavaScript

    abapGitAbout 1 minui

    This documentation covers java script specifics in abapGit UI. See also the UI - HTML Pages.

    General

    abapGit UI contains JavaScript code. Some of the dynamic features rely on it e.g. keyboard navigation. The JS code is located in ui/zabapgit_js_common.w3mi.data.js - the recommended way to modify it is described in the "Recommended asset development flow" section of UI - CSS and Assets.

    As SAP GUI uses Internet Explorer component to render HTML the JS code must be optimized for IE11 (and use the features available in it). Although some polyfills are available (and more can be added) at the beginning of the code (like String.includes).

    The pull request CI check includes a run of eslint, so any new code should conform to the rules defined for the abapGit repository.

    Components

    The JS library contains several components which can be reused in different places.

    Command Palette

    To add a command palette add the following code in the script method of the page.

    ro_html->add( 'var gCommandPalette = new CommandPalette(enumerateFn, {' ).
    @@ -44,6 +44,6 @@
         title:     "Go home"         // title of the command
     }
     
    • toggleKey is a key to toggle the palette. "^" at the beginning requires Ctrl ("^g" = Ctrl+g )
    • hotkeyDescription is the description that is a) added to the shortkey help popup b) used as a placeholder in the command palette

    See an example of enumerators - enumerateToolbarActions and enumerateTocAllRepos.

    To-Do

    • debugOutput
    • submitSapeventForm
    • setInitialFocus
    • setInitialFocusWithQuerySelector
    • submitFormById
    • findStyleSheetByName
    • getIndocStyleSheet
    • toggleDisplay
    • Hotkeys.addHotkeyToHelpSheet
    • ...
    - + diff --git a/development-guide/user-interface/developing-ui-tables.html b/development-guide/user-interface/developing-ui-tables.html index c2d6d8142..be7a9a833 100644 --- a/development-guide/user-interface/developing-ui-tables.html +++ b/development-guide/user-interface/developing-ui-tables.html @@ -5,7 +5,7 @@ - HTML Tables | abapGit Docs + HTML Tables | abapGit Docs