PageSourceSearch

https://docs.phpvms.net/assets/js/8f40bf38.f27333d6.js

js phpvms.net collected 2026-10-04 13:24:08 UTC 23,613 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkphpvms_docs=self.webpackChunkphpvms_docs||[]).push([[2200],{94050(e,n,i){i.r(n),i.d(n,{assets:()=>h,contentTitle:()=>d,default:()=>p,frontMatter:()=>o,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"acars/user-guide","title":"User Guide","description":"---","source":"@site/versioned_docs/version-v7.x/acars/user-guide.md","sourceDirName":"acars","slug":"/acars/user-guide","permalink":"/acars/user-guide","draft":false,"unlisted":false,"editUrl":"https://github.com/phpvms/docs/tree/master/versioned_docs/version-v7.x/acars/user-guide.md","tags":[],"version":"v7.x","frontMatter":{"id":"user-guide","title":"User Guide"},"sidebar":"docs","previous":{"title":"Installation (Server)","permalink":"/acars/install-server"},"next":{"title":"Customization","permalink":"/acars/customization"}}');var l=i(74848),t=i(28453),s=i(45645),a=i(7227);const o={id:"user-guide",title:"User Guide"},d="Installation (Client)",h={},c=[{value:"ACARS Client",id:"acars-client",level:2},{value:"Simulator Configuration",id:"simulator-configuration",level:2},{value:"WASM Module",id:"wasm-module",level:4},{value:"Permission Denied Errors",id:"permission-denied-errors",level:5},{value:"Hardware Configuration",id:"hardware-configuration",level:4},{value:"Client Config",id:"client-config",level:2},{value:"Get the URL and API Key",id:"get-the-url-and-api-key",level:3},{value:"Client Settings",id:"client-settings",level:3},{value:"Sim Selection",id:"sim-selection",level:3},{value:"Mac/Linux Configuration",id:"maclinux-configuration",level:3},{value:"Flight Planning",id:"flight-planning",level:2},{value:"Entering everything manually",id:"entering-everything-manually",level:3},{value:"Flight Search or Bids",id:"flight-search-or-bids",level:3},{value:"Flight Plans",id:"flight-plans",level:3},{value:"Flight Phases",id:"flight-phases",level:2},{value:"Boarding",id:"boarding",level:4},{value:"Notes",id:"notes",level:5},{value:"Pushback",id:"pushback",level:4},{value:"Notes",id:"notes-1",level:4},{value:"Taxi Out",id:"taxi-out",level:4},{value:"Notes",id:"notes-2",level:4},{value:"Takeoff",id:"takeoff",level:4},{value:"Notes",id:"notes-3",level:5},{value:"Enroute",id:"enroute",level:4},{value:"Approach",id:"approach",level:4},{value:"Final",id:"final",level:4},{value:"Landing",id:"landing",level:4},{value:"Notes:",id:"notes-4",level:5},{value:"Taxi In",id:"taxi-in",level:4},{value:"Notes",id:"notes-5",level:5},{value:"Arrived",id:"arrived",level:4},{value:"Notes",id:"notes-6",level:5},{value:"Debugging",id:"debugging",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.header,{children:(0,l.jsx)(n.h1,{id:"installation-client",children:"Installation (Client)"})}),"\n",(0,l.jsx)(n.hr,{}),"\n",(0,l.jsx)(n.h2,{id:"acars-client",children:"ACARS Client"}),"\n",(0,l.jsx)(n.p,{children:"After downloading the installer, extract it and run it. It will install into:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{children:"%LocalAppData%\\vmsacars\\current\n"})}),"\n",(0,l.jsx)(n.p,{children:"Desktop and start menu shortcuts will be created, and the program will be\nregistered"}),"\n",(0,l.jsx)(n.hr,{}),"\n",(0,l.jsx)(n.h2,{id:"simulator-configuration",children:"Simulator Configuration"}),"\n",(0,l.jsxs)(s.A,{children:[(0,l.jsxs)(a.A,{value:"msfs",label:"MSFS 2020/2024",default:!0,children:[(0,l.jsx)(n.h4,{id:"wasm-module",children:"WASM Module"}),(0,l.jsxs)(n.p,{children:["If you're using Microsoft Flight Simulator, to read the LVars from the sim you\nneed the ",(0,l.jsx)(n.code,{children:"FSUIPC WASM Module (Version)"})," from ",(0,l.jsx)(n.a,{href:"https://www.fsuipc.com/",children:"FSUIPC"})," ,\n",(0,l.jsx)(n.code,{children:"fsuipc-lvar-module"})," folder needs to be manually placed in your community\nfolder."]}
1),(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:i(5760).A+"",width:"1340",height:"105"})}),(0,l.jsx)(n.p,{children:"Also, it is possible to install the WASM Module with FSUIPC main installer.\nWhile installing or updating it, be sure you have the WASM Module option\nenabled."}),(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:i(51846).A+"",width:"502",height:"389"})}),(0,l.jsx)(n.h5,{id:"permission-denied-errors",children:"Permission Denied Errors"}),(0,l.jsxs)(n.p,{children:["If you're getting a permission-denied error, see\n",(0,l.jsx)(n.a,{href:"https://forum.navigraph.com/t/faq-navigraph-navdata-center-could-not-find-access-simulator/2104",children:"this thread"})]})]}),(0,l.jsxs)(a.A,{value:"xplane",label:"X-Plane",children:[(0,l.jsxs)(n.p,{children:["X-Plane uses a custom plugin. Open the ",(0,l.jsx)(n.code,{children:"X-Plane"})," folder, and copy the\n",(0,l.jsx)(n.code,{children:"AcarsConnect"})," folder into your ",(0,l.jsx)(n.code,{children:"Resources\\plugins"})," folder."]}),(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:i(66481).A+"",width:"1044",height:"194"})}),(0,l.jsxs)(n.p,{children:["Also it is possible to copy the plugin automatically from vmsAcars settings, be\nsure X-Plane is not running and click the ",(0,l.jsx)(n.code,{children:"Copy Plugin To X-Plane"})," button after\nselecting your X-Plane root/main folder."]}),(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:i(29437).A+"",width:"956",height:"197"})})]}),(0,l.jsxs)(a.A,{value:"banana",label:"Prepar3d/FSX",children:[(0,l.jsx)(n.p,{children:"To use FSX/Prepar3d, you need to install:"}),(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"http://www.fsuipc.com",children:"FSUIPC"})," - the licensed version isn't required."]}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"http://fsuipc.simflight.com/beta/MakeRwys.zip",children:"MakeRwys"})}),"\n"]}),(0,l.jsxs)(n.p,{children:["After installing both, run ",(0,l.jsx)(n.code,{children:"MakeRwys"}),". ",(0,l.jsx)(n.code,{children:"MakeRwys"})," also needs to be re-run\nwhenever there are scenery changes (if you want gates/runways to be updated).\nACARS will automatically detected changes to the MakeRwys files, and will\nupdate its internal database accordingly."]}),(0,l.jsx)(n.h4,{id:"hardware-configuration",children:"Hardware Configuration"}),(0,l.jsxs)(n.p,{children:["If you're using hardware to control the sim, ACARS heavily relies on several\noffsets with FSUIPC, particularly the parking brake. Ensure that the offset\n",(0,l.jsx)(n.code,{children:"0x0BC8"})," gets set"]})]})]}),"\n",(0,l.jsx)(n.hr,{}),"\n",(0,l.jsx)(n.h2,{id:"client-config",children:"Client Config"}),"\n",(0,l.jsx)(n.hr,{}),"\n",(0,l.jsx)(n.h3,{id:"get-the-url-and-api-key",children:"Get the URL and API Key"}),"\n",(0,l.jsx)(n.p,{children:"You can either enter your URL and API key manually or download the settings\nconfig file from your phpvms profile. To download the config file, visit your VA\nand go to your profile:"}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:i(6527).A+"",width:"1544",height:"382"})}),"\n",(0,l.jsxs)(n.p,{children:["And place it a folder called ",(0,l.jsx)(n.code,{children:"Documents\\vmsacars\\profiles"}),":"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:i(93124).A+"",width:"775",height:"448"})}),"\n",(0,l.jsx)(n.h3,{id:"client-settings",children:"Client Settings"}),"\n",(0,l.jsx)(n.p,{children:"After downloading the latest ACARS version, on startup, you'll be brought to the\nconfiguration/settings page:"}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:i(84722).A+"",width:"1091",height:"940"})}),"\n",(0,l.jsx)(n.h3,{id:"sim-selection",children:"Sim Selection"}),"\n",(0,l.jsx)(n.p,{children:"After entering your URL and API key, select the simulator, and then select the\npath to the simulator's root folder (for Fs9/FsX/Prepar3d or X-Plane)"}),"\n",(0,l.jsx)(n.admonition,{type:"info",children:(0,l.jsxs)(n.p,{children:["FSX/Prepar3d requires the ",(0,l.jsx)(n.code,{children:"MakeRwys.exe"})," file, which can be downloaded from the\n",(0,l.jsx)(n.a,{href:"http://fsuipc.simflight.com/beta/MakeRwys.zip",children:"FSUIPC Page"}),". It needs to be\nplaced in the same directory as FSX/Prepar3d, and it will create the required\nfiles needed to scan."]})}),"\n",(0,l.jsx)(n.hr,{}),"\n",(0,l.jsx)(n.h3,{id:"maclinux-configuration",children:"Mac/Linux Configuration"}),"\n",(0,l.jsxs)(n.p,{children:["To run ACARS with X-Plane on the Mac or Linux, you have to run Windows in a VM.\nOn the Mac, I use ",(0,l.jsx)(n.a,{href:"https://www.vmware.com/products/fusion.html",children:"VMWare Fusion"}),",\nwhich is free for personal use. The procedure below will be similar for\nParallels or Virtual Box, which is roughly:"]}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"Add the X-Plane folder as a shared folder/mount to the Windows VM"}),"\n",(0,l.jsxs)(n.li,{children:["Copy the ",(0,l.jsx)(n.code,{children:"AcarsConnect"})," plugin to the ",(0,l.jsx)(n.code,{children:"Resources\\plugin"})," folder (see above)"]}),"\n",(0,l.jsx)(n.li,{children:"Set the IP address in ACARS to the IP of the host"}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:'Then click "Open In Guest", and you can follow the above instructions for then\ninstalling the plugin. Then, in ACARS, properly set the IP to your Mac machine:'}
1),"\n",(0,l.jsx)(n.p,{children:"Then you can launch/run ACARS as usual."}),"\n",(0,l.jsx)(n.hr,{}),"\n",(0,l.jsx)(n.h2,{id:"flight-planning",children:"Flight Planning"}),"\n",(0,l.jsx)(n.p,{children:"There are several ways to configure flight:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"Enter everything manually"}),"\n",(0,l.jsx)(n.li,{children:"Load a flight from the flight search"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"entering-everything-manually",children:"Entering everything manually"}),"\n",(0,l.jsx)(n.p,{children:"This is simple, just type in everything for your flight, referring to your VA\nsite."}),"\n",(0,l.jsx)(n.h3,{id:"flight-search-or-bids",children:"Flight Search or Bids"}),"\n",(0,l.jsx)(n.p,{children:'To load a flight from the search or bids, in the menu, select flight search. If\nyour VA has search enabled, you can click search. If you click on "Bids", it\nwill show your available bids.'}),"\n",(0,l.jsx)(n.p,{children:'If there is a SimBrief flight plan also loaded with the bid from the site, it\nwill show up as "Yes" in that column.'}),"\n",(0,l.jsx)(n.h3,{id:"flight-plans",children:"Flight Plans"}),"\n",(0,l.jsx)(n.p,{children:"In order for the route map to show all of your waypoints, you need to load a\nflight plan. vmsACARS does not have/contain any navigation information on its\nown, it's all loaded from a loaded flight plan. The follow flight plan types are\nsupported:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["FSX/P3D (",(0,l.jsx)(n.code,{children:".pln"}),")"]}),"\n",(0,l.jsxs)(n.li,{children:["X-Plane (",(0,l.jsx)(n.code,{children:".fms"}),")"]}),"\n",(0,l.jsxs)(n.li,{children:["MSFS (",(0,l.jsx)(n.code,{children:".pln"}),")"]}),"\n",(0,l.jsxs)(n.li,{children:["Simbrief (",(0,l.jsx)(n.code,{children:".xml"}),', exported from the SimBrief site or the SimBrief Downloader.\nThere is a "phpvms" flight plan type that\'s available)']}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The routes/navpoints are then loaded from the flight plan, along with the TOD\n(from MSFS/Simbrief), and filed along with your PIREP."}),"\n",(0,l.jsx)(n.hr,{}),"\n",(0,l.jsx)(n.h2,{id:"flight-phases",children:"Flight Phases"}),"\n",(0,l.jsx)(n.p,{children:"ACARS defines multiple flight phases, and the transitions between them are\ndetailed below. These rules are attemped to strike a balance between detecting\nthe phases properly for both IFR and VFR flights."}),"\n",(0,l.jsx)(n.h4,{id:"boarding",children:"Boarding"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"You must be on the ground to be able to start a flight. The parking brake\nshould also be on"}),"\n"]}),"\n",(0,l.jsx)(n.h5,{id:"notes",children:"Notes"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'The players starting position (gate, parking or runway) is attempted to be\nfound. Otherwise, it\'s recorded as "Unknown"'}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"pushback",children:"Pushback"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Your aircraft has started moving, and is under 5kts"}),"\n",(0,l.jsx)(n.li,{children:"If you started the flight with the brakes on and they are released"}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"notes-1",children:"Notes"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'The "Blocks Off" time is recorded'}),"\n",(0,l.jsx)(n.li,{children:"For helicopters, this phase is recorded but is essentially bypassed once you\nleave the ground"}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"taxi-out",children:"Taxi Out"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"The ground speed is above 5"}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"notes-2",children:"Notes"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'The "Taxi Out" timer is started'}),"\n",(0,l.jsx)(n.li,{children:"For helicopters, this phase is recorded but is essentially bypassed once you\nleave the ground"}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"takeoff",children:"Takeoff"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"If you're detected to be on a runway, and your ground speed is over 30"}),"\n",(0,l.jsx)(n.li,{children:"If you haven't been detected on a runway, your ground speed is over 80\n(rolling)"}),"\n",(0,l.jsx)(n.li,{children:"You're no longer on the ground"}),"\n"]}),"\n",(0,l.jsx)(n.h5,{id:"notes-3",children:"Notes"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"For helicopters, this phase is recorded but is essentially bypassed once you\nleave the ground"}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"enroute",children:"Enroute"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"You're 500' AGL or above (to attempt to catch the earlier point) OR the gear\nare up (if they are retractable)"}),"\n",(0,l.jsx)(n.li,{children:"More than 3 miles from the airport"}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"approach",children:"Approach"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["If you're at the TOD","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'If a flight plan is loaded and has a "TOD" waypoint (SimBrief, MSFS), that\nwill be used'}),"\n",(0,l.jsxs)(n.li,{children:["Otherwise, the TOD is calculated using\n",(0,l.jsx)(n.a,{href:"https://www.flyingmag.com/technique/tip-week/calculating-top-descent/",children:"this method"}),"\n(",(0,l.jsx)(n.code,{children:"TOD = (Plane Alt - Field Alt) / 3"}),")"]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.li,{children:"If you went above 10k' and are now below it"}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"final",children:"Final"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Below 3000' AGL"}),"\n",(0,l.jsx)(n.li,{children:"Gear are down (if they are retractable)"}),"\n",(0,l.jsx)(n.li,{children:"Flaps are down"}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"landing",children:"Landing"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"You're on the ground"}),"\n"]}),"\n",(0,l.jsx)(n.h5,{id:"notes-4",children:"Notes:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'The "End Flight" button shows up'}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"taxi-in",children:"Taxi In"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"You're off of the runway and your ground speed is < 30"}),"\n"]}),"\n",(0,l.jsx)(n.h5,{id:"notes-5",children:"Notes"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'The "End Flight" button shows up'}),"\n"]}),"\n",(0,l.jsx)(n.h4,{id:"arrived",children:"Arrived"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'The "End Flight" button must be clicked to set the flight to arrived'}
1),"\n",(0,l.jsx)(n.li,{children:'Once "End Flight" is clicked, a button to file the PIREP will show'}),"\n"]}),"\n",(0,l.jsx)(n.h5,{id:"notes-6",children:"Notes"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'The "End Flight" button shows up'}),"\n",(0,l.jsx)(n.li,{children:"The parking/gate you're at will be attempted to be figured out"}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"--"}),"\n",(0,l.jsx)(n.h2,{id:"debugging",children:"Debugging"}),"\n",(0,l.jsx)(n.p,{children:'To debug whether the lights are working or not, you can open the "Debug" window.\nTo open it, go to the "Map" page, click the three dots, and select "Debug\nWindow"'}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:i(96577).A+"",width:"850",height:"808"})})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(u,{...e})}):u(e)}},7227(e,n,i){i.d(n,{A:()=>o});i(96540);var r=i(18215),l=i(8626);const t="tabItem_Ymn6";var s=i(74848);function a(e){var n=e.children,i=e.className,l=e.hidden;return(0,s.jsx)("div",{role:"tabpanel",className:(0,r.A)(t,i),hidden:l,children:n})}function o(e){var n=e.children,i=e.className,r=e.value,t=(0,l.uc)(),o=t.selectedValue,d=t.lazy,h=r===o;return!h&&d?null:(0,s.jsx)(a,{className:i,hidden:!h,children:n})}},45645(e,n,i){i.d(n,{A:()=>f});i(96540);var r=i(18215),l=i(18630),t=i(8626),s=i(24245),a=i(11062);const o="tabList__CuJ",d="tabItem_LNqP";var h=i(74848);function c(e){var n=e.className,i=(0,t.uc)(),l=i.selectedValue,a=i.selectValue,o=i.tabValues,c=i.block,u=[],p=(0,s.a_)().blockElementScrollPositionUntilNextRender,f=function(e){var n=e.currentTarget,i=u.indexOf(n),r=o[i].value;r!==l&&(p(n),a(r))},g=function(e){var n,i=null;switch(e.key){case"Enter":f(e);break;case"ArrowRight":var r,l=u.indexOf(e.currentTarget)+1;i=null!=(r=u[l])?r:u[0];break;case"ArrowLeft":var t,s=u.indexOf(e.currentTarget)-1;i=null!=(t=u[s])?t:u[u.length-1]}null==(n=i)||n.focus()};return(0,h.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":c},n),children:o.map(function(e){var n=e.value,i=e.label,t=e.attributes;return(0,h.jsx)("li",Object.assign({role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,ref:function(e){u.push(e)},onKeyDown:g,onClick:f},t,{className:(0,r.A)("tabs__item",d,null==t?void 0:t.className,{"tabs__item--active":l===n}),children:null!=i?i:n}),n)})})}function u(e){var n=e.children;return(0,h.jsx)("div",{className:"margin-top--md",children:n})}function p(e){var n=e.className,i=e.children;return(0,h.jsxs)("div",{className:(0,r.A)(l.G.tabs.container,"tabs-container",o),children:[(0,h.jsx)(c,{className:n}),(0,h.jsx)(u,{children:i})]})}function f(e){var n=(0,a.A)(),i=(0,t.OC)(e);return(0,h.jsx)(t.O_,{value:i,children:(0,h.jsx)(p,{className:e.className,children:(0,t.vT)(e.children)})},String(n))}},8626(e,n,i){i.d(n,{OC:()=>f,O_:()=>v,uc:()=>x,vT:()=>h});var r=i(96540),l=i(56347),t=i(36494),s=i(62814),a=i(69900),o=i(45167),d=i(74848);function h(e){return r.Children.toArray(e).filter(function(e){return"\n"!==e})}function c(e){var n=e.values,i=e.children;return(0,r.useMemo)(function(){var e=null!=n?n:function(e){return r.Children.toArray(e).flatMap(function(e){if(!e)return[];if((0,r.isValidElement)(e)&&(n=e.props)&&"object"==typeof n&&"value"in n)return[e];var n,i="string"==typeof e.type?e.type:e.type.name;throw new Error("Docusaurus error: Bad <Tabs> child <"+i+'>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.\nIf you do not want to pass on a "value" prop to the direct children of <Tabs>, you can also pass an explicit <Tabs values={...}> prop.')}).map(function(e){var n=e.props;return{value:n.value,label:n.label,attributes:n.attributes,default:n.default}})}(i);return function(e){var n=(0,o.XI)(e,function(e,n){return e.value===n.value});if(n.length>0)throw new Error('Docusaurus error: Duplicate values "'+n.map(function(e){return"'"+e.value+"'"}).join(", ")+'" found in <Tabs>. Every value needs to be unique.')}(e),e},[n,i])}function u(e){var n=e.value;return e.tabValues.some(function(e){return e.value===n})}function p(e){var n=e.queryString,i=void 0!==n&&n,t=e.groupId,a=(0,l.W6)(),o=function(e){var n=e.queryString,i=void 0!==n&&n,r=e.groupId;if("string"==typeof i)return i;if(!1===i)return null;if(!0===i&&!r)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=r?r:null}({queryString:i,groupId:t});return[(0,s.aZ)(o),(0,r.useCallback)(function(e){if(o){var n=new URLSearchParams(a.location.search);n.set(o,e),a.replace(Object.assign({},a.location,{search:n.toString()}))}},[o,a])]}function f(e){var n,i,l,s,o,d,h=e.defaultValue,f=e.queryString,g=void 0!==f&&f,x=e.groupId,v=c(e),j=(0,r.useState)(function(){return function(e){var n,i=e.defaultValue,r=e.tabValues;if(0===r.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(i){if(!u({value:i,tabValues:r}))throw new Error('Docusaurus error: The <Tabs> has a defaultValue "'+i+'" but none of its children has the corresponding value. Available values are: '+r.map(function(e){return e.value}).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return i}var l=null!=(n=r.find(function(e){return e.default}))?n:r[0];if(!l)throw new Error("Unexpected error: 0 tabValues");return l.value}({defaultValue:h,tabValues:v})}),m=j[0],b=j[1],y=p({queryString:g,groupId:x}),w=y[0],A=y[1],S=(l=function(e){return e?"docusaurus.tab."+e:null}({groupId:x}.groupId),s=(0,a.Dv)(l),o=s[0],d=s[1],[o,(0,r.useCallback)(function(e){l&&d.set(e)},[l,d])]),k=S[0],T=S[1],C=function(){var e=null!=w?w:k;return u({value:e,tabValues:v})?e:null}();return(0,t.A)(function(){C&&b(C)},[C]),{selectedValue:m,selectValue:(0,r.useCallback)(function(e){if(!u({value:e,tabValues:v}))throw new Error("Can't select invalid tab value="+e);b(e),A(e),T(e)},[A,T,v]),tabValues:v,lazy:null!=(n=e.lazy)&&n,block:null!=(i=e.block)&&i}}var g=(0,r.createContext)(null);function x(){var e=r.useContext(g);if(!e)throw new Error("useTabsContext() must be used within a Tabs component");return e}function v(e){return(0,d.jsx)(g.Provider,{value:e.value,children:e.children})}},84722(e,n,i){i.d(n,{A:()=>r});const r=i.p+"assets/images/cli-setup-2dbbd172e3a5d494a8edc3c62576cda1.png"},96577(e,n,i){i.d(n,{A:()=>r});const r=i.p+"assets/images/data-window-d71294d3c19ba248bf576423d7c99569.png"},51846(e,n,i){i.d(n,{A:()=>r});const r=i.p+"assets/images/fsuipc_install-aab41d89a3d34d671685be04454521c9.png"},5760(e,n,i){i.d(n,{A:()=>r});const r=i.p+"assets/images/fsuipc_lvar-ec749345e2bf095cbea85cf4d9f262f0.png"},93124(e,n,i){i.d(n,{A:()=>r});const r=i.p+"assets/images/mydocs-settingsxml-219205a44c29dda2c7786d71407b347f.png"},66481(e,n,i){i.d(n,{A:()=>r});const r=i.p+"assets/images/plugin-copy-68dc8fc70e8be65daaff414a7cbc647e.png"},6527(e,n,i){i.d(n,{A:()=>r});const r=i.p+"assets/images/profile-config-download-4f3bdaf067af7129efa690821e5828d8.png"},29437(e,n,i){i.d(n,{A:()=>r});const r=i.p+"assets/images/xplane_button-633d04e29e015b81fec4d463efd24aea.png"},28453(e,n,i){i.d(n,{R:()=>s,x:()=>a});var r=i(96540);const l={},t=r.createContext(l);function s(e){const n=r.useContext(t);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.