diff --git a/stable b/stable index 25b294bf..9f925ba2 120000 --- a/stable +++ b/stable @@ -1 +1 @@ -v5.2.7 \ No newline at end of file +v6.0.0 \ No newline at end of file diff --git a/v6 b/v6 new file mode 120000 index 00000000..9f925ba2 --- /dev/null +++ b/v6 @@ -0,0 +1 @@ +v6.0.0 \ No newline at end of file diff --git a/v6.0 b/v6.0 new file mode 120000 index 00000000..9f925ba2 --- /dev/null +++ b/v6.0 @@ -0,0 +1 @@ +v6.0.0 \ No newline at end of file diff --git a/v6.0.0/404.html b/v6.0.0/404.html new file mode 100644 index 00000000..9dd61c0c --- /dev/null +++ b/v6.0.0/404.html @@ -0,0 +1,21 @@ + + + + + + 404 | GeoRegions.jl + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/v6.0.0/api.html b/v6.0.0/api.html new file mode 100644 index 00000000..864bbbde --- /dev/null +++ b/v6.0.0/api.html @@ -0,0 +1,24 @@ + + + + + + Application Programming Interface (APIs) | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Application Programming Interface (APIs)

This page contains a brief description of the functions not covered in the tutorials. I aim to describe what the functions do, their arguments, and what is returned.

# GeoRegions.checkpointFunction.
julia
checkpoint(plon, plat, rN, rS, rE, rW, tlon, tlat, throw) -> Bool

Check if a point with longitude and latitude coordinates plon and plat is found within a region defined by the bounds [rN,rS,rE,rW] format, with tlon and tlat being the threshold/margin of error for the longitude and latitude respectively.

Arguments:

  • plon::Real : Longitude of the point in question.

  • plat::Real : Latitude of the point in question.

  • rN::Real : North bound of region

  • rS::Real : South bound of region

  • rE::Real : East bound of region

  • rW::Real : West bound of region

  • tlon::Real : Threshold for longitude bounds in °. If set to 0, means that there is no leniency for the point to fall outside the longitude bounds

  • tlat::Real : Threshold for latitude bounds in °. If set to 0, means that there is no leniency for the point to fall outside the latitude bounds

  • throw::Bool : If throw=true, then if (plon,plat) is not within the region, an error is thrown and the program stops running.

source


# GeoRegions.checkgridFunction.
julia
checkgrid(gN, gS, gE, gW, rN, rS, rE, rW, tlon, tlat, throw) -> Bool

Check if a grid with bounds [gN,gS,gE,gW] is found within a region defined by the bounds [rN,rS,rE,rW] format, with tlon and tlat being the threshold/margin of error for the longitude and latitude respectively.

Arguments:

  • gN::Real : North bound of grid

  • gS::Real : South bound of grid

  • gE::Real : East bound of grid

  • gW::Real : West bound of grid

  • rN::Real : North bound of region

  • rS::Real : South bound of region

  • rE::Real : East bound of region

  • rW::Real : West bound of region

  • tlon::Real : Threshold for longitude bounds in °. If set to 0, means that there is no leniency for the point to fall outside the longitude bounds

  • tlat::Real : Threshold for latitude bounds in °. If set to 0, means that there is no leniency for the point to fall outside the latitude bounds

  • throw::Bool : If throw=true, then if (plon,plat) is not within the region, an error is thrown and the program stops running.

source


+ + + + \ No newline at end of file diff --git a/v6.0.0/assets/api.md.EwSGmM2a.js b/v6.0.0/assets/api.md.EwSGmM2a.js new file mode 100644 index 00000000..65009a86 --- /dev/null +++ b/v6.0.0/assets/api.md.EwSGmM2a.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as i,a7 as t}from"./chunks/framework.Bu--eeyr.js";const f=JSON.parse('{"title":"Application Programming Interface (APIs)","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),n={name:"api.md"},d=t('

Application Programming Interface (APIs)

This page contains a brief description of the functions not covered in the tutorials. I aim to describe what the functions do, their arguments, and what is returned.

# GeoRegions.checkpointFunction.
julia
checkpoint(plon, plat, rN, rS, rE, rW, tlon, tlat, throw) -> Bool

Check if a point with longitude and latitude coordinates plon and plat is found within a region defined by the bounds [rN,rS,rE,rW] format, with tlon and tlat being the threshold/margin of error for the longitude and latitude respectively.

Arguments:

source


# GeoRegions.checkgridFunction.
julia
checkgrid(gN, gS, gE, gW, rN, rS, rE, rW, tlon, tlat, throw) -> Bool

Check if a grid with bounds [gN,gS,gE,gW] is found within a region defined by the bounds [rN,rS,rE,rW] format, with tlon and tlat being the threshold/margin of error for the longitude and latitude respectively.

Arguments:

source


',6),a=[d];function r(l,s,c,p,h,g){return i(),o("div",null,a)}const b=e(n,[["render",r]]);export{f as __pageData,b as default}; diff --git a/v6.0.0/assets/api.md.EwSGmM2a.lean.js b/v6.0.0/assets/api.md.EwSGmM2a.lean.js new file mode 100644 index 00000000..bbb00de0 --- /dev/null +++ b/v6.0.0/assets/api.md.EwSGmM2a.lean.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as i,a7 as t}from"./chunks/framework.Bu--eeyr.js";const f=JSON.parse('{"title":"Application Programming Interface (APIs)","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),n={name:"api.md"},d=t("",6),a=[d];function r(l,s,c,p,h,g){return i(),o("div",null,a)}const b=e(n,[["render",r]]);export{f as __pageData,b as default}; diff --git a/v6.0.0/assets/app.CynYqdZY.js b/v6.0.0/assets/app.CynYqdZY.js new file mode 100644 index 00000000..f8acd2f4 --- /dev/null +++ b/v6.0.0/assets/app.CynYqdZY.js @@ -0,0 +1 @@ +import{R as p}from"./chunks/theme.BtnBj6uK.js";import{U as o,a8 as u,a9 as c,aa as l,ab as f,ac as d,ad as m,ae as h,af as g,ag as A,ah as y,d as P,u as v,y as w,x as C,ai as R,aj as b,ak as E,a6 as S}from"./chunks/framework.Bu--eeyr.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return w(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&R(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function j(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function x(){return g(T)}function D(){let e=o,a;return A(t=>{let n=y(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{j as createApp}; diff --git a/v6.0.0/assets/chunks/@localSearchIndexroot.DYUSP_8t.js b/v6.0.0/assets/chunks/@localSearchIndexroot.DYUSP_8t.js new file mode 100644 index 00000000..eab56881 --- /dev/null +++ b/v6.0.0/assets/chunks/@localSearchIndexroot.DYUSP_8t.js @@ -0,0 +1 @@ +const e='{"documentCount":54,"nextId":54,"documentIds":{"0":"/GeoRegions.jl/v6.0.0/api#Application-Programming-Interface-(APIs)","1":"/GeoRegions.jl/v6.0.0/example/placeholder#Examples-for-using-GeoRegions.jl","2":"/GeoRegions.jl/v6.0.0/georegions/create#Creating-GeoRegions","3":"/GeoRegions.jl/v6.0.0/georegions/create#Defining-a-new-GeoRegion","4":"/GeoRegions.jl/v6.0.0/georegions/create#Is-it-already-a-GeoRegion?","5":"/GeoRegions.jl/v6.0.0/georegions/create#Removing-an-existing-GeoRegion","6":"/GeoRegions.jl/v6.0.0/georegions/create#Reset-the-list-of-GeoRegions","7":"/GeoRegions.jl/v6.0.0/georegions/intro#What-is-a-GeoRegion?","8":"/GeoRegions.jl/v6.0.0/georegions/predefined#List-of-Available-GeoRegions","9":"/GeoRegions.jl/v6.0.0/georegions/predefined#Adapted-from-Giorgi-and-Francisco-[2000]","10":"/GeoRegions.jl/v6.0.0/georegions/predefined#SREX-Regions-adapted-from-Seneviratne-et-al.-[2012]","11":"/GeoRegions.jl/v6.0.0/georegions/predefined#AR6-Regions-adapted-from-Iturbide-et-al.,-[2020]","12":"/GeoRegions.jl/v6.0.0/georegions/read#Reading-in-Defined-GeoRegion-Information","13":"/GeoRegions.jl/v6.0.0/georegions/read#setup","14":"/GeoRegions.jl/v6.0.0/georegions/read#Retrieving-Information-about-a-Previously-Defined-GeoRegion","15":"/GeoRegions.jl/v6.0.0/georegions/read#The-Difference-between-Bounds-and-Shape-in-a-PolyRegion","16":"/GeoRegions.jl/v6.0.0/#Installation-Instructions","17":"/GeoRegions.jl/v6.0.0/#Getting-help","18":"/GeoRegions.jl/v6.0.0/landsea/create#Loading-and-Saving-Land-Sea-Mask-Datasets","19":"/GeoRegions.jl/v6.0.0/landsea/create#setup","20":"/GeoRegions.jl/v6.0.0/landsea/create#Retrieving-LandSea-Example-over-Aceh","21":"/GeoRegions.jl/v6.0.0/landsea/create#api","22":"/GeoRegions.jl/v6.0.0/landsea/intro#Land-Sea-Mask-Datasets","23":"/GeoRegions.jl/v6.0.0/landsea/intro#The-AbstractLandSea-SuperType","24":"/GeoRegions.jl/v6.0.0/landsea/intro#The-LandSea-Type-for-GeoRegions.jl","25":"/GeoRegions.jl/v6.0.0/landsea/smooth#Smoothing-of-the-Land-Sea-Mask-Dataset","26":"/GeoRegions.jl/v6.0.0/landsea/smooth#setup","27":"/GeoRegions.jl/v6.0.0/landsea/smooth#Example-comparison-between-Smooth-and-Unsmoothed-Masks","28":"/GeoRegions.jl/v6.0.0/landsea/smooth#Smoothing-Directly-from-a-loaded-Land-Sea-Mask","29":"/GeoRegions.jl/v6.0.0/landsea/smooth#api","30":"/GeoRegions.jl/v6.0.0/lists/api#Tabular-Listings-of-GeoRegions","31":"/GeoRegions.jl/v6.0.0/lists/api#More-specific-lists-of-GeoRegions","32":"/GeoRegions.jl/v6.0.0/lists/api#Listing-GeoRegions-inside-a-Custom-File","33":"/GeoRegions.jl/v6.0.0/lists/default#Default-List-of-All-Predefined-GeoRegions","34":"/GeoRegions.jl/v6.0.0/regiongrids/intro#What-is-a-RegionGrid?","35":"/GeoRegions.jl/v6.0.0/regiongrids/create#RegionGrid:-Applying-GeoRegions-to-Gridded-Data","36":"/GeoRegions.jl/v6.0.0/regiongrids/create#setup","37":"/GeoRegions.jl/v6.0.0/regiongrids/create#RectGrid-Example","38":"/GeoRegions.jl/v6.0.0/regiongrids/create#PolyGrid-Example","39":"/GeoRegions.jl/v6.0.0/regiongrids/create#The-Mask-of-a-PolyGrid","40":"/GeoRegions.jl/v6.0.0/regiongrids/create#api","41":"/GeoRegions.jl/v6.0.0/using/custom#Adding-GeoRegions-from-Templates","42":"/GeoRegions.jl/v6.0.0/using/custom#Template-GeoRegion-Files","43":"/GeoRegions.jl/v6.0.0/using/custom#Reading-in-GeoRegions-from-a-custom-file","44":"/GeoRegions.jl/v6.0.0/using/custom#Reset-the-list-of-GeoRegions","45":"/GeoRegions.jl/v6.0.0/using/extract#Extracting-Gridded-Data-using-RegionGrid","46":"/GeoRegions.jl/v6.0.0/using/extract#setup","47":"/GeoRegions.jl/v6.0.0/using/extract#Let-us-define-the-GeoRegion-of-interest","48":"/GeoRegions.jl/v6.0.0/using/extract#api","49":"/GeoRegions.jl/v6.0.0/using/isin#Is-it-in-a-GeoRegion?","50":"/GeoRegions.jl/v6.0.0/using/isin#setup","51":"/GeoRegions.jl/v6.0.0/using/isin#Is-a-Point-in-a-GeoRegion?","52":"/GeoRegions.jl/v6.0.0/using/isin#Is-a-GeoRegion-inside-a-GeoRegion?","53":"/GeoRegions.jl/v6.0.0/using/isin#api"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[5,1,99],"1":[5,1,3],"2":[2,1,23],"3":[4,2,218],"4":[6,2,110],"5":[4,2,70],"6":[5,2,19],"7":[5,1,140],"8":[4,1,62],"9":[7,4,78],"10":[9,4,91],"11":[9,4,89],"12":[5,1,14],"13":[1,5,28],"14":[7,5,95],"15":[9,5,116],"16":[2,1,69],"17":[2,1,36],"18":[7,1,121],"19":[1,7,28],"20":[5,7,80],"21":[1,7,141],"22":[4,1,37],"23":[3,4,104],"24":[6,4,23],"25":[7,1,99],"26":[1,7,28],"27":[7,7,72],"28":[8,7,102],"29":[1,7,107],"30":[4,1,93],"31":[5,4,60],"32":[6,4,54],"33":[6,1,6],"34":[5,1,126],"35":[6,1,31],"36":[1,6,28],"37":[2,6,72],"38":[2,6,111],"39":[5,6,149],"40":[1,6,71],"41":[4,1,26],"42":[3,4,75],"43":[7,4,76],"44":[5,4,100],"45":[5,1,43],"46":[1,5,28],"47":[7,5,356],"48":[1,5,106],"49":[6,1,51],"50":[1,6,28],"51":[6,6,159],"52":[5,6,142],"53":[1,6,102]},"averageFieldLength":[4.388888888888889,3.685185185185185,81.38888888888887],"storedFields":{"0":{"title":"Application Programming Interface (APIs)","titles":[]},"1":{"title":"Examples for using GeoRegions.jl","titles":[]},"2":{"title":"Creating GeoRegions","titles":[]},"3":{"title":"Defining a new GeoRegion","titles":["Creating GeoRegions"]},"4":{"title":"Is it already a GeoRegion?","titles":["Creating GeoRegions"]},"5":{"title":"Removing an existing GeoRegion","titles":["Creating GeoRegions"]},"6":{"title":"Reset the list of GeoRegions","titles":["Creating GeoRegions"]},"7":{"title":"What is a GeoRegion?","titles":[]},"8":{"title":"List of Available GeoRegions","titles":[]},"9":{"title":"Adapted from Giorgi & Francisco [2000]","titles":["List of Available GeoRegions"]},"10":{"title":"SREX Regions adapted from Seneviratne et al. [2012]","titles":["List of Available GeoRegions"]},"11":{"title":"AR6 Regions adapted from Iturbide et al., [2020]","titles":["List of Available GeoRegions"]},"12":{"title":"Reading in Defined GeoRegion Information","titles":[]},"13":{"title":"Setup","titles":["Reading in Defined GeoRegion Information"]},"14":{"title":"Retrieving Information about a Previously Defined GeoRegion","titles":["Reading in Defined GeoRegion Information"]},"15":{"title":"The Difference between Bounds and Shape in a PolyRegion","titles":["Reading in Defined GeoRegion Information"]},"16":{"title":"Installation Instructions","titles":[]},"17":{"title":"Getting help","titles":[]},"18":{"title":"Loading and Saving Land-Sea Mask Datasets","titles":[]},"19":{"title":"Setup","titles":["Loading and Saving Land-Sea Mask Datasets"]},"20":{"title":"Retrieving LandSea Example over Aceh","titles":["Loading and Saving Land-Sea Mask Datasets"]},"21":{"title":"API","titles":["Loading and Saving Land-Sea Mask Datasets"]},"22":{"title":"Land-Sea Mask Datasets","titles":[]},"23":{"title":"The AbstractLandSea SuperType","titles":["Land-Sea Mask Datasets"]},"24":{"title":"The LandSea Type for GeoRegions.jl","titles":["Land-Sea Mask Datasets"]},"25":{"title":"Smoothing of the Land-Sea Mask Dataset","titles":[]},"26":{"title":"Setup","titles":["Smoothing of the Land-Sea Mask Dataset"]},"27":{"title":"Example comparison between Smooth and Unsmoothed Masks","titles":["Smoothing of the Land-Sea Mask Dataset"]},"28":{"title":"Smoothing Directly from a loaded Land-Sea Mask","titles":["Smoothing of the Land-Sea Mask Dataset"]},"29":{"title":"API","titles":["Smoothing of the Land-Sea Mask Dataset"]},"30":{"title":"Tabular Listings of GeoRegions","titles":[]},"31":{"title":"More specific lists of GeoRegions","titles":["Tabular Listings of GeoRegions"]},"32":{"title":"Listing GeoRegions inside a Custom File","titles":["Tabular Listings of GeoRegions"]},"33":{"title":"Default List of All Predefined GeoRegions","titles":[]},"34":{"title":"What is a RegionGrid?","titles":[]},"35":{"title":"RegionGrid: Applying GeoRegions to Gridded Data","titles":[]},"36":{"title":"Setup","titles":["RegionGrid: Applying GeoRegions to Gridded Data"]},"37":{"title":"RectGrid Example","titles":["RegionGrid: Applying GeoRegions to Gridded Data"]},"38":{"title":"PolyGrid Example","titles":["RegionGrid: Applying GeoRegions to Gridded Data"]},"39":{"title":"The Mask of a PolyGrid","titles":["RegionGrid: Applying GeoRegions to Gridded Data"]},"40":{"title":"API","titles":["RegionGrid: Applying GeoRegions to Gridded Data"]},"41":{"title":"Adding GeoRegions from Templates","titles":[]},"42":{"title":"Template GeoRegion Files","titles":["Adding GeoRegions from Templates"]},"43":{"title":"Reading in GeoRegions from a custom file","titles":["Adding GeoRegions from Templates"]},"44":{"title":"Reset the list of GeoRegions","titles":["Adding GeoRegions from Templates"]},"45":{"title":"Extracting Gridded Data using RegionGrid","titles":[]},"46":{"title":"Setup","titles":["Extracting Gridded Data using RegionGrid"]},"47":{"title":"Let us define the GeoRegion of interest","titles":["Extracting Gridded Data using RegionGrid"]},"48":{"title":"API","titles":["Extracting Gridded Data using RegionGrid"]},"49":{"title":"Is it in a GeoRegion?","titles":[]},"50":{"title":"Setup","titles":["Is it in a GeoRegion?"]},"51":{"title":"Is a Point in a GeoRegion?","titles":["Is it in a GeoRegion?"]},"52":{"title":"Is a GeoRegion inside a GeoRegion?","titles":["Is it in a GeoRegion?"]},"53":{"title":"API","titles":["Is it in a GeoRegion?"]}},"dirtCount":0,"index":[["∈",{"2":{"48":2}}],["⋱",{"2":{"47":2}}],["⋮",{"2":{"47":5}}],["`nan",{"2":{"38":1}}],["σ=10",{"2":{"27":1}}],["σ=5",{"2":{"27":1}}],["σ10",{"2":{"27":4}}],["σ05",{"2":{"27":4,"28":3}}],["σlat=10",{"2":{"27":1}}],["σlat=5",{"2":{"27":1,"28":1}}],["σlat",{"2":{"21":3,"25":1,"29":15}}],["σlon=10",{"2":{"27":1}}],["σlon=5",{"2":{"27":1,"28":1}}],["σlon",{"2":{"21":3,"25":1,"29":15}}],["z",{"2":{"20":1,"23":1}}],["+360",{"2":{"47":2}}],["+",{"2":{"43":1}}],["+0",{"2":{"20":4}}],["+2+360",{"2":{"47":1}}],["+2",{"2":{"15":2,"39":2,"47":3,"51":2}}],["ylabel=",{"2":{"20":1,"27":1,"28":1}}],["your",{"2":{"42":2,"43":1}}],["you",{"2":{"16":3,"17":2,"18":3,"21":3,"23":1,"25":2,"28":1,"35":1,"41":3,"49":1}}],["º",{"2":{"20":3,"27":4,"28":3}}],["x",{"2":{"37":1,"38":1,"39":1,"47":1}}],["xlabel=",{"2":{"20":2,"27":3,"28":2}}],["x3c",{"2":{"3":3,"7":6,"15":6,"23":2,"24":1,"29":5,"34":6,"40":6,"48":6,"53":1}}],["92",{"2":{"47":1}}],["96",{"2":{"47":1}}],["97",{"2":{"47":1}}],["91",{"2":{"47":1}}],["910825",{"2":{"47":1}}],["918719",{"2":{"47":1}}],["9",{"2":{"27":6,"28":4,"37":3,"39":1}}],["932451",{"2":{"47":1}}],["93",{"2":{"27":3,"28":2,"47":1}}],["94",{"2":{"27":1,"47":1}}],["99",{"2":{"27":4,"28":2,"47":1}}],["95287",{"2":{"47":1}}],["95156",{"2":{"47":1}}],["95",{"2":{"20":2,"27":3,"28":2,"39":1,"47":1,"52":1}}],["98539",{"2":{"47":1}}],["983444",{"2":{"47":1}}],["98",{"2":{"20":1,"47":1,"52":1}}],["90",{"2":{"7":2,"8":2,"37":2,"38":2,"39":3,"47":6,"52":6}}],["union",{"2":{"40":2,"53":1}}],["units",{"2":{"21":1}}],["unsupported",{"2":{"30":1}}],["unsmoothed",{"0":{"27":1}}],["upon",{"2":{"28":1,"34":1}}],["up",{"2":{"18":2}}],["update",{"2":{"16":3}}],["us",{"0":{"47":1},"2":{"7":1,"34":1,"39":1,"47":1,"49":1,"51":2,"52":2}}],["user",{"2":{"30":2,"31":2,"32":1,"34":1}}],["usetopography",{"2":{"29":1}}],["uses",{"2":{"25":1,"34":1}}],["useful",{"2":{"25":1}}],["used",{"2":{"3":4,"4":3,"5":2,"14":2,"48":2}}],["use",{"2":{"3":10,"4":7,"5":1,"7":1,"14":1,"17":1,"18":1,"23":1,"42":2,"45":1,"49":2}}],["using",{"0":{"1":1,"45":1},"1":{"46":1,"47":1,"48":1},"2":{"3":2,"4":1,"5":2,"7":1,"8":1,"9":1,"10":1,"11":1,"13":2,"15":1,"16":2,"17":1,"18":2,"19":2,"21":1,"26":2,"30":2,"32":1,"36":2,"39":1,"40":1,"42":1,"43":1,"44":1,"46":2,"48":1,"50":2,"51":1,"53":1}}],["791617",{"2":{"47":1}}],["79163",{"2":{"47":1}}],["799867",{"2":{"47":1}}],["73747",{"2":{"47":1}}],["735",{"2":{"44":2}}],["715092",{"2":{"47":1}}],["753299",{"2":{"47":1}}],["7596",{"2":{"47":1}}],["75",{"2":{"39":1,"52":1}}],["702647",{"2":{"47":1}}],["70",{"2":{"38":1,"39":1,"52":1}}],["74809",{"2":{"47":1}}],["744753",{"2":{"47":1}}],["745463",{"2":{"47":1}}],["740",{"2":{"44":2}}],["74",{"2":{"38":1}}],["76",{"2":{"38":1}}],["787565",{"2":{"47":1}}],["78",{"2":{"38":1}}],["7",{"2":{"27":4,"28":2,"37":2,"51":4}}],["778459",{"2":{"47":1}}],["776093",{"2":{"47":1}}],["7714",{"2":{"47":1}}],["77",{"2":{"14":1}}],["726071",{"2":{"47":1}}],["72",{"2":{"14":2,"38":1}}],["83802",{"2":{"47":1}}],["878473",{"2":{"47":1}}],["893512",{"2":{"47":1}}],["89436",{"2":{"47":1}}],["896384",{"2":{"47":1}}],["84",{"2":{"38":1}}],["80",{"2":{"38":1,"39":1,"52":3}}],["82",{"2":{"38":1}}],["8",{"2":{"21":2,"29":10,"37":1,"38":2,"39":1,"47":3,"51":3,"52":1}}],["81391",{"2":{"47":1}}],["81926",{"2":{"47":1}}],["816051",{"2":{"47":1}}],["81",{"2":{"14":2}}],["85",{"2":{"10":4,"39":1,"52":1}}],["≥2",{"2":{"10":1,"11":1}}],["≥1",{"2":{"9":1}}],["≧",{"2":{"10":1,"11":1}}],["keyword",{"2":{"3":4,"4":1,"5":1,"14":1,"18":1,"21":1,"29":5,"30":2,"31":2,"32":1,"42":1,"53":2}}],["=",{"2":{"3":10,"4":1,"13":3,"15":4,"19":3,"20":7,"21":15,"26":3,"27":8,"28":3,"29":18,"31":5,"36":3,"37":4,"38":4,"39":18,"44":1,"46":3,"47":15,"50":3,"51":8,"52":12,"53":6}}],["variety",{"2":{"31":1}}],["values",{"2":{"21":1,"38":2}}],["valid",{"2":{"3":2,"4":4,"5":1,"7":1,"14":1,"34":2}}],["via",{"2":{"25":1}}],["v5",{"2":{"22":1}}],["v2",{"2":{"7":1}}],["v1",{"2":{"7":1,"16":3}}],["verify",{"2":{"52":1}}],["very",{"2":{"51":1}}],["version",{"2":{"16":3}}],["versions",{"2":{"9":1,"10":1,"11":1,"16":1}}],["verbose",{"2":{"3":6}}],["vectors",{"2":{"15":1,"47":1}}],["vector",{"2":{"3":5,"7":1,"15":11,"23":2,"34":9,"40":4}}],["694",{"2":{"53":1}}],["693",{"2":{"53":1}}],["692",{"2":{"53":1}}],["690",{"2":{"53":1}}],["680521",{"2":{"47":1}}],["67151",{"2":{"47":1}}],["671143",{"2":{"47":1}}],["626191",{"2":{"47":1}}],["620367",{"2":{"47":1}}],["622193",{"2":{"47":1}}],["644675",{"2":{"47":1}}],["641158",{"2":{"47":1}}],["640613",{"2":{"47":1}}],["630778",{"2":{"47":1}}],["635",{"2":{"3":3}}],["654727",{"2":{"47":1}}],["6579",{"2":{"47":1}}],["65855",{"2":{"47":1}}],["65",{"2":{"39":1}}],["61665",{"2":{"47":1}}],["61",{"2":{"39":2}}],["6×14",{"2":{"38":1}}],["60",{"2":{"21":3,"22":1,"37":1,"39":2,"52":2}}],["6",{"2":{"10":3,"14":3,"20":1,"38":3,"51":3}}],["664",{"2":{"3":2}}],["hideydecorations",{"2":{"47":1}}],["higher",{"2":{"21":1,"29":5}}],["home",{"2":{"44":6}}],["homedir",{"2":{"21":1}}],["how",{"2":{"17":1,"23":1,"25":1,"34":1,"45":1}}],["however",{"2":{"3":1,"4":1,"7":1,"18":3,"25":2,"34":1,"45":1,"48":2,"51":1}}],["have",{"2":{"17":1,"18":1,"41":1,"42":1,"45":1}}],["has",{"2":{"3":3,"4":1,"8":1,"9":1,"10":1,"11":1,"14":1,"18":2,"21":1,"25":1,"37":1,"38":1,"39":1,"43":1,"47":2,"51":1}}],["heights",{"2":{"22":1}}],["height",{"2":{"20":1,"23":1,"29":1}}],["height=225",{"2":{"27":3}}],["height=350",{"2":{"20":2,"28":2,"47":2}}],["height=750",{"2":{"15":1,"39":1,"51":1,"52":1}}],["here",{"2":{"20":1,"28":1,"38":2,"42":1,"51":1}}],["helping",{"2":{"34":1}}],["help",{"0":{"17":1}}],["https",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["quot",{"2":{"3":4,"53":8}}],["questions",{"2":{"17":2}}],["question",{"2":{"0":2}}],["3rd",{"2":{"48":2}}],["3697",{"2":{"47":1}}],["360º",{"2":{"51":1}}],["360×181",{"2":{"47":1}}],["360",{"2":{"7":1,"8":1,"43":1,"47":1,"51":1,"52":2}}],["330",{"2":{"52":2}}],["33×18",{"2":{"47":1}}],["338166",{"2":{"47":1}}],["33979",{"2":{"47":1}}],["332354",{"2":{"47":1}}],["332974",{"2":{"47":1}}],["33",{"2":{"47":5}}],["337",{"2":{"8":1}}],["355",{"2":{"52":1}}],["35",{"2":{"37":1,"52":1}}],["353",{"2":{"11":1}}],["325",{"2":{"52":2}}],["32758",{"2":{"47":1}}],["32",{"2":{"47":1,"52":1}}],["320",{"2":{"37":1,"52":1}}],["326",{"2":{"5":1}}],["31",{"2":{"47":1}}],["316504",{"2":{"47":1}}],["315",{"2":{"37":1}}],["310",{"2":{"37":1}}],["317",{"2":{"5":1}}],["394866",{"2":{"47":1}}],["393987",{"2":{"47":1}}],["39",{"2":{"16":1,"18":1,"38":2,"41":1}}],["379183",{"2":{"47":1}}],["371605",{"2":{"47":1}}],["37",{"2":{"11":2}}],["34",{"2":{"51":3}}],["348726",{"2":{"47":1}}],["342",{"2":{"10":1}}],["340",{"2":{"9":1,"51":2}}],["347784",{"2":{"47":1}}],["347",{"2":{"3":2}}],["3",{"2":{"9":1,"10":1,"11":1,"20":1,"27":1,"48":2,"52":9}}],["305",{"2":{"37":1}}],["300",{"2":{"37":1,"52":2}}],["30876",{"2":{"47":1}}],["308",{"2":{"3":1}}],["30",{"2":{"3":10,"21":1,"22":1,"37":1,"39":1,"43":2,"47":1,"51":1,"52":5}}],["4th",{"2":{"48":2}}],["4",{"2":{"38":2,"48":2,"52":10}}],["49813",{"2":{"47":1}}],["49",{"2":{"38":1,"39":2}}],["482691",{"2":{"47":1}}],["48",{"2":{"38":1}}],["47999",{"2":{"47":1}}],["473",{"2":{"44":3}}],["47",{"2":{"38":1}}],["46",{"2":{"38":1}}],["41",{"2":{"38":1}}],["451286",{"2":{"47":1}}],["45781",{"2":{"47":1}}],["45",{"2":{"11":3,"37":1,"38":1,"51":1,"52":4}}],["44393",{"2":{"47":1}}],["44",{"2":{"4":6,"5":2,"8":1,"9":1,"10":1,"11":1,"38":1,"52":1}}],["43777",{"2":{"47":1}}],["439036",{"2":{"47":1}}],["43",{"2":{"3":9,"38":1,"52":1}}],["400491",{"2":{"47":1}}],["40066",{"2":{"47":1}}],["408336",{"2":{"47":1}}],["403299",{"2":{"47":1}}],["40",{"2":{"3":5,"37":1,"38":1,"52":2}}],["422288",{"2":{"47":1}}],["42",{"2":{"3":6,"38":1}}],["2nd",{"2":{"48":2}}],["2+360",{"2":{"47":1}}],["270",{"2":{"47":1}}],["271",{"2":{"47":2}}],["278088",{"2":{"47":1}}],["27",{"2":{"37":1,"47":1}}],["269",{"2":{"47":1}}],["268",{"2":{"47":1}}],["267",{"2":{"47":1}}],["266",{"2":{"47":1}}],["265381",{"2":{"47":1}}],["265",{"2":{"47":1}}],["264",{"2":{"47":1}}],["263",{"2":{"47":1}}],["262",{"2":{"47":1}}],["26",{"2":{"37":1,"39":1,"47":1}}],["248",{"2":{"47":1}}],["247",{"2":{"47":1}}],["246",{"2":{"47":1}}],["245",{"2":{"47":1}}],["244",{"2":{"47":1}}],["242",{"2":{"47":1}}],["241",{"2":{"47":1}}],["240",{"2":{"47":1}}],["240713",{"2":{"47":1}}],["240572",{"2":{"47":1}}],["24",{"2":{"37":1,"39":1,"47":1}}],["243",{"2":{"30":1,"47":1}}],["239722",{"2":{"47":1}}],["239",{"2":{"47":2}}],["23",{"2":{"37":1,"47":1}}],["224422",{"2":{"47":1}}],["22",{"2":{"37":1,"39":1,"47":1}}],["299301",{"2":{"47":1}}],["295",{"2":{"37":1}}],["290",{"2":{"37":1}}],["29",{"2":{"37":2,"47":1}}],["281",{"2":{"47":1}}],["288495",{"2":{"47":1}}],["285",{"2":{"37":1}}],["280976",{"2":{"47":1}}],["280",{"2":{"37":1}}],["28",{"2":{"10":3,"37":1,"39":1,"47":1}}],["25357",{"2":{"47":1}}],["25",{"2":{"9":1,"11":1,"37":2,"47":3,"52":1}}],["213213",{"2":{"47":1}}],["21",{"2":{"37":2,"47":1}}],["211",{"2":{"4":2}}],["210448",{"2":{"47":1}}],["210",{"2":{"4":2}}],["214",{"2":{"3":1}}],["2",{"2":{"3":1,"10":2,"11":2,"13":1,"14":1,"15":2,"18":2,"19":1,"20":1,"26":1,"27":2,"28":1,"29":5,"36":1,"38":4,"39":3,"40":2,"46":1,"47":10,"48":2,"50":1,"51":3,"52":10}}],["20973",{"2":{"47":1}}],["2022",{"2":{"21":1,"24":1}}],["2020",{"0":{"11":1},"2":{"11":1,"44":1}}],["2024",{"2":{"3":15,"4":6,"5":2,"8":1,"9":1,"10":1,"11":1,"44":4,"53":5}}],["2012",{"0":{"10":1},"2":{"10":1,"44":1}}],["2000",{"0":{"9":1},"2":{"9":1,"44":1}}],["20",{"2":{"3":9,"9":2,"37":1,"39":1,"47":1,"51":3,"52":9}}],["~",{"2":{"3":2,"4":1,"30":1,"44":3}}],["└",{"2":{"3":2,"4":1,"44":3}}],["17125",{"2":{"47":1}}],["17",{"2":{"47":1}}],["17533",{"2":{"47":1}}],["17603",{"2":{"47":1}}],["172523",{"2":{"47":1}}],["14833",{"2":{"47":1}}],["14662",{"2":{"47":1}}],["144804",{"2":{"47":1}}],["14",{"2":{"37":1,"38":2,"39":1}}],["143",{"2":{"14":1}}],["119",{"2":{"47":2}}],["118",{"2":{"47":2}}],["116",{"2":{"47":2}}],["115",{"2":{"47":2,"52":1}}],["114",{"2":{"47":2}}],["113",{"2":{"47":2}}],["112",{"2":{"47":1}}],["111",{"2":{"47":1}}],["110",{"2":{"47":1,"52":4}}],["110688",{"2":{"47":1}}],["1108",{"2":{"47":1}}],["11",{"2":{"37":1}}],["117",{"2":{"11":1,"47":2}}],["1s",{"2":{"25":1,"34":2}}],["1st",{"2":{"3":1,"48":2}}],["123",{"2":{"47":1}}],["123113",{"2":{"47":1}}],["121",{"2":{"47":2}}],["120",{"2":{"47":2,"52":3}}],["124",{"2":{"47":2}}],["122",{"2":{"47":4}}],["12",{"2":{"37":1,"38":2,"39":2,"52":1}}],["125",{"2":{"14":1}}],["129291",{"2":{"47":1}}],["129",{"2":{"14":1}}],["13953",{"2":{"47":1}}],["139085",{"2":{"47":1}}],["13",{"2":{"37":1}}],["130",{"2":{"14":1}}],["132",{"2":{"11":2}}],["195252",{"2":{"47":1}}],["19",{"2":{"11":4,"47":1}}],["198",{"2":{"4":2}}],["150993",{"2":{"47":1}}],["1500",{"2":{"20":1}}],["152",{"2":{"11":2}}],["15",{"2":{"9":1,"21":1,"37":2,"51":1,"52":3}}],["1",{"2":{"3":1,"9":3,"13":1,"15":2,"18":2,"19":1,"20":11,"21":2,"23":2,"25":1,"26":1,"27":13,"28":9,"29":11,"36":1,"37":2,"38":61,"39":4,"46":1,"47":41,"50":1,"51":2,"52":7}}],["163252",{"2":{"47":1}}],["16",{"2":{"39":1,"47":3}}],["16897",{"2":{"47":1}}],["168",{"2":{"14":3}}],["161",{"2":{"3":1}}],["160",{"2":{"3":2}}],["1819",{"2":{"47":1}}],["18205",{"2":{"47":1}}],["183246",{"2":{"47":1}}],["18",{"2":{"39":1,"47":2}}],["180",{"2":{"7":1,"37":2,"38":2,"39":2,"51":2,"52":2}}],["188394",{"2":{"47":1}}],["188",{"2":{"3":1}}],["18695",{"2":{"47":1}}],["186",{"2":{"3":1}}],["109",{"2":{"47":1}}],["107",{"2":{"47":2}}],["104",{"2":{"47":1}}],["108",{"2":{"11":1,"39":1,"47":1}}],["100",{"2":{"11":4,"21":2,"29":10,"39":1,"52":3,"53":1}}],["105",{"2":{"10":3,"14":4,"47":1,"52":1}}],["102",{"2":{"3":1}}],["10",{"2":{"3":6,"16":3,"37":1,"38":2,"39":1,"51":4,"52":6}}],["┌",{"2":{"3":2,"4":1,"44":3}}],["599",{"2":{"53":1}}],["594",{"2":{"47":1}}],["59476",{"2":{"47":1}}],["591802",{"2":{"47":1}}],["59697",{"2":{"47":1}}],["59",{"2":{"39":1,"53":5}}],["567931",{"2":{"47":1}}],["560503",{"2":{"47":1}}],["56",{"2":{"39":2}}],["562",{"2":{"3":2,"4":1}}],["57",{"2":{"39":3}}],["541481",{"2":{"47":1}}],["54",{"2":{"38":1,"39":2}}],["53",{"2":{"38":1,"39":2}}],["554907",{"2":{"47":1}}],["554504",{"2":{"47":1}}],["55021",{"2":{"47":1}}],["558553",{"2":{"47":1}}],["55",{"2":{"37":1,"38":2,"39":3,"52":1}}],["588135",{"2":{"47":1}}],["58184",{"2":{"47":1}}],["58663",{"2":{"47":1}}],["583592",{"2":{"47":1}}],["58",{"2":{"14":1,"39":1,"44":4}}],["5",{"2":{"11":4,"14":1,"37":2,"39":1,"47":3,"51":5,"52":4}}],["52",{"2":{"3":1,"14":1,"38":3,"39":2}}],["514898",{"2":{"47":1}}],["513311",{"2":{"47":1}}],["51976",{"2":{"47":1}}],["51",{"2":{"3":15,"4":6,"5":2,"8":1,"9":1,"10":1,"11":1,"38":2,"39":2,"44":4,"53":5}}],["50504",{"2":{"47":1}}],["504937",{"2":{"47":1}}],["50",{"2":{"3":5,"10":4,"14":4,"21":1,"29":5,"37":1,"38":3,"39":3,"51":3,"52":2}}],["joinpath",{"2":{"3":1}}],["juliain",{"2":{"53":3}}],["juliaisingeoregion",{"2":{"51":1}}],["juliaisgeoregion",{"2":{"4":1}}],["juliaextractgrid",{"2":{"48":2}}],["juliandata",{"2":{"47":1}}],["julialon",{"2":{"47":1}}],["juliaa",{"2":{"51":1}}],["juliaaddgeoregions",{"2":{"43":2}}],["juliaabstractlandsea",{"2":{"23":1}}],["juliatemplategeoregions",{"2":{"42":1}}],["juliatemplategeoregion",{"2":{"42":1}}],["juliatablepolyregions",{"2":{"31":1}}],["juliatablerectregions",{"2":{"31":1}}],["juliatablegeoregions",{"2":{"30":1,"32":1}}],["juliaggrd",{"2":{"38":1,"47":1}}],["juliageo",{"2":{"37":1,"38":1,"39":1,"47":1}}],["juliageoregion",{"2":{"7":1,"14":2,"24":1}}],["juliagetlandsea",{"2":{"21":1}}],["juliasmoothlsm",{"2":{"29":1}}],["juliasmooth",{"2":{"29":4}}],["juliacoordgeoregion",{"2":{"15":2}}],["juliacheckgrid",{"2":{"0":1}}],["juliacheckpoint",{"2":{"0":1}}],["juliausing",{"2":{"13":1,"19":1,"26":1,"33":1,"36":1,"41":1,"46":1,"50":1}}],["julia",{"2":{"7":1,"16":5,"44":3,"51":1,"52":1}}],["juliaresetgeoregions",{"2":{"44":2}}],["juliaregiongrid",{"2":{"34":1,"40":2}}],["juliaremovegeoregion",{"2":{"5":1,"53":1}}],["juliarectregion",{"2":{"3":1}}],["juliapolyregion",{"2":{"3":1}}],["julia>",{"2":{"3":3,"4":3,"5":2,"8":1,"9":1,"10":1,"11":1,"30":2}}],["juliajulia>",{"2":{"3":2,"4":1,"5":2,"8":1,"9":1,"10":1,"11":1,"16":1,"30":1}}],["jl",{"0":{"1":1,"24":1},"2":{"3":21,"4":9,"5":4,"7":3,"8":2,"9":1,"10":1,"11":1,"16":1,"17":1,"21":1,"22":1,"23":2,"25":2,"30":3,"40":1,"44":20,"48":1,"49":4,"51":2,"53":6}}],["ggrd",{"2":{"37":1,"38":1,"39":6,"47":3,"48":4}}],["gausssian",{"2":{"21":1,"29":5}}],["gaussian",{"2":{"21":1,"25":1,"29":5}}],["green",{"2":{"52":4}}],["greatly",{"2":{"18":1}}],["grid=false",{"2":{"47":1}}],["grids",{"2":{"40":2}}],["gridpoint",{"2":{"34":1}}],["gridded",{"0":{"35":1,"45":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1,"46":1,"47":1,"48":1},"2":{"34":6,"38":1,"40":1,"48":2}}],["grid",{"2":{"0":5,"7":1,"25":1,"28":1,"34":2,"37":3,"38":3,"39":9,"47":3}}],["gf",{"2":{"9":6,"37":1}}],["gives",{"2":{"34":3}}],["given",{"2":{"7":1,"9":1,"10":1,"11":1,"15":2,"29":3,"34":2,"51":1}}],["github",{"2":{"16":1}}],["githubusercontent",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["giorgi",{"0":{"9":1},"2":{"9":1,"31":3,"44":1}}],["gt",{"2":{"7":1,"9":1,"29":1}}],["global",{"2":{"5":3,"7":2,"8":1,"18":2,"28":1,"45":1,"47":1}}],["globe",{"2":{"3":4,"8":1,"30":1}}],["glb",{"2":{"3":11,"5":3,"7":2,"8":6,"9":1,"10":1,"11":1,"14":1,"20":1,"21":1,"27":1,"30":3,"43":1,"47":1,"51":1,"52":5}}],["got",{"2":{"30":1}}],["go",{"2":{"2":1,"12":1,"34":1,"35":1}}],["gw",{"2":{"0":3}}],["generated",{"2":{"35":1,"40":1,"44":1,"48":1,"53":1}}],["generally",{"2":{"7":1,"16":1,"21":1,"29":5}}],["getlandsea",{"2":{"18":1,"20":1,"21":1,"27":3}}],["getting",{"0":{"17":1}}],["get",{"2":{"16":1,"17":1,"25":1}}],["geometrybasics",{"2":{"49":1}}],["geo",{"2":{"14":2,"15":4,"20":2,"21":2,"27":3,"37":1,"38":1,"39":2,"40":4,"47":2,"51":5,"52":17,"53":6}}],["geoplottingdata",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["geographical",{"2":{"7":2,"34":1,"53":1}}],["geographic",{"2":{"7":1,"49":1,"52":1}}],["geoid",{"2":{"4":4,"5":3,"14":3,"21":4,"22":1,"43":1}}],["georegion",{"0":{"3":1,"4":1,"5":1,"7":1,"12":1,"14":1,"42":1,"47":1,"49":1,"51":1,"52":2},"1":{"13":1,"14":1,"15":1,"50":1,"51":1,"52":1,"53":1},"2":{"2":1,"3":28,"4":9,"5":7,"7":17,"8":3,"9":2,"10":2,"11":2,"12":1,"14":9,"15":8,"18":1,"21":4,"23":3,"24":1,"25":2,"34":5,"37":1,"38":4,"39":1,"40":4,"43":5,"44":1,"45":1,"47":2,"48":4,"51":7,"52":5,"53":18}}],["georegions",{"0":{"1":1,"2":1,"6":1,"8":1,"24":1,"30":1,"31":1,"32":1,"33":1,"35":1,"41":1,"43":1,"44":1},"1":{"3":1,"4":1,"5":1,"6":1,"9":1,"10":1,"11":1,"31":1,"32":1,"36":1,"37":1,"38":1,"39":1,"40":1,"42":1,"43":1,"44":1},"2":{"0":2,"3":29,"4":12,"5":7,"6":2,"7":9,"8":4,"9":5,"10":5,"11":5,"13":1,"14":1,"15":2,"16":5,"17":1,"18":1,"19":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"29":2,"30":12,"31":9,"32":6,"33":1,"34":1,"36":1,"40":2,"41":1,"42":2,"43":3,"44":34,"46":1,"48":2,"49":2,"50":1,"51":2,"52":2,"53":5}}],["ge",{"2":{"0":3}}],["gs",{"2":{"0":3}}],["gn",{"2":{"0":3}}],["our",{"2":{"47":1}}],["output",{"2":{"40":2}}],["out",{"2":{"17":1,"18":1,"39":2}}],["outside",{"2":{"0":4,"23":2}}],["odata",{"2":{"47":3,"48":6}}],["otlat",{"2":{"39":4}}],["otlon",{"2":{"39":4}}],["other",{"2":{"23":1,"28":1,"52":2}}],["otherwise",{"2":{"21":1,"38":1}}],["old",{"2":{"29":1,"47":1}}],["olsm",{"2":{"29":1}}],["obvious",{"2":{"51":1}}],["object",{"2":{"24":1}}],["obtained",{"2":{"18":1}}],["ocean",{"2":{"21":1,"23":1,"25":1,"51":2}}],["overwriting",{"2":{"44":3}}],["overwrite",{"2":{"42":3}}],["over",{"0":{"20":1},"2":{"21":1,"39":1}}],["own",{"2":{"18":1,"23":1}}],["option",{"2":{"18":4}}],["options",{"2":{"18":2,"22":1}}],["opendap",{"2":{"18":3,"21":1}}],["open",{"2":{"17":1}}],["on",{"2":{"18":1,"24":1,"29":6,"34":1,"39":1,"40":2,"47":1,"48":2,"52":1}}],["onlycustom",{"2":{"30":3,"32":2}}],["onlycustom=true",{"2":{"30":1}}],["only",{"2":{"7":1,"9":1,"10":1,"11":1,"25":1,"30":1,"32":1,"34":1,"44":1,"45":1,"48":2}}],["ones",{"2":{"39":1}}],["one",{"2":{"6":2,"34":1,"41":2,"42":1,"44":3}}],["once",{"2":{"2":1,"18":2}}],["original",{"2":{"34":1,"44":3}}],["oro",{"2":{"29":4}}],["orographic",{"2":{"20":1,"22":1,"23":1}}],["order",{"2":{"14":1,"48":2}}],["or",{"2":{"3":2,"4":2,"7":1,"16":1,"17":1,"21":1,"23":1,"40":5,"49":1,"53":6}}],["off",{"2":{"29":2}}],["often",{"2":{"25":1,"49":1}}],["of",{"0":{"6":1,"8":1,"25":1,"30":1,"31":1,"33":1,"39":1,"44":1,"47":1},"1":{"9":1,"10":1,"11":1,"26":1,"27":1,"28":1,"29":1,"31":1,"32":1},"2":{"0":17,"2":1,"3":8,"4":2,"5":2,"6":1,"7":14,"8":1,"10":1,"12":1,"14":2,"15":11,"16":2,"18":2,"21":8,"22":1,"23":6,"25":4,"28":1,"29":16,"30":1,"31":2,"34":15,"35":1,"38":1,"39":4,"40":5,"41":1,"42":2,"43":3,"44":3,"48":11,"51":7,"53":3}}],["0311085",{"2":{"47":1}}],["0993618",{"2":{"47":1}}],["0978337",{"2":{"47":1}}],["011729",{"2":{"47":1}}],["0163741",{"2":{"47":1}}],["04159",{"2":{"47":1}}],["00126",{"2":{"47":1}}],["0786834",{"2":{"47":1}}],["0252424",{"2":{"47":1}}],["0256041",{"2":{"47":1}}],["0255517",{"2":{"47":1}}],["06822",{"2":{"47":1}}],["0s",{"2":{"25":1,"34":1}}],["05948",{"2":{"47":1}}],["05738",{"2":{"47":1}}],["05",{"2":{"20":1,"27":3,"28":2}}],["08t01",{"2":{"3":15,"4":6,"5":2,"8":1,"9":1,"10":1,"11":1,"44":4,"53":5}}],["08",{"2":{"3":15,"4":6,"5":2,"8":1,"9":1,"10":1,"11":1,"44":4,"53":5}}],["0",{"2":{"0":4,"3":18,"7":2,"8":5,"9":4,"10":11,"11":16,"14":18,"20":7,"21":2,"23":2,"25":1,"27":6,"28":4,"29":13,"38":79,"39":21,"43":5,"47":148,"51":21,"52":7,"53":2}}],["scatter",{"2":{"39":2,"51":2}}],["ssa",{"2":{"37":1}}],["space",{"2":{"48":1}}],["spot",{"2":{"35":1}}],["specifications",{"2":{"31":1}}],["specific",{"0":{"31":1},"2":{"45":1}}],["specified",{"2":{"7":2}}],["speeds",{"2":{"18":1}}],["smoothlsm",{"2":{"29":1}}],["smooth=true",{"2":{"27":2}}],["smoothed",{"2":{"25":1,"27":2,"28":2,"29":5}}],["smooth",{"0":{"27":1},"2":{"21":6,"29":11}}],["smoothing",{"0":{"25":1,"28":1},"1":{"26":1,"27":1,"28":1,"29":1},"2":{"18":1,"21":2,"25":6,"28":4,"29":17}}],["smaller",{"2":{"18":1,"52":1}}],["side",{"2":{"53":1}}],["significant",{"2":{"48":2}}],["size",{"2":{"37":1,"38":1,"39":2,"47":1}}],["similarly",{"2":{"32":1}}],["simple",{"2":{"15":1,"45":1}}],["simply",{"2":{"7":1,"21":1,"42":1,"51":1}}],["since",{"2":{"16":1,"52":1}}],["slat",{"2":{"15":8,"20":9,"39":6,"47":9,"51":6,"52":10}}],["slon",{"2":{"15":8,"20":9,"39":6,"47":11,"51":6,"52":10}}],["system",{"2":{"15":1}}],["srx",{"2":{"10":6}}],["srex",{"0":{"10":1},"2":{"31":3}}],["src",{"2":{"3":2,"4":1,"30":1,"44":6}}],["suitable",{"2":{"40":2}}],["sum",{"2":{"38":1,"39":1,"47":1}}],["suppose",{"2":{"45":1}}],["supports",{"2":{"22":1}}],["supertype",{"0":{"23":1},"2":{"7":1,"23":3,"34":1}}],["surface",{"2":{"21":1,"22":2,"25":1}}],["such",{"2":{"18":1,"21":1,"34":1,"40":2,"51":1}}],["suggestions",{"2":{"17":1}}],["sub",{"2":{"48":2}}],["subregion",{"2":{"7":1}}],["subtypes",{"2":{"7":1,"23":2,"34":1}}],["subset",{"2":{"3":2,"7":1,"23":1,"53":2}}],["shifted",{"2":{"51":1}}],["show",{"2":{"30":1,"32":1}}],["should",{"2":{"6":1,"7":1,"44":1}}],["shape",{"0":{"15":1},"2":{"3":2,"7":6,"10":2,"11":2,"14":2,"15":11,"34":1,"38":1,"39":1,"47":2,"51":2}}],["say",{"2":{"45":1}}],["satellite",{"2":{"40":1}}],["sas",{"2":{"39":1}}],["saving",{"0":{"18":1},"1":{"19":1,"20":1,"21":1},"2":{"18":1}}],["saved",{"2":{"21":1,"29":4}}],["savegeo=false",{"2":{"20":1,"27":1}}],["savelsd=false",{"2":{"20":1,"27":3}}],["savelsd",{"2":{"18":1,"21":4}}],["save",{"2":{"3":6,"21":2,"48":1}}],["same",{"2":{"3":1,"34":1,"42":1}}],["sample",{"2":{"3":1,"47":1}}],["s",{"2":{"3":3,"7":2,"8":1,"9":1,"10":1,"11":1,"14":1,"15":2,"34":1,"43":1,"47":1,"51":1}}],["step",{"2":{"47":1}}],["steps",{"2":{"2":1,"35":1}}],["structure",{"2":{"34":3}}],["struct",{"2":{"23":1}}],["string",{"2":{"3":2,"7":3}}],["starting",{"2":{"22":1}}],["start",{"2":{"3":1}}],["st",{"2":{"3":4,"7":2}}],["stops",{"2":{"0":2,"53":2}}],["semi",{"2":{"21":1,"29":5}}],["separation",{"2":{"21":1}}],["seconds",{"2":{"21":1}}],["section",{"2":{"2":1,"12":1,"35":1}}],["servers",{"2":{"18":1,"21":1}}],["seneviratne",{"0":{"10":1},"2":{"10":1,"44":1}}],["sea",{"0":{"18":1,"22":1,"25":1,"28":1},"1":{"19":1,"20":1,"21":1,"23":1,"24":1,"26":1,"27":1,"28":1,"29":1},"2":{"4":3,"18":2,"20":1,"21":1,"23":3,"24":1,"25":5,"27":1,"28":2,"29":15}}],["see",{"2":{"3":3,"4":3,"6":1,"15":1,"18":2,"28":1,"35":1,"38":1,"51":3,"52":2}}],["sets",{"2":{"18":1}}],["setup",{"0":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1},"2":{"41":1}}],["set",{"2":{"0":4,"3":1,"29":3,"30":1,"32":1,"42":1}}],["some",{"2":{"47":1}}],["sometimes",{"2":{"4":1}}],["sort",{"2":{"25":1}}],["so",{"2":{"2":1,"21":1,"23":1,"34":1,"38":1,"41":1}}],["soon",{"2":{"1":1,"16":1}}],["source",{"2":{"0":2,"3":2,"4":1,"5":1,"7":1,"14":1,"15":2,"21":1,"23":1,"24":1,"29":5,"30":1,"31":2,"32":1,"34":1,"40":2,"42":1,"43":1,"44":1,"48":2,"53":3}}],["southernmost",{"2":{"15":1}}],["south",{"2":{"0":3,"7":1,"39":1}}],["°",{"2":{"0":4}}],["eye",{"2":{"51":1,"52":1}}],["equatorial",{"2":{"51":2}}],["equal",{"2":{"3":1}}],["eao",{"2":{"51":4}}],["each",{"2":{"28":1}}],["easy",{"2":{"49":1,"51":1}}],["easily",{"2":{"49":1}}],["easier",{"2":{"18":1}}],["eas",{"2":{"11":4}}],["ease",{"2":{"3":2}}],["easternmost",{"2":{"15":1}}],["east",{"2":{"0":3,"7":1,"11":1}}],["edges",{"2":{"28":1}}],["era5",{"2":{"29":1}}],["era5reanalysis",{"2":{"23":1}}],["errors",{"2":{"28":1}}],["error",{"2":{"0":4,"3":4,"4":5,"5":2,"14":2,"30":1,"43":1,"53":2}}],["elaborated",{"2":{"34":1}}],["elevation",{"2":{"22":1}}],["elements",{"2":{"3":1}}],["ellipsoid",{"2":{"22":1}}],["every",{"2":{"21":2,"29":10}}],["even",{"2":{"10":1}}],["etopo",{"2":{"21":4,"22":1,"24":1,"25":1}}],["etc",{"2":{"17":1}}],["et",{"0":{"10":1,"11":1},"2":{"10":1,"11":1,"44":2}}],["either",{"2":{"7":1}}],["essd",{"2":{"44":1}}],["essence",{"2":{"7":1}}],["est",{"2":{"7":1}}],["ensure",{"2":{"48":2}}],["enter",{"2":{"41":1}}],["entire",{"2":{"18":1}}],["entirely",{"2":{"6":1,"44":1}}],["enough",{"2":{"21":1,"29":5}}],["end",{"2":{"3":1,"18":1,"37":1,"38":1,"39":1}}],["except",{"2":{"34":1}}],["expressed",{"2":{"25":1}}],["export",{"2":{"23":1}}],["extension",{"2":{"52":1}}],["extend",{"2":{"23":2}}],["extendhigh=",{"2":{"20":2,"27":3,"28":2,"47":2}}],["extendlow=",{"2":{"20":2,"27":3,"28":2,"47":2}}],["extra",{"2":{"44":3}}],["extractgrid",{"2":{"45":1,"47":1,"48":2}}],["extracting",{"0":{"45":1},"1":{"46":1,"47":1,"48":1},"2":{"12":1,"34":1,"48":2}}],["extract",{"2":{"7":1,"14":1,"15":2,"18":2,"34":1,"45":1,"47":1,"48":2}}],["extracts",{"2":{"4":1,"14":1,"43":1,"48":2}}],["extracted",{"2":{"3":2,"48":1}}],["exist",{"2":{"42":1}}],["existing",{"0":{"5":1},"2":{"5":1}}],["exists",{"2":{"3":1,"4":2,"14":1,"43":1}}],["exampleresetgeoregions",{"2":{"44":1}}],["examplemask",{"2":{"39":1}}],["examplef2",{"2":{"28":1}}],["examplefig",{"2":{"20":1,"27":1,"47":1}}],["examplegeo",{"2":{"20":1,"27":1,"52":1}}],["exampleaspect",{"2":{"15":1}}],["exampleblon",{"2":{"15":1}}],["example",{"0":{"20":1,"27":1,"37":1,"38":1},"2":{"3":1,"38":1,"39":1,"51":2}}],["examplesmooth",{"2":{"28":1}}],["examples",{"0":{"1":1},"2":{"23":2}}],["e",{"2":{"3":4,"4":1,"5":1,"7":3,"8":1,"9":1,"10":1,"11":1,"14":2,"15":4,"21":1,"34":1,"42":1,"43":1,"47":1,"51":1}}],["minimize",{"2":{"48":1}}],["minimum",{"2":{"15":4,"20":6,"39":4,"47":6,"51":4}}],["much",{"2":{"18":2}}],["must",{"2":{"3":3,"7":1,"42":2}}],["modification",{"2":{"48":1}}],["more",{"0":{"31":1},"2":{"6":1,"18":1,"40":1}}],["monitoring",{"2":{"3":2}}],["markersize=20",{"2":{"51":2}}],["margin",{"2":{"0":2}}],["matrix",{"2":{"38":1,"47":2}}],["matching",{"2":{"30":1}}],["map",{"2":{"52":1}}],["mapping",{"2":{"34":3}}],["maps",{"2":{"34":1}}],["may",{"2":{"16":1,"23":1,"25":1}}],["make",{"2":{"16":1}}],["manager",{"2":{"16":1}}],["many",{"2":{"10":1}}],["maximum",{"2":{"15":4,"20":6,"39":4,"47":6,"51":4}}],["masks",{"0":{"27":1}}],["mask",{"0":{"18":1,"22":1,"25":1,"28":1,"39":1},"1":{"19":1,"20":1,"21":1,"23":1,"24":1,"26":1,"27":1,"28":1,"29":1},"2":{"7":1,"18":1,"20":1,"21":1,"23":3,"24":1,"25":3,"27":1,"28":1,"29":15,"34":3,"38":4,"39":10,"47":2}}],["master",{"2":{"3":2}}],["main",{"2":{"7":1,"13":1,"16":2,"19":1,"26":1,"36":1,"46":1,"50":1}}],["memory",{"2":{"48":1}}],["meant",{"2":{"48":1}}],["meaning",{"2":{"28":1}}],["means",{"2":{"0":4,"25":1}}],["me",{"2":{"16":1,"17":1}}],["meters",{"2":{"23":1}}],["meta",{"2":{"3":2}}],["methoderror",{"2":{"30":1}}],["method",{"2":{"3":2,"5":1,"14":1,"15":2,"30":2,"32":1,"40":4,"53":3}}],["mdash",{"2":{"0":2,"3":2,"4":1,"5":1,"7":1,"14":1,"15":2,"21":1,"23":1,"24":1,"29":2,"30":1,"31":2,"32":1,"34":1,"40":2,"42":1,"43":1,"44":1,"48":2,"53":3}}],["fname",{"2":{"32":1,"43":2}}],["f2",{"2":{"28":4}}],["faster",{"2":{"18":1}}],["false",{"2":{"3":2,"4":2,"8":1,"9":1,"10":1,"11":1,"14":1,"18":1,"21":6,"23":1,"29":1,"30":1,"31":6,"32":1,"43":1,"44":2,"47":2,"51":2,"52":2,"53":3}}],["fall",{"2":{"0":4}}],["fear",{"2":{"42":1}}],["features",{"2":{"16":1}}],["feel",{"2":{"17":2}}],["frame",{"2":{"51":1}}],["francisco",{"0":{"9":1},"2":{"9":1,"44":1}}],["free",{"2":{"17":2}}],["from",{"0":{"9":1,"10":1,"11":1,"28":1,"41":1,"43":1},"1":{"42":1,"43":1,"44":1},"2":{"3":2,"7":1,"9":1,"10":1,"11":1,"15":1,"18":5,"21":1,"22":1,"25":3,"28":1,"34":1,"39":1,"40":2,"43":1,"48":4,"49":1}}],["floats",{"2":{"34":2}}],["float32",{"2":{"21":1}}],["float",{"2":{"7":4}}],["float64",{"2":{"3":3,"10":1,"11":1,"14":1,"38":1,"47":3,"51":1}}],["fully",{"2":{"22":1}}],["full",{"2":{"7":1}}],["functionality",{"2":{"23":1}}],["function",{"2":{"0":2,"4":2,"5":1,"14":1,"15":1,"18":2,"21":1,"29":2,"30":1,"31":3,"32":1,"42":1,"43":2,"44":1,"45":1,"48":2,"49":1,"51":1}}],["functions",{"2":{"0":2,"3":1}}],["ft",{"2":{"3":4,"7":2,"21":1,"34":3}}],["filtering",{"2":{"25":1,"29":1}}],["filter",{"2":{"21":1,"39":1}}],["file",{"0":{"32":1,"43":1},"2":{"18":3,"21":2,"30":1,"42":1,"43":3,"44":3}}],["files",{"0":{"42":1},"2":{"3":2,"32":2,"42":4,"44":4}}],["fixed",{"2":{"48":1}}],["fix",{"2":{"16":1}}],["find",{"2":{"16":1}}],["figure",{"2":{"15":1,"17":1,"20":1,"27":1,"28":1,"39":1,"47":1,"51":1,"52":1}}],["fig",{"2":{"15":4,"20":4,"27":5,"39":4,"47":4,"51":4,"52":4}}],["fields",{"2":{"7":1,"15":2,"23":1,"34":2}}],["field",{"2":{"7":3,"15":1,"23":1,"34":3,"38":1,"39":1}}],["first",{"2":{"3":1,"25":1,"42":1}}],["follows",{"2":{"21":1,"22":2,"29":5,"34":1}}],["following",{"2":{"3":3,"7":3,"8":1,"9":1,"10":1,"11":1,"14":1,"22":1,"23":4,"34":4,"37":1,"38":1,"39":2,"40":2,"43":1,"47":2,"51":1}}],["folder",{"2":{"21":1,"42":2}}],["for",{"0":{"1":1,"24":1},"2":{"0":10,"3":7,"6":1,"7":3,"8":1,"9":1,"10":1,"11":1,"14":1,"15":8,"16":1,"18":4,"20":1,"21":1,"23":4,"24":1,"25":1,"32":1,"34":4,"35":1,"40":2,"42":1,"45":2,"48":2}}],["format",{"2":{"0":2,"30":1,"31":2,"32":1}}],["found",{"2":{"0":2,"34":1}}],["lsm",{"2":{"20":1,"23":1,"27":3,"28":2,"29":7}}],["lsd",{"2":{"20":7,"27":12,"28":7,"29":6}}],["let",{"0":{"47":1},"2":{"47":1,"51":2,"52":2}}],["letter",{"2":{"9":1,"10":1,"11":1}}],["length",{"2":{"47":2}}],["length=11",{"2":{"47":2}}],["length=19",{"2":{"20":1,"27":3,"28":2}}],["length=16",{"2":{"20":1}}],["leniency",{"2":{"0":4}}],["levels=range",{"2":{"20":2,"27":3,"28":2,"47":2}}],["lt",{"2":{"7":1,"29":1}}],["literate",{"2":{"40":1,"44":1,"48":1,"53":1}}],["linewidth=2",{"2":{"20":1,"27":3,"28":2}}],["linewidth=5",{"2":{"15":2,"20":2,"47":2,"51":1,"52":9}}],["linewidth=3",{"2":{"15":1,"51":1,"52":1}}],["linestyle=",{"2":{"52":4}}],["lines",{"2":{"15":3,"20":3,"27":3,"28":2,"39":3,"47":4,"51":2,"52":10}}],["limits=",{"2":{"15":1,"20":2,"27":3,"28":2,"39":1,"47":2,"51":1,"52":1}}],["like",{"2":{"4":1}}],["listing",{"0":{"32":1},"2":{"31":1}}],["listings",{"0":{"30":1},"1":{"31":1,"32":1}}],["lists",{"0":{"31":1},"2":{"30":1,"44":1}}],["listed",{"2":{"25":1}}],["list",{"0":{"6":1,"8":1,"33":1,"44":1},"1":{"9":1,"10":1,"11":1},"2":{"3":6,"4":2,"6":1,"8":1,"30":1,"31":1,"32":1,"41":1,"43":1,"44":2}}],["log",{"2":{"21":1,"29":5}}],["logging",{"2":{"3":4}}],["loaded",{"0":{"28":1},"2":{"23":1,"25":1}}],["load",{"2":{"21":1}}],["loading",{"0":{"18":1},"1":{"19":1,"20":1,"21":1},"2":{"18":2}}],["local",{"2":{"18":1,"21":1}}],["longer",{"2":{"18":1}}],["longitude",{"2":{"0":8,"3":1,"15":5,"20":2,"21":1,"23":1,"27":3,"28":2,"29":5,"34":2,"37":2,"38":3,"39":2,"40":4,"47":3,"48":2,"51":1}}],["lon",{"2":{"3":4,"15":3,"20":2,"23":1,"27":3,"28":2,"34":6,"37":4,"38":4,"39":7,"40":4,"42":1,"47":7}}],["largely",{"2":{"34":1}}],["larger",{"2":{"25":1}}],["landseaflat",{"2":{"23":3,"29":2}}],["landseatopo",{"2":{"23":4,"24":1,"29":2}}],["landsea",{"0":{"20":1,"24":1},"2":{"18":2,"21":5,"23":4,"24":2}}],["land",{"0":{"18":1,"22":1,"25":1,"28":1},"1":{"19":1,"20":1,"21":1,"23":1,"24":1,"26":1,"27":1,"28":1,"29":1},"2":{"18":2,"20":1,"21":2,"23":4,"24":1,"25":7,"27":1,"28":2,"29":15}}],["layout",{"2":{"15":1,"20":1,"27":1,"28":1,"39":1,"47":1,"51":1,"52":1}}],["later",{"2":{"34":1}}],["latency",{"2":{"18":2}}],["latest",{"2":{"16":3}}],["lat",{"2":{"3":4,"15":3,"20":2,"23":1,"27":3,"28":2,"34":6,"37":4,"38":4,"39":7,"40":4,"42":1,"47":7}}],["latitude",{"2":{"0":8,"3":1,"15":5,"20":1,"21":1,"23":1,"27":1,"28":1,"29":5,"34":4,"37":2,"38":3,"39":2,"40":4,"47":3,"48":2}}],["last",{"2":{"3":2,"42":1}}],["wrf",{"2":{"40":1}}],["wtgs84",{"2":{"22":1}}],["way",{"2":{"49":1}}],["was",{"2":{"40":1,"44":1,"48":1,"53":1}}],["waiting",{"2":{"16":1}}],["want",{"2":{"16":1,"41":2}}],["waf",{"2":{"9":4}}],["warning",{"2":{"3":2,"4":1,"44":3,"48":2}}],["worth",{"2":{"25":1}}],["working",{"2":{"16":1}}],["work",{"2":{"3":2,"4":1,"30":1,"44":6}}],["wong",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["would",{"2":{"4":1}}],["width=225",{"2":{"27":3}}],["width=350",{"2":{"20":2,"28":2,"47":2}}],["width=750",{"2":{"15":1,"39":1,"51":1,"52":1}}],["wishes",{"2":{"44":1}}],["wish",{"2":{"6":1,"44":1,"49":1}}],["will",{"2":{"3":8,"4":3,"5":2,"7":1,"14":2,"23":1,"29":7,"30":1,"32":1,"34":3,"43":1}}],["without",{"2":{"16":1,"29":1}}],["within",{"2":{"0":4,"7":1,"21":1,"23":1,"34":2,"38":3,"39":1,"48":2,"51":3,"52":1,"53":5}}],["with",{"2":{"0":4,"4":2,"5":1,"7":1,"14":2,"18":1,"20":1,"23":2,"29":1,"31":1,"34":2,"43":2,"44":3,"47":1,"49":2,"51":1,"52":1}}],["wholly",{"2":{"52":1}}],["while",{"2":{"15":1}}],["which",{"2":{"7":2,"18":1,"21":1,"22":1,"23":1,"25":1,"30":1,"34":3,"43":1,"45":1,"49":1,"51":1}}],["where",{"2":{"3":2,"14":1,"25":1,"29":1,"34":1,"48":4}}],["when",{"2":{"3":1,"7":1,"18":1,"25":2,"28":1,"42":1,"48":2,"49":1}}],["what",{"0":{"7":1,"34":1},"2":{"0":2,"15":1,"41":1,"48":2,"51":1}}],["w",{"2":{"3":3,"7":3,"8":1,"9":1,"10":1,"11":1,"14":1,"15":2,"34":1,"43":1,"47":1,"51":1}}],["well",{"2":{"31":1,"44":1}}],["we",{"2":{"2":1,"3":2,"4":2,"5":1,"7":1,"12":1,"14":1,"15":2,"20":1,"23":1,"34":1,"35":1,"38":1,"39":2,"43":1,"44":1,"45":4,"47":2,"48":4,"49":2,"51":4,"52":2,"53":4}}],["westernmost",{"2":{"15":1}}],["western",{"2":{"9":1}}],["west",{"2":{"0":3}}],["big",{"2":{"52":10,"53":2}}],["b",{"2":{"51":5,"52":8}}],["back",{"2":{"44":2}}],["batch",{"2":{"42":1}}],["base",{"2":{"53":3}}],["based",{"2":{"29":3,"40":2,"47":1}}],["basically",{"2":{"34":1}}],["basic",{"2":{"2":1,"30":1,"34":1,"35":1}}],["buffer",{"2":{"25":1}}],["but",{"2":{"25":1,"34":1,"41":1,"51":1,"52":1}}],["bugs",{"2":{"16":1}}],["branch",{"2":{"16":1}}],["brief",{"2":{"0":1}}],["blue",{"2":{"39":1,"51":1,"52":2}}],["blurred",{"2":{"21":1}}],["bleed",{"2":{"28":1}}],["black",{"2":{"15":1,"20":1,"27":3,"28":2,"39":1,"47":2,"51":1,"52":1}}],["blat",{"2":{"15":5,"39":2,"52":8}}],["blon",{"2":{"15":4,"39":2,"52":8}}],["besides",{"2":{"31":1}}],["best",{"2":{"28":1}}],["before",{"2":{"29":1,"48":2}}],["below",{"2":{"25":1,"51":2,"52":1}}],["beneath",{"2":{"22":1}}],["becomes",{"2":{"21":1}}],["because",{"2":{"15":1,"18":1,"28":1,"38":1}}],["bedrock",{"2":{"21":5,"22":2}}],["better",{"2":{"18":1}}],["between",{"0":{"15":1,"27":1},"2":{"7":2,"15":1,"18":1,"21":1,"35":1}}],["been",{"2":{"3":1,"4":1,"18":1,"25":1}}],["be",{"2":{"2":1,"3":14,"4":2,"5":5,"7":5,"14":2,"16":1,"18":1,"21":2,"25":1,"28":1,"29":7,"30":2,"32":2,"34":1,"38":1,"42":3,"52":1,"53":4}}],["being",{"2":{"0":2,"4":1,"5":1,"14":1}}],["box",{"2":{"51":1}}],["both",{"2":{"7":1,"21":1,"23":1,"30":1,"34":1}}],["bounding",{"2":{"38":1,"51":1}}],["boundaries",{"2":{"28":1}}],["boundary",{"2":{"7":4}}],["bound",{"2":{"0":12,"3":2,"7":1,"15":9,"39":1}}],["bounds",{"0":{"15":1},"2":{"0":11,"3":2,"7":1,"8":1,"9":1,"10":1,"11":1,"14":1,"15":3,"23":2,"37":1,"38":1,"39":1,"43":1,"47":2,"51":5}}],["bool=false",{"2":{"42":1}}],["boolean",{"2":{"4":1}}],["bool",{"2":{"0":4,"3":4,"4":2,"7":2,"21":5,"29":1,"30":2,"31":5,"44":1,"53":6}}],["by",{"2":{"0":2,"3":2,"7":6,"8":1,"9":1,"10":1,"11":1,"15":2,"16":1,"25":2,"35":1,"39":1,"41":1,"49":1,"51":2,"52":1,"53":7}}],[">",{"2":{"0":2,"3":2,"4":1,"14":1,"15":2,"21":1,"29":5,"30":1,"31":2,"32":1,"40":2,"48":2,"53":3}}],["randn",{"2":{"47":1}}],["raw",{"2":{"13":1,"19":1,"26":1,"27":5,"28":4,"29":1,"36":1,"46":1,"50":1}}],["runner",{"2":{"44":6}}],["running",{"2":{"0":2,"53":2}}],["roughly",{"2":{"21":2,"29":10}}],["rw",{"2":{"0":6}}],["reexported",{"2":{"49":1}}],["reduce",{"2":{"48":1}}],["red",{"2":{"39":1,"47":2,"52":3}}],["redefined",{"2":{"2":1}}],["relevant",{"2":{"34":1}}],["release",{"2":{"16":2}}],["recommended",{"2":{"25":2}}],["rectg",{"2":{"53":3}}],["rectgrid",{"0":{"37":1},"2":{"34":4,"40":2}}],["recttest",{"2":{"43":1}}],["rectlist",{"2":{"3":1,"30":1,"44":2}}],["rectangle",{"2":{"3":5}}],["rectilinear",{"2":{"3":4,"7":8,"8":1,"9":1,"10":1,"15":3,"34":3,"37":1,"38":2,"39":1,"40":2,"43":1}}],["rectregions",{"2":{"3":1,"31":1,"35":1,"42":1}}],["rectregion",{"2":{"3":8,"4":2,"7":4,"9":1,"15":7,"20":1,"27":1,"30":1,"34":1,"52":1,"53":2}}],["refer",{"2":{"23":1}}],["repository",{"2":{"16":1}}],["regarding",{"2":{"12":1,"23":2}}],["registry",{"2":{"16":1}}],["regid",{"2":{"3":6}}],["regionmask",{"2":{"34":4,"40":1}}],["regiongrids",{"2":{"35":1}}],["regiongrid",{"0":{"34":1,"35":1,"45":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1,"46":1,"47":1,"48":1},"2":{"34":6,"35":1,"37":1,"38":2,"39":1,"40":3,"45":1,"47":2,"48":4}}],["region2",{"2":{"3":1}}],["regions",{"0":{"10":1,"11":1},"2":{"3":1,"7":1,"44":1}}],["region",{"2":{"0":12,"3":13,"7":3,"8":2,"9":2,"10":2,"11":2,"14":2,"15":2,"30":1,"34":6,"37":1,"38":2,"39":5,"43":2,"45":3,"47":4,"48":2,"49":3,"51":2,"52":7}}],["resh",{"2":{"26":1}}],["resolution",{"2":{"20":1,"21":3}}],["resolved",{"2":{"18":1}}],["resize",{"2":{"15":1,"20":1,"27":1,"28":1,"39":1,"47":1,"51":1,"52":1}}],["resl",{"2":{"13":1,"19":1,"36":1,"46":1,"50":1}}],["result",{"2":{"7":1}}],["resetting",{"2":{"44":1}}],["resetgeoregions",{"2":{"6":1,"30":3,"33":1,"44":2}}],["reset",{"0":{"6":1,"44":1},"2":{"6":1,"44":5}}],["respectively",{"2":{"0":2,"3":1,"25":1,"34":1}}],["removed",{"2":{"5":2}}],["removegeoregion",{"2":{"5":4,"53":4}}],["remove",{"2":{"5":1}}],["removing",{"0":{"5":1},"2":{"2":1,"5":1,"53":5}}],["retrieval",{"2":{"22":1}}],["retrieved",{"2":{"32":1}}],["retrieve",{"2":{"15":1,"21":1}}],["retrieving",{"0":{"14":1,"20":1},"2":{"3":2,"8":1,"9":1,"10":1,"11":1,"25":1,"28":1}}],["return",{"2":{"21":2}}],["returnlsd",{"2":{"21":2}}],["returns",{"2":{"4":1,"14":1,"15":2,"45":1}}],["returning",{"2":{"4":1}}],["returned",{"2":{"0":1}}],["reanalysis",{"2":{"40":1}}],["readdlm",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["reading",{"0":{"12":1,"43":1},"1":{"13":1,"14":1,"15":1}}],["read",{"2":{"3":2,"4":1,"30":1,"43":2,"44":3}}],["real",{"2":{"0":18,"3":3,"7":2,"15":6,"29":5,"34":3,"40":6,"48":4,"53":3}}],["re",{"2":{"0":6}}],["rs",{"2":{"0":6}}],["rnd",{"2":{"4":6}}],["rn",{"2":{"0":6}}],["cgeo",{"2":{"53":4}}],["c",{"2":{"51":7}}],["cesm",{"2":{"40":1}}],["central",{"2":{"10":1,"45":1,"47":1}}],["circular",{"2":{"28":1}}],["child",{"2":{"53":10}}],["choice",{"2":{"42":1}}],["choose",{"2":{"21":1}}],["checkif",{"2":{"4":1}}],["checking",{"2":{"3":3,"4":3}}],["checkgrid",{"2":{"0":1}}],["check",{"2":{"0":2,"3":2,"4":1,"49":2,"53":3}}],["checkpoint",{"2":{"0":1}}],["clat",{"2":{"13":1,"15":1,"19":1,"20":1,"26":1,"27":3,"28":2,"36":1,"39":1,"46":1,"47":2,"50":1,"51":1,"52":1}}],["closest",{"2":{"30":1}}],["closer",{"2":{"21":1,"29":5}}],["closed",{"2":{"3":1,"42":1}}],["clon",{"2":{"13":1,"15":1,"19":1,"20":1,"26":1,"27":3,"28":2,"36":1,"39":1,"46":1,"47":2,"50":1,"51":1,"52":1}}],["cst",{"2":{"13":2,"19":2,"26":2,"36":2,"46":2,"50":2}}],["cna",{"2":{"10":4}}],["currently",{"2":{"8":1}}],["custom",{"0":{"32":1,"43":1},"2":{"6":1,"30":2,"31":6,"32":2,"43":1,"44":2}}],["calculate",{"2":{"51":1}}],["called",{"2":{"30":1}}],["calling",{"2":{"25":1}}],["call",{"2":{"6":1,"9":1,"10":1,"11":1,"25":1,"28":1,"44":1}}],["case",{"2":{"51":1,"52":1}}],["causes",{"2":{"28":1}}],["cairomakie",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["candidates",{"2":{"30":1}}],["cannot",{"2":{"5":2}}],["can",{"2":{"2":1,"3":4,"4":1,"5":1,"6":1,"7":1,"16":2,"18":3,"21":2,"23":1,"25":1,"30":1,"32":1,"35":1,"42":2,"43":1,"44":2,"51":1,"52":1}}],["created",{"2":{"21":1,"25":1}}],["create",{"2":{"15":2}}],["creates",{"2":{"3":2,"5":1,"40":2}}],["creating",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1},"2":{"2":1,"35":1}}],["corroborate",{"2":{"51":1}}],["corresponding",{"2":{"29":1}}],["corresponds",{"2":{"21":2,"29":10}}],["collect",{"2":{"47":2}}],["color=",{"2":{"15":1,"20":1,"27":3,"28":2,"39":1,"47":4,"51":1,"52":10}}],["copies",{"2":{"42":1}}],["copy",{"2":{"42":2}}],["coarser",{"2":{"20":1}}],["coast",{"2":{"13":5,"19":5,"26":5,"36":5,"46":5,"50":5}}],["coastlines",{"2":{"20":1}}],["coastline",{"2":{"13":1,"18":1,"19":1,"21":1,"25":1,"26":1,"36":1,"46":1,"50":1}}],["cost",{"2":{"18":1}}],["coordgeoregion",{"2":{"15":4,"20":1,"39":1,"47":1,"51":1,"52":5}}],["coordinate",{"2":{"15":1}}],["coordinates",{"2":{"0":1,"3":2,"7":1,"15":2,"42":1,"51":5}}],["comprises",{"2":{"25":1}}],["comparison",{"0":{"27":1},"2":{"20":1}}],["comes",{"2":{"18":1}}],["comments",{"2":{"17":1}}],["comments=true",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["command",{"2":{"16":1}}],["com",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["coming",{"2":{"1":1}}],["covers",{"2":{"8":1}}],["covered",{"2":{"0":1}}],["could",{"2":{"7":1}}],["concern",{"2":{"51":1}}],["converts",{"2":{"22":1}}],["contourf",{"2":{"20":2,"27":3,"28":2,"47":2}}],["contain",{"2":{"7":2,"23":2,"34":3}}],["containing",{"2":{"3":2,"23":4,"24":1,"40":4,"43":1,"44":1,"48":6,"53":2}}],["contains",{"2":{"0":1,"7":1,"8":1,"34":1,"38":1,"48":2}}],["consider",{"2":{"39":1,"52":1}}],["considered",{"2":{"5":1,"7":1,"28":1}}],["construct",{"2":{"3":1}}],["number",{"2":{"53":1}}],["ndata",{"2":{"47":1,"48":3}}],["nca",{"2":{"47":3}}],["nws",{"2":{"38":1}}],["nwn",{"2":{"14":3,"15":1}}],["nlat",{"2":{"37":1,"38":2,"39":2,"47":4}}],["nlon",{"2":{"37":1,"38":2,"39":2,"47":4}}],["next",{"2":{"47":1}}],["need",{"2":{"18":1,"25":1}}],["netcdf",{"2":{"18":1,"21":2}}],["necessary",{"2":{"16":1}}],["new",{"0":{"3":1},"2":{"16":1,"45":1,"47":1}}],["nans",{"2":{"34":1}}],["nan",{"2":{"23":2,"38":14,"47":145}}],["nasaprecipitation",{"2":{"23":1}}],["natgeo",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["natural",{"2":{"7":1,"52":1}}],["name",{"2":{"3":10,"7":2,"8":2,"9":2,"10":2,"11":2,"14":2,"30":1,"43":3,"47":2,"51":2}}],["n",{"2":{"3":3,"7":2,"8":1,"9":1,"10":1,"11":1,"14":1,"15":2,"34":1,"43":1,"47":1,"48":15,"51":1,"53":2}}],["now",{"2":{"22":1,"51":2,"52":2}}],["non",{"2":{"7":1,"34":2,"40":1}}],["no",{"2":{"0":4,"4":1,"14":1,"15":1,"30":1,"43":1,"51":1}}],["northern",{"2":{"47":1}}],["northernmost",{"2":{"15":1}}],["northwest",{"2":{"14":1}}],["north",{"2":{"0":3,"7":1,"10":1,"14":1,"45":1}}],["note",{"2":{"51":1}}],["noticeable",{"2":{"18":1}}],["nothing",{"2":{"13":1,"19":1,"25":1,"26":1,"29":4,"30":1,"31":2,"32":1,"36":1,"46":1,"48":1,"50":1}}],["not",{"2":{"0":3,"3":2,"4":5,"5":2,"14":2,"23":1,"25":2,"42":1,"48":2,"51":1,"52":1,"53":2}}],["nbsp",{"2":{"0":2,"3":2,"4":1,"5":1,"7":1,"14":1,"15":2,"21":1,"23":1,"24":1,"29":2,"30":1,"31":2,"32":1,"34":1,"40":2,"42":1,"43":1,"44":1,"48":2,"53":3}}],["dimensions",{"2":{"48":3}}],["dimension",{"2":{"48":11}}],["displayed",{"2":{"30":1,"32":1}}],["display",{"2":{"30":1,"31":7,"32":1}}],["distant",{"2":{"25":1}}],["distance",{"2":{"18":1}}],["directory",{"2":{"42":1}}],["direction",{"2":{"21":2,"29":10}}],["directly",{"0":{"28":1},"2":{"18":3,"25":1,"28":3}}],["different",{"2":{"31":1,"35":1}}],["differentiate",{"2":{"7":1}}],["differences",{"2":{"34":1,"35":1}}],["difference",{"0":{"15":1},"2":{"7":1,"15":1}}],["dataset",{"0":{"25":1},"1":{"26":1,"27":1,"28":1,"29":1},"2":{"18":4,"21":4,"23":3,"25":3,"28":1,"29":7}}],["datasets",{"0":{"18":1,"22":1},"1":{"19":1,"20":1,"21":1,"23":1,"24":1},"2":{"23":2,"40":1}}],["data",{"0":{"35":1,"45":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1,"46":1,"47":1,"48":1},"2":{"7":1,"18":5,"21":4,"22":2,"23":3,"34":9,"38":2,"39":1,"45":4,"47":3,"48":7,"49":1}}],["dealing",{"2":{"49":1}}],["derived",{"2":{"39":1}}],["degree",{"2":{"25":1}}],["denote",{"2":{"49":1}}],["denotes",{"2":{"15":1,"25":2}}],["denoted",{"2":{"7":2}}],["delimitedfiles",{"2":{"13":1,"19":1,"26":1,"36":1,"46":1,"50":1}}],["detect",{"2":{"51":1}}],["determining",{"2":{"23":1}}],["determine",{"2":{"3":2,"49":1,"52":1}}],["detailed",{"2":{"48":2}}],["details",{"2":{"6":1,"18":1}}],["default",{"0":{"33":1},"2":{"3":4,"7":2,"8":1,"21":1,"31":5,"44":2}}],["define",{"0":{"47":1},"2":{"3":1,"41":1,"42":1,"47":2,"51":1}}],["defined",{"0":{"12":1,"14":1},"1":{"13":1,"14":1,"15":1},"2":{"0":2,"2":1,"3":4,"8":1,"9":4,"10":4,"11":4,"15":2,"30":2,"31":2,"32":1,"39":1,"42":1,"44":1,"45":1,"51":1,"52":2,"53":7}}],["defining",{"0":{"3":1},"2":{"3":3,"7":1,"34":8,"42":3}}],["depot",{"2":{"3":1}}],["describing",{"2":{"34":4}}],["describe",{"2":{"0":1}}],["description",{"2":{"0":1}}],["dot",{"2":{"52":4}}],["doubly",{"2":{"28":1}}],["done",{"2":{"18":1}}],["don",{"2":{"18":1,"41":1}}],["downloading",{"2":{"18":1}}],["downloaded",{"2":{"18":1,"21":3}}],["download",{"2":{"13":1,"18":2,"19":1,"26":1,"36":1,"46":1,"50":1}}],["domains",{"2":{"9":1,"10":1,"11":1}}],["domain",{"2":{"7":1,"8":1,"47":1}}],["do",{"2":{"0":1,"34":1,"41":1,"44":1,"45":1}}],["ilat",{"2":{"34":1,"37":1,"38":1,"39":1,"47":1}}],["ilon",{"2":{"34":1,"37":1,"38":1,"39":1,"47":1}}],["ipcc",{"2":{"31":1}}],["implementing",{"2":{"25":1}}],["imagefiltering",{"2":{"21":1,"25":1}}],["ice",{"2":{"21":1,"22":2}}],["ids",{"2":{"9":1,"10":1,"11":1}}],["idtrc`",{"2":{"4":1}}],["identified",{"2":{"7":2,"8":1}}],["identifier",{"2":{"3":3,"4":3,"7":2}}],["identify",{"2":{"3":2,"4":1,"5":1,"14":1}}],["id",{"2":{"3":19,"4":9,"5":3,"7":3,"8":4,"9":4,"10":4,"11":4,"14":10,"30":1,"43":5,"47":3,"51":3}}],["iterable",{"2":{"48":1}}],["iterations",{"2":{"21":4,"29":20}}],["iteratively",{"2":{"18":1}}],["its",{"2":{"15":1,"18":1,"23":1}}],["itself",{"2":{"7":3,"28":1}}],["iturbide",{"0":{"11":1},"2":{"11":1,"44":1}}],["it",{"0":{"4":1,"49":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"2":2,"5":1,"17":1,"20":1,"21":1,"25":2,"28":1,"31":1,"32":1,"38":1,"43":1,"51":5}}],["if",{"2":{"0":10,"3":8,"4":8,"5":1,"14":2,"16":1,"17":2,"18":1,"21":4,"23":1,"29":2,"30":1,"31":5,"32":1,"35":1,"42":1,"43":1,"44":3,"48":1,"49":2,"51":3,"52":1,"53":7}}],["isingeoregion",{"2":{"49":1,"51":3,"52":5}}],["isca",{"2":{"40":1}}],["issue",{"2":{"17":1}}],["isnan",{"2":{"39":4}}],["isn",{"2":{"16":1}}],["isgeoregion",{"2":{"4":5}}],["is360",{"2":{"3":2,"7":1,"8":1,"9":1,"10":1,"11":1,"14":1,"43":1,"47":1,"51":1}}],["is180",{"2":{"3":2,"7":1,"8":1,"9":1,"10":1,"11":1,"14":1,"43":1,"47":1,"51":1}}],["is",{"0":{"4":1,"7":1,"34":1,"49":1,"51":1,"52":1},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"0":11,"3":16,"4":9,"5":3,"7":6,"14":3,"15":6,"18":4,"21":4,"23":9,"25":3,"28":3,"29":9,"31":6,"32":1,"34":2,"38":3,"39":1,"40":2,"43":1,"45":1,"47":1,"48":6,"49":3,"51":11,"52":3,"53":7}}],["i",{"2":{"0":1,"3":1,"4":1,"5":1,"14":1,"15":2,"16":2,"21":1,"42":2}}],["inlat",{"2":{"39":4}}],["inlon",{"2":{"39":4}}],["indicate",{"2":{"38":1}}],["indices",{"2":{"34":4,"37":2,"38":2,"39":2,"47":2}}],["independently",{"2":{"4":1}}],["indeed",{"2":{"3":2,"52":1}}],["inputs",{"2":{"25":1}}],["including",{"2":{"30":1,"32":1}}],["includes",{"2":{"22":1}}],["increase",{"2":{"21":2,"29":10}}],["initial",{"2":{"18":1}}],["installed",{"2":{"16":1}}],["installation",{"0":{"16":1}}],["instructions",{"0":{"16":1}}],["instead",{"2":{"4":1,"29":1}}],["inside",{"0":{"32":1,"52":1},"2":{"3":2,"49":2,"51":1}}],["ints",{"2":{"34":3}}],["int",{"2":{"21":4,"29":15,"48":2,"53":1}}],["integer",{"2":{"25":1}}],["integral",{"2":{"5":2}}],["intersection",{"2":{"47":1}}],["interesting",{"2":{"48":2}}],["interest",{"0":{"47":1},"2":{"18":1,"21":1,"25":1,"40":2}}],["interested",{"2":{"17":1,"45":1,"48":2}}],["interface",{"0":{"0":1}}],["into",{"2":{"3":2,"21":3,"22":1,"23":1,"28":1,"29":4,"42":1,"48":2}}],["information",{"0":{"12":1,"14":1},"1":{"13":1,"14":1,"15":1},"2":{"3":6,"4":1,"8":1,"9":1,"10":1,"11":1,"12":1,"14":2,"18":1,"24":1,"34":3,"43":3,"44":1,"48":2}}],["info",{"2":{"3":12,"4":4,"5":1,"8":1,"9":1,"10":1,"11":1,"44":1,"53":5}}],["in",{"0":{"12":1,"15":1,"43":1,"49":1,"51":1},"1":{"13":1,"14":1,"15":1,"50":1,"51":1,"52":1,"53":1},"2":{"0":7,"2":1,"3":9,"4":4,"7":3,"8":1,"9":3,"10":3,"11":3,"12":1,"14":1,"15":4,"16":1,"17":2,"21":5,"23":1,"29":20,"30":1,"31":2,"32":2,"34":4,"35":1,"38":1,"39":1,"40":1,"41":1,"42":2,"43":2,"44":4,"45":3,"47":1,"48":7,"51":5,"52":1,"53":3}}],["ts4",{"2":{"52":5,"53":2}}],["ts3",{"2":{"52":4,"53":2}}],["ts2",{"2":{"52":5,"53":2}}],["ts1",{"2":{"52":5,"53":2}}],["takes",{"2":{"45":1}}],["tablepolyregions",{"2":{"31":2}}],["tablerectregions",{"2":{"31":2}}],["tablegeoregions",{"2":{"30":3,"31":1,"32":1,"33":1}}],["tabular",{"0":{"30":1},"1":{"31":1,"32":1},"2":{"30":1,"31":2,"32":1}}],["textfiles",{"2":{"42":1}}],["templategeoregion",{"2":{"42":1}}],["templategeoregions",{"2":{"32":1,"42":1}}],["templates",{"0":{"41":1},"1":{"42":1,"43":1,"44":1},"2":{"42":1}}],["template",{"0":{"42":1},"2":{"32":1,"42":3}}],["test",{"2":{"3":9,"30":1,"47":1,"51":1,"52":4,"53":1}}],["ticks",{"2":{"47":1}}],["tiltlist",{"2":{"44":2}}],["tiltregion",{"2":{"3":2,"4":2,"53":3}}],["title=",{"2":{"20":2,"27":3,"28":2}}],["time",{"2":{"18":1}}],["two",{"2":{"18":2,"25":1,"35":1}}],["t",{"2":{"16":1,"18":1,"41":1}}],["type",{"0":{"24":1},"2":{"7":13,"9":1,"10":1,"11":1,"21":1,"23":3,"24":1,"25":1,"30":1,"34":3,"39":1,"40":2,"49":2}}],["types",{"2":{"7":3,"23":3,"34":3,"35":1}}],["tf",{"2":{"4":3}}],["txt",{"2":{"3":2,"13":1,"19":1,"26":1,"30":2,"36":1,"43":1,"44":6,"46":1,"50":1}}],["tpl",{"2":{"3":8,"30":1}}],["trivial",{"2":{"51":1}}],["tropical",{"2":{"43":1}}],["trp",{"2":{"43":3}}],["transparent",{"2":{"34":1}}],["trying",{"2":{"17":1}}],["true",{"2":{"3":10,"4":4,"8":1,"9":1,"10":1,"11":1,"14":1,"18":1,"21":3,"23":1,"29":2,"30":1,"31":9,"32":1,"43":1,"44":1,"47":1,"51":3,"52":2,"53":2}}],["trc",{"2":{"3":14,"5":2}}],["tlat",{"2":{"0":6,"53":1}}],["tlon",{"2":{"0":6,"53":1}}],["topographic",{"2":{"29":3}}],["topography",{"2":{"22":3,"29":5}}],["toggle",{"2":{"18":1}}],["touch",{"2":{"17":1}}],["to",{"0":{"35":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1},"2":{"0":9,"3":17,"4":10,"5":3,"6":1,"7":3,"9":2,"10":2,"11":2,"14":2,"15":1,"16":5,"17":4,"18":4,"20":1,"21":6,"23":2,"25":3,"27":1,"28":3,"29":12,"30":2,"31":1,"32":3,"34":6,"38":1,"39":3,"41":3,"42":4,"43":1,"44":4,"47":2,"48":4,"49":5,"51":5,"52":2,"53":5}}],["tutorials",{"2":{"0":1}}],["thus",{"2":{"28":2,"34":1}}],["than",{"2":{"18":1}}],["that",{"2":{"0":4,"3":2,"4":1,"5":1,"7":3,"8":1,"14":1,"15":1,"18":1,"21":1,"22":3,"23":1,"25":2,"28":2,"29":3,"34":2,"38":2,"39":2,"41":1,"42":2,"48":4,"51":6,"52":2,"53":4}}],["though",{"2":{"10":1}}],["through",{"2":{"2":1,"12":1,"35":1}}],["throw=false",{"2":{"4":1,"51":3,"52":4}}],["throw=true",{"2":{"0":2}}],["throws",{"2":{"4":1}}],["thrown",{"2":{"0":2,"3":2,"4":2,"5":1,"14":2,"43":1,"53":2}}],["throw",{"2":{"0":4,"3":1,"4":3,"53":5}}],["threshold",{"2":{"0":6}}],["they",{"2":{"25":1}}],["these",{"2":{"23":1,"32":1}}],["them",{"2":{"10":1,"41":1,"52":1}}],["then",{"2":{"0":2,"3":2,"4":2,"5":1,"14":1,"18":1,"21":1,"29":2,"42":1,"43":2,"47":1,"53":2}}],["therefore",{"2":{"5":1}}],["there",{"2":{"0":4,"15":1,"18":1}}],["their",{"2":{"0":1,"23":1,"25":1,"30":1,"34":1,"47":1}}],["the",{"0":{"6":1,"15":1,"23":1,"24":1,"25":1,"39":1,"44":1,"47":1},"1":{"26":1,"27":1,"28":1,"29":1},"2":{"0":23,"2":1,"3":55,"4":14,"5":11,"6":1,"7":27,"8":7,"9":7,"10":7,"11":7,"14":12,"15":29,"16":9,"18":21,"21":18,"22":6,"23":20,"24":1,"25":12,"28":7,"29":41,"30":1,"31":1,"32":3,"34":27,"35":4,"37":2,"38":9,"39":10,"40":7,"42":7,"43":9,"44":8,"45":4,"47":10,"48":10,"49":4,"51":17,"52":4,"53":11}}],["this",{"2":{"0":1,"2":1,"3":3,"4":5,"8":1,"9":1,"10":1,"11":1,"12":1,"14":1,"16":1,"18":2,"23":1,"28":1,"35":1,"38":1,"40":3,"42":1,"43":1,"44":1,"45":1,"48":2,"49":2,"51":3,"52":2,"53":1}}],["atlantic",{"2":{"51":2}}],["at",{"2":{"28":1,"51":3}}],["auto",{"2":{"20":4,"27":6,"28":4,"47":4}}],["automatically",{"2":{"3":1}}],["again",{"2":{"18":1}}],["ach",{"2":{"20":1,"27":1}}],["aceh",{"0":{"20":1},"2":{"20":1,"27":1}}],["accessed",{"2":{"16":1}}],["actual",{"2":{"15":1,"18":1}}],["ax3",{"2":{"27":3}}],["ax2",{"2":{"20":3,"27":3,"28":3}}],["ax1",{"2":{"20":4,"27":3,"28":3}}],["axis",{"2":{"15":1,"20":2,"27":3,"28":2,"39":1,"47":2,"51":1,"52":1}}],["ax",{"2":{"15":4,"39":6,"47":9,"51":5,"52":11}}],["able",{"2":{"51":1}}],["about",{"0":{"14":1},"2":{"51":1}}],["abstractarray",{"2":{"48":3}}],["abstractrange",{"2":{"40":4}}],["abstractlandsea",{"0":{"23":1},"2":{"23":4}}],["abstract",{"2":{"7":1,"23":3,"34":1}}],["abstractstring",{"2":{"3":8,"4":1,"5":1,"7":2,"14":1,"21":1,"32":1,"42":1,"43":1}}],["american",{"2":{"45":1}}],["america",{"2":{"10":1,"14":1,"47":1}}],["amp",{"0":{"9":1},"2":{"9":1,"44":1}}],["africa",{"2":{"9":1}}],["adapted",{"0":{"9":1,"10":1,"11":1},"2":{"9":1,"10":1,"11":1}}],["addgeoregions",{"2":{"42":1,"43":2}}],["additional",{"2":{"38":1}}],["adding",{"0":{"41":1},"1":{"42":1,"43":1,"44":1},"2":{"3":2}}],["added",{"2":{"3":3,"42":1}}],["add",{"2":{"3":2,"4":2,"9":1,"10":1,"11":1,"16":3,"18":1,"43":1}}],["available",{"0":{"8":1},"1":{"9":1,"10":1,"11":1},"2":{"8":1,"30":3,"31":3,"32":2,"34":1}}],["always",{"2":{"21":1,"28":1}}],["although",{"2":{"16":1}}],["al",{"0":{"10":1,"11":1},"2":{"10":1,"11":1,"44":2}}],["allocations",{"2":{"48":2}}],["allows",{"2":{"7":1,"39":1,"48":1,"49":2}}],["allfiles",{"2":{"30":2,"44":2}}],["allfiles=true",{"2":{"30":1,"33":1,"44":1}}],["all",{"0":{"33":1},"2":{"9":2,"10":2,"11":2,"30":4,"31":3,"32":2,"43":1,"44":1}}],["also",{"2":{"7":2,"23":1,"31":1,"32":1,"34":1,"47":1,"49":1,"51":1}}],["already",{"0":{"4":1},"2":{"3":5,"4":3}}],["assumed",{"2":{"38":1}}],["associated",{"2":{"5":1}}],["ask",{"2":{"17":1}}],["aspect",{"2":{"15":1,"20":3,"39":2,"47":3,"51":2}}],["asia",{"2":{"11":1,"39":1}}],["as",{"2":{"7":1,"8":1,"9":1,"10":1,"11":1,"16":2,"18":1,"21":1,"25":1,"31":2,"34":2,"40":2,"42":1,"44":1,"45":1,"48":1,"49":1,"51":1,"52":2}}],["around",{"2":{"25":1}}],["array",{"2":{"23":2,"29":5,"34":4,"40":4,"45":2,"48":8}}],["arcsecond",{"2":{"22":1}}],["arc",{"2":{"21":1}}],["argument",{"2":{"18":1,"30":1}}],["arguments",{"2":{"0":3,"3":4,"4":1,"5":1,"14":1,"15":2,"21":2,"25":1,"29":10,"30":1,"31":2,"32":1,"40":4,"42":1,"43":1,"44":1,"48":2,"53":4}}],["areas",{"2":{"41":1}}],["are",{"2":{"7":3,"8":1,"9":2,"10":3,"11":2,"17":2,"18":1,"21":2,"25":2,"28":1,"30":1,"34":4,"38":1,"39":1,"45":1,"48":5,"51":3,"52":2}}],["arbitrary",{"2":{"7":1,"52":2}}],["ar6",{"0":{"11":1},"2":{"4":3,"11":6,"14":3,"15":1,"31":3,"38":1,"39":2,"44":1,"45":1,"47":3,"51":4}}],["anyway",{"2":{"51":1}}],["any",{"2":{"17":1,"29":1,"52":1}}],["answer",{"2":{"15":1,"34":1,"45":1}}],["another",{"2":{"3":1,"48":2,"49":1,"52":1}}],["an",{"0":{"5":1},"2":{"0":2,"3":3,"4":5,"5":4,"7":1,"14":2,"17":1,"21":1,"34":4,"38":1,"39":1,"40":2,"43":1,"48":5,"49":1,"51":1,"52":1,"53":2}}],["and",{"0":{"15":1,"18":1,"27":1},"1":{"19":1,"20":1,"21":1},"2":{"0":9,"2":1,"3":6,"5":2,"7":4,"15":11,"16":1,"17":1,"18":3,"20":1,"21":3,"22":1,"23":3,"25":3,"28":1,"29":1,"30":2,"31":1,"34":5,"35":1,"39":2,"40":2,"42":2,"43":1,"44":2,"45":2,"47":3,"48":5,"51":1,"52":4,"53":2}}],["aim",{"2":{"0":1}}],["a",{"0":{"3":1,"4":1,"7":1,"14":1,"15":1,"28":1,"32":1,"34":1,"39":1,"43":1,"49":1,"51":2,"52":2},"1":{"50":1,"51":1,"52":1,"53":1},"2":{"0":5,"2":1,"3":13,"4":3,"7":30,"8":1,"12":1,"14":1,"15":17,"16":1,"18":2,"21":4,"23":3,"24":1,"25":5,"28":1,"29":18,"30":1,"31":1,"34":19,"35":1,"39":5,"40":6,"41":1,"42":3,"45":4,"48":7,"49":3,"51":8,"52":4,"53":16}}],["apply",{"2":{"39":1}}],["applying",{"0":{"35":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1}}],["applied",{"2":{"28":1}}],["application",{"0":{"0":1}}],["api",{"0":{"21":1,"29":1,"40":1,"48":1,"53":1},"2":{"18":1,"25":1}}],["apis",{"0":{"0":1}}],["per",{"2":{"53":1}}],["periodic",{"2":{"28":1}}],["perform",{"2":{"4":1,"25":1,"29":5,"49":1}}],["performing",{"2":{"3":2}}],["pixels",{"2":{"21":2,"29":10}}],["pid",{"2":{"3":2,"7":2,"8":1,"9":1,"10":1,"11":1,"14":1,"43":1,"47":1,"51":1}}],["pkg>",{"2":{"16":3}}],["practice",{"2":{"28":1}}],["priority",{"2":{"21":1}}],["predefined",{"0":{"33":1},"2":{"30":2,"31":3,"32":1,"44":1}}],["preexisting",{"2":{"25":1}}],["pressing",{"2":{"16":1}}],["previously",{"0":{"14":1}}],["prefix",{"2":{"9":1,"10":1,"11":1}}],["proceeding",{"2":{"48":2}}],["process",{"2":{"12":1}}],["prompt",{"2":{"16":1}}],["properties",{"2":{"3":2,"8":1,"9":1,"10":1,"11":1,"14":1,"30":1,"37":1,"38":1,"39":1,"43":1,"47":2,"51":1}}],["program",{"2":{"0":2,"53":2}}],["programming",{"0":{"0":1}}],["put",{"2":{"7":1}}],["patch",{"2":{"16":1}}],["path",{"2":{"3":3,"21":3,"30":1,"42":3,"43":1}}],["paper",{"2":{"9":1,"10":1,"11":1}}],["packages",{"2":{"23":1}}],["package",{"2":{"5":2,"16":1,"49":2}}],["part",{"2":{"5":2,"34":1}}],["parid",{"2":{"3":4}}],["parent",{"2":{"3":4,"7":2,"8":1,"9":1,"10":1,"11":1,"14":1,"30":1,"34":2,"43":1,"47":1,"48":2,"51":1,"53":2}}],["page",{"2":{"0":1,"8":1,"18":2,"40":1,"44":1,"48":1,"53":1}}],["postulate",{"2":{"53":4}}],["possible",{"2":{"21":1,"31":1,"32":1}}],["pop",{"2":{"47":1}}],["polyg",{"2":{"53":3}}],["polygrid",{"0":{"38":1,"39":1},"2":{"34":7,"38":1,"39":1,"40":2}}],["polygonops",{"2":{"49":1}}],["polygon",{"2":{"3":1,"42":1,"53":1}}],["polygonal",{"2":{"3":6,"7":4,"10":1,"11":1,"14":1,"15":1,"30":1,"38":1,"39":1,"47":2,"51":1}}],["polylist",{"2":{"3":1,"30":1,"44":2}}],["polyregions",{"2":{"3":3,"31":1,"35":1,"42":3}}],["polyregion",{"0":{"15":1},"2":{"3":6,"4":2,"7":6,"10":1,"11":1,"15":4,"30":1,"34":1,"39":3,"52":4,"53":3}}],["point2",{"2":{"7":1,"49":1,"51":3,"53":1}}],["points",{"2":{"3":3,"15":4,"23":2,"25":1,"29":1,"34":4,"37":4,"38":4,"39":5,"40":5,"47":4,"49":1,"51":2,"53":1}}],["point",{"0":{"51":1},"2":{"0":7,"3":1,"10":1,"11":1,"14":1,"16":1,"23":1,"47":1,"49":3,"51":11,"53":3}}],["placeholder",{"2":{"48":1}}],["place",{"2":{"48":1}}],["plat",{"2":{"0":5}}],["plot",{"2":{"20":1,"39":1,"47":1,"52":1}}],["plotting",{"2":{"15":1}}],["plon",{"2":{"0":5}}],["please",{"2":{"3":1,"17":2,"18":1,"48":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/v6.0.0/assets/chunks/VPLocalSearchBox.DAq6iw7X.js b/v6.0.0/assets/chunks/VPLocalSearchBox.DAq6iw7X.js new file mode 100644 index 00000000..33bbcd83 --- /dev/null +++ b/v6.0.0/assets/chunks/VPLocalSearchBox.DAq6iw7X.js @@ -0,0 +1,7 @@ +var kt=Object.defineProperty;var Ft=(a,e,t)=>e in a?kt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{X as Ot,s as ne,v as Ve,al as Rt,am as Ct,d as Mt,G as be,an as et,h as ye,ao as At,ap as Lt,x as Dt,aq as zt,y as Me,R as de,Q as we,ar as Pt,as as jt,Y as Vt,U as $t,a1 as Bt,o as Q,b as Wt,j as x,a2 as Kt,k as D,at as Jt,au as Ut,av as qt,c as Z,n as tt,e as _e,E as st,F as nt,a as he,t as fe,aw as Gt,p as Qt,l as Ht,ax as it,ay as Yt,ab as Zt,ah as Xt,az as es,_ as ts}from"./framework.Bu--eeyr.js";import{u as ss,c as ns}from"./theme.BtnBj6uK.js";const is={root:()=>Ot(()=>import("./@localSearchIndexroot.DYUSP_8t.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var vt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ie=vt.join(","),mt=typeof Element>"u",re=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!mt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},ke=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},gt=function(e,t,s){if(ke(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ie));return t&&re.call(e,Ie)&&n.unshift(e),n=n.filter(s),n},bt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!ke(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),c=o.length?o:i.children,l=a(c,!0,s);s.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=re.call(i,Ie);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var f=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),v=!ke(f,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(f&&v){var b=a(f===!0?i.children:f.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},yt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!yt(e)?0:e.tabIndex},as=function(e,t){var s=ie(e);return s<0&&t&&!yt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},cs=function(e){return wt(e)&&e.type==="hidden"},ls=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(re.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var c=e.parentElement,l=Ne(e);if(c&&!c.shadowRoot&&n(c)===!0)return rt(e);e.assignedSlot?e=e.assignedSlot:!c&&l!==e.ownerDocument?e=l.host:e=c}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return rt(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,c=as(o,i),l=i?a(n.candidates):o;c===0?i?t.push.apply(t,l):t.push(o):s.push({documentOrder:r,tabIndex:c,item:n,isScope:i,content:l})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=gt(e,t.includeContainer,$e.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:Fe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=gt(e,t.includeContainer,Fe.bind(null,t)),s},ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Ie)===!1?!1:$e(t,e)},_s=vt.concat("iframe").join(","),Ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,_s)===!1?!1:Fe(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function at(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(a,n).enumerable})),t.push.apply(t,s)}return t}function ot(a){for(var e=1;e0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Ts=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Is=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ve=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Ns=function(e){return ve(e)&&!e.shiftKey},ks=function(e){return ve(e)&&e.shiftKey},lt=function(e){return setTimeout(e,0)},ut=function(e,t){var s=-1;return e.every(function(n,r){return t(n)?(s=r,!1):!0}),s},pe=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1?m-1:0),E=1;E=0)u=s.activeElement;else{var d=i.tabbableGroups[0],m=d&&d.firstTabbableNode;u=m||h("fallbackFocus")}if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},v=function(){if(i.containerGroups=i.containers.map(function(u){var d=ys(u,r.tabbableOptions),m=ws(u,r.tabbableOptions),S=d.length>0?d[0]:void 0,E=d.length>0?d[d.length-1]:void 0,k=m.find(function(p){return ae(p)}),F=m.slice().reverse().find(function(p){return ae(p)}),M=!!d.find(function(p){return ie(p)>0});return{container:u,tabbableNodes:d,focusableNodes:m,posTabIndexesFound:M,firstTabbableNode:S,lastTabbableNode:E,firstDomTabbableNode:k,lastDomTabbableNode:F,nextTabbableNode:function(g){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,O=d.indexOf(g);return O<0?N?m.slice(m.indexOf(g)+1).find(function(P){return ae(P)}):m.slice(0,m.indexOf(g)).reverse().find(function(P){return ae(P)}):d[O+(N?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function T(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?T(d.shadowRoot):d},w=function T(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){T(f());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Ts(u)&&u.select()}},_=function(u){var d=h("setReturnFocus",u);return d||(d===!1?!1:u)},y=function(u){var d=u.target,m=u.event,S=u.isBackward,E=S===void 0?!1:S;d=d||xe(m),v();var k=null;if(i.tabbableGroups.length>0){var F=l(d,m),M=F>=0?i.containerGroups[F]:void 0;if(F<0)E?k=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:k=i.tabbableGroups[0].firstTabbableNode;else if(E){var p=ut(i.tabbableGroups,function(I){var L=I.firstTabbableNode;return d===L});if(p<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!M.nextTabbableNode(d,!1))&&(p=F),p>=0){var g=p===0?i.tabbableGroups.length-1:p-1,N=i.tabbableGroups[g];k=ie(d)>=0?N.lastTabbableNode:N.lastDomTabbableNode}else ve(m)||(k=M.nextTabbableNode(d,!1))}else{var O=ut(i.tabbableGroups,function(I){var L=I.lastTabbableNode;return d===L});if(O<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!M.nextTabbableNode(d))&&(O=F),O>=0){var P=O===i.tabbableGroups.length-1?0:O+1,j=i.tabbableGroups[P];k=ie(d)>=0?j.firstTabbableNode:j.firstDomTabbableNode}else ve(m)||(k=M.nextTabbableNode(d))}}else k=h("fallbackFocus");return k},R=function(u){var d=xe(u);if(!(l(d,u)>=0)){if(pe(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}pe(r.allowOutsideClick,u)||u.preventDefault()}},C=function(u){var d=xe(u),m=l(d,u)>=0;if(m||d instanceof Document)m&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var S,E=!0;if(i.mostRecentlyFocusedNode)if(ie(i.mostRecentlyFocusedNode)>0){var k=l(i.mostRecentlyFocusedNode),F=i.containerGroups[k].tabbableNodes;if(F.length>0){var M=F.findIndex(function(p){return p===i.mostRecentlyFocusedNode});M>=0&&(r.isKeyForward(i.recentNavEvent)?M+1=0&&(S=F[M-1],E=!1))}}else i.containerGroups.some(function(p){return p.tabbableNodes.some(function(g){return ie(g)>0})})||(E=!1);else E=!1;E&&(S=y({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),w(S||i.mostRecentlyFocusedNode||f())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var m=y({event:u,isBackward:d});m&&(ve(u)&&u.preventDefault(),w(m))},H=function(u){if(Is(u)&&pe(r.escapeDeactivates,u)!==!1){u.preventDefault(),o.deactivate();return}(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){var d=xe(u);l(d,u)>=0||pe(r.clickOutsideDeactivates,u)||pe(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},V=function(){if(i.active)return ct.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?lt(function(){w(f())}):w(f()),s.addEventListener("focusin",C,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",W,{capture:!0,passive:!1}),s.addEventListener("keydown",H,{capture:!0,passive:!1}),o},$=function(){if(i.active)return s.removeEventListener("focusin",C,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",W,!0),s.removeEventListener("keydown",H,!0),o},Re=function(u){var d=u.some(function(m){var S=Array.from(m.removedNodes);return S.some(function(E){return E===i.mostRecentlyFocusedNode})});d&&w(f())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(Re):void 0,U=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){A.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=c(u,"onActivate"),m=c(u,"onPostActivate"),S=c(u,"checkCanFocusTrap");S||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var E=function(){S&&v(),V(),U(),m==null||m()};return S?(S(i.containers.concat()).then(E,E),this):(E(),this)},deactivate:function(u){if(!i.active)return this;var d=ot({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,$(),i.active=!1,i.paused=!1,U(),ct.deactivateTrap(n,o);var m=c(d,"onDeactivate"),S=c(d,"onPostDeactivate"),E=c(d,"checkCanReturnFocus"),k=c(d,"returnFocus","returnFocusOnDeactivate");m==null||m();var F=function(){lt(function(){k&&w(_(i.nodeFocusedBeforeActivation)),S==null||S()})};return k&&E?(E(_(i.nodeFocusedBeforeActivation)).then(F,F),this):(F(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=c(u,"onPause"),m=c(u,"onPostPause");return i.paused=!0,d==null||d(),$(),U(),m==null||m(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=c(u,"onUnpause"),m=c(u,"onPostUnpause");return i.paused=!1,d==null||d(),v(),V(),U(),m==null||m(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(m){return typeof m=="string"?s.querySelector(m):m}),i.active&&v(),U(),this}},o.updateContainerElements(e),o};function Rs(a,e={}){let t;const{immediate:s,...n}=e,r=ne(!1),i=ne(!1),o=f=>t&&t.activate(f),c=f=>t&&t.deactivate(f),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return Ve(()=>Rt(a),f=>{f&&(t=Os(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Ct(()=>c()),{hasFocus:r,isPaused:i,activate:o,deactivate:c,pause:l,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const c=()=>{--i<=0&&n(o)};i||c(),r.forEach(l=>{ce.matches(l,this.exclude)?c():this.onIframeReady(l,h=>{t(l)&&(o++,s(h)),c()},c)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,c)=>{o.val===s&&(r=c,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],c=[],l,h,f=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;f();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,o),v=>{this.createInstanceOnIframe(v).forEachNode(e,b=>c.push(b),n)}),c.push(l);c.forEach(v=>{s(v)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const c=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,c):c()})}}let Cs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),c=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&c!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(c)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(c)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,c=parseInt(e.start,10)-o;return c=c>i?i:c,n=c+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),c<0||n-c<0||c>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(c,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:c,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const c=e.nodes[o+1];if(typeof c>"u"||c.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(s>i.end?i.end:s)-i.start,f=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=f+v,e.nodes.forEach((b,w)=>{w>=o&&(e.nodes[w].start>0&&w!==o&&(e.nodes[w].start-=h),e.nodes[w].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(c=>{c=c.node;let l;for(;(l=e.exec(c.textContent))!==null&&l[i]!=="";){if(!s(l[i],c))continue;let h=l.index;if(i!==0)for(let f=1;f{let c;for(;(c=e.exec(o.value))!==null&&c[i]!=="";){let l=c.index;if(i!==0)for(let f=1;fs(c[i],f),(f,v)=>{e.lastIndex=v,n(f)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,c)=>{let{start:l,end:h,valid:f}=this.checkWhitespaceRanges(o,i,r.value);f&&this.wrapRangeInMappedTextNode(r,l,h,v=>t(v,o,r.value.substring(l,h),c),v=>{s(v,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",c=l=>{let h=new RegExp(this.createRegExp(l),`gm${o}`),f=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,b)=>this.opt.filter(b,l,s,f),v=>{f++,s++,this.opt.each(v)},()=>{f===0&&this.opt.noMatch(l),r[i-1]===l?this.opt.done(s):c(r[r.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):c(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,c)=>this.opt.filter(r,i,o,c),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ms(a){const e=new Cs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function Te(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{l(s.next(h))}catch(f){i(f)}}function c(h){try{l(s.throw(h))}catch(f){i(f)}}function l(h){h.done?r(h.value):n(h.value).then(o,c)}l((s=s.apply(a,[])).next())})}const As="ENTRIES",_t="KEYS",xt="VALUES",z="";class Le{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=oe(this._path);if(oe(t)===z)return{done:!1,value:this.result()};const s=e.get(oe(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=oe(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>oe(e)).filter(e=>e!==z).join("")}value(){return oe(this._path).node.get(z)}result(){switch(this._type){case xt:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const oe=a=>a[a.length-1],Ls=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const c=r*i;e:for(const l of a.keys())if(l===z){const h=n[c-1];h<=t&&s.set(o,[a.get(l),h])}else{let h=r;for(let f=0;ft)continue e}St(a.get(l),e,t,s,n,h,i,o+l)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Oe(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=Je(s);for(const i of n.keys())if(i!==z&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Ds(this._tree,e)}entries(){return new Le(this,As)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Ls(this._tree,e,t)}get(e){const t=Be(this._tree,e);return t!==void 0?t.get(z):void 0}has(e){const t=Be(this._tree,e);return t!==void 0&&t.has(z)}keys(){return new Le(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,De(this._tree,e).set(z,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);return s.set(z,t(s.get(z))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);let n=s.get(z);return n===void 0&&s.set(z,n=t()),n}values(){return new Le(this,xt)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Oe=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==z&&e.startsWith(s))return t.push([a,s]),Oe(a.get(s),e.slice(s.length),t);return t.push([a,e]),Oe(void 0,"",t)},Be=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==z&&e.startsWith(t))return Be(a.get(t),e.slice(t.length))},De=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Oe(a,e);if(t!==void 0){if(t.delete(z),t.size===0)Et(s);else if(t.size===1){const[n,r]=t.entries().next().value;Tt(s,n,r)}}},Et=a=>{if(a.length===0)return;const[e,t]=Je(a);if(e.delete(t),e.size===0)Et(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==z&&Tt(a.slice(0,-1),s,n)}},Tt=(a,e,t)=>{if(a.length===0)return;const[s,n]=Je(a);s.set(n+e,t),s.delete(n)},Je=a=>a[a.length-1],Ue="or",It="and",zs="and_not";class le{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?je:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},Pe),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},dt),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},Bs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ke,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const c=this.addDocumentId(o);this.saveStoredFields(c,e);for(const l of r){const h=t(e,l);if(h==null)continue;const f=s(h.toString(),l),v=this._fieldIds[l],b=new Set(f).size;this.addFieldLength(c,v,this._documentCount-1,b);for(const w of f){const _=n(w,l);if(Array.isArray(_))for(const y of _)this.addTerm(v,c,y);else _&&this.addTerm(v,c,_)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:c},l,h)=>(o.push(l),(h+1)%s===0?{chunk:[],promise:c.then(()=>new Promise(f=>setTimeout(f,0))).then(()=>this.addAll(o))}:{chunk:o,promise:c}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const c=this._idToShortId.get(o);if(c==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const l of r){const h=n(e,l);if(h==null)continue;const f=t(h.toString(),l),v=this._fieldIds[l],b=new Set(f).size;this.removeFieldLength(c,v,this._documentCount,b);for(const w of f){const _=s(w,l);if(Array.isArray(_))for(const y of _)this.removeTerm(v,c,y);else _&&this.removeTerm(v,c,_)}}this._storedFields.delete(c),this._documentIds.delete(c),this._idToShortId.delete(o),this._fieldLength.delete(c),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ke,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return Te(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||We.batchSize,r=e.batchWait||We.batchWait;let i=1;for(const[o,c]of this._index){for(const[l,h]of c)for(const[f]of h)this._documentIds.has(f)||(h.size<=1?c.delete(l):h.delete(f));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(l=>setTimeout(l,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||je.minDirtCount,s=s||je.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const s=this.executeQuery(e,t),n=[];for(const[r,{score:i,terms:o,match:c}]of s){const l=o.length||1,h={id:this._documentIds.get(r),score:i*l,terms:Object.keys(c),queryTerms:o,match:c};Object.assign(h,this._storedFields.get(r)),(t.filter==null||t.filter(h))&&n.push(h)}return e===le.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||n.sort(ft),n}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),c=s.get(o);c!=null?(c.score+=r,c.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:c}]of s)n.push({suggestion:r,terms:o,score:i/c});return n.sort(ft),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return Te(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(Pe.hasOwnProperty(e))return ze(Pe,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=Se(n),c._fieldLength=Se(r),c._storedFields=Se(i);for(const[l,h]of c._documentIds)c._idToShortId.set(h,l);for(const[l,h]of s){const f=new Map;for(const v of Object.keys(h)){let b=h[v];o===1&&(b=b.ds),f.set(parseInt(v,10),Se(b))}c._index.set(l,f)}return c}static loadJSAsync(e,t){return Te(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=yield Ee(n),c._fieldLength=yield Ee(r),c._storedFields=yield Ee(i);for(const[h,f]of c._documentIds)c._idToShortId.set(f,h);let l=0;for(const[h,f]of s){const v=new Map;for(const b of Object.keys(f)){let w=f[b];o===1&&(w=w.ds),v.set(parseInt(b,10),yield Ee(w))}++l%1e3===0&&(yield Nt(0)),c._index.set(h,v)}return c})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:c}=e;if(c!==1&&c!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const l=new le(t);return l._documentCount=s,l._nextId=n,l._idToShortId=new Map,l._fieldIds=r,l._avgFieldLength=i,l._dirtCount=o||0,l._index=new X,l}executeQuery(e,t={}){if(e===le.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const v=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(w=>this.executeQuery(w,v));return this.combineResults(b,v.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:c}=i,f=o(e).flatMap(v=>c(v)).filter(v=>!!v).map($s(i)).map(v=>this.executeQuerySpec(v,i));return this.combineResults(f,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((_,y)=>Object.assign(Object.assign({},_),{[y]:ze(s.boost,y)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:c}=s,{fuzzy:l,prefix:h}=Object.assign(Object.assign({},dt.weights),i),f=this._index.get(e.term),v=this.termResults(e.term,e.term,1,e.termBoost,f,n,r,c);let b,w;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const _=e.fuzzy===!0?.2:e.fuzzy,y=_<1?Math.min(o,Math.round(e.term.length*_)):_;y&&(w=this._index.fuzzyGet(e.term,y))}if(b)for(const[_,y]of b){const R=_.length-e.term.length;if(!R)continue;w==null||w.delete(_);const C=h*_.length/(_.length+.3*R);this.termResults(e.term,_,C,e.termBoost,y,n,r,c,v)}if(w)for(const _ of w.keys()){const[y,R]=w.get(_);if(!R)continue;const C=l*_.length/(_.length+R);this.termResults(e.term,_,C,e.termBoost,y,n,r,c,v)}return v}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ue){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ps[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,c,l=new Map){if(r==null)return l;for(const h of Object.keys(i)){const f=i[h],v=this._fieldIds[h],b=r.get(v);if(b==null)continue;let w=b.size;const _=this._avgFieldLength[v];for(const y of b.keys()){if(!this._documentIds.has(y)){this.removeTerm(v,y,t),w-=1;continue}const R=o?o(this._documentIds.get(y),t,this._storedFields.get(y)):1;if(!R)continue;const C=b.get(y),J=this._fieldLength.get(y)[v],H=Vs(C,w,this._documentCount,J,_,c),W=s*n*f*R*H,V=l.get(y);if(V){V.score+=W,Ws(V.terms,e);const $=ze(V.match,t);$?$.push(h):V.match[t]=[h]}else l.set(y,{score:W,terms:[e],match:{[t]:[h]}})}}return l}addTerm(e,t,s){const n=this._index.fetch(s,pt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,pt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ps={[Ue]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ht(s.terms,r)}}return a},[It]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ht(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[zs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},js={k:1.2,b:.7,d:.5},Vs=(a,e,t,s,n,r)=>{const{k:i,b:o,d:c}=r;return Math.log(1+(t-e+.5)/(e+.5))*(c+a*(i+1)/(a+i*(1-o+o*s/n)))},$s=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},Pe={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Ks),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},dt={combineWith:Ue,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:js},Bs={combineWith:It,prefix:(a,e,t)=>e===t.length-1},We={batchSize:1e3,batchWait:10},Ke={minDirtFactor:.1,minDirtCount:20},je=Object.assign(Object.assign({},We),Ke),Ws=(a,e)=>{a.includes(e)||a.push(e)},ht=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},ft=({score:a},{score:e})=>e-a,pt=()=>new Map,Se=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ee=a=>Te(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Ks=/[\n\r\p{Z}\p{P}]+/u;class Js{constructor(e=10){Ce(this,"max");Ce(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const K=a=>(Qt("data-v-5b749456"),a=a(),Ht(),a),Us=["aria-owns"],qs={class:"shell"},Gs=["title"],Qs=K(()=>x("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Hs=[Qs],Ys={class:"search-actions before"},Zs=["title"],Xs=K(()=>x("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),en=[Xs],tn=["placeholder"],sn={class:"search-actions"},nn=["title"],rn=K(()=>x("span",{class:"vpi-layout-list local-search-icon"},null,-1)),an=[rn],on=["disabled","title"],cn=K(()=>x("span",{class:"vpi-delete local-search-icon"},null,-1)),ln=[cn],un=["id","role","aria-labelledby"],dn=["aria-selected"],hn=["href","aria-label","onMouseenter","onFocusin"],fn={class:"titles"},pn=K(()=>x("span",{class:"title-icon"},"#",-1)),vn=["innerHTML"],mn=K(()=>x("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),gn={class:"title main"},bn=["innerHTML"],yn={key:0,class:"excerpt-wrapper"},wn={key:0,class:"excerpt",inert:""},_n=["innerHTML"],xn=K(()=>x("div",{class:"excerpt-gradient-bottom"},null,-1)),Sn=K(()=>x("div",{class:"excerpt-gradient-top"},null,-1)),En={key:0,class:"no-results"},Tn={class:"search-keyboard-shortcuts"},In=["aria-label"],Nn=K(()=>x("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),kn=[Nn],Fn=["aria-label"],On=K(()=>x("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),Rn=[On],Cn=["aria-label"],Mn=K(()=>x("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),An=[Mn],Ln=["aria-label"],Dn=Mt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var F,M;const t=e,s=be(),n=be(),r=be(is),i=ss(),{activate:o}=Rs(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:c,theme:l}=i,h=et(async()=>{var p,g,N,O,P,j,I,L,q;return it(le.loadJSON((N=await((g=(p=r.value)[c.value])==null?void 0:g.call(p)))==null?void 0:N.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((O=l.value.search)==null?void 0:O.provider)==="local"&&((j=(P=l.value.search.options)==null?void 0:P.miniSearch)==null?void 0:j.searchOptions)},...((I=l.value.search)==null?void 0:I.provider)==="local"&&((q=(L=l.value.search.options)==null?void 0:L.miniSearch)==null?void 0:q.options)}))}),v=ye(()=>{var p,g;return((p=l.value.search)==null?void 0:p.provider)==="local"&&((g=l.value.search.options)==null?void 0:g.disableQueryPersistence)===!0}).value?ne(""):At("vitepress:local-search-filter",""),b=Lt("vitepress:local-search-detailed-list",((F=l.value.search)==null?void 0:F.provider)==="local"&&((M=l.value.search.options)==null?void 0:M.detailedView)===!0),w=ye(()=>{var p,g,N;return((p=l.value.search)==null?void 0:p.provider)==="local"&&(((g=l.value.search.options)==null?void 0:g.disableDetailedView)===!0||((N=l.value.search.options)==null?void 0:N.detailedView)===!1)}),_=ye(()=>{var g,N,O,P,j,I,L;const p=((g=l.value.search)==null?void 0:g.options)??l.value.algolia;return((j=(P=(O=(N=p==null?void 0:p.locales)==null?void 0:N[c.value])==null?void 0:O.translations)==null?void 0:P.button)==null?void 0:j.buttonText)||((L=(I=p==null?void 0:p.translations)==null?void 0:I.button)==null?void 0:L.buttonText)||"Search"});Dt(()=>{w.value&&(b.value=!1)});const y=be([]),R=ne(!1);Ve(v,()=>{R.value=!1});const C=et(async()=>{if(n.value)return it(new Ms(n.value))},null),J=new Js(16);zt(()=>[h.value,v.value,b.value],async([p,g,N],O,P)=>{var me,qe,Ge,Qe;(O==null?void 0:O[0])!==p&&J.clear();let j=!1;if(P(()=>{j=!0}),!p)return;y.value=p.search(g).slice(0,16),R.value=!0;const I=N?await Promise.all(y.value.map(B=>H(B.id))):[];if(j)return;for(const{id:B,mod:ee}of I){const te=B.slice(0,B.indexOf("#"));let Y=J.get(te);if(Y)continue;Y=new Map,J.set(te,Y);const G=ee.default??ee;if(G!=null&&G.render||G!=null&&G.setup){const se=Yt(G);se.config.warnHandler=()=>{},se.provide(Zt,i),Object.defineProperties(se.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const He=document.createElement("div");se.mount(He),He.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(ue=>{var Xe;const ge=(Xe=ue.querySelector("a"))==null?void 0:Xe.getAttribute("href"),Ye=(ge==null?void 0:ge.startsWith("#"))&&ge.slice(1);if(!Ye)return;let Ze="";for(;(ue=ue.nextElementSibling)&&!/^h[1-6]$/i.test(ue.tagName);)Ze+=ue.outerHTML;Y.set(Ye,Ze)}),se.unmount()}if(j)return}const L=new Set;if(y.value=y.value.map(B=>{const[ee,te]=B.id.split("#"),Y=J.get(ee),G=(Y==null?void 0:Y.get(te))??"";for(const se in B.match)L.add(se);return{...B,text:G}}),await de(),j)return;await new Promise(B=>{var ee;(ee=C.value)==null||ee.unmark({done:()=>{var te;(te=C.value)==null||te.markRegExp(k(L),{done:B})}})});const q=((me=s.value)==null?void 0:me.querySelectorAll(".result .excerpt"))??[];for(const B of q)(qe=B.querySelector('mark[data-markjs="true"]'))==null||qe.scrollIntoView({block:"center"});(Qe=(Ge=n.value)==null?void 0:Ge.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function H(p){const g=Xt(p.slice(0,p.indexOf("#")));try{if(!g)throw new Error(`Cannot find file for id: ${p}`);return{id:p,mod:await import(g)}}catch(N){return console.error(N),{id:p,mod:{}}}}const W=ne(),V=ye(()=>{var p;return((p=v.value)==null?void 0:p.length)<=0});function $(p=!0){var g,N;(g=W.value)==null||g.focus(),p&&((N=W.value)==null||N.select())}Me(()=>{$()});function Re(p){p.pointerType==="mouse"&&$()}const A=ne(-1),U=ne(!1);Ve(y,p=>{A.value=p.length?0:-1,T()});function T(){de(()=>{const p=document.querySelector(".result.selected");p==null||p.scrollIntoView({block:"nearest"})})}we("ArrowUp",p=>{p.preventDefault(),A.value--,A.value<0&&(A.value=y.value.length-1),U.value=!0,T()}),we("ArrowDown",p=>{p.preventDefault(),A.value++,A.value>=y.value.length&&(A.value=0),U.value=!0,T()});const u=Pt();we("Enter",p=>{if(p.isComposing||p.target instanceof HTMLButtonElement&&p.target.type!=="submit")return;const g=y.value[A.value];if(p.target instanceof HTMLInputElement&&!g){p.preventDefault();return}g&&(u.go(g.id),t("close"))}),we("Escape",()=>{t("close")});const m=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),jt("popstate",p=>{p.preventDefault(),t("close")});const S=Vt($t?document.body:null);Me(()=>{de(()=>{S.value=!0,de().then(()=>o())})}),Bt(()=>{S.value=!1});function E(){v.value="",de().then(()=>$(!1))}function k(p){return new RegExp([...p].sort((g,N)=>N.length-g.length).map(g=>`(${es(g)})`).join("|"),"gi")}return(p,g)=>{var N,O,P,j;return Q(),Wt(Gt,{to:"body"},[x("div",{ref_key:"el",ref:s,role:"button","aria-owns":(N=y.value)!=null&&N.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[x("div",{class:"backdrop",onClick:g[0]||(g[0]=I=>p.$emit("close"))}),x("div",qs,[x("form",{class:"search-bar",onPointerup:g[4]||(g[4]=I=>Re(I)),onSubmit:g[5]||(g[5]=Kt(()=>{},["prevent"]))},[x("label",{title:_.value,id:"localsearch-label",for:"localsearch-input"},Hs,8,Gs),x("div",Ys,[x("button",{class:"back-button",title:D(m)("modal.backButtonTitle"),onClick:g[1]||(g[1]=I=>p.$emit("close"))},en,8,Zs)]),Jt(x("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":g[2]||(g[2]=I=>qt(v)?v.value=I:null),placeholder:_.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,tn),[[Ut,D(v)]]),x("div",sn,[w.value?_e("",!0):(Q(),Z("button",{key:0,class:tt(["toggle-layout-button",{"detailed-list":D(b)}]),type:"button",title:D(m)("modal.displayDetails"),onClick:g[3]||(g[3]=I=>A.value>-1&&(b.value=!D(b)))},an,10,nn)),x("button",{class:"clear-button",type:"reset",disabled:V.value,title:D(m)("modal.resetButtonTitle"),onClick:E},ln,8,on)])],32),x("ul",{ref_key:"resultsEl",ref:n,id:(O=y.value)!=null&&O.length?"localsearch-list":void 0,role:(P=y.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=y.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:g[7]||(g[7]=I=>U.value=!1)},[(Q(!0),Z(nt,null,st(y.value,(I,L)=>(Q(),Z("li",{key:I.id,role:"option","aria-selected":A.value===L?"true":"false"},[x("a",{href:I.id,class:tt(["result",{selected:A.value===L}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:q=>!U.value&&(A.value=L),onFocusin:q=>A.value=L,onClick:g[6]||(g[6]=q=>p.$emit("close"))},[x("div",null,[x("div",fn,[pn,(Q(!0),Z(nt,null,st(I.titles,(q,me)=>(Q(),Z("span",{key:me,class:"title"},[x("span",{class:"text",innerHTML:q},null,8,vn),mn]))),128)),x("span",gn,[x("span",{class:"text",innerHTML:I.title},null,8,bn)])]),D(b)?(Q(),Z("div",yn,[I.text?(Q(),Z("div",wn,[x("div",{class:"vp-doc",innerHTML:I.text},null,8,_n)])):_e("",!0),xn,Sn])):_e("",!0)])],42,hn)],8,dn))),128)),D(v)&&!y.value.length&&R.value?(Q(),Z("li",En,[he(fe(D(m)("modal.noResultsText"))+' "',1),x("strong",null,fe(D(v)),1),he('" ')])):_e("",!0)],40,un),x("div",Tn,[x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.navigateUpKeyAriaLabel")},kn,8,In),x("kbd",{"aria-label":D(m)("modal.footer.navigateDownKeyAriaLabel")},Rn,8,Fn),he(" "+fe(D(m)("modal.footer.navigateText")),1)]),x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.selectKeyAriaLabel")},An,8,Cn),he(" "+fe(D(m)("modal.footer.selectText")),1)]),x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.closeKeyAriaLabel")},"esc",8,Ln),he(" "+fe(D(m)("modal.footer.closeText")),1)])])])],8,Us)])}}}),Bn=ts(Dn,[["__scopeId","data-v-5b749456"]]);export{Bn as default}; diff --git a/v6.0.0/assets/chunks/framework.Bu--eeyr.js b/v6.0.0/assets/chunks/framework.Bu--eeyr.js new file mode 100644 index 00000000..b9983ba7 --- /dev/null +++ b/v6.0.0/assets/chunks/framework.Bu--eeyr.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.36 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function wr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ne={},yt=[],Ae=()=>{},Mi=()=>!1,Kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Er=e=>e.startsWith("onUpdate:"),fe=Object.assign,Cr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ii=Object.prototype.hasOwnProperty,z=(e,t)=>Ii.call(e,t),k=Array.isArray,_t=e=>xn(e)==="[object Map]",Gs=e=>xn(e)==="[object Set]",W=e=>typeof e=="function",ie=e=>typeof e=="string",Qe=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Xs=e=>(Z(e)||W(e))&&W(e.then)&&W(e.catch),Ys=Object.prototype.toString,xn=e=>Ys.call(e),Pi=e=>xn(e).slice(8,-1),zs=e=>xn(e)==="[object Object]",Sr=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=wr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Tn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ni=/-(\w)/g,Le=Tn(e=>e.replace(Ni,(t,n)=>n?n.toUpperCase():"")),Fi=/\B([A-Z])/g,Ze=Tn(e=>e.replace(Fi,"-$1").toLowerCase()),An=Tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),fn=Tn(e=>e?`on${An(e)}`:""),ze=(e,t)=>!Object.is(e,t),dn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},$i=e=>{const t=ie(e)?Number(e):NaN;return isNaN(t)?e:t};let Jr;const Qs=()=>Jr||(Jr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function xr(e){if(k(e)){const t={};for(let n=0;n{if(n){const r=n.split(ji);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Tr(e){let t="";if(ie(e))t=e;else if(k(e))for(let n=0;n!!(e&&e.__v_isRef===!0),ki=e=>ie(e)?e:e==null?"":k(e)||Z(e)&&(e.toString===Ys||!W(e.toString))?eo(e)?ki(e.value):JSON.stringify(e,to,2):String(e),to=(e,t)=>eo(t)?to(e,t.value):_t(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[kn(r,o)+" =>"]=s,n),{})}:Gs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>kn(n))}:Qe(t)?kn(t):Z(t)&&!k(t)&&!zs(t)?String(t):t,kn=(e,t="")=>{var n;return Qe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.36 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ee;class Ki{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Ee,!t&&Ee&&(this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Ee;try{return Ee=this,t()}finally{Ee=n}}}on(){Ee=this}off(){Ee=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),tt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Xe,n=ct;try{return Xe=!0,ct=this,this._runnings++,Qr(this),this.fn()}finally{Zr(this),this._runnings--,ct=n,Xe=t}}stop(){this.active&&(Qr(this),Zr(this),this.onStop&&this.onStop(),this.active=!1)}}function Gi(e){return e.value}function Qr(e){e._trackId++,e._depsLength=0}function Zr(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},yn=new WeakMap,at=Symbol(""),fr=Symbol("");function ve(e,t,n){if(Xe&&ct){let r=yn.get(e);r||yn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=lo(()=>r.delete(n))),oo(ct,s)}}function Ve(e,t,n,r,s,o){const i=yn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&k(e)){const c=Number(r);i.forEach((u,f)=>{(f==="length"||!Qe(f)&&f>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":k(e)?Sr(n)&&l.push(i.get("length")):(l.push(i.get(at)),_t(e)&&l.push(i.get(fr)));break;case"delete":k(e)||(l.push(i.get(at)),_t(e)&&l.push(i.get(fr)));break;case"set":_t(e)&&l.push(i.get(at));break}Rr();for(const c of l)c&&io(c,4);Or()}function Xi(e,t){const n=yn.get(e);return n&&n.get(t)}const Yi=wr("__proto__,__v_isRef,__isVue"),co=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Qe)),es=zi();function zi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){et(),Rr();const r=J(this)[t].apply(this,n);return Or(),tt(),r}}),e}function Ji(e){Qe(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class ao{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?ul:po:o?ho:fo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=k(t);if(!s){if(i&&z(es,n))return Reflect.get(es,n,r);if(n==="hasOwnProperty")return Ji}const l=Reflect.get(t,n,r);return(Qe(n)?co.has(n):Yi(n))||(s||ve(t,"get",n),o)?l:he(l)?i&&Sr(n)?l:l.value:Z(l)?s?Ln(l):On(l):l}}class uo extends ao{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=dt(o);if(!St(r)&&!dt(r)&&(o=J(o),r=J(r)),!k(t)&&he(o)&&!he(r))return c?!1:(o.value=r,!0)}const i=k(t)&&Sr(n)?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function Jt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(ze(t,o)&&ve(s,"get",t),ve(s,"get",o));const{has:i}=Rn(s),l=r?Lr:n?Pr:jt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(ze(e,s)&&ve(r,"has",e),ve(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zt(e,t=!1){return e=e.__v_raw,!t&&ve(J(e),"iterate",at),Reflect.get(e,"size",e)}function ts(e,t=!1){!t&&!St(e)&&!dt(e)&&(e=J(e));const n=J(this);return Rn(n).has.call(n,e)||(n.add(e),Ve(n,"add",e,e)),this}function ns(e,t,n=!1){!n&&!St(t)&&!dt(t)&&(t=J(t));const r=J(this),{has:s,get:o}=Rn(r);let i=s.call(r,e);i||(e=J(e),i=s.call(r,e));const l=o.call(r,e);return r.set(e,t),i?ze(t,l)&&Ve(r,"set",e,t):Ve(r,"add",e,t),this}function rs(e){const t=J(this),{has:n,get:r}=Rn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&Ve(t,"delete",e,void 0),o}function ss(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function en(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Lr:e?Pr:jt;return!e&&ve(l,"iterate",at),i.forEach((u,f)=>r.call(s,c(u),c(f),o))}}function tn(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=_t(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,u=s[e](...r),f=n?Lr:t?Pr:jt;return!t&&ve(o,"iterate",c?fr:at),{next(){const{value:h,done:m}=u.next();return m?{value:h,done:m}:{value:l?[f(h[0]),f(h[1])]:f(h),done:m}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function nl(){const e={get(o){return Jt(this,o)},get size(){return Zt(this)},has:Qt,add:ts,set:ns,delete:rs,clear:ss,forEach:en(!1,!1)},t={get(o){return Jt(this,o,!1,!0)},get size(){return Zt(this)},has:Qt,add(o){return ts.call(this,o,!0)},set(o,i){return ns.call(this,o,i,!0)},delete:rs,clear:ss,forEach:en(!1,!0)},n={get(o){return Jt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:en(!0,!1)},r={get(o){return Jt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=tn(o,!1,!1),n[o]=tn(o,!0,!1),t[o]=tn(o,!1,!0),r[o]=tn(o,!0,!0)}),[e,n,t,r]}const[rl,sl,ol,il]=nl();function Mr(e,t){const n=t?e?il:ol:e?sl:rl;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(z(n,s)&&s in r?n:r,s,o)}const ll={get:Mr(!1,!1)},cl={get:Mr(!1,!0)},al={get:Mr(!0,!1)};const fo=new WeakMap,ho=new WeakMap,po=new WeakMap,ul=new WeakMap;function fl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function dl(e){return e.__v_skip||!Object.isExtensible(e)?0:fl(Pi(e))}function On(e){return dt(e)?e:Ir(e,!1,Zi,ll,fo)}function hl(e){return Ir(e,!1,tl,cl,ho)}function Ln(e){return Ir(e,!0,el,al,po)}function Ir(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=dl(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function vt(e){return dt(e)?vt(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function St(e){return!!(e&&e.__v_isShallow)}function go(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function hn(e){return Object.isExtensible(e)&&Js(e,"__v_skip",!0),e}const jt=e=>Z(e)?On(e):e,Pr=e=>Z(e)?Ln(e):e;class mo{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ar(()=>t(this._value),()=>Mt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&ze(t._value,t._value=t.effect.run())&&Mt(t,4),Nr(t),t.effect._dirtyLevel>=2&&Mt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function pl(e,t,n=!1){let r,s;const o=W(e);return o?(r=e,s=Ae):(r=e.get,s=e.set),new mo(r,s,o||!s,n)}function Nr(e){var t;Xe&&ct&&(e=J(e),oo(ct,(t=e.dep)!=null?t:e.dep=lo(()=>e.dep=void 0,e instanceof mo?e:void 0)))}function Mt(e,t=4,n,r){e=J(e);const s=e.dep;s&&io(s,t)}function he(e){return!!(e&&e.__v_isRef===!0)}function oe(e){return yo(e,!1)}function Fr(e){return yo(e,!0)}function yo(e,t){return he(e)?e:new gl(e,t)}class gl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:jt(t)}get value(){return Nr(this),this._value}set value(t){const n=this.__v_isShallow||St(t)||dt(t);t=n?t:J(t),ze(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:jt(t),Mt(this,4))}}function _o(e){return he(e)?e.value:e}const ml={get:(e,t,n)=>_o(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return he(s)&&!he(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function bo(e){return vt(e)?e:new Proxy(e,ml)}class yl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Nr(this),()=>Mt(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function _l(e){return new yl(e)}class bl{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 Xi(J(this._object),this._key)}}class vl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function wl(e,t,n){return he(e)?e:W(e)?new vl(e):Z(e)&&arguments.length>1?El(e,t,n):oe(e)}function El(e,t,n){const r=e[t];return he(r)?r:new bl(e,t,n)}/** +* @vue/runtime-core v3.4.36 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ye(e,t,n,r){try{return r?e(...r):e()}catch(s){Wt(s,t,n)}}function Re(e,t,n,r){if(W(e)){const s=Ye(e,t,n,r);return s&&Xs(s)&&s.catch(o=>{Wt(o,t,n)}),s}if(k(e)){const s=[];for(let o=0;o>>1,s=ge[r],o=Dt(s);oFe&&ge.splice(t,1)}function Tl(e){k(e)?wt.push(...e):(!Ke||!Ke.includes(e,e.allowRecurse?it+1:it))&&wt.push(e),wo()}function os(e,t,n=Vt?Fe+1:0){for(;nDt(n)-Dt(r));if(wt.length=0,Ke){Ke.push(...t);return}for(Ke=t,it=0;ite.id==null?1/0:e.id,Al=(e,t)=>{const n=Dt(e)-Dt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Eo(e){dr=!1,Vt=!0,ge.sort(Al);try{for(Fe=0;Fe{r._d&&_s(-1);const o=bn(t);let i;try{i=e(...s)}finally{bn(o),r._d&&_s(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function cu(e,t){if(ue===null)return e;const n=Vn(ue),r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Ro(()=>{e.isUnmounting=!0}),e}const Se=[Function,Array],Co={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Se,onEnter:Se,onAfterEnter:Se,onEnterCancelled:Se,onBeforeLeave:Se,onLeave:Se,onAfterLeave:Se,onLeaveCancelled:Se,onBeforeAppear:Se,onAppear:Se,onAfterAppear:Se,onAppearCancelled:Se},So=e=>{const t=e.subTree;return t.component?So(t.component):t},Ll={name:"BaseTransition",props:Co,setup(e,{slots:t}){const n=jn(),r=Ol();return()=>{const s=t.default&&To(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const m of s)if(m.type!==ye){o=m;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return Kn(o);const c=is(o);if(!c)return Kn(o);let u=hr(c,i,r,n,m=>u=m);vn(c,u);const f=n.subTree,h=f&&is(f);if(h&&h.type!==ye&&!lt(c,h)&&So(n).type!==ye){const m=hr(h,i,r,n);if(vn(h,m),l==="out-in"&&c.type!==ye)return r.isLeaving=!0,m.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Kn(o);l==="in-out"&&c.type!==ye&&(m.delayLeave=(_,w,O)=>{const U=xo(r,h);U[String(h.key)]=h,_[We]=()=>{w(),_[We]=void 0,delete u.delayedLeave},u.delayedLeave=O})}return o}}},Ml=Ll;function xo(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 hr(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:m,onLeave:_,onAfterLeave:w,onLeaveCancelled:O,onBeforeAppear:U,onAppear:K,onAfterAppear:H,onAppearCancelled:p}=t,y=String(e.key),I=xo(n,e),T=(M,b)=>{M&&Re(M,r,9,b)},F=(M,b)=>{const N=b[1];T(M,b),k(M)?M.every(x=>x.length<=1)&&N():M.length<=1&&N()},j={mode:i,persisted:l,beforeEnter(M){let b=c;if(!n.isMounted)if(o)b=U||c;else return;M[We]&&M[We](!0);const N=I[y];N&<(e,N)&&N.el[We]&&N.el[We](),T(b,[M])},enter(M){let b=u,N=f,x=h;if(!n.isMounted)if(o)b=K||u,N=H||f,x=p||h;else return;let G=!1;const ee=M[nn]=re=>{G||(G=!0,re?T(x,[M]):T(N,[M]),j.delayedLeave&&j.delayedLeave(),M[nn]=void 0)};b?F(b,[M,ee]):ee()},leave(M,b){const N=String(e.key);if(M[nn]&&M[nn](!0),n.isUnmounting)return b();T(m,[M]);let x=!1;const G=M[We]=ee=>{x||(x=!0,b(),ee?T(O,[M]):T(w,[M]),M[We]=void 0,I[N]===e&&delete I[N])};I[N]=e,_?F(_,[M,G]):G()},clone(M){const b=hr(M,t,n,r,s);return s&&s(b),b}};return j}function Kn(e){if(qt(e))return e=Je(e),e.children=null,e}function is(e){if(!qt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&W(n.default))return n.default()}}function vn(e,t){e.shapeFlag&6&&e.component?vn(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 To(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function au(e){W(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,u,f=0;const h=()=>(f++,c=null,m()),m=()=>{let _;return c||(_=c=t().catch(w=>{if(w=w instanceof Error?w:new Error(String(w)),l)return new Promise((O,U)=>{l(w,()=>O(h()),()=>U(w),f+1)});throw w}).then(w=>_!==c&&c?c:(w&&(w.__esModule||w[Symbol.toStringTag]==="Module")&&(w=w.default),u=w,w)))};return Hr({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return u},setup(){const _=ae;if(u)return()=>Wn(u,_);const w=H=>{c=null,Wt(H,_,13,!r)};if(i&&_.suspense||Xt)return m().then(H=>()=>Wn(H,_)).catch(H=>(w(H),()=>r?le(r,{error:H}):null));const O=oe(!1),U=oe(),K=oe(!!s);return s&&setTimeout(()=>{K.value=!1},s),o!=null&&setTimeout(()=>{if(!O.value&&!U.value){const H=new Error(`Async component timed out after ${o}ms.`);w(H),U.value=H}},o),m().then(()=>{O.value=!0,_.parent&&qt(_.parent.vnode)&&(_.parent.effect.dirty=!0,In(_.parent.update))}).catch(H=>{w(H),U.value=H}),()=>{if(O.value&&u)return Wn(u,_);if(U.value&&r)return le(r,{error:U.value});if(n&&!K.value)return le(n)}}})}function Wn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=le(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const qt=e=>e.type.__isKeepAlive;function Il(e,t){Ao(e,"a",t)}function Pl(e,t){Ao(e,"da",t)}function Ao(e,t,n=ae){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Nn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)qt(s.parent.vnode)&&Nl(r,t,n,s),s=s.parent}}function Nl(e,t,n,r){const s=Nn(t,e,r,!0);Fn(()=>{Cr(r[t],s)},n)}function Nn(e,t,n=ae,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{et();const l=Gt(n),c=Re(t,n,e,i);return l(),tt(),c});return r?s.unshift(o):s.push(o),o}}const De=e=>(t,n=ae)=>{(!Xt||e==="sp")&&Nn(e,(...r)=>t(...r),n)},Fl=De("bm"),Tt=De("m"),$l=De("bu"),Hl=De("u"),Ro=De("bum"),Fn=De("um"),jl=De("sp"),Vl=De("rtg"),Dl=De("rtc");function Ul(e,t=ae){Nn("ec",e,t)}const Oo="components";function uu(e,t){return Mo(Oo,e,!0,t)||e}const Lo=Symbol.for("v-ndc");function fu(e){return ie(e)?Mo(Oo,e,!1)||e:e||Lo}function Mo(e,t,n=!0,r=!1){const s=ue||ae;if(s){const o=s.type;{const l=Pc(o,!1);if(l&&(l===t||l===Le(t)||l===An(Le(t))))return o}const i=ls(s[e]||o[e],t)||ls(s.appContext[e],t);return!i&&r?o:i}}function ls(e,t){return e&&(e[t]||e[Le(t)]||e[An(Le(t))])}function du(e,t,n,r){let s;const o=n;if(k(e)||ie(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lCn(t)?!(t.type===ye||t.type===be&&!Io(t.children)):!0)?e:null}function pu(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:fn(r)]=e[r];return n}const pr=e=>e?oi(e)?Vn(e):pr(e.parent):null,It=fe(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=>pr(e.parent),$root:e=>pr(e.root),$emit:e=>e.emit,$options:e=>jr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,In(e.update)}),$nextTick:e=>e.n||(e.n=Mn.bind(e.proxy)),$watch:e=>gc.bind(e)}),qn=(e,t)=>e!==ne&&!e.__isScriptSetup&&z(e,t),Bl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(qn(r,t))return i[t]=1,r[t];if(s!==ne&&z(s,t))return i[t]=2,s[t];if((u=e.propsOptions[0])&&z(u,t))return i[t]=3,o[t];if(n!==ne&&z(n,t))return i[t]=4,n[t];gr&&(i[t]=0)}}const f=It[t];let h,m;if(f)return t==="$attrs"&&ve(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ne&&z(n,t))return i[t]=4,n[t];if(m=c.config.globalProperties,z(m,t))return m[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return qn(s,t)?(s[t]=n,!0):r!==ne&&z(r,t)?(r[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ne&&z(e,i)||qn(t,i)||(l=o[0])&&z(l,i)||z(r,i)||z(It,i)||z(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function gu(){return kl().slots}function kl(){const e=jn();return e.setupContext||(e.setupContext=li(e))}function cs(e){return k(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let gr=!0;function Kl(e){const t=jr(e),n=e.proxy,r=e.ctx;gr=!1,t.beforeCreate&&as(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:u,created:f,beforeMount:h,mounted:m,beforeUpdate:_,updated:w,activated:O,deactivated:U,beforeDestroy:K,beforeUnmount:H,destroyed:p,unmounted:y,render:I,renderTracked:T,renderTriggered:F,errorCaptured:j,serverPrefetch:M,expose:b,inheritAttrs:N,components:x,directives:G,filters:ee}=t;if(u&&Wl(u,r,null),i)for(const Y in i){const B=i[Y];W(B)&&(r[Y]=B.bind(n))}if(s){const Y=s.call(n,n);Z(Y)&&(e.data=On(Y))}if(gr=!0,o)for(const Y in o){const B=o[Y],de=W(B)?B.bind(n,n):W(B.get)?B.get.bind(n,n):Ae,Yt=!W(B)&&W(B.set)?B.set.bind(n):Ae,nt=se({get:de,set:Yt});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>nt.value,set:Ie=>nt.value=Ie})}if(l)for(const Y in l)Po(l[Y],r,n,Y);if(c){const Y=W(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(B=>{Jl(B,Y[B])})}f&&as(f,e,"c");function D(Y,B){k(B)?B.forEach(de=>Y(de.bind(n))):B&&Y(B.bind(n))}if(D(Fl,h),D(Tt,m),D($l,_),D(Hl,w),D(Il,O),D(Pl,U),D(Ul,j),D(Dl,T),D(Vl,F),D(Ro,H),D(Fn,y),D(jl,M),k(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach(B=>{Object.defineProperty(Y,B,{get:()=>n[B],set:de=>n[B]=de})})}else e.exposed||(e.exposed={});I&&e.render===Ae&&(e.render=I),N!=null&&(e.inheritAttrs=N),x&&(e.components=x),G&&(e.directives=G)}function Wl(e,t,n=Ae){k(e)&&(e=mr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=Ct(s.from||r,s.default,!0):o=Ct(s.from||r):o=Ct(s),he(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function as(e,t,n){Re(k(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Po(e,t,n,r){const s=r.includes(".")?zo(n,r):()=>n[r];if(ie(e)){const o=t[e];W(o)&&$e(s,o)}else if(W(e))$e(s,e.bind(n));else if(Z(e))if(k(e))e.forEach(o=>Po(o,t,n,r));else{const o=W(e.handler)?e.handler.bind(n):t[e.handler];W(o)&&$e(s,o,e)}}function jr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(u=>wn(c,u,i,!0)),wn(c,t,i)),Z(t)&&o.set(t,c),c}function wn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&wn(e,o,n,!0),s&&s.forEach(i=>wn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=ql[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const ql={data:us,props:fs,emits:fs,methods:Lt,computed:Lt,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:Lt,directives:Lt,watch:Xl,provide:us,inject:Gl};function us(e,t){return t?e?function(){return fe(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function Gl(e,t){return Lt(mr(e),mr(t))}function mr(e){if(k(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(r&&r.proxy):t}}const Fo={},$o=()=>Object.create(Fo),Ho=e=>Object.getPrototypeOf(e)===Fo;function Ql(e,t,n,r=!1){const s={},o=$o();e.propsDefaults=Object.create(null),jo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:hl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Zl(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,_]=Vo(h,t,!0);fe(i,m),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,yt),yt;if(k(o))for(let f=0;fe[0]==="_"||e==="$stable",Vr=e=>k(e)?e.map(Te):[Te(e)],tc=(e,t,n)=>{if(t._n)return t;const r=Rl((...s)=>Vr(t(...s)),n);return r._c=!1,r},Uo=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Do(s))continue;const o=e[s];if(W(o))t[s]=tc(s,o,r);else if(o!=null){const i=Vr(o);t[s]=()=>i}}},Bo=(e,t)=>{const n=Vr(t);e.slots.default=()=>n},ko=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},nc=(e,t,n)=>{const r=e.slots=$o();if(e.vnode.shapeFlag&32){const s=t._;s?(ko(r,t,n),n&&Js(r,"_",s,!0)):Uo(t,r)}else t&&Bo(e,t)},rc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ne;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:ko(s,t,n):(o=!t.$stable,Uo(t,s)),i=t}else t&&(Bo(e,t),i={default:1});if(o)for(const l in s)!Do(l)&&i[l]==null&&delete s[l]};function En(e,t,n,r,s=!1){if(k(e)){e.forEach((m,_)=>En(m,t&&(k(t)?t[_]:t),n,r,s));return}if(Et(r)&&!s)return;const o=r.shapeFlag&4?Vn(r.component):r.el,i=s?null:o,{i:l,r:c}=e,u=t&&t.r,f=l.refs===ne?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(ie(u)?(f[u]=null,z(h,u)&&(h[u]=null)):he(u)&&(u.value=null)),W(c))Ye(c,l,12,[i,f]);else{const m=ie(c),_=he(c);if(m||_){const w=()=>{if(e.f){const O=m?z(h,c)?h[c]:f[c]:c.value;s?k(O)&&Cr(O,o):k(O)?O.includes(o)||O.push(o):m?(f[c]=[o],z(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else m?(f[c]=i,z(h,c)&&(h[c]=i)):_&&(c.value=i,e.k&&(f[e.k]=i))};i?(w.id=-1,_e(w,n)):w()}}}const Ko=Symbol("_vte"),sc=e=>e.__isTeleport,Nt=e=>e&&(e.disabled||e.disabled===""),hs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ps=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,_r=(e,t)=>{const n=e&&e.to;return ie(n)?t?t(n):null:n},oc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,u){const{mc:f,pc:h,pbc:m,o:{insert:_,querySelector:w,createText:O,createComment:U}}=u,K=Nt(t.props);let{shapeFlag:H,children:p,dynamicChildren:y}=t;if(e==null){const I=t.el=O(""),T=t.anchor=O("");_(I,n,r),_(T,n,r);const F=t.target=_r(t.props,w),j=qo(F,t,O,_);F&&(i==="svg"||hs(F)?i="svg":(i==="mathml"||ps(F))&&(i="mathml"));const M=(b,N)=>{H&16&&f(p,b,N,s,o,i,l,c)};K?M(n,T):F&&M(F,j)}else{t.el=e.el,t.targetStart=e.targetStart;const I=t.anchor=e.anchor,T=t.target=e.target,F=t.targetAnchor=e.targetAnchor,j=Nt(e.props),M=j?n:T,b=j?I:F;if(i==="svg"||hs(T)?i="svg":(i==="mathml"||ps(T))&&(i="mathml"),y?(m(e.dynamicChildren,y,M,s,o,i,l),Dr(e,t,!0)):c||h(e,t,M,b,s,o,i,l,!1),K)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):rn(t,n,I,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const N=t.target=_r(t.props,w);N&&rn(t,N,null,u,0)}else j&&rn(t,T,F,u,1)}Wo(t)},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:l,anchor:c,targetStart:u,targetAnchor:f,target:h,props:m}=e;if(h&&(s(u),s(f)),o&&s(c),i&16){const _=o||!Nt(m);for(let w=0;w{gs||(console.error("Hydration completed but contains mismatches."),gs=!0)},lc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",cc=e=>e.namespaceURI.includes("MathML"),sn=e=>{if(lc(e))return"svg";if(cc(e))return"mathml"},on=e=>e.nodeType===8;function ac(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:u}}=e,f=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),_n(),y._vnode=p;return}h(y.firstChild,p,null,null,null),_n(),y._vnode=p},h=(p,y,I,T,F,j=!1)=>{j=j||!!y.dynamicChildren;const M=on(p)&&p.data==="[",b=()=>O(p,y,I,T,F,M),{type:N,ref:x,shapeFlag:G,patchFlag:ee}=y;let re=p.nodeType;y.el=p,ee===-2&&(j=!1,y.dynamicChildren=null);let D=null;switch(N){case ut:re!==3?y.children===""?(c(y.el=s(""),i(p),p),D=p):D=b():(p.data!==y.children&&(gt(),p.data=y.children),D=o(p));break;case ye:H(p)?(D=o(p),K(y.el=p.content.firstChild,p,I)):re!==8||M?D=b():D=o(p);break;case Ft:if(M&&(p=o(p),re=p.nodeType),re===1||re===3){D=p;const Y=!y.children.length;for(let B=0;B{j=j||!!y.dynamicChildren;const{type:M,props:b,patchFlag:N,shapeFlag:x,dirs:G,transition:ee}=y,re=M==="input"||M==="option";if(re||N!==-1){G&&Ne(y,null,I,"created");let D=!1;if(H(p)){D=Xo(T,ee)&&I&&I.vnode.props&&I.vnode.props.appear;const B=p.content.firstChild;D&&ee.beforeEnter(B),K(B,p,I),y.el=p=B}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let B=_(p.firstChild,y,p,I,T,F,j);for(;B;){gt();const de=B;B=B.nextSibling,l(de)}}else x&8&&p.textContent!==y.children&&(gt(),p.textContent=y.children);if(b){if(re||!j||N&48){const B=p.tagName.includes("-");for(const de in b)(re&&(de.endsWith("value")||de==="indeterminate")||Kt(de)&&!bt(de)||de[0]==="."||B)&&r(p,de,null,b[de],void 0,I)}else if(b.onClick)r(p,"onClick",null,b.onClick,void 0,I);else if(N&4&&vt(b.style))for(const B in b.style)b.style[B]}let Y;(Y=b&&b.onVnodeBeforeMount)&&xe(Y,I,y),G&&Ne(y,null,I,"beforeMount"),((Y=b&&b.onVnodeMounted)||G||D)&&Qo(()=>{Y&&xe(Y,I,y),D&&ee.enter(p),G&&Ne(y,null,I,"mounted")},T)}return p.nextSibling},_=(p,y,I,T,F,j,M)=>{M=M||!!y.dynamicChildren;const b=y.children,N=b.length;for(let x=0;x{const{slotScopeIds:M}=y;M&&(F=F?F.concat(M):M);const b=i(p),N=_(o(p),y,b,I,T,F,j);return N&&on(N)&&N.data==="]"?o(y.anchor=N):(gt(),c(y.anchor=u("]"),b,N),N)},O=(p,y,I,T,F,j)=>{if(gt(),y.el=null,j){const N=U(p);for(;;){const x=o(p);if(x&&x!==N)l(x);else break}}const M=o(p),b=i(p);return l(p),n(null,y,b,M,I,T,sn(b),F),M},U=(p,y="[",I="]")=>{let T=0;for(;p;)if(p=o(p),p&&on(p)&&(p.data===y&&T++,p.data===I)){if(T===0)return o(p);T--}return p},K=(p,y,I)=>{const T=y.parentNode;T&&T.replaceChild(p,y);let F=I;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=p),F=F.parent},H=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[f,h]}const _e=Qo;function uc(e){return Go(e)}function fc(e){return Go(e,ac)}function Go(e,t){const n=Qs();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:u,setElementText:f,parentNode:h,nextSibling:m,setScopeId:_=Ae,insertStaticContent:w}=e,O=(a,d,g,C=null,v=null,S=null,L=void 0,A=null,R=!!d.dynamicChildren)=>{if(a===d)return;a&&!lt(a,d)&&(C=zt(a),Ie(a,v,S,!0),a=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:E,ref:P,shapeFlag:V}=d;switch(E){case ut:U(a,d,g,C);break;case ye:K(a,d,g,C);break;case Ft:a==null&&H(d,g,C,L);break;case be:x(a,d,g,C,v,S,L,A,R);break;default:V&1?I(a,d,g,C,v,S,L,A,R):V&6?G(a,d,g,C,v,S,L,A,R):(V&64||V&128)&&E.process(a,d,g,C,v,S,L,A,R,ht)}P!=null&&v&&En(P,a&&a.ref,S,d||a,!d)},U=(a,d,g,C)=>{if(a==null)r(d.el=l(d.children),g,C);else{const v=d.el=a.el;d.children!==a.children&&u(v,d.children)}},K=(a,d,g,C)=>{a==null?r(d.el=c(d.children||""),g,C):d.el=a.el},H=(a,d,g,C)=>{[a.el,a.anchor]=w(a.children,d,g,C,a.el,a.anchor)},p=({el:a,anchor:d},g,C)=>{let v;for(;a&&a!==d;)v=m(a),r(a,g,C),a=v;r(d,g,C)},y=({el:a,anchor:d})=>{let g;for(;a&&a!==d;)g=m(a),s(a),a=g;s(d)},I=(a,d,g,C,v,S,L,A,R)=>{d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),a==null?T(d,g,C,v,S,L,A,R):M(a,d,v,S,L,A,R)},T=(a,d,g,C,v,S,L,A)=>{let R,E;const{props:P,shapeFlag:V,transition:$,dirs:q}=a;if(R=a.el=i(a.type,S,P&&P.is,P),V&8?f(R,a.children):V&16&&j(a.children,R,null,C,v,Gn(a,S),L,A),q&&Ne(a,null,C,"created"),F(R,a,a.scopeId,L,C),P){for(const te in P)te!=="value"&&!bt(te)&&o(R,te,null,P[te],S,C);"value"in P&&o(R,"value",null,P.value,S),(E=P.onVnodeBeforeMount)&&xe(E,C,a)}q&&Ne(a,null,C,"beforeMount");const X=Xo(v,$);X&&$.beforeEnter(R),r(R,d,g),((E=P&&P.onVnodeMounted)||X||q)&&_e(()=>{E&&xe(E,C,a),X&&$.enter(R),q&&Ne(a,null,C,"mounted")},v)},F=(a,d,g,C,v)=>{if(g&&_(a,g),C)for(let S=0;S{for(let E=R;E{const A=d.el=a.el;let{patchFlag:R,dynamicChildren:E,dirs:P}=d;R|=a.patchFlag&16;const V=a.props||ne,$=d.props||ne;let q;if(g&&rt(g,!1),(q=$.onVnodeBeforeUpdate)&&xe(q,g,d,a),P&&Ne(d,a,g,"beforeUpdate"),g&&rt(g,!0),(V.innerHTML&&$.innerHTML==null||V.textContent&&$.textContent==null)&&f(A,""),E?b(a.dynamicChildren,E,A,g,C,Gn(d,v),S):L||B(a,d,A,null,g,C,Gn(d,v),S,!1),R>0){if(R&16)N(A,V,$,g,v);else if(R&2&&V.class!==$.class&&o(A,"class",null,$.class,v),R&4&&o(A,"style",V.style,$.style,v),R&8){const X=d.dynamicProps;for(let te=0;te{q&&xe(q,g,d,a),P&&Ne(d,a,g,"updated")},C)},b=(a,d,g,C,v,S,L)=>{for(let A=0;A{if(d!==g){if(d!==ne)for(const S in d)!bt(S)&&!(S in g)&&o(a,S,d[S],null,v,C);for(const S in g){if(bt(S))continue;const L=g[S],A=d[S];L!==A&&S!=="value"&&o(a,S,A,L,v,C)}"value"in g&&o(a,"value",d.value,g.value,v)}},x=(a,d,g,C,v,S,L,A,R)=>{const E=d.el=a?a.el:l(""),P=d.anchor=a?a.anchor:l("");let{patchFlag:V,dynamicChildren:$,slotScopeIds:q}=d;q&&(A=A?A.concat(q):q),a==null?(r(E,g,C),r(P,g,C),j(d.children||[],g,P,v,S,L,A,R)):V>0&&V&64&&$&&a.dynamicChildren?(b(a.dynamicChildren,$,g,v,S,L,A),(d.key!=null||v&&d===v.subTree)&&Dr(a,d,!0)):B(a,d,g,P,v,S,L,A,R)},G=(a,d,g,C,v,S,L,A,R)=>{d.slotScopeIds=A,a==null?d.shapeFlag&512?v.ctx.activate(d,g,C,L,R):ee(d,g,C,v,S,L,R):re(a,d,R)},ee=(a,d,g,C,v,S,L)=>{const A=a.component=Oc(a,C,v);if(qt(a)&&(A.ctx.renderer=ht),Lc(A,!1,L),A.asyncDep){if(v&&v.registerDep(A,D,L),!a.el){const R=A.subTree=le(ye);K(null,R,d,g)}}else D(A,a,d,g,v,S,L)},re=(a,d,g)=>{const C=d.component=a.component;if(vc(a,d,g))if(C.asyncDep&&!C.asyncResolved){Y(C,d,g);return}else C.next=d,xl(C.update),C.effect.dirty=!0,C.update();else d.el=a.el,C.vnode=d},D=(a,d,g,C,v,S,L)=>{const A=()=>{if(a.isMounted){let{next:P,bu:V,u:$,parent:q,vnode:X}=a;{const pt=Yo(a);if(pt){P&&(P.el=X.el,Y(a,P,L)),pt.asyncDep.then(()=>{a.isUnmounted||A()});return}}let te=P,Q;rt(a,!1),P?(P.el=X.el,Y(a,P,L)):P=X,V&&dn(V),(Q=P.props&&P.props.onVnodeBeforeUpdate)&&xe(Q,q,P,X),rt(a,!0);const ce=Xn(a),Oe=a.subTree;a.subTree=ce,O(Oe,ce,h(Oe.el),zt(Oe),a,v,S),P.el=ce.el,te===null&&wc(a,ce.el),$&&_e($,v),(Q=P.props&&P.props.onVnodeUpdated)&&_e(()=>xe(Q,q,P,X),v)}else{let P;const{el:V,props:$}=d,{bm:q,m:X,parent:te}=a,Q=Et(d);if(rt(a,!1),q&&dn(q),!Q&&(P=$&&$.onVnodeBeforeMount)&&xe(P,te,d),rt(a,!0),V&&Bn){const ce=()=>{a.subTree=Xn(a),Bn(V,a.subTree,a,v,null)};Q?d.type.__asyncLoader().then(()=>!a.isUnmounted&&ce()):ce()}else{const ce=a.subTree=Xn(a);O(null,ce,g,C,a,v,S),d.el=ce.el}if(X&&_e(X,v),!Q&&(P=$&&$.onVnodeMounted)){const ce=d;_e(()=>xe(P,te,ce),v)}(d.shapeFlag&256||te&&Et(te.vnode)&&te.vnode.shapeFlag&256)&&a.a&&_e(a.a,v),a.isMounted=!0,d=g=C=null}},R=a.effect=new Ar(A,Ae,()=>In(E),a.scope),E=a.update=()=>{R.dirty&&R.run()};E.i=a,E.id=a.uid,rt(a,!0),E()},Y=(a,d,g)=>{d.component=a;const C=a.vnode.props;a.vnode=d,a.next=null,Zl(a,d.props,C,g),rc(a,d.children,g),et(),os(a),tt()},B=(a,d,g,C,v,S,L,A,R=!1)=>{const E=a&&a.children,P=a?a.shapeFlag:0,V=d.children,{patchFlag:$,shapeFlag:q}=d;if($>0){if($&128){Yt(E,V,g,C,v,S,L,A,R);return}else if($&256){de(E,V,g,C,v,S,L,A,R);return}}q&8?(P&16&&At(E,v,S),V!==E&&f(g,V)):P&16?q&16?Yt(E,V,g,C,v,S,L,A,R):At(E,v,S,!0):(P&8&&f(g,""),q&16&&j(V,g,C,v,S,L,A,R))},de=(a,d,g,C,v,S,L,A,R)=>{a=a||yt,d=d||yt;const E=a.length,P=d.length,V=Math.min(E,P);let $;for($=0;$P?At(a,v,S,!0,!1,V):j(d,g,C,v,S,L,A,R,V)},Yt=(a,d,g,C,v,S,L,A,R)=>{let E=0;const P=d.length;let V=a.length-1,$=P-1;for(;E<=V&&E<=$;){const q=a[E],X=d[E]=R?qe(d[E]):Te(d[E]);if(lt(q,X))O(q,X,g,null,v,S,L,A,R);else break;E++}for(;E<=V&&E<=$;){const q=a[V],X=d[$]=R?qe(d[$]):Te(d[$]);if(lt(q,X))O(q,X,g,null,v,S,L,A,R);else break;V--,$--}if(E>V){if(E<=$){const q=$+1,X=q$)for(;E<=V;)Ie(a[E],v,S,!0),E++;else{const q=E,X=E,te=new Map;for(E=X;E<=$;E++){const we=d[E]=R?qe(d[E]):Te(d[E]);we.key!=null&&te.set(we.key,E)}let Q,ce=0;const Oe=$-X+1;let pt=!1,Xr=0;const Rt=new Array(Oe);for(E=0;E=Oe){Ie(we,v,S,!0);continue}let Pe;if(we.key!=null)Pe=te.get(we.key);else for(Q=X;Q<=$;Q++)if(Rt[Q-X]===0&<(we,d[Q])){Pe=Q;break}Pe===void 0?Ie(we,v,S,!0):(Rt[Pe-X]=E+1,Pe>=Xr?Xr=Pe:pt=!0,O(we,d[Pe],g,null,v,S,L,A,R),ce++)}const Yr=pt?dc(Rt):yt;for(Q=Yr.length-1,E=Oe-1;E>=0;E--){const we=X+E,Pe=d[we],zr=we+1{const{el:S,type:L,transition:A,children:R,shapeFlag:E}=a;if(E&6){nt(a.component.subTree,d,g,C);return}if(E&128){a.suspense.move(d,g,C);return}if(E&64){L.move(a,d,g,ht);return}if(L===be){r(S,d,g);for(let V=0;VA.enter(S),v);else{const{leave:V,delayLeave:$,afterLeave:q}=A,X=()=>r(S,d,g),te=()=>{V(S,()=>{X(),q&&q()})};$?$(S,X,te):te()}else r(S,d,g)},Ie=(a,d,g,C=!1,v=!1)=>{const{type:S,props:L,ref:A,children:R,dynamicChildren:E,shapeFlag:P,patchFlag:V,dirs:$,cacheIndex:q}=a;if(V===-2&&(v=!1),A!=null&&En(A,null,g,a,!0),q!=null&&(d.renderCache[q]=void 0),P&256){d.ctx.deactivate(a);return}const X=P&1&&$,te=!Et(a);let Q;if(te&&(Q=L&&L.onVnodeBeforeUnmount)&&xe(Q,d,a),P&6)Li(a.component,g,C);else{if(P&128){a.suspense.unmount(g,C);return}X&&Ne(a,null,d,"beforeUnmount"),P&64?a.type.remove(a,d,g,ht,C):E&&!E.hasOnce&&(S!==be||V>0&&V&64)?At(E,d,g,!1,!0):(S===be&&V&384||!v&&P&16)&&At(R,d,g),C&&qr(a)}(te&&(Q=L&&L.onVnodeUnmounted)||X)&&_e(()=>{Q&&xe(Q,d,a),X&&Ne(a,null,d,"unmounted")},g)},qr=a=>{const{type:d,el:g,anchor:C,transition:v}=a;if(d===be){Oi(g,C);return}if(d===Ft){y(a);return}const S=()=>{s(g),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(a.shapeFlag&1&&v&&!v.persisted){const{leave:L,delayLeave:A}=v,R=()=>L(g,S);A?A(a.el,S,R):R()}else S()},Oi=(a,d)=>{let g;for(;a!==d;)g=m(a),s(a),a=g;s(d)},Li=(a,d,g)=>{const{bum:C,scope:v,update:S,subTree:L,um:A,m:R,a:E}=a;ms(R),ms(E),C&&dn(C),v.stop(),S&&(S.active=!1,Ie(L,a,d,g)),A&&_e(A,d),_e(()=>{a.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},At=(a,d,g,C=!1,v=!1,S=0)=>{for(let L=S;L{if(a.shapeFlag&6)return zt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const d=m(a.anchor||a.el),g=d&&d[Ko];return g?m(g):d};let Dn=!1;const Gr=(a,d,g)=>{a==null?d._vnode&&Ie(d._vnode,null,null,!0):O(d._vnode||null,a,d,null,null,null,g),Dn||(Dn=!0,os(),_n(),Dn=!1),d._vnode=a},ht={p:O,um:Ie,m:nt,r:qr,mt:ee,mc:j,pc:B,pbc:b,n:zt,o:e};let Un,Bn;return t&&([Un,Bn]=t(ht)),{render:Gr,hydrate:Un,createApp:zl(Gr,Un)}}function Gn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Xo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Dr(e,t,n=!1){const r=e.children,s=t.children;if(k(r)&&k(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Yo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Yo(t)}function ms(e){if(e)for(let t=0;tCt(hc);function Ur(e,t){return $n(e,null,t)}function yu(e,t){return $n(e,null,{flush:"post"})}const ln={};function $e(e,t,n){return $n(e,t,n)}function $n(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ne){if(t&&o){const T=t;t=(...F)=>{T(...F),I()}}const c=ae,u=T=>r===!0?T:Ge(T,r===!1?1:void 0);let f,h=!1,m=!1;if(he(e)?(f=()=>e.value,h=St(e)):vt(e)?(f=()=>u(e),h=!0):k(e)?(m=!0,h=e.some(T=>vt(T)||St(T)),f=()=>e.map(T=>{if(he(T))return T.value;if(vt(T))return u(T);if(W(T))return Ye(T,c,2)})):W(e)?t?f=()=>Ye(e,c,2):f=()=>(_&&_(),Re(e,c,3,[w])):f=Ae,t&&r){const T=f;f=()=>Ge(T())}let _,w=T=>{_=p.onStop=()=>{Ye(T,c,4),_=p.onStop=void 0}},O;if(Xt)if(w=Ae,t?n&&Re(t,c,3,[f(),m?[]:void 0,w]):f(),s==="sync"){const T=pc();O=T.__watcherHandles||(T.__watcherHandles=[])}else return Ae;let U=m?new Array(e.length).fill(ln):ln;const K=()=>{if(!(!p.active||!p.dirty))if(t){const T=p.run();(r||h||(m?T.some((F,j)=>ze(F,U[j])):ze(T,U)))&&(_&&_(),Re(t,c,3,[T,U===ln?void 0:m&&U[0]===ln?[]:U,w]),U=T)}else p.run()};K.allowRecurse=!!t;let H;s==="sync"?H=K:s==="post"?H=()=>_e(K,c&&c.suspense):(K.pre=!0,c&&(K.id=c.uid),H=()=>In(K));const p=new Ar(f,Ae,H),y=no(),I=()=>{p.stop(),y&&Cr(y.effects,p)};return t?n?K():U=p.run():s==="post"?_e(p.run.bind(p),c&&c.suspense):p.run(),O&&O.push(I),I}function gc(e,t,n){const r=this.proxy,s=ie(e)?e.includes(".")?zo(r,e):()=>r[e]:e.bind(r,r);let o;W(t)?o=t:(o=t.handler,n=t);const i=Gt(this),l=$n(s,o.bind(r),n);return i(),l}function zo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{Ge(r,t,n)});else if(zs(e)){for(const r in e)Ge(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Ge(e[r],t,n)}return e}const mc=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${Ze(t)}Modifiers`];function yc(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ne;let s=n;const o=t.startsWith("update:"),i=o&&mc(r,t.slice(7));i&&(i.trim&&(s=n.map(f=>ie(f)?f.trim():f)),i.number&&(s=n.map(cr)));let l,c=r[l=fn(t)]||r[l=fn(Le(t))];!c&&o&&(c=r[l=fn(Ze(t))]),c&&Re(c,e,6,s);const u=r[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Re(u,e,6,s)}}function Jo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!W(e)){const c=u=>{const f=Jo(u,t,!0);f&&(l=!0,fe(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(k(o)?o.forEach(c=>i[c]=null):fe(i,o),Z(e)&&r.set(e,i),i)}function Hn(e,t){return!e||!Kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,Ze(t))||z(e,t))}function Xn(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:u,renderCache:f,props:h,data:m,setupState:_,ctx:w,inheritAttrs:O}=e,U=bn(e);let K,H;try{if(n.shapeFlag&4){const y=s||r,I=y;K=Te(u.call(I,y,f,h,_,m,w)),H=l}else{const y=t;K=Te(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),H=t.props?l:_c(l)}}catch(y){$t.length=0,Wt(y,e,1),K=le(ye)}let p=K;if(H&&O!==!1){const y=Object.keys(H),{shapeFlag:I}=p;y.length&&I&7&&(o&&y.some(Er)&&(H=bc(H,o)),p=Je(p,H,!1,!0))}return n.dirs&&(p=Je(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),K=p,bn(U),K}const _c=e=>{let t;for(const n in e)(n==="class"||n==="style"||Kt(n))&&((t||(t={}))[n]=e[n]);return t},bc=(e,t)=>{const n={};for(const r in e)(!Er(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function vc(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?ys(r,i,u):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Qo(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):Tl(e)}const be=Symbol.for("v-fgt"),ut=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Ft=Symbol.for("v-stc"),$t=[];let Ce=null;function Zo(e=!1){$t.push(Ce=e?null:[])}function Cc(){$t.pop(),Ce=$t[$t.length-1]||null}let Ut=1;function _s(e){Ut+=e,e<0&&Ce&&(Ce.hasOnce=!0)}function ei(e){return e.dynamicChildren=Ut>0?Ce||yt:null,Cc(),Ut>0&&Ce&&Ce.push(e),e}function _u(e,t,n,r,s,o){return ei(ri(e,t,n,r,s,o,!0))}function ti(e,t,n,r,s){return ei(le(e,t,n,r,s,!0))}function Cn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const ni=({key:e})=>e??null,pn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ie(e)||he(e)||W(e)?{i:ue,r:e,k:t,f:!!n}:e:null);function ri(e,t=null,n=null,r=0,s=null,o=e===be?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ni(t),ref:t&&pn(t),scopeId:Pn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ue};return l?(Br(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ie(n)?8:16),Ut>0&&!i&&Ce&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Ce.push(c),c}const le=Sc;function Sc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Lo)&&(e=ye),Cn(e)){const l=Je(e,t,!0);return n&&Br(l,n),Ut>0&&!o&&Ce&&(l.shapeFlag&6?Ce[Ce.indexOf(e)]=l:Ce.push(l)),l.patchFlag=-2,l}if(Nc(e)&&(e=e.__vccOpts),t){t=xc(t);let{class:l,style:c}=t;l&&!ie(l)&&(t.class=Tr(l)),Z(c)&&(go(c)&&!k(c)&&(c=fe({},c)),t.style=xr(c))}const i=ie(e)?1:Ec(e)?128:sc(e)?64:Z(e)?4:W(e)?2:0;return ri(e,t,n,r,s,i,o,!0)}function xc(e){return e?go(e)||Ho(e)?fe({},e):e:null}function Je(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,u=t?Tc(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&ni(u),ref:t&&t.ref?n&&o?k(o)?o.concat(pn(t)):[o,pn(t)]:pn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==be?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Je(e.ssContent),ssFallback:e.ssFallback&&Je(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&vn(f,c.clone(f)),f}function si(e=" ",t=0){return le(ut,null,e,t)}function bu(e,t){const n=le(Ft,null,e);return n.staticCount=t,n}function vu(e="",t=!1){return t?(Zo(),ti(ye,null,e)):le(ye,null,e)}function Te(e){return e==null||typeof e=="boolean"?le(ye):k(e)?le(be,null,e.slice()):typeof e=="object"?qe(e):le(ut,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Je(e)}function Br(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(k(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Br(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Ho(t)?t._ctx=ue:s===3&&ue&&(ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:ue},n=32):(t=String(t),r&64?(n=16,t=[si(t)]):n=8);e.children=t,e.shapeFlag|=n}function Tc(...e){const t={};for(let n=0;nae||ue;let Sn,br;{const e=Qs(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Sn=t("__VUE_INSTANCE_SETTERS__",n=>ae=n),br=t("__VUE_SSR_SETTERS__",n=>Xt=n)}const Gt=e=>{const t=ae;return Sn(e),e.scope.on(),()=>{e.scope.off(),Sn(t)}},bs=()=>{ae&&ae.scope.off(),Sn(null)};function oi(e){return e.vnode.shapeFlag&4}let Xt=!1;function Lc(e,t=!1,n=!1){t&&br(t);const{props:r,children:s}=e.vnode,o=oi(e);Ql(e,r,o,t),nc(e,s,n);const i=o?Mc(e,t):void 0;return t&&br(!1),i}function Mc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Bl);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?li(e):null,o=Gt(e);et();const i=Ye(r,e,0,[e.props,s]);if(tt(),o(),Xs(i)){if(i.then(bs,bs),t)return i.then(l=>{vs(e,l,t)}).catch(l=>{Wt(l,e,0)});e.asyncDep=i}else vs(e,i,t)}else ii(e,t)}function vs(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=bo(t)),ii(e,n)}let ws;function ii(e,t,n){const r=e.type;if(!e.render){if(!t&&ws&&!r.render){const s=r.template||jr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,u=fe(fe({isCustomElement:o,delimiters:l},i),c);r.render=ws(s,u)}}e.render=r.render||Ae}{const s=Gt(e);et();try{Kl(e)}finally{tt(),s()}}}const Ic={get(e,t){return ve(e,"get",""),e[t]}};function li(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ic),slots:e.slots,emit:e.emit,expose:t}}function Vn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(bo(hn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}})):e.proxy}function Pc(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function Nc(e){return W(e)&&"__vccOpts"in e}const se=(e,t)=>pl(e,t,Xt);function vr(e,t,n){const r=arguments.length;return r===2?Z(t)&&!k(t)?Cn(t)?le(e,null,[t]):le(e,t):le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Cn(n)&&(n=[n]),le(e,t,n))}const Fc="3.4.36";/** +* @vue/runtime-dom v3.4.36 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const $c="http://www.w3.org/2000/svg",Hc="http://www.w3.org/1998/Math/MathML",je=typeof document<"u"?document:null,Es=je&&je.createElement("template"),jc={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 s=t==="svg"?je.createElementNS($c,e):t==="mathml"?je.createElementNS(Hc,e):n?je.createElement(e,{is:n}):je.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>je.createTextNode(e),createComment:e=>je.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>je.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Es.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Es.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",Ot="animation",Bt=Symbol("_vtc"),ci=(e,{slots:t})=>vr(Ml,Vc(e),t);ci.displayName="Transition";const ai={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};ci.props=fe({},Co,ai);const st=(e,t=[])=>{k(e)?e.forEach(n=>n(...t)):e&&e(...t)},Cs=e=>e?k(e)?e.some(t=>t.length>1):e.length>1:!1;function Vc(e){const t={};for(const x in e)x in ai||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:u=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,w=Dc(s),O=w&&w[0],U=w&&w[1],{onBeforeEnter:K,onEnter:H,onEnterCancelled:p,onLeave:y,onLeaveCancelled:I,onBeforeAppear:T=K,onAppear:F=H,onAppearCancelled:j=p}=t,M=(x,G,ee)=>{ot(x,G?f:l),ot(x,G?u:i),ee&&ee()},b=(x,G)=>{x._isLeaving=!1,ot(x,h),ot(x,_),ot(x,m),G&&G()},N=x=>(G,ee)=>{const re=x?F:H,D=()=>M(G,x,ee);st(re,[G,D]),Ss(()=>{ot(G,x?c:o),ke(G,x?f:l),Cs(re)||xs(G,r,O,D)})};return fe(t,{onBeforeEnter(x){st(K,[x]),ke(x,o),ke(x,i)},onBeforeAppear(x){st(T,[x]),ke(x,c),ke(x,u)},onEnter:N(!1),onAppear:N(!0),onLeave(x,G){x._isLeaving=!0;const ee=()=>b(x,G);ke(x,h),ke(x,m),kc(),Ss(()=>{x._isLeaving&&(ot(x,h),ke(x,_),Cs(y)||xs(x,r,U,ee))}),st(y,[x,ee])},onEnterCancelled(x){M(x,!1),st(p,[x])},onAppearCancelled(x){M(x,!0),st(j,[x])},onLeaveCancelled(x){b(x),st(I,[x])}})}function Dc(e){if(e==null)return null;if(Z(e))return[Yn(e.enter),Yn(e.leave)];{const t=Yn(e);return[t,t]}}function Yn(e){return $i(e)}function ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Bt]||(e[Bt]=new Set)).add(t)}function ot(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Bt];n&&(n.delete(t),n.size||(e[Bt]=void 0))}function Ss(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Uc=0;function xs(e,t,n,r){const s=e._endId=++Uc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Bc(e,t);if(!i)return r();const u=i+"end";let f=0;const h=()=>{e.removeEventListener(u,m),o()},m=_=>{_.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[w]||"").split(", "),s=r(`${Be}Delay`),o=r(`${Be}Duration`),i=Ts(s,o),l=r(`${Ot}Delay`),c=r(`${Ot}Duration`),u=Ts(l,c);let f=null,h=0,m=0;t===Be?i>0&&(f=Be,h=i,m=o.length):t===Ot?u>0&&(f=Ot,h=u,m=c.length):(h=Math.max(i,u),f=h>0?i>u?Be:Ot:null,m=f?f===Be?o.length:c.length:0);const _=f===Be&&/\b(transform|all)(,|$)/.test(r(`${Be}Property`).toString());return{type:f,timeout:h,propCount:m,hasTransform:_}}function Ts(e,t){for(;e.lengthAs(n)+As(e[r])))}function As(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function kc(){return document.body.offsetHeight}function Kc(e,t,n){const r=e[Bt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Rs=Symbol("_vod"),Wc=Symbol("_vsh"),qc=Symbol(""),Gc=/(^|;)\s*display\s*:/;function Xc(e,t,n){const r=e.style,s=ie(n);let o=!1;if(n&&!s){if(t)if(ie(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&gn(r,l,"")}else for(const i in t)n[i]==null&&gn(r,i,"");for(const i in n)i==="display"&&(o=!0),gn(r,i,n[i])}else if(s){if(t!==n){const i=r[qc];i&&(n+=";"+i),r.cssText=n,o=Gc.test(n)}}else t&&e.removeAttribute("style");Rs in e&&(e[Rs]=o?r.display:"",e[Wc]&&(r.display="none"))}const Os=/\s*!important$/;function gn(e,t,n){if(k(n))n.forEach(r=>gn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Yc(e,t);Os.test(n)?e.setProperty(Ze(r),n.replace(Os,""),"important"):e[r]=n}}const Ls=["Webkit","Moz","ms"],zn={};function Yc(e,t){const n=zn[t];if(n)return n;let r=Le(t);if(r!=="filter"&&r in e)return zn[t]=r;r=An(r);for(let s=0;sJn||(ea.then(()=>Jn=0),Jn=Date.now());function na(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Re(ra(r,n.value),t,5,[r])};return n.value=e,n.attached=ta(),n}function ra(e,t){if(k(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Fs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,sa=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?Kc(e,r,i):t==="style"?Xc(e,n,r):Kt(t)?Er(t)||Qc(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):oa(e,t,r,i))?(zc(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Is(e,t,r,i,o,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Is(e,t,r,i))};function oa(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Fs(t)&&W(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Fs(t)&&ie(n)?!1:t in e}const $s=e=>{const t=e.props["onUpdate:modelValue"]||!1;return k(t)?n=>dn(t,n):t};function ia(e){e.target.composing=!0}function Hs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Qn=Symbol("_assign"),wu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Qn]=$s(s);const o=r||s.props&&s.props.type==="number";mt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[Qn](l)}),n&&mt(e,"change",()=>{e.value=e.value.trim()}),t||(mt(e,"compositionstart",ia),mt(e,"compositionend",Hs),mt(e,"change",Hs))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Qn]=$s(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?cr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},la=["ctrl","shift","alt","meta"],ca={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>la.some(n=>e[`${n}Key`]&&!t.includes(n))},Eu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=Ze(s.key);if(t.some(i=>i===o||aa[i]===o))return e(s)})},ui=fe({patchProp:sa},jc);let Ht,js=!1;function ua(){return Ht||(Ht=uc(ui))}function fa(){return Ht=js?Ht:fc(ui),js=!0,Ht}const Su=(...e)=>{const t=ua().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=di(r);if(!s)return;const o=t._component;!W(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,fi(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},xu=(...e)=>{const t=fa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=di(r);if(s)return n(s,!0,fi(s))},t};function fi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function di(e){return ie(e)?document.querySelector(e):e}const Tu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},da=window.__VP_SITE_DATA__;function kr(e){return no()?(qi(e),!0):!1}function He(e){return typeof e=="function"?e():_o(e)}const hi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ha=Object.prototype.toString,pa=e=>ha.call(e)==="[object Object]",kt=()=>{},Vs=ga();function ga(){var e,t;return hi&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ma(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const pi=e=>e();function ya(e,t={}){let n,r,s=kt;const o=l=>{clearTimeout(l),s(),s=kt};return l=>{const c=He(e),u=He(t.maxWait);return n&&o(n),c<=0||u!==void 0&&u<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,u&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},u)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function _a(e=pi){const t=oe(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Ln(t),pause:n,resume:r,eventFilter:s}}function ba(e){return jn()}function gi(...e){if(e.length!==1)return wl(...e);const t=e[0];return typeof t=="function"?Ln(_l(()=>({get:t,set:kt}))):oe(t)}function mi(e,t,n={}){const{eventFilter:r=pi,...s}=n;return $e(e,ma(r,t),s)}function va(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=_a(r);return{stop:mi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Kr(e,t=!0,n){ba()?Tt(e,n):t?e():Mn(e)}function Au(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return mi(e,t,{...o,eventFilter:ya(r,{maxWait:s})})}function Ru(e,t,n){let r;he(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=kt}=r,c=oe(!s),u=i?Fr(t):oe(t);let f=0;return Ur(async h=>{if(!c.value)return;f++;const m=f;let _=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const w=await e(O=>{h(()=>{o&&(o.value=!1),_||O()})});m===f&&(u.value=w)}catch(w){l(w)}finally{o&&m===f&&(o.value=!1),_=!0}}),s?se(()=>(c.value=!0,u.value)):u}function yi(e){var t;const n=He(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Me=hi?window:void 0;function xt(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Me):[t,n,r,s]=e,!t)return kt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,m,_)=>(f.addEventListener(h,m,_),()=>f.removeEventListener(h,m,_)),c=$e(()=>[yi(t),He(s)],([f,h])=>{if(i(),!f)return;const m=pa(h)?{...h}:h;o.push(...n.flatMap(_=>r.map(w=>l(f,_,w,m))))},{immediate:!0,flush:"post"}),u=()=>{c(),i()};return kr(u),u}function wa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Ou(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Me,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=wa(t);return xt(s,o,f=>{f.repeat&&He(l)||c(f)&&n(f)},i)}function Ea(){const e=oe(!1),t=jn();return t&&Tt(()=>{e.value=!0},t),e}function Ca(e){const t=Ea();return se(()=>(t.value,!!e()))}function _i(e,t={}){const{window:n=Me}=t,r=Ca(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=oe(!1),i=u=>{o.value=u.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Ur(()=>{r.value&&(l(),s=n.matchMedia(He(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return kr(()=>{c(),l(),s=void 0}),o}const cn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},an="__vueuse_ssr_handlers__",Sa=xa();function xa(){return an in cn||(cn[an]=cn[an]||{}),cn[an]}function bi(e,t){return Sa[e]||t}function Ta(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Aa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ds="vueuse-storage";function Wr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:f,window:h=Me,eventFilter:m,onError:_=b=>{console.error(b)},initOnMounted:w}=r,O=(f?Fr:oe)(typeof t=="function"?t():t);if(!n)try{n=bi("getDefaultStorage",()=>{var b;return(b=Me)==null?void 0:b.localStorage})()}catch(b){_(b)}if(!n)return O;const U=He(t),K=Ta(U),H=(s=r.serializer)!=null?s:Aa[K],{pause:p,resume:y}=va(O,()=>T(O.value),{flush:o,deep:i,eventFilter:m});h&&l&&Kr(()=>{xt(h,"storage",j),xt(h,Ds,M),w&&j()}),w||j();function I(b,N){h&&h.dispatchEvent(new CustomEvent(Ds,{detail:{key:e,oldValue:b,newValue:N,storageArea:n}}))}function T(b){try{const N=n.getItem(e);if(b==null)I(N,null),n.removeItem(e);else{const x=H.write(b);N!==x&&(n.setItem(e,x),I(N,x))}}catch(N){_(N)}}function F(b){const N=b?b.newValue:n.getItem(e);if(N==null)return c&&U!=null&&n.setItem(e,H.write(U)),U;if(!b&&u){const x=H.read(N);return typeof u=="function"?u(x,U):K==="object"&&!Array.isArray(x)?{...U,...x}:x}else return typeof N!="string"?N:H.read(N)}function j(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){O.value=U;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==H.write(O.value)&&(O.value=F(b))}catch(N){_(N)}finally{b?Mn(y):y()}}}}function M(b){j(b.detail)}return O}function vi(e){return _i("(prefers-color-scheme: dark)",e)}function Ra(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Me,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=vi({window:s}),_=se(()=>m.value?"dark":"light"),w=c||(i==null?gi(r):Wr(i,r,o,{window:s,listenToStorageChanges:l})),O=se(()=>w.value==="auto"?_.value:w.value),U=bi("updateHTMLAttrs",(y,I,T)=>{const F=typeof y=="string"?s==null?void 0:s.document.querySelector(y):yi(y);if(!F)return;let j;if(f&&(j=s.document.createElement("style"),j.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(j)),I==="class"){const M=T.split(/\s/g);Object.values(h).flatMap(b=>(b||"").split(/\s/g)).filter(Boolean).forEach(b=>{M.includes(b)?F.classList.add(b):F.classList.remove(b)})}else F.setAttribute(I,T);f&&(s.getComputedStyle(j).opacity,document.head.removeChild(j))});function K(y){var I;U(t,n,(I=h[y])!=null?I:y)}function H(y){e.onChanged?e.onChanged(y,K):K(y)}$e(O,H,{flush:"post",immediate:!0}),Kr(()=>H(O.value));const p=se({get(){return u?w.value:O.value},set(y){w.value=y}});try{return Object.assign(p,{store:w,system:_,state:O})}catch{return p}}function Oa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Me}=e,s=Ra({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=se(()=>s.system?s.system.value:vi({window:r}).value?"dark":"light");return se({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function Zn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Lu(e,t,n={}){const{window:r=Me}=n;return Wr(e,t,r==null?void 0:r.localStorage,n)}function wi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const er=new WeakMap;function Mu(e,t=!1){const n=oe(t);let r=null,s="";$e(gi(e),l=>{const c=Zn(He(l));if(c){const u=c;if(er.get(u)||er.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(s=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const o=()=>{const l=Zn(He(e));!l||n.value||(Vs&&(r=xt(l,"touchmove",c=>{La(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=Zn(He(e));!l||!n.value||(Vs&&(r==null||r()),l.style.overflow=s,er.delete(l),n.value=!1)};return kr(i),se({get(){return n.value},set(l){l?o():i()}})}function Iu(e,t,n={}){const{window:r=Me}=n;return Wr(e,t,r==null?void 0:r.sessionStorage,n)}function Pu(e={}){const{window:t=Me,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const r=oe(t.scrollX),s=oe(t.scrollY),o=se({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=se({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return xt(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Nu(e={}){const{window:t=Me,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=oe(n),l=oe(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Kr(c),xt("resize",c,{passive:!0}),s){const u=_i("(orientation: portrait)");$e(u,()=>c())}return{width:i,height:l}}const tr={BASE_URL:"/GeoRegions.jl/v6.0.0/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var nr={};const Ei=/^(?:[a-z]+:|\/\/)/i,Ma="vitepress-theme-appearance",Ia=/#.*$/,Pa=/[?#].*$/,Na=/(?:(^|\/)index)?\.(?:md|html)$/,pe=typeof document<"u",Ci={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Fa(e,t,n=!1){if(t===void 0)return!1;if(e=Us(`/${e}`),n)return new RegExp(t).test(e);if(Us(t)!==e)return!1;const r=t.match(Ia);return r?(pe?location.hash:"")===r[0]:!0}function Us(e){return decodeURI(e).replace(Pa,"").replace(Na,"$1")}function $a(e){return Ei.test(e)}function Ha(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!$a(n)&&Fa(t,`/${n}/`,!0))||"root"}function ja(e,t){var r,s,o,i,l,c,u;const n=Ha(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:xi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function Si(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Va(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Va(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Da(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function xi(e,t){return[...e.filter(n=>!Da(t,n)),...t]}const Ua=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ba=/^[a-z]:/i;function Bs(e){const t=Ba.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Ua,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const rr=new Set;function ka(e){if(rr.size===0){const n=typeof process=="object"&&(nr==null?void 0:nr.VITE_EXTRA_EXTENSIONS)||(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>rr.add(r))}const t=e.split(".").pop();return t==null||!rr.has(t.toLowerCase())}function Fu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Ka=Symbol(),ft=Fr(da);function $u(e){const t=se(()=>ja(ft.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?oe(!0):n?Oa({storageKey:Ma,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),s=oe(pe?location.hash:"");return pe&&window.addEventListener("hashchange",()=>{s.value=location.hash}),$e(()=>e.data,()=>{s.value=pe?location.hash:""}),{site:t,theme:se(()=>t.value.themeConfig),page:se(()=>e.data),frontmatter:se(()=>e.data.frontmatter),params:se(()=>e.data.params),lang:se(()=>t.value.lang),dir:se(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:se(()=>t.value.localeIndex||"root"),title:se(()=>Si(t.value,e.data)),description:se(()=>e.data.description||t.value.description),isDark:r,hash:se(()=>s.value)}}function Wa(){const e=Ct(Ka);if(!e)throw new Error("vitepress data not properly injected in app");return e}function qa(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ks(e){return Ei.test(e)||!e.startsWith("/")?e:qa(ft.value.base,e)}function Ga(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),pe){const n="/GeoRegions.jl/v6.0.0/";t=Bs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${Bs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let mn=[];function Hu(e){mn.push(e),Fn(()=>{mn=mn.filter(t=>t!==e)})}function Xa(){let e=ft.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Ks(e,n);else if(Array.isArray(e))for(const r of e){const s=Ks(r,n);if(s){t=s;break}}return t}function Ks(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ya=Symbol(),Ti="http://a.com",za=()=>({path:"/",component:null,data:Ci});function ju(e,t){const n=On(za()),r={route:n,go:s};async function s(l=pe?location.href:"/"){var c,u;l=sr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(pe&&l!==sr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((u=r.onAfterRouteChanged)==null?void 0:u.call(r,l)))}let o=null;async function i(l,c=0,u=!1){var m;if(await((m=r.onBeforePageLoad)==null?void 0:m.call(r,l))===!1)return;const f=new URL(l,Ti),h=o=f.pathname;try{let _=await e(h);if(!_)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:w,__pageData:O}=_;if(!w)throw new Error(`Invalid route component: ${w}`);n.path=pe?h:ks(h),n.component=hn(w),n.data=hn(O),pe&&Mn(()=>{let U=ft.value.base+O.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ft.value.cleanUrls&&!U.endsWith("/")&&(U+=".html"),U!==f.pathname&&(f.pathname=U,l=U+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let K=null;try{K=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(H){console.warn(H)}if(K){Ws(K,f.hash);return}}window.scrollTo(0,c)})}}catch(_){if(!/fetch|Page not found/.test(_.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(_),!u)try{const w=await fetch(ft.value.base+"hashmap.json");window.__VP_HASH_MAP__=await w.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=pe?h:ks(h),n.component=t?hn(t):null;const w=pe?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ci,relativePath:w}}}}return pe&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:f,origin:h,pathname:m,hash:_,search:w}=new URL(u,c.baseURI),O=new URL(location.href);h===O.origin&&ka(m)&&(l.preventDefault(),m===O.pathname&&w===O.search?(_!==O.hash&&(history.pushState({},"",f),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:O.href,newURL:f}))),_?Ws(c,_,c.classList.contains("header-anchor")):window.scrollTo(0,0)):s(f))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(sr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Ja(){const e=Ct(Ya);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ai(){return Ja().route}function Ws(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-Xa()+o;requestAnimationFrame(s)}}function sr(e){const t=new URL(e,Ti);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ft.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>mn.forEach(e=>e()),Vu=Hr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ai(),{site:n}=Wa();return()=>vr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?vr(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),Qa="modulepreload",Za=function(e){return"/GeoRegions.jl/v6.0.0/"+e},qs={},Du=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=Za(l),l in qs)return;qs[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":Qa,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,m)=>{f.addEventListener("load",h),f.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},Uu=Hr({setup(e,{slots:t}){const n=oe(!1);return Tt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Bu(){pe&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(u=>u.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function ku(){if(pe){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let u=c.textContent||"";i&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),eu(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function eu(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Ku(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const u of document.head.children)if(u.isEqualNode(c)){r.push(u);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const u=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));u!==-1?delete i[u]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Ur(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],u=Si(i,o);u!==document.title&&(document.title=u);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(xi(i.head,nu(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function tu(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function nu(e){return e.filter(t=>!tu(t))}const lr=new Set,Ri=()=>document.createElement("link"),ru=e=>{const t=Ri();t.rel="prefetch",t.href=e,document.head.appendChild(t)},su=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let un;const ou=pe&&(un=Ri())&&un.relList&&un.relList.supports&&un.relList.supports("prefetch")?ru:su;function Wu(){if(!pe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const u=Ga(c);u&&ou(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};Tt(r);const s=Ai();$e(()=>s.path,r),Fn(()=>{n&&n.disconnect()})}export{Cu as $,yu as A,Hl as B,Xa as C,uu as D,du as E,be as F,Fr as G,Hu as H,le as I,fu as J,Ei as K,Ai as L,Tc as M,Ct as N,Nu as O,xr as P,Ou as Q,Mn as R,Pu as S,ci as T,pe as U,Ln as V,au as W,Du as X,Mu as Y,Jl as Z,Tu as _,si as a,pu as a0,Ro as a1,Eu as a2,gu as a3,On as a4,wl as a5,vr as a6,bu as a7,Ku as a8,Ya as a9,$u as aa,Ka as ab,Vu as ac,Uu as ad,ft as ae,xu as af,ju as ag,Ga as ah,Wu as ai,ku as aj,Bu as ak,yi as al,kr as am,Ru as an,Iu as ao,Lu as ap,Au as aq,Ja as ar,xt as as,cu as at,wu as au,he as av,mu as aw,hn as ax,Su as ay,Fu as az,ti as b,_u as c,Hr as d,vu as e,ka as f,ks as g,se as h,$a as i,ri as j,_o as k,lu as l,Fa as m,Tr as n,Zo as o,iu as p,_i as q,hu as r,oe as s,ki as t,Wa as u,$e as v,Rl as w,Ur as x,Tt as y,Fn as z}; diff --git a/v6.0.0/assets/chunks/theme.BtnBj6uK.js b/v6.0.0/assets/chunks/theme.BtnBj6uK.js new file mode 100644 index 00000000..2c87039c --- /dev/null +++ b/v6.0.0/assets/chunks/theme.BtnBj6uK.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DAq6iw7X.js","assets/chunks/framework.Bu--eeyr.js"])))=>i.map(i=>d[i]); +import{d as _,o as a,c as u,r as c,n as N,a as j,t as I,b as $,w as f,e as h,T as pe,_ as g,u as Je,i as Ye,f as Xe,g as fe,h as y,j as p,k as r,p as B,l as H,m as q,q as le,s as T,v as O,x as ee,y as R,z as he,A as _e,B as Qe,C as Ze,D as W,F as M,E,G as Te,H as te,I as k,J as D,K as we,L as ne,M as K,N as Y,O as xe,P as Ie,Q as ce,R as Ne,S as Me,U as oe,V as et,W as tt,X as nt,Y as Ae,Z as me,$ as ot,a0 as st,a1 as at,a2 as rt,a3 as Ce,a4 as it,a5 as lt,a6 as ct}from"./framework.Bu--eeyr.js";const ut=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(n){return(e,t)=>(a(),u("span",{class:N(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(I(e.text),1)])],2))}}),dt={key:0,class:"VPBackdrop"},vt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(n){return(e,t)=>(a(),$(pe,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",dt)):h("",!0)]),_:1}))}}),pt=g(vt,[["__scopeId","data-v-b06cdb19"]]),V=Je;function ft(n,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(n,e):(n(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ue(n){return/^\//.test(n)?n:`/${n}`}function be(n){const{pathname:e,search:t,hash:s,protocol:o}=new URL(n,"http://a.com");if(Ye(n)||n.startsWith("#")||!o.startsWith("http")||!Xe(e))return n;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?n:n.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return fe(l)}function Q({correspondingLink:n=!1}={}){const{site:e,localeIndex:t,page:s,theme:o,hash:i}=V(),l=y(()=>{var v,m;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((m=e.value.locales[t.value])==null?void 0:m.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,m])=>l.value.label===m.label?[]:{text:m.label,link:ht(m.link||(v==="root"?"/":`/${v}/`),o.value.i18nRouting!==!1&&n,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function ht(n,e,t,s){return e?n.replace(/\/$/,"")+ue(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):n}const _t=n=>(B("data-v-951cab6c"),n=n(),H(),n),mt={class:"NotFound"},bt={class:"code"},kt={class:"title"},$t=_t(()=>p("div",{class:"divider"},null,-1)),gt={class:"quote"},yt={class:"action"},Pt=["href","aria-label"],St=_({__name:"NotFound",setup(n){const{theme:e}=V(),{currentLang:t}=Q();return(s,o)=>{var i,l,d,v,m;return a(),u("div",mt,[p("p",bt,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",kt,I(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),$t,p("blockquote",gt,I(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",yt,[p("a",{class:"link",href:r(fe)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},I(((m=r(e).notFound)==null?void 0:m.linkText)??"Take me home"),9,Pt)])])}}}),Vt=g(St,[["__scopeId","data-v-951cab6c"]]);function Be(n,e){if(Array.isArray(n))return Z(n);if(n==null)return[];e=ue(e);const t=Object.keys(n).sort((o,i)=>i.split("/").length-o.split("/").length).find(o=>e.startsWith(ue(o))),s=t?n[t]:[];return Array.isArray(s)?Z(s):Z(s.items,s.base)}function Lt(n){const e=[];let t=0;for(const s in n){const o=n[s];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function Tt(n){const e=[];function t(s){for(const o of s)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(n),e}function de(n,e){return Array.isArray(e)?e.some(t=>de(n,t)):q(n,e.link)?!0:e.items?de(n,e.items):!1}function Z(n,e){return[...n].map(t=>{const s={...t},o=s.base||e;return o&&s.link&&(s.link=o+s.link),s.items&&(s.items=Z(s.items,o)),s})}function U(){const{frontmatter:n,page:e,theme:t}=V(),s=le("(min-width: 960px)"),o=T(!1),i=y(()=>{const C=t.value.sidebar,w=e.value.relativePath;return C?Be(C,w):[]}),l=T(i.value);O(i,(C,w)=>{JSON.stringify(C)!==JSON.stringify(w)&&(l.value=i.value)});const d=y(()=>n.value.sidebar!==!1&&l.value.length>0&&n.value.layout!=="home"),v=y(()=>m?n.value.aside==null?t.value.aside==="left":n.value.aside==="left":!1),m=y(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),b=y(()=>d.value?Lt(l.value):[]);function P(){o.value=!0}function S(){o.value=!1}function A(){o.value?S():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:d,hasAside:m,leftAside:v,isSidebarEnabled:L,open:P,close:S,toggle:A}}function wt(n,e){let t;ee(()=>{t=n.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",s)}),he(()=>{window.removeEventListener("keyup",s)});function s(o){o.key==="Escape"&&n.value&&(e(),t==null||t.focus())}}function It(n){const{page:e,hash:t}=V(),s=T(!1),o=y(()=>n.value.collapsed!=null),i=y(()=>!!n.value.link),l=T(!1),d=()=>{l.value=q(e.value.relativePath,n.value.link)};O([e,n,t],d),R(d);const v=y(()=>l.value?!0:n.value.items?de(e.value.relativePath,n.value.items):!1),m=y(()=>!!(n.value.items&&n.value.items.length));ee(()=>{s.value=!!(o.value&&n.value.collapsed)}),_e(()=>{(l.value||v.value)&&(s.value=!1)});function L(){o.value&&(s.value=!s.value)}return{collapsed:s,collapsible:o,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:m,toggle:L}}function Nt(){const{hasSidebar:n}=U(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:n.value?t.value:e.value)}}const ve=[];function He(n){return typeof n.outline=="object"&&!Array.isArray(n.outline)&&n.outline.label||n.outlineTitle||"On this page"}function ke(n){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:Mt(t),link:"#"+t.id,level:s}});return At(e,n)}function Mt(n){let e="";for(const t of n.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function At(n,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;n=n.filter(l=>l.level>=s&&l.level<=o),ve.length=0;for(const{element:l,link:d}of n)ve.push({element:l,link:d});const i=[];e:for(let l=0;l=0;v--){const m=n[v];if(m.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),Qe(()=>{l(location.hash)}),he(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,m=document.body.offsetHeight,L=Math.abs(d+v-m)<1,b=ve.map(({element:S,link:A})=>({link:A,top:Bt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!b.length){l(null);return}if(d<1){l(null);return}if(L){l(b[b.length-1].link);return}let P=null;for(const{link:S,top:A}of b){if(A>d+Ze()+4)break;P=S}l(P)}function l(d){o&&o.classList.remove("active"),d==null?o=null:o=n.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=o;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Bt(n){let e=0;for(;n!==document.body;){if(n===null)return NaN;e+=n.offsetTop,n=n.offsetParent}return e}const Ht=["href","title"],Et=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(n){function e({target:t}){const s=t.href.split("#")[1],o=document.getElementById(decodeURIComponent(s));o==null||o.focus({preventScroll:!0})}return(t,s)=>{const o=W("VPDocOutlineItem",!0);return a(),u("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,E(t.headers,({children:i,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},I(d),9,Ht),i!=null&&i.length?(a(),$(o,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ee=g(Et,[["__scopeId","data-v-3f927ebe"]]),Dt={class:"content"},Ft={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ot=_({__name:"VPDocAsideOutline",setup(n){const{frontmatter:e,theme:t}=V(),s=Te([]);te(()=>{s.value=ke(e.value.outline??t.value.outline)});const o=T(),i=T();return Ct(o,i),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:o},[p("div",Dt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",Ft,I(r(He)(r(t))),1),k(Ee,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),jt=g(Ot,[["__scopeId","data-v-b38bf2ff"]]),Ut={class:"VPDocAsideCarbonAds"},Gt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(n){const e=()=>null;return(t,s)=>(a(),u("div",Ut,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),zt=n=>(B("data-v-6d7b3c46"),n=n(),H(),n),Kt={class:"VPDocAside"},Rt=zt(()=>p("div",{class:"spacer"},null,-1)),qt=_({__name:"VPDocAside",setup(n){const{theme:e}=V();return(t,s)=>(a(),u("div",Kt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(jt),c(t.$slots,"aside-outline-after",{},void 0,!0),Rt,c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(Gt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Wt=g(qt,[["__scopeId","data-v-6d7b3c46"]]);function Jt(){const{theme:n,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=n.value.editLink||{};let o;return typeof s=="function"?o=s(e.value):o=s.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Yt(){const{page:n,theme:e,frontmatter:t}=V();return y(()=>{var m,L,b,P,S,A,C,w;const s=Be(e.value.sidebar,n.value.relativePath),o=Tt(s),i=Xt(o,G=>G.link.replace(/[?#].*$/,"")),l=i.findIndex(G=>q(n.value.relativePath,G.link)),d=((m=e.value.docFooter)==null?void 0:m.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=i[l-1])==null?void 0:b.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[l+1])==null?void 0:A.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=i[l+1])==null?void 0:w.link)}}})}function Xt(n,e){const t=new Set;return n.filter(s=>{const o=e(s);return t.has(o)?!1:t.add(o)})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(n){const e=n,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&we.test(e.href)||e.target==="_blank");return(o,i)=>(a(),$(D(t.value),{class:N(["VPLink",{link:o.href,"vp-external-link-icon":s.value,"no-icon":o.noIcon}]),href:o.href?r(be)(o.href):void 0,target:o.target??(s.value?"_blank":void 0),rel:o.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Qt={class:"VPLastUpdated"},Zt=["datetime"],xt=_({__name:"VPDocFooterLastUpdated",setup(n){const{theme:e,page:t,lang:s}=V(),o=y(()=>new Date(t.value.lastUpdated)),i=y(()=>o.value.toISOString()),l=T("");return R(()=>{ee(()=>{var d,v,m;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?s.value:void 0,((m=e.value.lastUpdated)==null?void 0:m.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(d,v)=>{var m;return a(),u("p",Qt,[j(I(((m=r(e).lastUpdated)==null?void 0:m.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},I(l.value),9,Zt)])}}}),en=g(xt,[["__scopeId","data-v-475f71b8"]]),De=n=>(B("data-v-4f9813fa"),n=n(),H(),n),tn={key:0,class:"VPDocFooter"},nn={key:0,class:"edit-info"},on={key:0,class:"edit-link"},sn=De(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),an={key:1,class:"last-updated"},rn={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},ln=De(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),cn={class:"pager"},un=["innerHTML"],dn=["innerHTML"],vn={class:"pager"},pn=["innerHTML"],fn=["innerHTML"],hn=_({__name:"VPDocFooter",setup(n){const{theme:e,page:t,frontmatter:s}=V(),o=Jt(),i=Yt(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||i.value.prev||i.value.next);return(m,L)=>{var b,P,S,A;return v.value?(a(),u("footer",tn,[c(m.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",nn,[l.value?(a(),u("div",on,[k(F,{class:"edit-link-button",href:r(o).url,"no-icon":!0},{default:f(()=>[sn,j(" "+I(r(o).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",an,[k(en)])):h("",!0)])):h("",!0),(b=r(i).prev)!=null&&b.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",rn,[ln,p("div",cn,[(S=r(i).prev)!=null&&S.link?(a(),$(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,un),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,dn)]}),_:1},8,["href"])):h("",!0)]),p("div",vn,[(A=r(i).next)!=null&&A.link?(a(),$(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,pn),p("span",{class:"title",innerHTML:r(i).next.text},null,8,fn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),_n=g(hn,[["__scopeId","data-v-4f9813fa"]]),mn=n=>(B("data-v-83890dd9"),n=n(),H(),n),bn={class:"container"},kn=mn(()=>p("div",{class:"aside-curtain"},null,-1)),$n={class:"aside-container"},gn={class:"aside-content"},yn={class:"content"},Pn={class:"content-container"},Sn={class:"main"},Vn=_({__name:"VPDoc",setup(n){const{theme:e}=V(),t=ne(),{hasSidebar:s,hasAside:o,leftAside:i}=U(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const m=W("Content");return a(),u("div",{class:N(["VPDoc",{"has-sidebar":r(s),"has-aside":r(o)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",bn,[r(o)?(a(),u("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[kn,p("div",$n,[p("div",gn,[k(Wt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",yn,[p("div",Pn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",Sn,[k(m,{class:N(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(_n,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Ln=g(Vn,[["__scopeId","data-v-83890dd9"]]),Tn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(n){const e=n,t=y(()=>e.href&&we.test(e.href)),s=y(()=>e.tag||e.href?"a":"button");return(o,i)=>(a(),$(D(s.value),{class:N(["VPButton",[o.size,o.theme]]),href:o.href?r(be)(o.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(I(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),wn=g(Tn,[["__scopeId","data-v-14206e74"]]),In=["src","alt"],Nn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(n){return(e,t)=>{const s=W("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",K({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(fe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,In)):(a(),u(M,{key:1},[k(s,K({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,K({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),x=g(Nn,[["__scopeId","data-v-35a7d0b8"]]),Mn=n=>(B("data-v-955009fc"),n=n(),H(),n),An={class:"container"},Cn={class:"main"},Bn={key:0,class:"name"},Hn=["innerHTML"],En=["innerHTML"],Dn=["innerHTML"],Fn={key:0,class:"actions"},On={key:0,class:"image"},jn={class:"image-container"},Un=Mn(()=>p("div",{class:"image-bg"},null,-1)),Gn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(n){const e=Y("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[p("div",An,[p("div",Cn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",Bn,[p("span",{innerHTML:t.name,class:"clip"},null,8,Hn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,En)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Dn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Fn,[(a(!0),u(M,null,E(t.actions,o=>(a(),u("div",{key:o.link,class:"action"},[k(wn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",On,[p("div",jn,[Un,c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(x,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),zn=g(Gn,[["__scopeId","data-v-955009fc"]]),Kn=_({__name:"VPHomeHero",setup(n){const{frontmatter:e}=V();return(t,s)=>r(e).hero?(a(),$(zn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Rn=n=>(B("data-v-f5e9645b"),n=n(),H(),n),qn={class:"box"},Wn={key:0,class:"icon"},Jn=["innerHTML"],Yn=["innerHTML"],Xn=["innerHTML"],Qn={key:4,class:"link-text"},Zn={class:"link-text-value"},xn=Rn(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),eo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(n){return(e,t)=>(a(),$(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",qn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Wn,[k(x,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(x,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Jn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Yn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Xn)):h("",!0),e.linkText?(a(),u("div",Qn,[p("p",Zn,[j(I(e.linkText)+" ",1),xn])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),to=g(eo,[["__scopeId","data-v-f5e9645b"]]),no={key:0,class:"VPFeatures"},oo={class:"container"},so={class:"items"},ao=_({__name:"VPFeatures",props:{features:{}},setup(n){const e=n,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,o)=>s.features?(a(),u("div",no,[p("div",oo,[p("div",so,[(a(!0),u(M,null,E(s.features,i=>(a(),u("div",{key:i.title,class:N(["item",[t.value]])},[k(to,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),ro=g(ao,[["__scopeId","data-v-d0a190d7"]]),io=_({__name:"VPHomeFeatures",setup(n){const{frontmatter:e}=V();return(t,s)=>r(e).features?(a(),$(ro,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),lo=_({__name:"VPHomeContent",setup(n){const{width:e}=xe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:Ie(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),co=g(lo,[["__scopeId","data-v-7a48a447"]]),uo={class:"VPHome"},vo=_({__name:"VPHome",setup(n){const{frontmatter:e}=V();return(t,s)=>{const o=W("Content");return a(),u("div",uo,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Kn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(io),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),$(co,{key:0},{default:f(()=>[k(o)]),_:1})):(a(),$(o,{key:1}))])}}}),po=g(vo,[["__scopeId","data-v-cbb6ec48"]]),fo={},ho={class:"VPPage"};function _o(n,e){const t=W("Content");return a(),u("div",ho,[c(n.$slots,"page-top"),k(t),c(n.$slots,"page-bottom")])}const mo=g(fo,[["render",_o]]),bo=_({__name:"VPContent",setup(n){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(o,i)=>(a(),u("div",{class:N(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(Vt)],!0):r(t).layout==="page"?(a(),$(mo,{key:1},{"page-top":f(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(po,{key:2},{"home-hero-before":f(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(D(r(t).layout),{key:3})):(a(),$(Ln,{key:4},{"doc-top":f(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ko=g(bo,[["__scopeId","data-v-91765379"]]),$o={class:"container"},go=["innerHTML"],yo=["innerHTML"],Po=_({__name:"VPFooter",setup(n){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(o,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(s)}])},[p("div",$o,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,go)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,yo)):h("",!0)])],2)):h("",!0)}}),So=g(Po,[["__scopeId","data-v-c970a860"]]);function Vo(){const{theme:n,frontmatter:e}=V(),t=Te([]),s=y(()=>t.value.length>0);return te(()=>{t.value=ke(e.value.outline??n.value.outline)}),{headers:t,hasLocalNav:s}}const Lo=n=>(B("data-v-bc9dc845"),n=n(),H(),n),To={class:"menu-text"},wo=Lo(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),Io={class:"header"},No={class:"outline"},Mo=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(n){const e=n,{theme:t}=V(),s=T(!1),o=T(0),i=T(),l=T();function d(b){var P;(P=i.value)!=null&&P.contains(b.target)||(s.value=!1)}O(s,b=>{if(b){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ce("Escape",()=>{s.value=!1}),te(()=>{s.value=!1});function v(){s.value=!s.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function m(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ne(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ie({"--vp-vh":o.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),u("button",{key:0,onClick:v,class:N({open:s.value})},[p("span",To,I(r(He)(r(t))),1),wo],2)):(a(),u("button",{key:1,onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)),k(pe,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:m},[p("div",Io,[p("a",{class:"top-link",href:"#",onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)]),p("div",No,[k(Ee,{headers:b.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),Ao=g(Mo,[["__scopeId","data-v-bc9dc845"]]),Co=n=>(B("data-v-070ab83d"),n=n(),H(),n),Bo={class:"container"},Ho=["aria-expanded"],Eo=Co(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),Do={class:"menu-text"},Fo=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(n){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U(),{headers:o}=Vo(),{y:i}=Me(),l=T(0);R(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),te(()=>{o.value=ke(t.value.outline??e.value.outline)});const d=y(()=>o.value.length===0),v=y(()=>d.value&&!s.value),m=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:v.value}));return(L,b)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:N(m.value)},[p("div",Bo,[r(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>L.$emit("open-menu"))},[Eo,p("span",Do,I(r(e).sidebarMenuLabel||"Menu"),1)],8,Ho)):h("",!0),k(Ao,{headers:r(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),Oo=g(Fo,[["__scopeId","data-v-070ab83d"]]);function jo(){const n=T(!1);function e(){n.value=!0,window.addEventListener("resize",o)}function t(){n.value=!1,window.removeEventListener("resize",o)}function s(){n.value?t():e()}function o(){window.outerWidth>=768&&t()}const i=ne();return O(()=>i.path,t),{isScreenOpen:n,openScreen:e,closeScreen:t,toggleScreen:s}}const Uo={},Go={class:"VPSwitch",type:"button",role:"switch"},zo={class:"check"},Ko={key:0,class:"icon"};function Ro(n,e){return a(),u("button",Go,[p("span",zo,[n.$slots.default?(a(),u("span",Ko,[c(n.$slots,"default",{},void 0,!0)])):h("",!0)])])}const qo=g(Uo,[["render",Ro],["__scopeId","data-v-4a1c76db"]]),Fe=n=>(B("data-v-e40a8bb6"),n=n(),H(),n),Wo=Fe(()=>p("span",{class:"vpi-sun sun"},null,-1)),Jo=Fe(()=>p("span",{class:"vpi-moon moon"},null,-1)),Yo=_({__name:"VPSwitchAppearance",setup(n){const{isDark:e,theme:t}=V(),s=Y("toggle-appearance",()=>{e.value=!e.value}),o=T("");return _e(()=>{o.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),$(qo,{title:o.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:f(()=>[Wo,Jo]),_:1},8,["title","aria-checked","onClick"]))}}),$e=g(Yo,[["__scopeId","data-v-e40a8bb6"]]),Xo={key:0,class:"VPNavBarAppearance"},Qo=_({__name:"VPNavBarAppearance",setup(n){const{site:e}=V();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Xo,[k($e)])):h("",!0)}}),Zo=g(Qo,[["__scopeId","data-v-af096f4a"]]),ge=T();let Oe=!1,ie=0;function xo(n){const e=T(!1);if(oe){!Oe&&es(),ie++;const t=O(ge,s=>{var o,i,l;s===n.el.value||(o=n.el.value)!=null&&o.contains(s)?(e.value=!0,(i=n.onFocus)==null||i.call(n)):(e.value=!1,(l=n.onBlur)==null||l.call(n))});he(()=>{t(),ie--,ie||ts()})}return et(e)}function es(){document.addEventListener("focusin",je),Oe=!0,ge.value=document.activeElement}function ts(){document.removeEventListener("focusin",je)}function je(){ge.value=document.activeElement}const ns={class:"VPMenuLink"},os=_({__name:"VPMenuLink",props:{item:{}},setup(n){const{page:e}=V();return(t,s)=>(a(),u("div",ns,[k(F,{class:N({active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:f(()=>[j(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=g(os,[["__scopeId","data-v-8b74d055"]]),ss={class:"VPMenuGroup"},as={key:0,class:"title"},rs=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(n){return(e,t)=>(a(),u("div",ss,[e.text?(a(),u("p",as,I(e.text),1)):h("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),u(M,null,["link"in s?(a(),$(se,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),is=g(rs,[["__scopeId","data-v-48c802d0"]]),ls={class:"VPMenu"},cs={key:0,class:"items"},us=_({__name:"VPMenu",props:{items:{}},setup(n){return(e,t)=>(a(),u("div",ls,[e.items?(a(),u("div",cs,[(a(!0),u(M,null,E(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),$(se,{key:0,item:s},null,8,["item"])):"component"in s?(a(),$(D(s.component),K({key:1,ref_for:!0},s.props),null,16)):(a(),$(is,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),ds=g(us,[["__scopeId","data-v-7dd3104a"]]),vs=n=>(B("data-v-e5380155"),n=n(),H(),n),ps=["aria-expanded","aria-label"],fs={key:0,class:"text"},hs=["innerHTML"],_s=vs(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),ms={key:1,class:"vpi-more-horizontal icon"},bs={class:"menu"},ks=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(n){const e=T(!1),t=T();xo({el:t,onBlur:s});function s(){e.value=!1}return(o,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[o.button||o.icon?(a(),u("span",fs,[o.icon?(a(),u("span",{key:0,class:N([o.icon,"option-icon"])},null,2)):h("",!0),o.button?(a(),u("span",{key:1,innerHTML:o.button},null,8,hs)):h("",!0),_s])):(a(),u("span",ms))],8,ps),p("div",bs,[k(ds,{items:o.items},{default:f(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ye=g(ks,[["__scopeId","data-v-e5380155"]]),$s=["href","aria-label","innerHTML"],gs=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(n){const e=n,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,o)=>(a(),u("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,$s))}}),ys=g(gs,[["__scopeId","data-v-717b8b75"]]),Ps={class:"VPSocialLinks"},Ss=_({__name:"VPSocialLinks",props:{links:{}},setup(n){return(e,t)=>(a(),u("div",Ps,[(a(!0),u(M,null,E(e.links,({link:s,icon:o,ariaLabel:i})=>(a(),$(ys,{key:s,icon:o,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Pe=g(Ss,[["__scopeId","data-v-ee7a9424"]]),Vs={key:0,class:"group translations"},Ls={class:"trans-title"},Ts={key:1,class:"group"},ws={class:"item appearance"},Is={class:"label"},Ns={class:"appearance-action"},Ms={key:2,class:"group"},As={class:"item social-links"},Cs=_({__name:"VPNavBarExtra",setup(n){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:o}=Q({correspondingLink:!0}),i=y(()=>s.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(a(),$(ye,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(s).length&&r(o).label?(a(),u("div",Vs,[p("p",Ls,I(r(o).label),1),(a(!0),u(M,null,E(r(s),v=>(a(),$(se,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Ts,[p("div",ws,[p("p",Is,I(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",Ns,[k($e)])])])):h("",!0),r(t).socialLinks?(a(),u("div",Ms,[p("div",As,[k(Pe,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),Bs=g(Cs,[["__scopeId","data-v-925effce"]]),Hs=n=>(B("data-v-5dea55bf"),n=n(),H(),n),Es=["aria-expanded"],Ds=Hs(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),Fs=[Ds],Os=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(n){return(e,t)=>(a(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},Fs,10,Es))}}),js=g(Os,[["__scopeId","data-v-5dea55bf"]]),Us=["innerHTML"],Gs=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(n){const{page:e}=V();return(t,s)=>(a(),$(F,{class:N({VPNavBarMenuLink:!0,active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Us)]),_:1},8,["class","href","noIcon","target","rel"]))}}),zs=g(Gs,[["__scopeId","data-v-ed5ac1f6"]]),Ks=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(n){const e=n,{page:t}=V(),s=i=>"component"in i?!1:"link"in i?q(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),o=y(()=>s(e.item));return(i,l)=>(a(),$(ye,{class:N({VPNavBarMenuGroup:!0,active:r(q)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||o.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Rs=n=>(B("data-v-e6d46098"),n=n(),H(),n),qs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ws=Rs(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Js=_({__name:"VPNavBarMenu",setup(n){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",qs,[Ws,(a(!0),u(M,null,E(r(e).nav,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),$(zs,{key:0,item:o},null,8,["item"])):"component"in o?(a(),$(D(o.component),K({key:1,ref_for:!0},o.props),null,16)):(a(),$(Ks,{key:2,item:o},null,8,["item"]))],64))),128))])):h("",!0)}}),Ys=g(Js,[["__scopeId","data-v-e6d46098"]]);function Xs(n){const{localeIndex:e,theme:t}=V();function s(o){var A,C,w;const i=o.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",v=d&&((w=(C=l.locales)==null?void 0:C[e.value])==null?void 0:w.translations)||null,m=d&&l.translations||null;let L=v,b=m,P=n;const S=i.pop();for(const G of i){let z=null;const J=P==null?void 0:P[G];J&&(z=P=J);const ae=b==null?void 0:b[G];ae&&(z=b=ae);const re=L==null?void 0:L[G];re&&(z=L=re),J||(P=z),ae||(b=z),re||(L=z)}return(L==null?void 0:L[S])??(b==null?void 0:b[S])??(P==null?void 0:P[S])??""}return s}const Qs=["aria-label"],Zs={class:"DocSearch-Button-Container"},xs=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),ea={class:"DocSearch-Button-Placeholder"},ta=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Se=_({__name:"VPNavBarSearchButton",setup(n){const t=Xs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,o)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",Zs,[xs,p("span",ea,I(r(t)("button.buttonText")),1)]),ta],8,Qs))}}),na={class:"VPNavBarSearch"},oa={id:"local-search"},sa={key:1,id:"docsearch"},aa=_({__name:"VPNavBarSearch",setup(n){const e=tt(()=>nt(()=>import("./VPLocalSearchBox.DAq6iw7X.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),o=T(!1),i=T(!1);R(()=>{});function l(){o.value||(o.value=!0,setTimeout(d,16))}function d(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(b){const P=b.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const m=T(!1);ce("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),m.value=!0)}),ce("/",b=>{v(b)||(b.preventDefault(),m.value=!0)});const L="local";return(b,P)=>{var S;return a(),u("div",na,[r(L)==="local"?(a(),u(M,{key:0},[m.value?(a(),$(r(e),{key:0,onClose:P[0]||(P[0]=A=>m.value=!1)})):h("",!0),p("div",oa,[k(Se,{onClick:P[1]||(P[1]=A=>m.value=!0)})])],64)):r(L)==="algolia"?(a(),u(M,{key:1},[o.value?(a(),$(r(t),{key:0,algolia:((S=r(s).search)==null?void 0:S.options)??r(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",sa,[k(Se,{onClick:l})]))],64)):h("",!0)])}}}),ra=_({__name:"VPNavBarSocialLinks",setup(n){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),$(Pe,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ia=g(ra,[["__scopeId","data-v-164c457f"]]),la=["href","rel","target"],ca={key:1},ua={key:2},da=_({__name:"VPNavBarTitle",setup(n){const{site:e,theme:t}=V(),{hasSidebar:s}=U(),{currentLang:o}=Q(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,m)=>(a(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(s)}])},[p("a",{class:"title",href:i.value??r(be)(r(o).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(x,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",ca,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",ua,I(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,la)],2))}}),va=g(da,[["__scopeId","data-v-28a961f9"]]),pa={class:"items"},fa={class:"title"},ha=_({__name:"VPNavBarTranslations",setup(n){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Q({correspondingLink:!0});return(o,i)=>r(t).length&&r(s).label?(a(),$(ye,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",pa,[p("p",fa,I(r(s).label),1),(a(!0),u(M,null,E(r(t),l=>(a(),$(se,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),_a=g(ha,[["__scopeId","data-v-c80d9ad0"]]),ma=n=>(B("data-v-822684d1"),n=n(),H(),n),ba={class:"wrapper"},ka={class:"container"},$a={class:"title"},ga={class:"content"},ya={class:"content-body"},Pa=ma(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),Sa=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(n){const e=n,{y:t}=Me(),{hasSidebar:s}=U(),{frontmatter:o}=V(),i=T({});return _e(()=>{i.value={"has-sidebar":s.value,home:o.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:N(["VPNavBar",i.value])},[p("div",ba,[p("div",ka,[p("div",$a,[k(va,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",ga,[p("div",ya,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(aa,{class:"search"}),k(Ys,{class:"menu"}),k(_a,{class:"translations"}),k(Zo,{class:"appearance"}),k(ia,{class:"social-links"}),k(Bs,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(js,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),Pa],2))}}),Va=g(Sa,[["__scopeId","data-v-822684d1"]]),La={key:0,class:"VPNavScreenAppearance"},Ta={class:"text"},wa=_({__name:"VPNavScreenAppearance",setup(n){const{site:e,theme:t}=V();return(s,o)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",La,[p("p",Ta,I(r(t).darkModeSwitchLabel||"Appearance"),1),k($e)])):h("",!0)}}),Ia=g(wa,[["__scopeId","data-v-ffb44008"]]),Na=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(n){const e=Y("close-screen");return(t,s)=>(a(),$(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Ma=g(Na,[["__scopeId","data-v-27d04aeb"]]),Aa=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(n){const e=Y("close-screen");return(t,s)=>(a(),$(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:f(()=>[j(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ue=g(Aa,[["__scopeId","data-v-7179dbb7"]]),Ca={class:"VPNavScreenMenuGroupSection"},Ba={key:0,class:"title"},Ha=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(n){return(e,t)=>(a(),u("div",Ca,[e.text?(a(),u("p",Ba,I(e.text),1)):h("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),$(Ue,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ea=g(Ha,[["__scopeId","data-v-4b8941ac"]]),Da=n=>(B("data-v-875057a5"),n=n(),H(),n),Fa=["aria-controls","aria-expanded"],Oa=["innerHTML"],ja=Da(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),Ua=["id"],Ga={key:0,class:"item"},za={key:1,class:"item"},Ka={key:2,class:"group"},Ra=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(n){const e=n,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:o},[p("span",{class:"button-text",innerHTML:i.text},null,8,Oa),ja],8,Fa),p("div",{id:s.value,class:"items"},[(a(!0),u(M,null,E(i.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",Ga,[k(Ue,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",za,[(a(),$(D(d.component),K({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",Ka,[k(Ea,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,Ua)],2))}}),qa=g(Ra,[["__scopeId","data-v-875057a5"]]),Wa={key:0,class:"VPNavScreenMenu"},Ja=_({__name:"VPNavScreenMenu",setup(n){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",Wa,[(a(!0),u(M,null,E(r(e).nav,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),$(Ma,{key:0,item:o},null,8,["item"])):"component"in o?(a(),$(D(o.component),K({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(a(),$(qa,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),Ya=_({__name:"VPNavScreenSocialLinks",setup(n){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),$(Pe,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Ge=n=>(B("data-v-362991c2"),n=n(),H(),n),Xa=Ge(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),Qa=Ge(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Za={class:"list"},xa=_({__name:"VPNavScreenTranslations",setup(n){const{localeLinks:e,currentLang:t}=Q({correspondingLink:!0}),s=T(!1);function o(){s.value=!s.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:o},[Xa,j(" "+I(r(t).label)+" ",1),Qa]),p("ul",Za,[(a(!0),u(M,null,E(r(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(F,{class:"link",href:d.link},{default:f(()=>[j(I(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),er=g(xa,[["__scopeId","data-v-362991c2"]]),tr={class:"container"},nr=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(n){const e=T(null),t=Ae(oe?document.body:null);return(s,o)=>(a(),$(pe,{name:"fade",onEnter:o[0]||(o[0]=i=>t.value=!0),onAfterLeave:o[1]||(o[1]=i=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",tr,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),k(Ja,{class:"menu"}),k(er,{class:"translations"}),k(Ia,{class:"appearance"}),k(Ya,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),or=g(nr,[["__scopeId","data-v-833aabba"]]),sr={key:0,class:"VPNav"},ar=_({__name:"VPNav",setup(n){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=jo(),{frontmatter:o}=V(),i=y(()=>o.value.navbar!==!1);return me("close-screen",t),ee(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(a(),u("header",sr,[k(Va,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(or,{open:r(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),rr=g(ar,[["__scopeId","data-v-f1e365da"]]),ze=n=>(B("data-v-196b2e5f"),n=n(),H(),n),ir=["role","tabindex"],lr=ze(()=>p("div",{class:"indicator"},null,-1)),cr=ze(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),ur=[cr],dr={key:1,class:"items"},vr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(n){const e=n,{collapsed:t,collapsible:s,isLink:o,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:v}=It(y(()=>e.item)),m=y(()=>d.value?"section":"div"),L=y(()=>o.value?"a":"div"),b=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":o.value},{"is-active":i.value},{"has-active":l.value}]);function A(w){"key"in w&&w.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(w,G)=>{const z=W("VPSidebarItem",!0);return a(),$(D(m.value),{class:N(["VPSidebarItem",S.value])},{default:f(()=>[w.item.text?(a(),u("div",K({key:0,class:"item",role:P.value},st(w.item.items?{click:A,keydown:A}:{},!0),{tabindex:w.item.items&&0}),[lr,w.item.link?(a(),$(F,{key:0,tag:L.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(a(),$(D(b.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(D(b.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:ot(C,["enter"]),tabindex:"0"},ur,32)):h("",!0)],16,ir)):h("",!0),w.item.items&&w.item.items.length?(a(),u("div",dr,[w.depth<5?(a(!0),u(M,{key:0},E(w.item.items,J=>(a(),$(z,{key:J.text,item:J,depth:w.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),pr=g(vr,[["__scopeId","data-v-196b2e5f"]]),fr=_({__name:"VPSidebarGroup",props:{items:{}},setup(n){const e=T(!0);let t=null;return R(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),at(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,o)=>(a(!0),u(M,null,E(s.items,i=>(a(),u("div",{key:i.text,class:N(["group",{"no-transition":e.value}])},[k(pr,{item:i,depth:0},null,8,["item"])],2))),128))}}),hr=g(fr,[["__scopeId","data-v-9e426adc"]]),Ke=n=>(B("data-v-18756405"),n=n(),H(),n),_r=Ke(()=>p("div",{class:"curtain"},null,-1)),mr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},br=Ke(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),kr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(n){const{sidebarGroups:e,hasSidebar:t}=U(),s=n,o=T(null),i=Ae(oe?document.body:null);O([s,o],()=>{var d;s.open?(i.value=!0,(d=o.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return O(e,()=>{l.value+=1},{deep:!0}),(d,v)=>r(t)?(a(),u("aside",{key:0,class:N(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:v[0]||(v[0]=rt(()=>{},["stop"]))},[_r,p("nav",mr,[br,c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),$(hr,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),$r=g(kr,[["__scopeId","data-v-18756405"]]),gr=_({__name:"VPSkipLink",setup(n){const e=ne(),t=T();O(()=>e.path,()=>t.value.focus());function s({target:o}){const i=document.getElementById(decodeURIComponent(o.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(o,i)=>(a(),u(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),yr=g(gr,[["__scopeId","data-v-c3508ec8"]]),Pr=_({__name:"Layout",setup(n){const{isOpen:e,open:t,close:s}=U(),o=ne();O(()=>o.path,s),wt(e,s);const{frontmatter:i}=V(),l=Ce(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(v,m)=>{const L=W("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:N(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),k(yr),k(pt,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),k(rr,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(Oo,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k($r,{open:r(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(ko,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(So),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(L,{key:1}))}}}),Sr=g(Pr,[["__scopeId","data-v-a9a9e638"]]),Ve={Layout:Sr,enhanceApp:({app:n})=>{n.component("Badge",ut)}},Vr=n=>{if(typeof document>"u")return{stabilizeScrollPosition:o=>async(...i)=>o(...i)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...o)=>{const i=s(...o),l=n.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await Ne(),e.scrollTop=l.offsetTop-d,i}}},Re="vitepress:tabSharedState",X=typeof localStorage<"u"?localStorage:null,qe="vitepress:tabsSharedState",Lr=()=>{const n=X==null?void 0:X.getItem(qe);if(n)try{return JSON.parse(n)}catch{}return{}},Tr=n=>{X&&X.setItem(qe,JSON.stringify(n))},wr=n=>{const e=it({});O(()=>e.content,(t,s)=>{t&&s&&Tr(t)},{deep:!0}),n.provide(Re,e)},Ir=(n,e)=>{const t=Y(Re);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");R(()=>{t.content||(t.content=Lr())});const s=T(),o=y({get(){var v;const l=e.value,d=n.value;if(l){const m=(v=t.content)==null?void 0:v[l];if(m&&d.includes(m))return m}else{const m=s.value;if(m)return m}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:o,select:l=>{o.value=l}}};let Le=0;const Nr=()=>(Le++,""+Le);function Mr(){const n=Ce();return y(()=>{var s;const t=(s=n.default)==null?void 0:s.call(n);return t?t.filter(o=>typeof o.type=="object"&&"__name"in o.type&&o.type.__name==="PluginTabsTab"&&o.props).map(o=>{var i;return(i=o.props)==null?void 0:i.label}):[]})}const We="vitepress:tabSingleState",Ar=n=>{me(We,n)},Cr=()=>{const n=Y(We);if(!n)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return n},Br={class:"plugin-tabs"},Hr=["id","aria-selected","aria-controls","tabindex","onClick"],Er=_({__name:"PluginTabs",props:{sharedStateKey:{}},setup(n){const e=n,t=Mr(),{selected:s,select:o}=Ir(t,lt(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Vr(i),d=l(o),v=T([]),m=b=>{var A;const P=t.value.indexOf(s.value);let S;b.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:b.key==="ArrowRight"&&(S=P(a(),u("div",Br,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:m},[(a(!0),u(M,null,E(r(t),S=>(a(),u("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(s),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(s)?0:-1,onClick:()=>r(d)(S)},I(S),9,Hr))),128))],544),c(b.$slots,"default")]))}}),Dr=["id","aria-labelledby"],Fr=_({__name:"PluginTabsTab",props:{label:{}},setup(n){const{uid:e,selected:t}=Cr();return(s,o)=>r(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${r(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,Dr)):h("",!0)}}),Or=g(Fr,[["__scopeId","data-v-9b0d03d2"]]),jr=n=>{wr(n),n.component("PluginTabs",Er),n.component("PluginTabsTab",Or)},Gr={extends:Ve,Layout(){return ct(Ve.Layout,null,{})},enhanceApp({app:n,router:e,siteData:t}){jr(n)}};export{Gr as R,Xs as c,V as u}; diff --git a/v6.0.0/assets/example_placeholder.md.BAhI0H02.js b/v6.0.0/assets/example_placeholder.md.BAhI0H02.js new file mode 100644 index 00000000..8067c6fa --- /dev/null +++ b/v6.0.0/assets/example_placeholder.md.BAhI0H02.js @@ -0,0 +1 @@ +import{_ as o,c as a,o as s,j as e,a as l}from"./chunks/framework.Bu--eeyr.js";const x=JSON.parse('{"title":"Examples for using GeoRegions.jl","description":"","frontmatter":{},"headers":[],"relativePath":"example/placeholder.md","filePath":"example/placeholder.md","lastUpdated":null}'),n={name:"example/placeholder.md"},t=e("h1",{id:"Examples-for-using-GeoRegions.jl",tabindex:"-1"},[l("Examples for using GeoRegions.jl "),e("a",{class:"header-anchor",href:"#Examples-for-using-GeoRegions.jl","aria-label":'Permalink to "Examples for using GeoRegions.jl {#Examples-for-using-GeoRegions.jl}"'},"​")],-1),r=e("p",null,"Coming soon ...",-1),i=[t,r];function c(p,d,m,_,f,h){return s(),a("div",null,i)}const u=o(n,[["render",c]]);export{x as __pageData,u as default}; diff --git a/v6.0.0/assets/example_placeholder.md.BAhI0H02.lean.js b/v6.0.0/assets/example_placeholder.md.BAhI0H02.lean.js new file mode 100644 index 00000000..8067c6fa --- /dev/null +++ b/v6.0.0/assets/example_placeholder.md.BAhI0H02.lean.js @@ -0,0 +1 @@ +import{_ as o,c as a,o as s,j as e,a as l}from"./chunks/framework.Bu--eeyr.js";const x=JSON.parse('{"title":"Examples for using GeoRegions.jl","description":"","frontmatter":{},"headers":[],"relativePath":"example/placeholder.md","filePath":"example/placeholder.md","lastUpdated":null}'),n={name:"example/placeholder.md"},t=e("h1",{id:"Examples-for-using-GeoRegions.jl",tabindex:"-1"},[l("Examples for using GeoRegions.jl "),e("a",{class:"header-anchor",href:"#Examples-for-using-GeoRegions.jl","aria-label":'Permalink to "Examples for using GeoRegions.jl {#Examples-for-using-GeoRegions.jl}"'},"​")],-1),r=e("p",null,"Coming soon ...",-1),i=[t,r];function c(p,d,m,_,f,h){return s(),a("div",null,i)}const u=o(n,[["render",c]]);export{x as __pageData,u as default}; diff --git a/v6.0.0/assets/georegions_create.md.DjnUQb5I.js b/v6.0.0/assets/georegions_create.md.DjnUQb5I.js new file mode 100644 index 00000000..65bd016c --- /dev/null +++ b/v6.0.0/assets/georegions_create.md.DjnUQb5I.js @@ -0,0 +1,82 @@ +import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.Bu--eeyr.js";const y=JSON.parse('{"title":"Creating GeoRegions","description":"","frontmatter":{},"headers":[],"relativePath":"georegions/create.md","filePath":"georegions/create.md","lastUpdated":null}'),n={name:"georegions/create.md"},k=h(`

Creating GeoRegions

In this section, we go through the basic steps of creating a GeoRegion, and removing it once defined so it can be redefined.

Defining a new GeoRegion

We use the functions RectRegion and PolyRegion to define rectilinear and polygonal regions respectively. For example, we construct the sample RectRegion TRC

julia
julia> using GeoRegions
+
+julia> RectRegion("TRC","GLB","Test Rectangle Region",[30,20,50,10])
+[ Info: 2024-08-08T01:51:42.102 - GeoRegions.jl - Checking to see if the ID TRC is in use
+┌ Warning: 2024-08-08T01:51:42.186 - GeoRegions.jl - TRC is not a valid GeoRegion identifier, use RectRegion(), TiltRegion() or PolyRegion() to add this GeoRegion to the list.
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:562
+[ Info: 2024-08-08T01:51:42.188 - GeoRegions.jl - Adding the GeoRegion TRC to the list.
+[ Info: 2024-08-08T01:51:42.214 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID GLB
+[ Info: 2024-08-08T01:51:42.664 - GeoRegions.jl - Performing a check to determine if the Test Rectangle Region GeoRegion (TRC) is inside the Globe GeoRegion (GLB)
+[ Info: 2024-08-08T01:51:42.664 - GeoRegions.jl - The GeoRegion TRC (Test Rectangle Region) is indeed a subset of the GeoRegion GLB (Globe)
+The Rectilinear Region TRC has the following properties:
+    Region ID    (ID) : TRC
+    Parent ID   (pID) : GLB
+    Name       (name) : Test Rectangle Region
+    Bounds  (N,S,E,W) : [30.0, 20.0, 50.0, 10.0]
+        (is180,is360) : (false, true)
+
+julia> PolyRegion("TPL","GLB","Test Polygonal Region",[30,40,50,40,30],[20,30,20,10,20])
+[ Info: 2024-08-08T01:51:43.160 - GeoRegions.jl - Checking to see if the ID TPL is in use
+┌ Warning: 2024-08-08T01:51:43.160 - GeoRegions.jl - TPL is not a valid GeoRegion identifier, use RectRegion(), TiltRegion() or PolyRegion() to add this GeoRegion to the list.
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:562
+[ Info: 2024-08-08T01:51:43.161 - GeoRegions.jl - Adding the GeoRegion TPL to the list.
+[ Info: 2024-08-08T01:51:43.308 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID GLB
+[ Info: 2024-08-08T01:51:43.347 - GeoRegions.jl - Performing a check to determine if the Test Polygonal Region GeoRegion (TPL) is inside the Globe GeoRegion (GLB)
+[ Info: 2024-08-08T01:51:43.347 - GeoRegions.jl - The GeoRegion TPL (Test Polygonal Region) is indeed a subset of the GeoRegion GLB (Globe)
+The Polygonal Region TPL has the following properties:
+    Region ID    (ID) : TPL
+    Parent ID   (pID) : GLB
+    Name       (name) : Test Polygonal Region
+    Bounds  (N,S,E,W) : [30.0, 10.0, 50.0, 30.0]
+    Shape     (shape) : Point{2, Float64}[[30.0, 20.0], [40.0, 30.0], [50.0, 20.0], [40.0, 10.0], [30.0, 20.0]]
+        (is180,is360) : (false, true)

Defining PolyRegions

When defining PolyRegions, the first and last set of (lon,lat) coordinates must be the same (i.e. a closed polygon must be defined)

The GeoRegions will be automatically added to the following files in joinpath(DEPOT_PATH[1],"files","GeoRegions"):

  • RectRegions will be added to rectlist.txt

  • PolyRegions will be added to polylist.txt

If the GeoRegion ID TRC already exists, however, this will throw an error

julia
julia> using GeoRegions
+
+julia> RectRegion("TRC","GLB","Test Rectangle Region2",[40,20,52,10])
+[ Info: 2024-08-08T01:51:43.635 - GeoRegions.jl - Checking to see if the ID TRC is in use
+[ Info: 2024-08-08T01:51:43.635 - GeoRegions.jl - The ID TRC is already in use
+ERROR: 2024-08-08T01:51:43.635 - GeoRegions.jl - The GeoRegion TRC has already been defined.  Please use another identifier.
# GeoRegions.RectRegionMethod.
julia
RectRegion(
+    RegID :: AbstractString,
+    ParID :: AbstractString,
+    name  :: AbstractString,
+    bound :: Vector{<:Real};
+    save :: Bool = true,
+    path :: AbstractString = "",
+    verbose :: Bool = true,
+    ST = String,
+    FT = Float64
+) -> RectRegion{ST,FT}

Creates a rectilinear GeoRegion RegID.

Arguments

  • RegID : The keyword ID that will be used to identify the GeoRegion. If the ID is already in use, then an error will be thrown.

  • ParID : The ID of the parent GeoRegion where information can be extracted from

  • name : A name for the GeoRegion (meta information, can be used in Logging)

  • bound : The [N,S,E,W] coordinates defining the region

Keyword Arguments

  • save : Save the GeoRegion into the master list? Default is true

  • verbose : Verbose logging for ease of monitoring? Default is true

source


# GeoRegions.PolyRegionMethod.
julia
PolyRegion(
+    RegID :: AbstractString,
+    ParID :: AbstractString,
+    name  :: AbstractString,
+    lon :: Vector{<:Real},
+    lat :: Vector{<:Real};
+    save :: Bool = true,
+    path :: AbstractString = "",
+    verbose :: Bool = true,
+    ST = String,
+    FT = Float64
+) -> PolyRegion{ST,FT}

Creates a rectilinear GeoRegion RegID.

Arguments

  • RegID : The keyword ID that will be used to identify the GeoRegion. If the ID is already in use, then an error will be thrown.

  • ParID : The ID of the parent GeoRegion where information can be extracted from

  • name : A name for the GeoRegion (meta information, can be used in Logging)

  • lon : A vector containing the longitude points

  • lat : A vector containing the latitude points

Keyword Arguments

  • save : Save the GeoRegion into the master list? Default is true

  • verbose : Verbose logging for ease of monitoring? Default is true

Start and End Points

The 1st and last elements of lon and lat must be equal.

source


Is it already a GeoRegion?

Sometimes we would like to independently check if an ID has already been used. We can use the function isGeoRegion() to perform this checkIf the GeoRegion IDTRC\` already exists, however, this will throw an error

# GeoRegions.isGeoRegionFunction.
julia
isGeoRegion(
+    geoID :: AbstractString;
+    throw :: Bool = true
+) -> tf :: Bool

Extracts information of the GeoRegion with the ID geoID. If no GeoRegion with this ID exists, an error is thrown.

Arguments

  • geoID : The keyword ID that will be used to identify the GeoRegion. If the ID is not valid (i.e. not being used), then an error will be thrown.

  • throw : If true, then throws an error if geoID is not a valid GeoRegion identifier instead of returning the Boolean tf

Returns

  • tf : True / False

source


julia
julia> using GeoRegions
+
+julia> isGeoRegion("AR6_SEA")
+[ Info: 2024-08-08T01:51:44.198 - GeoRegions.jl - Checking to see if the ID AR6_SEA is in use
+[ Info: 2024-08-08T01:51:44.198 - GeoRegions.jl - The ID AR6_SEA is already in use
+true
+
+julia> isGeoRegion("RND",throw=false)
+[ Info: 2024-08-08T01:51:44.210 - GeoRegions.jl - Checking to see if the ID RND is in use
+┌ Warning: 2024-08-08T01:51:44.210 - GeoRegions.jl - RND is not a valid GeoRegion identifier, use RectRegion(), TiltRegion() or PolyRegion() to add this GeoRegion to the list.
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:562
+false
+
+julia> isGeoRegion("RND")
+[ Info: 2024-08-08T01:51:44.211 - GeoRegions.jl - Checking to see if the ID RND is in use
+ERROR: 2024-08-08T01:51:44.211 - GeoRegions.jl - RND is not a valid GeoRegion identifier, use RectRegion(), TiltRegion() or PolyRegion() to add this GeoRegion to the list.

Removing an existing GeoRegion

To remove an existing GeoRegion, we can use the function removeGeoRegion

julia
julia> using GeoRegions
+
+julia> removeGeoRegion("TRC")
+[ Info: 2024-08-08T01:51:44.317 - GeoRegions.jl - Removing the GeoRegion TRC ...

Global GeoRegion

The Global GeoRegion GLB is considered to be an integral part of the GeoRegions.jl package and therefore it cannot be removed.

julia
julia> using GeoRegions
+
+julia> removeGeoRegion("GLB")
+ERROR: 2024-08-08T01:51:44.326 - GeoRegions.jl - The Global GeoRegion "GLB" is an integral part of the GeoRegions.jl package and cannot be removed.
# GeoRegions.removeGeoRegionMethod.
julia
removeGeoRegion(geoID::AbstractString)

Creates the GeoRegion associated with the ID geoID.

Arguments

  • geoID : The keyword ID that will be used to identify the GeoRegion. If the ID is not valid (i.e. not being used), then an error will be thrown.

source


Reset the list of GeoRegions

Should one wish to entirely reset the list of GeoRegions, one can call resetGeoRegions(). See Custom GeoRegions for more details.

`,28),t=[k];function l(e,p,E,r,g,d){return a(),i("div",null,t)}const F=s(n,[["render",l]]);export{y as __pageData,F as default}; diff --git a/v6.0.0/assets/georegions_create.md.DjnUQb5I.lean.js b/v6.0.0/assets/georegions_create.md.DjnUQb5I.lean.js new file mode 100644 index 00000000..6c4b0b27 --- /dev/null +++ b/v6.0.0/assets/georegions_create.md.DjnUQb5I.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.Bu--eeyr.js";const y=JSON.parse('{"title":"Creating GeoRegions","description":"","frontmatter":{},"headers":[],"relativePath":"georegions/create.md","filePath":"georegions/create.md","lastUpdated":null}'),n={name:"georegions/create.md"},k=h("",28),t=[k];function l(e,p,E,r,g,d){return a(),i("div",null,t)}const F=s(n,[["render",l]]);export{y as __pageData,F as default}; diff --git a/v6.0.0/assets/georegions_intro.md.BRampsM4.js b/v6.0.0/assets/georegions_intro.md.BRampsM4.js new file mode 100644 index 00000000..f95e2b4b --- /dev/null +++ b/v6.0.0/assets/georegions_intro.md.BRampsM4.js @@ -0,0 +1,2 @@ +import{_ as e,c as o,o as i,a7 as t}from"./chunks/framework.Bu--eeyr.js";const b=JSON.parse('{"title":"What is a GeoRegion?","description":"","frontmatter":{},"headers":[],"relativePath":"georegions/intro.md","filePath":"georegions/intro.md","lastUpdated":null}'),a={name:"georegions/intro.md"},n=t(`

What is a GeoRegion?

Simply put, a GeoRegion is a geographic region. In v1 of GeoRegions.jl, a GeoRegion could only be rectilinear in shape. However, as of GeoRegions.jl v2, we use Julia types to differentiate between rectilinear GeoRegions, and GeoRegions of arbitrary polygonal shape:

  • Rectilinear GeoRegions are denoted by the RectRegion type

  • Polygonal GeoRegions are denoted by the PolyRegion type

The main difference between a PolyRegion and a RectRegion, is that a PolyRegion also contains a mask field which allows us to extract a data field of a polygonal shape from the rectilinear bounds that are the natural result of a rectilinear grid.

# GeoRegions.GeoRegionType.
julia
GeoRegion

Abstract supertype for geographical regions, with the following subtypes:

RectRegion{ST<:AbstractString, FT<:Real} <: GeoRegion
+PolyRegion{ST<:AbstractString, FT<:Real} <: GeoRegion

Both RectRegion and PolyRegion types contain the following fields:

  • ID - A String Type, the identifier for the GeoRegion

  • pID - A String Type, the identifier for the parent GeoRegion

  • name - A String Type, the full name of the GeoRegion

  • N - A Float Type, the north boundary of the GeoRegion

  • S - A Float Type, the south boundary of the GeoRegion

  • E - A Float Type, the east boundary of the GeoRegion

  • W - A Float Type, the est boundary of the GeoRegion

  • is180 - A Bool Type, is W < 0

  • is360 - A Bool Type, is E > 180

A PolyRegion type will also contain the following field:

  • shape - A vector of Point2 Types, defining a non-rectilinear shape of the GeoRegion

source


In essence, a GeoRegion is:

  • a geographical region that can be either rectilinear region, or a polygonal shape within a specified rectilinear bound.

  • identified by an ID

  • itself a subregion of a parent GeoRegion (identified by pID, which must itself be a valid ID)

Default GeoRegions

When using GeoRegions.jl, the default GeoRegion should generally be the global domain, specified by GLB and given by the [N,S,E,W] coordinates [90,-90,360,0]. The Global GeoRegion GLB is considered to be a subset of itself.

`,9),d=[n];function l(c,s,p,r,g,h){return i(),o("div",null,d)}const f=e(a,[["render",l]]);export{b as __pageData,f as default}; diff --git a/v6.0.0/assets/georegions_intro.md.BRampsM4.lean.js b/v6.0.0/assets/georegions_intro.md.BRampsM4.lean.js new file mode 100644 index 00000000..cdd26614 --- /dev/null +++ b/v6.0.0/assets/georegions_intro.md.BRampsM4.lean.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as i,a7 as t}from"./chunks/framework.Bu--eeyr.js";const b=JSON.parse('{"title":"What is a GeoRegion?","description":"","frontmatter":{},"headers":[],"relativePath":"georegions/intro.md","filePath":"georegions/intro.md","lastUpdated":null}'),a={name:"georegions/intro.md"},n=t("",9),d=[n];function l(c,s,p,r,g,h){return i(),o("div",null,d)}const f=e(a,[["render",l]]);export{b as __pageData,f as default}; diff --git a/v6.0.0/assets/georegions_predefined.md.BOa24chq.js b/v6.0.0/assets/georegions_predefined.md.BOa24chq.js new file mode 100644 index 00000000..cfc55d49 --- /dev/null +++ b/v6.0.0/assets/georegions_predefined.md.BOa24chq.js @@ -0,0 +1,39 @@ +import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.Bu--eeyr.js";const o=JSON.parse('{"title":"List of Available GeoRegions","description":"","frontmatter":{},"headers":[],"relativePath":"georegions/predefined.md","filePath":"georegions/predefined.md","lastUpdated":null}'),n={name:"georegions/predefined.md"},k=h(`

List of Available GeoRegions

This page contains a list of the GeoRegions that are currently available in GeoRegions.jl.

The default GeoRegion covers the global domain identified as GLB

julia
julia> using GeoRegions
+
+julia> GeoRegion("GLB")
+[ Info: 2024-08-08T01:51:44.337 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID GLB
+The Rectilinear Region GLB has the following properties:
+    Region ID    (ID) : GLB
+    Parent ID   (pID) : GLB
+    Name       (name) : Globe
+    Bounds  (N,S,E,W) : [90.0, -90.0, 360.0, 0.0]
+        (is180,is360) : (false, true)

Adapted from Giorgi & Francisco [2000]

Add the GF_ prefix to the 3-letter IDs given in Giorgi & Francisco [2000] to call GeoRegions adapted from this paper. All GeoRegions are defined as the RectRegion type.

Defined in GeoRegions > 1.1

All GF_* domains are defined only in versions ≥1.1

julia
julia> using GeoRegions
+
+julia> GeoRegion("GF_WAF")
+[ Info: 2024-08-08T01:51:44.340 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID GF_WAF
+The Rectilinear Region GF_WAF has the following properties:
+    Region ID    (ID) : GF_WAF
+    Parent ID   (pID) : GLB
+    Name       (name) : Western Africa
+    Bounds  (N,S,E,W) : [20.0, -15.0, 25.0, -20.0]
+        (is180,is360) : (true, false)

SREX Regions adapted from Seneviratne et al. [2012]

Add the SRX_ prefix to the 3-letter IDs given in Seneviratne et al. [2012] to call GeoRegions adapted from this paper. All GeoRegions are defined as the PolyRegion type, even though many of them are rectilinear.

Defined in GeoRegions ≧ 2

All SRX_* domains are defined only in versions ≥2

julia
julia> using GeoRegions
+
+julia> GeoRegion("SRX_CNA")
+[ Info: 2024-08-08T01:51:44.342 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID SRX_CNA
+The Polygonal Region SRX_CNA has the following properties:
+    Region ID    (ID) : SRX_CNA
+    Parent ID   (pID) : GLB
+    Name       (name) : Central North America
+    Bounds  (N,S,E,W) : [50.0, 28.6, -85.0, -105.0]
+    Shape     (shape) : Point{2, Float64}[[-85.0, 50.0], [-85.0, 28.6], [-105.0, 28.6], [-105.0, 50.0], [-85.0, 50.0]]
+        (is180,is360) : (true, false)

AR6 Regions adapted from Iturbide et al., [2020]

Add the AR6_ prefix to the 3-letter IDs given in Iturbide et al., [2020] to call GeoRegions adapted from this paper. All GeoRegions are defined as the PolyRegion type.

Defined in GeoRegions ≧ 2

All AR6_* domains are defined only in versions ≥2

julia
julia> using GeoRegions
+
+julia> GeoRegion("AR6_EAS")
+[ Info: 2024-08-08T01:51:44.353 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID AR6_EAS
+The Polygonal Region AR6_EAS has the following properties:
+    Region ID    (ID) : AR6_EAS
+    Parent ID   (pID) : GLB
+    Name       (name) : East Asia
+    Bounds  (N,S,E,W) : [45.0, 19.5, 152.0, 100.0]
+    Shape     (shape) : Point{2, Float64}[[100.0, 19.5], [100.0, 37.0], [108.0, 37.0], [117.0, 45.0], [152.0, 45.0], [132.0, 25.0], [132.0, 19.5], [100.0, 19.5]]
+        (is180,is360) : (false, true)
`,16),t=[k];function l(p,e,E,d,r,g){return a(),i("div",null,t)}const F=s(n,[["render",l]]);export{o as __pageData,F as default}; diff --git a/v6.0.0/assets/georegions_predefined.md.BOa24chq.lean.js b/v6.0.0/assets/georegions_predefined.md.BOa24chq.lean.js new file mode 100644 index 00000000..a68edde4 --- /dev/null +++ b/v6.0.0/assets/georegions_predefined.md.BOa24chq.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.Bu--eeyr.js";const o=JSON.parse('{"title":"List of Available GeoRegions","description":"","frontmatter":{},"headers":[],"relativePath":"georegions/predefined.md","filePath":"georegions/predefined.md","lastUpdated":null}'),n={name:"georegions/predefined.md"},k=h("",16),t=[k];function l(p,e,E,d,r,g){return a(),i("div",null,t)}const F=s(n,[["render",l]]);export{o as __pageData,F as default}; diff --git a/v6.0.0/assets/georegions_read.md.aVhjiFRk.js b/v6.0.0/assets/georegions_read.md.aVhjiFRk.js new file mode 100644 index 00000000..b680a00a --- /dev/null +++ b/v6.0.0/assets/georegions_read.md.aVhjiFRk.js @@ -0,0 +1,27 @@ +import{_ as i,c as s,o as e,a7 as a}from"./chunks/framework.Bu--eeyr.js";const u=JSON.parse('{"title":"Reading in Defined GeoRegion Information","description":"","frontmatter":{},"headers":[],"relativePath":"georegions/read.md","filePath":"georegions/read.md","lastUpdated":null}'),n={name:"georegions/read.md"},t=a(`

Reading in Defined GeoRegion Information

In this section, we go through process of extracting information regarding a GeoRegion.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Retrieving Information about a Previously Defined GeoRegion

We use the function GeoRegion(ID), where ID is the ID of the GeoRegion, in order to extract the information for the GeoRegion.

julia
GeoRegion("AR6_NWN")
The Polygonal Region AR6_NWN has the following properties:
+    Region ID    (ID) : AR6_NWN
+    Parent ID   (pID) : GLB
+    Name       (name) : Northwest North America
+    Bounds  (N,S,E,W) : [81.0, 50.0, -105.0, -168.0]
+    Shape     (shape) : Point{2, Float64}[[-105.0, 50.0], [-130.0, 50.0], [-143.0, 58.0], [-168.0, 52.5], [-168.0, 72.6], [-129.0, 72.6], [-125.0, 77.6], [-105.0, 81.0], [-105.0, 50.0]]
+        (is180,is360) : (true, false)
# GeoRegions.GeoRegionMethod.
julia
GeoRegion(geoID::AbstractString) -> geo::GeoRegion

Extracts information of the GeoRegion with the ID geoID. If no GeoRegion with this ID exists, an error is thrown.

Arguments

  • geoID : The keyword ID that will be used to identify the GeoRegion. If the ID is not valid (i.e. not being used), then an error will be thrown.

Returns

  • geo : A GeoRegion

source


The Difference between Bounds and Shape in a PolyRegion

What is the difference between the fields bound and shape in a PolyRegion? The answer is simple: a bound is a rectilinear-region in the lon-lat coordinate system, while the shape denotes the actual PolyRegion. We retrieve the longitude and latitude coordinates for the bound and shape fields using the function coordGeoRegion().

Bound and Shape in RectRegion

There is no field shape in a RectRegion because the shape of a RectRegion is defined by its rectilinear bound.

@example
blon,blat,slon,slat = coordGeoRegion(GeoRegion("AR6_NWN"))

From plotting the bounds (blon,blat) and the shape(slon,slat), we see that the bound is the region defined by the westernmost, easternmost, northernmost and southernmost coordinates of the shape.

@example
aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+fig = Figure()
+ax = Axis(
+    fig[1,1],width=750,height=750/aspect,
+    limits=(minimum(slon)-2,maximum(slon)+2,minimum(slat)-2,maximum(slat)+2)
+)
+lines!(ax,clon,clat,color=:black,linewidth=3)
+lines!(ax,slon,slat,linewidth=5)
+lines!(ax,blon,blat,linewidth=5)
+resize_to_layout!(fig)
+fig
# GeoRegions.coordGeoRegionMethod.
julia
coordGeoRegion(geo::RectRegion) -> blon::Vector{<:Real}, blat::Vector{<:Real}

For a given RectRegion, extract the [N,S,E,W] bounds and create a longitude and latitude vector.

Arguments

  • geo : A RectRegion (i.e. a rectilinear GeoRegion)

Returns

  • lon : A vector of longitude points for the bound of the GeoRegion

  • lat : A vector of latitude points for the bound of the GeoRegion

source


# GeoRegions.coordGeoRegionMethod.
julia
coordGeoRegion(geo::PolyRegion) ->
+    blon::Vector{<:Real}, blat::Vector{<:Real},
+    slon::Vector{<:Real}, slat::Vector{<:Real},

For a given RectRegion, extract the [N,S,E,W] bounds and create a longitude and latitude vectors for the bound and the shape of the GeoRegion

Arguments

  • geo : A PolyRegion (i.e. a polygonal GeoRegion)

Returns

  • lon : A vector of longitude points for the shape of the GeoRegion

  • lat : A vector of latitude points for the shape of the GeoRegion

source


`,20),o=[t];function l(p,h,d,r,g,c){return e(),s("div",null,o)}const E=i(n,[["render",l]]);export{u as __pageData,E as default}; diff --git a/v6.0.0/assets/georegions_read.md.aVhjiFRk.lean.js b/v6.0.0/assets/georegions_read.md.aVhjiFRk.lean.js new file mode 100644 index 00000000..8614d76d --- /dev/null +++ b/v6.0.0/assets/georegions_read.md.aVhjiFRk.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as e,a7 as a}from"./chunks/framework.Bu--eeyr.js";const u=JSON.parse('{"title":"Reading in Defined GeoRegion Information","description":"","frontmatter":{},"headers":[],"relativePath":"georegions/read.md","filePath":"georegions/read.md","lastUpdated":null}'),n={name:"georegions/read.md"},t=a("",20),o=[t];function l(p,h,d,r,g,c){return e(),s("div",null,o)}const E=i(n,[["render",l]]);export{u as __pageData,E as default}; diff --git a/v6.0.0/assets/index.md.BB2ui9LQ.js b/v6.0.0/assets/index.md.BB2ui9LQ.js new file mode 100644 index 00000000..d3a3dfb2 --- /dev/null +++ b/v6.0.0/assets/index.md.BB2ui9LQ.js @@ -0,0 +1,2 @@ +import{_ as i,c as s,o as e,a7 as t}from"./chunks/framework.Bu--eeyr.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"GeoRegions.jl","text":"Geographic Regions for Gridded Data","tagline":"Extract and analyze gridded Earth Observation data in a few simple steps.","image":{"src":"/logo.png","alt":"GeoRegions"},"actions":[{"theme":"brand","text":"Getting Started","link":"/georegions/intro"},{"theme":"alt","text":"Tutorials","link":"/using/isin"},{"theme":"alt","text":"View on Github","link":"https://github.com/juliaclimate/GeoRegions.jl"}]},"features":[{"icon":"\\"markdown\\"/","title":"Simple","details":"Only Longitude/Latitude coordinates needed","link":"/lists/default"},{"icon":"\\"markdown\\"/","title":"Customizable","details":"Define your own custom Geographic Regions","link":"/georegions/create"},{"icon":"\\"markdown\\"/","title":"Useful","details":"Data Extraction made easy using GeoRegions.jl","link":"/using/extract"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),a={name:"index.md"},n=t(`

Installation Instructions

The latest version of GeoRegions can be installed using the Julia package manager (accessed by pressing ] in the Julia command prompt)

julia
julia> ]
+(@v1.10) pkg> add GeoRegions

You can update GeoRegions.jl to the latest version using

julia
(@v1.10) pkg> update GeoRegions

And if you want to get the latest release without waiting for me to update the Julia Registry (although this generally isn't necessary since I make a point to release patch versions as soon as I find bugs or add new working features), you may fix the version to the main branch of the GitHub repository:

julia
(@v1.10) pkg> add GeoRegions#main

Getting help

If you are interested in using GeoRegions.jl or are trying to figure out how to use it, please feel free to ask me questions and get in touch! Please feel free to open an issue if you have any questions, comments, suggestions, etc!

`,9),l=[n];function o(h,p,r,d,g,k){return e(),s("div",null,l)}const E=i(a,[["render",o]]);export{u as __pageData,E as default}; diff --git a/v6.0.0/assets/index.md.BB2ui9LQ.lean.js b/v6.0.0/assets/index.md.BB2ui9LQ.lean.js new file mode 100644 index 00000000..e92ea0e4 --- /dev/null +++ b/v6.0.0/assets/index.md.BB2ui9LQ.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as e,a7 as t}from"./chunks/framework.Bu--eeyr.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"GeoRegions.jl","text":"Geographic Regions for Gridded Data","tagline":"Extract and analyze gridded Earth Observation data in a few simple steps.","image":{"src":"/logo.png","alt":"GeoRegions"},"actions":[{"theme":"brand","text":"Getting Started","link":"/georegions/intro"},{"theme":"alt","text":"Tutorials","link":"/using/isin"},{"theme":"alt","text":"View on Github","link":"https://github.com/juliaclimate/GeoRegions.jl"}]},"features":[{"icon":"\\"markdown\\"/","title":"Simple","details":"Only Longitude/Latitude coordinates needed","link":"/lists/default"},{"icon":"\\"markdown\\"/","title":"Customizable","details":"Define your own custom Geographic Regions","link":"/georegions/create"},{"icon":"\\"markdown\\"/","title":"Useful","details":"Data Extraction made easy using GeoRegions.jl","link":"/using/extract"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),a={name:"index.md"},n=t("",9),l=[n];function o(h,p,r,d,g,k){return e(),s("div",null,l)}const E=i(a,[["render",o]]);export{u as __pageData,E as default}; diff --git a/v6.0.0/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/v6.0.0/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 00000000..b6b603d5 Binary files /dev/null and b/v6.0.0/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/v6.0.0/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/v6.0.0/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 00000000..def40a4f Binary files /dev/null and b/v6.0.0/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/v6.0.0/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/v6.0.0/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 00000000..e070c3d3 Binary files /dev/null and b/v6.0.0/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/v6.0.0/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/v6.0.0/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 00000000..a3c16ca4 Binary files /dev/null and b/v6.0.0/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/v6.0.0/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/v6.0.0/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 00000000..2210a899 Binary files /dev/null and b/v6.0.0/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/v6.0.0/assets/inter-italic-latin.C2AdPX0b.woff2 b/v6.0.0/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 00000000..790d62dc Binary files /dev/null and b/v6.0.0/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/v6.0.0/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/v6.0.0/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 00000000..1eec0775 Binary files /dev/null and b/v6.0.0/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/v6.0.0/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/v6.0.0/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 00000000..2cfe6153 Binary files /dev/null and b/v6.0.0/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/v6.0.0/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/v6.0.0/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 00000000..e3886dd1 Binary files /dev/null and b/v6.0.0/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/v6.0.0/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/v6.0.0/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 00000000..36d67487 Binary files /dev/null and b/v6.0.0/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/v6.0.0/assets/inter-roman-greek.BBVDIX6e.woff2 b/v6.0.0/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 00000000..2bed1e85 Binary files /dev/null and b/v6.0.0/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/v6.0.0/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/v6.0.0/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 00000000..9a8d1e2b Binary files /dev/null and b/v6.0.0/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/v6.0.0/assets/inter-roman-latin.Di8DUHzh.woff2 b/v6.0.0/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 00000000..07d3c53a Binary files /dev/null and b/v6.0.0/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/v6.0.0/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/v6.0.0/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 00000000..57bdc22a Binary files /dev/null and b/v6.0.0/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/v6.0.0/assets/landsea_create.md.CM6v8mp_.js b/v6.0.0/assets/landsea_create.md.CM6v8mp_.js new file mode 100644 index 00000000..34d1a2e9 --- /dev/null +++ b/v6.0.0/assets/landsea_create.md.CM6v8mp_.js @@ -0,0 +1,51 @@ +import{_ as s,c as a,o as i,a7 as n}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"Loading and Saving Land-Sea Mask Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"landsea/create.md","filePath":"landsea/create.md","lastUpdated":null}'),e={name:"landsea/create.md"},t=n(`

Loading and Saving Land-Sea Mask Datasets

The Land-Sea Dataset can be obtained using the function getLandSea(). There are two options:

  1. Saving the LandSea dataset as a local NetCDF file

  2. Extract the LandSea dataset directly from the OPeNDAP servers

Option (1) has a longer initial cost, because you have to download the global file, and then use the data from the global file to extract out the information for the GeoRegion of interest. However, once the data has been downloaded once, you don't need to download the data again and this greatly speeds up latency time.

Option (2) however, is much faster for smaller GeoRegions when loading the data directly from OPeNDAP is much easier than downloading the entire dataset. However, loading data directly from OPeNDAP comes with its own noticeable latency, which can add up if done iteratively.

You can toggle between the two options using the keyword argument savelsd - true sets the function to option 1, and false is option 2.

See end of the page for the API.

For more details on smoothing the land-sea mask, such that distance from the actual coastline is better resolved, please see this page

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Retrieving LandSea Example over Aceh

@example
geo  = RectRegion("ACH","GLB","Aceh",[6,3,98,95],savegeo=false)
+slon,slat = coordGeoRegion(geo)
+lsd = getLandSea(geo,savelsd=false)

And we plot it here, with coarser-resolution coastlines for comparison:

@example
fig = Figure()
+aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+
+ax1 = Axis(
+    fig[1,1],width=350,height=350/aspect,
+    title="Orographic Height",xlabel="Longitude / º",ylabel="Latitude / º",
+    limits=(minimum(slon)-0.1,maximum(slon)+0.1,minimum(slat)-0.1,maximum(slat)+0.1)
+)
+contourf!(
+    ax1,lsd.lon,lsd.lat,lsd.z,
+    levels=range(0,1500,length=16),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax1,clon,clat,color=:black,linewidth=2)
+lines!(ax1,slon,slat,linewidth=5)
+
+ax2 = Axis(
+    fig[1,2],width=350,height=350/aspect,
+    title="Land-Sea Mask",xlabel="Longitude / º",
+    limits=(minimum(slon)-0.1,maximum(slon)+0.1,minimum(slat)-0.1,maximum(slat)+0.1)
+)
+contourf!(
+    ax2,lsd.lon,lsd.lat,lsd.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax2,slon,slat,linewidth=5)
+
+resize_to_layout!(fig)
+fig

API

# GeoRegions.getLandSeaFunction.
julia
getLandSea(
+    geo  :: GeoRegion = GeoRegion("GLB");
+    path :: AbstractString = homedir(),
+    resolution :: Int = 60,
+    bedrock   :: Bool = false,
+    geoid     :: Bool = false,
+    returnlsd :: Bool = false,
+    savelsd   :: Bool = false,
+    smooth    :: Bool = false,
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100,
+    FT = Float32
+) -> LandSea

Retrieve ETOPO 2022 data for a GeoRegion from OPeNDAP servers

Arguments

  • geo : The GeoRegion of interest

Keyword Arguments

  • path :: The path to which an ETOPO folder is created within and ETOPO LandSea data saved into

  • resolution : The resolution of the dataset to be downloaded, in units of arc-seconds. Possible values are 15, 30 and 60, default is 60.

  • bedrock, geoid : The type of ETOPO data (bedrock, geoid, ice-surface) to be downloaded. Bedrock has priority over geoid, so if both are true, the bedrock is downloaded.

  • savelsd : Save LandSea dataset into a local NetCDF file.

  • returnlsd : If savelsd = true, you can choose to simply save the data into the NetCDF file, or load return it as a LandSea dataset. Otherwise, if savelsd = false, you always return the LandSea dataset.

  • smooth : If smooth = true, then you can smooth the land-sea mask using the Gaussian Filter of ImageFiltering.jl such that the coastline (i.e. the separation between land and ocean) becomes blurred.

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source


`,17),l=[t];function p(h,o,d,k,r,c){return i(),a("div",null,l)}const u=s(e,[["render",p]]);export{E as __pageData,u as default}; diff --git a/v6.0.0/assets/landsea_create.md.CM6v8mp_.lean.js b/v6.0.0/assets/landsea_create.md.CM6v8mp_.lean.js new file mode 100644 index 00000000..b4173e24 --- /dev/null +++ b/v6.0.0/assets/landsea_create.md.CM6v8mp_.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a7 as n}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"Loading and Saving Land-Sea Mask Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"landsea/create.md","filePath":"landsea/create.md","lastUpdated":null}'),e={name:"landsea/create.md"},t=n("",17),l=[t];function p(h,o,d,k,r,c){return i(),a("div",null,l)}const u=s(e,[["render",p]]);export{E as __pageData,u as default}; diff --git a/v6.0.0/assets/landsea_intro.md.pYe5xaAo.js b/v6.0.0/assets/landsea_intro.md.pYe5xaAo.js new file mode 100644 index 00000000..3f8b01d3 --- /dev/null +++ b/v6.0.0/assets/landsea_intro.md.pYe5xaAo.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.Bu--eeyr.js";const b=JSON.parse('{"title":"Land-Sea Mask Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"landsea/intro.md","filePath":"landsea/intro.md","lastUpdated":null}'),s={name:"landsea/intro.md"},i=o('

Land-Sea Mask Datasets

Starting from v5, GeoRegions.jl now fully supports the retrieval of 30- and 60-arcsecond ETOPO orographic data, which includes the following options:

  • Topography that follows the ice-surface (surface)

  • Topography that follows the bedrock beneath the ice (bedrock)

  • Geoid data that converts the Topography into WTGS84 ellipsoid elevation heights

The AbstractLandSea SuperType

The data is loaded into a LandSea dataset struct-type, which is a subset of the supertype AbstractLandSea. We export this supertype, and its abstract subtypes LandSeaTopo and LandSeaFlat, so that other packages can extend the use of these abstract types with their own LandSea Types.

For examples of how to extend the functionality of the LandSea datasets, you may refer to the following examples:

# GeoRegions.AbstractLandSeaType.
julia
AbstractLandSea

Abstract supertype for LandSea Datasets, with the following subtypes:

LandSeaTopo <: AbstractLandSea\nLandSeaFlat <: AbstractLandSea

Both LandSeaTopo and LandSeaFlat types contain the following fields:

  • lon - Vector containing the longitude points for the Land-Sea Dataset

  • lat - Vector containing the latitude points for the Land-Sea Dataset

  • lsm - Array containing data regarding the Land-Sea Mask. 1 is Land, 0 is Ocean, NaN is outside the bounds of the GeoRegion

  • mask - Mask determining if point is within the GeoRegion or not. 1 is true, 0 is false.

A LandSeaTopo type will also contain the following field:

  • z - Array containing data regarding the Orographic Height in meters. NaN is outside the bounds of the GeoRegion

source


The LandSea Type for GeoRegions.jl

# GeoRegions.LandSeaType.
julia
GeoRegion.LandSea <: LandSeaTopo

Object containing information on the ETOPO 2022 Land Sea mask for a GeoRegion.

source


',12),n=[i];function d(l,r,p,c,h,g){return t(),a("div",null,n)}const f=e(s,[["render",d]]);export{b as __pageData,f as default}; diff --git a/v6.0.0/assets/landsea_intro.md.pYe5xaAo.lean.js b/v6.0.0/assets/landsea_intro.md.pYe5xaAo.lean.js new file mode 100644 index 00000000..8f82c483 --- /dev/null +++ b/v6.0.0/assets/landsea_intro.md.pYe5xaAo.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.Bu--eeyr.js";const b=JSON.parse('{"title":"Land-Sea Mask Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"landsea/intro.md","filePath":"landsea/intro.md","lastUpdated":null}'),s={name:"landsea/intro.md"},i=o("",12),n=[i];function d(l,r,p,c,h,g){return t(),a("div",null,n)}const f=e(s,[["render",d]]);export{b as __pageData,f as default}; diff --git a/v6.0.0/assets/landsea_smooth.md.Cb82iFV6.js b/v6.0.0/assets/landsea_smooth.md.Cb82iFV6.js new file mode 100644 index 00000000..3b53b0ee --- /dev/null +++ b/v6.0.0/assets/landsea_smooth.md.Cb82iFV6.js @@ -0,0 +1,100 @@ +import{_ as s,c as a,o as i,a7 as n}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"Smoothing of the Land-Sea Mask Dataset","description":"","frontmatter":{},"headers":[],"relativePath":"landsea/smooth.md","filePath":"landsea/smooth.md","lastUpdated":null}'),e={name:"landsea/smooth.md"},t=n(`

Smoothing of the Land-Sea Mask Dataset

The land-sea mask created from the ETOPO dataset comprises of 1s and 0s, where 1 denotes land and 0 denotes the ocean. However, it may often be useful to sort grid points not only by their land-surface type, but how distant they are from the coastline. GeoRegions.jl uses Gaussian Filtering from ImageFiltering.jl to perform a smoothing of the land-sea mask.

The degree of smoothing is expressed by the arguments σlon and σlat, which are integer inputs respectively.

You can get a smoothed land-sea mask via two means:

  1. Calling the smoothing directly when retrieving the Land-Sea Dataset (recommended)

  2. Smoothing a preexisting Land-Sea Dataset that has been loaded (not recommended)

The API for smoothing is listed below. However, it is worth nothing that when implementing the smoothing, you need to first call a larger GeoRegion around the GeoRegion of interest as a buffer.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resh.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Example comparison between Smooth and Unsmoothed Masks

@example
geo = RectRegion("ACH","GLB","Aceh",[7,2,99,94],savegeo=false)
+lsd_raw = getLandSea(geo,savelsd=false)
+lsd_σ05 = getLandSea(geo,savelsd=false,smooth=true,σlon=5,σlat=5)
+lsd_σ10 = getLandSea(geo,savelsd=false,smooth=true,σlon=10,σlat=10)
@example
fig = Figure()
+
+ax1 = Axis(
+    fig[1,1],width=225,height=225,
+    title="Raw Land-Sea Mask",xlabel="Longitude / º",ylabel="Latitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax1,lsd_raw.lon,lsd_raw.lat,lsd_raw.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax1,clon,clat,color=:black,linewidth=2)
+
+ax2 = Axis(
+    fig[1,2],width=225,height=225,
+    title="Smoothed (σ=5)",xlabel="Longitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax2,lsd_σ05.lon,lsd_σ05.lat,lsd_σ05.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax2,clon,clat,color=:black,linewidth=2)
+
+ax3 = Axis(
+    fig[1,3],width=225,height=225,
+    title="Smoothed (σ=10)",xlabel="Longitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax3,lsd_σ10.lon,lsd_σ10.lat,lsd_σ10.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax3,clon,clat,color=:black,linewidth=2)
+
+resize_to_layout!(fig)
+fig

Smoothing Directly from a loaded Land-Sea Mask

@example
smooth!(lsd_raw,σlon=5,σlat=5)
@example
f2 = Figure()
+
+ax1 = Axis(
+    f2[1,1],width=350,height=350,
+    title="Smoothed from Global",xlabel="Longitude / º",ylabel="Latitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax1,lsd_σ05.lon,lsd_σ05.lat,lsd_σ05.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax1,clon,clat,color=:black,linewidth=2)
+
+ax2 = Axis(
+    f2[1,2],width=350,height=350,
+    title="Directly Smoothed",xlabel="Longitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax2,lsd_raw.lon,lsd_raw.lat,lsd_raw.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax2,clon,clat,color=:black,linewidth=2)
+
+resize_to_layout!(f2)
+f2

You see here that smoothing the land-sea mask directly upon itself causes errors at the edges of the grid. This is because the smoothing applied is a circular smoothing, meaning that the boundaries are considered to be doubly-periodic, and thus bleed into each other. Thus, it is always best practice to call the smoothing directly when retrieving the Land-Sea dataset.

API

# GeoRegions.smooth!Function.
julia
smooth!(
+    lsd  :: LandSeaTopo;
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100,
+    topography :: Bool = false
+) --> nothing

Perform a gaussian smoothing on the Land-Sea mask given a LandSeaTopo Mask dataset. If usetopography is set to true, then before the filtering, any points where height >= 0 is set to 1, and <0 is set = 0.

The smoothed land-sea mask will be saved into lsd.lsm

Arguments

  • lsd : A Land-Sea Dataset with Topography

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

  • topography : If true, then the land-sea mask that is smoothed will be based on the topography instead of the raw ERA5 land-sea mask

source

julia
smooth!(
+    lsd  :: LandSeaFlat;
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100
+) --> nothing

Perform a gaussian smoothing on the Land-Sea mask given a LandSeaFlat Mask dataset.

The smoothed land-sea mask will be saved into lsd.lsm

Arguments

  • lsd : A Land-Sea Dataset without Topography

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source

julia
smooth!(
+    lsm  :: Array{<:Real,2};
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100
+) --> nothing

Perform a gaussian smoothing on the Land-Sea mask.

The smoothed land-sea mask will be saved into lsm.

Arguments

  • lsm : A Land-Sea Mask

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source

julia
smooth!(
+    lsm  :: Array{<:Real,2},
+    oro  :: Array{<:Real,2};
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100
+) --> nothing

Perform a gaussian smoothing on the Land-Sea mask given a corresponding topographic dataset.

The smoothed land-sea mask will be saved into lsm.

Arguments

  • olsm : The old Land-Sea Mask

  • oro : A topographic dataset that the smoothing will be based off

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source


# GeoRegions.smoothlsmFunction.
julia
smoothlsm(
+    oro  :: Array{<:Real,2};
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100
+) --> Array{<:Real,2}

Perform a gaussian smoothing on the Land-Sea mask

Arguments

  • oro : A topographic dataset that the smoothing will be based off

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source


`,20),l=[t];function p(h,o,k,d,r,g){return i(),a("div",null,l)}const u=s(e,[["render",p]]);export{E as __pageData,u as default}; diff --git a/v6.0.0/assets/landsea_smooth.md.Cb82iFV6.lean.js b/v6.0.0/assets/landsea_smooth.md.Cb82iFV6.lean.js new file mode 100644 index 00000000..23a8b62d --- /dev/null +++ b/v6.0.0/assets/landsea_smooth.md.Cb82iFV6.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a7 as n}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"Smoothing of the Land-Sea Mask Dataset","description":"","frontmatter":{},"headers":[],"relativePath":"landsea/smooth.md","filePath":"landsea/smooth.md","lastUpdated":null}'),e={name:"landsea/smooth.md"},t=n("",20),l=[t];function p(h,o,k,d,r,g){return i(),a("div",null,l)}const u=s(e,[["render",p]]);export{E as __pageData,u as default}; diff --git a/v6.0.0/assets/lists_api.md.Cad_bBQq.js b/v6.0.0/assets/lists_api.md.Cad_bBQq.js new file mode 100644 index 00000000..26955196 --- /dev/null +++ b/v6.0.0/assets/lists_api.md.Cad_bBQq.js @@ -0,0 +1,23 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"Tabular Listings of GeoRegions","description":"","frontmatter":{},"headers":[],"relativePath":"lists/api.md","filePath":"lists/api.md","lastUpdated":null}'),l={name:"lists/api.md"},n=e(`

Tabular Listings of GeoRegions

A list of GeoRegions and their basic properties can be called using the function tableGeoRegions(), which lists all available GeoRegions, both predefined and custom/user-defined.

julia
julia> using GeoRegions
+
+julia> resetGeoRegions(allfiles=true)
+ERROR: MethodError: no method matching resetGeoRegions(; allfiles::Bool)
+
+Closest candidates are:
+  resetGeoRegions(; path, all) got unsupported keyword argument "allfiles"
+   @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:243
+
+julia> tableGeoRegions(onlycustom=true)
+ ----- ------------ ----------------------- -------- --------------
+  ID       Type      Name                    Parent       File
+ ----- ------------ ----------------------- -------- --------------
+  GLB   RectRegion   Globe                    GLB     rectlist.txt
+  TPL   PolyRegion   Test Polygonal Region    GLB     polylist.txt
+ ----- ------------ ----------------------- -------- --------------
# GeoRegions.tableGeoRegionsMethod.
julia
tableGeoRegions(; onlycustom::Bool) -> nothing

Display all available GeoRegions in tabular format.

Keyword Arguments

  • onlycustom : If true, only custom, user-defined GeoRegions will be displayed. To show all available GeoRegions (including predefined GeoRegions), set onlycustom to false

source


More specific lists of GeoRegions

Besides listing all available GeoRegions, it is also possible to list a variety of different specifications of GeoRegions with the tableGeoRegions() function, as well as tableRectRegions() and tablePolyRegions().

# GeoRegions.tableRectRegionsFunction.
julia
tableRectRegions(;
+    custom :: Bool = true,
+    giorgi :: Bool = false
+) -> nothing

Display all available RectRegions in tabular format.

Keyword Arguments

  • custom : If true, display custom user-defined GeoRegions. Default is true

  • giorgi : If true, display Giorgi predefined GeoRegions. Default is false

source


# GeoRegions.tablePolyRegionsFunction.
julia
tablePolyRegions(;
+    custom :: Bool = true,
+    srex :: Bool = false,
+    ar6  :: Bool = false
+) -> nothing

Display all available PolyRegions in tabular format.

Keyword Arguments

  • custom : If true, display custom user-defined GeoRegions. Default is true

  • srex : If true, display SREX predefined GeoRegions. Default is false

  • ar6 : If true, display IPCC AR6 predefined GeoRegions. Default is false

source


Listing GeoRegions inside a Custom File

Similarly, it is also possible to list the GeoRegions in custom files. The template for these files can be retrieved using the function templateGeoRegions()

# GeoRegions.tableGeoRegionsMethod.
julia
tableGeoRegions(fname::AbstractString) -> nothing

Display all available GeoRegions in tabular format.

Keyword Arguments

  • onlycustom : If true, only custom, user-defined GeoRegions will be displayed. To show all available GeoRegions (including predefined GeoRegions), set onlycustom to false

source


`,15),t=[n];function h(p,o,k,r,d,g){return a(),i("div",null,t)}const y=s(l,[["render",h]]);export{E as __pageData,y as default}; diff --git a/v6.0.0/assets/lists_api.md.Cad_bBQq.lean.js b/v6.0.0/assets/lists_api.md.Cad_bBQq.lean.js new file mode 100644 index 00000000..792c9081 --- /dev/null +++ b/v6.0.0/assets/lists_api.md.Cad_bBQq.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"Tabular Listings of GeoRegions","description":"","frontmatter":{},"headers":[],"relativePath":"lists/api.md","filePath":"lists/api.md","lastUpdated":null}'),l={name:"lists/api.md"},n=e("",15),t=[n];function h(p,o,k,r,d,g){return a(),i("div",null,t)}const y=s(l,[["render",h]]);export{E as __pageData,y as default}; diff --git a/v6.0.0/assets/lists_default.md.B49KRQ7R.js b/v6.0.0/assets/lists_default.md.B49KRQ7R.js new file mode 100644 index 00000000..2de506bb --- /dev/null +++ b/v6.0.0/assets/lists_default.md.B49KRQ7R.js @@ -0,0 +1,3 @@ +import{_ as s,c as e,o as i,a7 as a}from"./chunks/framework.Bu--eeyr.js";const _=JSON.parse('{"title":"Default List of All Predefined GeoRegions","description":"","frontmatter":{},"headers":[],"relativePath":"lists/default.md","filePath":"lists/default.md","lastUpdated":null}'),t={name:"lists/default.md"},l=a(`

Default List of All Predefined GeoRegions

julia
using GeoRegions
+resetGeoRegions(allfiles=true)
+tableGeoRegions()
`,2),n=[l];function o(d,h,p,r,k,c){return i(),e("div",null,n)}const u=s(t,[["render",o]]);export{_ as __pageData,u as default}; diff --git a/v6.0.0/assets/lists_default.md.B49KRQ7R.lean.js b/v6.0.0/assets/lists_default.md.B49KRQ7R.lean.js new file mode 100644 index 00000000..7946dca3 --- /dev/null +++ b/v6.0.0/assets/lists_default.md.B49KRQ7R.lean.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as i,a7 as a}from"./chunks/framework.Bu--eeyr.js";const _=JSON.parse('{"title":"Default List of All Predefined GeoRegions","description":"","frontmatter":{},"headers":[],"relativePath":"lists/default.md","filePath":"lists/default.md","lastUpdated":null}'),t={name:"lists/default.md"},l=a("",2),n=[l];function o(d,h,p,r,k,c){return i(),e("div",null,n)}const u=s(t,[["render",o]]);export{_ as __pageData,u as default}; diff --git a/v6.0.0/assets/regiongrids_create.md.BlJAOEEu.js b/v6.0.0/assets/regiongrids_create.md.BlJAOEEu.js new file mode 100644 index 00000000..34f092d2 --- /dev/null +++ b/v6.0.0/assets/regiongrids_create.md.BlJAOEEu.js @@ -0,0 +1,74 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"RegionGrid: Applying GeoRegions to Gridded Data","description":"","frontmatter":{},"headers":[],"relativePath":"regiongrids/create.md","filePath":"regiongrids/create.md","lastUpdated":null}'),e={name:"regiongrids/create.md"},l=n(`

RegionGrid: Applying GeoRegions to Gridded Data

In this section, we go through the basic steps of creating a RegionGrid for RectRegions and PolyRegions. See if you can spot the differences between the RegionGrids generated by the two different types.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

RectGrid Example

julia
geo  = GeoRegion("GF_SSA")
+lon  = -180:5:180
+lat  = -90:5:90
+ggrd = RegionGrid(geo,lon[1:(end-1)],lat)
The Rectilinear Grid has the following properties:
+    Grid Bounds       (grid) : [15, 7, 29, 21]
+    Longitude Indices (ilon) : [21, 22, 23, 24, 25, 26, 27, 28, 29]
+    Latitude Indices  (ilat) : [7, 8, 9, 10, 11, 12, 13, 14, 15]
+    Longitude Points   (lon) : [280, 285, 290, 295, 300, 305, 310, 315, 320]
+    Latitude Points    (lat) : [-60, -55, -50, -45, -40, -35, -30, -25, -20]
+    Region Size (nlon * nlat) : 9 lon points x 9 lat points

PolyGrid Example

julia
geo  = GeoRegion("AR6_NWS")
+lon  = -180:2:180;
+lat  = -90:2:90;
+ggrd = RegionGrid(geo,lon[1:(end-1)],lat)
The Polygonal Grid has the following properties:
+    Grid Bounds       (grid) : [52, 39, 55, 50]
+    Longitude Indices (ilon) : [50, 51, 52, 53, 54, 55]
+    Latitude Indices  (ilat) : [39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52]
+    Longitude Points   (lon) : [-82.0, -80.0, -78.0, -76.0, -74.0, -72.0]
+    Latitude Points    (lat) : [-14.0, -12.0, -10.0, -8.0, -6.0, -4.0, -2.0, 0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 12.0]
+    Region Size (nlon * nlat) : 6 lon points x 14 lat points
+    Region Mask (sum(mask) / (nlon * nlat)) : 70 / 84

So here, we see that in this PolyGrid example, the RegionGrid contains an additional field mask that, within the rectilinear longitude-latitude shape bounding the GeoRegion (because gridded data here is assumed to be rectilinear), the data is within the GeoRegion. Values of 1 indicate it is within the GeoRegion, otherwise the values are \`NaN.

julia
ggrd.mask
6×14 Matrix{Float64}:
+ NaN    NaN    1.0  1.0  1.0  1.0  1.0  …  NaN    NaN    NaN    NaN    NaN
+ NaN      1.0  1.0  1.0  1.0  1.0  1.0       1.0    1.0  NaN    NaN    NaN
+   1.0    1.0  1.0  1.0  1.0  1.0  1.0       1.0    1.0    1.0  NaN    NaN
+   1.0    1.0  1.0  1.0  1.0  1.0  1.0       1.0    1.0    1.0    1.0  NaN
+   1.0    1.0  1.0  1.0  1.0  1.0  1.0       1.0    1.0    1.0    1.0    1.0
+   1.0    1.0  1.0  1.0  1.0  1.0  1.0  …    1.0    1.0    1.0    1.0    1.0

The Mask of a PolyGrid

The PolyGrid type derived from a PolyRegion allows us to apply a mask to filter out data that is within the shape of a PolyRegion on a rectilinear lon-lat grid defined by the bound of a PolyRegion. We consider the following example of an AR6 region over South Asia:

julia
geo  = GeoRegion("AR6_SAS")
+lon  = -180:5:180;
+lat  = -90:2:90;
+ggrd = RegionGrid(geo,lon[1:(end-1)],lat)
The Polygonal Grid has the following properties:
+    Grid Bounds       (grid) : [61, 50, 57, 49]
+    Longitude Indices (ilon) : [49, 50, 51, 52, 53, 54, 55, 56, 57]
+    Latitude Indices  (ilat) : [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61]
+    Longitude Points   (lon) : [60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0]
+    Latitude Points    (lat) : [8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0]
+    Region Size (nlon * nlat) : 9 lon points x 12 lat points
+    Region Mask (sum(mask) / (nlon * nlat)) : 55 / 108

And using the field mask, we plot the points that are in the region (blue), and out of the region (red).

@example
mask = ggrd.mask
+grid = ones(size(mask))
+inlon = grid .* ggrd.lon;  inlon = inlon[.!isnan.(mask)]
+inlat = grid .* ggrd.lat'; inlat = inlat[.!isnan.(mask)]
+otlon = grid .* ggrd.lon;  otlon = otlon[isnan.(mask)]
+otlat = grid .* ggrd.lat'; otlat = otlat[isnan.(mask)]
+blon,blat,slon,slat = coordGeoRegion(geo)
+
+fig = Figure()
+aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+ax = Axis(
+    fig[1,1],width=750,height=750/aspect,
+    limits=(minimum(slon)-2,maximum(slon)+2,minimum(slat)-2,maximum(slat)+2)
+)
+
+lines!(ax,clon,clat,color=:black)
+lines!(ax,blon,blat)
+lines!(ax,slon,slat)
+scatter!(ax,otlon,otlat)
+scatter!(ax,inlon,inlat)
+
+resize_to_layout!(fig)
+fig

API

# GeoRegions.RegionGridMethod.
julia
RegionGrid(
+    geo :: GeoRegion,
+    lon :: Union{Vector{<:Real},AbstractRange{<:Real},
+    lat :: Union{Vector{<:Real},AbstractRange{<:Real}
+) -> RectGrid, PolyGrid

Creates a RectGrid or PolyGrid type based on the following arguments. This method is suitable for rectilinear grids of longitude/latitude output such as from Isca, or from satellite and reanalysis gridded datasets.

Arguments

  • geo : A GeoRegion of interest

  • lon : A vector or AbstractRange containing the longitude points

  • lat : A vector or AbstractRange containing the latitude points

source


# GeoRegions.RegionGridMethod.
julia
RegionGrid(
+    geo :: GeoRegion,
+    lon :: Array{<:Real,2},
+    lat :: Array{<:Real,2}
+) -> RegionGrid

Creates a RegionMask type based on the following arguments. This method is more suitable for non-rectilinear grids of longitude and latitude points, such as in the output of WRF or CESM.

Arguments

  • geo : A GeoRegion of interest

  • lon : An array containing the longitude points

  • lat : An array containing the latitude points

source



This page was generated using Literate.jl.

`,26),t=[l];function p(h,k,o,d,r,g){return a(),i("div",null,t)}const y=s(e,[["render",p]]);export{E as __pageData,y as default}; diff --git a/v6.0.0/assets/regiongrids_create.md.BlJAOEEu.lean.js b/v6.0.0/assets/regiongrids_create.md.BlJAOEEu.lean.js new file mode 100644 index 00000000..0c80bf7b --- /dev/null +++ b/v6.0.0/assets/regiongrids_create.md.BlJAOEEu.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"RegionGrid: Applying GeoRegions to Gridded Data","description":"","frontmatter":{},"headers":[],"relativePath":"regiongrids/create.md","filePath":"regiongrids/create.md","lastUpdated":null}'),e={name:"regiongrids/create.md"},l=n("",26),t=[l];function p(h,k,o,d,r,g){return a(),i("div",null,t)}const y=s(e,[["render",p]]);export{E as __pageData,y as default}; diff --git a/v6.0.0/assets/regiongrids_intro.md.Dj2V1J0q.js b/v6.0.0/assets/regiongrids_intro.md.Dj2V1J0q.js new file mode 100644 index 00000000..9eb339bf --- /dev/null +++ b/v6.0.0/assets/regiongrids_intro.md.Dj2V1J0q.js @@ -0,0 +1,3 @@ +import{_ as e,c as i,o,a7 as t}from"./chunks/framework.Bu--eeyr.js";const u=JSON.parse('{"title":"What is a RegionGrid?","description":"","frontmatter":{},"headers":[],"relativePath":"regiongrids/intro.md","filePath":"regiongrids/intro.md","lastUpdated":null}'),a={name:"regiongrids/intro.md"},n=t(`

What is a RegionGrid?

But how do we go from defining a GeoRegion, to extracting data for that GeoRegion? The answer is with the information in the RegionGrid types, which maps gridded lon-lat data to a given GeoRegion as follows:

  • Mapping gridded lon-lat data to a RectRegion gives a RectGrid structure

  • Mapping gridded lon-lat data to a PolyRegion gives a PolyGrid structure

  • Mapping non-rectilinear gridded lon-lat data to a RegionMask gives a RegionMask structure

However, the basic uses of RectGrid and PolyGrid are the same, and as such their differences are largely transparent to the user, except for one field found in PolyGrid, the mask, which will be elaborated upon later.

# GeoRegions.RegionGridType.
julia
RegionGrid

Abstract supertype for geographical region gridded information, with the following subtypes:

RectGrid{FT<:Real} <: RegionGrid
+PolyGrid{FT<:Real} <: RegionGrid
+RegionMask{FT<:Real} <: RegionGrid

Both RectGrid and PolyGrid types contain the following fields:

  • grid - A vector of Ints defining the gridpoint indices of the [N,S,E,W] points respectively

  • lon - A vector of Floats defining the latitude vector describing the region

  • lat - A vector of Floats defining the latitude vector describing the region

  • ilon - A vector of Ints defining indices of the parent longitude vector describing the region

  • ilat - A vector of Ints defining indices of the parent latitude vector describing the region

A PolyGrid type will also contain the following field:

  • mask - An array of 0s and 1s defining a non-rectilinear shape within a rectilinear grid where data is valid (only available in PolyGrid types)

A RegionMask type will contain the following fields:

  • lon - An array of longitude points

  • lat - An array of latitude points

  • mask - An array of NaNs and 1s defining the region within the original field in which data points are valid

source


So basically a RegionGrid contains information on the indices of the gridded data that are part of the GeoRegion, thus helping us extract the relevant data for a given GeoRegion.

`,7),d=[n];function r(s,l,c,p,g,h){return o(),i("div",null,d)}const R=e(a,[["render",r]]);export{u as __pageData,R as default}; diff --git a/v6.0.0/assets/regiongrids_intro.md.Dj2V1J0q.lean.js b/v6.0.0/assets/regiongrids_intro.md.Dj2V1J0q.lean.js new file mode 100644 index 00000000..07a1e898 --- /dev/null +++ b/v6.0.0/assets/regiongrids_intro.md.Dj2V1J0q.lean.js @@ -0,0 +1 @@ +import{_ as e,c as i,o,a7 as t}from"./chunks/framework.Bu--eeyr.js";const u=JSON.parse('{"title":"What is a RegionGrid?","description":"","frontmatter":{},"headers":[],"relativePath":"regiongrids/intro.md","filePath":"regiongrids/intro.md","lastUpdated":null}'),a={name:"regiongrids/intro.md"},n=t("",7),d=[n];function r(s,l,c,p,g,h){return o(),i("div",null,d)}const R=e(a,[["render",r]]);export{u as __pageData,R as default}; diff --git a/v6.0.0/assets/style.B5uSRucc.css b/v6.0.0/assets/style.B5uSRucc.css new file mode 100644 index 00000000..11021f03 --- /dev/null +++ b/v6.0.0/assets/style.B5uSRucc.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css?family=Space+Mono:regular,italic,700,700italic";@import"https://fonts.googleapis.com/css?family=Space+Grotesk:regular,italic,700,700italic";@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeoRegions.jl/v6.0.0/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-14206e74]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-14206e74]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-14206e74]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-14206e74]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-14206e74]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-14206e74]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-14206e74]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-14206e74]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-14206e74]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-14206e74]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-14206e74]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-14206e74]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-14206e74]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-8b74d055]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-8b74d055]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-8b74d055]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-8b74d055]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-e5380155]{position:relative}.VPFlyout[data-v-e5380155]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-e5380155]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-e5380155]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-e5380155]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-e5380155]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-e5380155],.button[aria-expanded=true]+.menu[data-v-e5380155]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-e5380155]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-e5380155]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-e5380155]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-e5380155]{margin-right:0;font-size:16px}.text-icon[data-v-e5380155]{margin-left:4px;font-size:14px}.icon[data-v-e5380155]{font-size:20px;transition:fill .25s}.menu[data-v-e5380155]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-717b8b75]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-717b8b75]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-717b8b75]>svg,.VPSocialLink[data-v-717b8b75]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-ed5ac1f6]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-ed5ac1f6],.VPNavBarMenuLink[data-v-ed5ac1f6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.6.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-28a961f9]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-28a961f9]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-28a961f9]{border-bottom-color:var(--vp-c-divider)}}[data-v-28a961f9] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-27d04aeb]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-27d04aeb]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-7179dbb7]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-7179dbb7]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-196b2e5f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-196b2e5f]{padding-bottom:10px}.item[data-v-196b2e5f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-196b2e5f]{cursor:pointer}.indicator[data-v-196b2e5f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-196b2e5f]{background-color:var(--vp-c-brand-1)}.link[data-v-196b2e5f]{display:flex;align-items:center;flex-grow:1}.text[data-v-196b2e5f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-196b2e5f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-196b2e5f],.VPSidebarItem.level-2 .text[data-v-196b2e5f],.VPSidebarItem.level-3 .text[data-v-196b2e5f],.VPSidebarItem.level-4 .text[data-v-196b2e5f],.VPSidebarItem.level-5 .text[data-v-196b2e5f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-196b2e5f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.caret[data-v-196b2e5f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-196b2e5f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-196b2e5f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-196b2e5f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-196b2e5f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-196b2e5f],.VPSidebarItem.level-2 .items[data-v-196b2e5f],.VPSidebarItem.level-3 .items[data-v-196b2e5f],.VPSidebarItem.level-4 .items[data-v-196b2e5f],.VPSidebarItem.level-5 .items[data-v-196b2e5f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-196b2e5f]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: "Space Mono", Menlo, Monaco, Consolas, "Courier New", monospace}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #9558B2 30%, #CB3C33 );--vp-home-hero-image-background-image: linear-gradient( -45deg, #9558B2 30%, #389826 30%, #CB3C33 );--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline-block}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}.VPLocalSearchBox[data-v-5b749456]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-5b749456]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-5b749456]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-5b749456]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-5b749456]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-5b749456]{padding:0 8px}}.search-bar[data-v-5b749456]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-5b749456]{display:block;font-size:18px}.navigate-icon[data-v-5b749456]{display:block;font-size:14px}.search-icon[data-v-5b749456]{margin:8px}@media (max-width: 767px){.search-icon[data-v-5b749456]{display:none}}.search-input[data-v-5b749456]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-5b749456]{padding:6px 4px}}.search-actions[data-v-5b749456]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-5b749456]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-5b749456]{display:none}}.search-actions button[data-v-5b749456]{padding:8px}.search-actions button[data-v-5b749456]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-5b749456]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-5b749456]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-5b749456]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-5b749456]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-5b749456]{display:none}}.search-keyboard-shortcuts kbd[data-v-5b749456]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-5b749456]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-5b749456]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-5b749456]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-5b749456]{margin:8px}}.titles[data-v-5b749456]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-5b749456]{display:flex;align-items:center;gap:4px}.title.main[data-v-5b749456]{font-weight:500}.title-icon[data-v-5b749456]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-5b749456]{opacity:.5}.result.selected[data-v-5b749456]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-5b749456]{position:relative}.excerpt[data-v-5b749456]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-5b749456]{opacity:1}.excerpt[data-v-5b749456] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-5b749456] mark,.excerpt[data-v-5b749456] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-5b749456] .vp-code-group .tabs{display:none}.excerpt[data-v-5b749456] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-5b749456]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-5b749456]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-5b749456],.result.selected .title-icon[data-v-5b749456]{color:var(--vp-c-brand-1)!important}.no-results[data-v-5b749456]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-5b749456]{flex:none} diff --git a/v6.0.0/assets/using_custom.md.BZlJdPS8.js b/v6.0.0/assets/using_custom.md.BZlJdPS8.js new file mode 100644 index 00000000..979d6b41 --- /dev/null +++ b/v6.0.0/assets/using_custom.md.BZlJdPS8.js @@ -0,0 +1,13 @@ +import{_ as e,c as s,o as i,a7 as a}from"./chunks/framework.Bu--eeyr.js";const u=JSON.parse('{"title":"Adding GeoRegions from Templates","description":"","frontmatter":{},"headers":[],"relativePath":"using/custom.md","filePath":"using/custom.md","lastUpdated":null}'),n={name:"using/custom.md"},t=a(`

Adding GeoRegions from Templates

So you have a list of areas that you want to define, but you don't want to enter them in one by one. What to do?### Setup

julia
using GeoRegions

Template GeoRegion Files

Fear not! I have template files that one can use to define RectRegions and PolyRegions. Simply use the templateGeoRegion() to copy the templates into a directory of your choice.

Defining PolyRegions

When defining PolyRegions, the first and last set of (lon,lat) coordinates must be the same (i.e. a closed polygon must be defined)

julia
templateGeoRegion("your-file-path-here")
# GeoRegions.templateGeoRegionsFunction.
julia
templateGeoRegions(; path::AbstractString, overwrite::Bool=false)

Copies the template files for defining GeoRegions in textfiles, that can then be added as a batch using addGeoRegions()

Keyword Arguments

  • path : The folder to copy the files to

  • overwrite : If template files exist in this folder, overwrite?

source


Reading in GeoRegions from a custom file

We can then read in GeoRegions from your custom file using the function addGeoRegions(), which will then read all the GeoRegion information in the file and add it to the list of GeoRegions.

julia
addGeoRegions("recttest.txt")
+GeoRegion("TRP")
The Rectilinear Region TRP has the following properties:
+    Region ID    (ID) : TRP
+    Parent ID   (pID) : GLB
+    Name       (name) : Tropical
+    Bounds  (N,S,E,W) : [30.0, -30.0, 360.0, 0.0]
+        (is180,is360) : (false, true)
# GeoRegions.addGeoRegionsFunction.
julia
addGeoRegions(fname::AbstractString)

Extracts information of the GeoRegion with the ID geoID. If no GeoRegion with this ID exists, an error is thrown.

Arguments

  • fname : name + path of the file containing GeoRegion information

source


Reset the list of GeoRegions

Should one wish to entirely reset the list of GeoRegions, one can call resetGeoRegions():

julia
resetGeoRegions()
[ Info: 2024-08-08T01:51:58.735 - GeoRegions.jl - Resetting the custom lists of GeoRegions back to the default
+┌ Warning: 2024-08-08T01:51:58.735 - GeoRegions.jl - Overwriting /home/runner/.julia/files/GeoRegions/rectlist.txt with original file in /home/runner/work/GeoRegions.jl/GeoRegions.jl/src/georegions/../../extra/rectlist.txt ...
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:473
+┌ Warning: 2024-08-08T01:51:58.740 - GeoRegions.jl - Overwriting /home/runner/.julia/files/GeoRegions/polylist.txt with original file in /home/runner/work/GeoRegions.jl/GeoRegions.jl/src/georegions/../../extra/polylist.txt ...
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:473
+┌ Warning: 2024-08-08T01:51:58.740 - GeoRegions.jl - Overwriting /home/runner/.julia/files/GeoRegions/tiltlist.txt with original file in /home/runner/work/GeoRegions.jl/GeoRegions.jl/src/georegions/../../extra/tiltlist.txt ...
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:473

And if one wishes to reset the predefined list of GeoRegions, we can do:

@example
resetGeoRegions(allfiles=true)
# GeoRegions.resetGeoRegionsFunction.
julia
resetGeoRegions(; allfiles::Bool = false)

Reset all the files containing GeoRegion information back to the default.

Arguments

  • allfiles : If true, reset the GeoRegions defined in Giorgi & Francisco [2000], AR6 Regions (Iturbide et al., 2020; ESSD) and Seneviratne et al. [2012] as well. If false, only reset the custom GeoRegions.

source



This page was generated using Literate.jl.

`,25),o=[t];function l(p,r,h,d,g,c){return i(),s("div",null,o)}const b=e(n,[["render",l]]);export{u as __pageData,b as default}; diff --git a/v6.0.0/assets/using_custom.md.BZlJdPS8.lean.js b/v6.0.0/assets/using_custom.md.BZlJdPS8.lean.js new file mode 100644 index 00000000..78c40086 --- /dev/null +++ b/v6.0.0/assets/using_custom.md.BZlJdPS8.lean.js @@ -0,0 +1 @@ +import{_ as e,c as s,o as i,a7 as a}from"./chunks/framework.Bu--eeyr.js";const u=JSON.parse('{"title":"Adding GeoRegions from Templates","description":"","frontmatter":{},"headers":[],"relativePath":"using/custom.md","filePath":"using/custom.md","lastUpdated":null}'),n={name:"using/custom.md"},t=a("",25),o=[t];function l(p,r,h,d,g,c){return i(),s("div",null,o)}const b=e(n,[["render",l]]);export{u as __pageData,b as default}; diff --git a/v6.0.0/assets/using_extract.md.Cj1zD3i2.js b/v6.0.0/assets/using_extract.md.Cj1zD3i2.js new file mode 100644 index 00000000..4474500c --- /dev/null +++ b/v6.0.0/assets/using_extract.md.Cj1zD3i2.js @@ -0,0 +1,100 @@ +import{_ as s,c as a,o as n,a7 as i}from"./chunks/framework.Bu--eeyr.js";const N=JSON.parse('{"title":"Extracting Gridded Data using RegionGrid","description":"","frontmatter":{},"headers":[],"relativePath":"using/extract.md","filePath":"using/extract.md","lastUpdated":null}'),e={name:"using/extract.md"},p=i(`

Extracting Gridded Data using RegionGrid

Suppose we have Global Data. However, we are only interested in a specific region (say, the North Central American region as defined in AR6), how do we extract data for this region?

The simple answer is, we use the extractGrid() function, which takes in a RegionGrid and a data array, and returns a new data array for the GeoRegion.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Let us define the GeoRegion of interest

julia
geo  = GeoRegion("AR6_NCA")
The Polygonal Region AR6_NCA has the following properties:
+    Region ID    (ID) : AR6_NCA
+    Parent ID   (pID) : GLB
+    Name       (name) : Northern Central America
+    Bounds  (N,S,E,W) : [33.8, 16.0, -90.0, -122.5]
+    Shape     (shape) : Point{2, Float64}[[-90.0, 25.0], [-104.5, 16.0], [-122.5, 33.8], [-105.0, 33.8], [-90.0, 25.0]]
+        (is180,is360) : (true, false)

We also define some sample test data in the global domain

julia
lon = collect(0:360); pop!(lon); nlon = length(lon)
+lat = collect(-90:90);           nlat = length(lat)
+odata = randn((nlon,nlat))
360×181 Matrix{Float64}:
+ -1.51976    -1.06822    -0.278088  …   0.59697   -0.20973    -0.745463
+ -0.403299   -0.896384    0.816051     -1.89436   -1.65855    -0.332974
+ -1.81926    -0.213213   -0.81391      -0.183246  -0.918719    1.49813
+  0.583592   -0.172523   -0.422288      0.18205   -0.983444    0.744753
+ -0.504937    0.280976   -0.630778      0.408336   1.40066    -0.799867
+  0.558553    0.910825   -0.288495  …   0.139085  -0.144804   -0.240572
+  1.44393    -0.0255517  -1.55021       0.893512   0.393987   -2.50504
+  0.0978337   0.16897    -1.7596        0.878473  -0.348726    0.1108
+ -0.332354    0.560503   -1.45781      -0.591802  -0.715092   -0.0256041
+ -0.622193   -0.439036   -1.95156      -0.61665    1.3697     -1.58663
+  ⋮                                 ⋱                          ⋮
+ -0.0786834   2.13953    -0.640613      0.394866   0.0252424   0.541481
+  0.299301    2.6579      2.18695       0.240713  -0.654727    0.110688
+ -0.73747     1.14662     1.59476       1.17603    0.787565    1.05738
+  1.33979    -0.554504   -0.98539      -1.00126   -0.932451    1.1819
+  0.150993   -1.30876    -0.129291  …  -1.58184   -1.79163     0.316504
+  0.123113   -0.641158   -0.400491      1.7714    -0.0163741  -0.620367
+ -0.371605    0.338166   -0.210448      0.47999   -0.626191   -0.513311
+ -0.74809     1.05948    -1.17533      -1.04159    0.753299    0.188394
+  0.451286   -0.776093    0.011729      1.25357   -0.671143   -0.195252

Our next step is to define the RegionGrid based on the longitude and latitude vectors and their intersection with the GeoRegion

julia
ggrd = RegionGrid(geo,lon,lat)
The Polygonal Grid has the following properties:
+    Grid Bounds       (grid) : [124, 107, 271, 239]
+    Longitude Indices (ilon) : [239, 240, 241, 242, 243, 244, 245, 246, 247, 248  …  262, 263, 264, 265, 266, 267, 268, 269, 270, 271]
+    Latitude Indices  (ilat) : [107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124]
+    Longitude Points   (lon) : [-122.0, -121.0, -120.0, -119.0, -118.0, -117.0, -116.0, -115.0, -114.0, -113.0  …  -99.0, -98.0, -97.0, -96.0, -95.0, -94.0, -93.0, -92.0, -91.0, -90.0]
+    Latitude Points    (lat) : [16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0]
+    Region Size (nlon * nlat) : 33 lon points x 18 lat points
+    Region Mask (sum(mask) / (nlon * nlat)) : 281 / 594

Then we extract the data

julia
ndata = extractGrid(odata,ggrd)
33×18 Matrix{Float64}:
+ NaN  NaN  NaN  NaN  NaN  NaN         …  NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN            0.265381
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN          -0.224422     0.567931
+ NaN  NaN  NaN  NaN  NaN  NaN              1.67151     0.0993618    0.778459
+ NaN  NaN  NaN  NaN  NaN  NaN              0.163252   -0.644675    -1.14833
+ NaN  NaN  NaN  NaN  NaN  NaN         …   -1.43777     0.514898     0.791617
+ NaN  NaN  NaN  NaN  NaN  NaN             -0.702647    0.32758     -0.726071
+ NaN  NaN  NaN  NaN  NaN  NaN             -0.379183    1.83802      0.239722
+ NaN  NaN  NaN  NaN  NaN  NaN              0.347784    0.0311085   -0.482691
+ NaN  NaN  NaN  NaN  NaN  NaN             -0.588135    2.95287      0.680521
+   ⋮                        ⋮         ⋱    ⋮                      
+ NaN  NaN  NaN  NaN  NaN    0.554907     NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN    1.17125   …  NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN         …  NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN

Let us plot the old and new data

@example
fig = Figure()
+_,_,slon,slat = coordGeoRegion(geo); slon = slon
+aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+
+ax = Axis(
+    fig[1,1],width=350,height=350/aspect,
+    limits=(minimum(slon)-2+360,maximum(slon)+2+360,minimum(slat)-2,maximum(slat)+2)
+)
+contourf!(
+    ax,lon,lat,odata,
+    levels=range(-1,1,length=11),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax,clon,clat,color=:black)
+lines!(ax,slon.+360,slat.+360,color=:red,linewidth=5)
+
+ax = Axis(
+    fig[1,2],width=350,height=350/aspect,
+    limits=(minimum(slon)-2,maximum(slon)+2,minimum(slat)-2,maximum(slat)+2)
+)
+contourf!(
+    ax,ggrd.lon,ggrd.lat,ndata,
+    levels=range(-1,1,length=11),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax,clon,clat,color=:black)
+lines!(ax,slon,slat,color=:red,linewidth=5)
+
+hideydecorations!(ax, ticks = false,grid=false)
+
+resize_to_layout!(fig)
+fig

API

# GeoRegions.extractGridFunction.
julia
extractGrid(
+    odata :: AbstractArray{<:Real,N},
+    ggrd  :: RegionGrid
+) where N <: Int -> Array{<:Real,N}

Extracts data from odata, an Array of dimension N (where N ∈ 2,3,4) that contains data of a Parent GeoRegion, into another Array of dimension N, containing only within a sub GeoRegion we are interested in.

Warning

Please ensure that the 1st dimension is longitude and 2nd dimension is latitude before proceeding. The order of the 3rd and 4th dimensions (when used), however, is not significant.

Arguments

  • odata : An array of dimension N containing gridded data in the region we are interesting in extracting from

  • ggrd : A RegionGrid containing detailed information on what to extract

source


# GeoRegions.extractGrid!Function.
julia
extractGrid!(
+    odata :: AbstractArray{<:Real,N},
+    ndata :: AbstractArray{<:Real,N},
+    ggrd  :: RegionGrid
+) where N <: Int -> nothing

Extracts data from odata, an Array of dimension N (where N ∈ 2,3,4) that contains data of a Parent GeoRegion, into ndata, another Array of dimension N, containing only within a sub GeoRegion we are interested in.

This allows for iterable in-place modification to save memory space and reduce allocations if the dimensions are fixed.

Warning

Please ensure that the 1st dimension is longitude and 2nd dimension is latitude before proceeding. The order of the 3rd and 4th dimensions (when used), however, is not significant.

Arguments

  • odata : An array of dimension N containing gridded data in the region we are interesting in extracting from

  • ndata : An array of dimension N meant as a placeholder for the extracted data to minimize allocations

  • ggrd : A RegionGrid containing detailed information on what to extract

source



This page was generated using Literate.jl.

`,26),t=[p];function l(h,d,o,r,k,c){return n(),a("div",null,t)}const E=s(e,[["render",l]]);export{N as __pageData,E as default}; diff --git a/v6.0.0/assets/using_extract.md.Cj1zD3i2.lean.js b/v6.0.0/assets/using_extract.md.Cj1zD3i2.lean.js new file mode 100644 index 00000000..a4d9c55c --- /dev/null +++ b/v6.0.0/assets/using_extract.md.Cj1zD3i2.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,a7 as i}from"./chunks/framework.Bu--eeyr.js";const N=JSON.parse('{"title":"Extracting Gridded Data using RegionGrid","description":"","frontmatter":{},"headers":[],"relativePath":"using/extract.md","filePath":"using/extract.md","lastUpdated":null}'),e={name:"using/extract.md"},p=i("",26),t=[p];function l(h,d,o,r,k,c){return n(),a("div",null,t)}const E=s(e,[["render",l]]);export{N as __pageData,E as default}; diff --git a/v6.0.0/assets/using_isin.md.BOt5_RYr.js b/v6.0.0/assets/using_isin.md.BOt5_RYr.js new file mode 100644 index 00000000..b23aa447 --- /dev/null +++ b/v6.0.0/assets/using_isin.md.BOt5_RYr.js @@ -0,0 +1,104 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"Is it in a GeoRegion?","description":"","frontmatter":{},"headers":[],"relativePath":"using/isin.md","filePath":"using/isin.md","lastUpdated":null}'),e={name:"using/isin.md"},t=n(`

Is it in a GeoRegion?

When dealing with geographic data, we often wish to check if a point or region is inside another region. GeoRegions.jl allows you to perform this check easily with the function isinGeoRegion.

Point Type

We use the Point2 Type from the package GeometryBasics.jl, which is reexported by GeoRegions.jl, as an easy way to denote points. This also allows us to use the package PolygonOps.jl to determine if a point is inside a region.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Is a Point in a GeoRegion?

As an example, let us test if a point is in GeoRegion AR6_EAO, defined in the blue bounding box below. We define the below points:

  • Point A at coordinates (-20,5)

  • Point B at coordinates (340,5)

  • Point C at coordinates (30,15)

julia
A = Point2(-20,5)
+B = Point2(340,5)
+C = Point2(-45,-7.5)
+geo = GeoRegion("AR6_EAO")
The Polygonal Region AR6_EAO has the following properties:
+    Region ID    (ID) : AR6_EAO
+    Parent ID   (pID) : GLB
+    Name       (name) : Equatorial Atlantic Ocean
+    Bounds  (N,S,E,W) : [7.6, -10.0, 8.0, -50.0]
+    Shape     (shape) : Point{2, Float64}[[-34.0, -10.0], [-34.0, 0.0], [-50.0, 0.0], [-50.0, 7.6], [-20.0, 7.6], [8.0, 0.0], [8.0, -10.0], [-34.0, -10.0]]
+        (is180,is360) : (true, false)

Here, we note that the coordinates of the GeoRegion (Equatorial Atlantic Ocean) are given in the bounds of (-180,180). It is trivial in this case to calculate if points A and C are within the bounds of the GeoRegion.

@example
_,_,slon,slat = coordGeoRegion(geo)
+aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+fig = Figure()
+ax = Axis(
+    fig[1,1],width=750,height=750/aspect,
+    limits=(minimum(slon)-2,maximum(slon)+2,minimum(slat)-2,maximum(slat)+2)
+)
+lines!(ax,clon,clat,color=:black,linewidth=3)
+lines!(ax,slon,slat,linewidth=5)
+scatter!(ax,A,markersize=20)
+scatter!(ax,C,markersize=20)
+resize_to_layout!(fig)
+fig

By eye it is easy to see that Point A is inside the GeoRegion. However, C is not. Let us now see if we are able to corroborate this with GeoRegions.jl using the function isinGeoRegion()

julia
(
+    isinGeoRegion(A,geo,throw=false), # Point A
+    isinGeoRegion(C,geo,throw=false) # Point C
+)
(true, false)

But what about Point B? Point B is also very obvious within the bounds of the GeoRegion, it is simply that the longitude of Point A is shifted by 360º such that it is now in the (0,360) coordinates frame. We see that this is of no concern to GeoRegions.jl, which can detect that it is within the bounds of the GeoRegion anyway.

julia
isinGeoRegion(B,geo,throw=false)
true

Is a GeoRegion inside a GeoRegion?

Since any arbitrary geographic region can be defined as a GeoRegion, the natural extension now is to determine if a GeoRegion is wholly within another GeoRegion.

Let us consider an arbitrary GeoRegion BIG, and other smaller GeoRegions TS1-4 as defined below, and plot them on a map.

@example
geo_BIG = PolyRegion(
+    "BIG","GLB","A Big Region",
+    [-120,-100,-100,-80,-30,15,45,75,90,115,120,105,85,45,20,-5,-45,-80,-120],
+    [0,10,30,50,40,50,55,44,32,30,12,8,5,0,-10,-30,-40,-43,0]
+)
+geo_TS1 = RectRegion("TS1","GLB","Test Region 1",[45,20,20,-70])
+geo_TS2 = PolyRegion("TS2","GLB","Test Region 2",[60,90,110,90,60],[20,25,20,15,20])
+geo_TS3 = PolyRegion(
+    "TS3","GLB","Test Region 3",
+    [-110,-98,-95,-90,-80,-100,-110,-110],
+    [0,10,20,15,5,0,-20,0]
+)
+geo_TS4 = PolyRegion(
+    "TS4","GLB","Test Region 4",
+    [300,325,330,355,330,325,320,300],
+    [-10,-5,0,-10,-30,-35,-20,-10]
+)
+
+blon_b,blat_b,slon_b,slat_b = coordGeoRegion(geo_BIG)
+              slon_1,slat_1 = coordGeoRegion(geo_TS1)
+blon_2,blat_2,slon_2,slat_2 = coordGeoRegion(geo_TS2)
+blon_3,blat_3,slon_3,slat_3 = coordGeoRegion(geo_TS3)
+blon_4,blat_4,slon_4,slat_4 = coordGeoRegion(geo_TS4)
+
+fig = Figure()
+
+ax = Axis(
+    fig[1,1],width=750,height=750/2,
+    limits=(-180,180,-90,90)
+)
+
+lines!(ax,clon,clat,color=:black,linewidth=3)
+lines!(ax,blon_b,blat_b,linewidth=5,color=:blue,linestyle=:dot)
+lines!(ax,slon_b,slat_b,linewidth=5,color=:blue)
+lines!(ax,slon_1,slat_1,linewidth=5,color=:red)
+lines!(ax,blon_2,blat_2,linewidth=5,color=:green,linestyle=:dot)
+lines!(ax,slon_2,slat_2,linewidth=5,color=:green)
+lines!(ax,blon_3,blat_3,linewidth=5,color=:red,linestyle=:dot)
+lines!(ax,slon_3,slat_3,linewidth=5,color=:red)
+lines!(ax,blon_4.-360,blat_4,linewidth=5,color=:green,linestyle=:dot)
+lines!(ax,slon_4.-360,slat_4,linewidth=5,color=:green)
+
+resize_to_layout!(fig)
+fig

We see by eye that GeoRegion TS2 and TS4 are in the BIG region, but the other GeoRegions are not. Now let us verify this with isinGeoRegion()

julia
(
+    isinGeoRegion(geo_TS1,geo_BIG,throw=false),
+    isinGeoRegion(geo_TS2,geo_BIG,throw=false),
+    isinGeoRegion(geo_TS3,geo_BIG,throw=false),
+    isinGeoRegion(geo_TS4,geo_BIG,throw=false)
+)
(false, true, false, true)

And we see that this is indeed the case.

API

# Base.inMethod.
julia
in(
+    Point  :: Point2{<:Real},
+    geo    :: GeoRegion;
+    tlon   :: Real = 0,
+    tlat   :: Real = 0,
+    throw  :: Bool = false
+) -> Bool

Check if a geographical point point is within a GeoRegion defined by geo.

source


# Base.inMethod.
julia
in(
+    Child  :: GeoRegion,
+    rectG  :: RectRegion;
+    throw  :: Bool = false
+) -> Bool

Check if a child GeoRegion defined by Child is within a RectRegion rectG.

Arguments

  • Child : A GeoRegion that we postulate to be a "child", or a subset of the GeoRegion defined by polyG

  • rectG : A GeoRegion that we postulate to be a "parent", or containing the GeoRegion defined by Child

Keyword Arguments

  • throw : If true, then if Child is not within polyG, an error is thrown and the program stops running

source


# Base.inMethod.
julia
in(
+    cgeo  :: GeoRegion,
+    geo   :: Union{TiltRegion,PolyRegion};
+    n     :: Int = 100,
+    throw :: Bool = false
+) -> Bool

Check if a child GeoRegion defined by cgeo is within a TiltRegion or PolyRegion geo.

Arguments

  • cgeo : A GeoRegion that we postulate to be a "child", or a subset of the GeoRegion defined by polyG

  • geo : A TiltRegion or PolyRegion that we postulate to be a "parent", or containing the GeoRegion defined by Child

Keyword Arguments

  • n : Number of points per polygon side to test

  • throw : If true, then if cgeo is not within geo, an error is thrown and the program stops running

source


julia
removeGeoRegion("BIG")
+removeGeoRegion("TS1")
+removeGeoRegion("TS2")
+removeGeoRegion("TS3")
+removeGeoRegion("TS4")
[ Info: 2024-08-08T01:51:59.599 - GeoRegions.jl - Removing the GeoRegion BIG ...
+[ Info: 2024-08-08T01:51:59.690 - GeoRegions.jl - Removing the GeoRegion TS1 ...
+[ Info: 2024-08-08T01:51:59.692 - GeoRegions.jl - Removing the GeoRegion TS2 ...
+[ Info: 2024-08-08T01:51:59.693 - GeoRegions.jl - Removing the GeoRegion TS3 ...
+[ Info: 2024-08-08T01:51:59.694 - GeoRegions.jl - Removing the GeoRegion TS4 ...

This page was generated using Literate.jl.

`,37),l=[t];function p(h,o,k,d,g,r){return a(),i("div",null,l)}const y=s(e,[["render",p]]);export{E as __pageData,y as default}; diff --git a/v6.0.0/assets/using_isin.md.BOt5_RYr.lean.js b/v6.0.0/assets/using_isin.md.BOt5_RYr.lean.js new file mode 100644 index 00000000..86095560 --- /dev/null +++ b/v6.0.0/assets/using_isin.md.BOt5_RYr.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.Bu--eeyr.js";const E=JSON.parse('{"title":"Is it in a GeoRegion?","description":"","frontmatter":{},"headers":[],"relativePath":"using/isin.md","filePath":"using/isin.md","lastUpdated":null}'),e={name:"using/isin.md"},t=n("",37),l=[t];function p(h,o,k,d,g,r){return a(),i("div",null,l)}const y=s(e,[["render",p]]);export{E as __pageData,y as default}; diff --git a/v6.0.0/example/placeholder.html b/v6.0.0/example/placeholder.html new file mode 100644 index 00000000..e9662ccc --- /dev/null +++ b/v6.0.0/example/placeholder.html @@ -0,0 +1,24 @@ + + + + + + Examples for using GeoRegions.jl | GeoRegions.jl + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v6.0.0/georegions/create.html b/v6.0.0/georegions/create.html new file mode 100644 index 00000000..a4053831 --- /dev/null +++ b/v6.0.0/georegions/create.html @@ -0,0 +1,105 @@ + + + + + + Creating GeoRegions | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Creating GeoRegions

In this section, we go through the basic steps of creating a GeoRegion, and removing it once defined so it can be redefined.

Defining a new GeoRegion

We use the functions RectRegion and PolyRegion to define rectilinear and polygonal regions respectively. For example, we construct the sample RectRegion TRC

julia
julia> using GeoRegions
+
+julia> RectRegion("TRC","GLB","Test Rectangle Region",[30,20,50,10])
+[ Info: 2024-08-08T01:51:42.102 - GeoRegions.jl - Checking to see if the ID TRC is in use
+┌ Warning: 2024-08-08T01:51:42.186 - GeoRegions.jl - TRC is not a valid GeoRegion identifier, use RectRegion(), TiltRegion() or PolyRegion() to add this GeoRegion to the list.
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:562
+[ Info: 2024-08-08T01:51:42.188 - GeoRegions.jl - Adding the GeoRegion TRC to the list.
+[ Info: 2024-08-08T01:51:42.214 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID GLB
+[ Info: 2024-08-08T01:51:42.664 - GeoRegions.jl - Performing a check to determine if the Test Rectangle Region GeoRegion (TRC) is inside the Globe GeoRegion (GLB)
+[ Info: 2024-08-08T01:51:42.664 - GeoRegions.jl - The GeoRegion TRC (Test Rectangle Region) is indeed a subset of the GeoRegion GLB (Globe)
+The Rectilinear Region TRC has the following properties:
+    Region ID    (ID) : TRC
+    Parent ID   (pID) : GLB
+    Name       (name) : Test Rectangle Region
+    Bounds  (N,S,E,W) : [30.0, 20.0, 50.0, 10.0]
+        (is180,is360) : (false, true)
+
+julia> PolyRegion("TPL","GLB","Test Polygonal Region",[30,40,50,40,30],[20,30,20,10,20])
+[ Info: 2024-08-08T01:51:43.160 - GeoRegions.jl - Checking to see if the ID TPL is in use
+┌ Warning: 2024-08-08T01:51:43.160 - GeoRegions.jl - TPL is not a valid GeoRegion identifier, use RectRegion(), TiltRegion() or PolyRegion() to add this GeoRegion to the list.
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:562
+[ Info: 2024-08-08T01:51:43.161 - GeoRegions.jl - Adding the GeoRegion TPL to the list.
+[ Info: 2024-08-08T01:51:43.308 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID GLB
+[ Info: 2024-08-08T01:51:43.347 - GeoRegions.jl - Performing a check to determine if the Test Polygonal Region GeoRegion (TPL) is inside the Globe GeoRegion (GLB)
+[ Info: 2024-08-08T01:51:43.347 - GeoRegions.jl - The GeoRegion TPL (Test Polygonal Region) is indeed a subset of the GeoRegion GLB (Globe)
+The Polygonal Region TPL has the following properties:
+    Region ID    (ID) : TPL
+    Parent ID   (pID) : GLB
+    Name       (name) : Test Polygonal Region
+    Bounds  (N,S,E,W) : [30.0, 10.0, 50.0, 30.0]
+    Shape     (shape) : Point{2, Float64}[[30.0, 20.0], [40.0, 30.0], [50.0, 20.0], [40.0, 10.0], [30.0, 20.0]]
+        (is180,is360) : (false, true)

Defining PolyRegions

When defining PolyRegions, the first and last set of (lon,lat) coordinates must be the same (i.e. a closed polygon must be defined)

The GeoRegions will be automatically added to the following files in joinpath(DEPOT_PATH[1],"files","GeoRegions"):

  • RectRegions will be added to rectlist.txt

  • PolyRegions will be added to polylist.txt

If the GeoRegion ID TRC already exists, however, this will throw an error

julia
julia> using GeoRegions
+
+julia> RectRegion("TRC","GLB","Test Rectangle Region2",[40,20,52,10])
+[ Info: 2024-08-08T01:51:43.635 - GeoRegions.jl - Checking to see if the ID TRC is in use
+[ Info: 2024-08-08T01:51:43.635 - GeoRegions.jl - The ID TRC is already in use
+ERROR: 2024-08-08T01:51:43.635 - GeoRegions.jl - The GeoRegion TRC has already been defined.  Please use another identifier.
# GeoRegions.RectRegionMethod.
julia
RectRegion(
+    RegID :: AbstractString,
+    ParID :: AbstractString,
+    name  :: AbstractString,
+    bound :: Vector{<:Real};
+    save :: Bool = true,
+    path :: AbstractString = "",
+    verbose :: Bool = true,
+    ST = String,
+    FT = Float64
+) -> RectRegion{ST,FT}

Creates a rectilinear GeoRegion RegID.

Arguments

  • RegID : The keyword ID that will be used to identify the GeoRegion. If the ID is already in use, then an error will be thrown.

  • ParID : The ID of the parent GeoRegion where information can be extracted from

  • name : A name for the GeoRegion (meta information, can be used in Logging)

  • bound : The [N,S,E,W] coordinates defining the region

Keyword Arguments

  • save : Save the GeoRegion into the master list? Default is true

  • verbose : Verbose logging for ease of monitoring? Default is true

source


# GeoRegions.PolyRegionMethod.
julia
PolyRegion(
+    RegID :: AbstractString,
+    ParID :: AbstractString,
+    name  :: AbstractString,
+    lon :: Vector{<:Real},
+    lat :: Vector{<:Real};
+    save :: Bool = true,
+    path :: AbstractString = "",
+    verbose :: Bool = true,
+    ST = String,
+    FT = Float64
+) -> PolyRegion{ST,FT}

Creates a rectilinear GeoRegion RegID.

Arguments

  • RegID : The keyword ID that will be used to identify the GeoRegion. If the ID is already in use, then an error will be thrown.

  • ParID : The ID of the parent GeoRegion where information can be extracted from

  • name : A name for the GeoRegion (meta information, can be used in Logging)

  • lon : A vector containing the longitude points

  • lat : A vector containing the latitude points

Keyword Arguments

  • save : Save the GeoRegion into the master list? Default is true

  • verbose : Verbose logging for ease of monitoring? Default is true

Start and End Points

The 1st and last elements of lon and lat must be equal.

source


Is it already a GeoRegion?

Sometimes we would like to independently check if an ID has already been used. We can use the function isGeoRegion() to perform this checkIf the GeoRegion IDTRC` already exists, however, this will throw an error

# GeoRegions.isGeoRegionFunction.
julia
isGeoRegion(
+    geoID :: AbstractString;
+    throw :: Bool = true
+) -> tf :: Bool

Extracts information of the GeoRegion with the ID geoID. If no GeoRegion with this ID exists, an error is thrown.

Arguments

  • geoID : The keyword ID that will be used to identify the GeoRegion. If the ID is not valid (i.e. not being used), then an error will be thrown.

  • throw : If true, then throws an error if geoID is not a valid GeoRegion identifier instead of returning the Boolean tf

Returns

  • tf : True / False

source


julia
julia> using GeoRegions
+
+julia> isGeoRegion("AR6_SEA")
+[ Info: 2024-08-08T01:51:44.198 - GeoRegions.jl - Checking to see if the ID AR6_SEA is in use
+[ Info: 2024-08-08T01:51:44.198 - GeoRegions.jl - The ID AR6_SEA is already in use
+true
+
+julia> isGeoRegion("RND",throw=false)
+[ Info: 2024-08-08T01:51:44.210 - GeoRegions.jl - Checking to see if the ID RND is in use
+┌ Warning: 2024-08-08T01:51:44.210 - GeoRegions.jl - RND is not a valid GeoRegion identifier, use RectRegion(), TiltRegion() or PolyRegion() to add this GeoRegion to the list.
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:562
+false
+
+julia> isGeoRegion("RND")
+[ Info: 2024-08-08T01:51:44.211 - GeoRegions.jl - Checking to see if the ID RND is in use
+ERROR: 2024-08-08T01:51:44.211 - GeoRegions.jl - RND is not a valid GeoRegion identifier, use RectRegion(), TiltRegion() or PolyRegion() to add this GeoRegion to the list.

Removing an existing GeoRegion

To remove an existing GeoRegion, we can use the function removeGeoRegion

julia
julia> using GeoRegions
+
+julia> removeGeoRegion("TRC")
+[ Info: 2024-08-08T01:51:44.317 - GeoRegions.jl - Removing the GeoRegion TRC ...

Global GeoRegion

The Global GeoRegion GLB is considered to be an integral part of the GeoRegions.jl package and therefore it cannot be removed.

julia
julia> using GeoRegions
+
+julia> removeGeoRegion("GLB")
+ERROR: 2024-08-08T01:51:44.326 - GeoRegions.jl - The Global GeoRegion "GLB" is an integral part of the GeoRegions.jl package and cannot be removed.
# GeoRegions.removeGeoRegionMethod.
julia
removeGeoRegion(geoID::AbstractString)

Creates the GeoRegion associated with the ID geoID.

Arguments

  • geoID : The keyword ID that will be used to identify the GeoRegion. If the ID is not valid (i.e. not being used), then an error will be thrown.

source


Reset the list of GeoRegions

Should one wish to entirely reset the list of GeoRegions, one can call resetGeoRegions(). See Custom GeoRegions for more details.

+ + + + \ No newline at end of file diff --git a/v6.0.0/georegions/intro.html b/v6.0.0/georegions/intro.html new file mode 100644 index 00000000..6a66ce03 --- /dev/null +++ b/v6.0.0/georegions/intro.html @@ -0,0 +1,25 @@ + + + + + + What is a GeoRegion? | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

What is a GeoRegion?

Simply put, a GeoRegion is a geographic region. In v1 of GeoRegions.jl, a GeoRegion could only be rectilinear in shape. However, as of GeoRegions.jl v2, we use Julia types to differentiate between rectilinear GeoRegions, and GeoRegions of arbitrary polygonal shape:

  • Rectilinear GeoRegions are denoted by the RectRegion type

  • Polygonal GeoRegions are denoted by the PolyRegion type

The main difference between a PolyRegion and a RectRegion, is that a PolyRegion also contains a mask field which allows us to extract a data field of a polygonal shape from the rectilinear bounds that are the natural result of a rectilinear grid.

# GeoRegions.GeoRegionType.
julia
GeoRegion

Abstract supertype for geographical regions, with the following subtypes:

RectRegion{ST<:AbstractString, FT<:Real} <: GeoRegion
+PolyRegion{ST<:AbstractString, FT<:Real} <: GeoRegion

Both RectRegion and PolyRegion types contain the following fields:

  • ID - A String Type, the identifier for the GeoRegion

  • pID - A String Type, the identifier for the parent GeoRegion

  • name - A String Type, the full name of the GeoRegion

  • N - A Float Type, the north boundary of the GeoRegion

  • S - A Float Type, the south boundary of the GeoRegion

  • E - A Float Type, the east boundary of the GeoRegion

  • W - A Float Type, the est boundary of the GeoRegion

  • is180 - A Bool Type, is W < 0

  • is360 - A Bool Type, is E > 180

A PolyRegion type will also contain the following field:

  • shape - A vector of Point2 Types, defining a non-rectilinear shape of the GeoRegion

source


In essence, a GeoRegion is:

  • a geographical region that can be either rectilinear region, or a polygonal shape within a specified rectilinear bound.

  • identified by an ID

  • itself a subregion of a parent GeoRegion (identified by pID, which must itself be a valid ID)

Default GeoRegions

When using GeoRegions.jl, the default GeoRegion should generally be the global domain, specified by GLB and given by the [N,S,E,W] coordinates [90,-90,360,0]. The Global GeoRegion GLB is considered to be a subset of itself.

+ + + + \ No newline at end of file diff --git a/v6.0.0/georegions/predefined.html b/v6.0.0/georegions/predefined.html new file mode 100644 index 00000000..2e4b6bcb --- /dev/null +++ b/v6.0.0/georegions/predefined.html @@ -0,0 +1,62 @@ + + + + + + List of Available GeoRegions | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

List of Available GeoRegions

This page contains a list of the GeoRegions that are currently available in GeoRegions.jl.

The default GeoRegion covers the global domain identified as GLB

julia
julia> using GeoRegions
+
+julia> GeoRegion("GLB")
+[ Info: 2024-08-08T01:51:44.337 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID GLB
+The Rectilinear Region GLB has the following properties:
+    Region ID    (ID) : GLB
+    Parent ID   (pID) : GLB
+    Name       (name) : Globe
+    Bounds  (N,S,E,W) : [90.0, -90.0, 360.0, 0.0]
+        (is180,is360) : (false, true)

Adapted from Giorgi & Francisco [2000]

Add the GF_ prefix to the 3-letter IDs given in Giorgi & Francisco [2000] to call GeoRegions adapted from this paper. All GeoRegions are defined as the RectRegion type.

Defined in GeoRegions > 1.1

All GF_* domains are defined only in versions ≥1.1

julia
julia> using GeoRegions
+
+julia> GeoRegion("GF_WAF")
+[ Info: 2024-08-08T01:51:44.340 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID GF_WAF
+The Rectilinear Region GF_WAF has the following properties:
+    Region ID    (ID) : GF_WAF
+    Parent ID   (pID) : GLB
+    Name       (name) : Western Africa
+    Bounds  (N,S,E,W) : [20.0, -15.0, 25.0, -20.0]
+        (is180,is360) : (true, false)

SREX Regions adapted from Seneviratne et al. [2012]

Add the SRX_ prefix to the 3-letter IDs given in Seneviratne et al. [2012] to call GeoRegions adapted from this paper. All GeoRegions are defined as the PolyRegion type, even though many of them are rectilinear.

Defined in GeoRegions ≧ 2

All SRX_* domains are defined only in versions ≥2

julia
julia> using GeoRegions
+
+julia> GeoRegion("SRX_CNA")
+[ Info: 2024-08-08T01:51:44.342 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID SRX_CNA
+The Polygonal Region SRX_CNA has the following properties:
+    Region ID    (ID) : SRX_CNA
+    Parent ID   (pID) : GLB
+    Name       (name) : Central North America
+    Bounds  (N,S,E,W) : [50.0, 28.6, -85.0, -105.0]
+    Shape     (shape) : Point{2, Float64}[[-85.0, 50.0], [-85.0, 28.6], [-105.0, 28.6], [-105.0, 50.0], [-85.0, 50.0]]
+        (is180,is360) : (true, false)

AR6 Regions adapted from Iturbide et al., [2020]

Add the AR6_ prefix to the 3-letter IDs given in Iturbide et al., [2020] to call GeoRegions adapted from this paper. All GeoRegions are defined as the PolyRegion type.

Defined in GeoRegions ≧ 2

All AR6_* domains are defined only in versions ≥2

julia
julia> using GeoRegions
+
+julia> GeoRegion("AR6_EAS")
+[ Info: 2024-08-08T01:51:44.353 - GeoRegions.jl - Retrieving information for the GeoRegion defined by the ID AR6_EAS
+The Polygonal Region AR6_EAS has the following properties:
+    Region ID    (ID) : AR6_EAS
+    Parent ID   (pID) : GLB
+    Name       (name) : East Asia
+    Bounds  (N,S,E,W) : [45.0, 19.5, 152.0, 100.0]
+    Shape     (shape) : Point{2, Float64}[[100.0, 19.5], [100.0, 37.0], [108.0, 37.0], [117.0, 45.0], [152.0, 45.0], [132.0, 25.0], [132.0, 19.5], [100.0, 19.5]]
+        (is180,is360) : (false, true)
+ + + + \ No newline at end of file diff --git a/v6.0.0/georegions/read.html b/v6.0.0/georegions/read.html new file mode 100644 index 00000000..786fe462 --- /dev/null +++ b/v6.0.0/georegions/read.html @@ -0,0 +1,50 @@ + + + + + + Reading in Defined GeoRegion Information | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Reading in Defined GeoRegion Information

In this section, we go through process of extracting information regarding a GeoRegion.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Retrieving Information about a Previously Defined GeoRegion

We use the function GeoRegion(ID), where ID is the ID of the GeoRegion, in order to extract the information for the GeoRegion.

julia
GeoRegion("AR6_NWN")
The Polygonal Region AR6_NWN has the following properties:
+    Region ID    (ID) : AR6_NWN
+    Parent ID   (pID) : GLB
+    Name       (name) : Northwest North America
+    Bounds  (N,S,E,W) : [81.0, 50.0, -105.0, -168.0]
+    Shape     (shape) : Point{2, Float64}[[-105.0, 50.0], [-130.0, 50.0], [-143.0, 58.0], [-168.0, 52.5], [-168.0, 72.6], [-129.0, 72.6], [-125.0, 77.6], [-105.0, 81.0], [-105.0, 50.0]]
+        (is180,is360) : (true, false)
# GeoRegions.GeoRegionMethod.
julia
GeoRegion(geoID::AbstractString) -> geo::GeoRegion

Extracts information of the GeoRegion with the ID geoID. If no GeoRegion with this ID exists, an error is thrown.

Arguments

  • geoID : The keyword ID that will be used to identify the GeoRegion. If the ID is not valid (i.e. not being used), then an error will be thrown.

Returns

  • geo : A GeoRegion

source


The Difference between Bounds and Shape in a PolyRegion

What is the difference between the fields bound and shape in a PolyRegion? The answer is simple: a bound is a rectilinear-region in the lon-lat coordinate system, while the shape denotes the actual PolyRegion. We retrieve the longitude and latitude coordinates for the bound and shape fields using the function coordGeoRegion().

Bound and Shape in RectRegion

There is no field shape in a RectRegion because the shape of a RectRegion is defined by its rectilinear bound.

@example
blon,blat,slon,slat = coordGeoRegion(GeoRegion("AR6_NWN"))

From plotting the bounds (blon,blat) and the shape(slon,slat), we see that the bound is the region defined by the westernmost, easternmost, northernmost and southernmost coordinates of the shape.

@example
aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+fig = Figure()
+ax = Axis(
+    fig[1,1],width=750,height=750/aspect,
+    limits=(minimum(slon)-2,maximum(slon)+2,minimum(slat)-2,maximum(slat)+2)
+)
+lines!(ax,clon,clat,color=:black,linewidth=3)
+lines!(ax,slon,slat,linewidth=5)
+lines!(ax,blon,blat,linewidth=5)
+resize_to_layout!(fig)
+fig
# GeoRegions.coordGeoRegionMethod.
julia
coordGeoRegion(geo::RectRegion) -> blon::Vector{<:Real}, blat::Vector{<:Real}

For a given RectRegion, extract the [N,S,E,W] bounds and create a longitude and latitude vector.

Arguments

  • geo : A RectRegion (i.e. a rectilinear GeoRegion)

Returns

  • lon : A vector of longitude points for the bound of the GeoRegion

  • lat : A vector of latitude points for the bound of the GeoRegion

source


# GeoRegions.coordGeoRegionMethod.
julia
coordGeoRegion(geo::PolyRegion) ->
+    blon::Vector{<:Real}, blat::Vector{<:Real},
+    slon::Vector{<:Real}, slat::Vector{<:Real},

For a given RectRegion, extract the [N,S,E,W] bounds and create a longitude and latitude vectors for the bound and the shape of the GeoRegion

Arguments

  • geo : A PolyRegion (i.e. a polygonal GeoRegion)

Returns

  • lon : A vector of longitude points for the shape of the GeoRegion

  • lat : A vector of latitude points for the shape of the GeoRegion

source


+ + + + \ No newline at end of file diff --git a/v6.0.0/hashmap.json b/v6.0.0/hashmap.json new file mode 100644 index 00000000..55a29e1b --- /dev/null +++ b/v6.0.0/hashmap.json @@ -0,0 +1 @@ +{"api.md":"EwSGmM2a","example_placeholder.md":"BAhI0H02","georegions_create.md":"DjnUQb5I","georegions_intro.md":"BRampsM4","georegions_predefined.md":"BOa24chq","georegions_read.md":"aVhjiFRk","index.md":"BB2ui9LQ","landsea_create.md":"CM6v8mp_","landsea_intro.md":"pYe5xaAo","landsea_smooth.md":"Cb82iFV6","lists_api.md":"Cad_bBQq","lists_default.md":"B49KRQ7R","regiongrids_create.md":"BlJAOEEu","regiongrids_intro.md":"Dj2V1J0q","using_custom.md":"BZlJdPS8","using_extract.md":"Cj1zD3i2","using_isin.md":"BOt5_RYr"} diff --git a/v6.0.0/index.html b/v6.0.0/index.html new file mode 100644 index 00000000..b85a3a80 --- /dev/null +++ b/v6.0.0/index.html @@ -0,0 +1,25 @@ + + + + + + GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

GeoRegions.jl

Geographic Regions for Gridded Data

Extract and analyze gridded Earth Observation data in a few simple steps.

GeoRegions

Installation Instructions

The latest version of GeoRegions can be installed using the Julia package manager (accessed by pressing ] in the Julia command prompt)

julia
julia> ]
+(@v1.10) pkg> add GeoRegions

You can update GeoRegions.jl to the latest version using

julia
(@v1.10) pkg> update GeoRegions

And if you want to get the latest release without waiting for me to update the Julia Registry (although this generally isn't necessary since I make a point to release patch versions as soon as I find bugs or add new working features), you may fix the version to the main branch of the GitHub repository:

julia
(@v1.10) pkg> add GeoRegions#main

Getting help

If you are interested in using GeoRegions.jl or are trying to figure out how to use it, please feel free to ask me questions and get in touch! Please feel free to open an issue if you have any questions, comments, suggestions, etc!

+ + + + \ No newline at end of file diff --git a/v6.0.0/landsea/create.html b/v6.0.0/landsea/create.html new file mode 100644 index 00000000..d12d7d5c --- /dev/null +++ b/v6.0.0/landsea/create.html @@ -0,0 +1,74 @@ + + + + + + Loading and Saving Land-Sea Mask Datasets | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Loading and Saving Land-Sea Mask Datasets

The Land-Sea Dataset can be obtained using the function getLandSea(). There are two options:

  1. Saving the LandSea dataset as a local NetCDF file

  2. Extract the LandSea dataset directly from the OPeNDAP servers

Option (1) has a longer initial cost, because you have to download the global file, and then use the data from the global file to extract out the information for the GeoRegion of interest. However, once the data has been downloaded once, you don't need to download the data again and this greatly speeds up latency time.

Option (2) however, is much faster for smaller GeoRegions when loading the data directly from OPeNDAP is much easier than downloading the entire dataset. However, loading data directly from OPeNDAP comes with its own noticeable latency, which can add up if done iteratively.

You can toggle between the two options using the keyword argument savelsd - true sets the function to option 1, and false is option 2.

See end of the page for the API.

For more details on smoothing the land-sea mask, such that distance from the actual coastline is better resolved, please see this page

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Retrieving LandSea Example over Aceh

@example
geo  = RectRegion("ACH","GLB","Aceh",[6,3,98,95],savegeo=false)
+slon,slat = coordGeoRegion(geo)
+lsd = getLandSea(geo,savelsd=false)

And we plot it here, with coarser-resolution coastlines for comparison:

@example
fig = Figure()
+aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+
+ax1 = Axis(
+    fig[1,1],width=350,height=350/aspect,
+    title="Orographic Height",xlabel="Longitude / º",ylabel="Latitude / º",
+    limits=(minimum(slon)-0.1,maximum(slon)+0.1,minimum(slat)-0.1,maximum(slat)+0.1)
+)
+contourf!(
+    ax1,lsd.lon,lsd.lat,lsd.z,
+    levels=range(0,1500,length=16),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax1,clon,clat,color=:black,linewidth=2)
+lines!(ax1,slon,slat,linewidth=5)
+
+ax2 = Axis(
+    fig[1,2],width=350,height=350/aspect,
+    title="Land-Sea Mask",xlabel="Longitude / º",
+    limits=(minimum(slon)-0.1,maximum(slon)+0.1,minimum(slat)-0.1,maximum(slat)+0.1)
+)
+contourf!(
+    ax2,lsd.lon,lsd.lat,lsd.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax2,slon,slat,linewidth=5)
+
+resize_to_layout!(fig)
+fig

API

# GeoRegions.getLandSeaFunction.
julia
getLandSea(
+    geo  :: GeoRegion = GeoRegion("GLB");
+    path :: AbstractString = homedir(),
+    resolution :: Int = 60,
+    bedrock   :: Bool = false,
+    geoid     :: Bool = false,
+    returnlsd :: Bool = false,
+    savelsd   :: Bool = false,
+    smooth    :: Bool = false,
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100,
+    FT = Float32
+) -> LandSea

Retrieve ETOPO 2022 data for a GeoRegion from OPeNDAP servers

Arguments

  • geo : The GeoRegion of interest

Keyword Arguments

  • path :: The path to which an ETOPO folder is created within and ETOPO LandSea data saved into

  • resolution : The resolution of the dataset to be downloaded, in units of arc-seconds. Possible values are 15, 30 and 60, default is 60.

  • bedrock, geoid : The type of ETOPO data (bedrock, geoid, ice-surface) to be downloaded. Bedrock has priority over geoid, so if both are true, the bedrock is downloaded.

  • savelsd : Save LandSea dataset into a local NetCDF file.

  • returnlsd : If savelsd = true, you can choose to simply save the data into the NetCDF file, or load return it as a LandSea dataset. Otherwise, if savelsd = false, you always return the LandSea dataset.

  • smooth : If smooth = true, then you can smooth the land-sea mask using the Gaussian Filter of ImageFiltering.jl such that the coastline (i.e. the separation between land and ocean) becomes blurred.

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source


+ + + + \ No newline at end of file diff --git a/v6.0.0/landsea/intro.html b/v6.0.0/landsea/intro.html new file mode 100644 index 00000000..b4575ed6 --- /dev/null +++ b/v6.0.0/landsea/intro.html @@ -0,0 +1,25 @@ + + + + + + Land-Sea Mask Datasets | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Land-Sea Mask Datasets

Starting from v5, GeoRegions.jl now fully supports the retrieval of 30- and 60-arcsecond ETOPO orographic data, which includes the following options:

  • Topography that follows the ice-surface (surface)

  • Topography that follows the bedrock beneath the ice (bedrock)

  • Geoid data that converts the Topography into WTGS84 ellipsoid elevation heights

The AbstractLandSea SuperType

The data is loaded into a LandSea dataset struct-type, which is a subset of the supertype AbstractLandSea. We export this supertype, and its abstract subtypes LandSeaTopo and LandSeaFlat, so that other packages can extend the use of these abstract types with their own LandSea Types.

For examples of how to extend the functionality of the LandSea datasets, you may refer to the following examples:

# GeoRegions.AbstractLandSeaType.
julia
AbstractLandSea

Abstract supertype for LandSea Datasets, with the following subtypes:

LandSeaTopo <: AbstractLandSea
+LandSeaFlat <: AbstractLandSea

Both LandSeaTopo and LandSeaFlat types contain the following fields:

  • lon - Vector containing the longitude points for the Land-Sea Dataset

  • lat - Vector containing the latitude points for the Land-Sea Dataset

  • lsm - Array containing data regarding the Land-Sea Mask. 1 is Land, 0 is Ocean, NaN is outside the bounds of the GeoRegion

  • mask - Mask determining if point is within the GeoRegion or not. 1 is true, 0 is false.

A LandSeaTopo type will also contain the following field:

  • z - Array containing data regarding the Orographic Height in meters. NaN is outside the bounds of the GeoRegion

source


The LandSea Type for GeoRegions.jl

# GeoRegions.LandSeaType.
julia
GeoRegion.LandSea <: LandSeaTopo

Object containing information on the ETOPO 2022 Land Sea mask for a GeoRegion.

source


+ + + + \ No newline at end of file diff --git a/v6.0.0/landsea/smooth.html b/v6.0.0/landsea/smooth.html new file mode 100644 index 00000000..e0b44813 --- /dev/null +++ b/v6.0.0/landsea/smooth.html @@ -0,0 +1,123 @@ + + + + + + Smoothing of the Land-Sea Mask Dataset | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Smoothing of the Land-Sea Mask Dataset

The land-sea mask created from the ETOPO dataset comprises of 1s and 0s, where 1 denotes land and 0 denotes the ocean. However, it may often be useful to sort grid points not only by their land-surface type, but how distant they are from the coastline. GeoRegions.jl uses Gaussian Filtering from ImageFiltering.jl to perform a smoothing of the land-sea mask.

The degree of smoothing is expressed by the arguments σlon and σlat, which are integer inputs respectively.

You can get a smoothed land-sea mask via two means:

  1. Calling the smoothing directly when retrieving the Land-Sea Dataset (recommended)

  2. Smoothing a preexisting Land-Sea Dataset that has been loaded (not recommended)

The API for smoothing is listed below. However, it is worth nothing that when implementing the smoothing, you need to first call a larger GeoRegion around the GeoRegion of interest as a buffer.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resh.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Example comparison between Smooth and Unsmoothed Masks

@example
geo = RectRegion("ACH","GLB","Aceh",[7,2,99,94],savegeo=false)
+lsd_raw = getLandSea(geo,savelsd=false)
+lsd_σ05 = getLandSea(geo,savelsd=false,smooth=true,σlon=5,σlat=5)
+lsd_σ10 = getLandSea(geo,savelsd=false,smooth=true,σlon=10,σlat=10)
@example
fig = Figure()
+
+ax1 = Axis(
+    fig[1,1],width=225,height=225,
+    title="Raw Land-Sea Mask",xlabel="Longitude / º",ylabel="Latitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax1,lsd_raw.lon,lsd_raw.lat,lsd_raw.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax1,clon,clat,color=:black,linewidth=2)
+
+ax2 = Axis(
+    fig[1,2],width=225,height=225,
+    title="Smoothed (σ=5)",xlabel="Longitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax2,lsd_σ05.lon,lsd_σ05.lat,lsd_σ05.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax2,clon,clat,color=:black,linewidth=2)
+
+ax3 = Axis(
+    fig[1,3],width=225,height=225,
+    title="Smoothed (σ=10)",xlabel="Longitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax3,lsd_σ10.lon,lsd_σ10.lat,lsd_σ10.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax3,clon,clat,color=:black,linewidth=2)
+
+resize_to_layout!(fig)
+fig

Smoothing Directly from a loaded Land-Sea Mask

@example
smooth!(lsd_raw,σlon=5,σlat=5)
@example
f2 = Figure()
+
+ax1 = Axis(
+    f2[1,1],width=350,height=350,
+    title="Smoothed from Global",xlabel="Longitude / º",ylabel="Latitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax1,lsd_σ05.lon,lsd_σ05.lat,lsd_σ05.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax1,clon,clat,color=:black,linewidth=2)
+
+ax2 = Axis(
+    f2[1,2],width=350,height=350,
+    title="Directly Smoothed",xlabel="Longitude / º",
+    limits=(93.9,99.1,1.9,7.1)
+)
+contourf!(
+    ax2,lsd_raw.lon,lsd_raw.lat,lsd_raw.lsm,
+    levels=range(0.05,0.95,length=19),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax2,clon,clat,color=:black,linewidth=2)
+
+resize_to_layout!(f2)
+f2

You see here that smoothing the land-sea mask directly upon itself causes errors at the edges of the grid. This is because the smoothing applied is a circular smoothing, meaning that the boundaries are considered to be doubly-periodic, and thus bleed into each other. Thus, it is always best practice to call the smoothing directly when retrieving the Land-Sea dataset.

API

# GeoRegions.smooth!Function.
julia
smooth!(
+    lsd  :: LandSeaTopo;
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100,
+    topography :: Bool = false
+) --> nothing

Perform a gaussian smoothing on the Land-Sea mask given a LandSeaTopo Mask dataset. If usetopography is set to true, then before the filtering, any points where height >= 0 is set to 1, and <0 is set = 0.

The smoothed land-sea mask will be saved into lsd.lsm

Arguments

  • lsd : A Land-Sea Dataset with Topography

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

  • topography : If true, then the land-sea mask that is smoothed will be based on the topography instead of the raw ERA5 land-sea mask

source

julia
smooth!(
+    lsd  :: LandSeaFlat;
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100
+) --> nothing

Perform a gaussian smoothing on the Land-Sea mask given a LandSeaFlat Mask dataset.

The smoothed land-sea mask will be saved into lsd.lsm

Arguments

  • lsd : A Land-Sea Dataset without Topography

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source

julia
smooth!(
+    lsm  :: Array{<:Real,2};
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100
+) --> nothing

Perform a gaussian smoothing on the Land-Sea mask.

The smoothed land-sea mask will be saved into lsm.

Arguments

  • lsm : A Land-Sea Mask

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source

julia
smooth!(
+    lsm  :: Array{<:Real,2},
+    oro  :: Array{<:Real,2};
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100
+) --> nothing

Perform a gaussian smoothing on the Land-Sea mask given a corresponding topographic dataset.

The smoothed land-sea mask will be saved into lsm.

Arguments

  • olsm : The old Land-Sea Mask

  • oro : A topographic dataset that the smoothing will be based off

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source


# GeoRegions.smoothlsmFunction.
julia
smoothlsm(
+    oro  :: Array{<:Real,2};
+    σlon :: Int = 0,
+    σlat :: Int = 0,
+    iterations :: Int = 100
+) --> Array{<:Real,2}

Perform a gaussian smoothing on the Land-Sea mask

Arguments

  • oro : A topographic dataset that the smoothing will be based off

Keyword Arguments

  • σlon : Smooth in the longitude direction (every increase of 1 in σlon roughly corresponds to 8 pixels)

  • σlat : Smooth in the latitude direction (every increase of 1 in σlat roughly corresponds to 8 pixels)

  • iterations : Iterations of gausssian smoothing, the higher, the closer the smoothing follows a semi-log. 50-100 iterations is generally enough.

source


+ + + + \ No newline at end of file diff --git a/v6.0.0/lists/api.html b/v6.0.0/lists/api.html new file mode 100644 index 00000000..b4ffc04b --- /dev/null +++ b/v6.0.0/lists/api.html @@ -0,0 +1,46 @@ + + + + + + Tabular Listings of GeoRegions | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Tabular Listings of GeoRegions

A list of GeoRegions and their basic properties can be called using the function tableGeoRegions(), which lists all available GeoRegions, both predefined and custom/user-defined.

julia
julia> using GeoRegions
+
+julia> resetGeoRegions(allfiles=true)
+ERROR: MethodError: no method matching resetGeoRegions(; allfiles::Bool)
+
+Closest candidates are:
+  resetGeoRegions(; path, all) got unsupported keyword argument "allfiles"
+   @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:243
+
+julia> tableGeoRegions(onlycustom=true)
+ ----- ------------ ----------------------- -------- --------------
+  ID       Type      Name                    Parent       File
+ ----- ------------ ----------------------- -------- --------------
+  GLB   RectRegion   Globe                    GLB     rectlist.txt
+  TPL   PolyRegion   Test Polygonal Region    GLB     polylist.txt
+ ----- ------------ ----------------------- -------- --------------
# GeoRegions.tableGeoRegionsMethod.
julia
tableGeoRegions(; onlycustom::Bool) -> nothing

Display all available GeoRegions in tabular format.

Keyword Arguments

  • onlycustom : If true, only custom, user-defined GeoRegions will be displayed. To show all available GeoRegions (including predefined GeoRegions), set onlycustom to false

source


More specific lists of GeoRegions

Besides listing all available GeoRegions, it is also possible to list a variety of different specifications of GeoRegions with the tableGeoRegions() function, as well as tableRectRegions() and tablePolyRegions().

# GeoRegions.tableRectRegionsFunction.
julia
tableRectRegions(;
+    custom :: Bool = true,
+    giorgi :: Bool = false
+) -> nothing

Display all available RectRegions in tabular format.

Keyword Arguments

  • custom : If true, display custom user-defined GeoRegions. Default is true

  • giorgi : If true, display Giorgi predefined GeoRegions. Default is false

source


# GeoRegions.tablePolyRegionsFunction.
julia
tablePolyRegions(;
+    custom :: Bool = true,
+    srex :: Bool = false,
+    ar6  :: Bool = false
+) -> nothing

Display all available PolyRegions in tabular format.

Keyword Arguments

  • custom : If true, display custom user-defined GeoRegions. Default is true

  • srex : If true, display SREX predefined GeoRegions. Default is false

  • ar6 : If true, display IPCC AR6 predefined GeoRegions. Default is false

source


Listing GeoRegions inside a Custom File

Similarly, it is also possible to list the GeoRegions in custom files. The template for these files can be retrieved using the function templateGeoRegions()

# GeoRegions.tableGeoRegionsMethod.
julia
tableGeoRegions(fname::AbstractString) -> nothing

Display all available GeoRegions in tabular format.

Keyword Arguments

  • onlycustom : If true, only custom, user-defined GeoRegions will be displayed. To show all available GeoRegions (including predefined GeoRegions), set onlycustom to false

source


+ + + + \ No newline at end of file diff --git a/v6.0.0/lists/default.html b/v6.0.0/lists/default.html new file mode 100644 index 00000000..41333fe7 --- /dev/null +++ b/v6.0.0/lists/default.html @@ -0,0 +1,26 @@ + + + + + + Default List of All Predefined GeoRegions | GeoRegions.jl + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/v6.0.0/logo.png b/v6.0.0/logo.png new file mode 100644 index 00000000..aedcec16 Binary files /dev/null and b/v6.0.0/logo.png differ diff --git a/v6.0.0/regiongrids/create.html b/v6.0.0/regiongrids/create.html new file mode 100644 index 00000000..5f9253a2 --- /dev/null +++ b/v6.0.0/regiongrids/create.html @@ -0,0 +1,97 @@ + + + + + + RegionGrid: Applying GeoRegions to Gridded Data | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

RegionGrid: Applying GeoRegions to Gridded Data

In this section, we go through the basic steps of creating a RegionGrid for RectRegions and PolyRegions. See if you can spot the differences between the RegionGrids generated by the two different types.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

RectGrid Example

julia
geo  = GeoRegion("GF_SSA")
+lon  = -180:5:180
+lat  = -90:5:90
+ggrd = RegionGrid(geo,lon[1:(end-1)],lat)
The Rectilinear Grid has the following properties:
+    Grid Bounds       (grid) : [15, 7, 29, 21]
+    Longitude Indices (ilon) : [21, 22, 23, 24, 25, 26, 27, 28, 29]
+    Latitude Indices  (ilat) : [7, 8, 9, 10, 11, 12, 13, 14, 15]
+    Longitude Points   (lon) : [280, 285, 290, 295, 300, 305, 310, 315, 320]
+    Latitude Points    (lat) : [-60, -55, -50, -45, -40, -35, -30, -25, -20]
+    Region Size (nlon * nlat) : 9 lon points x 9 lat points

PolyGrid Example

julia
geo  = GeoRegion("AR6_NWS")
+lon  = -180:2:180;
+lat  = -90:2:90;
+ggrd = RegionGrid(geo,lon[1:(end-1)],lat)
The Polygonal Grid has the following properties:
+    Grid Bounds       (grid) : [52, 39, 55, 50]
+    Longitude Indices (ilon) : [50, 51, 52, 53, 54, 55]
+    Latitude Indices  (ilat) : [39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52]
+    Longitude Points   (lon) : [-82.0, -80.0, -78.0, -76.0, -74.0, -72.0]
+    Latitude Points    (lat) : [-14.0, -12.0, -10.0, -8.0, -6.0, -4.0, -2.0, 0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 12.0]
+    Region Size (nlon * nlat) : 6 lon points x 14 lat points
+    Region Mask (sum(mask) / (nlon * nlat)) : 70 / 84

So here, we see that in this PolyGrid example, the RegionGrid contains an additional field mask that, within the rectilinear longitude-latitude shape bounding the GeoRegion (because gridded data here is assumed to be rectilinear), the data is within the GeoRegion. Values of 1 indicate it is within the GeoRegion, otherwise the values are `NaN.

julia
ggrd.mask
6×14 Matrix{Float64}:
+ NaN    NaN    1.0  1.0  1.0  1.0  1.0  …  NaN    NaN    NaN    NaN    NaN
+ NaN      1.0  1.0  1.0  1.0  1.0  1.0       1.0    1.0  NaN    NaN    NaN
+   1.0    1.0  1.0  1.0  1.0  1.0  1.0       1.0    1.0    1.0  NaN    NaN
+   1.0    1.0  1.0  1.0  1.0  1.0  1.0       1.0    1.0    1.0    1.0  NaN
+   1.0    1.0  1.0  1.0  1.0  1.0  1.0       1.0    1.0    1.0    1.0    1.0
+   1.0    1.0  1.0  1.0  1.0  1.0  1.0  …    1.0    1.0    1.0    1.0    1.0

The Mask of a PolyGrid

The PolyGrid type derived from a PolyRegion allows us to apply a mask to filter out data that is within the shape of a PolyRegion on a rectilinear lon-lat grid defined by the bound of a PolyRegion. We consider the following example of an AR6 region over South Asia:

julia
geo  = GeoRegion("AR6_SAS")
+lon  = -180:5:180;
+lat  = -90:2:90;
+ggrd = RegionGrid(geo,lon[1:(end-1)],lat)
The Polygonal Grid has the following properties:
+    Grid Bounds       (grid) : [61, 50, 57, 49]
+    Longitude Indices (ilon) : [49, 50, 51, 52, 53, 54, 55, 56, 57]
+    Latitude Indices  (ilat) : [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61]
+    Longitude Points   (lon) : [60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0]
+    Latitude Points    (lat) : [8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0]
+    Region Size (nlon * nlat) : 9 lon points x 12 lat points
+    Region Mask (sum(mask) / (nlon * nlat)) : 55 / 108

And using the field mask, we plot the points that are in the region (blue), and out of the region (red).

@example
mask = ggrd.mask
+grid = ones(size(mask))
+inlon = grid .* ggrd.lon;  inlon = inlon[.!isnan.(mask)]
+inlat = grid .* ggrd.lat'; inlat = inlat[.!isnan.(mask)]
+otlon = grid .* ggrd.lon;  otlon = otlon[isnan.(mask)]
+otlat = grid .* ggrd.lat'; otlat = otlat[isnan.(mask)]
+blon,blat,slon,slat = coordGeoRegion(geo)
+
+fig = Figure()
+aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+ax = Axis(
+    fig[1,1],width=750,height=750/aspect,
+    limits=(minimum(slon)-2,maximum(slon)+2,minimum(slat)-2,maximum(slat)+2)
+)
+
+lines!(ax,clon,clat,color=:black)
+lines!(ax,blon,blat)
+lines!(ax,slon,slat)
+scatter!(ax,otlon,otlat)
+scatter!(ax,inlon,inlat)
+
+resize_to_layout!(fig)
+fig

API

# GeoRegions.RegionGridMethod.
julia
RegionGrid(
+    geo :: GeoRegion,
+    lon :: Union{Vector{<:Real},AbstractRange{<:Real},
+    lat :: Union{Vector{<:Real},AbstractRange{<:Real}
+) -> RectGrid, PolyGrid

Creates a RectGrid or PolyGrid type based on the following arguments. This method is suitable for rectilinear grids of longitude/latitude output such as from Isca, or from satellite and reanalysis gridded datasets.

Arguments

  • geo : A GeoRegion of interest

  • lon : A vector or AbstractRange containing the longitude points

  • lat : A vector or AbstractRange containing the latitude points

source


# GeoRegions.RegionGridMethod.
julia
RegionGrid(
+    geo :: GeoRegion,
+    lon :: Array{<:Real,2},
+    lat :: Array{<:Real,2}
+) -> RegionGrid

Creates a RegionMask type based on the following arguments. This method is more suitable for non-rectilinear grids of longitude and latitude points, such as in the output of WRF or CESM.

Arguments

  • geo : A GeoRegion of interest

  • lon : An array containing the longitude points

  • lat : An array containing the latitude points

source



This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/v6.0.0/regiongrids/intro.html b/v6.0.0/regiongrids/intro.html new file mode 100644 index 00000000..88d8d5d0 --- /dev/null +++ b/v6.0.0/regiongrids/intro.html @@ -0,0 +1,26 @@ + + + + + + What is a RegionGrid? | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

What is a RegionGrid?

But how do we go from defining a GeoRegion, to extracting data for that GeoRegion? The answer is with the information in the RegionGrid types, which maps gridded lon-lat data to a given GeoRegion as follows:

  • Mapping gridded lon-lat data to a RectRegion gives a RectGrid structure

  • Mapping gridded lon-lat data to a PolyRegion gives a PolyGrid structure

  • Mapping non-rectilinear gridded lon-lat data to a RegionMask gives a RegionMask structure

However, the basic uses of RectGrid and PolyGrid are the same, and as such their differences are largely transparent to the user, except for one field found in PolyGrid, the mask, which will be elaborated upon later.

# GeoRegions.RegionGridType.
julia
RegionGrid

Abstract supertype for geographical region gridded information, with the following subtypes:

RectGrid{FT<:Real} <: RegionGrid
+PolyGrid{FT<:Real} <: RegionGrid
+RegionMask{FT<:Real} <: RegionGrid

Both RectGrid and PolyGrid types contain the following fields:

  • grid - A vector of Ints defining the gridpoint indices of the [N,S,E,W] points respectively

  • lon - A vector of Floats defining the latitude vector describing the region

  • lat - A vector of Floats defining the latitude vector describing the region

  • ilon - A vector of Ints defining indices of the parent longitude vector describing the region

  • ilat - A vector of Ints defining indices of the parent latitude vector describing the region

A PolyGrid type will also contain the following field:

  • mask - An array of 0s and 1s defining a non-rectilinear shape within a rectilinear grid where data is valid (only available in PolyGrid types)

A RegionMask type will contain the following fields:

  • lon - An array of longitude points

  • lat - An array of latitude points

  • mask - An array of NaNs and 1s defining the region within the original field in which data points are valid

source


So basically a RegionGrid contains information on the indices of the gridded data that are part of the GeoRegion, thus helping us extract the relevant data for a given GeoRegion.

+ + + + \ No newline at end of file diff --git a/v6.0.0/siteinfo.js b/v6.0.0/siteinfo.js new file mode 100644 index 00000000..7b4a2e3b --- /dev/null +++ b/v6.0.0/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "v6.0.0"; diff --git a/v6.0.0/using/custom.html b/v6.0.0/using/custom.html new file mode 100644 index 00000000..5f6ee037 --- /dev/null +++ b/v6.0.0/using/custom.html @@ -0,0 +1,36 @@ + + + + + + Adding GeoRegions from Templates | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Adding GeoRegions from Templates

So you have a list of areas that you want to define, but you don't want to enter them in one by one. What to do?### Setup

julia
using GeoRegions

Template GeoRegion Files

Fear not! I have template files that one can use to define RectRegions and PolyRegions. Simply use the templateGeoRegion() to copy the templates into a directory of your choice.

Defining PolyRegions

When defining PolyRegions, the first and last set of (lon,lat) coordinates must be the same (i.e. a closed polygon must be defined)

julia
templateGeoRegion("your-file-path-here")
# GeoRegions.templateGeoRegionsFunction.
julia
templateGeoRegions(; path::AbstractString, overwrite::Bool=false)

Copies the template files for defining GeoRegions in textfiles, that can then be added as a batch using addGeoRegions()

Keyword Arguments

  • path : The folder to copy the files to

  • overwrite : If template files exist in this folder, overwrite?

source


Reading in GeoRegions from a custom file

We can then read in GeoRegions from your custom file using the function addGeoRegions(), which will then read all the GeoRegion information in the file and add it to the list of GeoRegions.

julia
addGeoRegions("recttest.txt")
+GeoRegion("TRP")
The Rectilinear Region TRP has the following properties:
+    Region ID    (ID) : TRP
+    Parent ID   (pID) : GLB
+    Name       (name) : Tropical
+    Bounds  (N,S,E,W) : [30.0, -30.0, 360.0, 0.0]
+        (is180,is360) : (false, true)
# GeoRegions.addGeoRegionsFunction.
julia
addGeoRegions(fname::AbstractString)

Extracts information of the GeoRegion with the ID geoID. If no GeoRegion with this ID exists, an error is thrown.

Arguments

  • fname : name + path of the file containing GeoRegion information

source


Reset the list of GeoRegions

Should one wish to entirely reset the list of GeoRegions, one can call resetGeoRegions():

julia
resetGeoRegions()
[ Info: 2024-08-08T01:51:58.735 - GeoRegions.jl - Resetting the custom lists of GeoRegions back to the default
+┌ Warning: 2024-08-08T01:51:58.735 - GeoRegions.jl - Overwriting /home/runner/.julia/files/GeoRegions/rectlist.txt with original file in /home/runner/work/GeoRegions.jl/GeoRegions.jl/src/georegions/../../extra/rectlist.txt ...
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:473
+┌ Warning: 2024-08-08T01:51:58.740 - GeoRegions.jl - Overwriting /home/runner/.julia/files/GeoRegions/polylist.txt with original file in /home/runner/work/GeoRegions.jl/GeoRegions.jl/src/georegions/../../extra/polylist.txt ...
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:473
+┌ Warning: 2024-08-08T01:51:58.740 - GeoRegions.jl - Overwriting /home/runner/.julia/files/GeoRegions/tiltlist.txt with original file in /home/runner/work/GeoRegions.jl/GeoRegions.jl/src/georegions/../../extra/tiltlist.txt ...
+└ @ GeoRegions ~/work/GeoRegions.jl/GeoRegions.jl/src/georegions/read.jl:473

And if one wishes to reset the predefined list of GeoRegions, we can do:

@example
resetGeoRegions(allfiles=true)
# GeoRegions.resetGeoRegionsFunction.
julia
resetGeoRegions(; allfiles::Bool = false)

Reset all the files containing GeoRegion information back to the default.

Arguments

  • allfiles : If true, reset the GeoRegions defined in Giorgi & Francisco [2000], AR6 Regions (Iturbide et al., 2020; ESSD) and Seneviratne et al. [2012] as well. If false, only reset the custom GeoRegions.

source



This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/v6.0.0/using/extract.html b/v6.0.0/using/extract.html new file mode 100644 index 00000000..6fd42b06 --- /dev/null +++ b/v6.0.0/using/extract.html @@ -0,0 +1,123 @@ + + + + + + Extracting Gridded Data using RegionGrid | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Extracting Gridded Data using RegionGrid

Suppose we have Global Data. However, we are only interested in a specific region (say, the North Central American region as defined in AR6), how do we extract data for this region?

The simple answer is, we use the extractGrid() function, which takes in a RegionGrid and a data array, and returns a new data array for the GeoRegion.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Let us define the GeoRegion of interest

julia
geo  = GeoRegion("AR6_NCA")
The Polygonal Region AR6_NCA has the following properties:
+    Region ID    (ID) : AR6_NCA
+    Parent ID   (pID) : GLB
+    Name       (name) : Northern Central America
+    Bounds  (N,S,E,W) : [33.8, 16.0, -90.0, -122.5]
+    Shape     (shape) : Point{2, Float64}[[-90.0, 25.0], [-104.5, 16.0], [-122.5, 33.8], [-105.0, 33.8], [-90.0, 25.0]]
+        (is180,is360) : (true, false)

We also define some sample test data in the global domain

julia
lon = collect(0:360); pop!(lon); nlon = length(lon)
+lat = collect(-90:90);           nlat = length(lat)
+odata = randn((nlon,nlat))
360×181 Matrix{Float64}:
+ -1.51976    -1.06822    -0.278088  …   0.59697   -0.20973    -0.745463
+ -0.403299   -0.896384    0.816051     -1.89436   -1.65855    -0.332974
+ -1.81926    -0.213213   -0.81391      -0.183246  -0.918719    1.49813
+  0.583592   -0.172523   -0.422288      0.18205   -0.983444    0.744753
+ -0.504937    0.280976   -0.630778      0.408336   1.40066    -0.799867
+  0.558553    0.910825   -0.288495  …   0.139085  -0.144804   -0.240572
+  1.44393    -0.0255517  -1.55021       0.893512   0.393987   -2.50504
+  0.0978337   0.16897    -1.7596        0.878473  -0.348726    0.1108
+ -0.332354    0.560503   -1.45781      -0.591802  -0.715092   -0.0256041
+ -0.622193   -0.439036   -1.95156      -0.61665    1.3697     -1.58663
+  ⋮                                 ⋱                          ⋮
+ -0.0786834   2.13953    -0.640613      0.394866   0.0252424   0.541481
+  0.299301    2.6579      2.18695       0.240713  -0.654727    0.110688
+ -0.73747     1.14662     1.59476       1.17603    0.787565    1.05738
+  1.33979    -0.554504   -0.98539      -1.00126   -0.932451    1.1819
+  0.150993   -1.30876    -0.129291  …  -1.58184   -1.79163     0.316504
+  0.123113   -0.641158   -0.400491      1.7714    -0.0163741  -0.620367
+ -0.371605    0.338166   -0.210448      0.47999   -0.626191   -0.513311
+ -0.74809     1.05948    -1.17533      -1.04159    0.753299    0.188394
+  0.451286   -0.776093    0.011729      1.25357   -0.671143   -0.195252

Our next step is to define the RegionGrid based on the longitude and latitude vectors and their intersection with the GeoRegion

julia
ggrd = RegionGrid(geo,lon,lat)
The Polygonal Grid has the following properties:
+    Grid Bounds       (grid) : [124, 107, 271, 239]
+    Longitude Indices (ilon) : [239, 240, 241, 242, 243, 244, 245, 246, 247, 248  …  262, 263, 264, 265, 266, 267, 268, 269, 270, 271]
+    Latitude Indices  (ilat) : [107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124]
+    Longitude Points   (lon) : [-122.0, -121.0, -120.0, -119.0, -118.0, -117.0, -116.0, -115.0, -114.0, -113.0  …  -99.0, -98.0, -97.0, -96.0, -95.0, -94.0, -93.0, -92.0, -91.0, -90.0]
+    Latitude Points    (lat) : [16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0]
+    Region Size (nlon * nlat) : 33 lon points x 18 lat points
+    Region Mask (sum(mask) / (nlon * nlat)) : 281 / 594

Then we extract the data

julia
ndata = extractGrid(odata,ggrd)
33×18 Matrix{Float64}:
+ NaN  NaN  NaN  NaN  NaN  NaN         …  NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN            0.265381
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN          -0.224422     0.567931
+ NaN  NaN  NaN  NaN  NaN  NaN              1.67151     0.0993618    0.778459
+ NaN  NaN  NaN  NaN  NaN  NaN              0.163252   -0.644675    -1.14833
+ NaN  NaN  NaN  NaN  NaN  NaN         …   -1.43777     0.514898     0.791617
+ NaN  NaN  NaN  NaN  NaN  NaN             -0.702647    0.32758     -0.726071
+ NaN  NaN  NaN  NaN  NaN  NaN             -0.379183    1.83802      0.239722
+ NaN  NaN  NaN  NaN  NaN  NaN              0.347784    0.0311085   -0.482691
+ NaN  NaN  NaN  NaN  NaN  NaN             -0.588135    2.95287      0.680521
+   ⋮                        ⋮         ⋱    ⋮                      
+ NaN  NaN  NaN  NaN  NaN    0.554907     NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN    1.17125   …  NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN         …  NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN
+ NaN  NaN  NaN  NaN  NaN  NaN            NaN         NaN          NaN

Let us plot the old and new data

@example
fig = Figure()
+_,_,slon,slat = coordGeoRegion(geo); slon = slon
+aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+
+ax = Axis(
+    fig[1,1],width=350,height=350/aspect,
+    limits=(minimum(slon)-2+360,maximum(slon)+2+360,minimum(slat)-2,maximum(slat)+2)
+)
+contourf!(
+    ax,lon,lat,odata,
+    levels=range(-1,1,length=11),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax,clon,clat,color=:black)
+lines!(ax,slon.+360,slat.+360,color=:red,linewidth=5)
+
+ax = Axis(
+    fig[1,2],width=350,height=350/aspect,
+    limits=(minimum(slon)-2,maximum(slon)+2,minimum(slat)-2,maximum(slat)+2)
+)
+contourf!(
+    ax,ggrd.lon,ggrd.lat,ndata,
+    levels=range(-1,1,length=11),extendlow=:auto,extendhigh=:auto
+)
+lines!(ax,clon,clat,color=:black)
+lines!(ax,slon,slat,color=:red,linewidth=5)
+
+hideydecorations!(ax, ticks = false,grid=false)
+
+resize_to_layout!(fig)
+fig

API

# GeoRegions.extractGridFunction.
julia
extractGrid(
+    odata :: AbstractArray{<:Real,N},
+    ggrd  :: RegionGrid
+) where N <: Int -> Array{<:Real,N}

Extracts data from odata, an Array of dimension N (where N ∈ 2,3,4) that contains data of a Parent GeoRegion, into another Array of dimension N, containing only within a sub GeoRegion we are interested in.

Warning

Please ensure that the 1st dimension is longitude and 2nd dimension is latitude before proceeding. The order of the 3rd and 4th dimensions (when used), however, is not significant.

Arguments

  • odata : An array of dimension N containing gridded data in the region we are interesting in extracting from

  • ggrd : A RegionGrid containing detailed information on what to extract

source


# GeoRegions.extractGrid!Function.
julia
extractGrid!(
+    odata :: AbstractArray{<:Real,N},
+    ndata :: AbstractArray{<:Real,N},
+    ggrd  :: RegionGrid
+) where N <: Int -> nothing

Extracts data from odata, an Array of dimension N (where N ∈ 2,3,4) that contains data of a Parent GeoRegion, into ndata, another Array of dimension N, containing only within a sub GeoRegion we are interested in.

This allows for iterable in-place modification to save memory space and reduce allocations if the dimensions are fixed.

Warning

Please ensure that the 1st dimension is longitude and 2nd dimension is latitude before proceeding. The order of the 3rd and 4th dimensions (when used), however, is not significant.

Arguments

  • odata : An array of dimension N containing gridded data in the region we are interesting in extracting from

  • ndata : An array of dimension N meant as a placeholder for the extracted data to minimize allocations

  • ggrd : A RegionGrid containing detailed information on what to extract

source



This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/v6.0.0/using/isin.html b/v6.0.0/using/isin.html new file mode 100644 index 00000000..5b8390bc --- /dev/null +++ b/v6.0.0/using/isin.html @@ -0,0 +1,127 @@ + + + + + + Is it in a GeoRegion? | GeoRegions.jl + + + + + + + + + + + + + +
Skip to content

Is it in a GeoRegion?

When dealing with geographic data, we often wish to check if a point or region is inside another region. GeoRegions.jl allows you to perform this check easily with the function isinGeoRegion.

Point Type

We use the Point2 Type from the package GeometryBasics.jl, which is reexported by GeoRegions.jl, as an easy way to denote points. This also allows us to use the package PolygonOps.jl to determine if a point is inside a region.

Setup

julia
using GeoRegions
+using DelimitedFiles
+using CairoMakie
+
+download("https://raw.githubusercontent.com/natgeo-wong/GeoPlottingData/main/coastline_resl.txt","coast.cst")
+coast = readdlm("coast.cst",comments=true)
+clon  = coast[:,1]
+clat  = coast[:,2]
+nothing

Is a Point in a GeoRegion?

As an example, let us test if a point is in GeoRegion AR6_EAO, defined in the blue bounding box below. We define the below points:

  • Point A at coordinates (-20,5)

  • Point B at coordinates (340,5)

  • Point C at coordinates (30,15)

julia
A = Point2(-20,5)
+B = Point2(340,5)
+C = Point2(-45,-7.5)
+geo = GeoRegion("AR6_EAO")
The Polygonal Region AR6_EAO has the following properties:
+    Region ID    (ID) : AR6_EAO
+    Parent ID   (pID) : GLB
+    Name       (name) : Equatorial Atlantic Ocean
+    Bounds  (N,S,E,W) : [7.6, -10.0, 8.0, -50.0]
+    Shape     (shape) : Point{2, Float64}[[-34.0, -10.0], [-34.0, 0.0], [-50.0, 0.0], [-50.0, 7.6], [-20.0, 7.6], [8.0, 0.0], [8.0, -10.0], [-34.0, -10.0]]
+        (is180,is360) : (true, false)

Here, we note that the coordinates of the GeoRegion (Equatorial Atlantic Ocean) are given in the bounds of (-180,180). It is trivial in this case to calculate if points A and C are within the bounds of the GeoRegion.

@example
_,_,slon,slat = coordGeoRegion(geo)
+aspect = (maximum(slon)-minimum(slon))/(maximum(slat)-minimum(slat))
+fig = Figure()
+ax = Axis(
+    fig[1,1],width=750,height=750/aspect,
+    limits=(minimum(slon)-2,maximum(slon)+2,minimum(slat)-2,maximum(slat)+2)
+)
+lines!(ax,clon,clat,color=:black,linewidth=3)
+lines!(ax,slon,slat,linewidth=5)
+scatter!(ax,A,markersize=20)
+scatter!(ax,C,markersize=20)
+resize_to_layout!(fig)
+fig

By eye it is easy to see that Point A is inside the GeoRegion. However, C is not. Let us now see if we are able to corroborate this with GeoRegions.jl using the function isinGeoRegion()

julia
(
+    isinGeoRegion(A,geo,throw=false), # Point A
+    isinGeoRegion(C,geo,throw=false) # Point C
+)
(true, false)

But what about Point B? Point B is also very obvious within the bounds of the GeoRegion, it is simply that the longitude of Point A is shifted by 360º such that it is now in the (0,360) coordinates frame. We see that this is of no concern to GeoRegions.jl, which can detect that it is within the bounds of the GeoRegion anyway.

julia
isinGeoRegion(B,geo,throw=false)
true

Is a GeoRegion inside a GeoRegion?

Since any arbitrary geographic region can be defined as a GeoRegion, the natural extension now is to determine if a GeoRegion is wholly within another GeoRegion.

Let us consider an arbitrary GeoRegion BIG, and other smaller GeoRegions TS1-4 as defined below, and plot them on a map.

@example
geo_BIG = PolyRegion(
+    "BIG","GLB","A Big Region",
+    [-120,-100,-100,-80,-30,15,45,75,90,115,120,105,85,45,20,-5,-45,-80,-120],
+    [0,10,30,50,40,50,55,44,32,30,12,8,5,0,-10,-30,-40,-43,0]
+)
+geo_TS1 = RectRegion("TS1","GLB","Test Region 1",[45,20,20,-70])
+geo_TS2 = PolyRegion("TS2","GLB","Test Region 2",[60,90,110,90,60],[20,25,20,15,20])
+geo_TS3 = PolyRegion(
+    "TS3","GLB","Test Region 3",
+    [-110,-98,-95,-90,-80,-100,-110,-110],
+    [0,10,20,15,5,0,-20,0]
+)
+geo_TS4 = PolyRegion(
+    "TS4","GLB","Test Region 4",
+    [300,325,330,355,330,325,320,300],
+    [-10,-5,0,-10,-30,-35,-20,-10]
+)
+
+blon_b,blat_b,slon_b,slat_b = coordGeoRegion(geo_BIG)
+              slon_1,slat_1 = coordGeoRegion(geo_TS1)
+blon_2,blat_2,slon_2,slat_2 = coordGeoRegion(geo_TS2)
+blon_3,blat_3,slon_3,slat_3 = coordGeoRegion(geo_TS3)
+blon_4,blat_4,slon_4,slat_4 = coordGeoRegion(geo_TS4)
+
+fig = Figure()
+
+ax = Axis(
+    fig[1,1],width=750,height=750/2,
+    limits=(-180,180,-90,90)
+)
+
+lines!(ax,clon,clat,color=:black,linewidth=3)
+lines!(ax,blon_b,blat_b,linewidth=5,color=:blue,linestyle=:dot)
+lines!(ax,slon_b,slat_b,linewidth=5,color=:blue)
+lines!(ax,slon_1,slat_1,linewidth=5,color=:red)
+lines!(ax,blon_2,blat_2,linewidth=5,color=:green,linestyle=:dot)
+lines!(ax,slon_2,slat_2,linewidth=5,color=:green)
+lines!(ax,blon_3,blat_3,linewidth=5,color=:red,linestyle=:dot)
+lines!(ax,slon_3,slat_3,linewidth=5,color=:red)
+lines!(ax,blon_4.-360,blat_4,linewidth=5,color=:green,linestyle=:dot)
+lines!(ax,slon_4.-360,slat_4,linewidth=5,color=:green)
+
+resize_to_layout!(fig)
+fig

We see by eye that GeoRegion TS2 and TS4 are in the BIG region, but the other GeoRegions are not. Now let us verify this with isinGeoRegion()

julia
(
+    isinGeoRegion(geo_TS1,geo_BIG,throw=false),
+    isinGeoRegion(geo_TS2,geo_BIG,throw=false),
+    isinGeoRegion(geo_TS3,geo_BIG,throw=false),
+    isinGeoRegion(geo_TS4,geo_BIG,throw=false)
+)
(false, true, false, true)

And we see that this is indeed the case.

API

# Base.inMethod.
julia
in(
+    Point  :: Point2{<:Real},
+    geo    :: GeoRegion;
+    tlon   :: Real = 0,
+    tlat   :: Real = 0,
+    throw  :: Bool = false
+) -> Bool

Check if a geographical point point is within a GeoRegion defined by geo.

source


# Base.inMethod.
julia
in(
+    Child  :: GeoRegion,
+    rectG  :: RectRegion;
+    throw  :: Bool = false
+) -> Bool

Check if a child GeoRegion defined by Child is within a RectRegion rectG.

Arguments

  • Child : A GeoRegion that we postulate to be a "child", or a subset of the GeoRegion defined by polyG

  • rectG : A GeoRegion that we postulate to be a "parent", or containing the GeoRegion defined by Child

Keyword Arguments

  • throw : If true, then if Child is not within polyG, an error is thrown and the program stops running

source


# Base.inMethod.
julia
in(
+    cgeo  :: GeoRegion,
+    geo   :: Union{TiltRegion,PolyRegion};
+    n     :: Int = 100,
+    throw :: Bool = false
+) -> Bool

Check if a child GeoRegion defined by cgeo is within a TiltRegion or PolyRegion geo.

Arguments

  • cgeo : A GeoRegion that we postulate to be a "child", or a subset of the GeoRegion defined by polyG

  • geo : A TiltRegion or PolyRegion that we postulate to be a "parent", or containing the GeoRegion defined by Child

Keyword Arguments

  • n : Number of points per polygon side to test

  • throw : If true, then if cgeo is not within geo, an error is thrown and the program stops running

source


julia
removeGeoRegion("BIG")
+removeGeoRegion("TS1")
+removeGeoRegion("TS2")
+removeGeoRegion("TS3")
+removeGeoRegion("TS4")
[ Info: 2024-08-08T01:51:59.599 - GeoRegions.jl - Removing the GeoRegion BIG ...
+[ Info: 2024-08-08T01:51:59.690 - GeoRegions.jl - Removing the GeoRegion TS1 ...
+[ Info: 2024-08-08T01:51:59.692 - GeoRegions.jl - Removing the GeoRegion TS2 ...
+[ Info: 2024-08-08T01:51:59.693 - GeoRegions.jl - Removing the GeoRegion TS3 ...
+[ Info: 2024-08-08T01:51:59.694 - GeoRegions.jl - Removing the GeoRegion TS4 ...

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/versions.js b/versions.js index c5caaedf..24c38c9a 100644 --- a/versions.js +++ b/versions.js @@ -1,5 +1,6 @@ var DOC_VERSIONS = [ "stable", + "v6.0", "v5.2", "v5.1", "v5.0", @@ -12,5 +13,5 @@ var DOC_VERSIONS = [ "v2.0", "dev", ]; -var DOCUMENTER_NEWEST = "v5.2.7"; +var DOCUMENTER_NEWEST = "v6.0.0"; var DOCUMENTER_STABLE = "stable";