1"use strict";(self.webpackChunkc_c_notes=self.webpackChunkc_c_notes||[]).push([[2003],{930:(e,t,M)=>{M.d(t,{A:()=>a});const a=M.p+"assets/images/function-passing-values-general-f37f6b59181836fe9c1fee7121ac66f5.svg"},1021:(e,t,M)=>{M.r(t),M.d(t,{assets:()=>N,contentTitle:()=>i,default:()=>c,frontMatter:()=>L,metadata:()=>s,toc:()=>u});var a=M(8168),n=(M(6540),M(5680));const L={sidebar_position:51,id:"passage-of-values",title:"Passage of values",hide_title:!1,hide_table_of_contents:!1,sidebar_label:"Passage of values",description:"What are functions and how to use them.",slug:"/cpp/passage-of-values",custom_edit_url:null},i=void 0,s={unversionedId:"cpp/Functions/passage-of-values",id:"cpp/Functions/passage-of-values",title:"Passage of values",description:"What are functions and how to use them.",source:"@site/docs/cpp/Functions/passage-of-values.md",sourceDirName:"cpp/Functions",slug:"/cpp/passage-of-values",permalink:"/docs/cpp/passage-of-values",draft:!1,editUrl:null,tags:[],version:"current",lastUpdatedAt:1747598548,formattedLastUpdatedAt:"May 18, 2025",sidebarPosition:51,frontMatter:{sidebar_position:51,id:"passage-of-values",title:"Passage of values",hide_title:!1,hide_table_of_contents:!1,sidebar_label:"Passage of values",description:"What are functions and how to use them.",slug:"/cpp/passage-of-values",custom_edit_url:null},sidebar:"tutorialSidebar",previous:{title:"Functions",permalink:"/docs/cpp/functions/"},next:{title:"Introduction to C",permalink:"/docs/c/c-intro"}},N={},u=[{value:"Parameter types",id:"parameter-types",level:2},{value:"Code explanation",id:"code-explanation",level:3},{value:"Function",id:"function",level:4},{value:"Main",id:"main",level:4},{value:"Return (in details)",id:"return-in-details",level:4},{value:"Actual parameter (argument)",id:"actual-parameter-argument",level:3},{value:"Formal parameter",id:"formal-parameter",level:3},{value:"General scheme",id:"general-scheme",level:3},{value:"Passing by value \ud83c\udd9a by reference",id:"passing-by-value--by-reference",level:2},{value:"Troubleshooting",id:"troubleshooting",level:4},{value:"Pass by value (or copy)",id:"pass-by-value-or-copy",level:3},{value:"Local scope",id:"local-scope",level:4},{value:"Pass by reference",id:"pass-by-reference",level:3},{value:"Pass by address (or pointer)",id:"pass-by-address-or-pointer",level:3},{value:"Performances",id:"performances",level:4},{value:"Structured data types",id:"structured-data-types",level:3}],y={toc:u},j="wrapper";function c(e){let{components:t,...L}=e;return(0,n.yg)(j,(0,a.A)({},y,L,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("p",null,"In C and C++ there are two ways to pass some data to a function: ",(0,n.yg)("em",{parentName:"p"},"by value")," and ",(0,n.yg)("em",{parentName:"p"},"by\nreference"),"."),(0,n.yg)("p",null,"Both of them are strictly related to the ",(0,n.yg)("em",{parentName:"p"},"actual parameters")," (or arguments) and ",(0,n.yg)("em",{parentName:"p"},"formal\nparameters"),", though, so it's better to understand and distinguish them before going forward."),(0,n.yg)("h2",{id:"parameter-types"},"Parameter types"),(0,n.yg)("p",null,"In support of the following explanation I'm going to use an example of a program that prompts\nthe user to enter the base and height of a rectangle and with a function calculates the area\nof the quadrilateral (according to the formula ",(0,n.yg)("strong",{parentName:"p"},"a = b*h"),"), storing that value in the\nvariable ",(0,n.yg)("inlineCode",{parentName:"p"},"a"),":"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp",metastring:'{4-7,17} title="area-of-rectangle.cpp"',"{4-7,17}":!0,title:'"area-of-rectangle.cpp"'},'#include <iostream>\nusing namespace std;\n\nfloat area(float b, float h) {\n float area = b*h;\n return area;\n}\n\nint main() {\n float base, height;\n \n cout << "enter the base: " << endl;\n cin >> base;\n cout << "enter the height: " << endl;\n cin >> height;\n \n float a = area(base, height);\n cout << "the area is: " << a << endl;\n \n return 0;\n}\n')),(0,n.yg)("admonition",{type:"note"},(0,n.yg)("p",{parentName:"admonition"},"This code works directly, so I highly encourage you to try it. As always, feel free to run\nthis program yourself and experiment with it as much as you want.")),(0,n.yg)("h3",{id:"code-explanation"},"Code explanation"),(0,n.yg)("h4",{id:"function"},"Function"),(0,n.yg)("p",null,"Before the main function, at line ",(0,n.yg)("strong",{parentName:"p"},"4"),", the function area is defined. Here we multiply the\nformal parameters ",(0,n.yg)("inlineCode",{parentName:"p"},"b")," and ",(0,n.yg)("inlineCode",{parentName:"p"}
1,"h")," and store the result in a new variable called ",(0,n.yg)("inlineCode",{parentName:"p"},"area"),". Then we\nreturn it. "),(0,n.yg)("h4",{id:"main"},"Main"),(0,n.yg)("p",null,"In the main function we create two new variables, ",(0,n.yg)("inlineCode",{parentName:"p"},"base")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"height"),", and we ask to the user\nto insert the values that we'll then assign to each variable."),(0,n.yg)("p",null,"In line ",(0,n.yg)("strong",{parentName:"p"},"17")," we create another variable, ",(0,n.yg)("inlineCode",{parentName:"p"},"a"),", and here we call the function previously\ncreated passing as arguments ",(0,n.yg)("inlineCode",{parentName:"p"},"base")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"height")," (not ",(0,n.yg)("inlineCode",{parentName:"p"},"b")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"h"),"!), without specifying any\ntype. When the compiler compiles the function that has just been called, it calculates a value\n",(0,n.yg)("inlineCode",{parentName:"p"},"area")," and then returns it. We store that value in ",(0,n.yg)("inlineCode",{parentName:"p"},"a"),"."),(0,n.yg)("p",null,"The ",(0,n.yg)("inlineCode",{parentName:"p"},"float")," type of the variables and the function have been used to cover the cases when\ninputs have decimal digits, but other types like ",(0,n.yg)("inlineCode",{parentName:"p"},"int")," or ",(0,n.yg)("inlineCode",{parentName:"p"},"double")," can be used too."),(0,n.yg)("h4",{id:"return-in-details"},"Return (in details)"),(0,n.yg)("p",null,"Inside the function ",(0,n.yg)("inlineCode",{parentName:"p"},"area()"),", the ",(0,n.yg)("inlineCode",{parentName:"p"},"return area;")," instruction finalizes the function and\nreturns the control back to the function that called it in the first place (so ",(0,n.yg)("inlineCode",{parentName:"p"},"main()"),"\nin our example)."),(0,n.yg)("p",null,"At this moment the program follows its regular course from the same point at which it was\ninterrupted by the call to ",(0,n.yg)("inlineCode",{parentName:"p"},"area()"),". Additionally, because the return statement in our\nfunction ",(0,n.yg)("inlineCode",{parentName:"p"},"area()")," specified a value, this value becomes the value of the function call."),(0,n.yg)("p",null,"The variable ",(0,n.yg)("inlineCode",{parentName:"p"},"a")," will be set to the value returned by the multiplication performed inside\n",(0,n.yg)("inlineCode",{parentName:"p"},"area(float b, float h)"),", that is ",(0,n.yg)("inlineCode",{parentName:"p"},"b*h"),".\nTo explain it another way, you can imagine that the function call ",(0,n.yg)("inlineCode",{parentName:"p"},"area()"),"\nis literally replaced by the value it returns, and then this value is stored in a variable."),(0,n.yg)("p",null,"Just as shown in this figure:"),(0,n.yg)("p",null,(0,n.yg)("img",{alt:"Returned value",src:M(8259).A,width:"1662",height:"562"})),(0,n.yg)("figcaption",null,"Fig.1. How the returned value of a function is stored."),(0,n.yg)("p",null,"In this general example, a ",(0,n.yg)("inlineCode",{parentName:"p"},"fName()")," function is invoked, and when it's executed its result\nreplaces the invocation ",(0,n.yg)("inlineCode",{parentName:"p"},"fName(x, y)")," and gets stored in a variable ",(0,n.yg)("inlineCode",{parentName:"p"},"var"),". ",(0,n.yg)("strong",{parentName:"p"},(0,n.yg)("inlineCode",{parentName:"strong"},"val")," = ",(0,n.yg)("inlineCode",{parentName:"strong"},"returned \nvalue")),".\nThe intermediate step (where ",(0,n.yg)("inlineCode",{parentName:"p"},"fName(x, y)")," becomes the returned value) is not shown for\nsimplicity."),(0,n.yg)("admonition",{title:"Remember",type:"info"},(0,n.yg)("p",{parentName:"admonition"},"All this process happens when we use classic functions. For procedures (functions with ",(0,n.yg)("inlineCode",{parentName:"p"},"void"),"\ntype), instead, all this doesn't subsist (it's not true) because procedures ",(0,n.yg)("em",{parentName:"p"},"never")," have a\nreturn value.")),(0,n.yg)("h3",{id:"actual-parameter-argument"},"Actual parameter (argument)"),(0,n.yg)("p",null,"The actual parameters, or arguments, are the actual values (or values of variables) that get\n",(0,n.yg)("strong",{parentName:"p"},"passed")," to a function. In our previous example, we invoke the function ",(0,n.yg)("inlineCode",{parentName:"p"},"area()")," that has two\nparameters, ",(0,n.yg)("inlineCode",{parentName:"p"},"b")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"h"),", and we pass those arguments as ",(0,n.yg)("inlineCode",{parentName:"p"},"base")," and ",(0,n.yg)("inlineCode",{parentName:"p"}
1,"height"),". We could have\npassed also some values directly, like 3 and 4, as arguments. Try yourself with our example\nprogram."),(0,n.yg)("p",null,"This scheme will probably convey better how these two different types of parameters are used:"),(0,n.yg)("p",null,(0,n.yg)("img",{alt:"Passing values scheme",src:M(7749).A,width:"1758",height:"600"})),(0,n.yg)("figcaption",null,"Fig.2. How arguments are passed to a function (example)."),(0,n.yg)("h3",{id:"formal-parameter"},"Formal parameter"),(0,n.yg)("p",null,"The formal parameters are the local variables of the function that ",(0,n.yg)("strong",{parentName:"p"},"receive")," the arguments.\nIn our example, they are ",(0,n.yg)("inlineCode",{parentName:"p"},"b")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"h")," and they receive the values specified during the\ninvocation, which are ",(0,n.yg)("inlineCode",{parentName:"p"},"base")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"height"),"."),(0,n.yg)("h3",{id:"general-scheme"},"General scheme"),(0,n.yg)("p",null,(0,n.yg)("img",{alt:"Passing values scheme general",src:M(930).A,width:"1662",height:"600"})),(0,n.yg)("figcaption",null,"Fig.3. How arguments are passed to a function (in general)."),(0,n.yg)("h2",{id:"passing-by-value--by-reference"},"Passing by value \ud83c\udd9a by reference"),(0,n.yg)("p",null,"Let's now take another program. Imagine you want to write a function of type ",(0,n.yg)("inlineCode",{parentName:"p"},"void")," that\nswaps two variables (the algorithm for swapping is explained in a\n",(0,n.yg)("a",{parentName:"p",href:"https://c-cpp-notes.vercel.app/docs/cpp/swapping"},"previous lesson"),") called ",(0,n.yg)("inlineCode",{parentName:"p"},"a")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"b"),":"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp",metastring:'{4-8,16} title="swapping.cpp"',"{4-8,16}":!0,title:'"swapping.cpp"'},"#include <iostream>\nusing namespace std;\n\nvoid swap(int x, int y) {\n int temp = x;\n x = y;\n y = temp;\n}\n\nint main() {\n int a=2, b=5;\n \n cout << a << endl;\n cout << b << endl;\n \n swap(a, b);\n \n cout << a << endl;\n cout << b << endl;\n \n return 0;\n}\n")),(0,n.yg)("p",null,"Inside main we call the function ",(0,n.yg)("inlineCode",{parentName:"p"},"swap()")," passing ",(0,n.yg)("inlineCode",{parentName:"p"},"a")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"b")," as arguments (actual parameters).\nIn the function at line ",(0,n.yg)("strong",{parentName:"p"},"4")," we receive those arguments and inside the body we swap them.\nRemember that it's of type ",(0,n.yg)("inlineCode",{parentName:"p"},"void"),", so it's a special function that does not have a return value.\nSwapping is made by creating a new variable ",(0,n.yg)("inlineCode",{parentName:"p"},"temp")," (following the algorithm already explained\nin a previous tutorial), and after all the instructions we don't need to return anything."),(0,n.yg)("h4",{id:"troubleshooting"},"Troubleshooting"),(0,n.yg)("p",null,"Now try to run this program. What will be the output?"),(0,n.yg)("details",null,(0,n.yg)("summary",null,"Answer"),(0,n.yg)("div",{class:"output"},(0,n.yg)("code",{class:"output"},"2",(0,n.yg)("br",null),"5",(0,n.yg)("br",null),"2",(0,n.yg)("br",null),"5",(0,n.yg)("br",null)))),(0,n.yg)("p",null,"It turns out that ",(0,n.yg)("strong",{parentName:"p"},"the values 2 and 5 haven't swapped"),"!"),(0,n.yg)("p",null,"But why?"),(0,n.yg)("h3",{id:"pass-by-value-or-copy"},"Pass by value (or copy)"),(0,n.yg)("h4",{id:"local-scope"},"Local scope"),(0,n.yg)("p",null,"If you remember, in the previous chapter I mentioned that functions have formal parameters,\nwhich are basically variables that have ",(0,n.yg)("strong",{parentName:"p"},"local scope"),". Actually, the whole body of a function\nwith all the code inside it is also the local scope of the function itself. This means that\nthey all have a lifetime and visibility ",(0,n.yg)("em",{parentName:"p"},"limited")," only to that function and you can't access them\noutside of the function body (it's the same principle applied to code blocks, where variables\ninside of these blocks are not global)."),(0,n.yg)("p",null,"For instance, in our program you can't use the ",(0,n.yg)("inlineCode",{parentName:"p"},"temp")," variable (created inside the function)\nin the main scope, because the scope of local variables is limited to the same block level\nin which they are declared."),(0,n.yg)("p",null,"When we invoke a function (as we have done so far), the arguments that we pass to the function\nare passed ",(0,n.yg)("em",{parentName:"p"},"by value"),", or ",(0,n.yg)("em",{parentName:"p"},"by copy"),". These terms come from the fact that ",(0,n.yg)("strong",{parentName:"p"},"the values of the\nactual parameters written in the function call are")," ",(0,n.yg)("strong",{parentName:"p"},(0,n.yg)("em",{parentName:"strong"},"copied"))," ",(0,n.yg)("strong",{parentName:"p"},"inside the formal\nparameters"),", and then the function works on those copies ",(0,n.yg)("strong",{parentName:"p"},(0,n.yg)("em",{parentName:"strong"},"locally")),"."),(0,n.yg)("p",null,"In our code example, we pass ",(0,n.yg)("inlineCode",{parentName:"p"},"a")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"b"),", 2 and 5 respectively, so ",(0,n.yg)("inlineCode",{parentName:"p"},"x")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"y")," in the\nfunction assume those two values, but they are different variables with ",(0,n.yg)("strong",{parentName:"p"},"different locations\nin memory"),"."),(0,n.yg)("p",null,"For each variable, we are just passing copies of its value and not the variable itself.\nTherefore, when passing by value, as long as the formal parameters have not been declared\nas constant, changes that we apply to them (e.g. swapping) will only be performed within the\nfunction scope; nothing will happen outside of it, for example in main. "),(0,n.yg)("p",null,"In short, with pass-by-value if we change the parameters ",(0,n.yg)("strong",{parentName:"p"},"we lose all the modifications\noutside of the function"),"."),(0,n.yg)("p",null,(0,n.yg)("img",{alt:"Swapping by value",src:M(5049).A,width:"1751",height:"746"})),(0,n.yg)("figcaption",null,"Fig.4. Pass by value (or copy). The swapping doesn't happen in main."),(0,n.yg)("p",null,"That's why with our actual program we get this output:"),(0,n.yg)("div",{class:"output"},(0,n.yg)("code",{class:"output"},"2",(0,n.yg)("br",null),"5",(0,n.yg)("br",null),"2",(0,n.yg)("br",null),"5",(0,n.yg)("br",null))),(0,n.yg)("h3",{id:"pass-by-reference"},"Pass by reference"),(0,n.yg)("p",null,"To solve this problem we can pass arguments ",(0,n.yg)("em",{parentName:"p"},"by reference"),". When we call and pass by reference,\nactual and formal parameters refer to the ",(0,n.yg)("strong",{parentName:"p"},"same memory location"),", so when changes are made\nto the formal parameters, actual parameters will also change. In this way, we associate these\ntwo types of parameters as a
1singular entity."),(0,n.yg)("p",null,"In practice, the ",(0,n.yg)("em",{parentName:"p"},"invoked")," function and the ",(0,n.yg)("em",{parentName:"p"},"invoking")," function have the same parameters and\nthe eventual changes are reflected on both sides."),(0,n.yg)("p",null,"There are two ways to do this."),(0,n.yg)("p",null,"To pass by reference is by prefixing each formal parameter with an ampersand symbol ",(0,n.yg)("strong",{parentName:"p"},(0,n.yg)("inlineCode",{parentName:"strong"},"&"))," in\nthe signature of the function."),(0,n.yg)("p",null,"In our case, the solution will be:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp",metastring:"{1}","{1}":!0},"void swap(int &x, int &y) {\n int temp = x;\n x = y;\n y = temp;\n}\n")),(0,n.yg)("p",null,"Sometimes, you may see function parameters written in this way too: ",(0,n.yg)("inlineCode",{parentName:"p"},"void swap(int& x, int& y)"),".\nHere the ",(0,n.yg)("inlineCode",{parentName:"p"},"&")," symbol is put immediately after the type of each parameter (",(0,n.yg)("inlineCode",{parentName:"p"},"int"),") and after that,\nthere's a space. Both writings are completely equivalent (just like with pointers",(0,n.yg)("sup",{parentName:"p",id:"fnref-1"},(0,n.yg)("a",{parentName:"sup",href:"#fn-1",className:"footnote-ref"},"1")),"), so use\nthe one you prefer."),(0,n.yg)("p",null,(0,n.yg)("img",{alt:"Swapping by reference",src:M(9845).A,width:"1751",height:"746"})),(0,n.yg)("figcaption",null,"Fig.5. Pass by reference. The swapping is successful!"),(0,n.yg)("h3",{id:"pass-by-address-or-pointer"},"Pass by address (or pointer)"),(0,n.yg)("p",null,"There's also another method, which similarly implies the ampersand symbol, but in another\nway. It's used in conjunction with ",(0,n.yg)("em",{parentName:"p"},"pointers"),", which are special variables that are capable of\ncontaining memory addresses of some other variables. To declare a pointer parameter, we write\nthe asterisk symbol ",(0,n.yg)("strong",{parentName:"p"},(0,n.yg)("inlineCode",{parentName:"strong"},"*"))," followed by the identifier inside the function's round brackets."),(0,n.yg)("p",null,"When we write:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre",className:"language-cpp",metastring:"{1,7}","{1,7}":!0},"void swap(int *x, int *y) {\n int temp = *x;\n *x = *y;\n *y = temp;\n}\n// inside main\nswap(&a, &b);\n")),(0,n.yg)("p",null,(0,n.yg)("inlineCode",{parentName:"p"},"*x")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"*y")," will store not the values but copies of the ",(0,n.yg)("strong",{parentName:"p"},"addresses")," of ",(0,n.yg)("inlineCode",{parentName:"p"},"a")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"b")," (arguments)\ninto the formal parameters. Then, the function uses the addresses to access the arguments/actual\nparameters. When you call the function you have to put the ",(0,n.yg)("inlineCode",{parentName:"p"},"&")," symbol before the names of the\narguments, which indicates the respective address. Call by address is basically call by reference,\nexcept that a copy ",(0,n.yg)("em",{parentName:"p"},"of the reference/address")," is passed to the function."),(0,n.yg)("p",null,"Then, inside the function, ",(0,n.yg)("inlineCode",{parentName:"p"},"*x = *y")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"*y = temp")," lines mean that the compiler has to change\nthe original values (the content stored) of the addresses of ",(0,n.yg)("inlineCode",{parentName:"p"},"x")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"y")," variables, so the\nchanges will remain effective even outside of the function. The act of accessing the value from\na certain memory location through the pointer against which it's pointing is called ",(0,n.yg)("em",{parentName:"p"},"dereferencing"),"."),(0,n.yg)("admonition",{title:"Which one to use?",type:"note"},(0,n.yg)("p",{parentName:"admonition"},"I honestly prefer passing by reference simply because it's easier, but it's not\nnecessarily the best. You can find more details on how these last two methods work in\n",(0,n.yg)("a",{parentName:"p",href:"https://www.geeksforgeeks.org/passing-by-pointer-vs-passing-by-reference-in-c/"},"this article"),"\nby GeeksforGeeks.")),(0,n.yg)("p",null,"Both pass-by-reference and pass-by-address methods will give us the correct output:"),(0,n.yg)("div",{class:"output"},(0,n.yg)("code",{class:"output"},"2",(0,n.yg)("br",null),"5",(0,n.yg)("br",null),"5",(0,n.yg)("br",null),"2",(0,n.yg)("br",null))),(0,n.yg)("h4",{id:"performances"},"Performances"),(0,n.yg)("p",null,"Pass-by-reference is more efficient than pass-by-value because it does not copy the\narguments. The formal parameter is an alias for the argument. When the called function\nreads or writes the formal parameter, it is actually reading or writing the argument itself",(0,n.yg)("sup",{parentName:"p",id:"fnref-2"},(0,n.yg)("a",{parentName:"sup",href:"#fn-2",className:"footnote-ref"},"2")),",\nnot a copy of it."),(0,n.yg)("h3",{id:"structured-data-types"},"Structured data types"),(0,n.yg)("p",null,"We said that when we pass an argument by value, the function parameter receives a copy of that\nargument. For fundamental types, making a copy of the argument into the function parameter is\ncheap, so this is fine to do. However, copying is typically costly and relatively slow for\nstructured (",(0,n.yg)("em",{parentName:"p"},"non-primitive"),") data types (like arrays, ",(0,n.yg)("inlineCode",{parentName:"p"},"string")," objects, structs and others), so\nit's generally discouraged for efficiency reasons. We can avoid making an expensive copy\nby passing ",(0,n.yg)("strong",{parentName:"p"},"by reference")," instead, even if you aren't going to change the parameter(s)."),(0,n.yg)("admonition",{type:"note"},(0,n.yg)("p",{parentName:"admonition"},"Non-primitive types can still be passed by value in C and C++: if you try to do this, the\ncompiler will use a special function called the copy constructor (or in some cases in C++11,\nthe move constructor) to initialize the parameter as a copy of the argument",(0,n.yg)("sup",{parentName:"p",id:"fnref-3"},(0,n.yg)("a",{parentName:"sup",href:"#fn-3",className:"footnote-ref"},"3")),".")),(0,n.yg)("div",{className:"footnotes"},(0,n.yg)("hr",{parentName:"div"}),(0,n.yg)("ol",{parentName:"div"},(0,n.yg)("li",{parentName:"ol",id:"fn-1"},(0,n.yg)("a",{parentName:"li",href:"https://stackoverflow.com/questions/398395/why-is-the-asterisk-before-the-variable-name-rather-than-after-the-type"},"stackoverflow.com - Why is the asterisk before the variable name, rather than after the type?"),(0,n.yg)("a",{parentName:"li",href:"#fnref-1",className:"footnote-backref"},"\u21a9")),(0,n.yg)("li",{parentName:"ol",id:"fn-2"},(0,n.yg)("a",{parentName:"li",href:"https://www.ibm.com/docs/en/zos/2.4.0?topic=calls-pass-by-reference-c-only#:~:text=Pass%2Dby%2Dreferences%20is%20more%20efficient%20than%20pass%2Dby%2Dvalue%2C%20because%20it%20does%20not%20copy%20the%20arguments.%20The%20formal%20parameter%20is%20an%20
1alias%20for%20the%20argument.%20When%20the%20called%20function%20read%20or%20write%20the%20formal%20parameter%2C%20it%20is%20actually%20read%20or%20write%20the%20argument%20itself."},"ibm.com - Pass by reference (C++ only)"),(0,n.yg)("a",{parentName:"li",href:"#fnref-2",className:"footnote-backref"},"\u21a9")),(0,n.yg)("li",{parentName:"ol",id:"fn-3"},(0,n.yg)("a",{parentName:"li",href:"https://stackoverflow.com/questions/18347109/c-pass-by-value-with-non-primitive-types"},"stackoverflow.com - C++ pass-by-value with non-primitive types?"),(0,n.yg)("a",{parentName:"li",href:"#fnref-3",className:"footnote-backref"},"\u21a9")))))}c.isMDXComponent=!0},5049:(e,t,M)=>{M.d(t,{A:()=>a});const a="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzUwLjY5IDc0NS43MyI+PGRlZnM+PHN0eWxlPi5he2ZpbGw6IzAwODRmYzt9LmEsLmJ7b3BhY2l0eTowLjM7fS5ie2ZpbGw6I2ZmMDAxMzt9LmMsLmQsLmcsLmgsLml7ZmlsbDpub25lO3N0cm9rZTojMDAwO30uYywuZHtzdHJva2UtbGluZWNhcDpyb3VuZDt9LmMsLmQsLmh7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO30uY3tzdHJva2Utd2lkdGg6NXB4O30uZCwuZ3tzdHJva2Utd2lkdGg6OHB4O30uZXtmaWxsOiM2MDYwNjA7fS5me2ZpbGw6IzIxMjEyMTt9LmcsLml7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fS5oLC5pe3N0cm9rZS13aWR0aDoxOHB4O308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTExMjUuNzUsMTc5LjY4bDE4LjA3LTQuMzUsNTguNjEtLjY0LDE2Mi4wNiw1LDIwMS40My0yLjQ5aDE2MS44MWwxMDEuNS00LjU2LDQuMDYsMTlWMzM0Yy0xMDMuMjYsMy0xOTUuODYsNS0yODcuMjksNi03OC41OS44My0xNTYuMzEuOTItMjM5LjIyLjI3LTU2LjQ3LS40NS0xMTUuMzQtMS4yNC0xNzguNTMtMi4zNloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJiIiBkPSJNOTcuMzksMTc4LjhsMTguMDctNC4zNSw1OC42MS0uNjQsMTYyLjA2LDUsMjAxLjQzLTIuNUg2OTkuMzdsMTAxLjUtNC41NSw0LjA2LDE5VjMzMy4xYy0xMDMuMjYsMy0xOTUuODYsNS0yODcuMjksNi03OC41OS44My0xNTYuMzEuOTItMjM5LjIyLjI2QzIyMiwzMzguOTIsMTYzLjA4LDMzOC4xMyw5OS44OSwzMzdaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iYyIgZD0iTTEwNC40NCw5MDIuMjdjMjU1LDEyLjU3LDQ3OS4xLDExLjE4LDcxMS4xMi0uNzEtMTguMDkuOTMtNC03MzEuMTEtMTQuNjktNzI5LjgxLTM2LjU2LDQuNDItMzY5LDYuODgtNDQyLDcuMjUtNzEuNzMuMzctMjU3Ljc2LTEyLjMtMjYxLjQ4LS4yLTIuMTYsNyw0LjgxLDI3NC4wNyw2LjMxLDM0OC42NEMxMDYuMTYsNjQ5LjU0LDEwMiw3ODAuMTcsMTA0LjQ0LDkwMi4yN1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJjIiBkPSJNMTk3LjE4LDY2OS44NWM1OS01LDEyOC42My4xMSwxODUuOTIuMTEuMTgtMTguOC0zLjkyLTE5MS40MywxLjI3LTE5MS43NS0xNS45Mi43OC0xOTEuNjQsNS0xOTEuODQtLjEyLDEuMjMsMTkuNSwwLDE2NS4zMSw0LjI4LDE5MS44WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImMiIGQ9Ik01MjcuNTYsNjI5LjJjNjAuODUsNS4yLDEzMi42OC0uMTEsMTkxLjc4LS4xMS4xOCwxOS4zOS00LDE5Ny40NiwxLjMsMTk3LjgtMTYuNDEtLjgxLTE5Ny42Ny01LjE3LTE5Ny44OC4xMSwxLjI3LTIwLjExLDAtMTcwLjUxLDQuNDEtMTk3LjgzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggZD0iTTM0Ni4zNywyNTIuMjNjMC02LS4yMi0xMC44NC0uNDQtMTUuNDRoMTFsLjYsNy4zMmguMjhhMTcsMTcsMCwwLDEsMTUuMDUtOC40MWM2LjUzLDAsMTEuNDgsMy40OCwxMy42Myw5LjA5aC4yMmEyMC4yOSwyMC4yOSwwLDAsMSw2LjEtNi4zNCwxNywxNywwLDAsMSw5LjcxLTIuNzVjOC42MywwLDE2LjI5LDYuMTIsMTYuMjksMjEuODd2MzJINDA2LjI2di0zMGMwLTguMDctMi4zNy0xMy4zNy04LjM4LTEzLjM3LTQuMDgsMC03LjE0LDIuOTMtOC40MSw2Ljc2YTE1LjYxLDE1LjYxLDAsMCwwLS42LDQuMzh2MzIuMjVIMzc2LjMyVjI1OC4wN2MwLTYuNjItMi4yOC0xMS45MS04LjE1LTExLjkxLTQuMzIsMC03LjQ3LDMuNC04LjY0LDcuMjFhMTQuMzksMTQuMzksMCwwLDAtLjYsNC4zNXYzMS44M0gzNDYuMzdaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNNDU5LjQ4LDI4OS41NWwtLjg0LTUuNzNoLS4zYTE3LjI0LDE3LjI0LDAsMCwxLTE0LjI0LDYuODJjLTkuNzYsMC0xNS42Mi03LjI1LTE1LjYyLTE1LjY2LDAtMTMuMzksMTEuNzQtMTkuODIsMjguOTItMTkuOHYtMWMwLTQuMDgtMS42LTkuMjctOS44Ni05LjI1YTI0Ljk0LDI0Ljk0LDAsMCwwLTEyLjg4LDMuNjRsLTIuNTItOC40M2MzLjU3LTIuMTksMTAtNC40MSwxNy43Ni00LjQxLDE1LjkyLDAsMjAuMzQsMTAuMjYsMjAuMzQsMjEuNzN2MTkuNjJhODAuNDYsODAuNDYsMCwwLDAsLjc4LDEyLjVabS0xLjc0LTI2Yy03Ljk0LS4wNy0xNi42OSwxLjY5LTE2LjY5LDEwLjA3LDAsNS40LDMuMzMsNy43NSw3LDcuNzVhOS42MSw5LjYxLDAsMCwwLDkuMzEtNi45MiwxMC40LDEwLjQsMCwwLDAsLjM0LTIuODNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNNDk2LjgxLDIyMi4zMWMwLDQtMi44LDctNy4yNCw3YTcuMDUsNy4wNSwwLDEsMSw3LjI0LTdabS0xMy40Niw2Ny4yNFYyMzYuNzloMTIuODF2NTIuNzZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNNTA5LjQ3LDI1Mi4yM2MwLTYtLjIyLTEwLjg0LS40NC0xNS40NEg1MjAuMmwuNjMsNy40MWguMjlhMTcuNzEsMTcu
1NzEsMCwwLDEsMTUuNTEtOC41YzkuMDcsMCwxNy4xNyw2LjE5LDE3LjE3LDIxLjU1djMyLjNINTQxVjI1OC42OGMwLTYuODgtMi4yOC0xMi40Ny04Ljg5LTEyLjQ3LTQuNTgsMC03LjkyLDMuMjktOS4yLDcuNDJhMTQuMzIsMTQuMzIsMCwwLDAtLjYxLDQuNHYzMS41Mkg1MDkuNDdaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iYyIgZD0iTTExMzEuNTUsOTAwLjljMjU1LDEyLjU3LDQ3OS4xLDExLjE4LDcxMS4xMS0uNzEtMTguMDguOTItNC03MzEuMTEtMTQuNjgtNzI5LjgxLTM2LjU2LDQuNDEtMzY5LDYuODgtNDQyLDcuMjUtNzEuNzMuMzYtMjU3Ljc2LTEyLjMtMjYxLjQ4LS4yMS0yLjE2LDcsNC44LDI3NC4wNyw2LjMxLDM0OC42NEMxMTMzLjI3LDY0OC4xNiwxMTI5LjA5LDc3OC44LDExMzEuNTUsOTAwLjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iYyIgZD0iTTExMjcsMzM1LjYzYzI2My45LDQuNyw0NTIuNTksMy41MSw3MDUtMy45MSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImMiIGQ9Ik0xMjI0LjI5LDY2OC40OGM1OS01LDEyOC42Mi4xMSwxODUuOTIuMTEuMTctMTguOC0zLjkyLTE5MS40MywxLjI3LTE5MS43Ni0xNS45Mi43OC0xOTEuNjQsNS0xOTEuODQtLjExLDEuMjMsMTkuNDksMCwxNjUuMyw0LjI3LDE5MS43OVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJkIiBkPSJNMTI5MS42NSw0MDEuODVjMTUuMzIsMTcuMTIsMzAuNjMsMzIuMjQsNDUuOTUsNDkuMzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJkIiBkPSJNMTMzNy41LDQwMC40OGMtMTUuMjksMTguNy0yOS41OSwzNC40LTQ0Ljg5LDUzLjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJkIiBkPSJNMTYyNy4xNyw1NDQuODVsMjMuMSwyOS42MiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImQiIGQ9Ik0xNjY5LjExLDU0My44MWMtMTIsMjIuMTQtMjQuMSw0My4yOC0zNi4xNSw2NS40MiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImMiIGQ9Ik0xNTU0LjY3LDYyNy44M2M2MC44NSw1LjIsMTMyLjY4LS4xMSwxOTEuNzgtLjExLjE4LDE5LjM5LTQsMTk3LjQ2LDEuMywxOTcuNzktMTYuNDEtLjgxLTE5Ny42Ny01LjE2LTE5Ny44OC4xMiwxLjI3LTIwLjExLDAtMTcwLjUxLDQuNDEtMTk3Ljg0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggZD0iTTEzNzIuNzYsMjc2LjMxYTI2LDI2L
1DAsMCwwLDEyLjE1LDMuNTJjNS4zNSwwLDcuOTQtMi4zOCw3Ljk0LTUuOTVzLTItNS40MS04LTcuOTVjLTkuNTgtMy44OC0xMy40NS05LjM0LTEzLjQyLTE1LjMyLDAtOS4yMiw3LjM5LTE2LjI5LDE4Ljg1LTE2LjI5YTI3LjUyLDI3LjUyLDAsMCwxLDEyLjg0LDNsLTIuNTcsOS4xMmEyMC41NSwyMC41NSwwLDAsMC0xMC0yLjhjLTQuNTIsMC03LDIuNDQtNyw1LjU2czIuMTYsNC44Miw4LjM1LDcuNDljOC44MywzLjY0LDEzLDguNjIsMTMuMDgsMTYsMCwxMC03LjUsMTYuNDYtMjAuMjMsMTYuNDYtNS43MSwwLTExLjIxLTEuNDMtMTQuNjQtMy41WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggZD0iTTE0MjMuMTIsMjM1LjQybDUsMjRjMS4xNCw1LjY1LDIuMjQsMTEuMjksMy4wNywxNi44OGguMjljMS01LjU0LDIuNTEtMTEuNDQsMy45LTE2Ljc1bDYuNDMtMjQuMTFIMTQ1Mmw2LjEyLDIzLjVjMS41MSw2LjA3LDIuODUsMTEuNzEsMy44NiwxNy4zNmguMjdjLjczLTUuNTYsMS44My0xMS4yNSwzLjE0LTE3LjMxbDUuMzEtMjMuNTVoMTIuNjFsLTE1LjYxLDUyLjc2aC0xMS42bC01LjktMjEuNTNhMTU3LjE4LDE1Ny4xOCwwLDAsMS0zLjYyLTE2LjY4aC0uMjJhMTQyLjM3LDE0Mi4zNywwLDAsMS0zLjc0LDE2LjczbC02LjI5LDIxLjQ4aC0xMS42NmwtMTQuODEtNTIuNzZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNMTUxOCwyODguMThsLS44NC01LjczaC0uMzFhMTcuMjQsMTcuMjQsMCwwLDEtMTQuMjMsNi44MmMtOS43NiwwLTE1LjYzLTcuMjYtMTUuNjMtMTUuNjYsMC0xMy4zOSwxMS43NC0xOS44MywyOC45My0xOS44di0xYzAtNC4wOC0xLjYxLTkuMjgtOS44Ny05LjI1YTI1LjA2LDI1LjA2LDAsMCwwLTEyLjg4LDMuNjNsLTIuNTEtOC40M2MzLjU3LTIuMTgsMTAtNC40MSwxNy43Ni00LjQxLDE1LjkyLDAsMjAuMzQsMTAuMjYsMjAuMzQsMjEuNzN2MTkuNjNhNzkuMzIsNzkuMzIsMCwwLDAsLjc4LDEyLjVabS0xLjc0LTI2Yy03Ljk0LS4wNy0xNi42OSwxLjctMTYuNjksMTAuMDgsMCw1LjQsMy4zMiw3Ljc1LDcsNy43NWE5LjYxLDkuNjEsMCwwLDAsOS4zLTYuOTIsMTAuMTQsMTAuMTQsMCwwLDAsLjM1LTIuODRaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNMTU0MS44NiwyNTIuNjRjMC02LjkzLS4yMS0xMi40Mi0uNDMtMTcuMjJoMTEuMjRsLjYzLDcuNTloLjIyYzMuNDctNS42NSw5LTguNjksMTYtOC42OSwxMS42MSwwLDIwLjI0LDEwLjY1LDIwLjI0LDI2LjkzLDAsMTkuMTQtMTAuODMsMjgtMjEuODIsMjgtNiwwLTEwLjc0LTIuOC0xMy4wNi02LjZoLS4yMnYyNi43N2gtMTIuNzlabTEyLjc5LDE0LjI4YTE1LjkyLDE1LjkyLDAsMCwwLC40MywzLjg3YzEuMzUsNS4zNCw1LjQ1LDguNCwxMCw4LjQsNy42OCwwLDExLjc1LTcuNDEsMTEuNzUtMTcuNDYsMC05LjY4LTMuOTMtMTcuMTEtMTEuNTItMTcuMTEtNC43MiwwLTksMy43OC0xMC4xNyw4Ljk0YTEzLjcxLDEzLjcxLDAsMCwwLS40OCwzLjUyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImQiIGQ9Ik0yOTUuNSw0MTcuMzljLTYuMDUtNS0xNi4yLTQuNy0yMy0uNTFTMjYyLDQyOC4zMiwyNjAuODYsNDM1LjU3Yy0xLjIxLDcuODEsMS4yMywxNy4wNyw5LjI1LDIwLjU0LDkuMTgsMy45NSwyMC42Mi0yLjMsMjQuNTMtMTAuNjJzMi40NS0xNy43NC45MS0yNi42NGMxLDE0Ljg4LDEwLjg0LDI5LjA4LDI1LjM2LDM2Ljc0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iZCIgZD0iTTYwNS41Niw1MjYuMDVsMS43Myw2Ni43MWMtMi4yNy05LjI2LS42NS0yMS40OCw5LjE4LTI1LjQ1czIyLjQ2LDEuMiwyNi42NCwxMC41NC0uMywyMS4yMy05LjUxLDI2LjM3LTIwLjE1LDIuMzItMjYuMi02IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iZSIgZD0iTTI2MS4yLDYwMS43NGMyNC44Ny0yMS40NywzOS45MS0zNS4yMSwzOS45MS00Ny41NSwwLTguNC01LjE0LTEzLjY4LTE1LjE1LTEzLjY4LTYuOTEsMC0xMi43Myw0LjA3LTE3LjU0LDguNzdsLTgtNy45NWM3Ljc2LTcuOCwxNS42OS0xMi4zNiwyNy40MS0xMi4zNiwxNi4zOSwwLDI3LjA5LDkuNywyNy4wOSwyNC40NCwwLDE0LjE5LTE0LjM4LDI4Ljc2LTMyLjg2LDQ1LjI0LDQuNzgtLjQyLDEwLjIzLS43NiwxNC42Ni0uNzZoMjIuNDR2MTIuMjNoLTU4WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImYiIGQ9Ik01ODkuNjgsNzU2LjQ1bDYuNzQtOS4zMmM1LjI5LDQuNTcsMTEuNTcsOC41NCwyMC42LDguNTQsMTAuMDgsMCwxNy43MS01LjYzLDE3LjcxLTE1LjI1LDAtOS40Ni02LjkzLTE0Ljc4LTE3LTE0Ljc4LTUuOTQsMC05LjMsMS4zLTE0LjgsNC4zOWwtNi44OC00LjQzLDIuNC0zOS4yOWg0N3YxMi4zMkg2MTEuMDhsLTEuNzIsMTkuMTJhMzEuMjMsMzEuMjMsMCwwLDEsMTIuNTYtMi41MmMxNSwwLDI3LjM2LDcuNzYsMjcuMzYsMjQuODQsMCwxNy40Ni0xNC41NCwyNy40LTMwLjM2LDI3LjRDNjA0Ljg5LDc2Ny40Nyw1OTYsNzYyLjMyLDU4OS42OCw3NTYuNDVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iZiIgZD0iTTEyODYuMjUsNTk5LjY4bDYuNzQtOS4zMmM1LjI4LDQuNTcsMTEuNTYsOC41NCwyMC41OSw4LjU0LDEwLjA4LDAsMTcuNzEtNS42MywxNy43MS0xNS4yNSwwLTkuNDUtNi45My0xNC43OC0xNy0xNC43OC01Ljk0LDAtOS4zLDEuMzEtMTQuNzksNC4zOWwtNi44OS00LjQyLDIuNC0zOS4yOWg0N3YxMi4zMWgtMzQuMzlMMTMwNS45Myw1NjFhMzEuMzYsMzEuMzYsMCwwLDEsMTIuNTYtMi41MmMxNC45NCwwLDI3LjM2LDcuNzYsMjcuMzYsMjQuODUsMCwxNy40NS0xNC41NCwyNy4zOS0zMC4zNiwyNy4zOUMxMzAxLjQ1LDYxMC43LDEyOTIuNjEsNjA1LjU1LDEyODYuMjUsNTk5LjY4WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImUiIGQ9Ik0xNjE3LjIzLDc1Ny43N2MyNC44Ny0yMS40NiwzOS45Mi0zNS4yLDM5LjkyLTQ3LjU1LDAtOC40LTUuMTQtMTMuNjgtMTUuMTYtMTMuNjgtNi45MSwwLTEyLjczLDQuMDctMTcuNTQsOC43OGwtOC04YzcuNzYtNy44MSwxNS42OS0xMi4zNywyNy40MS0xMi4zNywxNi4zOSwwLDI3LjA5LDkuNzEsMjcuMDksMjQuNDQsMCwxNC4xOS0xNC4zNywyOC43Ni0zMi44NSw0NS4yNCw0Ljc3LS40MiwxMC4yMi0uNzYsMTQuNjYtLjc2aDIyLjQzdjEyLjI0aC01OFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0
15NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJjIiBkPSJNOTguNjQsMzQwLjM2YzI2My45LDQuNyw0NTIuNTksMy41LDcwNS0zLjkxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iZyIgZD0iTTE0NTAuNDksNTE1YTIwNC42MiwyMDQuNjIsMCwwLDEsMTEwLjMxLDU4LjUyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cG9seWdvbiBwb2ludHM9IjE0NDcuMTQgNDE0LjUxIDE0ODQuODEgNDI3LjU5IDE0NzcuMzEgMzg4LjQyIDE0NDcuMTQgNDE0LjUxIi8+PHBhdGggY2xhc3M9ImciIGQ9Ik0xNTA4LjQ5LDc4Ni4zYTIwNC42MiwyMDQuNjIsMCwwLDEtMTEwLjMxLTU4LjUyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cG9seWdvbiBwb2ludHM9IjEzMjIuODkgNTUxLjA0IDEyODUuMjEgNTM3Ljk2IDEyOTIuNzEgNTc3LjEzIDEzMjIuODkgNTUxLjA0Ii8+PHBhdGggY2xhc3M9ImgiIGQ9Ik04NjUuNzYsNTU3LjIzaDE2Ni4wOCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBvbHlnb24gcG9pbnRzPSI5MjkuMjIgNDE3LjE4IDk3Ny40IDM4OS4zNiA5MjkuMjIgMzYxLjU0IDkyOS4yMiA0MTcuMTgiLz48cGF0aCBjbGFzcz0iaCIgZD0iTTEwNzEuODgsNjA2LjEySDkwNS44IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cG9seWdvbiBwb2ludHM9IjgxOS40NyA0MTAuNDIgNzcxLjI4IDQzOC4yNSA4MTkuNDcgNDY2LjA3IDgxOS40NyA0MTAuNDIiLz48cGF0aCBjbGFzcz0iaSIgZD0iTTk5OS45NCw1MDkuODEsOTM1LjE1LDY1OS4xMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PC9zdmc+"},5680:(e,t,M)=>{M.d(t,{xA:()=>y,yg:()=>o});var a=M(6540);function n(e,t,M){return t in e?Object.defineProperty(e,t,{value:M,enumerable:!0,configurable:!0,writable:!0}):e[t]=M,e}function L(e,t){var M=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),M.push.apply(M,a)}return M}function i(e){for(var t=1;t<arguments.length;t++){var M=null!=arguments[t]?arguments[t]:{};t%2?L(Object(M),!0).forEach((function(t){n(e,t,M[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(M)):L(Object(M)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(M,t))}))}return e}function s(e,t){if(null==e)return{};var M,a,n=function(e,t){if(null==e)return{};var M,a,n={},L=Object.keys(e);for(a=0;a<L.length;a++)M=L[a],t.indexOf(M)>=0||(n[M]=e[M]);return n}(e,t);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(e);for(a=0;a<L.length;a++)M=L[a],t.indexOf(M)>=0||Object.prototype.propertyIsEnumerable.call(e,M)&&(n[M]=e[M])}return n}var N=a.createContext({}),u=function(e){var t=a.useContext(N),M=t;return e&&(M="function"==typeof e?e(t):i(i({},t),e)),M},y=function(e){var t=u(e.components);return a.createElement(N.Provider,{value:t},e.children)},j="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},r=a.forwardRef((function(e,t){var M=e.components,n=e.mdxType,L=e.originalType,N=e.parentName,y=s(e,["components","mdxType","originalType","parentName"]),j=u(M),r=n,o=j["".concat(N,".").concat(r)]||j[r]||c[r]||L;return M?a.createElement(o,i(i({ref:t},y),{},{components:M})):a.createElement(o,i({ref:t},y))}));function o(e,t){var M=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var L=M.length,i=new Array(L);i[0]=r;var s={};for(var N in t)hasOwnProperty.call(t,N)&&(s[N]=t[N]);s.originalType=e,s[j]="string"==typeof e?e:n,i[1]=s;for(var u=2;u<L;u++)i[u]=M[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,M)}r.displayName="MDXCreateElement"},7749:(e,t,M)=>{M.d(t,{A:()=>a});const a=M.p+"assets/images/function-passing-values-5ae5f7f22c367eff0a1fb0ce361eaf1d.svg"},8259:(e,t,M)=>{M.d(t,{A:()=>a});const a=M.p+"assets/images/function-return-value-941e35c0aae3530eec32123dc3452d76.svg"},9845:(e,t,M)=>{M.d(t,{A:()=>a});const a="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzUwLjY5IDc0NS43MyI+PGRlZnM+PHN0eWxlPi5he2ZpbGw6IzAwODRmYzt9LmEsLmJ7b3BhY2l0eTowLjM7fS5ie2ZpbGw6I2ZmMDAxMzt9LmMsLmQsLmcsLmh7ZmlsbDpub25lO3N0cm9rZTojMDAwO30uYywuZHtzdHJva2UtbGluZWNhcDpyb3VuZDt9LmMsLmQsLmh7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO30uY3tzdHJva2Utd2lkdGg6NXB4O30uZCwuZ3tzdHJva2Utd2lkdGg6OHB4O30uZXtmaWxsOiMyMTIxMjE7fS5me2ZpbGw6IzYwNjA2MDt9Lmd7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fS5oe3N0cm9rZS13aWR0aDoxOHB4O308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTExMjUuNzUsMTc5LjY4bDE4LjA3LTQuMzUsNTguNjEtLjY0LDE2Mi4wNiw1LDIwMS40My0yLjQ5aDE2MS44MWwxMDEuNS00LjU2LDQuMDYsMTlWMzM0Yy0xMDMuMjYsMy0xOTUuODYsNS0yODcuMjksNi03OC41OS44My0xNTYuMzEuOTItMjM5LjIyLjI3LTU2LjQ3LS40NS0xMTUuMzQtMS4yNC0xNzguNTMtMi4zNloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0
15NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJiIiBkPSJNOTcuMzksMTc4LjhsMTguMDctNC4zNSw1OC42MS0uNjQsMTYyLjA2LDUsMjAxLjQzLTIuNUg2OTkuMzdsMTAxLjUtNC41NSw0LjA2LDE5VjMzMy4xYy0xMDMuMjYsMy0xOTUuODYsNS0yODcuMjksNi03OC41OS44My0xNTYuMzEuOTItMjM5LjIyLjI2QzIyMiwzMzguOTIsMTYzLjA4LDMzOC4xMyw5OS44OSwzMzdaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iYyIgZD0iTTEwNC40NCw5MDIuMjdjMjU1LDEyLjU3LDQ3OS4xLDExLjE4LDcxMS4xMi0uNzEtMTguMDkuOTMtNC03MzEuMTEtMTQuNjktNzI5LjgxLTM2LjU2LDQuNDItMzY5LDYuODgtNDQyLDcuMjUtNzEuNzMuMzctMjU3Ljc2LTEyLjMtMjYxLjQ4LS4yLTIuMTYsNyw0LjgxLDI3NC4wNyw2LjMxLDM0OC42NEMxMDYuMTYsNjQ5LjU0LDEwMiw3ODAuMTcsMTA0LjQ0LDkwMi4yN1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJjIiBkPSJNMTk3LjE4LDY2OS44NWM1OS01LDEyOC42My4xMSwxODUuOTIuMTEuMTgtMTguOC0zLjkyLTE5MS40MywxLjI3LTE5MS43NS0xNS45Mi43OC0xOTEuNjQsNS0xOTEuODQtLjEyLDEuMjMsMTkuNSwwLDE2NS4zMSw0LjI4LDE5MS44WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImMiIGQ9Ik01MjcuNTYsNjI5LjJjNjAuODUsNS4yLDEzMi42OC0uMTEsMTkxLjc4LS4xMS4xOCwxOS4zOS00LDE5Ny40NiwxLjMsMTk3LjgtMTYuNDEtLjgxLTE5Ny42Ny01LjE3LTE5Ny44OC4xMSwxLjI3LTIwLjExLDAtMTcwLjUxLDQuNDEtMTk3LjgzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggZD0iTTM0Ni4zNywyNTIuMjNjMC02LS4yMi0xMC44NC0uNDQtMTUuNDRoMTFsLjYsNy4zMmguMjhhMTcsMTcsMCwwLDEsMTUuMDUtOC40MWM2LjUzLDAsMTEuNDgsMy40OCwxMy42Myw5LjA5aC4yMmEyMC4yOSwyMC4yOSwwLDAsMSw2LjEtNi4zNCwxNywxNywwLDAsMSw5LjcxLTIuNzVjOC42MywwLDE2LjI5LDYuMTIsMTYuMjksMjEuODd2MzJINDA2LjI2di0zMGMwLTguMDctMi4zNy0xMy4zNy04LjM4LTEzLjM3LTQuMDgsMC03LjE0LDIuOTMtOC40MSw2Ljc2YTE1LjYxLDE1LjYxLDAsMCwwLS42LDQuMzh2MzIuMjVIMzc2LjMyVjI1OC4wN2MwLTYuNjItMi4yOC0xMS45MS04LjE1LTExLjkxLTQuMzIsMC03LjQ3LDMuNC04LjY0LDcuMjFhMTQuMzksMTQuMzksMCwwLDAtLjYsNC4zNXYzMS44M0gzNDYuMzdaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNNDU5LjQ4LDI4OS41NWwtLjg0LTUuNzNoLS4zYTE3LjI0LDE3LjI0LDAsMCwxLTE0LjI0LDYuODJjLTkuNzYsMC0xNS42Mi03LjI1LTE1LjYyLTE1LjY2LDAtMTMuMzksMTEuNzQtMTkuODIsMjguOTItMTkuOHYtMWMwLTQuMDgtMS42LTkuMjctOS44Ni05LjI1YTI0Ljk0LDI0Ljk0LDAsMCwwLTEyLjg4LDMuNjRsLTIuNTItOC40M2MzLjU3LTIuMTksMTAtNC40MSwxNy43Ni00LjQxLDE1LjkyLDAsMjAuMzQsMTAuMjYsMjAuMzQsMjEuNzN2MTkuNjJhODAuNDYsODAuNDYsMCwwLDAsLjc4LDEyLjVabS0xLjc0LTI2Yy03Ljk0LS4wNy0xNi42OSwxLjY5LTE2LjY5LDEwLjA3LDAsNS40LDMuMzMsNy43NSw3LDcuNzVhOS42MSw5LjYxLDAsMCwwLDkuMzEtNi45MiwxMC40LDEwLjQsMCwwLDAsLjM0LTIuODNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNNDk2LjgxLDIyMi4zMWMwLDQtMi44LDctNy4yNCw3YTcuMDUsNy4wNSwwLDEsMSw3LjI0LTdabS0xMy40Niw2Ny4yNFYyMzYuNzloMTIuODF2NTIuNzZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNNTA5LjQ3LDI1Mi4yM2MwLTYtLjIyLTEwLjg0LS40NC0xNS40NEg1MjAuMmwuNjMsNy40MWguMjlhMTcuNzEsMTcuNzEsMCwwLDEsMTUuNTEtOC41YzkuMDcsMCwxNy4xNyw2LjE5LDE3LjE3LDIxLjU1djMyLjNINTQxVjI1OC42OGMwLTYuODgtMi4yOC0xMi40Ny04Ljg5LTEyLjQ3LTQuNTgsMC03LjkyLDMuMjktOS4yLDcuNDJhMTQuMzIsMTQuMzIsMCwwLDAtLjYxLDQuNHYzMS41Mkg1MDkuNDdaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iYyIgZD0iTTExMzEuNTUsOTAwLjljMjU1LDEyLjU3LDQ3OS4xLDExLjE4LDcxMS4xMS0uNzEtMTguMDguOTItNC03MzEuMTEtMTQuNjgtNzI5LjgxLTM2LjU2LDQuNDEtMzY5LDYuODgtNDQyLDcuMjUtNzEuNzMuMzYtMjU3Ljc2LTEyLjMtMjYxLjQ4LS4yMS0yLjE2LDcsNC44LDI3NC4wNyw2LjMxLDM0OC42NEMxMTMzLjI3LDY0OC4xNiwxMTI5LjA5LDc3OC44LDExMzEuNTUsOTAwLjlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iYyIgZD0iTTExMjcsMzM1LjYzYzI2My45LDQuNyw0NTIuNTksMy41MSw3MDUtMy45MSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImMiIGQ9Ik0xMjI0LjI5LDY2OC40OGM1OS01LDEyOC42Mi4xMSwxODUuOTIuMTEuMTctMTguOC0zLjkyLTE5MS40MywxLjI3LTE5MS43Ni0xNS45Mi43OC0xOTEuNjQsNS0xOTEuODQtLjExLDEuMjMsMTkuNDksMCwxNjUuMyw0LjI3LDE5MS43OVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJkIiBkPSJNMTI5MS42NSw0MDEuODVjMTUuMzIsMTcuMTIsMzAuNjMsMzIuMjQsNDUuOTUsNDkuMzUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJkIiBkPSJNMTMzNy41LDQwMC40OGMtMTUuMjksMTguNy0yOS41OSwzNC40LTQ0Ljg5LDUzLjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJkIiBkPSJNMTYyNy4xNyw1NDQuODVsMjMuMSwyOS42MiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImQiIGQ9Ik0xNjY5LjExLDU0My44MWMtMTIsMjIuMTQtMjQuMSw0My4yOC0zNi4xNSw2NS40MiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImMiIGQ9Ik0xNTU0LjY3LDYyNy44M2M2MC44NSw1LjIsMTMyLjY4LS4xMSwxOTEuNzgtLjExLjE4LDE5LjM5LTQsMTk3LjQ2LDEuMywxOTcuNzktMTYuNDEtLjgxLTE5Ny42Ny01LjE2LTE5Ny44OC4xMiwxLjI3LTIwLjExLDAtMTcwLjUxLDQuNDEtMTk3Ljg0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggZD0iTTEzNzIuNzYsMjc2LjMxYTI2LDI2L
1DAsMCwwLDEyLjE1LDMuNTJjNS4zNSwwLDcuOTQtMi4zOCw3Ljk0LTUuOTVzLTItNS40MS04LTcuOTVjLTkuNTgtMy44OC0xMy40NS05LjM0LTEzLjQyLTE1LjMyLDAtOS4yMiw3LjM5LTE2LjI5LDE4Ljg1LTE2LjI5YTI3LjUyLDI3LjUyLDAsMCwxLDEyLjg0LDNsLTIuNTcsOS4xMmEyMC41NSwyMC41NSwwLDAsMC0xMC0yLjhjLTQuNTIsMC03LDIuNDQtNyw1LjU2czIuMTYsNC44Miw4LjM1LDcuNDljOC44MywzLjY0LDEzLDguNjIsMTMuMDgsMTYsMCwxMC03LjUsMTYuNDYtMjAuMjMsMTYuNDYtNS43MSwwLTExLjIxLTEuNDMtMTQuNjQtMy41WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggZD0iTTE0MjMuMTIsMjM1LjQybDUsMjRjMS4xNCw1LjY1LDIuMjQsMTEuMjksMy4wNywxNi44OGguMjljMS01LjU0LDIuNTEtMTEuNDQsMy45LTE2Ljc1bDYuNDMtMjQuMTFIMTQ1Mmw2LjEyLDIzLjVjMS41MSw2LjA3LDIuODUsMTEuNzEsMy44NiwxNy4zNmguMjdjLjczLTUuNTYsMS44My0xMS4yNSwzLjE0LTE3LjMxbDUuMzEtMjMuNTVoMTIuNjFsLTE1LjYxLDUyLjc2aC0xMS42bC01LjktMjEuNTNhMTU3LjE4LDE1Ny4xOCwwLDAsMS0zLjYyLTE2LjY4aC0uMjJhMTQyLjM3LDE0Mi4zNywwLDAsMS0zLjc0LDE2LjczbC02LjI5LDIxLjQ4aC0xMS42NmwtMTQuODEtNTIuNzZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNMTUxOCwyODguMThsLS44NC01LjczaC0uMzFhMTcuMjQsMTcuMjQsMCwwLDEtMTQuMjMsNi44MmMtOS43NiwwLTE1LjYzLTcuMjYtMTUuNjMtMTUuNjYsMC0xMy4zOSwxMS43NC0xOS44MywyOC45My0xOS44di0xYzAtNC4wOC0xLjYxLTkuMjgtOS44Ny05LjI1YTI1LjA2LDI1LjA2LDAsMCwwLTEyLjg4LDMuNjNsLTIuNTEtOC40M2MzLjU3LTIuMTgsMTAtNC40MSwxNy43Ni00LjQxLDE1LjkyLDAsMjAuMzQsMTAuMjYsMjAuMzQsMjEuNzN2MTkuNjNhNzkuMzIsNzkuMzIsMCwwLDAsLjc4LDEyLjVabS0xLjc0LTI2Yy03Ljk0LS4wNy0xNi42OSwxLjctMTYuNjksMTAuMDgsMCw1LjQsMy4zMiw3Ljc1LDcsNy43NWE5LjYxLDkuNjEsMCwwLDAsOS4zLTYuOTIsMTAuMTQsMTAuMTQsMCwwLDAsLjM1LTIuODRaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBkPSJNMTU0MS44NiwyNTIuNjRjMC02LjkzLS4yMS0xMi40Mi0uNDMtMTcuMjJoMTEuMjRsLjYzLDcuNTloLjIyYzMuNDctNS42NSw5LTguNjksMTYtOC42OSwxMS42MSwwLDIwLjI0LDEwLjY1LDIwLjI0LDI2LjkzLDAsMTkuMTQtMTAuODMsMjgtMjEuODIsMjgtNiwwLTEwLjc0LTIuOC0xMy4wNi02LjZoLS4yMnYyNi43N2gtMTIuNzlabTEyLjc5LDE0LjI4YTE1LjkyLDE1LjkyLDAsMCwwLC40MywzLjg3YzEuMzUsNS4zNCw1LjQ1LDguNCwxMCw4LjQsNy42OCwwLDExLjc1LTcuNDEsMTEuNzUtMTcuNDYsMC05LjY4LTMuOTMtMTcuMTEtMTEuNTItMTcuMTEtNC43MiwwLTksMy43OC0xMC4xNyw4Ljk0YTEzLjcxLDEzLjcxLDAsMCwwLS40OCwzLjUyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImQiIGQ9Ik0yOTUuNSw0MTcuMzljLTYuMDUtNS0xNi4yLTQuNy0yMy0uNTFTMjYyLDQyOC4zMiwyNjAuODYsNDM1LjU3Yy0xLjIxLDcuODEsMS4yMywxNy4wNyw5LjI1LDIwLjU0LDkuMTgsMy45NSwyMC42Mi0yLjMsMjQuNTMtMTAuNjJzMi40NS0xNy43NC45MS0yNi42NGMxLDE0Ljg4LDEwLjg0LDI5LjA4LDI1LjM2LDM2Ljc0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iZCIgZD0iTTYwNS41Niw1MjYuMDVsMS43Myw2Ni43MWMtMi4yNy05LjI2LS42NS0yMS40OCw5LjE4LTI1LjQ1czIyLjQ2LDEuMiwyNi42NCwxMC41NC0uMywyMS4yMy05LjUxLDI2LjM3LTIwLjE1LDIuMzItMjYuMi02IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iZSIgZD0iTTI1OS4zOSw2MDAuNmw2Ljc0LTkuMzJjNS4yOSw0LjU3LDExLjU3LDguNTQsMjAuNiw4LjU0LDEwLjA4LDAsMTcuNzEtNS42MywxNy43MS0xNS4yNSwwLTkuNDUtNi45My0xNC43OC0xNi45NS0xNC43OC01Ljk0LDAtOS4zLDEuMzEtMTQuOCw0LjM5bC02Ljg4LTQuNDIsMi40LTM5LjI5aDQ3djEyLjMySDI4MC43OWwtMS43MiwxOS4xMWEzMS40NCwzMS40NCwwLDAsMSwxMi41Ny0yLjUyYzE0Ljk0LDAsMjcuMzUsNy43NiwyNy4zNSwyNC44NSwwLDE3LjQ1LTE0LjU0LDI3LjQtMzAuMzUsMjcuNEMyNzQuNiw2MTEuNjMsMjY1Ljc2LDYwNi40NywyNTkuMzksNjAwLjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iZiIgZD0iTTU5MS40OSw3NTcuNTljMjQuODctMjEuNDcsMzkuOTEtMzUuMjEsMzkuOTEtNDcuNTYsMC04LjQtNS4xNC0xMy42OC0xNS4xNS0xMy42OC02LjkyLDAtMTIuNzMsNC4wNy0xNy41NCw4Ljc4bC04LThjNy43Ni03LjgxLDE1LjY5LTEyLjM3LDI3LjQxLTEyLjM3LDE2LjM4LDAsMjcuMDgsOS43MSwyNy4wOCwyNC40NSwwLDE0LjE5LTE0LjM3LDI4Ljc2LTMyLjg1LDQ1LjIzLDQuNzgtLjQyLDEwLjIzLS43NiwxNC42Ni0uNzZoMjIuNDRWNzY2aC01OFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJlIiBkPSJNMTI4Ni4yNSw1OTkuNjhsNi43NC05LjMyYzUuMjgsNC41NywxMS41Niw4LjU0LDIwLjU5LDguNTQsMTAuMDgsMCwxNy43MS01LjYzLDE3LjcxLTE1LjI1LDAtOS40NS02LjkzLTE0Ljc4LTE3LTE0Ljc4LTUuOTQsMC05LjMsMS4zMS0xNC43OSw0LjM5bC02Ljg5LTQuNDIsMi40LTM5LjI5aDQ3djEyLjMxaC0zNC4zOUwxMzA1LjkzLDU2MWEzMS4zNiwzMS4zNiwwLDAsMSwxMi41Ni0yLjUyYzE0Ljk0LDAsMjcuMzYsNy43NiwyNy4zNiwyNC44NSwwLDE3LjQ1LTE0LjU0LDI3LjM5LTMwLjM2LDI3LjM5QzEzMDEuNDUsNjEwLjcsMTI5Mi42MSw2MDUuNTUsMTI4Ni4yNSw1OTkuNjhaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cGF0aCBjbGFzcz0iZiIgZD0iTTE2MTcuMjMsNzU3Ljc3YzI0Ljg3LTIxLjQ2LDM5LjkyLTM1LjIsMzkuOTItNDcuNTUsMC04LjQtNS4xNC0xMy42OC0xNS4xNi0xMy42OC02LjkxLDAtMTIuNzMsNC4wNy0xNy41NCw4Ljc4bC04LThjNy43Ni03LjgxLDE1LjY5LTEyLjM3LDI3LjQxLTEyLjM3LDE2LjM5LDAsMjcuMDksOS43MSwyNy4wOSwyNC40NCwwLDE0LjE5LTE0LjM3LDI4Ljc2LTMyLjg1LDQ1LjI0LDQuNzctLjQyLDEwLjIyLS43NiwxNC42Ni0uNzZoMjIuNDN2MTIuMjRoLTU4WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTk0LjQ4IC0xNjcuODcpIi8+PHBhdGggY2xhc3M9ImMiIGQ9Ik05OC42NCwzNDAuMzZjMjYzLjksNC43LDQ1Mi41OSwzLjUsNzA1LTMuOTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0
15NC40OCAtMTY3Ljg3KSIvPjxwYXRoIGNsYXNzPSJnIiBkPSJNMTQ1MC40OSw1MTVhMjA0LjYyLDIwNC42MiwwLDAsMSwxMTAuMzEsNTguNTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwb2x5Z29uIHBvaW50cz0iMTQ0Ny4xNCA0MTQuNTEgMTQ4NC44MSA0MjcuNTkgMTQ3Ny4zMSAzODguNDIgMTQ0Ny4xNCA0MTQuNTEiLz48cGF0aCBjbGFzcz0iZyIgZD0iTTE1MDguNDksNzg2LjNhMjA0LjYyLDIwNC42MiwwLDAsMS0xMTAuMzEtNTguNTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwb2x5Z29uIHBvaW50cz0iMTMyMi44OSA1NTEuMDQgMTI4NS4yMSA1MzcuOTYgMTI5Mi43MSA1NzcuMTMgMTMyMi44OSA1NTEuMDQiLz48cGF0aCBjbGFzcz0iaCIgZD0iTTg2NS43Niw1NTcuMjNoMTY2LjA4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cG9seWdvbiBwb2ludHM9IjkyOS4yMiA0MTcuMTggOTc3LjQgMzg5LjM2IDkyOS4yMiAzNjEuNTQgOTI5LjIyIDQxNy4xOCIvPjxwYXRoIGNsYXNzPSJoIiBkPSJNMTA3MS44OCw2MDYuMTJIOTA1LjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwb2x5Z29uIHBvaW50cz0iODE5LjQ3IDQxMC40MiA3NzEuMjggNDM4LjI1IDgxOS40NyA0NjYuMDcgODE5LjQ3IDQxMC40MiIvPjxwYXRoIGNsYXNzPSJnIiBkPSJNNDIyLjcxLDUxNUEyMDQuNiwyMDQuNiwwLDAsMSw1MzMsNTczLjUyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTQuNDggLTE2Ny44NykiLz48cG9seWdvbiBwb2ludHM9IjQxOS4zNSA0MTQuNTEgNDU3LjAzIDQyNy41OSA0NDkuNTMgMzg4LjQyIDQxOS4zNSA0MTQuNTEiLz48cGF0aCBjbGFzcz0iZyIgZD0iTTQ4MC43LDc4Ni4zYTIwNC42MywyMDQuNjMsMCwwLDEtMTEwLjMtNTguNTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC05NC40OCAtMTY3Ljg3KSIvPjxwb2x5Z29uIHBvaW50cz0iMjk1LjEgNTUxLjA0IDI1Ny40MyA1MzcuOTYgMjY0LjkzIDU3Ny4xMyAyOTUuMSA1NTEuMDQiLz48L3N2Zz4="}}]);
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.