{"version":3,"sources":["webpack:///./src/@rocketseat/gatsby-theme-docs/text/index.mdx","webpack:///./node_modules/@rocketseat/gatsby-theme-docs/src/components/Homepage.js","webpack:///./node_modules/@rocketseat/gatsby-theme-docs-core/src/templates/homepage-query.js","webpack:///./node_modules/@rocketseat/gatsby-theme-docs/src/@rocketseat/gatsby-theme-docs-core/components/Homepage.js"],"names":["layoutProps","_frontmatter","MDXContent","components","props","mdxType","style","href","src","alt","width","height","parentName","align","isMDXComponent","Home","Layout","SEO","HomepageComponent"],"mappings":"gKAQMA,EAAc,CAClBC,aAF0B,IAKb,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,cALS,UAKT,eAAeJ,EAAiBI,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAC5E,mBAAGC,MAAO,CACR,WAAc,UACd,UAAa,WAEb,mBAAGC,KAAK,6GAA6GD,MAAO,CAC1H,MAAS,OACT,WAAc,UACd,UAAa,SACb,SAAY,SACX,4EACH,oBAAIA,MAAO,CACT,WAAc,UACd,UAAa,SACb,MAAS,UACT,SAAY,SAJd,+BAMA,oBAAIA,MAAO,CACT,WAAc,UACd,UAAa,SACb,MAAS,UACT,SAAY,SAJd,+CAMA,yBACA,oCAvBF,uOAwBE,yBACA,0BAEF,yBACA,yBACA,mBAAGA,MAAO,CACR,UAAa,WAEb,qBAAKE,IAAI,mBAAmBC,IAAI,aAElC,yBACA,mBAAGH,MAAO,CACR,WAAc,UACd,UAAa,WAEb,0BAEF,oBAAIA,MAAO,CACT,UAAa,SACb,WAAc,UACd,MAAS,UACT,SAAY,SAJd,OAKO,kCALP,MAMA,mBAAGA,MAAO,CACR,UAAa,SACb,SAAY,OACZ,WAAc,YAEd,qBAAKE,IAAI,aAAaC,IAAI,UAAUC,MAAM,QAAQC,OAAO,UAAU,yBACnE,uBAAG,wBAAQC,WAAW,KAAnB,QAAH,SAAqD,oBAAIA,WAAW,KAAf,YAArD,gBACA,qBAAKJ,IAAI,cAAcC,IAAI,UAAUC,MAAM,QAAQC,OAAO,UAAU,yBACpE,uBAAG,wBAAQC,WAAW,KAAnB,OAAH,oBAA+D,wBAAQA,WAAW,KAAnB,SAA/D,cACA,qBAAKJ,IAAI,cAAcC,IAAI,UAAUC,MAAM,QAAQC,OAAO,UAAU,yBACpE,uBAAG,wBAAQC,WAAW,KAAnB,SAAH,sBAAmE,wBAAQA,WAAW,KAAnB,QAAnE,wBAEF,yBACA,yBACA,mBAAGN,MAAO,CACR,WAAc,UACd,UAAa,SACb,MAAS,UACT,SAAY,SAEZ,mBAAGC,KAAK,oEAAoED,MAAO,CACjF,MAAS,YACR,6CAEL,yBACA,yBACA,mBAAGA,MAAO,CACR,UAAa,SACb,SAAY,SAEZ,qBAAKE,IAAI,aAAaK,MAAM,SAASJ,IAAI,OAAOC,MAAM,OAAOC,OAAO,SACpE,yBALF,qDAYJT,EAAWY,gBAAiB,E,4BChGb,SAASC,IACtB,OACE,YAACC,EAAA,EAAD,KACE,YAACC,EAAA,EAAD,MACA,YAAC,EAAD,OCRSC,UCEA,WACb,OAAO,YAACH,EAAD","file":"component---node-modules-rocketseat-gatsby-theme-docs-core-src-templates-homepage-query-js-a7d6ef8d07b6353dab59.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nexport const _frontmatter = {};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n    <p style={{\n      \"fontFamily\": \"calibri\",\n      \"textAlign\": \"center\"\n    }}>\n      <a href=\"https://databricks.com/session_eu20/apache-liminal-incubating-operationalise-the-machine-learning-pipeline\" style={{\n        \"color\": \"blue\",\n        \"fontFamily\": \"calibri\",\n        \"textAlign\": \"center\",\n        \"fontSize\": \"24px\"\n      }}><u>Join our session at the Data & AI Summit Europe!</u></a>\n      <h2 style={{\n        \"fontFamily\": \"calibri\",\n        \"textAlign\": \"center\",\n        \"color\": \"#001B3D\",\n        \"fontSize\": \"36px\"\n      }}>Apache Liminal (Incubating)</h2>\n      <h2 style={{\n        \"fontFamily\": \"calibri\",\n        \"textAlign\": \"center\",\n        \"color\": \"#001B3D\",\n        \"fontSize\": \"30px\"\n      }}>The Machine-Learning Orchestration Platform</h2>\n      <br />\n      <i>Liminal's</i> goal is to operationalise the machine learning process, allowing data scientists to quickly transition from a successful experiment to an automated pipeline of model training, validation, deployment and inference in production.\n      <br />\n      <br />\n    </p>\n    <br />\n    <br />\n    <p style={{\n      \"textAlign\": \"center\"\n    }}>\n      <img src=\"./liminal_03.png\" alt=\"Liminal\" />\n    </p>\n    <br />\n    <p style={{\n      \"fontFamily\": \"calibri\",\n      \"textAlign\": \"center\"\n    }}>\n      <br />\n    </p>\n    <h2 style={{\n      \"textAlign\": \"center\",\n      \"fontFamily\": \"calibri\",\n      \"color\": \"#6e6262\",\n      \"fontSize\": \"30px\"\n    }}>Why <i>Liminal</i> ?</h2>\n    <p style={{\n      \"textAlign\": \"center\",\n      \"fontSize\": \"14px\",\n      \"fontFamily\": \"calibri\"\n    }}>\n      <img src=\"./keep.png\" alt=\"Liminal\" width=\"150px\" height=\"150px\" /><br />\n      <p><strong parentName=\"p\">{`KEEP`}</strong>{` your `}<em parentName=\"p\">{`Existing`}</em>{` tech-stack.`}</p>\n      <img src=\"./focus.png\" alt=\"Liminal\" width=\"150px\" height=\"150px\" /><br />\n      <p><strong parentName=\"p\">{`Let`}</strong>{` Data-scientists `}<strong parentName=\"p\">{`FOCUS`}</strong>{` in ML/AI.`}</p>\n      <img src=\"./scale.png\" alt=\"Liminal\" width=\"150px\" height=\"150px\" /><br />\n      <p><strong parentName=\"p\">{`SCALE`}</strong>{` your workloads to `}<strong parentName=\"p\">{`MEET`}</strong>{` production faster.`}</p>\n    </p>\n    <br />\n    <br />\n    <p style={{\n      \"fontFamily\": \"calibri\",\n      \"textAlign\": \"center\",\n      \"color\": \"#001B3D\",\n      \"fontSize\": \"24px\"\n    }}>\n      <a href=\"https://github.com/apache/incubator-liminal/blob/master/README.md\" style={{\n        \"color\": \"#001B3D\"\n      }}><u>Get started now!</u></a>\n    </p>\n    <br />\n    <br />\n    <p style={{\n      \"textAlign\": \"center\",\n      \"fontSize\": \"10px\"\n    }}>\n      <img src=\"./logo.png\" align=\"middle\" alt=\"Logo\" width=\"45px\" height=\"45px\" />\n      <br />\nCopyright © 2020 The Apache Software Foundation.\n    </p>\n\n    </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      ","import React from 'react';\nimport Index from '../text/index.mdx';\n\nimport Layout from './Layout';\nimport SEO from './SEO';\n\nexport default function Home() {\n  return (\n    <Layout>\n      <SEO />\n      <Index />\n    </Layout>\n  );\n}\n","import HomepageComponent from '../components/Homepage';\n\nexport default HomepageComponent;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport Home from '../../../components/Homepage';\n\nexport default function Homepage() {\n  return <Home />;\n}\n"],"sourceRoot":""}