diff --git a/404.html b/404.html index 9280d2defbf..d15904ec69b 100644 --- a/404.html +++ b/404.html @@ -10,13 +10,13 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/assets/images/podman-desktop-release-0.12-d5d46c8986e6e893b9ad30aac05c09f7.png b/assets/images/podman-desktop-release-0.12-d5d46c8986e6e893b9ad30aac05c09f7.png new file mode 100644 index 00000000000..800c278cdb0 Binary files /dev/null and b/assets/images/podman-desktop-release-0.12-d5d46c8986e6e893b9ad30aac05c09f7.png differ diff --git a/assets/js/0d040286.137227ca.js b/assets/js/0d040286.4ef398fa.js similarity index 58% rename from assets/js/0d040286.137227ca.js rename to assets/js/0d040286.4ef398fa.js index 0b54b2878c5..1156c0b70a3 100644 --- a/assets/js/0d040286.137227ca.js +++ b/assets/js/0d040286.4ef398fa.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8860],{7951:o=>{o.exports=JSON.parse('{"permalink":"/blog/tags/podman-desktop","page":1,"postsPerPage":3,"totalPages":1,"totalCount":3,"blogDescription":"Discover articles about Podman Desktop","blogTitle":"Podman Desktop blog!"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8860],{7951:o=>{o.exports=JSON.parse('{"permalink":"/blog/tags/podman-desktop","page":1,"postsPerPage":4,"totalPages":1,"totalCount":4,"blogDescription":"Discover articles about Podman Desktop","blogTitle":"Podman Desktop blog!"}')}}]); \ No newline at end of file diff --git a/assets/js/12f1535e.a5c48173.js b/assets/js/12f1535e.a5c48173.js new file mode 100644 index 00000000000..316641c9d63 --- /dev/null +++ b/assets/js/12f1535e.a5c48173.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4781],{5318:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>u});var r=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),i=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},m=function(e){var t=i(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=i(n),u=o,k=c["".concat(p,".").concat(u)]||c[u]||d[u]||a;return n?r.createElement(k,s(s({ref:t},m),{},{components:n})):r.createElement(k,s({ref:t},m))}));function u(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:o,s[1]=l;for(var i=2;i{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>i});var r=n(5773),o=(n(7378),n(5318));const a={title:"Release Notes - Podman Desktop 0.12",description:"Podman Desktop 0.12 has been released!",slug:"podman-desktop-release-0.12",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},s=void 0,l={permalink:"/blog/podman-desktop-release-0.12",source:"@site/blog/2023-02-15-release-0.12.md",title:"Release Notes - Podman Desktop 0.12",description:"Podman Desktop 0.12 has been released!",date:"2023-02-15T00:00:00.000Z",formattedDate:"February 15, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"}],readingTime:4.48,hasTruncateMarker:!0,authors:[{name:"Stevan Le Meur",title:"Product Manager",url:"https://github.com/slemeur",imageURL:"https://github.com/slemeur.png",key:"slemeur"}],frontMatter:{title:"Release Notes - Podman Desktop 0.12",description:"Podman Desktop 0.12 has been released!",slug:"podman-desktop-release-0.12",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},nextItem:{title:"Release Notes - Podman Desktop 0.11",permalink:"/blog/podman-desktop-release-0.11"}},p={authorsImageUrls:[void 0]},i=[],m={toc:i};function d(e){let{components:t,...a}=e;return(0,o.kt)("wrapper",(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"This release note covers Podman Desktop 0.12 release changes."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Podman Version"),": Podman 4.4.1 now included in Windows and Mac installers."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Containers Configuration"),": Configure port mappings for an image without exported ports."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Windows Home Support"),": Podman Desktop now supports Windows Home Edition."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Start minimized"),": Option to start Podman Desktop minimized to system tray."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"UX and UI Improvements"),": Consistent actions, placeholder for logs, unified icons and others.")),(0,o.kt)("p",null,"Podman Desktop 0.12 is now available. ",(0,o.kt)("a",{parentName:"p",href:"/downloads"},"Click here to download it"),"!"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"podman-desktop-0-12-hero",src:n(4132).Z,width:"1015",height:"580"})))}d.isMDXComponent=!0},4132:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/podman-desktop-release-0.12-d5d46c8986e6e893b9ad30aac05c09f7.png"}}]); \ No newline at end of file diff --git a/assets/js/382c5d2b.820cd978.js b/assets/js/382c5d2b.13840be4.js similarity index 88% rename from assets/js/382c5d2b.820cd978.js rename to assets/js/382c5d2b.13840be4.js index d34a13c228c..b27f23e9149 100644 --- a/assets/js/382c5d2b.820cd978.js +++ b/assets/js/382c5d2b.13840be4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1441],{6591:s=>{s.exports=JSON.parse('{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop","allTagsPath":"/blog/tags","count":3}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1441],{6591:s=>{s.exports=JSON.parse('{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop","allTagsPath":"/blog/tags","count":4}')}}]); \ No newline at end of file diff --git a/assets/js/72486833.3b28fbf6.js b/assets/js/72486833.9a29f004.js similarity index 57% rename from assets/js/72486833.3b28fbf6.js rename to assets/js/72486833.9a29f004.js index 0747bc1af69..eac5c29f471 100644 --- a/assets/js/72486833.3b28fbf6.js +++ b/assets/js/72486833.9a29f004.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3505],{3722:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/kubernetes","page":1,"postsPerPage":2,"totalPages":1,"totalCount":2,"blogDescription":"Discover articles about Podman Desktop","blogTitle":"Podman Desktop blog!"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3505],{3722:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/kubernetes","page":1,"postsPerPage":3,"totalPages":1,"totalCount":3,"blogDescription":"Discover articles about Podman Desktop","blogTitle":"Podman Desktop blog!"}')}}]); \ No newline at end of file diff --git a/assets/js/814f3328.48b5f358.js b/assets/js/814f3328.48b5f358.js deleted file mode 100644 index e766f0fcef3..00000000000 --- a/assets/js/814f3328.48b5f358.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2535],{5641:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Release Notes - Podman Desktop 0.11","permalink":"/blog/podman-desktop-release-0.11"},{"title":"Release Notes - Podman Desktop 0.10","permalink":"/blog/podman-desktop-release-0.10"},{"title":"Build & run Podman Desktop in a DevContainer","permalink":"/blog/develop-using-devcontainer"}]}')}}]); \ No newline at end of file diff --git a/assets/js/814f3328.77ab42b5.js b/assets/js/814f3328.77ab42b5.js new file mode 100644 index 00000000000..48563db2bad --- /dev/null +++ b/assets/js/814f3328.77ab42b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2535],{5641:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Release Notes - Podman Desktop 0.12","permalink":"/blog/podman-desktop-release-0.12"},{"title":"Release Notes - Podman Desktop 0.11","permalink":"/blog/podman-desktop-release-0.11"},{"title":"Release Notes - Podman Desktop 0.10","permalink":"/blog/podman-desktop-release-0.10"},{"title":"Build & run Podman Desktop in a DevContainer","permalink":"/blog/develop-using-devcontainer"}]}')}}]); \ No newline at end of file diff --git a/assets/js/83245ae6.40fc3da4.js b/assets/js/83245ae6.40fc3da4.js new file mode 100644 index 00000000000..442583f255c --- /dev/null +++ b/assets/js/83245ae6.40fc3da4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7679],{9867:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>r,toc:()=>d});var n=a(5773),o=(a(7378),a(5318)),i=a(2975);const s={title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",slug:"podman-desktop-release-0.11",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},l=void 0,r={permalink:"/blog/podman-desktop-release-0.11",source:"@site/blog/2023-01-18-release-0.11.md",title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",date:"2023-01-18T00:00:00.000Z",formattedDate:"January 18, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"}],readingTime:9.35,hasTruncateMarker:!0,authors:[{name:"Stevan Le Meur",title:"Product Manager",url:"https://github.com/slemeur",imageURL:"https://github.com/slemeur.png",key:"slemeur"}],frontMatter:{title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",slug:"podman-desktop-release-0.11",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},prevItem:{title:"Release Notes - Podman Desktop 0.12",permalink:"/blog/podman-desktop-release-0.12"},nextItem:{title:"Release Notes - Podman Desktop 0.10",permalink:"/blog/podman-desktop-release-0.10"}},p={authorsImageUrls:[void 0]},d=[{value:"Release Details",id:"release-details",level:2},{value:"Air-Gapped installation #1104 #1120",id:"air-gapped-installation-1104-1120",level:3},{value:"Feedback within Podman Desktop #1078",id:"feedback-within-podman-desktop-1078",level:3},{value:"Docker compatibility mode #1047",id:"docker-compatibility-mode-1047",level:3},{value:"Allow to toggle on/off the proxy setting #983",id:"allow-to-toggle-onoff-the-proxy-setting-983",level:3},{value:"Namespace selection for deploy to kubernetes #1008",id:"namespace-selection-for-deploy-to-kubernetes-1008",level:3},{value:"Configure Podman binary path #941",id:"configure-podman-binary-path-941",level:3},{value:"Provide pre-defined registries #1201",id:"provide-pre-defined-registries-1201",level:3},{value:"UI/UX Improvements",id:"uiux-improvements",level:3},{value:"View Pods logs #1122",id:"view-pods-logs-1122",level:4},{value:"Improved feedback when clicking on container list action icons #1150 #1161",id:"improved-feedback-when-clicking-on-container-list-action-icons-1150-1161",level:4},{value:"Allows to change the default font size for the editor #1160",id:"allows-to-change-the-default-font-size-for-the-editor-1160",level:4},{value:"Keep expanded state of pods when refreshing containers #1042",id:"keep-expanded-state-of-pods-when-refreshing-containers-1042",level:4},{value:"Click on the Pod name redirects to the Pod details page #1159",id:"click-on-the-pod-name-redirects-to-the-pod-details-page-1159",level:4},{value:"Improved styles of buttons for actions #984",id:"improved-styles-of-buttons-for-actions-984",level:4},{value:"Improved alignments in pages with lists #1182",id:"improved-alignments-in-pages-with-lists-1182",level:4},{value:"Other Notable Enhancements",id:"other-notable-enhancements",level:2},{value:"Documentation",id:"documentation",level:2},{value:"Notable bug fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You!",id:"community-thank-you",level:2},{value:"Final Notes",id:"final-notes",level:2}],m={toc:d};function h(e){let{components:t,...a}=e;return(0,o.kt)("wrapper",(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"This release note covers Podman Desktop 0.11 release changes."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Air-Gapped Installation"),": New all-in-one binaries for air-gapped installation."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Feedback"),": Submit feedback directly from Podman Desktop."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Docker Compatibility Mode"),": Information about the Docker compatibility mode."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Proxy Setting"),": Toggle on/off the proxy setting."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Deploy to Kubernetes"),": Select the namespace to deploy to Kubernetes."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Registry Configuration"),": Simplified registry configuration for well known registries."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"UX/UI Improvements"),": View pod's container logs, better visual feedback, configurable editor font size, and more.")),(0,o.kt)("p",null,"Podman Desktop 0.11 is now available. ",(0,o.kt)("a",{parentName:"p",href:"/downloads"},"Click here to download it"),"! "),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"release-details"},"Release Details"),(0,o.kt)("h3",{id:"air-gapped-installation-1104-1120"},"Air-Gapped installation ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1104"},"#1104")," ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1120"},"#1120")),(0,o.kt)("p",null,"For users who are not able to connect to the internet, a new all-in-one (airgap) binary that includes the Podman Desktop application and the Podman binaries is now available for both Mac and Windows. When initializing a new Podman machine using all-in-one binaries, it'll use the embedded files and not grab them from internet: "),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"on Mac, it embeds the qemu FCOS binaries."),(0,o.kt)("li",{parentName:"ul"},"on Windows, it embeds the WSL binary.")),(0,o.kt)("p",null,"To differentiate the air-gapped binaries from the regular ones, you can check the artifactname, they're containing 'airgap' and are bigger.\nPlease note, that those binaries are available only on releases and not the pre-releases."),(0,o.kt)("p",null,"There is also an optional way to provide a custom Podman machine image in the create machine form. By providing the path to the image you want, Podman Desktop will create a machine with that image. Leaving the field empty will use the default image (the one included in the binary)."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/210508524-45005536-ac74-4074-92c1-2b3ca51d0073.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h3",{id:"feedback-within-podman-desktop-1078"},"Feedback within Podman Desktop ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1078"},"#1078")),(0,o.kt)("p",null,"Submitting feedback on Podman Desktop is getting easier as it is possible directly within the tool. This will help to get more information about the issues you are facing and will help us to improve the tool. "),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/208938878-948a2764-d73b-4584-a80d-497c052482c1.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("p",null,"Please feel free to submit any feedback you have, we are looking forward to hearing from you!"),(0,o.kt)("h3",{id:"docker-compatibility-mode-1047"},"Docker compatibility mode ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1047"},"#1047")),(0,o.kt)("p",null,"The Docker compatibility mode is a feature that allows to use Podman as a drop-in replacement for Docker. It relies on the Docker socket helper provided with Podman and automatically handle the local setup of podman path to the Docker socket. Tools like ",(0,o.kt)("a",{parentName:"p",href:"https://www.testcontainers.org/"},"Testcontainers")," or others are relying on this to communicate to the container engine. "),(0,o.kt)("p",null,"In this new version of Podman Desktop, we are now providing information to the user about the status of this compatibility mode directly on the dashboard page. The way it works is the following:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"When Docker is running: the socket is pointing to Docker."),(0,o.kt)("li",{parentName:"ul"},"When Podman is starting and Docker is not running: the docker API socket will use Podman.")),(0,o.kt)("p",null,"In case the compatibility mode is not activated, new documentation on how to activate it and how to easily switch between Docker and Podman is available here: ",(0,o.kt)("a",{parentName:"p",href:"https://podman-desktop.io/docs/migrating-from-docker"},"https://podman-desktop.io/docs/migrating-from-docker"),". "),(0,o.kt)("p",null,"This is a warning displayed for Windows users:\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/436777/209305744-9056addd-f122-4f75-9e03-ad27a0109375.png",alt:"windows-docker-compatibility"})),(0,o.kt)("p",null,"This is the warning for Mac users:\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/207964861-a9c1f72c-89d6-4816-beab-397af4125620.png",alt:"mac-docker-compatibility"})),(0,o.kt)("h3",{id:"allow-to-toggle-onoff-the-proxy-setting-983"},"Allow to toggle on/off the proxy setting ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/983"},"#983")),(0,o.kt)("p",null,"In some context, users need the ability to disable and re-enable the proxy configuration very quickly, without having to entirely reconfigure it. This is now possible from the Podman Desktop settings page, where a toggle to enable/disable the proxy configuration has been added."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/205955418-670bc37c-a74f-40ef-bc60-8d9d013aa0dc.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("p",null,"Note: extensions can read this information and then update the proxy configuration."),(0,o.kt)("h3",{id:"namespace-selection-for-deploy-to-kubernetes-1008"},"Namespace selection for deploy to kubernetes ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1008"},"#1008")),(0,o.kt)("p",null,"A new dropdown menu has been added to the deploy to Kubernetes screen to allow selecting the namespace to deploy to. Defaults to defaultnamespace, if unable to get any from kube_client module."),(0,o.kt)("p",null,"If the user have set ",(0,o.kt)("inlineCode",{parentName:"p"},"kubectl config set-context --current --namespace=NAMESPACE")," it honors that as the chosen value."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/7339809/206688886-095e4f15-42ae-4a0a-b1c6-ae4b547fcdfb.gif",alt:"deploy-kubernetes-namespace"})),(0,o.kt)("h3",{id:"configure-podman-binary-path-941"},"Configure Podman binary path ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/941"},"#941")),(0,o.kt)("p",null,"Users may use a custom path to the podman binary. An option within settings (Settings -> Preferences) to allow providing an additional path to Podman binary has been added. This is useful for users who have installed Podman using a package manager and want to use the binary provided by the package manager. Additional information is available in the documentation for Mac users: ",(0,o.kt)("a",{parentName:"p",href:"http://podman-desktop.io/docs/troubleshooting#unable-to-set-custom-binary-path-for-podman-on-macos"},"http://podman-desktop.io/docs/troubleshooting#unable-to-set-custom-binary-path-for-podman-on-macos")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/204832063-5858065a-2fc3-49de-8d23-3b99b7d10dbf.png",alt:"custom-path"})),(0,o.kt)("h3",{id:"provide-pre-defined-registries-1201"},"Provide pre-defined registries ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1201"},"#1201")),(0,o.kt)("p",null,"The experience of configuring a registry is getting simplified for the most popular ones. The user will be able to select a registry from a pre-defined list and will only have to provide the username and password. The following registries will be pre-defined:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Dockerhub"),(0,o.kt)("li",{parentName:"ul"},"Red Hat Quay"),(0,o.kt)("li",{parentName:"ul"},"GitHub"),(0,o.kt)("li",{parentName:"ul"},"IBM Container Registry"),(0,o.kt)("li",{parentName:"ul"},"Google Container Registry")),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/214332937-eb1d9050-0d32-4bc4-8393-49b4583b1390.mov",mdxType:"ReactPlayer"}),(0,o.kt)("h3",{id:"uiux-improvements"},"UI/UX Improvements"),(0,o.kt)("h4",{id:"view-pods-logs-1122"},"View Pods logs ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1122"},"#1122")),(0,o.kt)("p",null,"The pods details view provides the ability to view the logs of each containers that may be running in a pod. Moreover, as it can also be hard to scan and identify which container is producing which output, we appended the container name at the beginning of each output and differentiate each container with a different color. "),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/211024673-eee9bad8-1b0c-4446-b8d1-97a226282c4d.png",alt:"pods-logs"})),(0,o.kt)("h4",{id:"improved-feedback-when-clicking-on-container-list-action-icons-1150-1161"},"Improved feedback when clicking on container list action icons ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1150"},"#1150")," ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1161"},"#1161")),(0,o.kt)("p",null,"When starting/stopping or deleting a container, a spinner is now displayed. In case of error, a message indicating that the action failed will also be better indicated. "),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/211531610-2347d302-4918-46ae-a5a2-c80fac0314f5.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("p",null,"For containers that exit immediately or short-lived containers, the feedback is also improved and include report of error now provide a better feedback to the user ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/containers/podman-desktop/pull/1161"},"#1161"),"."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/211831905-ebf596d5-efc8-4f55-8cb8-3f31655388b9.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h4",{id:"allows-to-change-the-default-font-size-for-the-editor-1160"},"Allows to change the default font size for the editor ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1160"},"#1160")),(0,o.kt)("p",null,"An editor is used in several screens of Podman Desktop, from the inspect screen to container's outputs and Kubernetes YAML. The default font size is 10 pixels. It's now possible to adjust the font size to the one the one you prefer. This setting is persisted and will be used for all the editors of Podman Desktop and available from the preferences page (Settings -> Preferences)."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/211778161-130ff733-b2ca-4306-bea3-d031196c3b29.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h4",{id:"keep-expanded-state-of-pods-when-refreshing-containers-1042"},"Keep expanded state of pods when refreshing containers ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1042"},"#1042")),(0,o.kt)("p",null,"When switching from different screens of the application or simply refreshing the list of containers, the expanded state of each item in the list is now persisted and will be properly restored."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/207864147-b68ea9bd-0ca9-42dc-882e-b8a705233749.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h4",{id:"click-on-the-pod-name-redirects-to-the-pod-details-page-1159"},"Click on the Pod name redirects to the Pod details page ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1159"},"#1159")),(0,o.kt)("p",null,"The list of containers also displays pods, now clicking on the pod name directly redirects to the Pod details page."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/211770946-2255f39f-7e2e-48ad-9ead-bcbfe6a115a7.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h4",{id:"improved-styles-of-buttons-for-actions-984"},"Improved styles of buttons for actions ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/984"},"#984")),(0,o.kt)("p",null,'The style of the buttons for actions on item in the list of in details pages have been improved. The background has been removed, but to make the hover state more visible, the "hover" circle is visble and the icon\'s color is also changing.'),(0,o.kt)("p",null,"On lists:\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/205979121-b49a0ddf-03bb-4a4d-8d12-bc8d0bd52387.png",alt:"list-actions"})),(0,o.kt)("p",null,"On details pages:\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/205979123-ea420b17-e834-4029-82eb-22949889eee9.png",alt:"details-actions"})),(0,o.kt)("h4",{id:"improved-alignments-in-pages-with-lists-1182"},"Improved alignments in pages with lists ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1182"},"#1182")),(0,o.kt)("p",null,"The alignment of the items in the list of containers and pods have been improved. The header of each columns are now aligned with the text. and the actions icons are now aligned with the top of the text."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/19958075/212712580-096fd090-0beb-40a4-8dc6-b3fdc5e81e35.png",alt:"list-actions"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"other-notable-enhancements"},"Other Notable Enhancements"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Statistics area in container details are always shown. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1131"},"#1131"),")"),(0,o.kt)("li",{parentName:"ul"},"Add more descriptive wording and more information to extensions. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/985"},"#985"),")"),(0,o.kt)("li",{parentName:"ul"},"Allow to install on-the fly Podman Desktop extensions using an OCI image. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1187"},"#1187"),")"),(0,o.kt)("li",{parentName:"ul"},"Display correctly non-multiplexed stream in logs (when using non interactive mode). (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1197"},"#1197"),")"),(0,o.kt)("li",{parentName:"ul"},"Font changed from white to gray for non-name sections (creation date, size). (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1206"},"#1206"),")"),(0,o.kt)("li",{parentName:"ul"},"Add Help/about menu for macOS/Windows/Linux. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1207"},"#1207"),")")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"documentation"},"Documentation"),(0,o.kt)("p",null,"Coming with this new version of Podman Desktop, the documentation has been getting attention (with number of editorial reviews) and new content have been added. "),(0,o.kt)("p",null,"Content for helping users to migrate from Docker to Podman has been added:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1088"},"Using the ",(0,o.kt)("inlineCode",{parentName:"a"},"podman-mac-helper")," tool to migrate from Docker to Podman on macOS")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1129"},"better identify podman-mac-helper verification steps")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1143"},"Emulating Docker CLI using Podman to migrate from Docker to Podman")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1146"},"Migrating from Docker section")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1152"},"Verifying that your tools are using Podman")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1144"},"Importing saved containers"))),(0,o.kt)("p",null,"Several of other improvements have been made to the documentation and the website:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/962"},"Troubleshooting for Apple Silicon and brew x86_64 installs")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/972"},"Change text of custom binary location, add docs")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/974"},"Silent install option for windows")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1079"},"Upgrade to vite v4 and rollup v3")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1118"},"Refreshing documentation on installing on Linux")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1130"},"Identify the shell sessions in Installing on Linux")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1133"},"Website: the linux binary is not a source, it should be promoted as a binary")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1162"},"Introducing tabs for operatings systems and container engines")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1165"},"website: In the landing page, update plugins and container engines lists")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1163"},"Document where code is located within Podman Desktop")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1172"},"(extension-api): Documentation on how to write an extension and use the api"))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"notable-bug-fixes"},"Notable bug fixes"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Update to v0.3.2 Docker Desktop API for extensions - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1070"},"#1070")),(0,o.kt)("li",{parentName:"ul"},"Updated link to the Matrix room - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1076"},"#1076")),(0,o.kt)("li",{parentName:"ul"},"Report error when container name already exists - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1142"},"#1142")),(0,o.kt)("li",{parentName:"ul"},"Fixed connectivity to the Podman machine when the generated socket length is greater than 104 characters in MacOS - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1145"},"#1145")),(0,o.kt)("li",{parentName:"ul"},"Do not use long calls for external clients - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1151"},"#1151")),(0,o.kt)("li",{parentName:"ul"},"Invalid name/tag for images with registries using a different port - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1127"},"#1127")),(0,o.kt)("li",{parentName:"ul"},"Invalid badge count for images when two images have the same tag - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1124"},"#1124")),(0,o.kt)("li",{parentName:"ul"},"Fixed detection of WSL2 - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/981"},"#981")),(0,o.kt)("li",{parentName:"ul"},"Handle invalid kubeconfig files instead of crashing - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/953"},"#953")),(0,o.kt)("li",{parentName:"ul"},"Removed redundant actions from details pages - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1200"},"#1200")),(0,o.kt)("li",{parentName:"ul"},"Fixed registry URL not aligned with header - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1205"},"#1205")),(0,o.kt)("li",{parentName:"ul"},"Moved SVGs to reusable components - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1211"},"#1211"))),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"}," Extensions API has also been improved in this new release: ")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"(extension-api): Allows to register a factory for kubernetes connection objects (like for container connections) - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1040"},"#1040")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): List or inspect containers, be notified on events - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1041"},"#1041")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): Allows to get provider notification - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1045"},"#1045")),(0,o.kt)("li",{parentName:"ul"},"(dd-extension-api): Implement toast API - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1154"},"#1154")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): Moved extension properties to preferences - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/948"},"#948")),(0,o.kt)("li",{parentName:"ul"},"(dd-extension-api): Added open dev console on dd webview in development mode - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1071"},"#1071")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): Added notes on extension and frameworks/tooling of Podman Desktop - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1166"},"#1166")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): Documentation on how to write an extension and use the api - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1172"},"#1172")),(0,o.kt)("li",{parentName:"ul"},"(dd-extension-api): DD extensions should see only minimal information on containers - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1191"},"#1191"))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"community-thank-you"},"Community Thank You!"),(0,o.kt)("p",null,"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.11 even better:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/emmanuelbernard"},"Emmanuel Bernard")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/962"},"#962 - Troubleshooting for Apple Silicon")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/eidottermihi"},"Michael Prankl")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/974"},"#974 - Silent install option for windows")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/elervik"},"Endre Lervik")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1008"},"#1008 - Namespace selection for deploy to kubernetes")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/evanfpearson"},"Evan FP")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1145"},"#1145 - fixed socket path length error")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/lsm5"},"Lokesh Mandvekar")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/956"},"#956 - add repository key to package.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/jeffmaury"},"Jean Fran\xe7ois Maury")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1194"},"#1194 - Cannot create Kind cluster on Windows"))),(0,o.kt)("h2",{id:"final-notes"},"Final Notes"),(0,o.kt)("p",null,"The complete list of issues fixed in this release is available ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.11.0"},"here"),"."),(0,o.kt)("p",null,"Get the latest release from the ",(0,o.kt)("a",{parentName:"p",href:"/downloads"},"Downloads")," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/containers/podman-desktop"},"GitHub repository")," and see how you can help us make Podman Desktop better."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/83245ae6.bdda3779.js b/assets/js/83245ae6.bdda3779.js deleted file mode 100644 index 30f4e39d1ae..00000000000 --- a/assets/js/83245ae6.bdda3779.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7679],{9867:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>r,toc:()=>d});var n=a(5773),o=(a(7378),a(5318)),i=a(2975);const s={title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",slug:"podman-desktop-release-0.11",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},l=void 0,r={permalink:"/blog/podman-desktop-release-0.11",source:"@site/blog/2023-01-18-release-0.11.md",title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",date:"2023-01-18T00:00:00.000Z",formattedDate:"January 18, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"}],readingTime:9.35,hasTruncateMarker:!0,authors:[{name:"Stevan Le Meur",title:"Product Manager",url:"https://github.com/slemeur",imageURL:"https://github.com/slemeur.png",key:"slemeur"}],frontMatter:{title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",slug:"podman-desktop-release-0.11",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},nextItem:{title:"Release Notes - Podman Desktop 0.10",permalink:"/blog/podman-desktop-release-0.10"}},p={authorsImageUrls:[void 0]},d=[{value:"Release Details",id:"release-details",level:2},{value:"Air-Gapped installation #1104 #1120",id:"air-gapped-installation-1104-1120",level:3},{value:"Feedback within Podman Desktop #1078",id:"feedback-within-podman-desktop-1078",level:3},{value:"Docker compatibility mode #1047",id:"docker-compatibility-mode-1047",level:3},{value:"Allow to toggle on/off the proxy setting #983",id:"allow-to-toggle-onoff-the-proxy-setting-983",level:3},{value:"Namespace selection for deploy to kubernetes #1008",id:"namespace-selection-for-deploy-to-kubernetes-1008",level:3},{value:"Configure Podman binary path #941",id:"configure-podman-binary-path-941",level:3},{value:"Provide pre-defined registries #1201",id:"provide-pre-defined-registries-1201",level:3},{value:"UI/UX Improvements",id:"uiux-improvements",level:3},{value:"View Pods logs #1122",id:"view-pods-logs-1122",level:4},{value:"Improved feedback when clicking on container list action icons #1150 #1161",id:"improved-feedback-when-clicking-on-container-list-action-icons-1150-1161",level:4},{value:"Allows to change the default font size for the editor #1160",id:"allows-to-change-the-default-font-size-for-the-editor-1160",level:4},{value:"Keep expanded state of pods when refreshing containers #1042",id:"keep-expanded-state-of-pods-when-refreshing-containers-1042",level:4},{value:"Click on the Pod name redirects to the Pod details page #1159",id:"click-on-the-pod-name-redirects-to-the-pod-details-page-1159",level:4},{value:"Improved styles of buttons for actions #984",id:"improved-styles-of-buttons-for-actions-984",level:4},{value:"Improved alignments in pages with lists #1182",id:"improved-alignments-in-pages-with-lists-1182",level:4},{value:"Other Notable Enhancements",id:"other-notable-enhancements",level:2},{value:"Documentation",id:"documentation",level:2},{value:"Notable bug fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You!",id:"community-thank-you",level:2},{value:"Final Notes",id:"final-notes",level:2}],m={toc:d};function h(e){let{components:t,...a}=e;return(0,o.kt)("wrapper",(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"This release note covers Podman Desktop 0.11 release changes."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Air-Gapped Installation"),": New all-in-one binaries for air-gapped installation."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Feedback"),": Submit feedback directly from Podman Desktop."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Docker Compatibility Mode"),": Information about the Docker compatibility mode."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Proxy Setting"),": Toggle on/off the proxy setting."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Deploy to Kubernetes"),": Select the namespace to deploy to Kubernetes."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Registry Configuration"),": Simplified registry configuration for well known registries."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"UX/UI Improvements"),": View pod's container logs, better visual feedback, configurable editor font size, and more.")),(0,o.kt)("p",null,"Podman Desktop 0.11 is now available. ",(0,o.kt)("a",{parentName:"p",href:"/downloads"},"Click here to download it"),"! "),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"release-details"},"Release Details"),(0,o.kt)("h3",{id:"air-gapped-installation-1104-1120"},"Air-Gapped installation ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1104"},"#1104")," ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1120"},"#1120")),(0,o.kt)("p",null,"For users who are not able to connect to the internet, a new all-in-one (airgap) binary that includes the Podman Desktop application and the Podman binaries is now available for both Mac and Windows. When initializing a new Podman machine using all-in-one binaries, it'll use the embedded files and not grab them from internet: "),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"on Mac, it embeds the qemu FCOS binaries."),(0,o.kt)("li",{parentName:"ul"},"on Windows, it embeds the WSL binary.")),(0,o.kt)("p",null,"To differentiate the air-gapped binaries from the regular ones, you can check the artifactname, they're containing 'airgap' and are bigger.\nPlease note, that those binaries are available only on releases and not the pre-releases."),(0,o.kt)("p",null,"There is also an optional way to provide a custom Podman machine image in the create machine form. By providing the path to the image you want, Podman Desktop will create a machine with that image. Leaving the field empty will use the default image (the one included in the binary)."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/210508524-45005536-ac74-4074-92c1-2b3ca51d0073.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h3",{id:"feedback-within-podman-desktop-1078"},"Feedback within Podman Desktop ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1078"},"#1078")),(0,o.kt)("p",null,"Submitting feedback on Podman Desktop is getting easier as it is possible directly within the tool. This will help to get more information about the issues you are facing and will help us to improve the tool. "),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/208938878-948a2764-d73b-4584-a80d-497c052482c1.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("p",null,"Please feel free to submit any feedback you have, we are looking forward to hearing from you!"),(0,o.kt)("h3",{id:"docker-compatibility-mode-1047"},"Docker compatibility mode ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1047"},"#1047")),(0,o.kt)("p",null,"The Docker compatibility mode is a feature that allows to use Podman as a drop-in replacement for Docker. It relies on the Docker socket helper provided with Podman and automatically handle the local setup of podman path to the Docker socket. Tools like ",(0,o.kt)("a",{parentName:"p",href:"https://www.testcontainers.org/"},"Testcontainers")," or others are relying on this to communicate to the container engine. "),(0,o.kt)("p",null,"In this new version of Podman Desktop, we are now providing information to the user about the status of this compatibility mode directly on the dashboard page. The way it works is the following:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"When Docker is running: the socket is pointing to Docker."),(0,o.kt)("li",{parentName:"ul"},"When Podman is starting and Docker is not running: the docker API socket will use Podman.")),(0,o.kt)("p",null,"In case the compatibility mode is not activated, new documentation on how to activate it and how to easily switch between Docker and Podman is available here: ",(0,o.kt)("a",{parentName:"p",href:"https://podman-desktop.io/docs/migrating-from-docker"},"https://podman-desktop.io/docs/migrating-from-docker"),". "),(0,o.kt)("p",null,"This is a warning displayed for Windows users:\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/436777/209305744-9056addd-f122-4f75-9e03-ad27a0109375.png",alt:"windows-docker-compatibility"})),(0,o.kt)("p",null,"This is the warning for Mac users:\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/207964861-a9c1f72c-89d6-4816-beab-397af4125620.png",alt:"mac-docker-compatibility"})),(0,o.kt)("h3",{id:"allow-to-toggle-onoff-the-proxy-setting-983"},"Allow to toggle on/off the proxy setting ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/983"},"#983")),(0,o.kt)("p",null,"In some context, users need the ability to disable and re-enable the proxy configuration very quickly, without having to entirely reconfigure it. This is now possible from the Podman Desktop settings page, where a toggle to enable/disable the proxy configuration has been added."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/205955418-670bc37c-a74f-40ef-bc60-8d9d013aa0dc.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("p",null,"Note: extensions can read this information and then update the proxy configuration."),(0,o.kt)("h3",{id:"namespace-selection-for-deploy-to-kubernetes-1008"},"Namespace selection for deploy to kubernetes ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1008"},"#1008")),(0,o.kt)("p",null,"A new dropdown menu has been added to the deploy to Kubernetes screen to allow selecting the namespace to deploy to. Defaults to defaultnamespace, if unable to get any from kube_client module."),(0,o.kt)("p",null,"If the user have set ",(0,o.kt)("inlineCode",{parentName:"p"},"kubectl config set-context --current --namespace=NAMESPACE")," it honors that as the chosen value."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/7339809/206688886-095e4f15-42ae-4a0a-b1c6-ae4b547fcdfb.gif",alt:"deploy-kubernetes-namespace"})),(0,o.kt)("h3",{id:"configure-podman-binary-path-941"},"Configure Podman binary path ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/941"},"#941")),(0,o.kt)("p",null,"Users may use a custom path to the podman binary. An option within settings (Settings -> Preferences) to allow providing an additional path to Podman binary has been added. This is useful for users who have installed Podman using a package manager and want to use the binary provided by the package manager. Additional information is available in the documentation for Mac users: ",(0,o.kt)("a",{parentName:"p",href:"http://podman-desktop.io/docs/troubleshooting#unable-to-set-custom-binary-path-for-podman-on-macos"},"http://podman-desktop.io/docs/troubleshooting#unable-to-set-custom-binary-path-for-podman-on-macos")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/204832063-5858065a-2fc3-49de-8d23-3b99b7d10dbf.png",alt:"custom-path"})),(0,o.kt)("h3",{id:"provide-pre-defined-registries-1201"},"Provide pre-defined registries ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1201"},"#1201")),(0,o.kt)("p",null,"The experience of configuring a registry is getting simplified for the most popular ones. The user will be able to select a registry from a pre-defined list and will only have to provide the username and password. The following registries will be pre-defined:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Dockerhub"),(0,o.kt)("li",{parentName:"ul"},"Red Hat Quay"),(0,o.kt)("li",{parentName:"ul"},"GitHub"),(0,o.kt)("li",{parentName:"ul"},"IBM Container Registry"),(0,o.kt)("li",{parentName:"ul"},"Google Container Registry")),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/6422176/214332937-eb1d9050-0d32-4bc4-8393-49b4583b1390.mov",mdxType:"ReactPlayer"}),(0,o.kt)("h3",{id:"uiux-improvements"},"UI/UX Improvements"),(0,o.kt)("h4",{id:"view-pods-logs-1122"},"View Pods logs ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1122"},"#1122")),(0,o.kt)("p",null,"The pods details view provides the ability to view the logs of each containers that may be running in a pod. Moreover, as it can also be hard to scan and identify which container is producing which output, we appended the container name at the beginning of each output and differentiate each container with a different color. "),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/211024673-eee9bad8-1b0c-4446-b8d1-97a226282c4d.png",alt:"pods-logs"})),(0,o.kt)("h4",{id:"improved-feedback-when-clicking-on-container-list-action-icons-1150-1161"},"Improved feedback when clicking on container list action icons ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1150"},"#1150")," ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1161"},"#1161")),(0,o.kt)("p",null,"When starting/stopping or deleting a container, a spinner is now displayed. In case of error, a message indicating that the action failed will also be better indicated. "),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/211531610-2347d302-4918-46ae-a5a2-c80fac0314f5.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("p",null,"For containers that exit immediately or short-lived containers, the feedback is also improved and include report of error now provide a better feedback to the user ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/containers/podman-desktop/pull/1161"},"#1161"),"."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/211831905-ebf596d5-efc8-4f55-8cb8-3f31655388b9.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h4",{id:"allows-to-change-the-default-font-size-for-the-editor-1160"},"Allows to change the default font size for the editor ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1160"},"#1160")),(0,o.kt)("p",null,"An editor is used in several screens of Podman Desktop, from the inspect screen to container's outputs and Kubernetes YAML. The default font size is 10 pixels. It's now possible to adjust the font size to the one the one you prefer. This setting is persisted and will be used for all the editors of Podman Desktop and available from the preferences page (Settings -> Preferences)."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/211778161-130ff733-b2ca-4306-bea3-d031196c3b29.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h4",{id:"keep-expanded-state-of-pods-when-refreshing-containers-1042"},"Keep expanded state of pods when refreshing containers ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1042"},"#1042")),(0,o.kt)("p",null,"When switching from different screens of the application or simply refreshing the list of containers, the expanded state of each item in the list is now persisted and will be properly restored."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/207864147-b68ea9bd-0ca9-42dc-882e-b8a705233749.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h4",{id:"click-on-the-pod-name-redirects-to-the-pod-details-page-1159"},"Click on the Pod name redirects to the Pod details page ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1159"},"#1159")),(0,o.kt)("p",null,"The list of containers also displays pods, now clicking on the pod name directly redirects to the Pod details page."),(0,o.kt)(i.Z,{playing:!0,controls:!0,url:"https://user-images.githubusercontent.com/436777/211770946-2255f39f-7e2e-48ad-9ead-bcbfe6a115a7.mp4",mdxType:"ReactPlayer"}),(0,o.kt)("h4",{id:"improved-styles-of-buttons-for-actions-984"},"Improved styles of buttons for actions ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/984"},"#984")),(0,o.kt)("p",null,'The style of the buttons for actions on item in the list of in details pages have been improved. The background has been removed, but to make the hover state more visible, the "hover" circle is visble and the icon\'s color is also changing.'),(0,o.kt)("p",null,"On lists:\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/205979121-b49a0ddf-03bb-4a4d-8d12-bc8d0bd52387.png",alt:"list-actions"})),(0,o.kt)("p",null,"On details pages:\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/205979123-ea420b17-e834-4029-82eb-22949889eee9.png",alt:"details-actions"})),(0,o.kt)("h4",{id:"improved-alignments-in-pages-with-lists-1182"},"Improved alignments in pages with lists ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1182"},"#1182")),(0,o.kt)("p",null,"The alignment of the items in the list of containers and pods have been improved. The header of each columns are now aligned with the text. and the actions icons are now aligned with the top of the text."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/19958075/212712580-096fd090-0beb-40a4-8dc6-b3fdc5e81e35.png",alt:"list-actions"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"other-notable-enhancements"},"Other Notable Enhancements"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Statistics area in container details are always shown. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1131"},"#1131"),")"),(0,o.kt)("li",{parentName:"ul"},"Add more descriptive wording and more information to extensions. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/985"},"#985"),")"),(0,o.kt)("li",{parentName:"ul"},"Allow to install on-the fly Podman Desktop extensions using an OCI image. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1187"},"#1187"),")"),(0,o.kt)("li",{parentName:"ul"},"Display correctly non-multiplexed stream in logs (when using non interactive mode). (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1197"},"#1197"),")"),(0,o.kt)("li",{parentName:"ul"},"Font changed from white to gray for non-name sections (creation date, size). (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1206"},"#1206"),")"),(0,o.kt)("li",{parentName:"ul"},"Add Help/about menu for macOS/Windows/Linux. (",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1207"},"#1207"),")")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"documentation"},"Documentation"),(0,o.kt)("p",null,"Coming with this new version of Podman Desktop, the documentation has been getting attention (with number of editorial reviews) and new content have been added. "),(0,o.kt)("p",null,"Content for helping users to migrate from Docker to Podman has been added:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1088"},"Using the ",(0,o.kt)("inlineCode",{parentName:"a"},"podman-mac-helper")," tool to migrate from Docker to Podman on macOS")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1129"},"better identify podman-mac-helper verification steps")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1143"},"Emulating Docker CLI using Podman to migrate from Docker to Podman")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1146"},"Migrating from Docker section")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1152"},"Verifying that your tools are using Podman")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1144"},"Importing saved containers"))),(0,o.kt)("p",null,"Several of other improvements have been made to the documentation and the website:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/962"},"Troubleshooting for Apple Silicon and brew x86_64 installs")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/972"},"Change text of custom binary location, add docs")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/974"},"Silent install option for windows")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1079"},"Upgrade to vite v4 and rollup v3")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1118"},"Refreshing documentation on installing on Linux")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1130"},"Identify the shell sessions in Installing on Linux")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1133"},"Website: the linux binary is not a source, it should be promoted as a binary")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1162"},"Introducing tabs for operatings systems and container engines")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1165"},"website: In the landing page, update plugins and container engines lists")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1163"},"Document where code is located within Podman Desktop")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1172"},"(extension-api): Documentation on how to write an extension and use the api"))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"notable-bug-fixes"},"Notable bug fixes"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Update to v0.3.2 Docker Desktop API for extensions - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1070"},"#1070")),(0,o.kt)("li",{parentName:"ul"},"Updated link to the Matrix room - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1076"},"#1076")),(0,o.kt)("li",{parentName:"ul"},"Report error when container name already exists - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1142"},"#1142")),(0,o.kt)("li",{parentName:"ul"},"Fixed connectivity to the Podman machine when the generated socket length is greater than 104 characters in MacOS - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1145"},"#1145")),(0,o.kt)("li",{parentName:"ul"},"Do not use long calls for external clients - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1151"},"#1151")),(0,o.kt)("li",{parentName:"ul"},"Invalid name/tag for images with registries using a different port - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1127"},"#1127")),(0,o.kt)("li",{parentName:"ul"},"Invalid badge count for images when two images have the same tag - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1124"},"#1124")),(0,o.kt)("li",{parentName:"ul"},"Fixed detection of WSL2 - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/981"},"#981")),(0,o.kt)("li",{parentName:"ul"},"Handle invalid kubeconfig files instead of crashing - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/953"},"#953")),(0,o.kt)("li",{parentName:"ul"},"Removed redundant actions from details pages - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1200"},"#1200")),(0,o.kt)("li",{parentName:"ul"},"Fixed registry URL not aligned with header - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1205"},"#1205")),(0,o.kt)("li",{parentName:"ul"},"Moved SVGs to reusable components - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1211"},"#1211"))),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"}," Extensions API has also been improved in this new release: ")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"(extension-api): Allows to register a factory for kubernetes connection objects (like for container connections) - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1040"},"#1040")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): List or inspect containers, be notified on events - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1041"},"#1041")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): Allows to get provider notification - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1045"},"#1045")),(0,o.kt)("li",{parentName:"ul"},"(dd-extension-api): Implement toast API - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1154"},"#1154")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): Moved extension properties to preferences - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/948"},"#948")),(0,o.kt)("li",{parentName:"ul"},"(dd-extension-api): Added open dev console on dd webview in development mode - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1071"},"#1071")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): Added notes on extension and frameworks/tooling of Podman Desktop - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1166"},"#1166")),(0,o.kt)("li",{parentName:"ul"},"(extension-api): Documentation on how to write an extension and use the api - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1172"},"#1172")),(0,o.kt)("li",{parentName:"ul"},"(dd-extension-api): DD extensions should see only minimal information on containers - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1191"},"#1191"))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"community-thank-you"},"Community Thank You!"),(0,o.kt)("p",null,"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.11 even better:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/emmanuelbernard"},"Emmanuel Bernard")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/962"},"#962 - Troubleshooting for Apple Silicon")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/eidottermihi"},"Michael Prankl")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/974"},"#974 - Silent install option for windows")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/elervik"},"Endre Lervik")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1008"},"#1008 - Namespace selection for deploy to kubernetes")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/evanfpearson"},"Evan FP")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1145"},"#1145 - fixed socket path length error")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/lsm5"},"Lokesh Mandvekar")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/956"},"#956 - add repository key to package.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/jeffmaury"},"Jean Fran\xe7ois Maury")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1194"},"#1194 - Cannot create Kind cluster on Windows"))),(0,o.kt)("h2",{id:"final-notes"},"Final Notes"),(0,o.kt)("p",null,"The complete list of issues fixed in this release is available ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.11.0"},"here"),"."),(0,o.kt)("p",null,"Get the latest release from the ",(0,o.kt)("a",{parentName:"p",href:"/downloads"},"Downloads")," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/containers/podman-desktop"},"GitHub repository")," and see how you can help us make Podman Desktop better."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/83d480e9.b6ef34d7.js b/assets/js/83d480e9.14c570da.js similarity index 94% rename from assets/js/83d480e9.b6ef34d7.js rename to assets/js/83d480e9.14c570da.js index 2ef7fc3cdb5..ac55cb34e5a 100644 --- a/assets/js/83d480e9.b6ef34d7.js +++ b/assets/js/83d480e9.14c570da.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[205],{3672:e=>{e.exports=JSON.parse('{"label":"release","permalink":"/blog/tags/release","allTagsPath":"/blog/tags","count":2}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[205],{3672:e=>{e.exports=JSON.parse('{"label":"release","permalink":"/blog/tags/release","allTagsPath":"/blog/tags","count":3}')}}]); \ No newline at end of file diff --git a/assets/js/9c021584.c20c3174.js b/assets/js/9c021584.beb86866.js similarity index 57% rename from assets/js/9c021584.c20c3174.js rename to assets/js/9c021584.beb86866.js index 71e22f62839..4cc566f0de5 100644 --- a/assets/js/9c021584.c20c3174.js +++ b/assets/js/9c021584.beb86866.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7438],{8055:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/release","page":1,"postsPerPage":2,"totalPages":1,"totalCount":2,"blogDescription":"Discover articles about Podman Desktop","blogTitle":"Podman Desktop blog!"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7438],{8055:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/release","page":1,"postsPerPage":3,"totalPages":1,"totalCount":3,"blogDescription":"Discover articles about Podman Desktop","blogTitle":"Podman Desktop blog!"}')}}]); \ No newline at end of file diff --git a/assets/js/9dce5486.30fc389a.js b/assets/js/9dce5486.30fc389a.js new file mode 100644 index 00000000000..c691556e0f4 --- /dev/null +++ b/assets/js/9dce5486.30fc389a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8566],{5318:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>u});var a=n(7378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var r=a.createContext({}),p=function(e){var t=a.useContext(r),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=p(e.components);return a.createElement(r.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,r=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),h=p(n),u=o,c=h["".concat(r,".").concat(u)]||h[u]||m[u]||i;return n?a.createElement(c,s(s({ref:t},d),{},{components:n})):a.createElement(c,s({ref:t},d))}));function u(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,s=new Array(i);s[0]=h;var l={};for(var r in t)hasOwnProperty.call(t,r)&&(l[r]=t[r]);l.originalType=e,l.mdxType="string"==typeof e?e:o,s[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>s,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var a=n(5773),o=(n(7378),n(5318));const i={title:"Release Notes - Podman Desktop 0.12",description:"Podman Desktop 0.12 has been released!",slug:"podman-desktop-release-0.12",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},s=void 0,l={permalink:"/blog/podman-desktop-release-0.12",source:"@site/blog/2023-02-15-release-0.12.md",title:"Release Notes - Podman Desktop 0.12",description:"Podman Desktop 0.12 has been released!",date:"2023-02-15T00:00:00.000Z",formattedDate:"February 15, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"}],readingTime:4.48,hasTruncateMarker:!0,authors:[{name:"Stevan Le Meur",title:"Product Manager",url:"https://github.com/slemeur",imageURL:"https://github.com/slemeur.png",key:"slemeur"}],frontMatter:{title:"Release Notes - Podman Desktop 0.12",description:"Podman Desktop 0.12 has been released!",slug:"podman-desktop-release-0.12",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},nextItem:{title:"Release Notes - Podman Desktop 0.11",permalink:"/blog/podman-desktop-release-0.11"}},r={authorsImageUrls:[void 0]},p=[{value:"Release Details",id:"release-details",level:2},{value:"Update to Podman v4.4.1 #1456",id:"update-to-podman-v441-1456",level:3},{value:"Configuring port mappings when an image has no exported port #1265",id:"configuring-port-mappings-when-an-image-has-no-exported-port-1265",level:3},{value:"Installing Podman Dekstop on Windows Home Edition #1268",id:"installing-podman-dekstop-on-windows-home-edition-1268",level:3},{value:"Option to automatically minimize Podman Desktop on login #1374",id:"option-to-automatically-minimize-podman-desktop-on-login-1374",level:3},{value:"UI and UX Improvements",id:"ui-and-ux-improvements",level:3},{value:"Improved actions consistency #1225",id:"improved-actions-consistency-1225",level:4},{value:"Consistent status icons for Pods, Containers, Images and Volumes #1326, #1377, #1459 and #1245",id:"consistent-status-icons-for-pods-containers-images-and-volumes-1326-1377-1459-and-1245",level:4},{value:"Placeholder when logs for containers are being fetched #1353",id:"placeholder-when-logs-for-containers-are-being-fetched-1353",level:4},{value:"Fixed alignement in badges from the navigation sidebar #1357",id:"fixed-alignement-in-badges-from-the-navigation-sidebar-1357",level:4},{value:"Enable/disable open browser action based on container state #1395 and #1397",id:"enabledisable-open-browser-action-based-on-container-state-1395-and-1397",level:4},{value:"Other Notable Enhancements",id:"other-notable-enhancements",level:2},{value:"Documentation",id:"documentation",level:2},{value:"Notable bug fixes",id:"notable-bug-fixes",level:2},{value:"Community Thank You!",id:"community-thank-you",level:2},{value:"Final Notes",id:"final-notes",level:2}],d={toc:p};function m(e){let{components:t,...i}=e;return(0,o.kt)("wrapper",(0,a.Z)({},d,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"This release note covers Podman Desktop 0.12 release changes."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Podman Version"),": Podman 4.4.1 now included in Windows and Mac installers."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Containers Configuration"),": Configure port mappings for an image without exported ports."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Windows Home Support"),": Podman Desktop now supports Windows Home Edition."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Start minimized"),": Option to start Podman Desktop minimized to system tray."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"UX and UI Improvements"),": Consistent actions, placeholder for logs, unified icons and others.")),(0,o.kt)("p",null,"Podman Desktop 0.12 is now available. ",(0,o.kt)("a",{parentName:"p",href:"/downloads"},"Click here to download it"),"!"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"podman-desktop-0-12-hero",src:n(4132).Z,width:"1015",height:"580"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"release-details"},"Release Details"),(0,o.kt)("h3",{id:"update-to-podman-v441-1456"},"Update to Podman v4.4.1 ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1456"},"#1456")),(0,o.kt)("p",null,"Podman Desktop 0.12 embeds ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/containers/podman/releases/tag/v4.4.1"},"Podman 4.4.1")," in Windows and macOS installers. Make sure to upgrade to benefit from the latest Podman features and bug fixes."),(0,o.kt)("h3",{id:"configuring-port-mappings-when-an-image-has-no-exported-port-1265"},"Configuring port mappings when an image has no exported port ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1265"},"#1265")),(0,o.kt)("p",null,"With the latest update, users can now add multiple local-to-remote port mappings when starting a container from an image that has no exported ports. This feature provides users with the flexibility to specify which ports on their local machine should map to which ports on the container, even if the container does not have any exported ports by default."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/49404737/215112797-86dcf3f0-121a-487e-a71f-ad41e91f93da.gif",alt:"port-mapping"})),(0,o.kt)("h3",{id:"installing-podman-dekstop-on-windows-home-edition-1268"},"Installing Podman Dekstop on Windows Home Edition ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1268"},"#1268")),(0,o.kt)("p",null,"Podman Desktop 0.12 offers the ability to be installed on Windows Home Edition. The mechanism uses Virtual Machine Platform detection, instead of hyper-v. WSL2 is still requires but can be installed along with the installation process."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/436777/215121429-7c757aaa-a838-43db-98a2-78ad368f407e.png",alt:"install-windows-home-edition-2"})),(0,o.kt)("h3",{id:"option-to-automatically-minimize-podman-desktop-on-login-1374"},"Option to automatically minimize Podman Desktop on login ",(0,o.kt)("a",{parentName:"h3",href:"https://github.com/containers/podman-desktop/pull/1374"},"#1374")),(0,o.kt)("p",null,'Podman Desktop now provides a "start minimized" option when users log in onto the laptop. This option, available from the application\'s settings, can be useful if users want to automatically launch Podman Desktop at log in, but prefer not to have the window visible on the screen. With this feature, you can ensure that Podman Desktop is up and running in the background without any interruption to your workflows.'),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Go to ",(0,o.kt)("strong",{parentName:"li"},"Settings > Preferences > Login: Minimize")," to activate the option.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/6422176/216651424-bcf756fd-7554-4b24-a838-e3e2f798fe6e.png",alt:"minimize-on-login"})),(0,o.kt)("h3",{id:"ui-and-ux-improvements"},"UI and UX Improvements"),(0,o.kt)("h4",{id:"improved-actions-consistency-1225"},"Improved actions consistency ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1225"},"#1225")),(0,o.kt)("p",null,"Actions displayed in the list pages for Images and Containers have been reviewed and made consistent between other pages. "),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/19958075/214104678-2d4148d7-484e-41f9-9da9-aecee328ae2b.png",alt:"action-consistency-1"})),(0,o.kt)("p",null,"Actions displayed in the header of the container's details page have been improved so that the actions are always displayed in the same order."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/19958075/214104663-64fa0601-bb79-49bf-8226-6a78a88d3622.png",alt:"action-consistency-2"})),(0,o.kt)("h4",{id:"consistent-status-icons-for-pods-containers-images-and-volumes-1326-1377-1459-and-1245"},"Consistent status icons for Pods, Containers, Images and Volumes ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1326"},"#1326"),", ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1377"},"#1377"),", ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1459"},"#1459")," and ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1245"},"#1245")),(0,o.kt)("p",null,"The status icons for Pods, Containers, Images, and Volumes have been unified and use consistent states."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/19958075/216671859-bdd8dca4-56b7-40a8-961a-dcb6e01be61e.png",alt:"pods-status-icon"})),(0,o.kt)("p",null,"Icons in empty screens have been updated to use the same consistent SVG icon as the status icons."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/436777/214577726-f4cfde7b-017a-499d-a2a9-e50d455ffaf0.png",alt:"empty-screen-2"})),(0,o.kt)("h4",{id:"placeholder-when-logs-for-containers-are-being-fetched-1353"},"Placeholder when logs for containers are being fetched ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1353"},"#1353")),(0,o.kt)("p",null,"A placeholder is now displayed when logs are being fetched.\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/49404737/216952505-899308ae-183e-487a-b6e5-28832a0b6452.gif",alt:"placeholder-loading-logs"})),(0,o.kt)("h4",{id:"fixed-alignement-in-badges-from-the-navigation-sidebar-1357"},"Fixed alignement in badges from the navigation sidebar ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1357"},"#1357")),(0,o.kt)("p",null,"Badges in the sidebar are now aligned with the title of the section."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/49404737/216336502-2a34dea3-fd41-4184-8cfe-9226d70da070.png",alt:"alignement-badges"})),(0,o.kt)("h4",{id:"enabledisable-open-browser-action-based-on-container-state-1395-and-1397"},"Enable/disable open browser action based on container state ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1395"},"#1395")," and ",(0,o.kt)("a",{parentName:"h4",href:"https://github.com/containers/podman-desktop/pull/1397"},"#1397")),(0,o.kt)("p",null,"The action to open the browser if a port is opened in a container, is now disabled when the container is stopped. It is also hidden in the kebab menu."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/49404737/217284414-1bdc820b-30a8-485e-b0f9-485229026696.gif",alt:"enable-disable-container-actions"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"other-notable-enhancements"},"Other Notable Enhancements"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Display extension icons ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1058"},"#1058")),(0,o.kt)("li",{parentName:"ul"},"Solid Icons ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1276"},"#1267")),(0,o.kt)("li",{parentName:"ul"},"Differentiate icons compared to status icons ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1298"},"#1268")),(0,o.kt)("li",{parentName:"ul"},"Refactors window initializing ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1309"},"#1309")),(0,o.kt)("li",{parentName:"ul"},"Change window creation background color to dark ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1310"},"#1310")),(0,o.kt)("li",{parentName:"ul"},"Use Podman ",(0,o.kt)("inlineCode",{parentName:"li"},"machine inspect")," to read the address to connect to the Podman machine ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1364"},"#1364")),(0,o.kt)("li",{parentName:"ul"},"Update the editor content when the pod name changes, and disable the deploy button when empty ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1403"},"#1403")),(0,o.kt)("li",{parentName:"ul"},"Ability to manually set color of tray icon for Windows and Linux ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1243"},"#1243")),(0,o.kt)("li",{parentName:"ul"},"Better UI feedback when starting pods ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1242"},"#1242"))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"documentation"},"Documentation"),(0,o.kt)("p",null,"The documentation had many editorial reviews, and new content."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://podman-desktop.io/docs/Installation/windows-install"},"Link to simple WSL2 installation instructions")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://podman-desktop.io/docs/Installation/windows-install"},"Refresh Windows Installation")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://podman-desktop.io/docs/Installation"},"Revamped installation introduction")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://podman-desktop.io/docs/Installation/linux-install"},"Reorganized Linux installation")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://podman-desktop.io/docs/Installation/windows-install/installing-podman-with-openshift-local"},"Installing Podman with OpenShift Local")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://podman-desktop.io/docs/Installation/windows-install/installing-podman-desktop-and-podman-in-a-restricted-environment"},"Installing Podman Desktop on Windows in a restricted environment")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://podman-desktop.io/docs/migrating-from-docker/using-podman-mac-helper"},"Fixed documentation on ",(0,o.kt)("inlineCode",{parentName:"a"},"podman-mac-helper")," setup"))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"notable-bug-fixes"},"Notable bug fixes"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Fixed handling path with spaces on Windows when installing Podman ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1270"},"#1270")),(0,o.kt)("li",{parentName:"ul"},"Removed padding from SVG icons ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1253"},"#1253")),(0,o.kt)("li",{parentName:"ul"},"Website: fixed download links for Windows and macOS binaries ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1255"},"#1255")),(0,o.kt)("li",{parentName:"ul"},"Fixed prettier commands on Windows ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1267"},"#1266")),(0,o.kt)("li",{parentName:"ul"},"Fixed new xterm instance spawn when clicking the logs route ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1344"},"#1344")),(0,o.kt)("li",{parentName:"ul"},"Fixed need to wait that telemetry has been initilized before proceeding ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1373"},"#1373")),(0,o.kt)("li",{parentName:"ul"},"Fixed new xterm instance spawn when clicking the logs route in pod details",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1393"},"#1393")),(0,o.kt)("li",{parentName:"ul"},"Fixed stop spinner if image cannot be retrieved ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1394"},"#1394")),(0,o.kt)("li",{parentName:"ul"},"Fixed escape command with quotes only for Windows ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1462"},"#1462")," "),(0,o.kt)("li",{parentName:"ul"},"Fixed random CRC status change ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1420"},"#1420"))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"community-thank-you"},"Community Thank You!"),(0,o.kt)("p",null,"\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.12 even better:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/imphil"},"Philipp Wagner")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1274"},"#1274 - Link to simple WSL2 installation instructions")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/arixmkii"},"Arthur S")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1364"},"#1364 - Get podman machine socketPath from podman machine inspect first")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/Mitch9378"},"Mitch West")," in ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/containers/podman-desktop/pull/1428"},"#1428 - Fix old documentation for 'podman-mac-helper setup'"))),(0,o.kt)("h2",{id:"final-notes"},"Final Notes"),(0,o.kt)("p",null,"The complete list of issues fixed in this release is available ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.12.0"},"here"),"."),(0,o.kt)("p",null,"Get the latest release from the ",(0,o.kt)("a",{parentName:"p",href:"/downloads"},"Downloads")," section of the website and boost your development journey with Podman Desktop. Additionally, visit the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/containers/podman-desktop"},"GitHub repository")," and see how you can help us make Podman Desktop better."))}m.isMDXComponent=!0},4132:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/podman-desktop-release-0.12-d5d46c8986e6e893b9ad30aac05c09f7.png"}}]); \ No newline at end of file diff --git a/assets/js/a7023ddc.aca3b38e.js b/assets/js/a7023ddc.b495674c.js similarity index 58% rename from assets/js/a7023ddc.aca3b38e.js rename to assets/js/a7023ddc.b495674c.js index e581a58d18e..1c397adccdf 100644 --- a/assets/js/a7023ddc.aca3b38e.js +++ b/assets/js/a7023ddc.b495674c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1713],{5208:e=>{e.exports=JSON.parse('[{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop","count":3},{"label":"release","permalink":"/blog/tags/release","count":2},{"label":"kubernetes","permalink":"/blog/tags/kubernetes","count":2},{"label":"devcontainer","permalink":"/blog/tags/devcontainer","count":1},{"label":"codespaces","permalink":"/blog/tags/codespaces","count":1}]')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1713],{5208:e=>{e.exports=JSON.parse('[{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop","count":4},{"label":"release","permalink":"/blog/tags/release","count":3},{"label":"kubernetes","permalink":"/blog/tags/kubernetes","count":3},{"label":"devcontainer","permalink":"/blog/tags/devcontainer","count":1},{"label":"codespaces","permalink":"/blog/tags/codespaces","count":1}]')}}]); \ No newline at end of file diff --git a/assets/js/b0f1c099.6faf70fc.js b/assets/js/b0f1c099.9c804a5c.js similarity index 91% rename from assets/js/b0f1c099.6faf70fc.js rename to assets/js/b0f1c099.9c804a5c.js index e7aa88cbcce..8b79a6d5803 100644 --- a/assets/js/b0f1c099.6faf70fc.js +++ b/assets/js/b0f1c099.9c804a5c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9387],{6462:e=>{e.exports=JSON.parse('{"label":"kubernetes","permalink":"/blog/tags/kubernetes","allTagsPath":"/blog/tags","count":2}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9387],{6462:e=>{e.exports=JSON.parse('{"label":"kubernetes","permalink":"/blog/tags/kubernetes","allTagsPath":"/blog/tags","count":3}')}}]); \ No newline at end of file diff --git a/assets/js/b2b675dd.56af73b5.js b/assets/js/b2b675dd.c87cd94e.js similarity index 77% rename from assets/js/b2b675dd.56af73b5.js rename to assets/js/b2b675dd.c87cd94e.js index 9326998f8f8..c098d914e80 100644 --- a/assets/js/b2b675dd.56af73b5.js +++ b/assets/js/b2b675dd.c87cd94e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[533],{8017:e=>{e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":3,"totalPages":1,"totalCount":3,"blogDescription":"Discover articles about Podman Desktop","blogTitle":"Podman Desktop blog!"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[533],{8017:e=>{e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":4,"totalPages":1,"totalCount":4,"blogDescription":"Discover articles about Podman Desktop","blogTitle":"Podman Desktop blog!"}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.9689cace.js b/assets/js/b2f554cd.9689cace.js new file mode 100644 index 00000000000..b58d52c6cf4 --- /dev/null +++ b/assets/js/b2f554cd.9689cace.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1477],{4556:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"podman-desktop-release-0.12","metadata":{"permalink":"/blog/podman-desktop-release-0.12","source":"@site/blog/2023-02-15-release-0.12.md","title":"Release Notes - Podman Desktop 0.12","description":"Podman Desktop 0.12 has been released!","date":"2023-02-15T00:00:00.000Z","formattedDate":"February 15, 2023","tags":[{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop"},{"label":"release","permalink":"/blog/tags/release"},{"label":"kubernetes","permalink":"/blog/tags/kubernetes"}],"readingTime":4.48,"hasTruncateMarker":true,"authors":[{"name":"Stevan Le Meur","title":"Product Manager","url":"https://github.com/slemeur","imageURL":"https://github.com/slemeur.png","key":"slemeur"}],"frontMatter":{"title":"Release Notes - Podman Desktop 0.12","description":"Podman Desktop 0.12 has been released!","slug":"podman-desktop-release-0.12","authors":["slemeur"],"tags":["podman-desktop","release","kubernetes"],"hide_table_of_contents":false},"nextItem":{"title":"Release Notes - Podman Desktop 0.11","permalink":"/blog/podman-desktop-release-0.11"}},"content":"import ReactPlayer from \'react-player\'\\n\\nThis release note covers Podman Desktop 0.12 release changes.\\n\\n\x3c!--Main Features--\x3e\\n\\n- **Podman Version**: Podman 4.4.1 now included in Windows and Mac installers.\\n- **Containers Configuration**: Configure port mappings for an image without exported ports.\\n- **Windows Home Support**: Podman Desktop now supports Windows Home Edition.\\n- **Start minimized**: Option to start Podman Desktop minimized to system tray.\\n- **UX and UI Improvements**: Consistent actions, placeholder for logs, unified icons and others.\\n\\nPodman Desktop 0.12 is now available. [Click here to download it](/downloads)!\\n\\n![podman-desktop-0-12-hero](img/podman-desktop-release-0.12/podman-desktop-release-0.12.png)\\n\\n\x3c!--truncate--\x3e\\n_________________\\n\\n## Release Details\\n\\n\\n### Update to Podman v4.4.1 [#1456](https://github.com/containers/podman-desktop/pull/1456)\\n\\nPodman Desktop 0.12 embeds [Podman 4.4.1](https://github.com/containers/podman/releases/tag/v4.4.1) in Windows and macOS installers. Make sure to upgrade to benefit from the latest Podman features and bug fixes.\\n\\n### Configuring port mappings when an image has no exported port [#1265](https://github.com/containers/podman-desktop/pull/1265)\\n\\nWith the latest update, users can now add multiple local-to-remote port mappings when starting a container from an image that has no exported ports. This feature provides users with the flexibility to specify which ports on their local machine should map to which ports on the container, even if the container does not have any exported ports by default.\\n\\n![port-mapping](https://user-images.githubusercontent.com/49404737/215112797-86dcf3f0-121a-487e-a71f-ad41e91f93da.gif)\\n\\n### Installing Podman Dekstop on Windows Home Edition [#1268](https://github.com/containers/podman-desktop/pull/1268)\\n\\nPodman Desktop 0.12 offers the ability to be installed on Windows Home Edition. The mechanism uses Virtual Machine Platform detection, instead of hyper-v. WSL2 is still requires but can be installed along with the installation process.\\n\\n![install-windows-home-edition-2](https://user-images.githubusercontent.com/436777/215121429-7c757aaa-a838-43db-98a2-78ad368f407e.png)\\n\\n### Option to automatically minimize Podman Desktop on login [#1374](https://github.com/containers/podman-desktop/pull/1374)\\n\\nPodman Desktop now provides a \\"start minimized\\" option when users log in onto the laptop. This option, available from the application\'s settings, can be useful if users want to automatically launch Podman Desktop at log in, but prefer not to have the window visible on the screen. With this feature, you can ensure that Podman Desktop is up and running in the background without any interruption to your workflows.\\n\\n* Go to **Settings > Preferences > Login: Minimize** to activate the option.\\n\\n![minimize-on-login](https://user-images.githubusercontent.com/6422176/216651424-bcf756fd-7554-4b24-a838-e3e2f798fe6e.png)\\n\\n### UI and UX Improvements \\n\\n#### Improved actions consistency [#1225](https://github.com/containers/podman-desktop/pull/1225)\\n\\nActions displayed in the list pages for Images and Containers have been reviewed and made consistent between other pages. \\n\\n![action-consistency-1](https://user-images.githubusercontent.com/19958075/214104678-2d4148d7-484e-41f9-9da9-aecee328ae2b.png)\\n\\nActions displayed in the header of the container\'s details page have been improved so that the actions are always displayed in the same order.\\n\\n![action-consistency-2](https://user-images.githubusercontent.com/19958075/214104663-64fa0601-bb79-49bf-8226-6a78a88d3622.png)\\n\\n#### Consistent status icons for Pods, Containers, Images and Volumes [#1326](https://github.com/containers/podman-desktop/pull/1326), [#1377](https://github.com/containers/podman-desktop/pull/1377), [#1459](https://github.com/containers/podman-desktop/pull/1459) and [#1245](https://github.com/containers/podman-desktop/pull/1245)\\n\\nThe status icons for Pods, Containers, Images, and Volumes have been unified and use consistent states.\\n\\n![pods-status-icon](https://user-images.githubusercontent.com/19958075/216671859-bdd8dca4-56b7-40a8-961a-dcb6e01be61e.png)\\n\\nIcons in empty screens have been updated to use the same consistent SVG icon as the status icons.\\n\\n![empty-screen-2](https://user-images.githubusercontent.com/436777/214577726-f4cfde7b-017a-499d-a2a9-e50d455ffaf0.png)\\n\\n#### Placeholder when logs for containers are being fetched [#1353](https://github.com/containers/podman-desktop/pull/1353)\\n\\nA placeholder is now displayed when logs are being fetched. \\n![placeholder-loading-logs](https://user-images.githubusercontent.com/49404737/216952505-899308ae-183e-487a-b6e5-28832a0b6452.gif)\\n\\n#### Fixed alignement in badges from the navigation sidebar [#1357](https://github.com/containers/podman-desktop/pull/1357)\\n\\nBadges in the sidebar are now aligned with the title of the section.\\n\\n![alignement-badges](https://user-images.githubusercontent.com/49404737/216336502-2a34dea3-fd41-4184-8cfe-9226d70da070.png)\\n\\n#### Enable/disable open browser action based on container state [#1395](https://github.com/containers/podman-desktop/pull/1395) and [#1397](https://github.com/containers/podman-desktop/pull/1397)\\n\\nThe action to open the browser if a port is opened in a container, is now disabled when the container is stopped. It is also hidden in the kebab menu.\\n\\n![enable-disable-container-actions](https://user-images.githubusercontent.com/49404737/217284414-1bdc820b-30a8-485e-b0f9-485229026696.gif)\\n\\n_________________\\n\\n## Other Notable Enhancements\\n\\n- Display extension icons [#1058](https://github.com/containers/podman-desktop/pull/1058)\\n- Solid Icons [#1267](https://github.com/containers/podman-desktop/pull/1276)\\n- Differentiate icons compared to status icons [#1268](https://github.com/containers/podman-desktop/pull/1298)\\n- Refactors window initializing [#1309](https://github.com/containers/podman-desktop/pull/1309)\\n- Change window creation background color to dark [#1310](https://github.com/containers/podman-desktop/pull/1310)\\n- Use Podman `machine inspect` to read the address to connect to the Podman machine [#1364](https://github.com/containers/podman-desktop/pull/1364)\\n- Update the editor content when the pod name changes, and disable the deploy button when empty [#1403](https://github.com/containers/podman-desktop/pull/1403)\\n- Ability to manually set color of tray icon for Windows and Linux [#1243](https://github.com/containers/podman-desktop/pull/1243)\\n- Better UI feedback when starting pods [#1242](https://github.com/containers/podman-desktop/pull/1242)\\n\\n_________________\\n\\n## Documentation\\n\\nThe documentation had many editorial reviews, and new content.\\n\\n- [Link to simple WSL2 installation instructions](https://podman-desktop.io/docs/Installation/windows-install)\\n- [Refresh Windows Installation](https://podman-desktop.io/docs/Installation/windows-install)\\n- [Revamped installation introduction](https://podman-desktop.io/docs/Installation)\\n- [Reorganized Linux installation](https://podman-desktop.io/docs/Installation/linux-install)\\n- [Installing Podman with OpenShift Local](https://podman-desktop.io/docs/Installation/windows-install/installing-podman-with-openshift-local)\\n- [Installing Podman Desktop on Windows in a restricted environment](https://podman-desktop.io/docs/Installation/windows-install/installing-podman-desktop-and-podman-in-a-restricted-environment)\\n- [Fixed documentation on `podman-mac-helper` setup](https://podman-desktop.io/docs/migrating-from-docker/using-podman-mac-helper)\\n\\n_________________\\n\\n## Notable bug fixes\\n\\n- Fixed handling path with spaces on Windows when installing Podman [#1270](https://github.com/containers/podman-desktop/pull/1270)\\n- Removed padding from SVG icons [#1253](https://github.com/containers/podman-desktop/pull/1253)\\n- Website: fixed download links for Windows and macOS binaries [#1255](https://github.com/containers/podman-desktop/pull/1255)\\n- Fixed prettier commands on Windows [#1266](https://github.com/containers/podman-desktop/pull/1267)\\n- Fixed new xterm instance spawn when clicking the logs route [#1344](https://github.com/containers/podman-desktop/pull/1344)\\n- Fixed need to wait that telemetry has been initilized before proceeding [#1373](https://github.com/containers/podman-desktop/pull/1373)\\n- Fixed new xterm instance spawn when clicking the logs route in pod details[#1393](https://github.com/containers/podman-desktop/pull/1393)\\n- Fixed stop spinner if image cannot be retrieved [#1394](https://github.com/containers/podman-desktop/pull/1394)\\n- Fixed escape command with quotes only for Windows [#1462](https://github.com/containers/podman-desktop/pull/1462) \\n- Fixed random CRC status change [#1420](https://github.com/containers/podman-desktop/pull/1420)\\n\\n_________________\\n\\n## Community Thank You!\\n\\n\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.12 even better:\\n\\n- [Philipp Wagner](https://github.com/imphil) in [#1274 - Link to simple WSL2 installation instructions](https://github.com/containers/podman-desktop/pull/1274)\\n- [Arthur S](https://github.com/arixmkii) in [#1364 - Get podman machine socketPath from podman machine inspect first](https://github.com/containers/podman-desktop/pull/1364)\\n- [Mitch West](https://github.com/Mitch9378) in [#1428 - Fix old documentation for \'podman-mac-helper setup\'](https://github.com/containers/podman-desktop/pull/1428)\\n\\n## Final Notes\\n\\nThe complete list of issues fixed in this release is available [here](https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.12.0).\\n\\nGet the latest release from the [Downloads](/downloads) section of the website and boost your development journey with Podman Desktop. Additionally, visit the [GitHub repository](https://github.com/containers/podman-desktop) and see how you can help us make Podman Desktop better."},{"id":"podman-desktop-release-0.11","metadata":{"permalink":"/blog/podman-desktop-release-0.11","source":"@site/blog/2023-01-18-release-0.11.md","title":"Release Notes - Podman Desktop 0.11","description":"Podman Desktop 0.11 has been released!","date":"2023-01-18T00:00:00.000Z","formattedDate":"January 18, 2023","tags":[{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop"},{"label":"release","permalink":"/blog/tags/release"},{"label":"kubernetes","permalink":"/blog/tags/kubernetes"}],"readingTime":9.35,"hasTruncateMarker":true,"authors":[{"name":"Stevan Le Meur","title":"Product Manager","url":"https://github.com/slemeur","imageURL":"https://github.com/slemeur.png","key":"slemeur"}],"frontMatter":{"title":"Release Notes - Podman Desktop 0.11","description":"Podman Desktop 0.11 has been released!","slug":"podman-desktop-release-0.11","authors":["slemeur"],"tags":["podman-desktop","release","kubernetes"],"hide_table_of_contents":false},"prevItem":{"title":"Release Notes - Podman Desktop 0.12","permalink":"/blog/podman-desktop-release-0.12"},"nextItem":{"title":"Release Notes - Podman Desktop 0.10","permalink":"/blog/podman-desktop-release-0.10"}},"content":"import ReactPlayer from \'react-player\'\\n\\nThis release note covers Podman Desktop 0.11 release changes.\\n\\n- **Air-Gapped Installation**: New all-in-one binaries for air-gapped installation.\\n- **Feedback**: Submit feedback directly from Podman Desktop.\\n- **Docker Compatibility Mode**: Information about the Docker compatibility mode.\\n- **Proxy Setting**: Toggle on/off the proxy setting.\\n- **Deploy to Kubernetes**: Select the namespace to deploy to Kubernetes.\\n- **Registry Configuration**: Simplified registry configuration for well known registries.\\n- **UX/UI Improvements**: View pod\'s container logs, better visual feedback, configurable editor font size, and more.\\n\\nPodman Desktop 0.11 is now available. [Click here to download it](/downloads)! \\n\\n\x3c!--truncate--\x3e\\n_________________\\n\\n## Release Details\\n\\n### Air-Gapped installation [#1104](https://github.com/containers/podman-desktop/pull/1104) [#1120](https://github.com/containers/podman-desktop/pull/1120)\\n\\nFor users who are not able to connect to the internet, a new all-in-one (airgap) binary that includes the Podman Desktop application and the Podman binaries is now available for both Mac and Windows. When initializing a new Podman machine using all-in-one binaries, it\'ll use the embedded files and not grab them from internet: \\n* on Mac, it embeds the qemu FCOS binaries.\\n* on Windows, it embeds the WSL binary.\\n\\nTo differentiate the air-gapped binaries from the regular ones, you can check the artifactname, they\'re containing \'airgap\' and are bigger.\\nPlease note, that those binaries are available only on releases and not the pre-releases.\\n\\nThere is also an optional way to provide a custom Podman machine image in the create machine form. By providing the path to the image you want, Podman Desktop will create a machine with that image. Leaving the field empty will use the default image (the one included in the binary).\\n\\n\\n\\n### Feedback within Podman Desktop [#1078](https://github.com/containers/podman-desktop/pull/1078)\\n\\nSubmitting feedback on Podman Desktop is getting easier as it is possible directly within the tool. This will help to get more information about the issues you are facing and will help us to improve the tool. \\n\\n\\n\\nPlease feel free to submit any feedback you have, we are looking forward to hearing from you!\\n\\n### Docker compatibility mode [#1047](https://github.com/containers/podman-desktop/pull/1047)\\n\\nThe Docker compatibility mode is a feature that allows to use Podman as a drop-in replacement for Docker. It relies on the Docker socket helper provided with Podman and automatically handle the local setup of podman path to the Docker socket. Tools like [Testcontainers](https://www.testcontainers.org/) or others are relying on this to communicate to the container engine. \\n\\nIn this new version of Podman Desktop, we are now providing information to the user about the status of this compatibility mode directly on the dashboard page. The way it works is the following:\\n- When Docker is running: the socket is pointing to Docker.\\n- When Podman is starting and Docker is not running: the docker API socket will use Podman.\\n\\nIn case the compatibility mode is not activated, new documentation on how to activate it and how to easily switch between Docker and Podman is available here: [https://podman-desktop.io/docs/migrating-from-docker](https://podman-desktop.io/docs/migrating-from-docker). \\n\\nThis is a warning displayed for Windows users:\\n![windows-docker-compatibility](https://user-images.githubusercontent.com/436777/209305744-9056addd-f122-4f75-9e03-ad27a0109375.png)\\n\\nThis is the warning for Mac users:\\n![mac-docker-compatibility](https://user-images.githubusercontent.com/6422176/207964861-a9c1f72c-89d6-4816-beab-397af4125620.png)\\n\\n\\n### Allow to toggle on/off the proxy setting [#983](https://github.com/containers/podman-desktop/pull/983)\\n\\nIn some context, users need the ability to disable and re-enable the proxy configuration very quickly, without having to entirely reconfigure it. This is now possible from the Podman Desktop settings page, where a toggle to enable/disable the proxy configuration has been added.\\n\\n\\n\\nNote: extensions can read this information and then update the proxy configuration.\\n\\n### Namespace selection for deploy to kubernetes [#1008](https://github.com/containers/podman-desktop/pull/1008) \\n\\nA new dropdown menu has been added to the deploy to Kubernetes screen to allow selecting the namespace to deploy to. Defaults to defaultnamespace, if unable to get any from kube_client module.\\n\\nIf the user have set `kubectl config set-context --current --namespace=NAMESPACE` it honors that as the chosen value.\\n\\n![deploy-kubernetes-namespace](https://user-images.githubusercontent.com/7339809/206688886-095e4f15-42ae-4a0a-b1c6-ae4b547fcdfb.gif)\\n\\n### Configure Podman binary path [#941](https://github.com/containers/podman-desktop/pull/941)\\n\\nUsers may use a custom path to the podman binary. An option within settings (Settings -> Preferences) to allow providing an additional path to Podman binary has been added. This is useful for users who have installed Podman using a package manager and want to use the binary provided by the package manager. Additional information is available in the documentation for Mac users: [http://podman-desktop.io/docs/troubleshooting#unable-to-set-custom-binary-path-for-podman-on-macos](http://podman-desktop.io/docs/troubleshooting#unable-to-set-custom-binary-path-for-podman-on-macos)\\n \\n![custom-path](https://user-images.githubusercontent.com/6422176/204832063-5858065a-2fc3-49de-8d23-3b99b7d10dbf.png)\\n\\n### Provide pre-defined registries [#1201](https://github.com/containers/podman-desktop/pull/1201)\\n\\nThe experience of configuring a registry is getting simplified for the most popular ones. The user will be able to select a registry from a pre-defined list and will only have to provide the username and password. The following registries will be pre-defined:\\n- Dockerhub\\n- Red Hat Quay\\n- GitHub\\n- IBM Container Registry\\n- Google Container Registry\\n\\n\\n\\n### UI/UX Improvements \\n\\n#### View Pods logs [#1122](https://github.com/containers/podman-desktop/pull/1122)\\n\\nThe pods details view provides the ability to view the logs of each containers that may be running in a pod. Moreover, as it can also be hard to scan and identify which container is producing which output, we appended the container name at the beginning of each output and differentiate each container with a different color. \\n\\n![pods-logs](https://user-images.githubusercontent.com/6422176/211024673-eee9bad8-1b0c-4446-b8d1-97a226282c4d.png)\\n\\n#### Improved feedback when clicking on container list action icons [#1150](https://github.com/containers/podman-desktop/pull/1150) [#1161](https://github.com/containers/podman-desktop/pull/1161)\\n\\nWhen starting/stopping or deleting a container, a spinner is now displayed. In case of error, a message indicating that the action failed will also be better indicated. \\n\\n\\n\\nFor containers that exit immediately or short-lived containers, the feedback is also improved and include report of error now provide a better feedback to the user [#1161](https://github.com/containers/podman-desktop/pull/1161).\\n\\n\\n\\n\\n#### Allows to change the default font size for the editor [#1160](https://github.com/containers/podman-desktop/pull/1160)\\n\\nAn editor is used in several screens of Podman Desktop, from the inspect screen to container\'s outputs and Kubernetes YAML. The default font size is 10 pixels. It\'s now possible to adjust the font size to the one the one you prefer. This setting is persisted and will be used for all the editors of Podman Desktop and available from the preferences page (Settings -> Preferences).\\n\\n\\n\\n#### Keep expanded state of pods when refreshing containers [#1042](https://github.com/containers/podman-desktop/pull/1042)\\n\\nWhen switching from different screens of the application or simply refreshing the list of containers, the expanded state of each item in the list is now persisted and will be properly restored.\\n\\n\\n\\n#### Click on the Pod name redirects to the Pod details page [#1159](https://github.com/containers/podman-desktop/pull/1159)\\n\\nThe list of containers also displays pods, now clicking on the pod name directly redirects to the Pod details page.\\n\\n\\n\\n#### Improved styles of buttons for actions [#984](https://github.com/containers/podman-desktop/pull/984)\\n\\nThe style of the buttons for actions on item in the list of in details pages have been improved. The background has been removed, but to make the hover state more visible, the \\"hover\\" circle is visble and the icon\'s color is also changing.\\n\\nOn lists:\\n![list-actions](https://user-images.githubusercontent.com/6422176/205979121-b49a0ddf-03bb-4a4d-8d12-bc8d0bd52387.png)\\n\\nOn details pages:\\n![details-actions](https://user-images.githubusercontent.com/6422176/205979123-ea420b17-e834-4029-82eb-22949889eee9.png)\\n\\n#### Improved alignments in pages with lists [#1182](https://github.com/containers/podman-desktop/pull/1182)\\n\\nThe alignment of the items in the list of containers and pods have been improved. The header of each columns are now aligned with the text. and the actions icons are now aligned with the top of the text.\\n\\n![list-actions](https://user-images.githubusercontent.com/19958075/212712580-096fd090-0beb-40a4-8dc6-b3fdc5e81e35.png)\\n\\n\\n_________________\\n\\n## Other Notable Enhancements\\n\\n- Statistics area in container details are always shown. ([#1131](https://github.com/containers/podman-desktop/pull/1131))\\n- Add more descriptive wording and more information to extensions. ([#985](https://github.com/containers/podman-desktop/pull/985))\\n- Allow to install on-the fly Podman Desktop extensions using an OCI image. ([#1187](https://github.com/containers/podman-desktop/pull/1187))\\n- Display correctly non-multiplexed stream in logs (when using non interactive mode). ([#1197](https://github.com/containers/podman-desktop/pull/1197))\\n- Font changed from white to gray for non-name sections (creation date, size). ([#1206](https://github.com/containers/podman-desktop/pull/1206))\\n- Add Help/about menu for macOS/Windows/Linux. ([#1207](https://github.com/containers/podman-desktop/pull/1207))\\n_________________\\n\\n## Documentation\\n\\nComing with this new version of Podman Desktop, the documentation has been getting attention (with number of editorial reviews) and new content have been added. \\n\\nContent for helping users to migrate from Docker to Podman has been added:\\n- [Using the `podman-mac-helper` tool to migrate from Docker to Podman on macOS](https://github.com/containers/podman-desktop/pull/1088)\\n- [better identify podman-mac-helper verification steps](https://github.com/containers/podman-desktop/pull/1129)\\n- [Emulating Docker CLI using Podman to migrate from Docker to Podman](https://github.com/containers/podman-desktop/pull/1143)\\n- [Migrating from Docker section](https://github.com/containers/podman-desktop/pull/1146)\\n- [Verifying that your tools are using Podman](https://github.com/containers/podman-desktop/pull/1152)\\n- [Importing saved containers](https://github.com/containers/podman-desktop/pull/1144)\\n\\nSeveral of other improvements have been made to the documentation and the website:\\n- [Troubleshooting for Apple Silicon and brew x86_64 installs](https://github.com/containers/podman-desktop/pull/962)\\n- [Change text of custom binary location, add docs](https://github.com/containers/podman-desktop/pull/972)\\n- [Silent install option for windows](https://github.com/containers/podman-desktop/pull/974)\\n- [Upgrade to vite v4 and rollup v3](https://github.com/containers/podman-desktop/pull/1079)\\n- [Refreshing documentation on installing on Linux](https://github.com/containers/podman-desktop/pull/1118)\\n- [Identify the shell sessions in Installing on Linux](https://github.com/containers/podman-desktop/pull/1130)\\n- [Website: the linux binary is not a source, it should be promoted as a binary](https://github.com/containers/podman-desktop/pull/1133)\\n- [Introducing tabs for operatings systems and container engines](https://github.com/containers/podman-desktop/pull/1162)\\n- [website: In the landing page, update plugins and container engines lists](https://github.com/containers/podman-desktop/pull/1165)\\n- [Document where code is located within Podman Desktop](https://github.com/containers/podman-desktop/pull/1163)\\n- [(extension-api): Documentation on how to write an extension and use the api](https://github.com/containers/podman-desktop/pull/1172)\\n\\n_________________\\n\\n## Notable bug fixes\\n\\n- Update to v0.3.2 Docker Desktop API for extensions - [#1070](https://github.com/containers/podman-desktop/pull/1070)\\n- Updated link to the Matrix room - [#1076](https://github.com/containers/podman-desktop/pull/1076)\\n- Report error when container name already exists - [#1142](https://github.com/containers/podman-desktop/pull/1142)\\n- Fixed connectivity to the Podman machine when the generated socket length is greater than 104 characters in MacOS - [#1145](https://github.com/containers/podman-desktop/pull/1145)\\n- Do not use long calls for external clients - [#1151](https://github.com/containers/podman-desktop/pull/1151)\\n- Invalid name/tag for images with registries using a different port - [#1127](https://github.com/containers/podman-desktop/pull/1127)\\n- Invalid badge count for images when two images have the same tag - [#1124](https://github.com/containers/podman-desktop/pull/1124)\\n- Fixed detection of WSL2 - [#981](https://github.com/containers/podman-desktop/pull/981)\\n- Handle invalid kubeconfig files instead of crashing - [#953](https://github.com/containers/podman-desktop/pull/953)\\n- Removed redundant actions from details pages - [#1200](https://github.com/containers/podman-desktop/pull/1200)\\n- Fixed registry URL not aligned with header - [#1205](https://github.com/containers/podman-desktop/pull/1205)\\n- Moved SVGs to reusable components - [#1211](https://github.com/containers/podman-desktop/pull/1211)\\n\\n** Extensions API has also been improved in this new release: **\\n- (extension-api): Allows to register a factory for kubernetes connection objects (like for container connections) - [#1040](https://github.com/containers/podman-desktop/pull/1040)\\n- (extension-api): List or inspect containers, be notified on events - [#1041](https://github.com/containers/podman-desktop/pull/1041)\\n- (extension-api): Allows to get provider notification - [#1045](https://github.com/containers/podman-desktop/pull/1045)\\n- (dd-extension-api): Implement toast API - [#1154](https://github.com/containers/podman-desktop/pull/1154)\\n- (extension-api): Moved extension properties to preferences - [#948](https://github.com/containers/podman-desktop/pull/948)\\n- (dd-extension-api): Added open dev console on dd webview in development mode - [#1071](https://github.com/containers/podman-desktop/pull/1071)\\n- (extension-api): Added notes on extension and frameworks/tooling of Podman Desktop - [#1166](https://github.com/containers/podman-desktop/pull/1166)\\n- (extension-api): Documentation on how to write an extension and use the api - [#1172](https://github.com/containers/podman-desktop/pull/1172)\\n- (dd-extension-api): DD extensions should see only minimal information on containers - [#1191](https://github.com/containers/podman-desktop/pull/1191)\\n\\n_________________\\n\\n## Community Thank You!\\n\\n\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.11 even better:\\n\\n- [Emmanuel Bernard](https://github.com/emmanuelbernard) in [#962 - Troubleshooting for Apple Silicon](https://github.com/containers/podman-desktop/pull/962)\\n- [Michael Prankl](https://github.com/eidottermihi) in [#974 - Silent install option for windows](https://github.com/containers/podman-desktop/pull/974)\\n- [Endre Lervik](https://github.com/elervik) in [#1008 - Namespace selection for deploy to kubernetes](https://github.com/containers/podman-desktop/pull/1008)\\n- [Evan FP](https://github.com/evanfpearson) in [#1145 - fixed socket path length error](https://github.com/containers/podman-desktop/pull/1145)\\n- [Lokesh Mandvekar](https://github.com/lsm5) in [#956 - add repository key to package.json](https://github.com/containers/podman-desktop/pull/956)\\n- [Jean Fran\xe7ois Maury](https://github.com/jeffmaury) in [#1194 - Cannot create Kind cluster on Windows](https://github.com/containers/podman-desktop/pull/1194)\\n\\n\\n## Final Notes\\n\\nThe complete list of issues fixed in this release is available [here](https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.11.0).\\n\\nGet the latest release from the [Downloads](/downloads) section of the website and boost your development journey with Podman Desktop. Additionally, visit the [GitHub repository](https://github.com/containers/podman-desktop) and see how you can help us make Podman Desktop better."},{"id":"podman-desktop-release-0.10","metadata":{"permalink":"/blog/podman-desktop-release-0.10","source":"@site/blog/2022-12-01-release-0.10-blog.md","title":"Release Notes - Podman Desktop 0.10","description":"Podman Desktop 0.10 has been released! New Create Container Wizard, improved Kubernetes workflows, revamped registries configuration, and more!","date":"2022-12-01T00:00:00.000Z","formattedDate":"December 1, 2022","tags":[{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop"},{"label":"release","permalink":"/blog/tags/release"},{"label":"kubernetes","permalink":"/blog/tags/kubernetes"}],"readingTime":4.09,"hasTruncateMarker":true,"authors":[{"name":"Dev Kumar","title":"Technical PMM Intern","url":"https://github.com/deekay2310","imageURL":"https://github.com/deekay2310.png","key":"deekay2310"}],"frontMatter":{"title":"Release Notes - Podman Desktop 0.10","description":"Podman Desktop 0.10 has been released! New Create Container Wizard, improved Kubernetes workflows, revamped registries configuration, and more!","slug":"podman-desktop-release-0.10","authors":["deekay2310"],"tags":["podman-desktop","release","kubernetes"],"hide_table_of_contents":false},"prevItem":{"title":"Release Notes - Podman Desktop 0.11","permalink":"/blog/podman-desktop-release-0.11"},"nextItem":{"title":"Build & run Podman Desktop in a DevContainer","permalink":"/blog/develop-using-devcontainer"}},"content":"This release note covers Podman Desktop 0.10 release changes.\\n\\n- **Containers Configuration**: Container creation wizzard allowing to define environment variables, networking and more configuration options.\\n- **Kubernetes Improvements**: Play Kubernetes YAML, custom Kubeconfig path support, reload of kube context.\\n- **Registries Configuration**: Revamped registries configuration UI.\\n- **Podman Version**: Podman 4.3.1 now included in Windows and Mac installers.\\n- **UX/UI Improvements**: Improved lists, better contrast, and more.\\n\\nPodman Desktop 0.10 is now available. [Click here to download it](/downloads)! \\n\\n\x3c!--truncate--\x3e\\n_________________\\n\\n## Release Details\\n\\n### New configuration wizzard to create containers ([#773](https://github.com/containers/podman-desktop/pull/773))\\n\\nUntil now, we could only specify port binding when building images to start containers. The create container wizzard now includes several options enabling configuring volumes, environment variables, restart policy and settings on networking and security. It is also possible to reuse an existing (and already configured) a network when creating containers.\\n\\n![new container creation wizard](img/podman-desktop-release-0.10/new_container_creation_wizard.gif)\\n\\n### Kubernetes Capabilities Improvements\\n\\n**Custom Kubeconfig file path ([#780](https://github.com/containers/podman-desktop/pull/780))** \\n\\nKubeconfig path location is now configurable from `Settings > Preferences > Kubernetes: Kubeconfig` and can be set to a custom path. By default, Podman Desktop use the path `$HOME/.kube/config` for the Kubeconfig file.\\n\\n![custom kubeconfig file path](img/podman-desktop-release-0.10/custom-kubeconfig.png)\\n\\n**Play Kubernetes YAML from the Pods list ([#739](https://github.com/containers/podman-desktop/pull/739))**\\n\\nPodman Desktop enables to play existing Kubernetes YAML files. This is now available from `Play Kubernetes YAML` button added to the Pods list, in addition to the Containers list. \\n\\n![play k8s yaml](img/podman-desktop-release-0.10/play_k8s_yaml.gif)\\n\\n**Kube context automatically reloaded when updated ([#813](https://github.com/containers/podman-desktop/pull/813))**\\n\\nAny change to the kube context will now be detected by Podman Desktop in its running state. The system tray, allowing to select which Kubernetes environment to work with, will now reload the kube context without restarting Podman Desktop.\\n\\n### Revamped Container Registries UI ([#446](https://github.com/containers/podman-desktop/issues/446))\\n\\nThe registries configuration UI has been revamped. Instead of using tiles for displaying the registries, now it uses a list where each registry can be added or edited directly in the list. The kebab menu provides options to edit or remove a registry from the list. \\n\\n![registries](img/podman-desktop-release-0.10/registries.png)\\n\\n### Update to Podman 4.3.1 ([#913](https://github.com/containers/podman-desktop/issues/913))\\n\\nPodman Desktop 0.10 is now embedding [Podman 4.3.1](https://github.com/containers/podman/releases/tag/v4.3.1) in Windows and macOS installers. \\n\\n### UI/UX Improvements\\n\\n**Improved lists UX ([#877](https://github.com/containers/podman-desktop/pull/877))**\\n\\nTo reduce the width used in the lists when displaying all the icons, main actions icons are now always displayed (before it was on hover) and the secondary actions are displayed in a kebab menu. For example Start/Stop and delete are primary actions while open the browser, inspect, generate kube yaml, etc. are secondary options.\\n\\n![kebab menu](img/podman-desktop-release-0.10/kebab-menu.png)\\n\\n**Delay appearance of text in navbar ([#767](https://github.com/containers/podman-desktop/pull/767))**\\n\\nWhen minimizing or expanding the navbar, the text was overlapping for a few second the page. Now it\'s displayed with a fading animation. \\n\\n**Selected state: better text color contrast ([#802](https://github.com/containers/podman-desktop/pull/802))**\\n\\nIn the `Images` page, on hover for both the image and the name column, the text contrast has been increased for better visibility: violet indicates that you have selected it.\\n\\n![text color when hover](img/podman-desktop-release-0.10/text-color.gif)\\n\\n**On Linux and Windows, the menu bar is now hidden by default ([#668](https://github.com/containers/podman-desktop/pull/668))**\\n\\nWith this change, the menu bar looks more integrated to the Operating System. The menu can appear if you hit the `Alt` key. Thanks to [Dylan M. Taylor](https://github.com/dylanmtaylor) for contributing to fix this.\\n\\n**Exit when clicking on the close icon of the dashboard on Linux ([#671](https://github.com/containers/podman-desktop/pull/671))**\\n\\nFor most users on Linux, there is no tray icon support. In this situation, when closed, Podman Desktop continues to run in background. [Dylan M. Taylor](https://github.com/dylanmtaylor) added a property to exit the app by default when clicking on the close icon. For people having tray icon support or with the desire of a different behavior, it is possible to disable it from the Settings.\\n\\n_________________\\n\\n## Other Notable Enhancements\\n\\n- Rename `Started` into `Age` in Containers list.([#878](https://github.com/containers/podman-desktop/pull/878))\\n- Added domain validation when adding a registry. ([#838](https://github.com/containers/podman-desktop/pull/838))\\n- Provided a consistent behavior with Podman CLI, `podman-machine-default` is now the default name when creating a Podman machine from Podman Desktop. ([#775](https://github.com/containers/podman-desktop/pull/775))\\n\\n_________________\\n\\n## Notable bug fixes\\n\\n- Fixed error handling when pulling images of Desktop Extensions. ([#782](https://github.com/containers/podman-desktop/pull/782))\\n- Fixed use of the full height of the screen when displaying log in the details of a container. ([#946](https://github.com/containers/podman-desktop/discussions/946))\\n- Fixed First start of Podman Desktop on flatpak was not seeing the podman engine ([#860](https://github.com/containers/podman-desktop/pull/860))\\n\\n## Community Thank You!\\n\\n\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.10 even better:\\n\\n- [Dylan M. Taylor](https://github.com/dylanmtaylor) in [#671](https://github.com/containers/podman-desktop/pull/671)\\n- [Fionn Kelleher](https://github.com/osslate) in [#713](https://github.com/containers/podman-desktop/pull/713)\\n- [Rostislav Svoboda](https://github.com/rsvoboda) in [#737](https://github.com/containers/podman-desktop/pull/737)\\n- [Denis Shemanaev](https://github.com/shemanaev) in [#783](https://github.com/containers/podman-desktop/pull/783)\\n- [Fabrice Flore-Th\xe9bault](https://github.com/themr0c) in [#856](https://github.com/containers/podman-desktop/pull/856)\\n- [Kevin](https://github.com/KevinAtSesam) in [#864](https://github.com/containers/podman-desktop/pull/864)\\n- [@sfrunza13](https://github.com/sfrunza13) in [#872](https://github.com/containers/podman-desktop/pull/872)\\n- [Anjan Nath](https://github.com/anjannath) in [#918](https://github.com/containers/podman-desktop/pull/918)\\n\\n## Final Notes\\n\\nThe complete list of issues fixed in this release is available [here](https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.10.0).\\n\\nGet the latest release from the [Downloads](/downloads) section of the website and boost your development journey with Podman Desktop. Additionally, visit the [GitHub repository](https://github.com/containers/podman-desktop) and see how you can help us make Podman Desktop better."},{"id":"develop-using-devcontainer","metadata":{"permalink":"/blog/develop-using-devcontainer","source":"@site/blog/2022-11-17-develop-podman-using-codespaces.md","title":"Build & run Podman Desktop in a DevContainer","description":"Develop Podman Desktop using a DevContainer locally or using GitHub Codespaces.","date":"2022-11-17T00:00:00.000Z","formattedDate":"November 17, 2022","tags":[{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop"},{"label":"devcontainer","permalink":"/blog/tags/devcontainer"},{"label":"codespaces","permalink":"/blog/tags/codespaces"}],"readingTime":6.985,"hasTruncateMarker":true,"authors":[{"name":"Florent Benoit","title":"Maintainer of Podman Desktop","url":"https://github.com/benoitf","imageURL":"https://github.com/benoitf.png","key":"benoitf"}],"frontMatter":{"title":"Build & run Podman Desktop in a DevContainer","description":"Develop Podman Desktop using a DevContainer locally or using GitHub Codespaces.","slug":"develop-using-devcontainer","authors":["benoitf"],"tags":["podman-desktop","devcontainer","codespaces"],"hide_table_of_contents":false},"prevItem":{"title":"Release Notes - Podman Desktop 0.10","permalink":"/blog/podman-desktop-release-0.10"}},"content":"GitHub [announced last week](https://github.blog/changelog/2022-11-09-codespaces-for-free-and-pro-accounts/) that Codespaces is available for everyone and it includes free minutes.\\n\\nLet see how we can use a [Development Container](https://containers.dev/) having all the tools to build and run Podman Desktop. The Development Container works locally using Visual Studio Code but in this blog post we will see how it works directly with a simple click from GitHub.\\n\\nThe challenges are to run a desktop tool (Podman Desktop) and running a container engine (Podman) inside this Development Container without using too many memory !\\n\\n\x3c!--truncate--\x3e\\n\\n## Defining image of the container\\n\\nThe first thing is in the choice of the image for the container. It is possible to pick-up a default image and add some features but there is no existing feature for Podman at https://github.com/devcontainers/features/tree/main/src and most of the features are expecting to run on top of Debian/Ubuntu\\n\\nIf you are not interested in how to setup the image, jump to the [next section](#configure-the-devcontainer-using-devcontainerjson).\\n\\nPodman binaries are available quickly after the releases for Fedora. I decided then to use `Fedora 37` as the base image.\\n\\nLet start the Containerfile using:\\n\\n```docker\\nFROM quay.io/fedora/fedora:37\\n```\\n\\nThen I install Node.js 16 from official nodejs.org repository. It\'s easier to switch to the version that we need.\\n\\n```docker\\n# install Node.js + yarn\\nENV NODE_VERSION 16.18.1\\nRUN curl -SLO \\"https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz\\" && \\\\\\n tar -xzf \\"node-v$NODE_VERSION-linux-x64.tar.gz\\" -C /usr/local --strip-components=1 && \\\\\\n rm \\"node-v$NODE_VERSION-linux-x64.tar.gz\\" && \\\\\\n npm install -g yarn\\n```\\n\\nNow, all system dependencies used to run an Electron application needs to be installed.\\n\\nPodman is also installed so we can run some containers inside this container.\\n\\nAnd of course, we need to install VNC (I choose [tigervnc](https://tigervnc.org/)) with a light Window Manager ([fluxbox](http://fluxbox.org/)).\\n\\nTo connect to the display of the container, we need to expose VNC over HTML/websocket using [noVNC](https://novnc.com/)\\n\\nxterm is installed to start a terminal from the VNC side.\\n\\n```docker\\nRUN dnf -y update && \\\\\\n yum -y reinstall shadow-utils && \\\\\\n yum install -y git \\\\\\n # dependencies for Podman Desktop\\n nss \\\\\\n atk \\\\\\n at-spi2-atk \\\\\\n cups-libs \\\\\\n gtk3 \\\\\\n # for remote Display\\n fluxbox \\\\\\n tigervnc-server \\\\\\n xorg-x11-fonts-Type1 \\\\\\n novnc \\\\\\n supervisor \\\\\\n xdpyinfo \\\\\\n # for podman\\n podman \\\\\\n fuse-overlayfs --exclude container-selinux \\\\\\n xterm && \\\\\\n rm -rf /var/cache /var/log/dnf* /var/log/yum.*\\n```\\n\\nSupervisord setup the launch of the VNC server and the Window manager\\n\\n```docker\\nCOPY supervisord.conf /etc/supervisord.conf\\n```\\n\\nA custom theme for fluxbox:\\n```docker\\nCOPY fluxbox /usr/share/fluxbox/init\\n```\\n\\n\\nThen we need a special configuration to allow to have Podman working inside the container\\n\\nWe add the `podman-desktop` user with correct range on subuid and subgid when running containers. I used the [tutorial](https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md#etcsubuid-and-etcsubgid-configuration).\\n\\n\\n```docker\\nRUN useradd -u 1000 podman-desktop && echo podman-desktop:10000:5000 > /etc/subuid && echo podman-desktop:10000:5000 > /etc/subgid\\n```\\n\\nThen use some default configuration files\\n```docker\\n# initialize conf files\\nADD https://raw.githubusercontent.com/containers/libpod/master/contrib/podmanimage/stable/containers.conf /etc/containers/containers.conf\\nADD https://raw.githubusercontent.com/containers/libpod/master/contrib/podmanimage/stable/podman-containers.conf /home/podman-desktop/.config/containers/containers.conf\\n```\\n\\nand make sure that all permissions are correct following the guide [https://www.redhat.com/sysadmin/podman-inside-container](https://www.redhat.com/sysadmin/podman-inside-container)\\n\\n```docker\\n# set permissions\\nRUN chown podman-desktop:podman-desktop -R /home/podman-desktop && chmod 644 /etc/containers/containers.conf && \\\\\\n mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers /var/lib/shared/vfs-images /var/lib/shared/vfs-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock; touch /var/lib/shared/vfs-images/images.lock; touch /var/lib/shared/vfs-layers/layers.lock && \\\\\\n mkdir -p /run/user/1000 && chown podman-desktop:podman-desktop /run/user/1000\\n```\\n\\nplus define an empty user namespace.\\n\\n```docker\\nENV _CONTAINERS_USERNS_CONFIGURED=\\"\\"\\n```\\n\\nMake sure Podman will create the socket in an expected directory:\\n```\\n# socket path for podman\\nENV XDG_RUNTIME_DIR=/run/user/1000\\n```\\n\\nOK ! we have a custom Containerfile providing all the tools to build and run Podman Desktop (using VNC for the display), run Podman and run Electron.\\n\\nThe current file is available at https://github.com/containers/podman-desktop/blob/main/.devcontainer/.parent/Containerfile\\n\\n\\nLet\'s configure the DevContainer.\\n\\n\\n\\n## Configure the DevContainer using devcontainer.json\\n\\nDevContainer definition is stored at `.devcontainer/devcontainer.json` file.\\n\\nWe need to reuse the image of the previous step. For that let\'s use the build section of the `devcontainer.json` file.\\n\\n```json\\n\\"build\\": {\\n \\"dockerfile\\": \\"Containerfile\\"\\n},\\n```\\n\\nIn order to avoid to redo all the build steps each time we open a workspace using this dev container, we published the image to quay.io at [quay.io/podman-desktop/devcontainer-parent:next\\n](https://quay.io/repository/podman-desktop/devcontainer-parent?tab=tags&tag=next). This parent image is not changing much so it\'s better to use is as a parent one.\\n\\nInside `.devcontainer` directory there is a `.parent` directory with everything related to the parent image.\\n\\nAnd in the `.devcontainer/Containerfile` file we reference this image\\n\\n\\n```docker\\nFROM quay.io/podman-desktop/devcontainer-parent:next\\n```\\n\\nBy default, we will be `root` in the container and this is probably not what we expect. Let\'s change that.\\n\\n```json\\n\\"containerUser\\": \\"podman-desktop\\"\\n```\\n\\nSome Visual Studio Code extensions are nice to use and we can add them\\n```json\\n \\"extensions\\": [\\"svelte.svelte-vscode\\", \\"bradlc.vscode-tailwindcss\\"]\\n```\\n\\nThen here is the tricky part, how to run our container allowing to run again inside the container some containers with podman.\\n\\nWe specify the arguments to make it possible. It\'s possible to use `--privileged` flag but I prefer to list the subset of permissions.\\nUsing `--privileged` we don\'t really know what are the privilege that are required while specifying all of them, people are aware of what is granted/denied.\\n\\n```json\\n\\"runArgs\\": [\\n \\"--cap-add=sys_admin\\",\\n \\"--security-opt\\",\\n \\"seccomp=unconfined\\",\\n \\"--device\\",\\n \\"/dev/fuse\\",\\n \\"--security-opt\\",\\n \\"label=disable\\",\\n \\"--security-opt\\",\\n \\"apparmor=unconfined\\"\\n ],\\n```\\n\\nSource code of Podman Desktop needs to be editable within the DevContainer so it needs to be mounted.\\n\\n```json\\n\\"workspaceMount\\": \\"source=${localWorkspaceFolder},target=/workspace,type=bind\\",\\n\\"workspaceFolder\\": \\"/workspace\\",\\n```\\n\\nThen we need a command to build Podman Desktop.\\n\\nFor that, we use `onCreateCommand` hook with a custom command\\n\\n```json\\n\\"onCreateCommand\\": \\"${containerWorkspaceFolder}/.devcontainer/onCreateCommand.sh\\",\\n```\\n\\nand in the `.devcontainer` folder the `onCreateCommand.sh` script is the following\\n\\n```shell\\n#!/bin/sh\\nyarn\\n\\nMODE=production yarn run build && yarn run electron-builder build --linux --dir --config .electron-builder.config.cjs\\n```\\n\\nTwo instructions:\\n1. Fetch all Node.js dependencies.\\n2. build Podman Desktop in the `dist` folder using `Linux` as target Operating System.\\n\\nAfter the start of the container, how to launch Podman Desktop, the website and VNC, etc ?\\n\\nJust use `postStartCommand` hook.\\n\\n```json\\n\\"postStartCommand\\": \\"${containerWorkspaceFolder}/.devcontainer/postStartCommand.sh\\",\\n```\\n\\nand in the `.devcontainer` folder the `postStartCommand.sh` script is the following:\\n\\n```shell\\n#!/bin/sh\\n\\n# Start all services\\n/usr/bin/supervisord -c /etc/supervisord.conf &\\n\\n# wait X server to be ready or after 2mn exit\\necho \\"Waiting for X server to be ready\\"\\ntimeout 120 bash -c \'until xdpyinfo -display :0 &> /dev/null; do printf \\".\\"; sleep 1; done\'\\n\\n# launch podman desktop\\necho \\"Launching Podman Desktop\\"\\ncd dist/linux-unpacked/&& ./podman-desktop &\\n\\n# Launch the 9000 redirect after 20 seconds\\nsleep 20\\nwebsockify --web=/usr/share/novnc localhost:9000 localhost:5900 &\\n\\n# launch the website rendering\\necho \\"Launching Website\\"\\ncd website && yarn start\\n```\\n\\nIt starts VNC and noVNC, start precompiled Podman Desktop and start the documentation rendering.\\n\\nIt is not launching the Watch mode/development mode of Podman Desktop as it requires a container having more than 8GB of memory.\\n\\nPicking up a larger instace with for example 16GB, it\'s possible to use development mode.\\n\\nOf course, to make VNC happy, we need to specify the `DISPLAY` environment variable.\\n\\n```json\\n\\"remoteEnv\\": {\\n \\"DISPLAY\\": \\":0\\"\\n}\\n```\\n\\nWhen the DevContainer is fully available, we want to have a way to quickly open the `Website rendering URL` and `noVNC`\\n\\nLet\'s tweak the `devcontainer.json` file by adding the `portsAttributes` section\\n\\n```json\\n\\"portsAttributes\\": {\\n \\"9000\\": {\\n \\"label\\": \\"vnc\\",\\n \\"onAutoForward\\": \\"openPreview\\"\\n },\\n \\"3000\\": {\\n \\"label\\": \\"website\\"\\n }\\n}\\n```\\n\\nAfter all post-creation steps, the `Preview` browser inside the VS Code editor will open a window to VNC. And another port (`3000`) is flagged for the website.\\n\\n\\n## Using the DevContainer.json on Github Codespace\\n\\nAs a user, opening a workspace with all what we configured is done using a single click.\\n\\nGo to https://github.com/containers/podman-desktop then click on the `< > Code` dropdown and click on `Create codespace on main` button.\\n\\n![Open Codespace](img/develop-podman-using-codespaces/codespaces-click-repository.png)\\n\\nOnce you click on the button, the codespace is setting up:\\n\\n![Preparing Codepace](img/develop-podman-using-codespaces/codespaces-preparing-codespace.png)\\n\\nAfter few minutes, as there is not yet [prebuilt codespaces](https://docs.github.com/en/codespaces/prebuilding-your-codespaces/about-github-codespaces-prebuilds), the codespace is opening.\\n\\nThe simple Browser displays the noVNC window:\\n![Opening Codespace](img/develop-podman-using-codespaces/codespaces-open-novnc.png)\\n\\nClick on the connect button. Then on the terminal you can enter `podman run quay.io/podman/hello` and the container is detected in Podman Desktop.\\n![Testing Codespace](img/develop-podman-using-codespaces/codespaces-testing-podman-desktop.png)\\n\\nIt\'s also possible using the port widget to get on `3000` port by clicking on the world icon a preview of the website in another tab. Changing source code of the website will refresh the content of the window.\\n\\nDepending on the usecase, it\'s also possible to open documentation in the preview browser.\\n\\n![Edit website Codespace](img/develop-podman-using-codespaces/codespaces-edit-website.png)\\n\\n## Conclusion\\n\\nThe DevContainer image for Podman Desktop is recent so it\'ll probably evolve over time by adding new capabilities but it allows you to easily build/run/experiment and **contribute** to the tool or the website."}]}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.f0f52d30.js b/assets/js/b2f554cd.f0f52d30.js deleted file mode 100644 index 18fa3198110..00000000000 --- a/assets/js/b2f554cd.f0f52d30.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1477],{4556:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"podman-desktop-release-0.11","metadata":{"permalink":"/blog/podman-desktop-release-0.11","source":"@site/blog/2023-01-18-release-0.11.md","title":"Release Notes - Podman Desktop 0.11","description":"Podman Desktop 0.11 has been released!","date":"2023-01-18T00:00:00.000Z","formattedDate":"January 18, 2023","tags":[{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop"},{"label":"release","permalink":"/blog/tags/release"},{"label":"kubernetes","permalink":"/blog/tags/kubernetes"}],"readingTime":9.35,"hasTruncateMarker":true,"authors":[{"name":"Stevan Le Meur","title":"Product Manager","url":"https://github.com/slemeur","imageURL":"https://github.com/slemeur.png","key":"slemeur"}],"frontMatter":{"title":"Release Notes - Podman Desktop 0.11","description":"Podman Desktop 0.11 has been released!","slug":"podman-desktop-release-0.11","authors":["slemeur"],"tags":["podman-desktop","release","kubernetes"],"hide_table_of_contents":false},"nextItem":{"title":"Release Notes - Podman Desktop 0.10","permalink":"/blog/podman-desktop-release-0.10"}},"content":"import ReactPlayer from \'react-player\'\\n\\nThis release note covers Podman Desktop 0.11 release changes.\\n\\n- **Air-Gapped Installation**: New all-in-one binaries for air-gapped installation.\\n- **Feedback**: Submit feedback directly from Podman Desktop.\\n- **Docker Compatibility Mode**: Information about the Docker compatibility mode.\\n- **Proxy Setting**: Toggle on/off the proxy setting.\\n- **Deploy to Kubernetes**: Select the namespace to deploy to Kubernetes.\\n- **Registry Configuration**: Simplified registry configuration for well known registries.\\n- **UX/UI Improvements**: View pod\'s container logs, better visual feedback, configurable editor font size, and more.\\n\\nPodman Desktop 0.11 is now available. [Click here to download it](/downloads)! \\n\\n\x3c!--truncate--\x3e\\n_________________\\n\\n## Release Details\\n\\n### Air-Gapped installation [#1104](https://github.com/containers/podman-desktop/pull/1104) [#1120](https://github.com/containers/podman-desktop/pull/1120)\\n\\nFor users who are not able to connect to the internet, a new all-in-one (airgap) binary that includes the Podman Desktop application and the Podman binaries is now available for both Mac and Windows. When initializing a new Podman machine using all-in-one binaries, it\'ll use the embedded files and not grab them from internet: \\n* on Mac, it embeds the qemu FCOS binaries.\\n* on Windows, it embeds the WSL binary.\\n\\nTo differentiate the air-gapped binaries from the regular ones, you can check the artifactname, they\'re containing \'airgap\' and are bigger.\\nPlease note, that those binaries are available only on releases and not the pre-releases.\\n\\nThere is also an optional way to provide a custom Podman machine image in the create machine form. By providing the path to the image you want, Podman Desktop will create a machine with that image. Leaving the field empty will use the default image (the one included in the binary).\\n\\n\\n\\n### Feedback within Podman Desktop [#1078](https://github.com/containers/podman-desktop/pull/1078)\\n\\nSubmitting feedback on Podman Desktop is getting easier as it is possible directly within the tool. This will help to get more information about the issues you are facing and will help us to improve the tool. \\n\\n\\n\\nPlease feel free to submit any feedback you have, we are looking forward to hearing from you!\\n\\n### Docker compatibility mode [#1047](https://github.com/containers/podman-desktop/pull/1047)\\n\\nThe Docker compatibility mode is a feature that allows to use Podman as a drop-in replacement for Docker. It relies on the Docker socket helper provided with Podman and automatically handle the local setup of podman path to the Docker socket. Tools like [Testcontainers](https://www.testcontainers.org/) or others are relying on this to communicate to the container engine. \\n\\nIn this new version of Podman Desktop, we are now providing information to the user about the status of this compatibility mode directly on the dashboard page. The way it works is the following:\\n- When Docker is running: the socket is pointing to Docker.\\n- When Podman is starting and Docker is not running: the docker API socket will use Podman.\\n\\nIn case the compatibility mode is not activated, new documentation on how to activate it and how to easily switch between Docker and Podman is available here: [https://podman-desktop.io/docs/migrating-from-docker](https://podman-desktop.io/docs/migrating-from-docker). \\n\\nThis is a warning displayed for Windows users:\\n![windows-docker-compatibility](https://user-images.githubusercontent.com/436777/209305744-9056addd-f122-4f75-9e03-ad27a0109375.png)\\n\\nThis is the warning for Mac users:\\n![mac-docker-compatibility](https://user-images.githubusercontent.com/6422176/207964861-a9c1f72c-89d6-4816-beab-397af4125620.png)\\n\\n\\n### Allow to toggle on/off the proxy setting [#983](https://github.com/containers/podman-desktop/pull/983)\\n\\nIn some context, users need the ability to disable and re-enable the proxy configuration very quickly, without having to entirely reconfigure it. This is now possible from the Podman Desktop settings page, where a toggle to enable/disable the proxy configuration has been added.\\n\\n\\n\\nNote: extensions can read this information and then update the proxy configuration.\\n\\n### Namespace selection for deploy to kubernetes [#1008](https://github.com/containers/podman-desktop/pull/1008) \\n\\nA new dropdown menu has been added to the deploy to Kubernetes screen to allow selecting the namespace to deploy to. Defaults to defaultnamespace, if unable to get any from kube_client module.\\n\\nIf the user have set `kubectl config set-context --current --namespace=NAMESPACE` it honors that as the chosen value.\\n\\n![deploy-kubernetes-namespace](https://user-images.githubusercontent.com/7339809/206688886-095e4f15-42ae-4a0a-b1c6-ae4b547fcdfb.gif)\\n\\n### Configure Podman binary path [#941](https://github.com/containers/podman-desktop/pull/941)\\n\\nUsers may use a custom path to the podman binary. An option within settings (Settings -> Preferences) to allow providing an additional path to Podman binary has been added. This is useful for users who have installed Podman using a package manager and want to use the binary provided by the package manager. Additional information is available in the documentation for Mac users: [http://podman-desktop.io/docs/troubleshooting#unable-to-set-custom-binary-path-for-podman-on-macos](http://podman-desktop.io/docs/troubleshooting#unable-to-set-custom-binary-path-for-podman-on-macos)\\n \\n![custom-path](https://user-images.githubusercontent.com/6422176/204832063-5858065a-2fc3-49de-8d23-3b99b7d10dbf.png)\\n\\n### Provide pre-defined registries [#1201](https://github.com/containers/podman-desktop/pull/1201)\\n\\nThe experience of configuring a registry is getting simplified for the most popular ones. The user will be able to select a registry from a pre-defined list and will only have to provide the username and password. The following registries will be pre-defined:\\n- Dockerhub\\n- Red Hat Quay\\n- GitHub\\n- IBM Container Registry\\n- Google Container Registry\\n\\n\\n\\n### UI/UX Improvements \\n\\n#### View Pods logs [#1122](https://github.com/containers/podman-desktop/pull/1122)\\n\\nThe pods details view provides the ability to view the logs of each containers that may be running in a pod. Moreover, as it can also be hard to scan and identify which container is producing which output, we appended the container name at the beginning of each output and differentiate each container with a different color. \\n\\n![pods-logs](https://user-images.githubusercontent.com/6422176/211024673-eee9bad8-1b0c-4446-b8d1-97a226282c4d.png)\\n\\n#### Improved feedback when clicking on container list action icons [#1150](https://github.com/containers/podman-desktop/pull/1150) [#1161](https://github.com/containers/podman-desktop/pull/1161)\\n\\nWhen starting/stopping or deleting a container, a spinner is now displayed. In case of error, a message indicating that the action failed will also be better indicated. \\n\\n\\n\\nFor containers that exit immediately or short-lived containers, the feedback is also improved and include report of error now provide a better feedback to the user [#1161](https://github.com/containers/podman-desktop/pull/1161).\\n\\n\\n\\n\\n#### Allows to change the default font size for the editor [#1160](https://github.com/containers/podman-desktop/pull/1160)\\n\\nAn editor is used in several screens of Podman Desktop, from the inspect screen to container\'s outputs and Kubernetes YAML. The default font size is 10 pixels. It\'s now possible to adjust the font size to the one the one you prefer. This setting is persisted and will be used for all the editors of Podman Desktop and available from the preferences page (Settings -> Preferences).\\n\\n\\n\\n#### Keep expanded state of pods when refreshing containers [#1042](https://github.com/containers/podman-desktop/pull/1042)\\n\\nWhen switching from different screens of the application or simply refreshing the list of containers, the expanded state of each item in the list is now persisted and will be properly restored.\\n\\n\\n\\n#### Click on the Pod name redirects to the Pod details page [#1159](https://github.com/containers/podman-desktop/pull/1159)\\n\\nThe list of containers also displays pods, now clicking on the pod name directly redirects to the Pod details page.\\n\\n\\n\\n#### Improved styles of buttons for actions [#984](https://github.com/containers/podman-desktop/pull/984)\\n\\nThe style of the buttons for actions on item in the list of in details pages have been improved. The background has been removed, but to make the hover state more visible, the \\"hover\\" circle is visble and the icon\'s color is also changing.\\n\\nOn lists:\\n![list-actions](https://user-images.githubusercontent.com/6422176/205979121-b49a0ddf-03bb-4a4d-8d12-bc8d0bd52387.png)\\n\\nOn details pages:\\n![details-actions](https://user-images.githubusercontent.com/6422176/205979123-ea420b17-e834-4029-82eb-22949889eee9.png)\\n\\n#### Improved alignments in pages with lists [#1182](https://github.com/containers/podman-desktop/pull/1182)\\n\\nThe alignment of the items in the list of containers and pods have been improved. The header of each columns are now aligned with the text. and the actions icons are now aligned with the top of the text.\\n\\n![list-actions](https://user-images.githubusercontent.com/19958075/212712580-096fd090-0beb-40a4-8dc6-b3fdc5e81e35.png)\\n\\n\\n_________________\\n\\n## Other Notable Enhancements\\n\\n- Statistics area in container details are always shown. ([#1131](https://github.com/containers/podman-desktop/pull/1131))\\n- Add more descriptive wording and more information to extensions. ([#985](https://github.com/containers/podman-desktop/pull/985))\\n- Allow to install on-the fly Podman Desktop extensions using an OCI image. ([#1187](https://github.com/containers/podman-desktop/pull/1187))\\n- Display correctly non-multiplexed stream in logs (when using non interactive mode). ([#1197](https://github.com/containers/podman-desktop/pull/1197))\\n- Font changed from white to gray for non-name sections (creation date, size). ([#1206](https://github.com/containers/podman-desktop/pull/1206))\\n- Add Help/about menu for macOS/Windows/Linux. ([#1207](https://github.com/containers/podman-desktop/pull/1207))\\n_________________\\n\\n## Documentation\\n\\nComing with this new version of Podman Desktop, the documentation has been getting attention (with number of editorial reviews) and new content have been added. \\n\\nContent for helping users to migrate from Docker to Podman has been added:\\n- [Using the `podman-mac-helper` tool to migrate from Docker to Podman on macOS](https://github.com/containers/podman-desktop/pull/1088)\\n- [better identify podman-mac-helper verification steps](https://github.com/containers/podman-desktop/pull/1129)\\n- [Emulating Docker CLI using Podman to migrate from Docker to Podman](https://github.com/containers/podman-desktop/pull/1143)\\n- [Migrating from Docker section](https://github.com/containers/podman-desktop/pull/1146)\\n- [Verifying that your tools are using Podman](https://github.com/containers/podman-desktop/pull/1152)\\n- [Importing saved containers](https://github.com/containers/podman-desktop/pull/1144)\\n\\nSeveral of other improvements have been made to the documentation and the website:\\n- [Troubleshooting for Apple Silicon and brew x86_64 installs](https://github.com/containers/podman-desktop/pull/962)\\n- [Change text of custom binary location, add docs](https://github.com/containers/podman-desktop/pull/972)\\n- [Silent install option for windows](https://github.com/containers/podman-desktop/pull/974)\\n- [Upgrade to vite v4 and rollup v3](https://github.com/containers/podman-desktop/pull/1079)\\n- [Refreshing documentation on installing on Linux](https://github.com/containers/podman-desktop/pull/1118)\\n- [Identify the shell sessions in Installing on Linux](https://github.com/containers/podman-desktop/pull/1130)\\n- [Website: the linux binary is not a source, it should be promoted as a binary](https://github.com/containers/podman-desktop/pull/1133)\\n- [Introducing tabs for operatings systems and container engines](https://github.com/containers/podman-desktop/pull/1162)\\n- [website: In the landing page, update plugins and container engines lists](https://github.com/containers/podman-desktop/pull/1165)\\n- [Document where code is located within Podman Desktop](https://github.com/containers/podman-desktop/pull/1163)\\n- [(extension-api): Documentation on how to write an extension and use the api](https://github.com/containers/podman-desktop/pull/1172)\\n\\n_________________\\n\\n## Notable bug fixes\\n\\n- Update to v0.3.2 Docker Desktop API for extensions - [#1070](https://github.com/containers/podman-desktop/pull/1070)\\n- Updated link to the Matrix room - [#1076](https://github.com/containers/podman-desktop/pull/1076)\\n- Report error when container name already exists - [#1142](https://github.com/containers/podman-desktop/pull/1142)\\n- Fixed connectivity to the Podman machine when the generated socket length is greater than 104 characters in MacOS - [#1145](https://github.com/containers/podman-desktop/pull/1145)\\n- Do not use long calls for external clients - [#1151](https://github.com/containers/podman-desktop/pull/1151)\\n- Invalid name/tag for images with registries using a different port - [#1127](https://github.com/containers/podman-desktop/pull/1127)\\n- Invalid badge count for images when two images have the same tag - [#1124](https://github.com/containers/podman-desktop/pull/1124)\\n- Fixed detection of WSL2 - [#981](https://github.com/containers/podman-desktop/pull/981)\\n- Handle invalid kubeconfig files instead of crashing - [#953](https://github.com/containers/podman-desktop/pull/953)\\n- Removed redundant actions from details pages - [#1200](https://github.com/containers/podman-desktop/pull/1200)\\n- Fixed registry URL not aligned with header - [#1205](https://github.com/containers/podman-desktop/pull/1205)\\n- Moved SVGs to reusable components - [#1211](https://github.com/containers/podman-desktop/pull/1211)\\n\\n** Extensions API has also been improved in this new release: **\\n- (extension-api): Allows to register a factory for kubernetes connection objects (like for container connections) - [#1040](https://github.com/containers/podman-desktop/pull/1040)\\n- (extension-api): List or inspect containers, be notified on events - [#1041](https://github.com/containers/podman-desktop/pull/1041)\\n- (extension-api): Allows to get provider notification - [#1045](https://github.com/containers/podman-desktop/pull/1045)\\n- (dd-extension-api): Implement toast API - [#1154](https://github.com/containers/podman-desktop/pull/1154)\\n- (extension-api): Moved extension properties to preferences - [#948](https://github.com/containers/podman-desktop/pull/948)\\n- (dd-extension-api): Added open dev console on dd webview in development mode - [#1071](https://github.com/containers/podman-desktop/pull/1071)\\n- (extension-api): Added notes on extension and frameworks/tooling of Podman Desktop - [#1166](https://github.com/containers/podman-desktop/pull/1166)\\n- (extension-api): Documentation on how to write an extension and use the api - [#1172](https://github.com/containers/podman-desktop/pull/1172)\\n- (dd-extension-api): DD extensions should see only minimal information on containers - [#1191](https://github.com/containers/podman-desktop/pull/1191)\\n\\n_________________\\n\\n## Community Thank You!\\n\\n\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.11 even better:\\n\\n- [Emmanuel Bernard](https://github.com/emmanuelbernard) in [#962 - Troubleshooting for Apple Silicon](https://github.com/containers/podman-desktop/pull/962)\\n- [Michael Prankl](https://github.com/eidottermihi) in [#974 - Silent install option for windows](https://github.com/containers/podman-desktop/pull/974)\\n- [Endre Lervik](https://github.com/elervik) in [#1008 - Namespace selection for deploy to kubernetes](https://github.com/containers/podman-desktop/pull/1008)\\n- [Evan FP](https://github.com/evanfpearson) in [#1145 - fixed socket path length error](https://github.com/containers/podman-desktop/pull/1145)\\n- [Lokesh Mandvekar](https://github.com/lsm5) in [#956 - add repository key to package.json](https://github.com/containers/podman-desktop/pull/956)\\n- [Jean Fran\xe7ois Maury](https://github.com/jeffmaury) in [#1194 - Cannot create Kind cluster on Windows](https://github.com/containers/podman-desktop/pull/1194)\\n\\n\\n## Final Notes\\n\\nThe complete list of issues fixed in this release is available [here](https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.11.0).\\n\\nGet the latest release from the [Downloads](/downloads) section of the website and boost your development journey with Podman Desktop. Additionally, visit the [GitHub repository](https://github.com/containers/podman-desktop) and see how you can help us make Podman Desktop better."},{"id":"podman-desktop-release-0.10","metadata":{"permalink":"/blog/podman-desktop-release-0.10","source":"@site/blog/2022-12-01-release-0.10-blog.md","title":"Release Notes - Podman Desktop 0.10","description":"Podman Desktop 0.10 has been released! New Create Container Wizard, improved Kubernetes workflows, revamped registries configuration, and more!","date":"2022-12-01T00:00:00.000Z","formattedDate":"December 1, 2022","tags":[{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop"},{"label":"release","permalink":"/blog/tags/release"},{"label":"kubernetes","permalink":"/blog/tags/kubernetes"}],"readingTime":4.09,"hasTruncateMarker":true,"authors":[{"name":"Dev Kumar","title":"Technical PMM Intern","url":"https://github.com/deekay2310","imageURL":"https://github.com/deekay2310.png","key":"deekay2310"}],"frontMatter":{"title":"Release Notes - Podman Desktop 0.10","description":"Podman Desktop 0.10 has been released! New Create Container Wizard, improved Kubernetes workflows, revamped registries configuration, and more!","slug":"podman-desktop-release-0.10","authors":["deekay2310"],"tags":["podman-desktop","release","kubernetes"],"hide_table_of_contents":false},"prevItem":{"title":"Release Notes - Podman Desktop 0.11","permalink":"/blog/podman-desktop-release-0.11"},"nextItem":{"title":"Build & run Podman Desktop in a DevContainer","permalink":"/blog/develop-using-devcontainer"}},"content":"This release note covers Podman Desktop 0.10 release changes.\\n\\n- **Containers Configuration**: Container creation wizzard allowing to define environment variables, networking and more configuration options.\\n- **Kubernetes Improvements**: Play Kubernetes YAML, custom Kubeconfig path support, reload of kube context.\\n- **Registries Configuration**: Revamped registries configuration UI.\\n- **Podman Version**: Podman 4.3.1 now included in Windows and Mac installers.\\n- **UX/UI Improvements**: Improved lists, better contrast, and more.\\n\\nPodman Desktop 0.10 is now available. [Click here to download it](/downloads)! \\n\\n\x3c!--truncate--\x3e\\n_________________\\n\\n## Release Details\\n\\n### New configuration wizzard to create containers ([#773](https://github.com/containers/podman-desktop/pull/773))\\n\\nUntil now, we could only specify port binding when building images to start containers. The create container wizzard now includes several options enabling configuring volumes, environment variables, restart policy and settings on networking and security. It is also possible to reuse an existing (and already configured) a network when creating containers.\\n\\n![new container creation wizard](img/podman-desktop-release-0.10/new_container_creation_wizard.gif)\\n\\n### Kubernetes Capabilities Improvements\\n\\n**Custom Kubeconfig file path ([#780](https://github.com/containers/podman-desktop/pull/780))** \\n\\nKubeconfig path location is now configurable from `Settings > Preferences > Kubernetes: Kubeconfig` and can be set to a custom path. By default, Podman Desktop use the path `$HOME/.kube/config` for the Kubeconfig file.\\n\\n![custom kubeconfig file path](img/podman-desktop-release-0.10/custom-kubeconfig.png)\\n\\n**Play Kubernetes YAML from the Pods list ([#739](https://github.com/containers/podman-desktop/pull/739))**\\n\\nPodman Desktop enables to play existing Kubernetes YAML files. This is now available from `Play Kubernetes YAML` button added to the Pods list, in addition to the Containers list. \\n\\n![play k8s yaml](img/podman-desktop-release-0.10/play_k8s_yaml.gif)\\n\\n**Kube context automatically reloaded when updated ([#813](https://github.com/containers/podman-desktop/pull/813))**\\n\\nAny change to the kube context will now be detected by Podman Desktop in its running state. The system tray, allowing to select which Kubernetes environment to work with, will now reload the kube context without restarting Podman Desktop.\\n\\n### Revamped Container Registries UI ([#446](https://github.com/containers/podman-desktop/issues/446))\\n\\nThe registries configuration UI has been revamped. Instead of using tiles for displaying the registries, now it uses a list where each registry can be added or edited directly in the list. The kebab menu provides options to edit or remove a registry from the list. \\n\\n![registries](img/podman-desktop-release-0.10/registries.png)\\n\\n### Update to Podman 4.3.1 ([#913](https://github.com/containers/podman-desktop/issues/913))\\n\\nPodman Desktop 0.10 is now embedding [Podman 4.3.1](https://github.com/containers/podman/releases/tag/v4.3.1) in Windows and macOS installers. \\n\\n### UI/UX Improvements\\n\\n**Improved lists UX ([#877](https://github.com/containers/podman-desktop/pull/877))**\\n\\nTo reduce the width used in the lists when displaying all the icons, main actions icons are now always displayed (before it was on hover) and the secondary actions are displayed in a kebab menu. For example Start/Stop and delete are primary actions while open the browser, inspect, generate kube yaml, etc. are secondary options.\\n\\n![kebab menu](img/podman-desktop-release-0.10/kebab-menu.png)\\n\\n**Delay appearance of text in navbar ([#767](https://github.com/containers/podman-desktop/pull/767))**\\n\\nWhen minimizing or expanding the navbar, the text was overlapping for a few second the page. Now it\'s displayed with a fading animation. \\n\\n**Selected state: better text color contrast ([#802](https://github.com/containers/podman-desktop/pull/802))**\\n\\nIn the `Images` page, on hover for both the image and the name column, the text contrast has been increased for better visibility: violet indicates that you have selected it.\\n\\n![text color when hover](img/podman-desktop-release-0.10/text-color.gif)\\n\\n**On Linux and Windows, the menu bar is now hidden by default ([#668](https://github.com/containers/podman-desktop/pull/668))**\\n\\nWith this change, the menu bar looks more integrated to the Operating System. The menu can appear if you hit the `Alt` key. Thanks to [Dylan M. Taylor](https://github.com/dylanmtaylor) for contributing to fix this.\\n\\n**Exit when clicking on the close icon of the dashboard on Linux ([#671](https://github.com/containers/podman-desktop/pull/671))**\\n\\nFor most users on Linux, there is no tray icon support. In this situation, when closed, Podman Desktop continues to run in background. [Dylan M. Taylor](https://github.com/dylanmtaylor) added a property to exit the app by default when clicking on the close icon. For people having tray icon support or with the desire of a different behavior, it is possible to disable it from the Settings.\\n\\n_________________\\n\\n## Other Notable Enhancements\\n\\n- Rename `Started` into `Age` in Containers list.([#878](https://github.com/containers/podman-desktop/pull/878))\\n- Added domain validation when adding a registry. ([#838](https://github.com/containers/podman-desktop/pull/838))\\n- Provided a consistent behavior with Podman CLI, `podman-machine-default` is now the default name when creating a Podman machine from Podman Desktop. ([#775](https://github.com/containers/podman-desktop/pull/775))\\n\\n_________________\\n\\n## Notable bug fixes\\n\\n- Fixed error handling when pulling images of Desktop Extensions. ([#782](https://github.com/containers/podman-desktop/pull/782))\\n- Fixed use of the full height of the screen when displaying log in the details of a container. ([#946](https://github.com/containers/podman-desktop/discussions/946))\\n- Fixed First start of Podman Desktop on flatpak was not seeing the podman engine ([#860](https://github.com/containers/podman-desktop/pull/860))\\n\\n## Community Thank You!\\n\\n\ud83c\udf89 We\u2019d like to say a big thank you to everyone who helped to make Podman Desktop 0.10 even better:\\n\\n- [Dylan M. Taylor](https://github.com/dylanmtaylor) in [#671](https://github.com/containers/podman-desktop/pull/671)\\n- [Fionn Kelleher](https://github.com/osslate) in [#713](https://github.com/containers/podman-desktop/pull/713)\\n- [Rostislav Svoboda](https://github.com/rsvoboda) in [#737](https://github.com/containers/podman-desktop/pull/737)\\n- [Denis Shemanaev](https://github.com/shemanaev) in [#783](https://github.com/containers/podman-desktop/pull/783)\\n- [Fabrice Flore-Th\xe9bault](https://github.com/themr0c) in [#856](https://github.com/containers/podman-desktop/pull/856)\\n- [Kevin](https://github.com/KevinAtSesam) in [#864](https://github.com/containers/podman-desktop/pull/864)\\n- [@sfrunza13](https://github.com/sfrunza13) in [#872](https://github.com/containers/podman-desktop/pull/872)\\n- [Anjan Nath](https://github.com/anjannath) in [#918](https://github.com/containers/podman-desktop/pull/918)\\n\\n## Final Notes\\n\\nThe complete list of issues fixed in this release is available [here](https://github.com/containers/podman-desktop/issues?q=is%3Aclosed+milestone%3A0.10.0).\\n\\nGet the latest release from the [Downloads](/downloads) section of the website and boost your development journey with Podman Desktop. Additionally, visit the [GitHub repository](https://github.com/containers/podman-desktop) and see how you can help us make Podman Desktop better."},{"id":"develop-using-devcontainer","metadata":{"permalink":"/blog/develop-using-devcontainer","source":"@site/blog/2022-11-17-develop-podman-using-codespaces.md","title":"Build & run Podman Desktop in a DevContainer","description":"Develop Podman Desktop using a DevContainer locally or using GitHub Codespaces.","date":"2022-11-17T00:00:00.000Z","formattedDate":"November 17, 2022","tags":[{"label":"podman-desktop","permalink":"/blog/tags/podman-desktop"},{"label":"devcontainer","permalink":"/blog/tags/devcontainer"},{"label":"codespaces","permalink":"/blog/tags/codespaces"}],"readingTime":6.985,"hasTruncateMarker":true,"authors":[{"name":"Florent Benoit","title":"Maintainer of Podman Desktop","url":"https://github.com/benoitf","imageURL":"https://github.com/benoitf.png","key":"benoitf"}],"frontMatter":{"title":"Build & run Podman Desktop in a DevContainer","description":"Develop Podman Desktop using a DevContainer locally or using GitHub Codespaces.","slug":"develop-using-devcontainer","authors":["benoitf"],"tags":["podman-desktop","devcontainer","codespaces"],"hide_table_of_contents":false},"prevItem":{"title":"Release Notes - Podman Desktop 0.10","permalink":"/blog/podman-desktop-release-0.10"}},"content":"GitHub [announced last week](https://github.blog/changelog/2022-11-09-codespaces-for-free-and-pro-accounts/) that Codespaces is available for everyone and it includes free minutes.\\n\\nLet see how we can use a [Development Container](https://containers.dev/) having all the tools to build and run Podman Desktop. The Development Container works locally using Visual Studio Code but in this blog post we will see how it works directly with a simple click from GitHub.\\n\\nThe challenges are to run a desktop tool (Podman Desktop) and running a container engine (Podman) inside this Development Container without using too many memory !\\n\\n\x3c!--truncate--\x3e\\n\\n## Defining image of the container\\n\\nThe first thing is in the choice of the image for the container. It is possible to pick-up a default image and add some features but there is no existing feature for Podman at https://github.com/devcontainers/features/tree/main/src and most of the features are expecting to run on top of Debian/Ubuntu\\n\\nIf you are not interested in how to setup the image, jump to the [next section](#configure-the-devcontainer-using-devcontainerjson).\\n\\nPodman binaries are available quickly after the releases for Fedora. I decided then to use `Fedora 37` as the base image.\\n\\nLet start the Containerfile using:\\n\\n```docker\\nFROM quay.io/fedora/fedora:37\\n```\\n\\nThen I install Node.js 16 from official nodejs.org repository. It\'s easier to switch to the version that we need.\\n\\n```docker\\n# install Node.js + yarn\\nENV NODE_VERSION 16.18.1\\nRUN curl -SLO \\"https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz\\" && \\\\\\n tar -xzf \\"node-v$NODE_VERSION-linux-x64.tar.gz\\" -C /usr/local --strip-components=1 && \\\\\\n rm \\"node-v$NODE_VERSION-linux-x64.tar.gz\\" && \\\\\\n npm install -g yarn\\n```\\n\\nNow, all system dependencies used to run an Electron application needs to be installed.\\n\\nPodman is also installed so we can run some containers inside this container.\\n\\nAnd of course, we need to install VNC (I choose [tigervnc](https://tigervnc.org/)) with a light Window Manager ([fluxbox](http://fluxbox.org/)).\\n\\nTo connect to the display of the container, we need to expose VNC over HTML/websocket using [noVNC](https://novnc.com/)\\n\\nxterm is installed to start a terminal from the VNC side.\\n\\n```docker\\nRUN dnf -y update && \\\\\\n yum -y reinstall shadow-utils && \\\\\\n yum install -y git \\\\\\n # dependencies for Podman Desktop\\n nss \\\\\\n atk \\\\\\n at-spi2-atk \\\\\\n cups-libs \\\\\\n gtk3 \\\\\\n # for remote Display\\n fluxbox \\\\\\n tigervnc-server \\\\\\n xorg-x11-fonts-Type1 \\\\\\n novnc \\\\\\n supervisor \\\\\\n xdpyinfo \\\\\\n # for podman\\n podman \\\\\\n fuse-overlayfs --exclude container-selinux \\\\\\n xterm && \\\\\\n rm -rf /var/cache /var/log/dnf* /var/log/yum.*\\n```\\n\\nSupervisord setup the launch of the VNC server and the Window manager\\n\\n```docker\\nCOPY supervisord.conf /etc/supervisord.conf\\n```\\n\\nA custom theme for fluxbox:\\n```docker\\nCOPY fluxbox /usr/share/fluxbox/init\\n```\\n\\n\\nThen we need a special configuration to allow to have Podman working inside the container\\n\\nWe add the `podman-desktop` user with correct range on subuid and subgid when running containers. I used the [tutorial](https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md#etcsubuid-and-etcsubgid-configuration).\\n\\n\\n```docker\\nRUN useradd -u 1000 podman-desktop && echo podman-desktop:10000:5000 > /etc/subuid && echo podman-desktop:10000:5000 > /etc/subgid\\n```\\n\\nThen use some default configuration files\\n```docker\\n# initialize conf files\\nADD https://raw.githubusercontent.com/containers/libpod/master/contrib/podmanimage/stable/containers.conf /etc/containers/containers.conf\\nADD https://raw.githubusercontent.com/containers/libpod/master/contrib/podmanimage/stable/podman-containers.conf /home/podman-desktop/.config/containers/containers.conf\\n```\\n\\nand make sure that all permissions are correct following the guide [https://www.redhat.com/sysadmin/podman-inside-container](https://www.redhat.com/sysadmin/podman-inside-container)\\n\\n```docker\\n# set permissions\\nRUN chown podman-desktop:podman-desktop -R /home/podman-desktop && chmod 644 /etc/containers/containers.conf && \\\\\\n mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers /var/lib/shared/vfs-images /var/lib/shared/vfs-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock; touch /var/lib/shared/vfs-images/images.lock; touch /var/lib/shared/vfs-layers/layers.lock && \\\\\\n mkdir -p /run/user/1000 && chown podman-desktop:podman-desktop /run/user/1000\\n```\\n\\nplus define an empty user namespace.\\n\\n```docker\\nENV _CONTAINERS_USERNS_CONFIGURED=\\"\\"\\n```\\n\\nMake sure Podman will create the socket in an expected directory:\\n```\\n# socket path for podman\\nENV XDG_RUNTIME_DIR=/run/user/1000\\n```\\n\\nOK ! we have a custom Containerfile providing all the tools to build and run Podman Desktop (using VNC for the display), run Podman and run Electron.\\n\\nThe current file is available at https://github.com/containers/podman-desktop/blob/main/.devcontainer/.parent/Containerfile\\n\\n\\nLet\'s configure the DevContainer.\\n\\n\\n\\n## Configure the DevContainer using devcontainer.json\\n\\nDevContainer definition is stored at `.devcontainer/devcontainer.json` file.\\n\\nWe need to reuse the image of the previous step. For that let\'s use the build section of the `devcontainer.json` file.\\n\\n```json\\n\\"build\\": {\\n \\"dockerfile\\": \\"Containerfile\\"\\n},\\n```\\n\\nIn order to avoid to redo all the build steps each time we open a workspace using this dev container, we published the image to quay.io at [quay.io/podman-desktop/devcontainer-parent:next\\n](https://quay.io/repository/podman-desktop/devcontainer-parent?tab=tags&tag=next). This parent image is not changing much so it\'s better to use is as a parent one.\\n\\nInside `.devcontainer` directory there is a `.parent` directory with everything related to the parent image.\\n\\nAnd in the `.devcontainer/Containerfile` file we reference this image\\n\\n\\n```docker\\nFROM quay.io/podman-desktop/devcontainer-parent:next\\n```\\n\\nBy default, we will be `root` in the container and this is probably not what we expect. Let\'s change that.\\n\\n```json\\n\\"containerUser\\": \\"podman-desktop\\"\\n```\\n\\nSome Visual Studio Code extensions are nice to use and we can add them\\n```json\\n \\"extensions\\": [\\"svelte.svelte-vscode\\", \\"bradlc.vscode-tailwindcss\\"]\\n```\\n\\nThen here is the tricky part, how to run our container allowing to run again inside the container some containers with podman.\\n\\nWe specify the arguments to make it possible. It\'s possible to use `--privileged` flag but I prefer to list the subset of permissions.\\nUsing `--privileged` we don\'t really know what are the privilege that are required while specifying all of them, people are aware of what is granted/denied.\\n\\n```json\\n\\"runArgs\\": [\\n \\"--cap-add=sys_admin\\",\\n \\"--security-opt\\",\\n \\"seccomp=unconfined\\",\\n \\"--device\\",\\n \\"/dev/fuse\\",\\n \\"--security-opt\\",\\n \\"label=disable\\",\\n \\"--security-opt\\",\\n \\"apparmor=unconfined\\"\\n ],\\n```\\n\\nSource code of Podman Desktop needs to be editable within the DevContainer so it needs to be mounted.\\n\\n```json\\n\\"workspaceMount\\": \\"source=${localWorkspaceFolder},target=/workspace,type=bind\\",\\n\\"workspaceFolder\\": \\"/workspace\\",\\n```\\n\\nThen we need a command to build Podman Desktop.\\n\\nFor that, we use `onCreateCommand` hook with a custom command\\n\\n```json\\n\\"onCreateCommand\\": \\"${containerWorkspaceFolder}/.devcontainer/onCreateCommand.sh\\",\\n```\\n\\nand in the `.devcontainer` folder the `onCreateCommand.sh` script is the following\\n\\n```shell\\n#!/bin/sh\\nyarn\\n\\nMODE=production yarn run build && yarn run electron-builder build --linux --dir --config .electron-builder.config.cjs\\n```\\n\\nTwo instructions:\\n1. Fetch all Node.js dependencies.\\n2. build Podman Desktop in the `dist` folder using `Linux` as target Operating System.\\n\\nAfter the start of the container, how to launch Podman Desktop, the website and VNC, etc ?\\n\\nJust use `postStartCommand` hook.\\n\\n```json\\n\\"postStartCommand\\": \\"${containerWorkspaceFolder}/.devcontainer/postStartCommand.sh\\",\\n```\\n\\nand in the `.devcontainer` folder the `postStartCommand.sh` script is the following:\\n\\n```shell\\n#!/bin/sh\\n\\n# Start all services\\n/usr/bin/supervisord -c /etc/supervisord.conf &\\n\\n# wait X server to be ready or after 2mn exit\\necho \\"Waiting for X server to be ready\\"\\ntimeout 120 bash -c \'until xdpyinfo -display :0 &> /dev/null; do printf \\".\\"; sleep 1; done\'\\n\\n# launch podman desktop\\necho \\"Launching Podman Desktop\\"\\ncd dist/linux-unpacked/&& ./podman-desktop &\\n\\n# Launch the 9000 redirect after 20 seconds\\nsleep 20\\nwebsockify --web=/usr/share/novnc localhost:9000 localhost:5900 &\\n\\n# launch the website rendering\\necho \\"Launching Website\\"\\ncd website && yarn start\\n```\\n\\nIt starts VNC and noVNC, start precompiled Podman Desktop and start the documentation rendering.\\n\\nIt is not launching the Watch mode/development mode of Podman Desktop as it requires a container having more than 8GB of memory.\\n\\nPicking up a larger instace with for example 16GB, it\'s possible to use development mode.\\n\\nOf course, to make VNC happy, we need to specify the `DISPLAY` environment variable.\\n\\n```json\\n\\"remoteEnv\\": {\\n \\"DISPLAY\\": \\":0\\"\\n}\\n```\\n\\nWhen the DevContainer is fully available, we want to have a way to quickly open the `Website rendering URL` and `noVNC`\\n\\nLet\'s tweak the `devcontainer.json` file by adding the `portsAttributes` section\\n\\n```json\\n\\"portsAttributes\\": {\\n \\"9000\\": {\\n \\"label\\": \\"vnc\\",\\n \\"onAutoForward\\": \\"openPreview\\"\\n },\\n \\"3000\\": {\\n \\"label\\": \\"website\\"\\n }\\n}\\n```\\n\\nAfter all post-creation steps, the `Preview` browser inside the VS Code editor will open a window to VNC. And another port (`3000`) is flagged for the website.\\n\\n\\n## Using the DevContainer.json on Github Codespace\\n\\nAs a user, opening a workspace with all what we configured is done using a single click.\\n\\nGo to https://github.com/containers/podman-desktop then click on the `< > Code` dropdown and click on `Create codespace on main` button.\\n\\n![Open Codespace](img/develop-podman-using-codespaces/codespaces-click-repository.png)\\n\\nOnce you click on the button, the codespace is setting up:\\n\\n![Preparing Codepace](img/develop-podman-using-codespaces/codespaces-preparing-codespace.png)\\n\\nAfter few minutes, as there is not yet [prebuilt codespaces](https://docs.github.com/en/codespaces/prebuilding-your-codespaces/about-github-codespaces-prebuilds), the codespace is opening.\\n\\nThe simple Browser displays the noVNC window:\\n![Opening Codespace](img/develop-podman-using-codespaces/codespaces-open-novnc.png)\\n\\nClick on the connect button. Then on the terminal you can enter `podman run quay.io/podman/hello` and the container is detected in Podman Desktop.\\n![Testing Codespace](img/develop-podman-using-codespaces/codespaces-testing-podman-desktop.png)\\n\\nIt\'s also possible using the port widget to get on `3000` port by clicking on the world icon a preview of the website in another tab. Changing source code of the website will refresh the content of the window.\\n\\nDepending on the usecase, it\'s also possible to open documentation in the preview browser.\\n\\n![Edit website Codespace](img/develop-podman-using-codespaces/codespaces-edit-website.png)\\n\\n## Conclusion\\n\\nThe DevContainer image for Podman Desktop is recent so it\'ll probably evolve over time by adding new capabilities but it allows you to easily build/run/experiment and **contribute** to the tool or the website."}]}')}}]); \ No newline at end of file diff --git a/assets/js/e6fb1369.9c77a8a1.js b/assets/js/e6fb1369.d05ee4f7.js similarity index 56% rename from assets/js/e6fb1369.9c77a8a1.js rename to assets/js/e6fb1369.d05ee4f7.js index c9c7bc137aa..6c303433523 100644 --- a/assets/js/e6fb1369.9c77a8a1.js +++ b/assets/js/e6fb1369.d05ee4f7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8800],{5318:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>d});var n=r(7378);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),p=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=p(e.components);return n.createElement(i.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(r),d=a,f=u["".concat(i,".").concat(d)]||u[d]||m[d]||o;return r?n.createElement(f,l(l({ref:t},c),{},{components:r})):n.createElement(f,l({ref:t},c))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=u;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s.mdxType="string"==typeof e?e:a,l[1]=s;for(var p=2;p{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var n=r(5773),a=(r(7378),r(5318));const o={title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",slug:"podman-desktop-release-0.11",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},l=void 0,s={permalink:"/blog/podman-desktop-release-0.11",source:"@site/blog/2023-01-18-release-0.11.md",title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",date:"2023-01-18T00:00:00.000Z",formattedDate:"January 18, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"}],readingTime:9.35,hasTruncateMarker:!0,authors:[{name:"Stevan Le Meur",title:"Product Manager",url:"https://github.com/slemeur",imageURL:"https://github.com/slemeur.png",key:"slemeur"}],frontMatter:{title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",slug:"podman-desktop-release-0.11",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},nextItem:{title:"Release Notes - Podman Desktop 0.10",permalink:"/blog/podman-desktop-release-0.10"}},i={authorsImageUrls:[void 0]},p=[],c={toc:p};function m(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This release note covers Podman Desktop 0.11 release changes."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Air-Gapped Installation"),": New all-in-one binaries for air-gapped installation."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Feedback"),": Submit feedback directly from Podman Desktop."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Docker Compatibility Mode"),": Information about the Docker compatibility mode."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Proxy Setting"),": Toggle on/off the proxy setting."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Deploy to Kubernetes"),": Select the namespace to deploy to Kubernetes."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Registry Configuration"),": Simplified registry configuration for well known registries."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"UX/UI Improvements"),": View pod's container logs, better visual feedback, configurable editor font size, and more.")),(0,a.kt)("p",null,"Podman Desktop 0.11 is now available. ",(0,a.kt)("a",{parentName:"p",href:"/downloads"},"Click here to download it"),"!"))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8800],{5318:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>d});var n=r(7378);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),p=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},m=function(e){var t=p(e.components);return n.createElement(i.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),u=p(r),d=a,k=u["".concat(i,".").concat(d)]||u[d]||c[d]||o;return r?n.createElement(k,l(l({ref:t},m),{},{components:r})):n.createElement(k,l({ref:t},m))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=u;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s.mdxType="string"==typeof e?e:a,l[1]=s;for(var p=2;p{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var n=r(5773),a=(r(7378),r(5318));const o={title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",slug:"podman-desktop-release-0.11",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},l=void 0,s={permalink:"/blog/podman-desktop-release-0.11",source:"@site/blog/2023-01-18-release-0.11.md",title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",date:"2023-01-18T00:00:00.000Z",formattedDate:"January 18, 2023",tags:[{label:"podman-desktop",permalink:"/blog/tags/podman-desktop"},{label:"release",permalink:"/blog/tags/release"},{label:"kubernetes",permalink:"/blog/tags/kubernetes"}],readingTime:9.35,hasTruncateMarker:!0,authors:[{name:"Stevan Le Meur",title:"Product Manager",url:"https://github.com/slemeur",imageURL:"https://github.com/slemeur.png",key:"slemeur"}],frontMatter:{title:"Release Notes - Podman Desktop 0.11",description:"Podman Desktop 0.11 has been released!",slug:"podman-desktop-release-0.11",authors:["slemeur"],tags:["podman-desktop","release","kubernetes"],hide_table_of_contents:!1},prevItem:{title:"Release Notes - Podman Desktop 0.12",permalink:"/blog/podman-desktop-release-0.12"},nextItem:{title:"Release Notes - Podman Desktop 0.10",permalink:"/blog/podman-desktop-release-0.10"}},i={authorsImageUrls:[void 0]},p=[],m={toc:p};function c(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"This release note covers Podman Desktop 0.11 release changes."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Air-Gapped Installation"),": New all-in-one binaries for air-gapped installation."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Feedback"),": Submit feedback directly from Podman Desktop."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Docker Compatibility Mode"),": Information about the Docker compatibility mode."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Proxy Setting"),": Toggle on/off the proxy setting."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Deploy to Kubernetes"),": Select the namespace to deploy to Kubernetes."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"Registry Configuration"),": Simplified registry configuration for well known registries."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"UX/UI Improvements"),": View pod's container logs, better visual feedback, configurable editor font size, and more.")),(0,a.kt)("p",null,"Podman Desktop 0.11 is now available. ",(0,a.kt)("a",{parentName:"p",href:"/downloads"},"Click here to download it"),"!"))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.192c65c4.js b/assets/js/main.192c65c4.js deleted file mode 100644 index 7cda385657d..00000000000 --- a/assets/js/main.192c65c4.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.192c65c4.js.LICENSE.txt */ -(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[179],{6573:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(7378);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},3427:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7378);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},3375:(e,t,n)=>{"use strict";var r=n(7378),a=n(1542),o=n(4289),i=n(2883),l=n(161);const s=[n(142),n(3815),n(4374),n(6222)];var c=n(6623),u=n(5331),d=n(5473);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(5773),m=n(7092),g=n(353),h=n(8948),b=n(624),v=n(1123),y=n(3714),w=n(174),k=n(3149),E=n(505);function S(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),a=function(){const{siteConfig:{url:e}}=(0,g.Z)(),{pathname:t}=(0,u.TH)();return e+(0,h.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function _(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(x,null),r.createElement(S,null),r.createElement(E.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const T=new Map;function C(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var I=n(3427),A=n(3340);function L(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{var r;const a=(null==(r=t.default)?void 0:r[e])??t[e];return null==a?void 0:a(...n)}));return()=>a.forEach((e=>null==e?void 0:e()))}const P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);null==t||t.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),L("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>null==e.route.component.preload?void 0:e.route.component.preload())))}class N extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?L("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=L("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(u.AW,{location:t,render:()=>e}))}}const R=N,M="docusaurus-base-url-issue-banner-container",D="docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${M}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:M}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,u.TH)();return t&&n===e?r.createElement($,null):null}function j(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,g.Z)(),i=(0,h.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var z=n(6293);function Z(){const e=(0,d.H)(c.Z),t=(0,u.TH)();return r.createElement(z.Z,null,r.createElement(A.M,null,r.createElement(I.t,null,r.createElement(f,null,r.createElement(j,null),r.createElement(_,null),r.createElement(U,null),r.createElement(R,{location:C(t)},e)))))}var H=n(6887);const V=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{var r;if("undefined"==typeof document)return void n();const a=document.createElement("link");a.setAttribute("rel","prefetch"),a.setAttribute("href",e),a.onload=()=>t(),a.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??(null==(r=document.getElementsByName("script")[0])?void 0:r.parentNode);null==o||o.appendChild(a)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var W=n(3361);const G=new Set,q=new Set,K=()=>{var e,t;return(null==(e=navigator.connection)?void 0:e.effectiveType.includes("2g"))||(null==(t=navigator.connection)?void 0:t.saveData)},Y={prefetch(e){if(!(e=>!K()&&!q.has(e)&&!G.has(e))(e))return!1;G.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(H).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,W.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?V(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!K()&&!q.has(e))(e)&&(q.add(e),O(e))},Q=Object.freeze(Y);if(l.Z.canUseDOM){window.docusaurus=Q;const e=a.hydrate;O(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(Z,null))),document.getElementById("__docusaurus"))}))}},3340:(e,t,n)=>{"use strict";n.d(t,{_:()=>u,M:()=>d});var r=n(7378),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro","docs":[{"id":"getting-started/getting-started","path":"/docs/getting-started/getting-started","sidebar":"tutorialSidebar"},{"id":"Installation/index","path":"/docs/Installation/","sidebar":"tutorialSidebar"},{"id":"Installation/linux-install/index","path":"/docs/Installation/linux-install/","sidebar":"tutorialSidebar"},{"id":"Installation/linux-install/installing-podman-desktop-from-a-compressed-tar-file","path":"/docs/Installation/linux-install/installing-podman-desktop-from-a-compressed-tar-file","sidebar":"tutorialSidebar"},{"id":"Installation/linux-install/installing-podman-desktop-from-a-flatpak-bundle","path":"/docs/Installation/linux-install/installing-podman-desktop-from-a-flatpak-bundle","sidebar":"tutorialSidebar"},{"id":"Installation/macos-install","path":"/docs/Installation/macos-install","sidebar":"tutorialSidebar"},{"id":"Installation/windows-install/index","path":"/docs/Installation/windows-install/","sidebar":"tutorialSidebar"},{"id":"Installation/windows-install/installing-podman-desktop-and-podman-in-a-restricted-environment","path":"/docs/Installation/windows-install/installing-podman-desktop-and-podman-in-a-restricted-environment","sidebar":"tutorialSidebar"},{"id":"Installation/windows-install/installing-podman-desktop-silently-with-the-windows-installer","path":"/docs/Installation/windows-install/installing-podman-desktop-silently-with-the-windows-installer","sidebar":"tutorialSidebar"},{"id":"Installation/windows-install/installing-podman-desktop-with-chocolatey","path":"/docs/Installation/windows-install/installing-podman-desktop-with-chocolatey","sidebar":"tutorialSidebar"},{"id":"Installation/windows-install/installing-podman-desktop-with-scoop","path":"/docs/Installation/windows-install/installing-podman-desktop-with-scoop","sidebar":"tutorialSidebar"},{"id":"Installation/windows-install/installing-podman-desktop-with-winget","path":"/docs/Installation/windows-install/installing-podman-desktop-with-winget","sidebar":"tutorialSidebar"},{"id":"Installation/windows-install/installing-podman-with-openshift-local","path":"/docs/Installation/windows-install/installing-podman-with-openshift-local","sidebar":"tutorialSidebar"},{"id":"Installation/windows-install/installing-podman-with-podman-desktop","path":"/docs/Installation/windows-install/installing-podman-with-podman-desktop","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/intro","sidebar":"tutorialSidebar"},{"id":"migrating-from-docker/emulating-docker-cli-with-podman","path":"/docs/migrating-from-docker/emulating-docker-cli-with-podman","sidebar":"tutorialSidebar"},{"id":"migrating-from-docker/importing-saved-containers","path":"/docs/migrating-from-docker/importing-saved-containers","sidebar":"tutorialSidebar"},{"id":"migrating-from-docker/index","path":"/docs/migrating-from-docker/","sidebar":"tutorialSidebar"},{"id":"migrating-from-docker/using-podman-mac-helper","path":"/docs/migrating-from-docker/using-podman-mac-helper","sidebar":"tutorialSidebar"},{"id":"migrating-from-docker/using-the-docker_host-environment-variable","path":"/docs/migrating-from-docker/using-the-docker_host-environment-variable","sidebar":"tutorialSidebar"},{"id":"migrating-from-docker/verifying-your-tools-are-using-podman","path":"/docs/migrating-from-docker/verifying-your-tools-are-using-podman","sidebar":"tutorialSidebar"},{"id":"podman-compose","path":"/docs/podman-compose","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/docs/troubleshooting","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/intro","label":"intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.3.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.3.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.3.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.3.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.3.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.3.1"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"2.3.1"},"docusaurus-tailwindcss":{"type":"local"}}}'),c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},6293:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7378),a=n(161),o=n(7092),i=n(3595);function l(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}function s(e){let{error:t,tryAgain:n}=e;return r.createElement(u,{fallback:()=>r.createElement(l,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(i.Z,null,r.createElement(l,{error:t,tryAgain:n})))}const c=e=>r.createElement(s,e);class u extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??c)(e)}return e??null}}},161:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},7092:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(2883);function o(e){return r.createElement(a.ql,e)}},1884:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(5773),a=n(7378),o=n(4289),i=n(1721),l=n(353),s=n(5626),c=n(161);const u=a.createContext({collectLink:()=>{}});var d=n(8948);function f(e,t){var n;let{isNavLink:f,to:p,href:m,activeClassName:g,isActive:h,"data-noBrokenLinkCheck":b,autoAddBaseUrl:v=!0,...y}=e;const{siteConfig:{trailingSlash:w,baseUrl:k}}=(0,l.Z)(),{withBaseUrl:E}=(0,d.C)(),S=(0,a.useContext)(u),x=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>x.current));const _=p||m;const T=(0,s.Z)(_),C=null==_?void 0:_.replace("pathname://","");let I=void 0!==C?(A=C,v&&(e=>e.startsWith("/"))(A)?E(A):A):void 0;var A;I&&T&&(I=(0,i.applyTrailingSlash)(I,{trailingSlash:w,baseUrl:k}));const L=(0,a.useRef)(!1),P=f?o.OL:o.rU,O=c.Z.canUseIntersectionObserver,N=(0,a.useRef)(),R=()=>{L.current||null==I||(window.docusaurus.preload(I),L.current=!0)};(0,a.useEffect)((()=>(!O&&T&&null!=I&&window.docusaurus.prefetch(I),()=>{O&&N.current&&N.current.disconnect()})),[N,I,O,T]);const M=(null==(n=I)?void 0:n.startsWith("#"))??!1,D=!I||!T||M;return D||b||S.collectLink(I),D?a.createElement("a",(0,r.Z)({ref:x,href:I},_&&!T&&{target:"_blank",rel:"noopener noreferrer"},y)):a.createElement(P,(0,r.Z)({},y,{onMouseEnter:R,onTouchStart:R,innerRef:e=>{x.current=e,O&&e&&T&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=I&&window.docusaurus.prefetch(I))}))})),N.current.observe(e))},to:I},f&&{isActive:h,activeClassName:g}))}const p=a.forwardRef(f)},9213:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7378);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=null==t?void 0:t[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},5688:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},5626:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},8948:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7378),a=n(353),o=n(5626);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},353:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(3340);function o(){return(0,r.useContext)(a._)}},6457:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(3427);function o(){return(0,r.useContext)(a._)}},3361:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});function r(e){const t={};return function e(n,r){Object.entries(n).forEach((n=>{let[a,o]=n;const i=r?`${r}.${a}`:a;var l;"object"==typeof(l=o)&&l&&Object.keys(l).length>0?e(o,i):t[i]=o}))}(e),t}},6881:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7378);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...null==n?void 0:n.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},2935:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>b,gA:()=>p,WS:()=>m,_r:()=>d,Jo:()=>v,zh:()=>f,yW:()=>h,gB:()=>g});var r=n(5331),a=n(353),o=n(5688);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=s(e,t),a=null==n?void 0:n.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,f=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function m(e){void 0===e&&(e={});const t=p(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function g(e){return f(e).versions}function h(e){const t=f(e);return l(t)}function b(e){const t=f(e),{pathname:n}=(0,r.TH)();return c(t,n)}function v(e){const t=f(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},4374:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(8504),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3815:(e,t,n)=>{"use strict";n.r(t);var r=n(2349),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(5639)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},6125:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378);const a="iconExternalLink_nPrP";function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},3595:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ct});var r=n(7378),a=n(8944),o=n(6293),i=n(1123),l=n(5773),s=n(5331),c=n(9213),u=n(4993);const d="docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const m=(0,c.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:a}=p();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var h=n(5484),b=n(174);const v="skipToContent_oPtH";function y(){return r.createElement(g,{className:v})}var w=n(624),k=n(10);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S="closeButton_J5rP";function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,c.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const _="content_bSb_";function T(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(_,e.className),dangerouslySetInnerHTML:{__html:n}}))}const C="announcementBar_zJRd",I="announcementBarPlaceholder_NpUd",A="announcementBarClose_Jjdj",L="announcementBarContent_t7IR";function P(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:C,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:I}),r.createElement(T,{className:L}),i&&r.createElement(x,{onClick:n,className:A}))}var O=n(5536),N=n(3457);var R=n(1763),M=n(3471);const D=r.createContext(null);function F(e){let{children:t}=e;const n=function(){const e=(0,O.e)(),t=(0,M.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,R.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(D.Provider,{value:n},t)}function B(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function $(){const e=(0,r.useContext)(D);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,M.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:B(o)})),[a,o,t])}function U(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=$();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var j=n(5421),z=n(6457);function Z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function H(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const V={toggle:"toggle_ki11",toggleButton:"toggleButton_MMFG",darkToggleIcon:"darkToggleIcon_U96C",lightToggleIcon:"lightToggleIcon_lgto",toggleButtonDisabled:"toggleButtonDisabled_Uw7m"};function W(e){let{className:t,value:n,onChange:o}=e;const i=(0,z.Z)(),l=(0,c.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===n?(0,c.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(V.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",V.toggleButton,!i&&V.toggleButtonDisabled),type:"button",onClick:()=>o("dark"===n?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite"},r.createElement(Z,{className:(0,a.Z)(V.toggleIcon,V.lightToggleIcon)}),r.createElement(H,{className:(0,a.Z)(V.toggleIcon,V.darkToggleIcon)})))}const G=r.memo(W);function q(e){let{className:t}=e;const n=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,j.I)();return n?null:r.createElement(G,{className:t,value:a,onChange:o})}var K=n(898);function Y(){return r.createElement(K.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Q(){const e=(0,O.e)();return r.createElement("button",{type:"button","aria-label":(0,c.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function X(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(Y,null),r.createElement(q,{className:"margin-right--md"}),r.createElement(Q,null))}var J=n(1884),ee=n(8948),te=n(5626),ne=n(1503),re=n(6125);function ae(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:c,prependBaseUrlToHref:u,...d}=e;const f=(0,ee.Z)(a),p=(0,ee.Z)(t),m=(0,ee.Z)(o,{forcePrependBaseUrl:!0}),g=i&&o&&!(0,te.Z)(o),h=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,g&&r.createElement(re.Z,c&&{width:12,height:12}))};return o?r.createElement(J.Z,(0,l.Z)({href:u?m:o},d,h)):r.createElement(J.Z,(0,l.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?(0,ne.F)(n,t.pathname):t.pathname.startsWith(p)},d,h))}function oe(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ae,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ie(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ae,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function le(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ie:oe;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var se=n(376),ce=n(8862),ue=n(353);function de(e,t){return e.some((e=>function(e,t){return!!(0,ce.Mg)(e.to,t)||!!(0,ne.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function fe(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ae,(0,l.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>r.createElement(Ve,(0,l.Z)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),d(!1);const t=c.current.nextElementSibling;if(t){(t instanceof HTMLAnchorElement?t:t.querySelector("a")).focus()}}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function pe(e){let{items:t,className:n,position:o,onClick:i,...c}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,ue.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=de(t,u),{collapsed:f,toggleCollapsed:p,setCollapsed:m}=(0,se.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(ae,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},c,{onClick:e=>{e.preventDefault(),p()}}),c.children??c.label),r.createElement(se.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(Ve,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function me(e){let{mobile:t=!1,...n}=e;const a=t?pe:fe;return r.createElement(a,n)}var ge=n(3714);function he(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const be="iconLanguage_kvP7";function ve(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var ye=n(6573),we=["translations"];function ke(){return ke=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var _e="Ctrl";var Te=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=xe(e,we),i=a.buttonText,l=void 0===i?"Search":i,s=a.buttonAriaLabel,c=void 0===s?"Search":s,u=Ee((0,r.useState)(null),2),d=u[0],f=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(_e))}),[]),r.createElement("button",ke({type:"button",className:"DocSearch DocSearch-Button","aria-label":c},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(ye.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},l)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===_e?r.createElement(ve,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),Ce=n(7092),Ie=n(3584),Ae=n(2473),Le=n(3149);var Pe=n(1542);const Oe={button:{buttonText:(0,c.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,c.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,c.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,c.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,c.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,c.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,c.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,c.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,c.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,c.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,c.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,c.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,c.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,c.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,c.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,c.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,c.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,c.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,c.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Ne=null;function Re(e){let{hit:t,children:n}=e;return r.createElement(J.Z,{to:t.url},n)}function Me(e){let{state:t,onClose:n}=e;const{generateSearchPageLink:a}=(0,Ie.O)();return r.createElement(J.Z,{to:a(t.query),onClick:n},r.createElement(c.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits}},"See all {count} results"))}function De(e){var t;let{contextualSearch:a,externalUrlRegex:o,...i}=e;const{siteMetadata:c}=(0,ue.Z)(),u=(0,Ae.l)(),d=function(){const{locale:e,tags:t}=(0,Le._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),f=(null==(t=i.searchParameters)?void 0:t.facetFilters)??[],p=a?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(d,f):f,m={...i.searchParameters,facetFilters:p},g=(0,s.k6)(),h=(0,r.useRef)(null),b=(0,r.useRef)(null),[v,y]=(0,r.useState)(!1),[w,k]=(0,r.useState)(void 0),E=(0,r.useCallback)((()=>Ne?Promise.resolve():Promise.all([n.e(8777).then(n.bind(n,8777)),Promise.all([n.e(532),n.e(9127)]).then(n.bind(n,9127)),Promise.all([n.e(532),n.e(4670)]).then(n.bind(n,4670))]).then((e=>{let[{DocSearchModal:t}]=e;Ne=t}))),[]),S=(0,r.useCallback)((()=>{E().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),y(!0)}))}),[E,y]),x=(0,r.useCallback)((()=>{var e;y(!1),null==(e=h.current)||e.remove()}),[y]),_=(0,r.useCallback)((e=>{E().then((()=>{y(!0),k(e.key)}))}),[E,y,k]),T=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ne.F)(o,t)?window.location.href=t:g.push(t)}}).current,C=(0,r.useRef)((e=>i.transformItems?i.transformItems(e):e.map((e=>({...e,url:u(e.url)}))))).current,I=(0,r.useMemo)((()=>e=>r.createElement(Me,(0,l.Z)({},e,{onClose:x}))),[x]),A=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",c.docusaurusVersion),e)),[c.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:v,onOpen:S,onClose:x,onInput:_,searchButtonRef:b}),r.createElement(r.Fragment,null,r.createElement(Ce.Z,null,r.createElement("link",{rel:"preconnect",href:`https://${i.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})),r.createElement(Te,{onTouchStart:E,onFocus:E,onMouseOver:E,onClick:S,ref:b,translations:Oe.button}),v&&Ne&&h.current&&(0,Pe.createPortal)(r.createElement(Ne,(0,l.Z)({onClose:x,initialScrollY:window.scrollY,initialQuery:w,navigator:T,transformItems:C,hitComponent:Re,transformSearchClient:A},i.searchPagePath&&{resultsFooterComponent:I},i,{searchParameters:m,placeholder:Oe.placeholder,translations:Oe.modal})),h.current))}function Fe(){const{siteConfig:e}=(0,ue.Z)();return r.createElement(De,e.themeConfig.algolia)}const Be="searchBox_WqAV";function $e(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,Be)},t)}var Ue=n(2935),je=n(5161);var ze=n(4453);const Ze=e=>e.docs.find((t=>t.id===e.mainDocId));const He={default:le,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,ue.Z)(),f=(0,ge.l)(),{search:p,hash:m}=(0,s.TH)(),g=[...n,...u.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],h=t?(0,c.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(me,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(he,{className:be}),h),items:g}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement($e,{className:n},r.createElement(Fe,null))},dropdown:me,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Ue.Iw)(a),s=(0,je.vY)(t,a);return null===s?null:r.createElement(le,(0,l.Z)({exact:!0},o,{isActive:()=>(null==i?void 0:i.path)===s.path||!(null==i||!i.sidebar)&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Ue.Iw)(a),s=(0,je.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(le,(0,l.Z)({exact:!0},o,{isActive:()=>(null==i?void 0:i.sidebar)===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,je.lO)(a)[0],s=t??i.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(le,(0,l.Z)({},o,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...u}=e;const{search:d,hash:f}=(0,s.TH)(),p=(0,Ue.Iw)(n),m=(0,Ue.gB)(n),{savePreferredVersionName:g}=(0,ze.J)(n),h=[...o,...m.map((e=>{const t=p.alternateDocVersions[e.name]??Ze(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>g(e.name)}})),...i],b=(0,je.lO)(n)[0],v=t&&h.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&h.length>1?void 0:Ze(b).path;return h.length<=1?r.createElement(le,(0,l.Z)({},u,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(me,(0,l.Z)({},u,{mobile:t,label:v,to:y,items:h,isActive:a?()=>!1:void 0}))}};function Ve(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=He[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function We(){const e=(0,O.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Ve,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ge(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(c.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function qe(){const e=0===(0,w.L)().navbar.items.length,t=$();return r.createElement(r.Fragment,null,!e&&r.createElement(Ge,{onClick:()=>t.hide()}),t.content)}function Ke(){const e=(0,O.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(U,{header:r.createElement(X,null),primaryMenu:r.createElement(We,null),secondaryMenu:r.createElement(qe,null)}):null}const Ye="navbarHideable_hhpl",Qe="navbarHidden_nmcs";function Xe(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Je(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,O.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,N.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,c.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Ye,!s&&Qe],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Xe,{onClick:i.toggle}),r.createElement(Ke,null))}function et(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function tt(){const{toggle:e,shown:t}=(0,O.e)();return r.createElement("button",{onClick:e,"aria-label":(0,c.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(et,null))}const nt="colorModeToggle_Hewu";function rt(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Ve,(0,l.Z)({},e,{key:t})))))}function at(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function ot(){const e=(0,O.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??"right")}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(at,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(tt,null),r.createElement(Y,null),r.createElement(rt,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(rt,{items:a}),r.createElement(q,{className:nt}),!o&&r.createElement($e,null,r.createElement(Fe,null)))})}function it(){return r.createElement(Je,null,r.createElement(ot,null))}function lt(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,c=(0,ee.Z)(n),u=(0,ee.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(J.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?u:a}:{to:c},s),o,a&&!(0,te.Z)(a)&&r.createElement(re.Z,null))}function st(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(lt,{item:t}))}function ct(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(st,{key:t,item:e})))))}function ut(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(ct,{key:t,column:e}))))}function dt(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function ft(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(lt,{item:t})}function pt(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(ft,{item:e}),t.length!==n+1&&r.createElement(dt,null))))))}function mt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(ut,{columns:t}):r.createElement(pt,{links:t})}var gt=n(4034);const ht="footerLogoLink_tutC";function bt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,ee.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(gt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function vt(e){let{logo:t}=e;return t.href?r.createElement(J.Z,{href:t.href,className:ht,target:t.target},r.createElement(bt,{logo:t})):r.createElement(bt,{logo:t})}function yt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function wt(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function kt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(wt,{style:o,links:n&&n.length>0&&r.createElement(mt,{links:n}),logo:a&&r.createElement(vt,{logo:a}),copyright:t&&r.createElement(yt,{copyright:t})})}const Et=r.memo(kt),St=(0,R.Qc)([j.S,k.pl,N.OC,ze.L5,i.VC,function(e){let{children:t}=e;return r.createElement(M.n2,null,r.createElement(O.M,null,r.createElement(F,null,t)))}]);function xt(e){let{children:t}=e;return r.createElement(St,null,t)}function _t(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(c.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(c.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}const Tt="mainWrapper_MB5r";function Ct(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:c}=e;return(0,b.t)(),r.createElement(xt,null,r.createElement(i.d,{title:s,description:c}),r.createElement(y,null),r.createElement(P,null),r.createElement(it,null),r.createElement("div",{id:d,className:(0,a.Z)(h.k.wrapper.main,Tt,l)},r.createElement(o.Z,{fallback:e=>r.createElement(_t,e)},t)),!n&&r.createElement(Et,null))}},898:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(5773),a=n(7378),o=n(1884),i=n(8948),l=n(353),s=n(624),c=n(4034);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(c.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:c}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)((null==c?void 0:c.href)||"/"),g=n?"":t,h=(null==c?void 0:c.alt)??g;return a.createElement(o.Z,(0,r.Z)({to:m},p,(null==c?void 0:c.target)&&{target:c.target}),c&&a.createElement(u,{logo:c,alt:h,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},505:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(7092);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},4034:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(5773),a=n(7378),o=n(8944),i=n(6457),l=n(5421);const s={themedImage:"themedImage_BQGR","themedImage--light":"themedImage--light_HAxW","themedImage--dark":"themedImage--dark_bGx0"};function c(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:c,className:u,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:c[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],u)},f)))))}},376:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,z:()=>m});var r=n(5773),a=n(7378),o=n(161);function i(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const l={display:"none",overflow:"hidden",height:"0px"},s={display:"block",overflow:"visible",height:"auto"};function c(e,t){const n=t?l:s;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function u(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=(null==r?void 0:r.duration)??function(e){const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${(null==r?void 0:r.easing)??"ease-in-out"}`,height:`${t}px`}}function i(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return c(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=l.height,e.style.overflow=l.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function d(e){if(!o.Z.canUseDOM)return e?l:s}function f(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const f=(0,a.useRef)(null);return u({collapsibleRef:f,collapsed:n,animation:o}),a.createElement(t,{ref:f,style:s?void 0:d(n),onTransitionEnd:e=>{"height"===e.propertyName&&(c(f.current,n),null==i||i(n))},className:l},r)}function p(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(f,(0,r.Z)({},n,{collapsed:l})):null}function m(e){let{lazy:t,...n}=e;const r=t?p:f;return a.createElement(r,n)}},10:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7378),a=n(6457),o=n(1819),i=n(1763),l=n(624);const s=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),u=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&u()));(0,r.useEffect)((()=>{o(u())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&d(!1),!r&&u()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},5421:(e,t,n)=>{"use strict";n.d(t,{I:()=>h,S:()=>g});var r=n(7378),a=n(161),o=n(1763),i=n(1819),l=n(624);const s=r.createContext(void 0),c="theme",u=(0,i.WA)(c),d="light",f="dark",p=e=>e===f?f:d;function m(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[o,i]=(0,r.useState)((e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e))(e));(0,r.useEffect)((()=>{t&&u.del()}),[t]);const s=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(i(t),a&&(e=>{u.set(p(e))})(t)):(i(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f:d:e),u.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=u.get();null!==t&&s(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,s]);const m=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||m.current?m.current=window.matchMedia("print").matches:s(null)};return e.addListener(r),()=>e.removeListener(r)}),[s,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:s,get isDarkTheme(){return o===f},setLightTheme(){s(d)},setDarkTheme(){s(f)}})),[o,s])}function g(e){let{children:t}=e;const n=m();return r.createElement(s.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},4453:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>b,Oh:()=>w});var r=n(7378),a=n(2935),o=n(5688),i=n(624),l=n(5161),s=n(1763),c=n(1819);const u=e=>`docs-preferred-version-${e}`,d=(e,t,n)=>{(0,c.WA)(u(e),{persistence:t}).set(n)},f=(e,t)=>(0,c.WA)(u(e),{persistence:t}).get(),p=(e,t)=>{(0,c.WA)(u(e),{persistence:t}).del()};const m=r.createContext(null);function g(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>(e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}]))))(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=f(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return r.createElement(m.Provider,{value:n},t)}function b(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(m);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function w(){const e=(0,a._r)(),[t]=v();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},2095:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7378),a=n(1763);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},5536:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>f});var r=n(7378),a=n(3471),o=n(8357),i=n(654),l=n(624),s=n(1763);const c=r.createContext(void 0);function u(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,c]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:s})),[e,n,u,s])}function d(e){let{children:t}=e;const n=u();return r.createElement(c.Provider,{value:n},t)}function f(){const e=r.useContext(c);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3471:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7378),a=n(1763);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},174:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7378);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},3584:(e,t,n)=>{"use strict";n.d(t,{O:()=>l});var r=n(7378),a=n(5331),o=n(353);const i="q";function l(){const e=(0,a.k6)(),{siteConfig:{baseUrl:t,themeConfig:n}}=(0,o.Z)(),{algolia:{searchPagePath:l}}=n,[s,c]=(0,r.useState)("");(0,r.useEffect)((()=>{const e=new URLSearchParams(window.location.search).get(i)??"";c(e)}),[]);return{searchQuery:s,setSearchQuery:(0,r.useCallback)((t=>{const n=new URLSearchParams(window.location.search);t?n.set(i,t):n.delete(i),e.replace({search:n.toString()}),c(t)}),[e]),generateSearchPageLink:(0,r.useCallback)((e=>`${t}${l}?q=${encodeURIComponent(e)}`),[t,l])}}},8357:(e,t,n)=>{"use strict";n.d(t,{i:()=>c});var r=n(7378),a=n(161);const o="desktop",i="mobile",l="ssr";function s(){return a.Z.canUseDOM?window.innerWidth>996?o:i:l}function c(){const[e,t]=(0,r.useState)((()=>s()));return(0,r.useEffect)((()=>{function e(){t(s())}return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),e}},5484:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},5161:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>f,_F:()=>m,cE:()=>d,hI:()=>w,lO:()=>b,oz:()=>v,s1:()=>h,vY:()=>y});var r=n(7378),a=n(5331),o=n(5473),i=n(2935),l=n(4453),s=n(2095),c=n(784),u=n(8862);const d=!!i._r;function f(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=f(t);if(e)return e}}}const p=(e,t)=>void 0!==e&&(0,u.Mg)(e,t);function m(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||((e,t)=>e.some((e=>m(e,t))))(e.items,t))}function g(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,u.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,u.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function h(){var e;const t=(0,s.V)(),{pathname:n}=(0,a.TH)();return!1!==(null==(e=(0,i.gA)())?void 0:e.pluginData.breadcrumbs)&&t?g({sidebarItems:t.items,pathname:n}):null}function b(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function v(e,t){const n=b(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\n Available sidebar ids are:\n - ${Object.keys(t).join("\n- ")}`);return r[1]}),[e,n])}function y(e,t){const n=b(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`DocNavbarItem: couldn't find any doc with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function w(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,c=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:c}}},9162:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(353);function a(e){const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:a}=t;return null!=e&&e.trim().length?`${e.trim()} ${a} ${n}`:n}},654:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>l,_X:()=>s});var r=n(7378),a=n(5331),o=n(644),i=n(1763);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},784:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},1123:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>u,VC:()=>p});var r=n(7378),a=n(8944),o=n(7092),i=n(6881);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(8948),c=n(9162);function u(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const u=(0,c.p)(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},1763:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>c,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7378);const a=n(161).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){var n,r,a;super(),this.name="ReactContextError",this.message=`Hook ${(null==(n=this.stack)||null==(r=n.split("\n")[1])||null==(a=r.match(/at (?:\w+\.)?(?\w+)/))?void 0:a.groups.name)??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},1503:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},8862:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7378),a=n(6623),o=n(353);function i(e,t){const n=e=>{var t;return null==(t=!e||e.endsWith("/")?e:`${e}/`)?void 0:t.toLowerCase()};return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},3457:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d,o5:()=>f});var r=n(7378),a=n(161),o=n(6457),i=n(1763);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function c(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const u=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=u();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=c(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>null==n.current?void 0:n.current()))})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>null==e.current?void 0:e.current()}}},3149:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(2935),a=n(353),o=n(4453);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,a.Z)(),t=(0,r._r)(),n=(0,r.WS)(),s=(0,o.Oh)();const c=[i,...Object.keys(t).map((function(e){const r=(null==n?void 0:n.activePlugin.pluginId)===e?n.activeVersion:void 0,a=s[e],o=t[e].versions.find((e=>e.isLast));return l(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:c}}},1819:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>u});var r=n(7378),a=n(644);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const c={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=l(null==t?void 0:t.persistence);return null===n?c:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?c:u(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},3714:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(353),a=n(5331);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},4993:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7378),a=n(5331),o=n(1763);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},624:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(353);function a(){return(0,r.Z)().siteConfig.themeConfig}},632:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(353);function a(){const{siteConfig:{themeConfig:e}}=(0,r.Z)();return e}},2473:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(7378),a=n(1503),o=n(8948),i=n(632);function l(){const{withBaseUrl:e}=(0,o.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,r.useCallback)((r=>{const o=new URL(r);if((0,a.F)(t,o.href))return r;const i=`${o.pathname+o.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},2520:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},1721:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var a=n(2520);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}})},6623:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7378),a=n(5773),o=n(1237),i=n.n(o),l=n(6887);const s={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,9898)),"@theme/BlogTagsListPage",9898],"03ccf92d":[()=>n.e(3259).then(n.t.bind(n,7276,19)),"~blog/default/blog-tags-codespaces-a42-list.json",7276],"059d1c6a":[()=>Promise.all([n.e(8068),n.e(8262)]).then(n.bind(n,6187)),"@site/src/pages/downloads/index.tsx",6187],"07f59c2a":[()=>n.e(9372).then(n.bind(n,1622)),"@site/blog/2022-12-01-release-0.10-blog.md",1622],"09905e74":[()=>n.e(83).then(n.bind(n,7006)),"@site/docs/Installation/windows-install/installing-podman-with-podman-desktop.md",7006],"0d040286":[()=>n.e(8860).then(n.t.bind(n,7951,19)),"~blog/default/blog-tags-podman-desktop-31d-list.json",7951],"0e384e19":[()=>n.e(9671).then(n.bind(n,1012)),"@site/docs/intro.md",1012],17896441:[()=>Promise.all([n.e(532),n.e(6210),n.e(7918)]).then(n.bind(n,7823)),"@theme/DocItem",7823],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,6351)),"@theme/SearchPage",6351],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,5553)),"@theme/DocPage",5553],"1df93b7f":[()=>Promise.all([n.e(8068),n.e(3237)]).then(n.bind(n,7501)),"@site/src/pages/index.tsx",7501],"2ae2e7fe":[()=>n.e(6692).then(n.t.bind(n,9428,19)),"~docs/default/tag-docs-tags-restricted-environment-357.json",9428],"2d81b9d5":[()=>n.e(1591).then(n.bind(n,507)),"@site/docs/Installation/windows-install/installing-podman-desktop-and-podman-in-a-restricted-environment.md",507],"3289a752":[()=>Promise.all([n.e(532),n.e(8811)]).then(n.bind(n,1802)),"@site/docs/migrating-from-docker/verifying-your-tools-are-using-podman.md",1802],"3720c009":[()=>Promise.all([n.e(532),n.e(3751)]).then(n.bind(n,4889)),"@theme/DocTagsListPage",4889],"382c5d2b":[()=>n.e(1441).then(n.t.bind(n,6591,19)),"~blog/default/blog-tags-podman-desktop-31d.json",6591],"38a042e4":[()=>n.e(7138).then(n.bind(n,4663)),"@site/blog/2022-11-17-develop-podman-using-codespaces.md",4663],"3c6cc7c6":[()=>n.e(210).then(n.bind(n,3700)),"@site/docs/Installation/windows-install/installing-podman-desktop-with-chocolatey.md",3700],"3e03f778":[()=>n.e(7034).then(n.t.bind(n,6597,19)),"~docs/default/tag-docs-tags-podman-4ff.json",6597],"3ed6e2e9":[()=>n.e(6536).then(n.t.bind(n,8969,19)),"~docs/default/tag-docs-tags-macos-7ec.json",8969],"3fed3fa8":[()=>n.e(6134).then(n.bind(n,690)),"@site/docs/Installation/windows-install/installing-podman-desktop-with-scoop.md",690],"4305e853":[()=>n.e(93).then(n.bind(n,5570)),"@site/docs/Installation/windows-install/installing-podman-desktop-silently-with-the-windows-installer.md",5570],"43b416ef":[()=>n.e(7847).then(n.t.bind(n,5745,19)),"/home/runner/work/podman-desktop/podman-desktop/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"4e8ec325":[()=>n.e(6181).then(n.bind(n,3719)),"@site/docs/getting-started/2022-08-05-getting-started.md",3719],"5087625a":[()=>Promise.all([n.e(8068),n.e(1724)]).then(n.bind(n,36)),"@site/src/pages/downloads/windows.tsx",36],"51dec273":[()=>n.e(6026).then(n.t.bind(n,936,19)),"~docs/default/tag-docs-tags-migrating-from-docker-f4d.json",936],"55960ee5":[()=>n.e(4121).then(n.t.bind(n,8070,19)),"~docs/default/tags-list-current-prop-15a.json",8070],"56c3a9b2":[()=>Promise.all([n.e(8068),n.e(3010)]).then(n.bind(n,5646)),"@site/src/pages/core-values/index.tsx",5646],"59c97daa":[()=>n.e(8698).then(n.bind(n,6097)),"@site/docs/Installation/linux-install/index.md",6097],"5a8fbd01":[()=>n.e(4531).then(n.bind(n,3561)),"@site/docs/Installation/windows-install/index.md",3561],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"6101b3fc":[()=>Promise.all([n.e(8068),n.e(5248)]).then(n.bind(n,3963)),"@site/src/pages/downloads/linux.tsx",3963],"6194ac84":[()=>n.e(397).then(n.t.bind(n,299,19)),"~docs/default/tag-docs-tags-podman-desktop-be3.json",299],"6269f1c0":[()=>Promise.all([n.e(532),n.e(138)]).then(n.bind(n,6472)),"@site/docs/migrating-from-docker/importing-saved-containers.md",6472],"657ac0bc":[()=>n.e(5625).then(n.t.bind(n,3769,19)),"/home/runner/work/podman-desktop/podman-desktop/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"6875c492":[()=>Promise.all([n.e(532),n.e(6210),n.e(1947),n.e(8610)]).then(n.bind(n,1071)),"@theme/BlogTagsPostsPage",1071],"6af14956":[()=>n.e(8221).then(n.t.bind(n,6567,19)),"~docs/default/tag-docs-tags-linux-f75.json",6567],"708d858d":[()=>n.e(7377).then(n.bind(n,7806)),"@site/docs/migrating-from-docker/emulating-docker-cli-with-podman.md",7806],72486833:[()=>n.e(3505).then(n.t.bind(n,3722,19)),"~blog/default/blog-tags-kubernetes-4b9-list.json",3722],"72dd8f7e":[()=>n.e(9106).then(n.t.bind(n,6956,19)),"~docs/default/tag-docs-tags-mac-0-s-b35.json",6956],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"822c343e":[()=>n.e(7149).then(n.t.bind(n,4469,19)),"/home/runner/work/podman-desktop/podman-desktop/website/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],"83245ae6":[()=>Promise.all([n.e(8306),n.e(7679)]).then(n.bind(n,9867)),"@site/blog/2023-01-18-release-0.11.md",9867],"83d480e9":[()=>n.e(205).then(n.t.bind(n,3672,19)),"~blog/default/blog-tags-release-b5c.json",3672],"840a98fb":[()=>n.e(809).then(n.t.bind(n,8272,19)),"~docs/default/tag-docs-tags-openshift-local-64e.json",8272],"8894e90f":[()=>Promise.all([n.e(8068),n.e(7505)]).then(n.bind(n,919)),"@site/src/pages/downloads/macOS.tsx",919],"8b4dd820":[()=>n.e(3636).then(n.bind(n,2216)),"@site/blog/2022-12-01-release-0.10-blog.md?truncated=true",2216],"933a69d3":[()=>n.e(7813).then(n.t.bind(n,1853,19)),"~docs/default/tag-docs-tags-getting-started-980.json",1853],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9aa62c0e":[()=>n.e(506).then(n.t.bind(n,9694,19)),"~docs/default/tag-docs-tags-chocolatey-ce7.json",9694],"9c021584":[()=>n.e(7438).then(n.t.bind(n,8055,19)),"~blog/default/blog-tags-release-b5c-list.json",8055],"9d9f8394":[()=>n.e(9360).then(n.bind(n,6304)),"@site/docs/troubleshooting.md",6304],"9e4087bc":[()=>n.e(3608).then(n.bind(n,7507)),"@theme/BlogArchivePage",7507],a5e1f61e:[()=>n.e(3820).then(n.t.bind(n,1163,19)),"~docs/default/tag-docs-tags-winget-d3b.json",1163],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(6210),n.e(1947),n.e(3089)]).then(n.bind(n,3462)),"@theme/BlogListPage",3462],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,5208,19)),"~blog/default/blog-tags-tags-4c2.json",5208],a766a857:[()=>n.e(1342).then(n.t.bind(n,6018,19)),"~docs/default/tag-docs-tags-windows-4a4.json",6018],ae79aff5:[()=>n.e(4386).then(n.bind(n,4794)),"@site/docs/migrating-from-docker/index.md",4794],b0f1c099:[()=>n.e(9387).then(n.t.bind(n,6462,19)),"~blog/default/blog-tags-kubernetes-4b9.json",6462],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,4556,19)),"~blog/default/blog-archive-80c.json",4556],b443212b:[()=>n.e(9184).then(n.bind(n,1443)),"@site/docs/Installation/linux-install/installing-podman-desktop-from-a-flatpak-bundle.md",1443],ba322490:[()=>n.e(2178).then(n.t.bind(n,7085,19)),"/home/runner/work/podman-desktop/podman-desktop/website/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],ba5b9f11:[()=>n.e(7251).then(n.bind(n,8402)),"@site/blog/2022-11-17-develop-podman-using-codespaces.md?truncated=true",8402],beebaad6:[()=>n.e(4207).then(n.bind(n,1923)),"@site/docs/Installation/index.md",1923],c1fad867:[()=>n.e(4758).then(n.bind(n,3042)),"@site/docs/Installation/linux-install/installing-podman-desktop-from-a-compressed-tar-file.md",3042],c276ecb2:[()=>n.e(182).then(n.t.bind(n,1444,19)),"~blog/default/blog-tags-devcontainer-050-list.json",1444],c685778b:[()=>n.e(563).then(n.t.bind(n,383,19)),"~docs/default/tag-docs-tags-installing-ce0.json",383],cc591f25:[()=>n.e(6778).then(n.bind(n,1806)),"@site/docs/podman-compose.md",1806],ccc49370:[()=>Promise.all([n.e(532),n.e(6210),n.e(1947),n.e(6103)]).then(n.bind(n,3227)),"@theme/BlogPostPage",3227],cd509849:[()=>n.e(5018).then(n.t.bind(n,9547,19)),"~docs/default/tag-docs-tags-flathub-b2e.json",9547],d7fbbe43:[()=>n.e(2217).then(n.bind(n,464)),"@site/src/pages/features/index.tsx",464],d83d689a:[()=>n.e(5068).then(n.bind(n,6766)),"@site/docs/Installation/macos-install.md",6766],df203c0f:[()=>n.e(9924).then(n.bind(n,7051)),"@theme/DocTagDocListPage",7051],e561c556:[()=>n.e(1089).then(n.bind(n,4707)),"@site/docs/Installation/windows-install/installing-podman-with-openshift-local.md",4707],e665718d:[()=>n.e(114).then(n.bind(n,1261)),"@site/src/pages/extend/index.tsx",1261],e6fb1369:[()=>n.e(8800).then(n.bind(n,6166)),"@site/blog/2023-01-18-release-0.11.md?truncated=true",6166],eabf5d51:[()=>n.e(5908).then(n.bind(n,3821)),"@site/docs/Installation/windows-install/installing-podman-desktop-with-winget.md",3821],ed75cfcb:[()=>n.e(3584).then(n.bind(n,6117)),"@site/docs/migrating-from-docker/using-podman-mac-helper.md",6117],f0057c03:[()=>n.e(5708).then(n.t.bind(n,7018,19)),"~docs/default/tag-docs-tags-scoop-7df.json",7018],f213dd13:[()=>n.e(6049).then(n.t.bind(n,1326,19)),"~blog/default/blog-tags-codespaces-a42.json",1326],f523fb3f:[()=>Promise.all([n.e(532),n.e(3973)]).then(n.bind(n,3666)),"@site/docs/migrating-from-docker/using-the-docker_host-environment-variable.md",3666],f6e0e63c:[()=>n.e(7536).then(n.t.bind(n,9592,19)),"~blog/default/blog-tags-devcontainer-050.json",9592],f7b7f9b7:[()=>n.e(465).then(n.t.bind(n,7196,19)),"~docs/default/tag-docs-tags-flatpak-1be.json",7196]};function c(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=n(3361),d=n(6881);function f(e,t){if("*"===e)return i()({loading:c,loader:()=>n.e(3893).then(n.bind(n,3893)),modules:["@theme/NotFound"],webpack:()=>[3893],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],m=[],g=(0,u.Z)(o);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:c,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/blog",component:f("/blog","755"),exact:!0},{path:"/blog/archive",component:f("/blog/archive","376"),exact:!0},{path:"/blog/develop-using-devcontainer",component:f("/blog/develop-using-devcontainer","8bd"),exact:!0},{path:"/blog/podman-desktop-release-0.10",component:f("/blog/podman-desktop-release-0.10","1f2"),exact:!0},{path:"/blog/podman-desktop-release-0.11",component:f("/blog/podman-desktop-release-0.11","bc8"),exact:!0},{path:"/blog/tags",component:f("/blog/tags","01c"),exact:!0},{path:"/blog/tags/codespaces",component:f("/blog/tags/codespaces","954"),exact:!0},{path:"/blog/tags/devcontainer",component:f("/blog/tags/devcontainer","f90"),exact:!0},{path:"/blog/tags/kubernetes",component:f("/blog/tags/kubernetes","59f"),exact:!0},{path:"/blog/tags/podman-desktop",component:f("/blog/tags/podman-desktop","04c"),exact:!0},{path:"/blog/tags/release",component:f("/blog/tags/release","ab8"),exact:!0},{path:"/core-values",component:f("/core-values","1ca"),exact:!0},{path:"/docs/tags",component:f("/docs/tags","956"),exact:!0},{path:"/docs/tags/chocolatey",component:f("/docs/tags/chocolatey","539"),exact:!0},{path:"/docs/tags/flathub",component:f("/docs/tags/flathub","b70"),exact:!0},{path:"/docs/tags/flatpak",component:f("/docs/tags/flatpak","acc"),exact:!0},{path:"/docs/tags/getting-started",component:f("/docs/tags/getting-started","33b"),exact:!0},{path:"/docs/tags/installing",component:f("/docs/tags/installing","37d"),exact:!0},{path:"/docs/tags/linux",component:f("/docs/tags/linux","170"),exact:!0},{path:"/docs/tags/mac-0-s",component:f("/docs/tags/mac-0-s","1b7"),exact:!0},{path:"/docs/tags/macos",component:f("/docs/tags/macos","1d0"),exact:!0},{path:"/docs/tags/migrating-from-docker",component:f("/docs/tags/migrating-from-docker","f8d"),exact:!0},{path:"/docs/tags/openshift-local",component:f("/docs/tags/openshift-local","641"),exact:!0},{path:"/docs/tags/podman",component:f("/docs/tags/podman","4dd"),exact:!0},{path:"/docs/tags/podman-desktop",component:f("/docs/tags/podman-desktop","174"),exact:!0},{path:"/docs/tags/restricted-environment",component:f("/docs/tags/restricted-environment","c57"),exact:!0},{path:"/docs/tags/scoop",component:f("/docs/tags/scoop","c9a"),exact:!0},{path:"/docs/tags/windows",component:f("/docs/tags/windows","fb4"),exact:!0},{path:"/docs/tags/winget",component:f("/docs/tags/winget","977"),exact:!0},{path:"/downloads",component:f("/downloads","ae5"),exact:!0},{path:"/downloads/linux",component:f("/downloads/linux","4a4"),exact:!0},{path:"/downloads/macOS",component:f("/downloads/macOS","330"),exact:!0},{path:"/downloads/windows",component:f("/downloads/windows","6e4"),exact:!0},{path:"/extend",component:f("/extend","2be"),exact:!0},{path:"/features",component:f("/features","606"),exact:!0},{path:"/search",component:f("/search","cf9"),exact:!0},{path:"/docs",component:f("/docs","85e"),routes:[{path:"/docs/getting-started/getting-started",component:f("/docs/getting-started/getting-started","f9e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation",component:f("/docs/Installation","b2a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/linux-install",component:f("/docs/Installation/linux-install","c2a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/linux-install/installing-podman-desktop-from-a-compressed-tar-file",component:f("/docs/Installation/linux-install/installing-podman-desktop-from-a-compressed-tar-file","308"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/linux-install/installing-podman-desktop-from-a-flatpak-bundle",component:f("/docs/Installation/linux-install/installing-podman-desktop-from-a-flatpak-bundle","930"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/macos-install",component:f("/docs/Installation/macos-install","c78"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/windows-install",component:f("/docs/Installation/windows-install","1ad"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/windows-install/installing-podman-desktop-and-podman-in-a-restricted-environment",component:f("/docs/Installation/windows-install/installing-podman-desktop-and-podman-in-a-restricted-environment","f43"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/windows-install/installing-podman-desktop-silently-with-the-windows-installer",component:f("/docs/Installation/windows-install/installing-podman-desktop-silently-with-the-windows-installer","159"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/windows-install/installing-podman-desktop-with-chocolatey",component:f("/docs/Installation/windows-install/installing-podman-desktop-with-chocolatey","776"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/windows-install/installing-podman-desktop-with-scoop",component:f("/docs/Installation/windows-install/installing-podman-desktop-with-scoop","2cc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/windows-install/installing-podman-desktop-with-winget",component:f("/docs/Installation/windows-install/installing-podman-desktop-with-winget","8fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/windows-install/installing-podman-with-openshift-local",component:f("/docs/Installation/windows-install/installing-podman-with-openshift-local","341"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/windows-install/installing-podman-with-podman-desktop",component:f("/docs/Installation/windows-install/installing-podman-with-podman-desktop","254"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro",component:f("/docs/intro","aed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/migrating-from-docker",component:f("/docs/migrating-from-docker","fbd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/migrating-from-docker/emulating-docker-cli-with-podman",component:f("/docs/migrating-from-docker/emulating-docker-cli-with-podman","4c4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/migrating-from-docker/importing-saved-containers",component:f("/docs/migrating-from-docker/importing-saved-containers","8cf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/migrating-from-docker/using-podman-mac-helper",component:f("/docs/migrating-from-docker/using-podman-mac-helper","3fa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/migrating-from-docker/using-the-docker_host-environment-variable",component:f("/docs/migrating-from-docker/using-the-docker_host-environment-variable","8ef"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/migrating-from-docker/verifying-your-tools-are-using-podman",component:f("/docs/migrating-from-docker/verifying-your-tools-are-using-podman","988"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/podman-compose",component:f("/docs/podman-compose","7f5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/troubleshooting",component:f("/docs/troubleshooting","5f7"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:f("/","395"),exact:!0},{path:"*",component:f("*")}]},8944:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>T,ob:()=>p,PP:()=>I,Ep:()=>f});var r=n(5773);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(1115);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,g(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9185),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},142:(e,t,n)=>{"use strict";n.r(t)},6222:(e,t,n)=>{"use strict";n.r(t)},8504:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=f(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},2525:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,o){for(var i,l,s=a(e),c=1;c{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,T=1;if(v){if(!(_=o(k,S,e,b))||_.index>=e.length)break;var C=_.index,I=_.index+_[0].length,A=S;for(A+=E.value.length;C>=A;)A+=(E=E.next).value.length;if(S=A-=E.value.length,E.value instanceof a)continue;for(var L=E;L!==t.tail&&(Ad.reach&&(d.reach=R);var M=E.prev;if(O&&(M=s(t,M,O),S+=O.length),c(t,M,T),E=s(t,M,new a(f,h?r.tokenize(P,h):P,y,P)),N&&s(t,E,N),T>1){var D={cause:f+","+m,reach:R};i(e,t,n,E.prev,S,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&p(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return u[n]=a,n})).join(""),n,r),f=Object.keys(u);return i=0,function e(t){for(var n=0;n=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=c(u[a]),p=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),p){var g=[p];e(g),m.push.apply(m,g)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var h=r.content;Array.isArray(h)?e(h):e([h])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],f="string"==typeof c?c:c.content,p=t(r,u),m=f.indexOf(p);if(m>-1){++a;var g=f.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=f.substring(m+p.length),v=[];g&&v.push.apply(v,i([g])),v.push(h),b&&v.push.apply(v,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},6761:()=>{!function(e){var t=/\\[\r\n](?:\s|\\[\r\n]|#.*(?!.))*(?![\s#]|\\[\r\n])/.source,n=/(?:[ \t]+(?![ \t])(?:)?|)/.source.replace(//g,(function(){return t})),r=/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"|'(?:[^'\\\r\n]|\\(?:\r\n|[\s\S]))*'/.source,a=/--[\w-]+=(?:|(?!["'])(?:[^\s\\]|\\.)+)/.source.replace(//g,(function(){return r})),o={pattern:RegExp(r),greedy:!0},i={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function l(e,t){return e=e.replace(//g,(function(){return a})).replace(//g,(function(){return n})),RegExp(e,t)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:l(/(^(?:ONBUILD)?\w+)(?:)*/.source,"i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[o,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:l(/(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\b/.source,"i"),lookbehind:!0,greedy:!0},{pattern:l(/(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \t\\]+)AS/.source,"i"),lookbehind:!0,greedy:!0},{pattern:l(/(^ONBUILD)\w+/.source,"i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:i,string:o,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:i},e.languages.dockerfile=e.languages.docker}(Prism)},3069:()=>{!function(e){var t=[/"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/.source,/'[^']*'/.source,/\$'(?:[^'\\]|\\[\s\S])*'/.source,/<<-?\s*(["']?)(\w+)\1\s[\s\S]*?[\r\n]\2/.source].join("|");e.languages["shell-session"]={command:{pattern:RegExp(/^/.source+"(?:"+/[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+(?::[^\0-\x1F$#%*?"<>:;|]+)?/.source+"|"+/[/~.][^\0-\x1F$#%*?"<>@:;|]*/.source+")?"+/[$#%](?=\s)/.source+/(?:[^\\\r\n \t'"<$]|[ \t](?:(?!#)|#.*$)|\\(?:[^\r]|\r\n?)|\$(?!')|<(?!<)|<>)+/.source.replace(/<>/g,(function(){return t})),"m"),greedy:!0,inside:{info:{pattern:/^[^#$%]+/,alias:"punctuation",inside:{user:/^[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+/,punctuation:/:/,path:/[\s\S]+/}},bash:{pattern:/(^[$#%]\s*)\S[\s\S]*/,lookbehind:!0,alias:"language-bash",inside:e.languages.bash},"shell-symbol":{pattern:/^[$#%]/,alias:"important"}}},output:/.(?:.*(?:[\r\n]|.$))*/},e.languages["sh-session"]=e.languages.shellsession=e.languages["shell-session"]}(Prism)},5639:(e,t,n)=>{var r={"./prism-docker":6761,"./prism-shell-session":3069};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=5639},8772:(e,t,n)=>{"use strict";var r=n(331);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},3615:(e,t,n)=>{e.exports=n(8772)()},331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},3577:(e,t,n)=>{"use strict";var r=n(7378),a=n(2525),o=n(1102);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n