You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@conferences.apache.org by gi...@apache.org on 2026/07/10 20:24:21 UTC
(conferences-cc-website) 01/01: Automatic Site Publish by Buildbot
This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/conferences-cc-website.git
commit 9374791f97230a5275efa4f11ed52d617c1fc3f7
Author: buildbot <us...@infra.apache.org>
AuthorDate: Fri Jul 10 20:24:11 2026 +0000
Automatic Site Publish by Buildbot
---
.asf.yaml | 39 +
output/.DS_Store | Bin 0 -> 8196 bytes
output/.htaccess | 3 +
output/404.html | 519 ++++++++
output/_pagefind/fragment/en_1d88c4c.pf_fragment | Bin 0 -> 1458 bytes
output/_pagefind/fragment/en_21fc97f.pf_fragment | Bin 0 -> 429 bytes
output/_pagefind/fragment/en_29a9c67.pf_fragment | Bin 0 -> 415 bytes
output/_pagefind/fragment/en_35d4c49.pf_fragment | Bin 0 -> 585 bytes
output/_pagefind/fragment/en_45272c8.pf_fragment | Bin 0 -> 875 bytes
output/_pagefind/fragment/en_47a10d3.pf_fragment | Bin 0 -> 1028 bytes
output/_pagefind/fragment/en_542856c.pf_fragment | Bin 0 -> 896 bytes
output/_pagefind/fragment/en_63ed485.pf_fragment | Bin 0 -> 833 bytes
output/_pagefind/fragment/en_6995b79.pf_fragment | Bin 0 -> 1166 bytes
output/_pagefind/fragment/en_7659ae9.pf_fragment | Bin 0 -> 1221 bytes
output/_pagefind/fragment/en_7b2bfde.pf_fragment | Bin 0 -> 371 bytes
output/_pagefind/fragment/en_7c11a6b.pf_fragment | Bin 0 -> 333 bytes
output/_pagefind/fragment/en_848a3fb.pf_fragment | Bin 0 -> 973 bytes
output/_pagefind/fragment/en_8b2eae2.pf_fragment | Bin 0 -> 506 bytes
output/_pagefind/fragment/en_ab8f462.pf_fragment | Bin 0 -> 635 bytes
output/_pagefind/fragment/en_af8917d.pf_fragment | Bin 0 -> 429 bytes
output/_pagefind/fragment/en_b6857fb.pf_fragment | Bin 0 -> 413 bytes
output/_pagefind/fragment/en_beb56d1.pf_fragment | Bin 0 -> 1326 bytes
output/_pagefind/fragment/en_c3db1fd.pf_fragment | Bin 0 -> 425 bytes
output/_pagefind/fragment/en_c5b2982.pf_fragment | Bin 0 -> 735 bytes
output/_pagefind/fragment/en_c73783a.pf_fragment | Bin 0 -> 416 bytes
output/_pagefind/fragment/en_c940f54.pf_fragment | Bin 0 -> 2163 bytes
output/_pagefind/fragment/en_c9437f3.pf_fragment | Bin 0 -> 432 bytes
output/_pagefind/fragment/en_cac49ef.pf_fragment | Bin 0 -> 263 bytes
output/_pagefind/fragment/en_d1548cc.pf_fragment | Bin 0 -> 367 bytes
output/_pagefind/fragment/en_de8475b.pf_fragment | Bin 0 -> 673 bytes
output/_pagefind/fragment/en_e8ed161.pf_fragment | Bin 0 -> 404 bytes
output/_pagefind/fragment/en_ee4e266.pf_fragment | Bin 0 -> 2596 bytes
output/_pagefind/fragment/en_f35e241.pf_fragment | Bin 0 -> 418 bytes
output/_pagefind/fragment/en_f3e5a41.pf_fragment | Bin 0 -> 2985 bytes
output/_pagefind/fragment/en_fad3359.pf_fragment | Bin 0 -> 411 bytes
output/_pagefind/fragment/en_fb80135.pf_fragment | Bin 0 -> 427 bytes
output/_pagefind/index/en_5b53d33.pf_index | Bin 0 -> 22415 bytes
output/_pagefind/pagefind-entry.json | 1 +
output/_pagefind/pagefind-highlight.js | 1069 ++++++++++++++++
output/_pagefind/pagefind-modular-ui.css | 214 ++++
output/_pagefind/pagefind-modular-ui.js | 8 +
output/_pagefind/pagefind-ui.css | 1 +
output/_pagefind/pagefind-ui.js | 2 +
output/_pagefind/pagefind.en_b399900225.pf_meta | Bin 0 -> 321 bytes
output/_pagefind/pagefind.js | 9 +
output/_pagefind/wasm.en.pagefind | Bin 0 -> 70873 bytes
output/_pagefind/wasm.unknown.pagefind | Bin 0 -> 67202 bytes
output/about/.DS_Store | Bin 0 -> 6148 bytes
output/about/images/.DS_Store | Bin 0 -> 6148 bytes
output/about/images/1999.jpg | Bin 0 -> 44759 bytes
output/about/images/2000.webp | Bin 0 -> 10810 bytes
output/about/images/2001-2002-option-2 1.webp | Bin 0 -> 22756 bytes
output/about/images/2001-2002.webp | Bin 0 -> 9550 bytes
output/about/images/2010s.webp | Bin 0 -> 7170 bytes
output/about/images/2020-2.webp | Bin 0 -> 9772 bytes
output/about/images/2020.webp | Bin 0 -> 8298 bytes
output/about/images/2021.webp | Bin 0 -> 14208 bytes
output/about/images/2023.webp | Bin 0 -> 28192 bytes
output/about/images/about-1.webp | Bin 0 -> 60970 bytes
output/about/images/about-10.webp | Bin 0 -> 46294 bytes
output/about/images/about-11.webp | Bin 0 -> 52876 bytes
output/about/images/about-12.webp | Bin 0 -> 31202 bytes
output/about/images/about-2.webp | Bin 0 -> 59746 bytes
output/about/images/about-3.webp | Bin 0 -> 94308 bytes
output/about/images/about-4.webp | Bin 0 -> 39684 bytes
output/about/images/about-5.webp | Bin 0 -> 63876 bytes
output/about/images/about-6.webp | Bin 0 -> 55432 bytes
output/about/images/about-7.webp | Bin 0 -> 37724 bytes
output/about/images/about-8.webp | Bin 0 -> 61586 bytes
output/about/images/about-9.webp | Bin 0 -> 56240 bytes
output/about/images/history-1.jpg | Bin 0 -> 84834 bytes
output/about/images/mid-2000s.webp | Bin 0 -> 26548 bytes
output/about/images/today.webp | Bin 0 -> 19318 bytes
output/about/index.html | 777 ++++++++++++
output/code-of-conduct.html | 518 ++++++++
output/css/styles.css | 1331 ++++++++++++++++++++
output/events/.DS_Store | Bin 0 -> 6148 bytes
output/events/apache-bigdata-eu-2015.html | 590 +++++++++
output/events/apache-bigdata-eu-2016.html | 590 +++++++++
output/events/apache-bigdata-na-2016.html | 590 +++++++++
output/events/apache-bigdata-na-2017.html | 593 +++++++++
output/events/apachecon-1998.html | 614 +++++++++
output/events/apachecon-eu-2014.html | 590 +++++++++
output/events/apachecon-eu-2015.html | 590 +++++++++
output/events/apachecon-eu-2016.html | 590 +++++++++
output/events/apachecon-na-2014.html | 596 +++++++++
output/events/apachecon-na-2015.html | 596 +++++++++
output/events/apachecon-na-2016.html | 593 +++++++++
output/events/apachecon-na-2017.html | 593 +++++++++
output/events/asia-2026/.DS_Store | Bin 0 -> 6148 bytes
output/events/asia-2026/css/asia-2026.css | 35 +
output/events/asia-2026/gallery/mosaic-1.jpg | Bin 0 -> 698078 bytes
output/events/asia-2026/gallery/mosaic-2.jpg | Bin 0 -> 629369 bytes
output/events/asia-2026/gallery/mosaic-3.jpg | Bin 0 -> 898375 bytes
output/events/asia-2026/gallery/mosaic-4.jpg | Bin 0 -> 780881 bytes
output/events/asia-2026/gallery/mosaic-5.jpg | Bin 0 -> 999620 bytes
output/events/asia-2026/index.html | 593 +++++++++
output/events/asia-2026/sponsors.json | 98 ++
output/events/asia-2026/tracks/agentic-coding.html | 593 +++++++++
output/events/asia-2026/tracks/ai-infra.html | 597 +++++++++
output/events/asia-2026/tracks/index.html | 674 ++++++++++
output/events/denver-2024.html | 593 +++++++++
output/events/event-card-default.webp | Bin 0 -> 7004 bytes
output/events/glasgow-2026/.DS_Store | Bin 0 -> 6148 bytes
.../glasgow-2026/call-for-presentations.html | 671 ++++++++++
output/events/glasgow-2026/gallery/mosaic-1.jpg | Bin 0 -> 698078 bytes
output/events/glasgow-2026/gallery/mosaic-2.jpg | Bin 0 -> 629369 bytes
output/events/glasgow-2026/gallery/mosaic-3.jpg | Bin 0 -> 898375 bytes
output/events/glasgow-2026/gallery/mosaic-4.jpg | Bin 0 -> 780881 bytes
output/events/glasgow-2026/gallery/mosaic-5.jpg | Bin 0 -> 999620 bytes
.../events/glasgow-2026/images/pellier-3461.avif | Bin 0 -> 19221 bytes
.../events/glasgow-2026/images/pellier-3461.webp | Bin 0 -> 23622 bytes
output/events/glasgow-2026/index.html | 643 ++++++++++
.../events/glasgow-2026/lakehouse-day-glasgow.html | 691 ++++++++++
output/events/glasgow-2026/register.html | 656 ++++++++++
output/events/glasgow-2026/schedule.html | 642 ++++++++++
output/events/glasgow-2026/sponsors.json | 152 +++
output/events/glasgow-2026/sponsorship.html | 608 +++++++++
output/events/glasgow-2026/travel.html | 666 ++++++++++
output/events/glasgow-2026/why-attend.html | 620 +++++++++
output/events/minneapolis-2025.html | 593 +++++++++
output/favicon.ico | Bin 0 -> 15406 bytes
output/fonts/Montserrat-300-600-800.css | 28 +
output/fonts/Montserrat-Black.ttf | Bin 0 -> 343296 bytes
output/fonts/Montserrat-ExtraBold.ttf | Bin 0 -> 344052 bytes
output/fonts/Montserrat-Normal.ttf | Bin 0 -> 31448 bytes
output/fonts/Montserrat-SemiBold.ttf | Bin 0 -> 31476 bytes
output/images/.DS_Store | Bin 0 -> 6148 bytes
output/images/CoC-logo-full-white.webp | Bin 0 -> 46950 bytes
output/images/CoC-logo-full.webp | Bin 0 -> 59158 bytes
output/images/CoC-logo-glasgow-full.webp | Bin 0 -> 76286 bytes
output/images/CoC-logo-glasgow-white.webp | Bin 0 -> 32544 bytes
output/images/CoC-logo-glasgow.webp | Bin 0 -> 38844 bytes
output/images/CoC-logo-new-white.webp | Bin 0 -> 46950 bytes
output/images/CoC-logo-white.webp | Bin 0 -> 26314 bytes
output/images/CoC-logo.png | Bin 0 -> 10229 bytes
output/images/CoC-logo.webp | Bin 0 -> 31090 bytes
.../CommunityOverCode_Logo_horizontal-color.svg | 51 +
output/images/Content - Hero.png | Bin 0 -> 2786370 bytes
output/images/coc-logo-white-big.webp | Bin 0 -> 18492 bytes
output/images/colocated-events-bg.webp | Bin 0 -> 140974 bytes
output/images/community-over-code-logo-color.webp | Bin 0 -> 20928 bytes
output/images/earth-bg.jpg | Bin 0 -> 4696795 bytes
output/images/earth-bg.webp | Bin 0 -> 54724 bytes
output/images/email.svg | 4 +
output/images/events-new-1.png | Bin 0 -> 1097105 bytes
output/images/events-new-1.webp | Bin 0 -> 96780 bytes
output/images/events-news-1.webp | Bin 0 -> 95082 bytes
output/images/events-news-2.png | Bin 0 -> 884013 bytes
output/images/events-news-2.webp | Bin 0 -> 82170 bytes
output/images/events-news-3.png | Bin 0 -> 1209813 bytes
output/images/events-news-3.webp | Bin 0 -> 79026 bytes
output/images/events-news-4.png | Bin 0 -> 1208988 bytes
output/images/events-news-4.webp | Bin 0 -> 54748 bytes
output/images/events-news-5.webp | Bin 0 -> 74890 bytes
output/images/events/2026-banner-bg-v1.jpg | Bin 0 -> 866967 bytes
...er Code Asia 2026 - Powered by ALC-Beijing.html | 465 +++++++
output/images/events/event-card-default.jpg | Bin 0 -> 25504 bytes
output/images/events/event-card-default.webp | Bin 0 -> 11348 bytes
output/images/events/event-hero-asia-2026.webp | Bin 0 -> 162828 bytes
output/images/events/event-hero-glasgow.webp | Bin 0 -> 147700 bytes
output/images/faq-toggle.svg | 3 +
output/images/hero-btm-mask.svg | 11 +
output/images/hero-curve-gradient.svg | 11 +
output/images/hero-curve-gradient.webp | Bin 0 -> 7978 bytes
output/images/hero-curve-mask.svg | 3 +
output/images/hero-curve-mask.webp | Bin 0 -> 4636 bytes
output/images/hero-glasgow.jpg | Bin 0 -> 1927112 bytes
output/images/home-hero-bg.webp | Bin 0 -> 112718 bytes
output/images/icon-community-leader.svg | 15 +
output/images/icon-developer.svg | 19 +
output/images/icon-engineers.svg | 11 +
output/images/icon-management.svg | 16 +
output/images/icon-systems-admin.png | 13 +
output/images/icon-systems-admin.svg | 13 +
output/images/list format/24/Outline.svg | 3 +
output/images/list format/24/Vector.svg | 3 +
output/images/list format/24/mailing-list.png | Bin 0 -> 519 bytes
output/images/list format/24/mailing-list.svg | 3 +
...ommunityOverCode_Logo_beijing-stacked-color.svg | 133 ++
...ommunityOverCode_Logo_beijing-stacked-white.svg | 42 +
.../CommunityOverCode_Logo_horizontal-black.svg | 39 +
.../CommunityOverCode_Logo_horizontal-color.svg | 76 ++
.../CommunityOverCode_Logo_horizontal-white.svg | 40 +
.../logos/CommunityOverCode_Logo_stacked-black.svg | 41 +
.../logos/CommunityOverCode_Logo_stacked-color.svg | 76 ++
.../logos/CommunityOverCode_Logo_stacked-white.svg | 40 +
.../CommunityOverCode_Logo_stacked-white.webp | Bin 0 -> 12568 bytes
output/images/mosaic-1.jpg | Bin 0 -> 698078 bytes
output/images/mosaic-1.webp | Bin 0 -> 9244 bytes
output/images/mosaic-2.jpg | Bin 0 -> 629369 bytes
output/images/mosaic-2.webp | Bin 0 -> 20212 bytes
output/images/mosaic-3.jpg | Bin 0 -> 898375 bytes
output/images/mosaic-3.webp | Bin 0 -> 23162 bytes
output/images/mosaic-4.jpg | Bin 0 -> 780881 bytes
output/images/mosaic-4.webp | Bin 0 -> 8602 bytes
output/images/mosaic-5.jpg | Bin 0 -> 999620 bytes
output/images/mosaic-5.webp | Bin 0 -> 9764 bytes
output/images/slack-icon.png | Bin 0 -> 51547 bytes
output/images/sponsors/.DS_Store | Bin 0 -> 6148 bytes
output/images/sponsors/logo-aws.webp | Bin 0 -> 16472 bytes
output/images/sponsors/logo-axonops.webp | Bin 0 -> 10382 bytes
output/images/sponsors/logo-bloomberg.webp | Bin 0 -> 12682 bytes
output/images/sponsors/logo-gradle.webp | Bin 0 -> 8836 bytes
output/images/sponsors/logo-redhat.webp | Bin 0 -> 17120 bytes
output/images/sponsors/logo-snowflake.webp | Bin 0 -> 11298 bytes
output/images/white-curve-btm.svg | 3 +
output/images/white-curve-btm.webp | Bin 0 -> 4608 bytes
output/images/white-logo.png | Bin 0 -> 27103 bytes
output/js/.DS_Store | Bin 0 -> 6148 bytes
output/js/home-js.js | 48 +
output/js/init.js | 11 +
output/js/jquery.min.js | 2 +
output/js/timeline-js.js | 59 +
.../pdfs/Community-Over-Code-Prospectus-2026.pdf | Bin 0 -> 15721748 bytes
output/robots.txt | 3 +
output/schedule.html | 513 ++++++++
output/slack-icon.png | Bin 0 -> 8496 bytes
output/sponsors.html | 512 ++++++++
219 files changed, 23051 insertions(+)
diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 0000000..9c46d86
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,39 @@
+github:
+ description: "CommunityOverCode Website"
+ homepage: https://communityovercode.apache.org/
+ labels:
+ - communityovercode
+ - apachecon
+ - asf
+ - apache
+ enabled_merge_buttons:
+ squash: false
+ merge: true
+ rebase: false
+ features:
+ # Enable issue management
+ issues: true
+ pull_requests:
+ del_branch_on_merge: true
+
+notifications:
+ commits: notifications@conferences.apache.org
+ pullrequests: notifications@conferences.apache.org
+ issues: notifications@conferences.apache.org
+
+publish:
+ whoami: asf-site
+ hostname: communityovercode.apache.org
+
+pelican:
+ notify: notifications@conferences@apache.org
+ autobuild: preview/*
+ target: asf-site
+ # theme: theme/apache - unsure what theme?
+ # minimum_page_count: 170 - needed or no?
+ whoami: main
+
+staging:
+ profile: ~
+ whoami: asf-site
+ autostage: preview/*
diff --git a/output/.DS_Store b/output/.DS_Store
new file mode 100644
index 0000000..e6a407c
Binary files /dev/null and b/output/.DS_Store differ
diff --git a/output/.htaccess b/output/.htaccess
new file mode 100644
index 0000000..fa6337a
--- /dev/null
+++ b/output/.htaccess
@@ -0,0 +1,3 @@
+RewriteEngine On
+RewriteCond %{HTTPS} off
+RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
diff --git a/output/404.html b/output/404.html
new file mode 100644
index 0000000..ba0afff
--- /dev/null
+++ b/output/404.html
@@ -0,0 +1,519 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>404 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body id="404" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+ <div class="hero hero--defaults relative">
+ <div class="inner py-xl relative z1">
+ <div class="hero-content text-center">
+ <h1 class="hero-title">404</h1>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent">
+ <div class="inner py-xl">
+ <section data-pagefind-ignore="all">
+<div class="inner py-xl text-center">
+<h1 id="404">404</h1>
+<p><strong>That page can't be found.</strong></p>
+<p>Try searching Apache.org</p>
+<div class="col-sm-3"></div>
+<div class="col-sm-6 text-left">
+<div class="input-group" id="page-404-search" style="width: 100%; padding: 0 5px;"></div>
+</div>
+</div>
+</section>
+
+ </div>
+ </section>
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/_pagefind/fragment/en_1d88c4c.pf_fragment b/output/_pagefind/fragment/en_1d88c4c.pf_fragment
new file mode 100644
index 0000000..2957740
Binary files /dev/null and b/output/_pagefind/fragment/en_1d88c4c.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_21fc97f.pf_fragment b/output/_pagefind/fragment/en_21fc97f.pf_fragment
new file mode 100644
index 0000000..2839ac4
Binary files /dev/null and b/output/_pagefind/fragment/en_21fc97f.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_29a9c67.pf_fragment b/output/_pagefind/fragment/en_29a9c67.pf_fragment
new file mode 100644
index 0000000..b8f80a6
Binary files /dev/null and b/output/_pagefind/fragment/en_29a9c67.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_35d4c49.pf_fragment b/output/_pagefind/fragment/en_35d4c49.pf_fragment
new file mode 100644
index 0000000..8ea6b54
Binary files /dev/null and b/output/_pagefind/fragment/en_35d4c49.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_45272c8.pf_fragment b/output/_pagefind/fragment/en_45272c8.pf_fragment
new file mode 100644
index 0000000..ef97071
Binary files /dev/null and b/output/_pagefind/fragment/en_45272c8.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_47a10d3.pf_fragment b/output/_pagefind/fragment/en_47a10d3.pf_fragment
new file mode 100644
index 0000000..2a8af1b
Binary files /dev/null and b/output/_pagefind/fragment/en_47a10d3.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_542856c.pf_fragment b/output/_pagefind/fragment/en_542856c.pf_fragment
new file mode 100644
index 0000000..d7d4545
Binary files /dev/null and b/output/_pagefind/fragment/en_542856c.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_63ed485.pf_fragment b/output/_pagefind/fragment/en_63ed485.pf_fragment
new file mode 100644
index 0000000..8ab2270
Binary files /dev/null and b/output/_pagefind/fragment/en_63ed485.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_6995b79.pf_fragment b/output/_pagefind/fragment/en_6995b79.pf_fragment
new file mode 100644
index 0000000..9a9f11f
Binary files /dev/null and b/output/_pagefind/fragment/en_6995b79.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_7659ae9.pf_fragment b/output/_pagefind/fragment/en_7659ae9.pf_fragment
new file mode 100644
index 0000000..da25010
Binary files /dev/null and b/output/_pagefind/fragment/en_7659ae9.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_7b2bfde.pf_fragment b/output/_pagefind/fragment/en_7b2bfde.pf_fragment
new file mode 100644
index 0000000..19e2457
Binary files /dev/null and b/output/_pagefind/fragment/en_7b2bfde.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_7c11a6b.pf_fragment b/output/_pagefind/fragment/en_7c11a6b.pf_fragment
new file mode 100644
index 0000000..80ce5f5
Binary files /dev/null and b/output/_pagefind/fragment/en_7c11a6b.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_848a3fb.pf_fragment b/output/_pagefind/fragment/en_848a3fb.pf_fragment
new file mode 100644
index 0000000..9718bab
Binary files /dev/null and b/output/_pagefind/fragment/en_848a3fb.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_8b2eae2.pf_fragment b/output/_pagefind/fragment/en_8b2eae2.pf_fragment
new file mode 100644
index 0000000..de7b4da
Binary files /dev/null and b/output/_pagefind/fragment/en_8b2eae2.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_ab8f462.pf_fragment b/output/_pagefind/fragment/en_ab8f462.pf_fragment
new file mode 100644
index 0000000..4da8488
Binary files /dev/null and b/output/_pagefind/fragment/en_ab8f462.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_af8917d.pf_fragment b/output/_pagefind/fragment/en_af8917d.pf_fragment
new file mode 100644
index 0000000..2ace375
Binary files /dev/null and b/output/_pagefind/fragment/en_af8917d.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_b6857fb.pf_fragment b/output/_pagefind/fragment/en_b6857fb.pf_fragment
new file mode 100644
index 0000000..22ae55d
Binary files /dev/null and b/output/_pagefind/fragment/en_b6857fb.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_beb56d1.pf_fragment b/output/_pagefind/fragment/en_beb56d1.pf_fragment
new file mode 100644
index 0000000..000c863
Binary files /dev/null and b/output/_pagefind/fragment/en_beb56d1.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_c3db1fd.pf_fragment b/output/_pagefind/fragment/en_c3db1fd.pf_fragment
new file mode 100644
index 0000000..7822f2e
Binary files /dev/null and b/output/_pagefind/fragment/en_c3db1fd.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_c5b2982.pf_fragment b/output/_pagefind/fragment/en_c5b2982.pf_fragment
new file mode 100644
index 0000000..55037b0
Binary files /dev/null and b/output/_pagefind/fragment/en_c5b2982.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_c73783a.pf_fragment b/output/_pagefind/fragment/en_c73783a.pf_fragment
new file mode 100644
index 0000000..6746192
Binary files /dev/null and b/output/_pagefind/fragment/en_c73783a.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_c940f54.pf_fragment b/output/_pagefind/fragment/en_c940f54.pf_fragment
new file mode 100644
index 0000000..4b83c51
Binary files /dev/null and b/output/_pagefind/fragment/en_c940f54.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_c9437f3.pf_fragment b/output/_pagefind/fragment/en_c9437f3.pf_fragment
new file mode 100644
index 0000000..a4d959c
Binary files /dev/null and b/output/_pagefind/fragment/en_c9437f3.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_cac49ef.pf_fragment b/output/_pagefind/fragment/en_cac49ef.pf_fragment
new file mode 100644
index 0000000..aa372b0
Binary files /dev/null and b/output/_pagefind/fragment/en_cac49ef.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_d1548cc.pf_fragment b/output/_pagefind/fragment/en_d1548cc.pf_fragment
new file mode 100644
index 0000000..0eaedb6
Binary files /dev/null and b/output/_pagefind/fragment/en_d1548cc.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_de8475b.pf_fragment b/output/_pagefind/fragment/en_de8475b.pf_fragment
new file mode 100644
index 0000000..1c8f7e2
Binary files /dev/null and b/output/_pagefind/fragment/en_de8475b.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_e8ed161.pf_fragment b/output/_pagefind/fragment/en_e8ed161.pf_fragment
new file mode 100644
index 0000000..192cde5
Binary files /dev/null and b/output/_pagefind/fragment/en_e8ed161.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_ee4e266.pf_fragment b/output/_pagefind/fragment/en_ee4e266.pf_fragment
new file mode 100644
index 0000000..b4aa751
Binary files /dev/null and b/output/_pagefind/fragment/en_ee4e266.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_f35e241.pf_fragment b/output/_pagefind/fragment/en_f35e241.pf_fragment
new file mode 100644
index 0000000..44c9100
Binary files /dev/null and b/output/_pagefind/fragment/en_f35e241.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_f3e5a41.pf_fragment b/output/_pagefind/fragment/en_f3e5a41.pf_fragment
new file mode 100644
index 0000000..5ac26bd
Binary files /dev/null and b/output/_pagefind/fragment/en_f3e5a41.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_fad3359.pf_fragment b/output/_pagefind/fragment/en_fad3359.pf_fragment
new file mode 100644
index 0000000..209e558
Binary files /dev/null and b/output/_pagefind/fragment/en_fad3359.pf_fragment differ
diff --git a/output/_pagefind/fragment/en_fb80135.pf_fragment b/output/_pagefind/fragment/en_fb80135.pf_fragment
new file mode 100644
index 0000000..38699a7
Binary files /dev/null and b/output/_pagefind/fragment/en_fb80135.pf_fragment differ
diff --git a/output/_pagefind/index/en_5b53d33.pf_index b/output/_pagefind/index/en_5b53d33.pf_index
new file mode 100644
index 0000000..f6870dd
Binary files /dev/null and b/output/_pagefind/index/en_5b53d33.pf_index differ
diff --git a/output/_pagefind/pagefind-entry.json b/output/_pagefind/pagefind-entry.json
new file mode 100644
index 0000000..5ee1eef
--- /dev/null
+++ b/output/_pagefind/pagefind-entry.json
@@ -0,0 +1 @@
+{"version":"1.3.0","languages":{"en":{"hash":"en_b399900225","wasm":"en","page_count":32}}}
\ No newline at end of file
diff --git a/output/_pagefind/pagefind-highlight.js b/output/_pagefind/pagefind-highlight.js
new file mode 100644
index 0000000..c823fbf
--- /dev/null
+++ b/output/_pagefind/pagefind-highlight.js
@@ -0,0 +1,1069 @@
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+
+// node_modules/mark.js/dist/mark.js
+var require_mark = __commonJS({
+ "node_modules/mark.js/dist/mark.js"(exports, module) {
+ (function(global, factory) {
+ typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.Mark = factory();
+ })(exports, function() {
+ "use strict";
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
+ return typeof obj;
+ } : function(obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+ var classCallCheck = function(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ };
+ var createClass = function() {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor)
+ descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function(Constructor, protoProps, staticProps) {
+ if (protoProps)
+ defineProperties(Constructor.prototype, protoProps);
+ if (staticProps)
+ defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ var _extends = Object.assign || function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+ };
+ var DOMIterator = function() {
+ function DOMIterator2(ctx) {
+ var iframes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
+ var exclude = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
+ var iframesTimeout = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 5e3;
+ classCallCheck(this, DOMIterator2);
+ this.ctx = ctx;
+ this.iframes = iframes;
+ this.exclude = exclude;
+ this.iframesTimeout = iframesTimeout;
+ }
+ createClass(DOMIterator2, [{
+ key: "getContexts",
+ value: function getContexts() {
+ var ctx = void 0, filteredCtx = [];
+ if (typeof this.ctx === "undefined" || !this.ctx) {
+ ctx = [];
+ } else if (NodeList.prototype.isPrototypeOf(this.ctx)) {
+ ctx = Array.prototype.slice.call(this.ctx);
+ } else if (Array.isArray(this.ctx)) {
+ ctx = this.ctx;
+ } else if (typeof this.ctx === "string") {
+ ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx));
+ } else {
+ ctx = [this.ctx];
+ }
+ ctx.forEach(function(ctx2) {
+ var isDescendant = filteredCtx.filter(function(contexts) {
+ return contexts.contains(ctx2);
+ }).length > 0;
+ if (filteredCtx.indexOf(ctx2) === -1 && !isDescendant) {
+ filteredCtx.push(ctx2);
+ }
+ });
+ return filteredCtx;
+ }
+ }, {
+ key: "getIframeContents",
+ value: function getIframeContents(ifr, successFn) {
+ var errorFn = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() {
+ };
+ var doc = void 0;
+ try {
+ var ifrWin = ifr.contentWindow;
+ doc = ifrWin.document;
+ if (!ifrWin || !doc) {
+ throw new Error("iframe inaccessible");
+ }
+ } catch (e) {
+ errorFn();
+ }
+ if (doc) {
+ successFn(doc);
+ }
+ }
+ }, {
+ key: "isIframeBlank",
+ value: function isIframeBlank(ifr) {
+ var bl = "about:blank", src = ifr.getAttribute("src").trim(), href = ifr.contentWindow.location.href;
+ return href === bl && src !== bl && src;
+ }
+ }, {
+ key: "observeIframeLoad",
+ value: function observeIframeLoad(ifr, successFn, errorFn) {
+ var _this = this;
+ var called = false, tout = null;
+ var listener = function listener2() {
+ if (called) {
+ return;
+ }
+ called = true;
+ clearTimeout(tout);
+ try {
+ if (!_this.isIframeBlank(ifr)) {
+ ifr.removeEventListener("load", listener2);
+ _this.getIframeContents(ifr, successFn, errorFn);
+ }
+ } catch (e) {
+ errorFn();
+ }
+ };
+ ifr.addEventListener("load", listener);
+ tout = setTimeout(listener, this.iframesTimeout);
+ }
+ }, {
+ key: "onIframeReady",
+ value: function onIframeReady(ifr, successFn, errorFn) {
+ try {
+ if (ifr.contentWindow.document.readyState === "complete") {
+ if (this.isIframeBlank(ifr)) {
+ this.observeIframeLoad(ifr, successFn, errorFn);
+ } else {
+ this.getIframeContents(ifr, successFn, errorFn);
+ }
+ } else {
+ this.observeIframeLoad(ifr, successFn, errorFn);
+ }
+ } catch (e) {
+ errorFn();
+ }
+ }
+ }, {
+ key: "waitForIframes",
+ value: function waitForIframes(ctx, done) {
+ var _this2 = this;
+ var eachCalled = 0;
+ this.forEachIframe(ctx, function() {
+ return true;
+ }, function(ifr) {
+ eachCalled++;
+ _this2.waitForIframes(ifr.querySelector("html"), function() {
+ if (!--eachCalled) {
+ done();
+ }
+ });
+ }, function(handled) {
+ if (!handled) {
+ done();
+ }
+ });
+ }
+ }, {
+ key: "forEachIframe",
+ value: function forEachIframe(ctx, filter, each) {
+ var _this3 = this;
+ var end = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() {
+ };
+ var ifr = ctx.querySelectorAll("iframe"), open = ifr.length, handled = 0;
+ ifr = Array.prototype.slice.call(ifr);
+ var checkEnd = function checkEnd2() {
+ if (--open <= 0) {
+ end(handled);
+ }
+ };
+ if (!open) {
+ checkEnd();
+ }
+ ifr.forEach(function(ifr2) {
+ if (DOMIterator2.matches(ifr2, _this3.exclude)) {
+ checkEnd();
+ } else {
+ _this3.onIframeReady(ifr2, function(con) {
+ if (filter(ifr2)) {
+ handled++;
+ each(con);
+ }
+ checkEnd();
+ }, checkEnd);
+ }
+ });
+ }
+ }, {
+ key: "createIterator",
+ value: function createIterator(ctx, whatToShow, filter) {
+ return document.createNodeIterator(ctx, whatToShow, filter, false);
+ }
+ }, {
+ key: "createInstanceOnIframe",
+ value: function createInstanceOnIframe(contents) {
+ return new DOMIterator2(contents.querySelector("html"), this.iframes);
+ }
+ }, {
+ key: "compareNodeIframe",
+ value: function compareNodeIframe(node, prevNode, ifr) {
+ var compCurr = node.compareDocumentPosition(ifr), prev = Node.DOCUMENT_POSITION_PRECEDING;
+ if (compCurr & prev) {
+ if (prevNode !== null) {
+ var compPrev = prevNode.compareDocumentPosition(ifr), after = Node.DOCUMENT_POSITION_FOLLOWING;
+ if (compPrev & after) {
+ return true;
+ }
+ } else {
+ return true;
+ }
+ }
+ return false;
+ }
+ }, {
+ key: "getIteratorNode",
+ value: function getIteratorNode(itr) {
+ var prevNode = itr.previousNode();
+ var node = void 0;
+ if (prevNode === null) {
+ node = itr.nextNode();
+ } else {
+ node = itr.nextNode() && itr.nextNode();
+ }
+ return {
+ prevNode,
+ node
+ };
+ }
+ }, {
+ key: "checkIframeFilter",
+ value: function checkIframeFilter(node, prevNode, currIfr, ifr) {
+ var key = false, handled = false;
+ ifr.forEach(function(ifrDict, i) {
+ if (ifrDict.val === currIfr) {
+ key = i;
+ handled = ifrDict.handled;
+ }
+ });
+ if (this.compareNodeIframe(node, prevNode, currIfr)) {
+ if (key === false && !handled) {
+ ifr.push({
+ val: currIfr,
+ handled: true
+ });
+ } else if (key !== false && !handled) {
+ ifr[key].handled = true;
+ }
+ return true;
+ }
+ if (key === false) {
+ ifr.push({
+ val: currIfr,
+ handled: false
+ });
+ }
+ return false;
+ }
+ }, {
+ key: "handleOpenIframes",
+ value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) {
+ var _this4 = this;
+ ifr.forEach(function(ifrDict) {
+ if (!ifrDict.handled) {
+ _this4.getIframeContents(ifrDict.val, function(con) {
+ _this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb);
+ });
+ }
+ });
+ }
+ }, {
+ key: "iterateThroughNodes",
+ value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) {
+ var _this5 = this;
+ var itr = this.createIterator(ctx, whatToShow, filterCb);
+ var ifr = [], elements = [], node = void 0, prevNode = void 0, retrieveNodes = function retrieveNodes2() {
+ var _getIteratorNode = _this5.getIteratorNode(itr);
+ prevNode = _getIteratorNode.prevNode;
+ node = _getIteratorNode.node;
+ return node;
+ };
+ while (retrieveNodes()) {
+ if (this.iframes) {
+ this.forEachIframe(ctx, function(currIfr) {
+ return _this5.checkIframeFilter(node, prevNode, currIfr, ifr);
+ }, function(con) {
+ _this5.createInstanceOnIframe(con).forEachNode(whatToShow, function(ifrNode) {
+ return elements.push(ifrNode);
+ }, filterCb);
+ });
+ }
+ elements.push(node);
+ }
+ elements.forEach(function(node2) {
+ eachCb(node2);
+ });
+ if (this.iframes) {
+ this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb);
+ }
+ doneCb();
+ }
+ }, {
+ key: "forEachNode",
+ value: function forEachNode(whatToShow, each, filter) {
+ var _this6 = this;
+ var done = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() {
+ };
+ var contexts = this.getContexts();
+ var open = contexts.length;
+ if (!open) {
+ done();
+ }
+ contexts.forEach(function(ctx) {
+ var ready = function ready2() {
+ _this6.iterateThroughNodes(whatToShow, ctx, each, filter, function() {
+ if (--open <= 0) {
+ done();
+ }
+ });
+ };
+ if (_this6.iframes) {
+ _this6.waitForIframes(ctx, ready);
+ } else {
+ ready();
+ }
+ });
+ }
+ }], [{
+ key: "matches",
+ value: function matches(element, selector) {
+ var selectors = typeof selector === "string" ? [selector] : selector, fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector;
+ if (fn) {
+ var match = false;
+ selectors.every(function(sel) {
+ if (fn.call(element, sel)) {
+ match = true;
+ return false;
+ }
+ return true;
+ });
+ return match;
+ } else {
+ return false;
+ }
+ }
+ }]);
+ return DOMIterator2;
+ }();
+ var Mark$1 = function() {
+ function Mark3(ctx) {
+ classCallCheck(this, Mark3);
+ this.ctx = ctx;
+ this.ie = false;
+ var ua = window.navigator.userAgent;
+ if (ua.indexOf("MSIE") > -1 || ua.indexOf("Trident") > -1) {
+ this.ie = true;
+ }
+ }
+ createClass(Mark3, [{
+ key: "log",
+ value: function log(msg) {
+ var level = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "debug";
+ var log2 = this.opt.log;
+ if (!this.opt.debug) {
+ return;
+ }
+ if ((typeof log2 === "undefined" ? "undefined" : _typeof(log2)) === "object" && typeof log2[level] === "function") {
+ log2[level]("mark.js: " + msg);
+ }
+ }
+ }, {
+ key: "escapeStr",
+ value: function escapeStr(str) {
+ return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
+ }
+ }, {
+ key: "createRegExp",
+ value: function createRegExp(str) {
+ if (this.opt.wildcards !== "disabled") {
+ str = this.setupWildcardsRegExp(str);
+ }
+ str = this.escapeStr(str);
+ if (Object.keys(this.opt.synonyms).length) {
+ str = this.createSynonymsRegExp(str);
+ }
+ if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
+ str = this.setupIgnoreJoinersRegExp(str);
+ }
+ if (this.opt.diacritics) {
+ str = this.createDiacriticsRegExp(str);
+ }
+ str = this.createMergedBlanksRegExp(str);
+ if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
+ str = this.createJoinersRegExp(str);
+ }
+ if (this.opt.wildcards !== "disabled") {
+ str = this.createWildcardsRegExp(str);
+ }
+ str = this.createAccuracyRegExp(str);
+ return str;
+ }
+ }, {
+ key: "createSynonymsRegExp",
+ value: function createSynonymsRegExp(str) {
+ var syn = this.opt.synonyms, sens = this.opt.caseSensitive ? "" : "i", joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? "\0" : "";
+ for (var index in syn) {
+ if (syn.hasOwnProperty(index)) {
+ var value = syn[index], k1 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(index) : this.escapeStr(index), k2 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(value) : this.escapeStr(value);
+ if (k1 !== "" && k2 !== "") {
+ str = str.replace(new RegExp("(" + this.escapeStr(k1) + "|" + this.escapeStr(k2) + ")", "gm" + sens), joinerPlaceholder + ("(" + this.processSynomyms(k1) + "|") + (this.processSynomyms(k2) + ")") + joinerPlaceholder);
+ }
+ }
+ }
+ return str;
+ }
+ }, {
+ key: "processSynomyms",
+ value: function processSynomyms(str) {
+ if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
+ str = this.setupIgnoreJoinersRegExp(str);
+ }
+ return str;
+ }
+ }, {
+ key: "setupWildcardsRegExp",
+ value: function setupWildcardsRegExp(str) {
+ str = str.replace(/(?:\\)*\?/g, function(val) {
+ return val.charAt(0) === "\\" ? "?" : "";
+ });
+ return str.replace(/(?:\\)*\*/g, function(val) {
+ return val.charAt(0) === "\\" ? "*" : "";
+ });
+ }
+ }, {
+ key: "createWildcardsRegExp",
+ value: function createWildcardsRegExp(str) {
+ var spaces = this.opt.wildcards === "withSpaces";
+ return str.replace(/\u0001/g, spaces ? "[\\S\\s]?" : "\\S?").replace(/\u0002/g, spaces ? "[\\S\\s]*?" : "\\S*");
+ }
+ }, {
+ key: "setupIgnoreJoinersRegExp",
+ value: function setupIgnoreJoinersRegExp(str) {
+ return str.replace(/[^(|)\\]/g, function(val, indx, original) {
+ var nextChar = original.charAt(indx + 1);
+ if (/[(|)\\]/.test(nextChar) || nextChar === "") {
+ return val;
+ } else {
+ return val + "\0";
+ }
+ });
+ }
+ }, {
+ key: "createJoinersRegExp",
+ value: function createJoinersRegExp(str) {
+ var joiner = [];
+ var ignorePunctuation = this.opt.ignorePunctuation;
+ if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) {
+ joiner.push(this.escapeStr(ignorePunctuation.join("")));
+ }
+ if (this.opt.ignoreJoiners) {
+ joiner.push("\\u00ad\\u200b\\u200c\\u200d");
+ }
+ return joiner.length ? str.split(/\u0000+/).join("[" + joiner.join("") + "]*") : str;
+ }
+ }, {
+ key: "createDiacriticsRegExp",
+ value: function createDiacriticsRegExp(str) {
+ var sens = this.opt.caseSensitive ? "" : "i", dct = this.opt.caseSensitive ? ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105", "A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010D", "C\xC7\u0106\u010C", "d\u0111\u010F", "D\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119", " [...]
+ var handled = [];
+ str.split("").forEach(function(ch) {
+ dct.every(function(dct2) {
+ if (dct2.indexOf(ch) !== -1) {
+ if (handled.indexOf(dct2) > -1) {
+ return false;
+ }
+ str = str.replace(new RegExp("[" + dct2 + "]", "gm" + sens), "[" + dct2 + "]");
+ handled.push(dct2);
+ }
+ return true;
+ });
+ });
+ return str;
+ }
+ }, {
+ key: "createMergedBlanksRegExp",
+ value: function createMergedBlanksRegExp(str) {
+ return str.replace(/[\s]+/gmi, "[\\s]+");
+ }
+ }, {
+ key: "createAccuracyRegExp",
+ value: function createAccuracyRegExp(str) {
+ var _this = this;
+ var chars = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF";
+ var acc = this.opt.accuracy, val = typeof acc === "string" ? acc : acc.value, ls = typeof acc === "string" ? [] : acc.limiters, lsJoin = "";
+ ls.forEach(function(limiter) {
+ lsJoin += "|" + _this.escapeStr(limiter);
+ });
+ switch (val) {
+ case "partially":
+ default:
+ return "()(" + str + ")";
+ case "complementary":
+ lsJoin = "\\s" + (lsJoin ? lsJoin : this.escapeStr(chars));
+ return "()([^" + lsJoin + "]*" + str + "[^" + lsJoin + "]*)";
+ case "exactly":
+ return "(^|\\s" + lsJoin + ")(" + str + ")(?=$|\\s" + lsJoin + ")";
+ }
+ }
+ }, {
+ key: "getSeparatedKeywords",
+ value: function getSeparatedKeywords(sv) {
+ var _this2 = this;
+ var stack = [];
+ sv.forEach(function(kw) {
+ if (!_this2.opt.separateWordSearch) {
+ if (kw.trim() && stack.indexOf(kw) === -1) {
+ stack.push(kw);
+ }
+ } else {
+ kw.split(" ").forEach(function(kwSplitted) {
+ if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) {
+ stack.push(kwSplitted);
+ }
+ });
+ }
+ });
+ return {
+ "keywords": stack.sort(function(a, b) {
+ return b.length - a.length;
+ }),
+ "length": stack.length
+ };
+ }
+ }, {
+ key: "isNumeric",
+ value: function isNumeric(value) {
+ return Number(parseFloat(value)) == value;
+ }
+ }, {
+ key: "checkRanges",
+ value: function checkRanges(array) {
+ var _this3 = this;
+ if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== "[object Object]") {
+ this.log("markRanges() will only accept an array of objects");
+ this.opt.noMatch(array);
+ return [];
+ }
+ var stack = [];
+ var last = 0;
+ array.sort(function(a, b) {
+ return a.start - b.start;
+ }).forEach(function(item) {
+ var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last), start = _callNoMatchOnInvalid.start, end = _callNoMatchOnInvalid.end, valid = _callNoMatchOnInvalid.valid;
+ if (valid) {
+ item.start = start;
+ item.length = end - start;
+ stack.push(item);
+ last = end;
+ }
+ });
+ return stack;
+ }
+ }, {
+ key: "callNoMatchOnInvalidRanges",
+ value: function callNoMatchOnInvalidRanges(range, last) {
+ var start = void 0, end = void 0, valid = false;
+ if (range && typeof range.start !== "undefined") {
+ start = parseInt(range.start, 10);
+ end = start + parseInt(range.length, 10);
+ if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) {
+ valid = true;
+ } else {
+ this.log("Ignoring invalid or overlapping range: " + ("" + JSON.stringify(range)));
+ this.opt.noMatch(range);
+ }
+ } else {
+ this.log("Ignoring invalid range: " + JSON.stringify(range));
+ this.opt.noMatch(range);
+ }
+ return {
+ start,
+ end,
+ valid
+ };
+ }
+ }, {
+ key: "checkWhitespaceRanges",
+ value: function checkWhitespaceRanges(range, originalLength, string) {
+ var end = void 0, valid = true, max = string.length, offset = originalLength - max, start = parseInt(range.start, 10) - offset;
+ start = start > max ? max : start;
+ end = start + parseInt(range.length, 10);
+ if (end > max) {
+ end = max;
+ this.log("End range automatically set to the max value of " + max);
+ }
+ if (start < 0 || end - start < 0 || start > max || end > max) {
+ valid = false;
+ this.log("Invalid range: " + JSON.stringify(range));
+ this.opt.noMatch(range);
+ } else if (string.substring(start, end).replace(/\s+/g, "") === "") {
+ valid = false;
+ this.log("Skipping whitespace only range: " + JSON.stringify(range));
+ this.opt.noMatch(range);
+ }
+ return {
+ start,
+ end,
+ valid
+ };
+ }
+ }, {
+ key: "getTextNodes",
+ value: function getTextNodes(cb) {
+ var _this4 = this;
+ var val = "", nodes = [];
+ this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function(node) {
+ nodes.push({
+ start: val.length,
+ end: (val += node.textContent).length,
+ node
+ });
+ }, function(node) {
+ if (_this4.matchesExclude(node.parentNode)) {
+ return NodeFilter.FILTER_REJECT;
+ } else {
+ return NodeFilter.FILTER_ACCEPT;
+ }
+ }, function() {
+ cb({
+ value: val,
+ nodes
+ });
+ });
+ }
+ }, {
+ key: "matchesExclude",
+ value: function matchesExclude(el) {
+ return DOMIterator.matches(el, this.opt.exclude.concat(["script", "style", "title", "head", "html"]));
+ }
+ }, {
+ key: "wrapRangeInTextNode",
+ value: function wrapRangeInTextNode(node, start, end) {
+ var hEl = !this.opt.element ? "mark" : this.opt.element, startNode = node.splitText(start), ret = startNode.splitText(end - start);
+ var repl = document.createElement(hEl);
+ repl.setAttribute("data-markjs", "true");
+ if (this.opt.className) {
+ repl.setAttribute("class", this.opt.className);
+ }
+ repl.textContent = startNode.textContent;
+ startNode.parentNode.replaceChild(repl, startNode);
+ return ret;
+ }
+ }, {
+ key: "wrapRangeInMappedTextNode",
+ value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {
+ var _this5 = this;
+ dict.nodes.every(function(n, i) {
+ var sibl = dict.nodes[i + 1];
+ if (typeof sibl === "undefined" || sibl.start > start) {
+ if (!filterCb(n.node)) {
+ return false;
+ }
+ var s = start - n.start, e = (end > n.end ? n.end : end) - n.start, startStr = dict.value.substr(0, n.start), endStr = dict.value.substr(e + n.start);
+ n.node = _this5.wrapRangeInTextNode(n.node, s, e);
+ dict.value = startStr + endStr;
+ dict.nodes.forEach(function(k, j) {
+ if (j >= i) {
+ if (dict.nodes[j].start > 0 && j !== i) {
+ dict.nodes[j].start -= e;
+ }
+ dict.nodes[j].end -= e;
+ }
+ });
+ end -= e;
+ eachCb(n.node.previousSibling, n.start);
+ if (end > n.end) {
+ start = n.end;
+ } else {
+ return false;
+ }
+ }
+ return true;
+ });
+ }
+ }, {
+ key: "wrapMatches",
+ value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) {
+ var _this6 = this;
+ var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
+ this.getTextNodes(function(dict) {
+ dict.nodes.forEach(function(node) {
+ node = node.node;
+ var match = void 0;
+ while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== "") {
+ if (!filterCb(match[matchIdx], node)) {
+ continue;
+ }
+ var pos = match.index;
+ if (matchIdx !== 0) {
+ for (var i = 1; i < matchIdx; i++) {
+ pos += match[i].length;
+ }
+ }
+ node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length);
+ eachCb(node.previousSibling);
+ regex.lastIndex = 0;
+ }
+ });
+ endCb();
+ });
+ }
+ }, {
+ key: "wrapMatchesAcrossElements",
+ value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {
+ var _this7 = this;
+ var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
+ this.getTextNodes(function(dict) {
+ var match = void 0;
+ while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== "") {
+ var start = match.index;
+ if (matchIdx !== 0) {
+ for (var i = 1; i < matchIdx; i++) {
+ start += match[i].length;
+ }
+ }
+ var end = start + match[matchIdx].length;
+ _this7.wrapRangeInMappedTextNode(dict, start, end, function(node) {
+ return filterCb(match[matchIdx], node);
+ }, function(node, lastIndex) {
+ regex.lastIndex = lastIndex;
+ eachCb(node);
+ });
+ }
+ endCb();
+ });
+ }
+ }, {
+ key: "wrapRangeFromIndex",
+ value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) {
+ var _this8 = this;
+ this.getTextNodes(function(dict) {
+ var originalLength = dict.value.length;
+ ranges.forEach(function(range, counter) {
+ var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value), start = _checkWhitespaceRange.start, end = _checkWhitespaceRange.end, valid = _checkWhitespaceRange.valid;
+ if (valid) {
+ _this8.wrapRangeInMappedTextNode(dict, start, end, function(node) {
+ return filterCb(node, range, dict.value.substring(start, end), counter);
+ }, function(node) {
+ eachCb(node, range);
+ });
+ }
+ });
+ endCb();
+ });
+ }
+ }, {
+ key: "unwrapMatches",
+ value: function unwrapMatches(node) {
+ var parent = node.parentNode;
+ var docFrag = document.createDocumentFragment();
+ while (node.firstChild) {
+ docFrag.appendChild(node.removeChild(node.firstChild));
+ }
+ parent.replaceChild(docFrag, node);
+ if (!this.ie) {
+ parent.normalize();
+ } else {
+ this.normalizeTextNode(parent);
+ }
+ }
+ }, {
+ key: "normalizeTextNode",
+ value: function normalizeTextNode(node) {
+ if (!node) {
+ return;
+ }
+ if (node.nodeType === 3) {
+ while (node.nextSibling && node.nextSibling.nodeType === 3) {
+ node.nodeValue += node.nextSibling.nodeValue;
+ node.parentNode.removeChild(node.nextSibling);
+ }
+ } else {
+ this.normalizeTextNode(node.firstChild);
+ }
+ this.normalizeTextNode(node.nextSibling);
+ }
+ }, {
+ key: "markRegExp",
+ value: function markRegExp(regexp, opt) {
+ var _this9 = this;
+ this.opt = opt;
+ this.log('Searching with expression "' + regexp + '"');
+ var totalMatches = 0, fn = "wrapMatches";
+ var eachCb = function eachCb2(element) {
+ totalMatches++;
+ _this9.opt.each(element);
+ };
+ if (this.opt.acrossElements) {
+ fn = "wrapMatchesAcrossElements";
+ }
+ this[fn](regexp, this.opt.ignoreGroups, function(match, node) {
+ return _this9.opt.filter(node, match, totalMatches);
+ }, eachCb, function() {
+ if (totalMatches === 0) {
+ _this9.opt.noMatch(regexp);
+ }
+ _this9.opt.done(totalMatches);
+ });
+ }
+ }, {
+ key: "mark",
+ value: function mark(sv, opt) {
+ var _this10 = this;
+ this.opt = opt;
+ var totalMatches = 0, fn = "wrapMatches";
+ var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === "string" ? [sv] : sv), kwArr = _getSeparatedKeywords.keywords, kwArrLen = _getSeparatedKeywords.length, sens = this.opt.caseSensitive ? "" : "i", handler = function handler2(kw) {
+ var regex = new RegExp(_this10.createRegExp(kw), "gm" + sens), matches = 0;
+ _this10.log('Searching with expression "' + regex + '"');
+ _this10[fn](regex, 1, function(term, node) {
+ return _this10.opt.filter(node, kw, totalMatches, matches);
+ }, function(element) {
+ matches++;
+ totalMatches++;
+ _this10.opt.each(element);
+ }, function() {
+ if (matches === 0) {
+ _this10.opt.noMatch(kw);
+ }
+ if (kwArr[kwArrLen - 1] === kw) {
+ _this10.opt.done(totalMatches);
+ } else {
+ handler2(kwArr[kwArr.indexOf(kw) + 1]);
+ }
+ });
+ };
+ if (this.opt.acrossElements) {
+ fn = "wrapMatchesAcrossElements";
+ }
+ if (kwArrLen === 0) {
+ this.opt.done(totalMatches);
+ } else {
+ handler(kwArr[0]);
+ }
+ }
+ }, {
+ key: "markRanges",
+ value: function markRanges(rawRanges, opt) {
+ var _this11 = this;
+ this.opt = opt;
+ var totalMatches = 0, ranges = this.checkRanges(rawRanges);
+ if (ranges && ranges.length) {
+ this.log("Starting to mark with the following ranges: " + JSON.stringify(ranges));
+ this.wrapRangeFromIndex(ranges, function(node, range, match, counter) {
+ return _this11.opt.filter(node, range, match, counter);
+ }, function(element, range) {
+ totalMatches++;
+ _this11.opt.each(element, range);
+ }, function() {
+ _this11.opt.done(totalMatches);
+ });
+ } else {
+ this.opt.done(totalMatches);
+ }
+ }
+ }, {
+ key: "unmark",
+ value: function unmark(opt) {
+ var _this12 = this;
+ this.opt = opt;
+ var sel = this.opt.element ? this.opt.element : "*";
+ sel += "[data-markjs]";
+ if (this.opt.className) {
+ sel += "." + this.opt.className;
+ }
+ this.log('Removal selector "' + sel + '"');
+ this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function(node) {
+ _this12.unwrapMatches(node);
+ }, function(node) {
+ var matchesSel = DOMIterator.matches(node, sel), matchesExclude = _this12.matchesExclude(node);
+ if (!matchesSel || matchesExclude) {
+ return NodeFilter.FILTER_REJECT;
+ } else {
+ return NodeFilter.FILTER_ACCEPT;
+ }
+ }, this.opt.done);
+ }
+ }, {
+ key: "opt",
+ set: function set$$1(val) {
+ this._opt = _extends({}, {
+ "element": "",
+ "className": "",
+ "exclude": [],
+ "iframes": false,
+ "iframesTimeout": 5e3,
+ "separateWordSearch": true,
+ "diacritics": true,
+ "synonyms": {},
+ "accuracy": "partially",
+ "acrossElements": false,
+ "caseSensitive": false,
+ "ignoreJoiners": false,
+ "ignoreGroups": 0,
+ "ignorePunctuation": [],
+ "wildcards": "disabled",
+ "each": function each() {
+ },
+ "noMatch": function noMatch() {
+ },
+ "filter": function filter() {
+ return true;
+ },
+ "done": function done() {
+ },
+ "debug": false,
+ "log": window.console
+ }, val);
+ },
+ get: function get$$1() {
+ return this._opt;
+ }
+ }, {
+ key: "iterator",
+ get: function get$$1() {
+ return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout);
+ }
+ }]);
+ return Mark3;
+ }();
+ function Mark2(ctx) {
+ var _this = this;
+ var instance = new Mark$1(ctx);
+ this.mark = function(sv, opt) {
+ instance.mark(sv, opt);
+ return _this;
+ };
+ this.markRegExp = function(sv, opt) {
+ instance.markRegExp(sv, opt);
+ return _this;
+ };
+ this.markRanges = function(sv, opt) {
+ instance.markRanges(sv, opt);
+ return _this;
+ };
+ this.unmark = function(opt) {
+ instance.unmark(opt);
+ return _this;
+ };
+ return this;
+ }
+ return Mark2;
+ });
+ }
+});
+
+// lib/highlight.ts
+var import_mark = __toESM(require_mark(), 1);
+var PagefindHighlight = class {
+ constructor(options = {
+ markContext: null,
+ highlightParam: "pagefind-highlight",
+ markOptions: {
+ className: "pagefind-highlight",
+ exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"]
+ },
+ addStyles: true
+ }) {
+ var _a, _b;
+ const { highlightParam, markContext, markOptions, addStyles } = options;
+ this.highlightParam = highlightParam ?? "pagefind-highlight";
+ this.addStyles = addStyles ?? true;
+ this.markContext = markContext !== void 0 ? markContext : null;
+ this.markOptions = markOptions !== void 0 ? markOptions : {
+ className: "pagefind-highlight",
+ exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"]
+ };
+ (_a = this.markOptions).className ?? (_a.className = "pagefind__highlight");
+ (_b = this.markOptions).exclude ?? (_b.exclude = [
+ "[data-pagefind-ignore]",
+ "[data-pagefind-ignore] *"
+ ]);
+ this.markOptions.separateWordSearch = false;
+ this.highlight();
+ }
+ getHighlightParams(paramName) {
+ const urlParams = new URLSearchParams(window.location.search);
+ return urlParams.getAll(paramName);
+ }
+ // Inline styles might be too hard to override
+ addHighlightStyles(className) {
+ if (!className)
+ return;
+ const styleElement = document.createElement("style");
+ styleElement.innerText = `:where(.${className}) { background-color: yellow; color: black; }`;
+ document.head.appendChild(styleElement);
+ }
+ createMarkInstance() {
+ if (this.markContext) {
+ return new import_mark.default(this.markContext);
+ }
+ const pagefindBody = document.querySelectorAll("[data-pagefind-body]");
+ if (pagefindBody.length !== 0) {
+ return new import_mark.default(pagefindBody);
+ } else {
+ return new import_mark.default(document.body);
+ }
+ }
+ markText(instance, text) {
+ instance.mark(text, this.markOptions);
+ }
+ highlight() {
+ const params = this.getHighlightParams(this.highlightParam);
+ if (!params || params.length === 0)
+ return;
+ this.addStyles && this.addHighlightStyles(this.markOptions.className);
+ const markInstance = this.createMarkInstance();
+ this.markText(markInstance, params);
+ }
+};
+window.PagefindHighlight = PagefindHighlight;
+export {
+ PagefindHighlight as default
+};
+/*! Bundled license information:
+
+mark.js/dist/mark.js:
+ (*!***************************************************
+ * mark.js v8.11.1
+ * https://markjs.io/
+ * Copyright (c) 2014–2018, Julian Kühnel
+ * Released under the MIT license https://git.io/vwTVl
+ *****************************************************)
+*/
diff --git a/output/_pagefind/pagefind-modular-ui.css b/output/_pagefind/pagefind-modular-ui.css
new file mode 100644
index 0000000..9c6793e
--- /dev/null
+++ b/output/_pagefind/pagefind-modular-ui.css
@@ -0,0 +1,214 @@
+:root {
+ --pagefind-ui-scale: 0.8;
+ --pagefind-ui-primary: #034AD8;
+ --pagefind-ui-fade: #707070;
+ --pagefind-ui-text: #393939;
+ --pagefind-ui-background: #ffffff;
+ --pagefind-ui-border: #eeeeee;
+ --pagefind-ui-tag: #eeeeee;
+ --pagefind-ui-border-width: 2px;
+ --pagefind-ui-border-radius: 8px;
+ --pagefind-ui-image-border-radius: 8px;
+ --pagefind-ui-image-box-ratio: 3 / 2;
+ --pagefind-ui-font: system, -apple-system, ".SFNSText-Regular",
+ "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue",
+ "Lucida Grande", sans-serif;
+}
+
+[data-pfmod-hidden] {
+ display: none !important;
+}
+
+[data-pfmod-suppressed] {
+ opacity: 0 !important;
+ pointer-events: none !important;
+}
+
+[data-pfmod-sr-hidden] {
+ -webkit-clip: rect(0 0 0 0) !important;
+ clip: rect(0 0 0 0) !important;
+ -webkit-clip-path: inset(100%) !important;
+ clip-path: inset(100%) !important;
+ height: 1px !important;
+ overflow: hidden !important;
+ overflow: clip !important;
+ position: absolute !important;
+ white-space: nowrap !important;
+ width: 1px !important;
+}
+
+[data-pfmod-loading] {
+ color: var(--pagefind-ui-text);
+ background-color: var(--pagefind-ui-text);
+ border-radius: var(--pagefind-ui-border-radius);
+ opacity: 0.1;
+ pointer-events: none;
+}
+
+/* Input */
+
+.pagefind-modular-input-wrapper {
+ position: relative;
+}
+
+.pagefind-modular-input-wrapper::before {
+ background-color: var(--pagefind-ui-text);
+ width: calc(18px * var(--pagefind-ui-scale));
+ height: calc(18px * var(--pagefind-ui-scale));
+ top: calc(23px * var(--pagefind-ui-scale));
+ left: calc(20px * var(--pagefind-ui-scale));
+ content: "";
+ position: absolute;
+ display: block;
+ opacity: 0.7;
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255Z [...]
+ mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 [...]
+ -webkit-mask-size: 100%;
+ mask-size: 100%;
+ z-index: 9;
+ pointer-events: none;
+}
+
+.pagefind-modular-input {
+ height: calc(64px * var(--pagefind-ui-scale));
+ padding: 0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale));
+ background-color: var(--pagefind-ui-background);
+ border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);
+ border-radius: var(--pagefind-ui-border-radius);
+ font-size: calc(21px * var(--pagefind-ui-scale));
+ position: relative;
+ appearance: none;
+ -webkit-appearance: none;
+ display: flex;
+ width: 100%;
+ box-sizing: border-box;
+ font-weight: 700;
+}
+
+.pagefind-modular-input::placeholder {
+ opacity: 0.2;
+}
+
+.pagefind-modular-input-clear {
+ position: absolute;
+ top: calc(2px * var(--pagefind-ui-scale));
+ right: calc(2px * var(--pagefind-ui-scale));
+ height: calc(60px * var(--pagefind-ui-scale));
+ border-radius: var(--pagefind-ui-border-radius);
+ padding: 0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale));
+ color: var(--pagefind-ui-text);
+ font-size: calc(14px * var(--pagefind-ui-scale));
+ cursor: pointer;
+ background-color: var(--pagefind-ui-background);
+ border: none;
+ appearance: none;
+}
+
+/* ResultList */
+
+.pagefind-modular-list-result {
+ list-style-type: none;
+ display: flex;
+ align-items: flex-start;
+ gap: min(calc(40px * var(--pagefind-ui-scale)), 3%);
+ padding: calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));
+ border-top: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border);
+}
+
+.pagefind-modular-list-result:last-of-type {
+ border-bottom: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border);
+}
+
+.pagefind-modular-list-thumb {
+ width: min(30%,
+ calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));
+ max-width: calc(120px * var(--pagefind-ui-scale));
+ margin-top: calc(10px * var(--pagefind-ui-scale));
+ aspect-ratio: var(--pagefind-ui-image-box-ratio);
+ position: relative;
+}
+
+.pagefind-modular-list-image {
+ display: block;
+ position: absolute;
+ left: 50%;
+ transform: translateX(-50%);
+ font-size: 0;
+ width: auto;
+ height: auto;
+ max-width: 100%;
+ max-height: 100%;
+ border-radius: var(--pagefind-ui-image-border-radius);
+}
+
+.pagefind-modular-list-inner {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ margin-top: calc(10px * var(--pagefind-ui-scale));
+}
+
+.pagefind-modular-list-title {
+ display: inline-block;
+ font-weight: 700;
+ font-size: calc(21px * var(--pagefind-ui-scale));
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+.pagefind-modular-list-link {
+ color: var(--pagefind-ui-text);
+ text-decoration: none;
+}
+
+.pagefind-modular-list-link:hover {
+ text-decoration: underline;
+}
+
+.pagefind-modular-list-excerpt {
+ display: inline-block;
+ font-weight: 400;
+ font-size: calc(16px * var(--pagefind-ui-scale));
+ margin-top: calc(4px * var(--pagefind-ui-scale));
+ margin-bottom: 0;
+ min-width: calc(250px * var(--pagefind-ui-scale));
+}
+
+/* FilterPills */
+
+.pagefind-modular-filter-pills-wrapper {
+ overflow-x: scroll;
+ padding: 15px 0;
+}
+
+.pagefind-modular-filter-pills {
+ display: flex;
+ gap: 6px;
+}
+
+.pagefind-modular-filter-pill {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border: none;
+ appearance: none;
+ padding: 0 calc(24px * var(--pagefind-ui-scale));
+ background-color: var(--pagefind-ui-background);
+ color: var(--pagefind-ui-fade);
+ border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);
+ border-radius: calc(25px * var(--pagefind-ui-scale));
+ font-size: calc(18px * var(--pagefind-ui-scale));
+ height: calc(50px * var(--pagefind-ui-scale));
+ cursor: pointer;
+ white-space: nowrap;
+}
+
+.pagefind-modular-filter-pill:hover {
+ border-color: var(--pagefind-ui-primary);
+}
+
+.pagefind-modular-filter-pill[aria-pressed="true"] {
+ border-color: var(--pagefind-ui-primary);
+ color: var(--pagefind-ui-primary);
+}
\ No newline at end of file
diff --git a/output/_pagefind/pagefind-modular-ui.js b/output/_pagefind/pagefind-modular-ui.js
new file mode 100644
index 0000000..43f738f
--- /dev/null
+++ b/output/_pagefind/pagefind-modular-ui.js
@@ -0,0 +1,8 @@
+(()=>{var b=Object.defineProperty;var w=(i,e)=>{for(var t in e)b(i,t,{get:e[t],enumerable:!0})};var f={};w(f,{FilterPills:()=>h,Input:()=>l,Instance:()=>p,ResultList:()=>a,Summary:()=>o});var r=class i{constructor(e){this.element=document.createElement(e)}id(e){return this.element.id=e,this}class(e){return this.element.classList.add(e),this}attrs(e){for(let[t,s]of Object.entries(e))this.element.setAttribute(t,s);return this}text(e){return this.element.innerText=e,this}html(e){return this [...]
+ <div class="pagefind-modular-list-thumb" data-pfmod-loading></div>
+ <div class="pagefind-modular-list-inner">
+ <p class="pagefind-modular-list-title" data-pfmod-loading>${i(30)}</p>
+ <p class="pagefind-modular-list-excerpt" data-pfmod-loading>${i(40)}</p>
+ </div>
+</li>`},y=i=>{let e=new r("li").class("pagefind-modular-list-result"),t=new r("div").class("pagefind-modular-list-thumb").addTo(e);i?.meta?.image&&new r("img").class("pagefind-modular-list-image").attrs({src:i.meta.image,alt:i.meta.image_alt||i.meta.title}).addTo(t);let s=new r("div").class("pagefind-modular-list-inner").addTo(e),n=new r("p").class("pagefind-modular-list-title").addTo(s);return new r("a").class("pagefind-modular-list-link").text(i.meta?.title).attrs({href:i.meta?.url||i. [...]
+`)),document?.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?console.error(`[DEBUG: Loaded from ${document.currentScript?.src??"bad script location"}]`):console.error("no known script location")}await e.options(this.pagefindOptions||{});for(let t of this.options.mergeIndex){if(!t.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let s=t.bundlePath;delete t.bundlePath,await e.mergeIndex(s,t)}this.__pagefind__=e}this.availableFilters=await thi [...]
diff --git a/output/_pagefind/pagefind-ui.css b/output/_pagefind/pagefind-ui.css
new file mode 100644
index 0000000..d7984a9
--- /dev/null
+++ b/output/_pagefind/pagefind-ui.css
@@ -0,0 +1 @@
+.pagefind-ui__result.svelte-j9e30.svelte-j9e30{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-j9e30.svelte-j9e30:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-thumb.svelte-j9e30 [...]
diff --git a/output/_pagefind/pagefind-ui.js b/output/_pagefind/pagefind-ui.js
new file mode 100644
index 0000000..d88ad59
--- /dev/null
+++ b/output/_pagefind/pagefind-ui.js
@@ -0,0 +1,2 @@
+(()=>{var Ms=Object.defineProperty;var y=(n,e)=>{for(var t in e)Ms(n,t,{get:e[t],enumerable:!0})};function z(){}function mt(n){return n()}function gn(){return Object.create(null)}function G(n){n.forEach(mt)}function nt(n){return typeof n=="function"}function K(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}var et;function ie(n,e){return et||(et=document.createElement("a")),et.href=e,n===et.href}function En(n){return Object.keys(n).length===0}var Rn=typeof window [...]
+`)),document?.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?console.error(`[DEBUG: Loaded from ${document.currentScript.src??"bad script location"}]`):console.error("no known script location")}u||t(24,u=f?12:30);let F={...d||{},excerptLength:u};await E.options(F);for(let j of T){if(!j.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let L=j.bundlePath;delete j.bundlePath,await E.mergeIndex(L,j)}H=E,hs()}},hs=async()=>{H&&(dn=await H.filter [...]
diff --git a/output/_pagefind/pagefind.en_b399900225.pf_meta b/output/_pagefind/pagefind.en_b399900225.pf_meta
new file mode 100644
index 0000000..3743782
Binary files /dev/null and b/output/_pagefind/pagefind.en_b399900225.pf_meta differ
diff --git a/output/_pagefind/pagefind.js b/output/_pagefind/pagefind.js
new file mode 100644
index 0000000..035a438
--- /dev/null
+++ b/output/_pagefind/pagefind.js
@@ -0,0 +1,9 @@
+const pagefind_version="1.3.0";let wasm_bindgen;(function(){const __exports={};let script_src;if(typeof document!=='undefined'&&document.currentScript!==null){script_src=new URL("UNHANDLED",location.href).toString()}let wasm=undefined;let cachedUint8Memory0=null;function getUint8Memory0(){if(cachedUint8Memory0===null||cachedUint8Memory0.byteLength===0){cachedUint8Memory0=new Uint8Array(wasm.memory.buffer)}return cachedUint8Memory0}let WASM_VECTOR_LEN=0;function passArray8ToWasm0(arg,mall [...]
+${e?.toString()}`);throw new Error("Failed to load Pagefind metadata")}}findIndex(language){if(this.languages){let index=this.languages[language];if(index)return index;index=this.languages[language.split("-")[0]];if(index)return index;let topLang=Object.values(this.languages).sort((a,b)=>b.page_count-a.page_count);if(topLang[0])return topLang[0]}throw new Error("Pagefind Error: No language indexes found.")}async loadMeta(index){try{let compressed_resp=await fetch(`${this.basePath}pagefin [...]
+${e?.toString()}`)}}async loadWasm(language){try{const wasm_url=`${this.basePath}wasm.${language}.pagefind`;let compressed_resp=await fetch(wasm_url);let compressed_wasm=await compressed_resp.arrayBuffer();const final_wasm=this.decompress(new Uint8Array(compressed_wasm),"Pagefind WebAssembly");if(!final_wasm){throw new Error("No WASM after decompression")}this.wasm=await this.backend(final_wasm)}catch(e){console.error(`Failed to load the Pagefind WASM:
+${e?.toString()}`);throw new Error(`Failed to load the Pagefind WASM:
+${e?.toString()}`)}}async _loadGenericChunk(url,method){try{let compressed_resp=await fetch(url);let compressed_chunk=await compressed_resp.arrayBuffer();let chunk=this.decompress(new Uint8Array(compressed_chunk),url);let ptr=await this.getPtr();this.raw_ptr=this.backend[method](ptr,chunk)}catch(e){console.error(`Failed to load the index chunk ${url}:
+${e?.toString()}`)}}async loadChunk(hash){if(!this.loaded_chunks[hash]){const url=`${this.basePath}index/${hash}.pf_index`;this.loaded_chunks[hash]=this._loadGenericChunk(url,"load_index_chunk")}return await this.loaded_chunks[hash]}async loadFilterChunk(hash){if(!this.loaded_filters[hash]){const url=`${this.basePath}filter/${hash}.pf_filter`;this.loaded_filters[hash]=this._loadGenericChunk(url,"load_filter_chunk")}return await this.loaded_filters[hash]}async _loadFragment(hash){let comp [...]
+ hash:${hash}
+ score:${score}
+ locations:${all_locations}`);let weighted_locations=all_locations.length?all_locations.split(",").map((l)=>{let[weight,balanced_score,location]=l.split(">");return{weight:parseInt(weight)/24,balanced_score:parseFloat(balanced_score),location:parseInt(location)}}):[];let locations=weighted_locations.map((l)=>l.location);return{id:hash,score:parseFloat(score)*this.indexWeight,words:locations,data:async()=>await this.loadFragment(hash,weighted_locations,term)}});const searchTime=Date.now( [...]
\ No newline at end of file
diff --git a/output/_pagefind/wasm.en.pagefind b/output/_pagefind/wasm.en.pagefind
new file mode 100644
index 0000000..6a6c03e
Binary files /dev/null and b/output/_pagefind/wasm.en.pagefind differ
diff --git a/output/_pagefind/wasm.unknown.pagefind b/output/_pagefind/wasm.unknown.pagefind
new file mode 100644
index 0000000..c9b1460
Binary files /dev/null and b/output/_pagefind/wasm.unknown.pagefind differ
diff --git a/output/about/.DS_Store b/output/about/.DS_Store
new file mode 100644
index 0000000..4bbf3b0
Binary files /dev/null and b/output/about/.DS_Store differ
diff --git a/output/about/images/.DS_Store b/output/about/images/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/output/about/images/.DS_Store differ
diff --git a/output/about/images/1999.jpg b/output/about/images/1999.jpg
new file mode 100644
index 0000000..1302b47
Binary files /dev/null and b/output/about/images/1999.jpg differ
diff --git a/output/about/images/2000.webp b/output/about/images/2000.webp
new file mode 100644
index 0000000..fd8022a
Binary files /dev/null and b/output/about/images/2000.webp differ
diff --git a/output/about/images/2001-2002-option-2 1.webp b/output/about/images/2001-2002-option-2 1.webp
new file mode 100644
index 0000000..0dd2931
Binary files /dev/null and b/output/about/images/2001-2002-option-2 1.webp differ
diff --git a/output/about/images/2001-2002.webp b/output/about/images/2001-2002.webp
new file mode 100644
index 0000000..5b58f28
Binary files /dev/null and b/output/about/images/2001-2002.webp differ
diff --git a/output/about/images/2010s.webp b/output/about/images/2010s.webp
new file mode 100644
index 0000000..3123213
Binary files /dev/null and b/output/about/images/2010s.webp differ
diff --git a/output/about/images/2020-2.webp b/output/about/images/2020-2.webp
new file mode 100644
index 0000000..efc90e6
Binary files /dev/null and b/output/about/images/2020-2.webp differ
diff --git a/output/about/images/2020.webp b/output/about/images/2020.webp
new file mode 100644
index 0000000..b6a81ab
Binary files /dev/null and b/output/about/images/2020.webp differ
diff --git a/output/about/images/2021.webp b/output/about/images/2021.webp
new file mode 100644
index 0000000..9f081b7
Binary files /dev/null and b/output/about/images/2021.webp differ
diff --git a/output/about/images/2023.webp b/output/about/images/2023.webp
new file mode 100644
index 0000000..178b826
Binary files /dev/null and b/output/about/images/2023.webp differ
diff --git a/output/about/images/about-1.webp b/output/about/images/about-1.webp
new file mode 100644
index 0000000..4a0336e
Binary files /dev/null and b/output/about/images/about-1.webp differ
diff --git a/output/about/images/about-10.webp b/output/about/images/about-10.webp
new file mode 100644
index 0000000..8bbab0f
Binary files /dev/null and b/output/about/images/about-10.webp differ
diff --git a/output/about/images/about-11.webp b/output/about/images/about-11.webp
new file mode 100644
index 0000000..a36635a
Binary files /dev/null and b/output/about/images/about-11.webp differ
diff --git a/output/about/images/about-12.webp b/output/about/images/about-12.webp
new file mode 100644
index 0000000..96bd2d7
Binary files /dev/null and b/output/about/images/about-12.webp differ
diff --git a/output/about/images/about-2.webp b/output/about/images/about-2.webp
new file mode 100644
index 0000000..a6a2100
Binary files /dev/null and b/output/about/images/about-2.webp differ
diff --git a/output/about/images/about-3.webp b/output/about/images/about-3.webp
new file mode 100644
index 0000000..53a5941
Binary files /dev/null and b/output/about/images/about-3.webp differ
diff --git a/output/about/images/about-4.webp b/output/about/images/about-4.webp
new file mode 100644
index 0000000..bce5c82
Binary files /dev/null and b/output/about/images/about-4.webp differ
diff --git a/output/about/images/about-5.webp b/output/about/images/about-5.webp
new file mode 100644
index 0000000..58db65b
Binary files /dev/null and b/output/about/images/about-5.webp differ
diff --git a/output/about/images/about-6.webp b/output/about/images/about-6.webp
new file mode 100644
index 0000000..89b0bcf
Binary files /dev/null and b/output/about/images/about-6.webp differ
diff --git a/output/about/images/about-7.webp b/output/about/images/about-7.webp
new file mode 100644
index 0000000..70ee008
Binary files /dev/null and b/output/about/images/about-7.webp differ
diff --git a/output/about/images/about-8.webp b/output/about/images/about-8.webp
new file mode 100644
index 0000000..7d3c489
Binary files /dev/null and b/output/about/images/about-8.webp differ
diff --git a/output/about/images/about-9.webp b/output/about/images/about-9.webp
new file mode 100644
index 0000000..e954961
Binary files /dev/null and b/output/about/images/about-9.webp differ
diff --git a/output/about/images/history-1.jpg b/output/about/images/history-1.jpg
new file mode 100644
index 0000000..471e715
Binary files /dev/null and b/output/about/images/history-1.jpg differ
diff --git a/output/about/images/mid-2000s.webp b/output/about/images/mid-2000s.webp
new file mode 100644
index 0000000..e008b17
Binary files /dev/null and b/output/about/images/mid-2000s.webp differ
diff --git a/output/about/images/today.webp b/output/about/images/today.webp
new file mode 100644
index 0000000..fd77150
Binary files /dev/null and b/output/about/images/today.webp differ
diff --git a/output/about/index.html b/output/about/index.html
new file mode 100644
index 0000000..5225393
--- /dev/null
+++ b/output/about/index.html
@@ -0,0 +1,777 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="description" content="Community Over Code is the official Apache Software Foundation conference featuring technical tracks, Apache project deep dives, governance discussions, and real-world open source use cases.">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>About | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body id="about-page" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+ <div class="full-width">
+ <section class="hero hero--mosaic overflow-hidden relative">
+<div class="inner flex relative z1 flex-gap-50 flex-col-800">
+<div class="hero__content flex-1 py-xl">
+<h1 class="hero__title" id="about-community-over-code">About Community Over Code</h1>
+<p>Community Over Code (formerly ApacheCon) is the official open source conference of The Apache Software Foundation (The ASF). It brings together the global communities behind Apache open source projects for technical sessions, project-specific tracks, hands-on workshops, and discussions about governance and sustainable open source development.</p>
+<p>Designed to foster direct collaboration, the event connects users, developers, contributors, committers, Project Management Committee members, and ASF leadership in a vendor-neutral environment grounded in the Apache model of open participation and consensus-driven decision-making.</p>
+</div>
+<div class="hero__collage flex-1 relative">
+<div class="collage" id="about-collage">
+<div class="image__wrapper">
+<img alt="ASF Events" height="445" loading="lazy" src="./images/about-6.webp" width="267"/>
+</div>
+<div class="image__wrapper">
+<img alt="ASF Events" height="445" loading="lazy" src="./images/about-2.webp" width="267"/>
+</div>
+<div class="image__wrapper">
+<img alt="ASF Events" height="445" loading="lazy" src="./images/about-3.webp" width="267"/>
+</div>
+<div class="image__wrapper">
+<img alt="ASF Events" height="445" loading="lazy" src="./images/about-4.webp" width="267"/>
+</div>
+<div class="image__wrapper">
+<img alt="ASF Events" height="445" loading="lazy" src="./images/about-5.webp" width="267"/>
+</div>
+<div class="image__wrapper">
+<img alt="ASF Events" height="445" loading="lazy" src="./images/about-1.webp" width="267"/>
+</div>
+<div class="image__wrapper">
+<img alt="ASF Events" height="445" loading="lazy" src="./images/about-7.webp" width="267"/>
+</div>
+<div class="image__wrapper">
+<img alt="ASF Events" height="445" loading="lazy" src="./images/about-8.webp" width="267"/>
+</div>
+</div>
+</div>
+</div>
+</section>
+<section class="our-vistion">
+<div class="inner py-xl">
+<h2 class="text-center">Our Vision for Community Over Code</h2>
+<div class="text-col text-center mb-xl">
+<p>The Community Over Code conference strives to achieve the following goals, positioning itself as a premier, open source, and highly technical collaborative event.</p>
+</div>
+<div class="card">
+<div class="card-inner vision-items grid grid-2-cols flex-gap-50 pa-medium">
+<div class="vision-item">
+<h3>Technical Depth and Breadth</h3>
+<p>Offer a wide range of sessions that provide both deep technical insights and broad overviews across the diverse ecosystem of Apache projects.</p>
+</div>
+<div class="vision-item">
+<h3>Community Building</h3>
+<p>Foster connections and collaboration among contributors, committers, users, and ASF leadership to strengthen the global Apache community.</p>
+</div>
+<div class="vision-item">
+<h3>Vendor-Neutral Environment</h3>
+<p>Maintain a vendor-neutral space focused on open source principles, free from commercial promotion, where the community can share knowledge and collaborate openly.</p>
+</div>
+<div class="vision-item">
+<h3>Governance and Sustainability Focus</h3>
+<p>Provide a platform for discussions about open source governance, project sustainability, and the health of the Apache ecosystem.</p>
+</div>
+</div>
+</div>
+</div>
+</section>
+<section class="timeline-section py-xl">
+<div class="inner cf pb-large text-center">
+<h2>History of Community Over Code</h2>
+</div>
+<div class="inner cf py-xl inner--timeline relative">
+<div class="timeline-bar"></div>
+<div class="cf">
+<div class="float50 sticky-image pr-large">
+<div class="timeline-image-wrapper">
+<img alt="ASF Events" class="timeline-image shown" id="timeline-image-1" src="images/history-1.jpg"/>
+<img alt="ASF Events" class="timeline-image" id="timeline-image-2" src="images/1999.jpg"/>
+<img alt="ASF Events" class="timeline-image" id="timeline-image-3" src="images/2000.webp"/>
+<img alt="ASF Events" class="timeline-image shown" id="timeline-image-4" src="images/2001-2002.webp"/>
+<img alt="ASF Events" class="timeline-image" id="timeline-image-5" src="images/mid-2000s.webp"/>
+<img alt="ASF Events" class="timeline-image" id="timeline-image-6" src="images/2010s.webp"/>
+<img alt="ASF Events" class="timeline-image shown" id="timeline-image-7" src="images/2020-2.webp"/>
+<img alt="ASF Events" class="timeline-image" id="timeline-image-8" src="images/2023.webp"/>
+<img alt="ASF Events" class="timeline-image" id="timeline-image-9" src="images/today.webp"/>
+</div>
+</div>
+<div class="float50 pl-large timeline-content-wrapper">
+<div class="timeline-content card mb-xl" id="timeline-content-1">
+<div class="card-inner">
+<h2>1998</h2>
+<p>The first ApacheCon was held in San Francisco, bringing together developers and users of the Apache HTTP Server at a time when the project powered a majority of the web. The event marked one of the earliest dedicated gatherings focused on open source infrastructure software.</p>
+</div>
+</div>
+<div class="timeline-content card mb-xl" id="timeline-content-2">
+<div class="card-inner">
+<h2>1999</h2>
+<p>As The Apache Software Foundation (The ASF) was established as a 501(c)(3), ApacheCon began reflecting a broader mission beyond the web server, supporting a growing ecosystem of Apache projects and contributors.</p>
+</div>
+</div>
+<div class="timeline-content card mb-xl" id="timeline-content-3">
+<div class="card-inner">
+<h2>2000</h2>
+<p>ApacheCon expanded internationally, demonstrating the global reach of the Apache community and the increasing adoption of Apache software in enterprise environments.</p>
+</div>
+</div>
+<div class="timeline-content card mb-xl" id="timeline-content-4">
+<div class="card-inner">
+<h2>2001 - 2002</h2>
+<p>The conference evolved alongside The ASF’s governance model, highlighting meritocratic contribution, open decision-making, and the foundation’s expanding portfolio of projects.
+</p>
+</div>
+</div>
+<div class="timeline-content card mb-xl" id="timeline-content-5">
+<div class="card-inner">
+<h2>Mid 2000s</h2>
+<p>ApacheCon featured technical deep dives across new Apache projects in areas such as Java, XML, data systems, and infrastructure tooling, reflecting the ASF’s growth beyond web technologies.</p>
+</div>
+</div>
+<div class="timeline-content card mb-xl" id="timeline-content-6">
+<div class="card-inner">
+<h2>2010s</h2>
+<p>With the rise of distributed systems and large-scale data platforms, ApacheCon hosted dedicated tracks for major projects, production case studies, and sessions on open source sustainability and governance.</p>
+</div>
+</div>
+<div class="timeline-content card mb-xl" id="timeline-content-7">
+<div class="card-inner">
+<h2>2020 - 2021</h2>
+<p>The conference adapted to global circumstances with virtual formats, maintaining continuity for the Apache community while expanding remote participation worldwide.</p>
+</div>
+</div>
+<div class="timeline-content card mb-xl" id="timeline-content-8">
+<div class="card-inner">
+<h2>2023</h2>
+<p>The event was renamed Community Over Code, reflecting a long-standing Apache principle that healthy communities are the foundation of sustainable open source projects.</p>
+</div>
+</div>
+<div class="timeline-content card mb-xl" id="timeline-content-9">
+<div class="card-inner">
+<h2>Today</h2>
+<p>Community Over Code continues as the official conference of The Apache Software Foundation, bringing together contributors, committers, users, and open source leaders for technical collaboration and governance discussions.</p>
+</div>
+</div>
+</div>
+</div>
+</div></section>
+<section class="faq-section">
+<div class="inner py-xl">
+<h2 class="text-center text-heading-light">FAQs</h2>
+<div class="faqs">
+<div class="faq card">
+<div class="faq-question">
+<h3>What is Community Over Code?</h3>
+</div>
+<div class="faq-answer">
+<p>Community Over Code is the official annual conference of the Apache Software Foundation (The ASF). It brings together contributors, committers, developers, and users of Apache open source projects for technical sessions and discussions about open source governance and sustainability.</p>
+</div>
+</div>
+<div class="faq card">
+<div class="faq-question">
+<h3>Is Community Over Code the official Apache conference?</h3>
+</div>
+<div class="faq-answer">
+<p>Yes. Community Over Code is the official conference of The Apache Software Foundation (The ASF) and was formerly known as ApacheCon.</p>
+</div>
+</div>
+<div class="faq card">
+<div class="faq-question">
+<h3>What Apache projects are discussed?</h3>
+</div>
+<div class="faq-answer">
+<p>Community Over Code features sessions and tracks dedicated to a wide range of Apache projects, with topics varying each year based on community participation and project activity.</p>
+</div>
+</div>
+<div class="faq card">
+<div class="faq-question">
+<h3>Can non-committers attend?</h3>
+</div>
+<div class="faq-answer">
+<p>Yes. Community Over Code is open to developers, users, contributors, and anyone interested in Apache open source projects.</p>
+</div>
+</div>
+<div class="faq card">
+<div class="faq-question">
+<h3>How is Community Over Code different from vendor conferences?</h3>
+</div>
+<div class="faq-answer">
+<p>Community Over Code is community-led and vendor-neutral, focusing on Apache projects, governance, and technical collaboration rather than product marketing or commercial promotion.</p>
+</div>
+</div>
+<div class="faq card">
+<div class="faq-question">
+<h3>Where is Community Over Code held?</h3>
+</div>
+<div class="faq-answer">
+<p>The event locations vary each year and may include in-person and hybrid participation options.</p>
+</div>
+</div>
+<div class="faq card">
+<div class="faq-question">
+<h3>Can I submit a talk?</h3>
+</div>
+<div class="faq-answer">
+<p>Yes. The conference includes an open call for proposals (CFP) where community members can submit technical and governance-focused sessions.</p>
+</div>
+</div>
+<div class="faq card">
+<div class="faq-question">
+<h3>What topics are typically covered?</h3>
+</div>
+<div class="faq-answer">
+<p>Sessions include project deep dives, production use cases, release processes, security practices, governance, incubation, and open source sustainability.</p>
+</div>
+</div>
+<div class="faq card">
+<div class="faq-question">
+<h3>Is there a discount for students?</h3>
+</div>
+<div class="faq-answer">
+<p>Yes. Discounted registration options are typically available for students; details are provided on the registration page each year.</p>
+</div>
+</div>
+<div class="faq card">
+<div class="faq-question">
+<h3>Why the name “Community Over Code?”</h3>
+</div>
+<div class="faq-answer">
+<p>The name reflects a core Apache principle: sustainable open source depends on healthy, collaborative communities. Strong communities can improve code over time; great code cannot survive without strong community governance.</p>
+</div>
+</div>
+</div>
+</div>
+</section>
+<section class="contact-section" id="contact-section">
+<div class="inner py-xl relative z1">
+<div class="text-center mb-large">
+<h2 class="text-white">Contact Us</h2>
+<p class="text-white">If you want to stay up-to-date on all ASF events, join the read-only mailing list.</p>
+</div>
+<div class="flex flex-gap-50 flex-col-800">
+<div class="card flex-1">
+<div class="card-inner flex flex-gap-20 flex-column text-center">
+<div class="contact-icon">
+<img alt="Slack Icon" height="75" src="/images/slack-icon.png" width="75"/>
+</div>
+<h3>Slack</h3>
+<p>Attendees, the best place for getting your questions answered is to join the Community Over Code Slack (aka Apachecon Slack).</p>
+<p><a class="btn" href="https://forms.gle/9Zz5mL7n1Z1Z1Z1Z">Join Now </a></p>
+</div>
+</div>
+<div class="card flex-1">
+<div class="card-inner flex flex-gap-20 flex-column text-center">
+<div class="contact-icon">
+<img alt="Mailing List Icon" height="75" src="/images/email.svg" width="75"/>
+</div>
+<h3>Mailing List</h3>
+<p>To stay updated on all ASF events, join the read-only mailing list.</p>
+<p><a class="btn" href="mailto:announce@apachecon.com">Join List</a></p>
+<h4>Subscription address:</h4>
+<p><a class="btn" href="mailto:announce-subscribe@apachecon.com">Subscribe</a></p>
+<h4>Web archives</h4>
+<p><a class="btn" href="https://lists.apache.org/list.html?announce@apachecon.com">View Archives</a></p>
+</div>
+</div>
+<div class="card flex-1">
+<div class="card-inner flex flex-gap-20 flex-column text-center">
+<div class="contact-icon">
+<img alt="Email Icon" height="75" src="/images/email.svg" width="75"/>
+</div>
+<h3>Email</h3>
+<p>For specific questions about the conference, please contact the planning team.</p>
+<p><a class="btn" href="mailto:planners@apachecon.com">Send Email</a></p>
+</div>
+</div>
+</div>
+</div>
+</section>
+<div>
+<script src="../js/timeline-js.js"></script>
+</div>
+
+ </div>
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/code-of-conduct.html b/output/code-of-conduct.html
new file mode 100644
index 0000000..3e02913
--- /dev/null
+++ b/output/code-of-conduct.html
@@ -0,0 +1,518 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="description" content="The Apache Software Foundation (ASF) is committed to providing a welcoming and inclusive environment for all members of our community. This Code of Conduct outlines our expectations for behavior and the consequences for unacceptable behavior.">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>Code of Conduct | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+ <div class="hero hero--defaults relative">
+ <div class="inner py-xl relative z1">
+ <div class="hero-content text-center">
+ <h1 class="hero-title">Code of Conduct</h1>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent">
+ <div class="inner py-xl">
+ <p>At the ASF, all online interactions are governed by the ASF Code of Conduct, while in-person events are subject to the Anti-Harassment Policy.</p>
+<p>ASF events are dedicated to providing a harassment-free experience for everyone. We do not tolerate harassment of participants in any form. Participants violating these rules may be sanctioned or expelled without a refund, at the discretion of the event organizers.</p>
+<p>Harassment includes offensive verbal comments, deliberate intimidation, stalking, following, unwanted photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention. Participants asked to stop any harassing behavior are expected to comply immediately.</p>
+<p>Sexual language and imagery will not be tolerated in any event venue, including talks. Exhibitors should also refrain from using sexualised images, activities, or other material. Booth staff (including volunteers) should not use sexualised clothing/uniforms/costumes, or otherwise create a sexualised environment.</p>
+<p>If a participant engages in harassing behaviour, the organizers may take any action they deem appropriate, including warning the offender or expulsion from the event without a refund. We expect participants to follow these rules at all event venues and related social events.</p>
+<p>If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of the event team immediately. The team can be found at the registration desk.</p>
+<p>The event team will be happy to help participants contact hotel/venue security (as available) or local law enforcement, provide escorts to walk you to/from your room/car/taxi/etc, or otherwise assist those experiencing harassment to feel safe for the duration of the event. We value your attendance.</p>
+<p>You can contact the event team via email at <a href="mailto:planners@apachecon.com">planners@apachecon.com</a></p>
+<p>You can find the event team on the day at the registration desk.</p>
+
+ </div>
+ </section>
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/css/styles.css b/output/css/styles.css
new file mode 100644
index 0000000..da3d9fb
--- /dev/null
+++ b/output/css/styles.css
@@ -0,0 +1,1331 @@
+
+@charset "utf-8";
+
+/* Root Variables */
+:root {
+ --color-bg: #ffffff;
+ --color-text: #222222;
+ --color-heading: #242256;
+ --color-heading-light: #ffffff;
+ --color-orange: #757575;
+ --color-grey-dark: #333333;
+ --color-white: #ffffff;
+ --color-purple: #712572;
+ --color-navy: #242256;
+ --color-red: #CC1E24;
+ --color-lavendar: #FEF4FF;
+ --color-orange: #D84B27;
+ --color-yellow: #F68F20;
+ --gradient-orange: linear-gradient(180deg,#c44222 0%, #de7f1a 100%);
+ --gradient-asf: linear-gradient(280deg, rgba(246, 143, 32, 0.89) 0.94%, rgba(216, 75, 39, 0.89) 26.18%, rgba(113, 37, 114, 0.89) 68.09%);
+ --val-baseline: 20px;
+}
+
+/* CSS reset. Why? Because browser makers make the www difficult to style. Enough with that. */
+/* Modern CSS reset by: https://piccalil.li/blog/a-modern-css-reset/ */
+*,*::before,*::after{box-sizing:border-box}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}ul[role='list'],ol[role='list']{list-style:none}html:focus-within{scroll-behavior:smooth}body{min-height:100vh;text-rendering:optimizeSpeed;line-height:1.5}a:not([class]){text-decoration-skip-ink:auto}img,picture{max-width:100%;display:block}input,button,textarea,select{font:inherit}@media (prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*::before,*::after{animation-dur [...]
+/* End the Reset. Let the games begin. */
+
+*, *:before, *:after {
+ -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;
+}
+html {font-size: 20px;}
+body { line-height:1;-webkit-text-size-adjust:none; -webkit-font-smoothing: antialiased; /* Chrome, Safari */ -moz-osx-font-smoothing: grayscale; /* Firefox */ font-family: 'Montserrat', 'Source Sans Pro','Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 20px;}
+img {max-width: 100%; height: auto; display: inline-block; vertical-align: middle;}
+a { outline:none; text-decoration:none; transition:all 0.2s ease-out; }
+.maincontent a {color: var(--color-red);}
+small { font-size: 80%;}
+pre {font-family:"Courier New", Courier, monospace; letter-spacing: -0.5pt;}
+
+.headerlink {
+ visibility: hidden;
+}
+dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
+ visibility: visible
+}
+
+body.no-scroll, html.no-scroll {overflow: hidden;}
+
+/* typography */
+h1, h2, h3, h4, h5 {
+ font-family: 'Montserrat', 'Source Sans Pro','Helvetica Neue', Helvetica, Arial, sans-serif;
+ text-transform: capitalize;
+ font-weight: 700;
+ line-height: 1.1em;
+ margin-bottom: 1rem;
+ color: var(--color-heading)
+}
+h1 {
+ font-size: 3.5rem;
+ margin-bottom: 2rem;
+ font-weight: 800;
+}
+h1 .headerlink {
+ display: none;
+}
+h1 .hero__subtitle {
+ font-size: 1.8rem;
+ line-height: 1.1em;
+ display: block;
+ font-weight: 400;
+ margin-top: 20px;
+}
+h2 {
+ font-size: 2.4rem;
+ margin-bottom: 1em;
+ font-weight: 800;
+}
+
+p {
+ margin-bottom: 1em;
+ line-height: 1.5em;
+ font-size: 1rem;
+}
+li {
+ line-height: 1.5em;
+ font-size: 1rem;
+}
+.text-heading-light {color: var(--color-heading-light);}
+
+/* reusable classes */
+.inner { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 var(--val-baseline);}
+.inner.inner--narrow {max-width: 800px;}
+.text-col {max-width: 880px; margin: 0 auto;}
+.hidden, .none, .hide { display: none; }
+.invisible {visibility: hidden; }
+
+/* micro clearfix below. contains floats like .clearfix. */
+.cf:before, .cf:after { content: " "; display: table; }
+.cf:after { clear: both; }
+
+/* need to clear floats instead of contain them? use this below. */
+.clear, .clear-both { clear: both; }
+
+/* need to float things? we got you covered. */
+.left, .floatleft { float: left !important; }
+.right, .floatright { float: right !important; }
+
+/* these are for images, below. gives a nice margin. sweet. */
+.alignright { float: right; margin: 0 0 15px 15px;}
+.alignleft { float: left; margin: 0 15px 15px 0;}
+.aligncenter {display: block; margin: 0 auto;}
+.floatnone { float: none; }
+
+/* need a middle-aligned header. don't write another CSS rule. just use these! */
+.text-left {text-align: left;}
+.text-right {text-align: right;}
+.text-center {text-align: center;}
+
+/* positioning */
+.absolute {position: absolute;}
+.relative {position: relative;}
+.fixed {position: fixed;}
+
+/* flex */
+.flex {display: flex;}
+.flex-vert-center {align-items: center;}
+.flex-vert-end {align-items: end;}
+.flex-horz-center {justify-content: center;}
+.flex-center {align-items: center;justify-content: center}
+.flex-end {justify-content: flex-end;}
+.flex-space-between {justify-content: space-between;}
+.flex-wrap {flex-wrap:wrap}
+.flex-reverse {flex-direction: row-reverse;}
+.flex-column {flex-direction: column;}
+.flex-row {flex-direction: row;}
+.flex-1 {flex: 1;}
+.flex-2 {flex: 2;}
+.flex-gap-50 {gap: 50px;}
+.flex-gap-20 {gap: 20px;}
+
+/* grid */
+.grid {display: grid;}
+.grid-center {place-items: center;}
+.grid-2-cols {grid-template-columns: repeat(2, 1fr);}
+
+/* need to add z-index? Us these class? */
+.z0 {z-index: 0;}
+.z1 {z-index: 1;}
+.z2 {z-index: 2;}
+.z3 {z-index: 3;}
+.z4 {z-index: 4;}
+/* For a little extra reassurance */
+.z99{z-index: 99;}
+
+/* magic. many combinations exists with simplicity. */
+.float20 { float: left; width: 20%;}
+.float25 { float: left; width: 25%;}
+.float33 { float: left; width: 33.3333%;}
+.float50 { float: left; width: 50%;}
+.float66 { float: left; width: 66.6667%;}
+.float75 { float: left; width: 75%;}
+.float80 { float: left; width: 80%;}
+
+.inline {display:inline-block}
+.inline25 { display: inline-block; width: 25%; margin-right: -4px; }
+.inline33 { display: inline-block; width: 33.3333%; margin-right: -4px; }
+.inline50 { display: inline-block; width: 50%; margin-right: -4px; }
+.inline66 { display: inline-block; width: 66.6666%; margin-right: -4px; }
+
+.w25 { width: 25%; }
+.w33 { width: 33.3333%; }
+.w50 { width: 50%; }
+.w66 { width: 66.6666%; }
+.w75 { width: 75%; }
+
+/* a couple of button micro-interactions */
+a.btn { color: #fff;background-color: var(--color-purple);border-radius: 8px;padding: 10px 25px;cursor: pointer;font-size:1.2rem;transition: all 0.2s ease-in-out; font-weight: 700; display: inline-block; position: relative;}
+a.btn.btn--alt {background-color: var(--color-orange);}
+a.btn.btn--white {background-color: #fff; color: var(--color-orange);}
+a.btn.btn--event-hero {font-size: 1rem; padding: 8px 15px;}
+a.btn:hover { background-color: var(--color-red); color: #fff; }
+
+
+/* padding and margin helpers */
+.pa-small {padding:calc( var(--val-baseline) / 2 )}
+.pa-medium {padding: var(--val-baseline)}
+.pa-large {padding:calc( var(--val-baseline) * 4 )}
+
+.pl-medium {padding-left: var(--val-baseline)}
+.pl-large {padding-left:calc( var(--val-baseline) * 4 )}
+
+.pr-medium {padding-right: var(--val-baseline)}
+.pr-large {padding-right:calc( var(--val-baseline) * 4 )}
+
+.ma-small {margin:calc( var(--val-baseline) / 2 )}
+.ma-medium {margin:calc( var(--val-baseline) )}
+.ma-large {margin:calc( var(--val-baseline) * 4 )}
+
+.mt-medium {margin-top: var(--val-baseline)}
+.mt-large {margin-top: calc( var(--val-baseline) * 4 )}
+.mt-xl {margin-top: calc( var(--val-baseline) * 7 )}
+
+.mb-medium {margin-bottom: var(--val-baseline)}
+.mb-large {margin-bottom: calc( var(--val-baseline) * 4 )}
+.mb-xl {margin-bottom: calc( var(--val-baseline) * 7 )}
+
+.py-medium {padding-top: var(--val-baseline) ;padding-bottom: var(--val-baseline) ;}
+.py-large {padding-top:calc( var(--val-baseline) * 4 );padding-bottom:calc( var(--val-baseline) * 4);}
+.py-xl {padding-top:calc( var(--val-baseline) * 7 );padding-bottom:calc( var(--val-baseline) * 7 );}
+
+.pt-xl {padding-top:calc( var(--val-baseline) * 7 );}
+.pb-xl {padding-bottom:calc( var(--val-baseline) * 7 );}
+
+.px-small {padding-left:calc( var(--val-baseline) / 2);padding-right:calc( var(--val-baseline) / 2);}
+.px-medium {padding-left: var(--val-baseline);padding-right:var(--val-baseline);}
+
+.pt-xl {padding-top:calc( var(--val-baseline) * 7 );}
+
+.min-h-500 {min-height: 500px;}
+.min-h-800 {min-height: 800px;}
+
+.overflow-hidden {overflow: hidden;}
+/* decorators */
+.bg-cover {background-size:cover; background-position: center center;}
+.bg-cover.bg-cover-top {background-position: center top;}
+.bg-cover.bg-cover-btm {background-position: center bottom;}
+/* add bg colors here */
+.bg-grey {background-color: var(--color-grey-light);}
+.bg-navy {background-color: var(--color-navy);}
+.bg-white {background-color: #ffffff;}
+.bg-orange {background-color: var(--color-orange);}
+
+.text-white {color: #fff;}
+table {
+ width: 100%; border-collapse: collapse;
+}
+table, .table {box-shadow: 0 5px 15px rgba(0,0,0,.2); border-radius: 10px; overflow: hidden; background-color: #fff; margin-bottom: 2rem;}
+thead {background-image: var(--gradient-asf); color: #fff;}
+.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th {padding: 10px 20px; line-height: 1.5em;}
+thead > tr > th em {font-style: normal; font-weight: 600; font-size: .8em;}
+tr:nth-child(even) {background-color: var(--color-lavendar);}
+
+/* HEADER */
+#header-main {
+ height: 100px;
+ position: relative;
+ z-index: 2;
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
+ background-color: #fff;
+}
+#header-main .inner, #header-main nav, #header-main nav ul, #header-main nav li, #header-main nav a {
+ height: 100%;
+}
+#header-main nav a {
+ display: block;
+ color: #712572;
+ font-weight: 700;
+ text-transform: uppercase;
+ padding: 0 15px;
+ align-content: center;
+ font-size: .8rem;
+}
+#header-main nav a:hover {
+ background-color: #712572;
+ color: #fff;
+}
+#header-main nav ul {
+ padding-left: 0;
+ margin: 0;
+ border-right: 1px solid #712572;
+}
+#header-main nav li {
+ list-style: none;
+ border-left: 1px solid #712572;
+}
+#header-main nav li.has-sub-menu {
+ position: relative;
+}
+#header-main nav li.has-sub-menu >a::after {
+ content: '';
+ display: inline-block;
+ margin-left: 5px;
+ border-width: 5px;
+ border-style: solid;
+ border-color: transparent transparent transparent #712572;
+ transform: rotate(90deg);
+}
+#header-main nav li.has-sub-menu >a:hover::after {
+ border-color: transparent transparent transparent #fff;
+}
+#header-main nav ul.sub-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ background-color: var(--color-navy);
+ color: #fff;
+ min-width: 200px;
+ border: none;
+ height: auto;
+ display: none;
+ border-radius: 0 0 8px 8px;
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);
+}
+#header-main nav ul.sub-menu a {
+ color: #fff;
+}
+#header-main nav li.has-sub-menu:hover ul.sub-menu {
+ display: block;
+}
+#header-main nav ul.sub-menu li {
+ border: none;
+}
+#header-main nav ul.sub-menu li a {
+ padding: 10px 15px;
+ font-size: .8rem;
+}
+#header-main nav ul.sub-menu li a:hover {
+ background-color: #fff;
+ color: var(--color-navy)
+}
+.logo {
+ width: 200px;
+}
+
+/* reusable components */
+.card {
+ border-radius: 8px;
+ padding: 20px;
+ background-clip: padding-box, border-box;
+ background-origin: padding-box, border-box;
+ background-image: linear-gradient(180deg, #F68F20 0%, #D84B27 45.19%, #712572 100%);
+ box-shadow: 0 160px 45px 0 rgba(0, 0, 0, 0.00), 0 102px 41px 0 rgba(0, 0, 0, 0.03), 0 58px 35px 0 rgba(0, 0, 0, 0.10), 0 26px 26px 0 rgba(0, 0, 0, 0.17), 0 6px 14px 0 rgba(0, 0, 0, 0.20);
+ position: relative;
+}
+.card::before {
+ content: '';
+ position: absolute;
+ top: 0; left: 0; right: 0; bottom: 0;
+ border-radius: 8px;
+ background: #fff;
+ left: 2px; top: 2px;
+ width: calc(100% - 4px); height: calc(100% - 4px);
+}
+.card-inner {
+ position: relative;
+ z-index: 1;
+}
+.card-inner h2 {
+ margin-bottom: 20px;
+}
+.card h4 {
+ font-size: 1rem;
+ font-weight: 600;
+ color: #242256;
+ margin-bottom: 1em;
+}
+.event-card__date {
+ font-size: 0.7rem;
+ color: var(--color-grey-dark);
+ margin-bottom: 10px;
+ font-weight: 600;
+}
+.event-card__image {
+ width: 100px;
+ height: 100px;
+}
+.event-card__image img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+.card a {color: #D84B27;
+ font-weight: 700;
+ font-size: 0.8rem;
+}
+.card a.btn {
+ color: #fff;
+}
+.card a:hover {
+ text-decoration: underline;
+}
+.card a.btn:hover {
+ text-decoration: none;
+}
+
+/* Home Page */
+.hero--home, .hero.hero--event-home{
+ background-image: url('../images/home-hero-bg.webp');
+ background-size: cover;
+ background-position: center center;
+ position: relative;
+ min-height: 800px;
+ display: flex;
+ align-items: center;
+}
+.hero--home::before, .hero--event-home::before {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(280deg, rgba(246, 143, 32, 0.89) 0.94%, rgba(216, 75, 39, 0.89) 26.18%, rgba(113, 37, 114, 0.89) 68.09%);
+ top: 0;
+ left: 0;
+ z-index: 0;
+}
+.hero--event-home::before {
+ background: linear-gradient(280deg, #A736A5 0%, #712572 48.85%, #242256 100%);
+ opacity: .9;
+}
+.hero::after {
+ content: '';
+ display: block;
+ position: absolute;
+ height: 150px;
+ width: 100%;
+ bottom: -1px;
+ left: 0;
+ z-index: 1;
+ background-image: url('../images/hero-curve-gradient.webp');
+ background-size: 100% 100%; /* stretch to fill exactly */
+ background-repeat: no-repeat;
+ background-position: bottom center;
+}
+.hero.hero--home::after, .hero.hero--event-home::after {
+ background-image: url('../images/hero-curve-mask.webp');
+}
+.hero.hero--home .hero__content h1, .hero.hero--home .hero__content p, .hero.hero--home .hero_events h2, .hero.hero--event-home .hero__content h1, .hero.hero--event-home .hero__content p, .hero.hero--event-home .hero_events h2{
+ color: #fff
+}
+.mosaic-content {
+ margin-bottom: 150px;
+ height: 100vh;
+}
+.mosaic-content:last-child {
+ height:auto;
+}
+.sticky-mosaic {
+ position: sticky;
+ top: 100px;
+}
+.mosaic {
+ width: 100%;
+ aspect-ratio: 1 / 1;
+}
+.mosaic__item {
+ border-radius: 11px;
+ overflow: hidden;
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);
+ opacity: 0;
+ transform: scale(1.2);
+ transition: opacity 0.6s ease-out, transform 0.6s ease-out;
+}
+.mosaic__item img {
+ object-fit: cover;
+ width: 100%;
+ height: 100%;
+ object-position: center;
+}
+.mosaic__item.mosaic__item--1 {
+ height: 80%;
+ opacity:1;
+ transform: scale(1);
+}
+.mosaic__item--2 {
+ height: 60%
+}
+.mosaic-wrap {
+ height: 20%;
+}
+.mosaic__item--5 {
+ transition-delay: 0.3s;
+}
+.mosaic__item.shown {
+ opacity: 1;
+ transform: scale(1);
+}
+.home-attendees {
+ background-image: url('../images/earth-bg.webp');
+ background-size: cover;
+ background-position: center center;
+ position: relative;
+ padding-top: calc(var(--val-baseline) * 7);
+}
+.home-attendees::before {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(109deg, #712572 14.64%, #242256 98.15%);
+ top: 0;
+ left: 0;
+ opacity: .6;
+}
+.home-attendees::after, .co-located-events::after {
+ content: '';
+ display: block;
+ position: absolute;
+ height: 150px;
+ width: 100%;
+ left: 0;
+ top: 0;
+ z-index: 1;
+ background-image: url('../images/white-curve-btm.webp');
+ background-size: 100% 100%; /* stretch to fill exactly */
+ background-repeat: no-repeat;
+ background-position: top center;
+}
+.attendee-cards {
+ flex-wrap: wrap;
+ justify-content: center;
+}
+.attendee-card {
+ display: flex;
+ padding: 30px;
+ flex-direction: column;
+ align-items: center;
+ gap: 30px;
+ border-radius: 10px;
+ text-align: center;
+ background: linear-gradient(180deg, #F68F20 0%, #D84B27 100%);
+ flex-basis: clamp(250px, 33.33%, 300px);
+}
+.events-news {
+ background-image: linear-gradient(288deg, #242256 -1.91%, #712572 48.53%, #CC1E24 98.98%);
+}
+.events-news-img {
+ object-fit: cover;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+}
+
+#events-news-img {
+ opacity: 0.0;
+ transform: translate3d(-200px, 0, 0);
+ transition: all .5s ease-out
+}
+.active #events-news-img {
+ opacity: 1;
+ transform: translate3d(0, 0, 0);
+}
+
+/* FOOTER */
+footer {
+ background: radial-gradient(79.34% 79.34% at 50% 53.46%, #333176 0%, #242256 21.63%, #222 99.32%);
+}
+.footer-top-border {
+ height: 20px;
+ background-image: var(--gradient-asf);
+}
+footer h2 {
+ margin-bottom: 1rem;
+ font-size: 36px;
+}
+.footer-nav ul {
+ list-style: none;
+ padding-left: 0;
+ margin: 0;
+}
+footer p {
+ font-size: .8rem;;
+}
+.footer-nav li {
+ line-height: 1.5em;;
+}
+.footer-nav a {
+ color: #fff;
+ font-weight: 800;
+ text-transform: uppercase;
+ font-size: 1.5rem;
+ line-height: 1.5em;
+}
+.card.card--footer {
+ background-image: var(--gradient-orange);
+ border: none;
+}
+.card.card--footer::before {
+ display: none;
+}
+.card.card--footer .event-card__date, .card.card--footer h4 {
+ color: #fff;
+}
+.card.card--footer h4 {
+ margin-bottom: 0px;
+}
+.collage {
+ display: grid;
+ gap: 20px;
+ grid-template-columns: repeat(2, 1fr);
+ position: absolute;
+ top: -17%;
+}
+.image__wrapper {
+ aspect-ratio: 3 / 5;
+ position: relative;
+ overflow: hidden;
+ border-radius: 8px;
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);
+}
+.image__wrapper::after {
+ content:'';
+ position: absolute;
+ top: 0; left: 0;
+ width: 100%; height: 100%;
+ background: linear-gradient(135deg, rgba(113, 37, 114, 0.38) 6.96%, rgba(204, 30, 36, 0.38) 100%);
+}
+.image__wrapper:nth-child(3n + 1)::after {
+ background: linear-gradient(180deg, rgba(204, 30, 36, 0.44) 0%, rgba(246, 143, 32, 0.44) 100%)
+}
+.image__wrapper:nth-child(3n + 2)::after {
+ background: linear-gradient(135deg, rgba(36, 34, 86, 0.6) 6.96%, rgba(113, 37, 114, 0.6) 100%)
+}
+.image__wrapper:nth-child(2n) {
+ transform: translateY(-50%);
+}
+.image__wrapper img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ border-radius: 8px;
+}
+.sticky-image {
+ position: sticky;
+ top: 100px;
+}
+.timeline-image-wrapper {
+ position: relative;
+ width: 100%;
+ aspect-ratio: 5 / 3;
+ overflow: hidden;
+ border-radius: 8px;;
+}
+.timeline-image-wrapper img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ opacity: 0;
+ transition: opacity 0.5s ease-out;
+}
+.timeline-image-wrapper img.shown {
+ opacity: 1;
+}
+.timeline-bar {
+ width: 4px;
+ height: 100%;
+ position: absolute;
+ left:50%;
+ top: 0;
+ transform: translateX(-50%);
+ background-color: #D84B27;
+}
+.timeline-bar::before, .timeline-bar::after {
+ content:'';
+ position: absolute;
+ width: 30px; height: 30px;
+ background-color: var(--color-purple);
+ border-radius: 50%;
+ top: 0; left: 50%;
+ transform: translate(-50%, -50%);
+}
+.timeline-bar::after {
+ top: 100%;
+ transform: translate(-50%, -50%);
+}
+.timeline-content::after {
+ content: '';
+ position: absolute;
+ width: 100%; height: 2px;
+ background-color: #D84B27;
+ top: 50%;
+ transform: translateY(-50%);
+ left: calc( var(--val-baseline) * -4 );
+ z-index: -1;
+}
+.card.timeline-content::before {
+ transition: all 0.3s ease-out;
+}
+.card.timeline-content.active::before {
+ background-color: var(--color-orange);
+ color:#fff;
+}
+.card.timeline-content.active .card-inner h2, .card.timeline-content.active .card-inner p {
+ color:#fff;
+}
+.faq {
+ cursor: pointer;
+ padding: 30px;;
+}
+.faq-section {
+ background-color: var(--color-navy);
+}
+.faq-question, .faq-answer {
+ position: relative;
+ z-index: 1;
+ padding-left: 30px;
+}
+.faq-question h3 {
+ margin-bottom: 0px;
+}
+.faq-question:before {
+ width: 22px;
+ height: 22px;
+ position: absolute;
+ left:-10px;
+ top: 5px;
+ content:'';
+ background-image: url('../images/faq-toggle.svg');
+ background-size: 100% 100%;
+ background-repeat: no-repeat;
+}
+.faq.open .faq-question:before {
+ transform: rotate(180deg);
+}
+.faq-answer {
+ display:none;
+ padding-top: 20px;
+ }
+ .faq.open .faq-answer {
+ display: block;
+}
+.faqs {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+}
+
+.contact-section {
+ background-image: url('../images/earth-bg.webp');
+ background-size: cover;
+ background-position: center center;
+ position: relative;
+}
+.contact-section::before {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(109deg, #712572 14.64%, #242256 98.15%);
+ top: 0;
+ left: 0;
+ opacity: .6;
+}
+.contact-icon {
+ height: 50px;
+ margin-bottom: 20px;
+}
+.contact-icon img {
+ height: 100%;
+ width: auto;
+}
+
+.events-grid {
+ display: grid;
+ gap: 20px;
+ grid-template-columns: repeat(3, 1fr);
+}
+
+/* SINGLE EVENTS */
+
+.hero-event-dates {
+ color: var(--color-navy);
+ font-size: 1.2rem;
+ font-weight: 600;
+ margin-bottom: 30px;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+}
+.hero-event-dates.text-white{
+ color: #fff;
+}
+.hero__default-subtitle {
+ font-weight: 600;
+}
+.colo-label, .event-card__location {
+ font-size: .8rem;
+ font-weight: 600;
+ color: #fff;
+ background-image: var(--gradient-orange);
+ text-transform: capitalize;
+ margin-bottom: 5px;
+ padding: 5px 15px;
+ display: inline-block;
+ border-radius: 8px;
+}
+.event-card__location {margin-bottom: 10px; background: var(--color-navy); border-radius: 0px; }
+.breadcrumb {
+ font-size: 14px;
+ font-weight: 600;
+ display: flex;
+}
+.countdown {
+ z-index: 2;
+ position: absolute;
+ bottom: 0;
+ width: 600px;
+ max-width: 95%;
+ left: 50%;
+ opacity: 0;
+ transform: translate3d(-50%, 20px, 0);
+ transition: all 0.5s ease-out;
+ display: flex;
+ gap: 15px;
+}
+.countdown.show {
+ opacity: 1;
+ transform: translate3d(-50%, 0, 0);
+}
+.countdown__box {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 20px;
+}
+.countdown__number, .countdown__label {
+ position: relative;
+ color: var(--color-navy)
+}
+.countdown__number {
+ font-size: 2rem;
+ font-weight: 800;
+}
+.countdown__label {
+ font-size: .8rem;
+ font-weight: 600;
+ text-transform: uppercase;
+}
+.event-started {
+ margin: 0 auto;
+}
+.event-started p {
+ position: relative;
+ margin-bottom: 0px;;
+}
+.banner {
+ padding: 10px 0;
+ background-color: var(--color-orange);
+ color: #fff;
+ text-align: center;
+ font-size: .8rem;
+ font-weight: 700;
+}
+.banner a {
+ color: #fff;
+ font-weight: 700;
+ padding: 5px 15px;
+ border-radius: 8px;
+ border: 2px solid #fff;
+}
+.banner a:hover {
+ background-color: #fff;
+ color: var(--color-orange);
+}
+.gallery-wrapper {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+ height: auto;
+ background: #f5f5f5;
+ aspect-ratio: 16 / 9;
+ border-radius: 15px;
+ box-shadow: 0 160px 45px 0 rgba(0, 0, 0, 0.00), 0 102px 41px 0 rgba(0, 0, 0, 0.03), 0 58px 35px 0 rgba(0, 0, 0, 0.10), 0 26px 26px 0 rgba(0, 0, 0, 0.17), 0 6px 14px 0 rgba(0, 0, 0, 0.20);
+}
+.gallery-images {
+ display: flex;
+ height: 100%;
+ transition: transform 0.5s ease-in-out;
+}
+.gallery-image {
+ height: 100%;
+ flex-shrink: 0;
+}
+.gallery-image-item {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+.gallery-nav {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ background: rgba(0,0,0,0.5);
+ color: white;
+ border: none;
+ padding: 15px 20px;
+ cursor: pointer;
+ font-size: 20px;
+ border-radius: 5px;
+ z-index: 10;
+}
+.gallery-nav:hover {
+ background: rgba(0,0,0,0.8);
+}
+.gallery-nav.left {
+ left: 20px;
+}
+.gallery-nav.right {
+ right: 20px;
+}
+
+.sponsor-logos-section {
+ position: relative;
+}
+.sponsor-logos-section::after {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 2px;
+ background: var(--gradient-asf);
+ bottom: 0;
+ left: 0;
+}
+.sponsor-logos {
+ display: flex;
+ gap: 20px;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+}
+.sponsor-logo {
+ width: calc((100% - 40px) / 3);
+ height: 200px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 20px;
+}
+.sponsor-logos.sponsor-logos--gold .sponsor-logo {
+ width: calc((100% - 60px) / 4);
+ height: 180px;
+}
+.sponsor-logos.sponsor-logos--silver .sponsor-logo {
+ width: calc((100% - 80px) / 5);
+ height: 160px;
+}
+.sponsor-logos.sponsor-logos--bronze .sponsor-logo, .sponsor-logos.sponsor-logos--lightning_talks .sponsor-logo {
+ width: calc((100% - 100px) / 6);
+ height: 140px;
+}
+.sponsor-logo a {
+ display: block;
+ width: 100%;
+ height: 100%;
+}
+.sponsor-logo img {
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
+}
+.maincontent--single-event hr {
+ margin: calc(var(--val-baseline) * 4) 0;
+ color: transparent;
+ position: relative;
+ height: 3px;
+ background-image: linear-gradient(to right, rgba(113, 37, 114, 0.89), rgba(216, 75, 39, 0.89), rgba(246, 143, 32, 0.89));
+;
+}
+.co-located-events {
+ background-image: var(--gradient-asf);
+ position: relative;
+ padding-top: calc(var(--val-baseline) * 7);
+}
+.co-located-events::before {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-image: url('../images/colocated-events-bg.webp');
+ background-size: cover;
+ background-position: center center;
+ opacity: 0.2;
+ top: 0;
+ left: 0;
+}
+.colo-image-wrapper {
+ position: relative;
+ width: 100%;
+ aspect-ratio: 16 / 9;
+ overflow: hidden;
+ border-radius: 8px;
+ margin-bottom: 20px;
+}
+.colo-image-wrapper img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+.event-gallery {
+ background-image: linear-gradient(45deg, #242256, #712572)
+}
+#in-page-nav {
+ position: sticky;
+ top: 100px;
+ background-color: #d84b27;
+ padding: 20px;
+ z-index: 2;
+ border-radius: 8px;
+}
+#in-page-nav ul {
+ list-style: none;
+ padding-left: 0;
+ margin: 0;
+}
+#in-page-nav li {
+ margin-bottom: 15px;
+}
+#in-page-nav a {
+ color: #fff;
+ font-weight: 700;
+ text-transform: uppercase;
+ padding: 5px 15px;
+ font-size: 16px;
+ display: block;
+}
+#in-page-nav a:hover, #in-page-nav a.current-section {
+ background-color: #fff;
+ color: #d84b27;
+}
+.event-content {
+ padding-left: 50px;
+}
+
+@media (max-width: 1200px) {
+
+}
+@media (max-width: 1000px) {
+ :root {
+ --val-baseline: 15px;
+ }
+ html {
+ font-size: 16px;
+ }
+ .flex-col-1000 {
+ flex-direction: column;
+ }
+ .flex-col-reverse-1000 {
+ flex-direction: column-reverse;
+ }
+ .hero::after, .home-attendees::after, .co-located-events::after {
+ height: 75px;
+ }
+ .nav-toggle {
+ display: block;
+ position: absolute;
+ top: 30px;
+ right: 30px;
+ cursor: pointer;
+ z-index: 3;
+ display: flex;
+ flex-direction: column;
+ gap: 5px;
+ }
+ .nav-toggle span {
+ display: block;
+ width: 25px;
+ height: 3px;
+ background-color: var(--color-purple);
+ transition: all 0.1s cubic-bezier(0.165, 0.84, 0.44, 1);
+ }
+ #header-main nav {
+ position: fixed;
+ top: 0%;
+ right: 0;
+ background-color: #fff;
+ width: 300px;
+ height: 100vh;
+ padding-top: 100px;
+ transform: translateX(100%);
+ transition: transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1);
+ }
+
+ #header-main nav.open {
+ transform: translateX(0);
+ }
+ #header-main .nav-toggle.open #nav-top {
+ transform: translateY(8px) rotate(45deg);
+ }
+ #header-main .nav-toggle.open #nav-mid {
+ width: 0;
+ }
+ #header-main .nav-toggle.open #nav-btm {
+ transform: translateY(-8px) rotate(-45deg);
+ }
+ #header-main nav ul {
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: flex-start;
+ border: none;
+ }
+ #header-main nav li {
+ border: none;
+ height: auto;
+ width: 100%;
+ margin-bottom: 10px;
+ }
+ #header-main nav a {
+ height: auto;
+ padding: 5px 15px;
+ }
+ #header-main nav ul.sub-menu {
+ position: static;
+ background-color: transparent;
+ color: #712572;
+ min-width: 100%;
+ border: none;
+ height: auto;
+ box-shadow: none;
+ padding-left: 20px;
+ display: block;
+ }
+ #header-main nav a {
+ font-size: 20px;
+ }
+ #header-main nav ul.sub-menu li a {
+ color: #712572;
+ font-size: 18px;
+ font-weight: 600;
+ padding: 0px;
+ }
+ #header-main nav li.has-sub-menu >a::after {
+ display: none;
+ }
+ .hero--home .hero__content {
+ text-align: center;
+ }
+}
+@media (max-width: 800px) {
+ :root {
+ --val-baseline: 10px;
+ }
+ .flex-col-800 {
+ flex-direction: column;
+ }
+ .flex-col-reverse-800 {
+ flex-direction: column-reverse;
+ }
+ .flex-gap-50 {
+ gap: 25px;
+ }
+ .flex-gap-30 {
+ gap: 15px;
+ }
+ h1 {
+ font-size: 2.8rem;
+ }
+ h2 {
+ font-size: 2rem;
+ }
+ .table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th {
+ font-size: 14px;
+ padding: 5px 10px;
+ }
+ .events-news .inner {
+ padding-top: 50vw;
+ }
+ .events-news-spacer {
+ display: none;
+ }
+ .events-news-list {
+ width: 100%
+ }
+ .home-main-content .inner {
+ display: flex;
+ flex-direction: column-reverse;
+ }
+ .home-main-content .inner .float50 {width: 100%;}
+ .sticky-mosaic {
+ position: static;
+ transform: none;
+ top: auto;
+ }
+ .mosaic {
+ width: 100%;
+ aspect-ratio: auto;
+ margin-bottom: 60px;
+ }
+ .mosaic__item {
+ opacity: 1;
+ transform: none;
+ }
+ .float50.main-content.pr-large {
+ padding-right: 0px;
+ }
+ .mosaic-content {
+ height: auto;
+ }
+ .events-grid.grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+ .hero--mosaic .flex-gap-50 {
+ gap:0;
+ }
+ .hero__collage {
+ width: 140vw;
+ transform: translateX(-20vw);
+ }
+ .collage {
+ grid-template-columns: repeat(4, 1fr);
+ position: staic;
+ top: auto;
+ position: relative;
+ }
+ .image__wrapper:nth-child(2n) {
+ transform: none;
+ }
+ .image__wrapper:nth-child(1), .image__wrapper:nth-child(2),.image__wrapper:nth-child(3), .image__wrapper:nth-child(4) {
+ transform: translateX(-50%);
+ }
+ .image__wrapper {
+ aspect-ratio: 3 / 4;
+ }
+ .collage {
+ gap: 5px;
+ }
+ .vision-items.grid.grid-2-cols {
+ grid-template-columns: 1fr;
+ gap: 20px
+ }
+ .float50.sticky-image {
+ display: none;;
+ }
+ .timeline-content-wrapper {
+ float:none;
+ width: 100%;
+ padding-left: 0px;
+ }
+ .timeline-content::after {
+ display: none;
+ }
+ /* single event */
+ .hero__logo {
+ max-width: 250px;
+ margin: 0 auto;
+ }
+ .hero__content {
+ text-align: center;
+ }
+ .sponsor-logos {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 0px
+ }
+ .sponsor-logos.sponsor-logos--gold {
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
+ }
+ .sponsor-logos.sponsor-logos--silver {
+ grid-template-columns: repeat(auto-fit, minmax(125px, 1fr));
+ }
+ .sponsor-logos.sponsor-logos--bronze {
+ grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
+ }
+ .sponsor-logos.sponsor-logos--lightning_talks {
+ grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
+ }
+ .sponsor-logo, .sponsor-logos.sponsor-logos--gold .sponsor-logo, .sponsor-logos.sponsor-logos--silver .sponsor-logo, .sponsor-logos.sponsor-logos--bronze .sponsor-logo, .sponsor-logos.sponsor-logos--lightning_talks .sponsor-logo {
+ width: 100%;
+ }
+ #in-page-nav.float33 {
+ float: none;
+ width: 100%;
+ margin-bottom: 20px;
+ padding: 10px;
+ background-color: rgba(255, 255, 255, 0.9);
+ top: 0px;
+ }
+ .event-content.float66, .float33.full-width-800 {
+ float: none;
+ width: 100%;
+ padding-left: 0px;
+ }
+ #in-page-nav ul {
+ display: flex;
+ gap: 10px;
+ flex-wrap: wrap;
+ justify-content: center;
+ }
+ #in-page-nav li {
+ margin-bottom: 0px;
+ }
+ #in-page-nav a {
+ font-size: 12px;
+ padding: 0px 5px;
+ color: #fff;
+ background-color: #d84b27;
+ border: 1px solid#d84b27;
+ border-radius: 5px;
+ }
+ #in-page-nav a:hover, #in-page-nav a.current-section {
+ background-color: #fff;
+ color: #d84b27;
+ }
+ .hero-ctas {
+ display: flex;
+ gap: 10px;
+ justify-content: center;
+ flex-wrap: wrap;
+ }
+}
+@media (max-width: 600px) {
+ .flex-col-600 {
+ flex-direction: column;
+ }
+ .flex-col-reverse-600 {
+ flex-direction: column-reverse;
+ }
+ .gallery-wrapper {
+ aspect-ratio: 4 / 3;
+ }
+ .countdown {
+ gap: 10px;
+ }
+ .card.countdown__box {
+ padding: 10px;
+ gap: 10px;
+ }
+ .countdown__number {
+ font-size: 1.5rem;
+ }
+ .countdown__label {
+ font-size: 12px;
+ }
+ .co-located-events-list.flex {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 20px;
+ }
+ .faq-question h3 {
+ font-size: 1.1rem;
+ }
+}
\ No newline at end of file
diff --git a/output/events/.DS_Store b/output/events/.DS_Store
new file mode 100644
index 0000000..c9d5d72
Binary files /dev/null and b/output/events/.DS_Store differ
diff --git a/output/events/apache-bigdata-eu-2015.html b/output/events/apache-bigdata-eu-2015.html
new file mode 100644
index 0000000..ab47700
--- /dev/null
+++ b/output/events/apache-bigdata-eu-2015.html
@@ -0,0 +1,590 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>Apache BigData EU 2015 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body class="body-apache-bigdata-eu-2015" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+
+ <div class="hero hero--event-home relative" style="background-image: url('');">
+ <div class="inner flex py-xl relative flex-vert-center z1 flex-col-reverse-800 flex-gap-50">
+ <div class="hero__content flex-1">
+ <h1 class="hero__title">
+ Community Over Code
+ <span class="hero__subtitle">Budapest, Hungary</span>
+ </h1>
+ <div class="hero-event-dates text-white">September 28-30, 2015</div>
+ <div class="hero-ctas flex flex-gap-20 flex-wrap">
+ </div>
+ </div>
+ <div class="hero__logo flex-1">
+ <img src="/images/CoC-logo-white.webp" alt="Community Over Code logo" class="hero__logo-image">
+ </div>
+ </div>
+ <script>
+ // Countdown timer script
+ let countdownInterval;
+
+ function updateCountdown() {
+ const countdownWrapper = document.getElementById('countdown-wrapper');
+ const targetDate = new Date(countdownWrapper.getAttribute('data-date')).getTime();
+ const now = new Date().getTime();
+ const distance = targetDate - now;
+ if(distance > 0) {
+ countdownWrapper.classList.add('show');
+ } else {
+ clearInterval(countdownInterval); // Stop the interval
+ // remove countdown from the dom
+ countdownWrapper.remove();
+ return;
+ }
+
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ document.getElementById('cd-days').textContent = String(days).padStart(2, '0');
+ document.getElementById('cd-hours').textContent = String(hours).padStart(2, '0');
+ document.getElementById('cd-minutes').textContent = String(minutes).padStart(2, '0');
+ document.getElementById('cd-seconds').textContent = String(seconds).padStart(2, '0');
+ }
+
+ countdownInterval = setInterval(updateCountdown, 1000);
+ updateCountdown(); // Initial call to set values immediately
+ </script>
+ <div id="countdown-wrapper" class="countdown" data-date="2015-09-28">
+ <div class="countdown__box card">
+ <span id="cd-days" class="countdown__number">00</span>
+ <span class="countdown__label">Days</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-hours" class="countdown__number">00</span>
+ <span class="countdown__label">Hours</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-minutes" class="countdown__number">00</span>
+ <span class="countdown__label">Minutes</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-seconds" class="countdown__number">00</span>
+ <span class="countdown__label">Seconds</span>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent maincontent--single-event">
+ <div class="inner flex-col-800 flex pt-xl">
+ <div class="flex-1"></div>
+ <div class="flex-2">
+ <h2>Event Info</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/archive/2015/apache-big-data-europe" target="_blank">Press Release</a></p>
+<hr/>
+<h2>Schedules</h2>
+<p><a class="btn" href="https://apachebigdata2015.sched.com/" target="_blank">Schedule</a></p>
+<hr/>
+<h2>Slides</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/archive/2015/apache-big-data-europe/program/slides" target="_blank">Slides</a></p>
+<hr/>
+<h2>Pictures</h2>
+<p><a class="btn" href="https://www.flickr.com/photos/linuxfoundation/albums/72157658784463958" target="_blank">Flickr Album</a></p>
+<hr/>
+
+ </div>
+ </div>
+ </section>
+ <!--
+ NOTE: For this section to work, to update the sponsors.json file in the event directory.
+ - Add all of your sponsors to the appropriate category (diamond, gold, silver).
+ - Make sure to include the sponsor's name, logo URL, and link URL in the JSON file.
+ - update the asfdata.yaml file to include the path to your sponsors.json file under the sponsors key, using a unique key for your event (e.g., glasgow-2026).
+ - in the event landing page meta data, set the sponsorskey to match the key you used in asfdata.yaml (e.g., glasgow-2026)
+ -->
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/events/apache-bigdata-eu-2016.html b/output/events/apache-bigdata-eu-2016.html
new file mode 100644
index 0000000..713a026
--- /dev/null
+++ b/output/events/apache-bigdata-eu-2016.html
@@ -0,0 +1,590 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>Apache BigData EU 2016 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body class="body-apache-bigdata-eu-2016" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+
+ <div class="hero hero--event-home relative" style="background-image: url('');">
+ <div class="inner flex py-xl relative flex-vert-center z1 flex-col-reverse-800 flex-gap-50">
+ <div class="hero__content flex-1">
+ <h1 class="hero__title">
+ Community Over Code
+ <span class="hero__subtitle">Seville, Spain</span>
+ </h1>
+ <div class="hero-event-dates text-white">November 14-16, 2016</div>
+ <div class="hero-ctas flex flex-gap-20 flex-wrap">
+ </div>
+ </div>
+ <div class="hero__logo flex-1">
+ <img src="/images/CoC-logo-white.webp" alt="Community Over Code logo" class="hero__logo-image">
+ </div>
+ </div>
+ <script>
+ // Countdown timer script
+ let countdownInterval;
+
+ function updateCountdown() {
+ const countdownWrapper = document.getElementById('countdown-wrapper');
+ const targetDate = new Date(countdownWrapper.getAttribute('data-date')).getTime();
+ const now = new Date().getTime();
+ const distance = targetDate - now;
+ if(distance > 0) {
+ countdownWrapper.classList.add('show');
+ } else {
+ clearInterval(countdownInterval); // Stop the interval
+ // remove countdown from the dom
+ countdownWrapper.remove();
+ return;
+ }
+
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ document.getElementById('cd-days').textContent = String(days).padStart(2, '0');
+ document.getElementById('cd-hours').textContent = String(hours).padStart(2, '0');
+ document.getElementById('cd-minutes').textContent = String(minutes).padStart(2, '0');
+ document.getElementById('cd-seconds').textContent = String(seconds).padStart(2, '0');
+ }
+
+ countdownInterval = setInterval(updateCountdown, 1000);
+ updateCountdown(); // Initial call to set values immediately
+ </script>
+ <div id="countdown-wrapper" class="countdown" data-date="2016-11-14">
+ <div class="countdown__box card">
+ <span id="cd-days" class="countdown__number">00</span>
+ <span class="countdown__label">Days</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-hours" class="countdown__number">00</span>
+ <span class="countdown__label">Hours</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-minutes" class="countdown__number">00</span>
+ <span class="countdown__label">Minutes</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-seconds" class="countdown__number">00</span>
+ <span class="countdown__label">Seconds</span>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent maincontent--single-event">
+ <div class="inner flex-col-800 flex pt-xl">
+ <div class="flex-1"></div>
+ <div class="flex-2">
+ <h2>Event Info</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/apache-big-data-europe" target="_blank">Press Release</a></p>
+<hr/>
+<h2>Schedules</h2>
+<p><a class="btn" href="https://apachebigdataeu2016.sched.com/" target="_blank">Schedule</a></p>
+<hr/>
+<h2>Feathercast</h2>
+<p><a class="btn" href="https://feathercast.apache.org/tag/seville/" target="_blank">Feathercast Playlist</a></p>
+<hr/>
+<h2>Pictures</h2>
+<p><a class="btn" href="https://www.flickr.com/photos/rbowen/albums/72157676659083335" target="_blank">Flickr Album</a></p>
+<hr/>
+
+ </div>
+ </div>
+ </section>
+ <!--
+ NOTE: For this section to work, to update the sponsors.json file in the event directory.
+ - Add all of your sponsors to the appropriate category (diamond, gold, silver).
+ - Make sure to include the sponsor's name, logo URL, and link URL in the JSON file.
+ - update the asfdata.yaml file to include the path to your sponsors.json file under the sponsors key, using a unique key for your event (e.g., glasgow-2026).
+ - in the event landing page meta data, set the sponsorskey to match the key you used in asfdata.yaml (e.g., glasgow-2026)
+ -->
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/events/apache-bigdata-na-2016.html b/output/events/apache-bigdata-na-2016.html
new file mode 100644
index 0000000..cf06c3e
--- /dev/null
+++ b/output/events/apache-bigdata-na-2016.html
@@ -0,0 +1,590 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>Apache BigData NA 2016 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body class="body-apache-bigdata-na-2016" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+
+ <div class="hero hero--event-home relative" style="background-image: url('');">
+ <div class="inner flex py-xl relative flex-vert-center z1 flex-col-reverse-800 flex-gap-50">
+ <div class="hero__content flex-1">
+ <h1 class="hero__title">
+ Community Over Code
+ <span class="hero__subtitle">Vancouver, BC</span>
+ </h1>
+ <div class="hero-event-dates text-white">May 9-12, 2016</div>
+ <div class="hero-ctas flex flex-gap-20 flex-wrap">
+ </div>
+ </div>
+ <div class="hero__logo flex-1">
+ <img src="/images/CoC-logo-white.webp" alt="Community Over Code logo" class="hero__logo-image">
+ </div>
+ </div>
+ <script>
+ // Countdown timer script
+ let countdownInterval;
+
+ function updateCountdown() {
+ const countdownWrapper = document.getElementById('countdown-wrapper');
+ const targetDate = new Date(countdownWrapper.getAttribute('data-date')).getTime();
+ const now = new Date().getTime();
+ const distance = targetDate - now;
+ if(distance > 0) {
+ countdownWrapper.classList.add('show');
+ } else {
+ clearInterval(countdownInterval); // Stop the interval
+ // remove countdown from the dom
+ countdownWrapper.remove();
+ return;
+ }
+
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ document.getElementById('cd-days').textContent = String(days).padStart(2, '0');
+ document.getElementById('cd-hours').textContent = String(hours).padStart(2, '0');
+ document.getElementById('cd-minutes').textContent = String(minutes).padStart(2, '0');
+ document.getElementById('cd-seconds').textContent = String(seconds).padStart(2, '0');
+ }
+
+ countdownInterval = setInterval(updateCountdown, 1000);
+ updateCountdown(); // Initial call to set values immediately
+ </script>
+ <div id="countdown-wrapper" class="countdown" data-date="2016-05-09">
+ <div class="countdown__box card">
+ <span id="cd-days" class="countdown__number">00</span>
+ <span class="countdown__label">Days</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-hours" class="countdown__number">00</span>
+ <span class="countdown__label">Hours</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-minutes" class="countdown__number">00</span>
+ <span class="countdown__label">Minutes</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-seconds" class="countdown__number">00</span>
+ <span class="countdown__label">Seconds</span>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent maincontent--single-event">
+ <div class="inner flex-col-800 flex pt-xl">
+ <div class="flex-1"></div>
+ <div class="flex-2">
+ <h2>Event Info</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/archive/2016/apache-big-data-north-america" target="_blank">Press Release</a></p>
+<hr/>
+<h2>Schedules</h2>
+<p><a class="btn" href="https://apachebigdata2016.sched.com/" target="_blank">Schedule</a></p>
+<hr/>
+<h2>Feathercast</h2>
+<p><a class="btn" href="https://feathercast.apache.org/tag/apachebigdatana2016/" target="_blank">Feathercast Playlist</a></p>
+<hr/>
+<h2>Pictures</h2>
+<p><a class="btn" href="https://www.flickr.com/photos/linuxfoundation/albums/72157667921417972" target="_blank">Flickr Album</a></p>
+<hr/>
+
+ </div>
+ </div>
+ </section>
+ <!--
+ NOTE: For this section to work, to update the sponsors.json file in the event directory.
+ - Add all of your sponsors to the appropriate category (diamond, gold, silver).
+ - Make sure to include the sponsor's name, logo URL, and link URL in the JSON file.
+ - update the asfdata.yaml file to include the path to your sponsors.json file under the sponsors key, using a unique key for your event (e.g., glasgow-2026).
+ - in the event landing page meta data, set the sponsorskey to match the key you used in asfdata.yaml (e.g., glasgow-2026)
+ -->
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/events/apache-bigdata-na-2017.html b/output/events/apache-bigdata-na-2017.html
new file mode 100644
index 0000000..5fa0dfa
--- /dev/null
+++ b/output/events/apache-bigdata-na-2017.html
@@ -0,0 +1,593 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>Apache BigData NA 2017 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body class="body-apache-bigdata-na-2017" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+
+ <div class="hero hero--event-home relative" style="background-image: url('');">
+ <div class="inner flex py-xl relative flex-vert-center z1 flex-col-reverse-800 flex-gap-50">
+ <div class="hero__content flex-1">
+ <h1 class="hero__title">
+ Community Over Code
+ <span class="hero__subtitle">Miami, FL</span>
+ </h1>
+ <div class="hero-event-dates text-white">May 16-18, 2017</div>
+ <div class="hero-ctas flex flex-gap-20 flex-wrap">
+ </div>
+ </div>
+ <div class="hero__logo flex-1">
+ <img src="/images/CoC-logo-white.webp" alt="Community Over Code logo" class="hero__logo-image">
+ </div>
+ </div>
+ <script>
+ // Countdown timer script
+ let countdownInterval;
+
+ function updateCountdown() {
+ const countdownWrapper = document.getElementById('countdown-wrapper');
+ const targetDate = new Date(countdownWrapper.getAttribute('data-date')).getTime();
+ const now = new Date().getTime();
+ const distance = targetDate - now;
+ if(distance > 0) {
+ countdownWrapper.classList.add('show');
+ } else {
+ clearInterval(countdownInterval); // Stop the interval
+ // remove countdown from the dom
+ countdownWrapper.remove();
+ return;
+ }
+
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ document.getElementById('cd-days').textContent = String(days).padStart(2, '0');
+ document.getElementById('cd-hours').textContent = String(hours).padStart(2, '0');
+ document.getElementById('cd-minutes').textContent = String(minutes).padStart(2, '0');
+ document.getElementById('cd-seconds').textContent = String(seconds).padStart(2, '0');
+ }
+
+ countdownInterval = setInterval(updateCountdown, 1000);
+ updateCountdown(); // Initial call to set values immediately
+ </script>
+ <div id="countdown-wrapper" class="countdown" data-date="2017-05-16">
+ <div class="countdown__box card">
+ <span id="cd-days" class="countdown__number">00</span>
+ <span class="countdown__label">Days</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-hours" class="countdown__number">00</span>
+ <span class="countdown__label">Hours</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-minutes" class="countdown__number">00</span>
+ <span class="countdown__label">Minutes</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-seconds" class="countdown__number">00</span>
+ <span class="countdown__label">Seconds</span>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent maincontent--single-event">
+ <div class="inner flex-col-800 flex pt-xl">
+ <div class="flex-1"></div>
+ <div class="flex-2">
+ <h2>Event Info</h2>
+<p><a class="btn" href="https://www.linuxfoundation.org/press-release/apachecon-apache-big-data-2017-to-feature-unparalleled-educational-content-plus-co-located-events-networking-activities-and-more/" target="_blank">Press Release</a></p>
+<hr/>
+<h2>Schedules</h2>
+<p><a class="btn" href="https://apachebigdata2017.sched.com/" target="_blank">Schedule</a></p>
+<hr/>
+<h2>YouTube Videos</h2>
+<p><a class="btn" href="https://www.youtube.com/playlist?list=PLbzoR-pLrL6pLDCyPxByWQwYTL-JrF5Rp/" target="_blank">YouTube Playlist</a></p>
+<hr/>
+<h2>Feathercast</h2>
+<p><a class="btn" href="https://feathercast.apache.org/tag/apachebigdata-na-2017/" target="_blank">Feathercast Playlist</a></p>
+<hr/>
+<h2>Pictures</h2>
+<p><a class="btn" href="https://www.flickr.com/photos/linuxfoundation/albums/72157681981485090" target="_blank">Flickr Album</a></p>
+<hr/>
+
+ </div>
+ </div>
+ </section>
+ <!--
+ NOTE: For this section to work, to update the sponsors.json file in the event directory.
+ - Add all of your sponsors to the appropriate category (diamond, gold, silver).
+ - Make sure to include the sponsor's name, logo URL, and link URL in the JSON file.
+ - update the asfdata.yaml file to include the path to your sponsors.json file under the sponsors key, using a unique key for your event (e.g., glasgow-2026).
+ - in the event landing page meta data, set the sponsorskey to match the key you used in asfdata.yaml (e.g., glasgow-2026)
+ -->
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/events/apachecon-1998.html b/output/events/apachecon-1998.html
new file mode 100644
index 0000000..4d7950f
--- /dev/null
+++ b/output/events/apachecon-1998.html
@@ -0,0 +1,614 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>ApacheCon 1998 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body class="body-apachecon-1998" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+
+ <div class="hero hero--event-home relative" style="background-image: url('');">
+ <div class="inner flex py-xl relative flex-vert-center z1 flex-col-reverse-800 flex-gap-50">
+ <div class="hero__content flex-1">
+ <h1 class="hero__title">
+ Community Over Code
+ <span class="hero__subtitle">San Francisco, CA</span>
+ </h1>
+ <div class="hero-event-dates text-white">October 14-16, 1998</div>
+ <div class="hero-ctas flex flex-gap-20 flex-wrap">
+ </div>
+ </div>
+ <div class="hero__logo flex-1">
+ <img src="/images/CoC-logo-white.webp" alt="Community Over Code logo" class="hero__logo-image">
+ </div>
+ </div>
+ <script>
+ // Countdown timer script
+ let countdownInterval;
+
+ function updateCountdown() {
+ const countdownWrapper = document.getElementById('countdown-wrapper');
+ const targetDate = new Date(countdownWrapper.getAttribute('data-date')).getTime();
+ const now = new Date().getTime();
+ const distance = targetDate - now;
+ if(distance > 0) {
+ countdownWrapper.classList.add('show');
+ } else {
+ clearInterval(countdownInterval); // Stop the interval
+ // remove countdown from the dom
+ countdownWrapper.remove();
+ return;
+ }
+
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ document.getElementById('cd-days').textContent = String(days).padStart(2, '0');
+ document.getElementById('cd-hours').textContent = String(hours).padStart(2, '0');
+ document.getElementById('cd-minutes').textContent = String(minutes).padStart(2, '0');
+ document.getElementById('cd-seconds').textContent = String(seconds).padStart(2, '0');
+ }
+
+ countdownInterval = setInterval(updateCountdown, 1000);
+ updateCountdown(); // Initial call to set values immediately
+ </script>
+ <div id="countdown-wrapper" class="countdown" data-date="1998-10-14">
+ <div class="countdown__box card">
+ <span id="cd-days" class="countdown__number">00</span>
+ <span class="countdown__label">Days</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-hours" class="countdown__number">00</span>
+ <span class="countdown__label">Hours</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-minutes" class="countdown__number">00</span>
+ <span class="countdown__label">Minutes</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-seconds" class="countdown__number">00</span>
+ <span class="countdown__label">Seconds</span>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent maincontent--single-event">
+ <div class="inner flex-col-800 flex pt-xl">
+ <div class="flex-1"></div>
+ <div class="flex-2">
+ <!--
+ Fill out all meta info above. It will be used in the page template to create the page
+ start_date: used for event countdown and meta tags. Format: YYYY-MM-DD
+ end_date: used for event countdown and meta tags. Format: YYYY-MM-DD
+ location: used in hero section and meta tags
+ registration_link: OPTIONAL- URL for the registration page. If not provided, the "Register Now" button will not be shown.
+ registration_link_text: OPTIONAL- Text for the registration button. If not provided, the "Register Now" button will not be shown.
+ banner_text: OPTIONAL- Text for the banner at the top of the page. If not provided, the banner will not be shown.
+ banner_link: OPTIONAL- URL for the banner link. If not provided, the banner will not be clickable.
+ banner_link_text: OPTIONAL- Text for the banner link. If not provided, the banner will not
+ sponsors_key: used to link the sponsors data from asfdata.yaml to this event. Make sure to add the sponsors data in asfdata.yaml with the same key.
+-->
+<h2>Report from ApacheCon '98</h2>
+<p>This is a report about the first ever conference dedicated to Apache, held in October 1998 in San Franscisco.</p>
+<p>First published 16th October 1998.</p>
+<p>The conference ran from October 14th to October 16th, at the San Francisco Hilton in California, USA. This is the largest hotel in San Francisco, and is located in the downtown area. In total, just under 500 people registered for the conference. While most people came from the US and Canada, there were also a signficant number of people from Europe. For the first conference on Apache, this was a very good attendence, and the exhibitors and sponsors were very happy with the number of p [...]
+<p>This article contains some links to pictures taken at the conference. Some additional pictures are also available.</p>
+<h2>The keynote speeches</h2>
+<p>The first general session on the 14th started with a keynote speech from author Bruce Sterling (picture). This was not directly related to Apache, but contained Bruce's thoughts on the future of a networked society.</p>
+<p>This was followed by another keynote, from John Gilmore of the Electronic Frontier Foundation (EFF) (picture). The EFF is an organisation concerned with freedom and liberties in computing and the Internet. He outlined objections to software patents, and covered the problems caused by the US export restrictions on secure encryption. Decisions about what is exportable and what is not exportable from the US are made by government employees, without any ability to appeal. Even worse, gove [...]
+<p>The first talk on the second day was by John Patrick from IBM (picture). He talked about his view of how the Internet will evolve. In the last session, David Filo from Yahoo! showed how Yahoo! has used open source software (picture). They started by using commercial operating systems and home-written web servers, but had problems with vendors not being able to scale to the huge number of hits they soon received. They moved to FreeBSD so they could read and if necessary tweak the opera [...]
+<h2>The Talks</h2>
+<p>There were four parallel tracks running throughout the conference, with a total of 55 talks. The tracks were Dynamic Content, Performance, Security and Case Studies.</p>
+<p>On the Dynamic Content track there were talks about using Java servlets at beginner, advanced, and performance levels. Two talks about PHP showed beginner and advanced techniques. There were also talks on writing Apache modules and mod_perl (although unfortunately the first mod_perl session could not be given by the original presenter and the second advanced session had to be cancelled).</p>
+<p>The Performance track covered making Apache go faster on Windows and Unix systems, using servlets efficiently, and tweaking Linux and FreeBSD. Also on this track was a presentation on how the Netscape Portable Runtime (NSPR) package (available under Netscape's NPL license) could be integrated with Apache to provide a multi-threading Apache on all Unix platforms as well as NT. There was also a talk about how the Apache development process works and how people with contributions can get [...]
+<p>On the Security track the talk about the new mod_ssl package was popular. The author presented what mod_ssl does and why it was created from the existing Apache-SSL package. Also on this track was an introduction to SSL and TLS, basic security issues in Apache, NT security, and a panel on public key infrastructure on the Web.</p>
+<p>The final track had Case Studies from various companies. This track also contained a demonstration of various GUI configuration programs for Apache. There are various free and commercial configuration systems in development currently, some of which were demonstrated. This seems to be the start of a more concerted effort to develop a GUI infrastructure within Apache, which will allow multiple front-end implementations.</p>
+<h2>The Exhibition</h2>
+<p>About a dozen companies exhibited at the trade show during the conference (picture). Companies present included IBM, RedHat, C2Net, Sendmail, nCipher, SUSE and O'Reilly. This was a very explicit demonstration of how Apache has built an associated industry, and the exhibitors we talked to were very happy with the quality, interest, and response of people that they met at the conference.</p>
+<h2>Meeting the Apache core</h2>
+<p>The final session was a chance to communicate with the core Apache developers (picture). After introducing each member, there was a short discussion of items of interest to the developers, such as plans for 2.0. This was followed by an open session for questions from the floor. Questions covered a range of topics, from IBM's involvement with the Apache group (they have several people working full time on Apache and will contribute back changes) to a request for Apache incorporate SSL [...]
+<h2>Future plans</h2>
+<p>This was the first conference about Apache, and the first conference ever organised by the Apache Group. The result was a very successful conference, where sponsors, exhibitors and attendees were all happy. The success of the conference means that there will be another ApacheCon in the future, but the location and dates have not yet been decided. As soon as anything is known, it will be announced in Apache Week.</p>
+<h2>Pictures</h2>
+<p><a href="https://www.flickr.com/photos/paulau/sets/72157720300544128/">Pictures from the conference</a></p>
+<hr/>
+
+ </div>
+ </div>
+ </section>
+ <!--
+ NOTE: For this section to work, to update the sponsors.json file in the event directory.
+ - Add all of your sponsors to the appropriate category (diamond, gold, silver).
+ - Make sure to include the sponsor's name, logo URL, and link URL in the JSON file.
+ - update the asfdata.yaml file to include the path to your sponsors.json file under the sponsors key, using a unique key for your event (e.g., glasgow-2026).
+ - in the event landing page meta data, set the sponsorskey to match the key you used in asfdata.yaml (e.g., glasgow-2026)
+ -->
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/events/apachecon-eu-2014.html b/output/events/apachecon-eu-2014.html
new file mode 100644
index 0000000..3203c64
--- /dev/null
+++ b/output/events/apachecon-eu-2014.html
@@ -0,0 +1,590 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>ApacheCon EU 2014 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body class="body-apachecon-eu-2014" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+
+ <div class="hero hero--event-home relative" style="background-image: url('');">
+ <div class="inner flex py-xl relative flex-vert-center z1 flex-col-reverse-800 flex-gap-50">
+ <div class="hero__content flex-1">
+ <h1 class="hero__title">
+ Community Over Code
+ <span class="hero__subtitle">Budapest, Hungary</span>
+ </h1>
+ <div class="hero-event-dates text-white">November 17-20, 2014</div>
+ <div class="hero-ctas flex flex-gap-20 flex-wrap">
+ </div>
+ </div>
+ <div class="hero__logo flex-1">
+ <img src="/images/CoC-logo-white.webp" alt="Community Over Code logo" class="hero__logo-image">
+ </div>
+ </div>
+ <script>
+ // Countdown timer script
+ let countdownInterval;
+
+ function updateCountdown() {
+ const countdownWrapper = document.getElementById('countdown-wrapper');
+ const targetDate = new Date(countdownWrapper.getAttribute('data-date')).getTime();
+ const now = new Date().getTime();
+ const distance = targetDate - now;
+ if(distance > 0) {
+ countdownWrapper.classList.add('show');
+ } else {
+ clearInterval(countdownInterval); // Stop the interval
+ // remove countdown from the dom
+ countdownWrapper.remove();
+ return;
+ }
+
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ document.getElementById('cd-days').textContent = String(days).padStart(2, '0');
+ document.getElementById('cd-hours').textContent = String(hours).padStart(2, '0');
+ document.getElementById('cd-minutes').textContent = String(minutes).padStart(2, '0');
+ document.getElementById('cd-seconds').textContent = String(seconds).padStart(2, '0');
+ }
+
+ countdownInterval = setInterval(updateCountdown, 1000);
+ updateCountdown(); // Initial call to set values immediately
+ </script>
+ <div id="countdown-wrapper" class="countdown" data-date="2014-11-17">
+ <div class="countdown__box card">
+ <span id="cd-days" class="countdown__number">00</span>
+ <span class="countdown__label">Days</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-hours" class="countdown__number">00</span>
+ <span class="countdown__label">Hours</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-minutes" class="countdown__number">00</span>
+ <span class="countdown__label">Minutes</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-seconds" class="countdown__number">00</span>
+ <span class="countdown__label">Seconds</span>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent maincontent--single-event">
+ <div class="inner flex-col-800 flex pt-xl">
+ <div class="flex-1"></div>
+ <div class="flex-2">
+ <h2>Event Info</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/archive/2014/apachecon-europe" target="_blank">Press Release</a></p>
+<hr/>
+<h2>Schedules</h2>
+<p><a class="btn" href="https://apacheconeu2014.sched.com/" target="_blank">Schedule</a></p>
+<hr/>
+<h2>Slides</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/archive/2014/apachecon-europe/program/slides" target="_blank">Slides</a></p>
+<hr/>
+<h2>Pictures</h2>
+<p><a class="btn" href="https://www.flickr.com/photos/linuxfoundation/albums/72157648942693628" target="_blank">Flickr Album</a></p>
+<hr/>
+
+ </div>
+ </div>
+ </section>
+ <!--
+ NOTE: For this section to work, to update the sponsors.json file in the event directory.
+ - Add all of your sponsors to the appropriate category (diamond, gold, silver).
+ - Make sure to include the sponsor's name, logo URL, and link URL in the JSON file.
+ - update the asfdata.yaml file to include the path to your sponsors.json file under the sponsors key, using a unique key for your event (e.g., glasgow-2026).
+ - in the event landing page meta data, set the sponsorskey to match the key you used in asfdata.yaml (e.g., glasgow-2026)
+ -->
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/events/apachecon-eu-2015.html b/output/events/apachecon-eu-2015.html
new file mode 100644
index 0000000..cb4f045
--- /dev/null
+++ b/output/events/apachecon-eu-2015.html
@@ -0,0 +1,590 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>ApacheCon EU 2015 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body class="body-apachecon-eu-2015" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+
+ <div class="hero hero--event-home relative" style="background-image: url('');">
+ <div class="inner flex py-xl relative flex-vert-center z1 flex-col-reverse-800 flex-gap-50">
+ <div class="hero__content flex-1">
+ <h1 class="hero__title">
+ Community Over Code
+ <span class="hero__subtitle">Budapest, Hungary</span>
+ </h1>
+ <div class="hero-event-dates text-white">September 30 - October 2, 2015</div>
+ <div class="hero-ctas flex flex-gap-20 flex-wrap">
+ </div>
+ </div>
+ <div class="hero__logo flex-1">
+ <img src="/images/CoC-logo-white.webp" alt="Community Over Code logo" class="hero__logo-image">
+ </div>
+ </div>
+ <script>
+ // Countdown timer script
+ let countdownInterval;
+
+ function updateCountdown() {
+ const countdownWrapper = document.getElementById('countdown-wrapper');
+ const targetDate = new Date(countdownWrapper.getAttribute('data-date')).getTime();
+ const now = new Date().getTime();
+ const distance = targetDate - now;
+ if(distance > 0) {
+ countdownWrapper.classList.add('show');
+ } else {
+ clearInterval(countdownInterval); // Stop the interval
+ // remove countdown from the dom
+ countdownWrapper.remove();
+ return;
+ }
+
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ document.getElementById('cd-days').textContent = String(days).padStart(2, '0');
+ document.getElementById('cd-hours').textContent = String(hours).padStart(2, '0');
+ document.getElementById('cd-minutes').textContent = String(minutes).padStart(2, '0');
+ document.getElementById('cd-seconds').textContent = String(seconds).padStart(2, '0');
+ }
+
+ countdownInterval = setInterval(updateCountdown, 1000);
+ updateCountdown(); // Initial call to set values immediately
+ </script>
+ <div id="countdown-wrapper" class="countdown" data-date="2015-09-30">
+ <div class="countdown__box card">
+ <span id="cd-days" class="countdown__number">00</span>
+ <span class="countdown__label">Days</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-hours" class="countdown__number">00</span>
+ <span class="countdown__label">Hours</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-minutes" class="countdown__number">00</span>
+ <span class="countdown__label">Minutes</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-seconds" class="countdown__number">00</span>
+ <span class="countdown__label">Seconds</span>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent maincontent--single-event">
+ <div class="inner flex-col-800 flex pt-xl">
+ <div class="flex-1"></div>
+ <div class="flex-2">
+ <h2>Event Info</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/archive/2015/apachecon-europe" target="_blank">Press Release</a></p>
+<hr/>
+<h2>Schedules</h2>
+<p><a class="btn" href="https://apacheconcore2015.sched.com/" target="_blank">Schedule</a></p>
+<hr/>
+<h2>Slides</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/archive/2015/apache-big-data-europe/program/slides" target="_blank">Slides</a></p>
+<hr/>
+<h2>Pictures</h2>
+<p><a class="btn" href="https://www.flickr.com/photos/linuxfoundation/albums/72157657216444023" target="_blank">Flickr Album</a></p>
+<hr/>
+
+ </div>
+ </div>
+ </section>
+ <!--
+ NOTE: For this section to work, to update the sponsors.json file in the event directory.
+ - Add all of your sponsors to the appropriate category (diamond, gold, silver).
+ - Make sure to include the sponsor's name, logo URL, and link URL in the JSON file.
+ - update the asfdata.yaml file to include the path to your sponsors.json file under the sponsors key, using a unique key for your event (e.g., glasgow-2026).
+ - in the event landing page meta data, set the sponsorskey to match the key you used in asfdata.yaml (e.g., glasgow-2026)
+ -->
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/events/apachecon-eu-2016.html b/output/events/apachecon-eu-2016.html
new file mode 100644
index 0000000..b57be92
--- /dev/null
+++ b/output/events/apachecon-eu-2016.html
@@ -0,0 +1,590 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>ApacheCon EU 2016 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body class="body-apachecon-eu-2016" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+
+ <div class="hero hero--event-home relative" style="background-image: url('');">
+ <div class="inner flex py-xl relative flex-vert-center z1 flex-col-reverse-800 flex-gap-50">
+ <div class="hero__content flex-1">
+ <h1 class="hero__title">
+ Community Over Code
+ <span class="hero__subtitle">Seville, Spain</span>
+ </h1>
+ <div class="hero-event-dates text-white">November 16-18, 2016</div>
+ <div class="hero-ctas flex flex-gap-20 flex-wrap">
+ </div>
+ </div>
+ <div class="hero__logo flex-1">
+ <img src="/images/CoC-logo-white.webp" alt="Community Over Code logo" class="hero__logo-image">
+ </div>
+ </div>
+ <script>
+ // Countdown timer script
+ let countdownInterval;
+
+ function updateCountdown() {
+ const countdownWrapper = document.getElementById('countdown-wrapper');
+ const targetDate = new Date(countdownWrapper.getAttribute('data-date')).getTime();
+ const now = new Date().getTime();
+ const distance = targetDate - now;
+ if(distance > 0) {
+ countdownWrapper.classList.add('show');
+ } else {
+ clearInterval(countdownInterval); // Stop the interval
+ // remove countdown from the dom
+ countdownWrapper.remove();
+ return;
+ }
+
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ document.getElementById('cd-days').textContent = String(days).padStart(2, '0');
+ document.getElementById('cd-hours').textContent = String(hours).padStart(2, '0');
+ document.getElementById('cd-minutes').textContent = String(minutes).padStart(2, '0');
+ document.getElementById('cd-seconds').textContent = String(seconds).padStart(2, '0');
+ }
+
+ countdownInterval = setInterval(updateCountdown, 1000);
+ updateCountdown(); // Initial call to set values immediately
+ </script>
+ <div id="countdown-wrapper" class="countdown" data-date="2016-11-16">
+ <div class="countdown__box card">
+ <span id="cd-days" class="countdown__number">00</span>
+ <span class="countdown__label">Days</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-hours" class="countdown__number">00</span>
+ <span class="countdown__label">Hours</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-minutes" class="countdown__number">00</span>
+ <span class="countdown__label">Minutes</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-seconds" class="countdown__number">00</span>
+ <span class="countdown__label">Seconds</span>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent maincontent--single-event">
+ <div class="inner flex-col-800 flex pt-xl">
+ <div class="flex-1"></div>
+ <div class="flex-2">
+ <h2>Event Info</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/apachecon-europe" target="_blank">Press Release</a></p>
+<hr/>
+<h2>Schedules</h2>
+<p><a class="btn" href="https://apacheconeu2016.sched.com/" target="_blank">Schedule</a></p>
+<hr/>
+<h2>Feathercast</h2>
+<p><a class="btn" href="https://feathercast.apache.org/tag/seville/" target="_blank">Feathercast Playlist</a></p>
+<hr/>
+<h2>Pictures</h2>
+<p><a class="btn" href="https://www.flickr.com/photos/linuxfoundation/albums/72157676988658345" target="_blank">Flickr Album</a></p>
+<hr/>
+
+ </div>
+ </div>
+ </section>
+ <!--
+ NOTE: For this section to work, to update the sponsors.json file in the event directory.
+ - Add all of your sponsors to the appropriate category (diamond, gold, silver).
+ - Make sure to include the sponsor's name, logo URL, and link URL in the JSON file.
+ - update the asfdata.yaml file to include the path to your sponsors.json file under the sponsors key, using a unique key for your event (e.g., glasgow-2026).
+ - in the event landing page meta data, set the sponsorskey to match the key you used in asfdata.yaml (e.g., glasgow-2026)
+ -->
+
+ <!-- Footer -->
+ <div class="footer-top-border"></div>
+ <footer>
+ <div class="inner py-large flex flex-gap-50">
+ <div class="flex flex-column flex-gap-20 flex-1 text-white">
+ <img src="/images/logos/CommunityOverCode_Logo_stacked-white.webp" width="200" alt="Apache Software Foundation">
+ <p>The Apache® Software Foundation (The ASF) provides software for the public good, guided by community over code. Learn more at apache.org.</p>
+ <p>Apache and the Apache logo are trademarks of The Apache Software Foundation.</p>
+ <p>The Apache® Software Foundation is a 501(c)(3) nonprofit organization. Tax ID # 47-0825376</p>
+ </div>
+ <div class="flex flex-column flex-gap-20 flex-1">
+ <nav class="footer-nav">
+ <ul class="flex flex-column flex-gap-10 ">
+ <li><a href="/events">Events</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ <li><a href="/about#contact-section">Contact</a></li>
+ <li><a href="/code-of-conduct">Code of Conduct</a></li>
+ <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="flex flex-column flex-gap-20 footer-events flex-1">
+ <h2 class="text-heading-light">ASF Events</h2>
+ <div class="card card--footer">
+ <a href="/events/glasgow-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 11-14, 2026</div>
+ <h4>Community Over Code Glasgow 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/asia-2026">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 7-9, 2026</div>
+ <h4>Community Over Code Asia 2026</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/minneapolis-2025">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/denver-2024">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-1998">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://youtube.com/playlist?list=PLnmZetgAnzKo9CQikeJixoGP6K4R7YSxY&si=6GBH0ASZVRPGg9sU">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 11-14, 2025</div>
+ <h4>Community Over Code North America 2025</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2024/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2024</div>
+ <h4>Community Over Code North America 2024</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://communityovercode.org/past-sessions/community-over-code-na-2023/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 7-10, 2023</div>
+ <h4>Community Over Code North America 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.bagevent.com/event/cocasia-2023-EN">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 18-20, 2023</div>
+ <h4>Community Over Code Asia 2023</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna2022/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 2-6, 2022</div>
+ <h4>ApacheCon North America 2022</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acasia2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 6-8, 2021</div>
+ <h4>ApacheCon Asia 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2021/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 21-23, 2021</div>
+ <h4>ApacheCon @Home 2021</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acah2020/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28 - October 1, 2020</div>
+ <h4>ApacheCon @Home 2020</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://aceu19.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 22-24, 2019</div>
+ <h4>ApacheCon EU 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://www.apachecon.com/acna19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 9-12, 2019</div>
+ <h4>ApacheCon NA 2019</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/usroadshowdc19/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 25, 2019</div>
+ <h4>Apache Roadshow</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://apachecon.com/acna18/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 24-27, 2018</div>
+ <h4>ApacheCon NA 2018</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>Apache BigData NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2017/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 16-18, 2017</div>
+ <h4>ApacheCon NA 2017</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 14-16, 2016</div>
+ <h4>Apache BigData EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-18, 2016</div>
+ <h4>ApacheCon EU 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 9-12, 2016</div>
+ <h4>Apache BigData NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2016/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">May 11-13, 2016</div>
+ <h4>ApacheCon NA 2016</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apache-bigdata-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 28-30, 2015</div>
+ <h4>Apache BigData EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">September 30 - October 2, 2015</div>
+ <h4>ApacheCon EU 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2015/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 13-16, 2015</div>
+ <h4>ApacheCon NA 2015</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-eu-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 17-20, 2014</div>
+ <h4>ApacheCon EU 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="/events/apachecon-na-2014/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2014</div>
+ <h4>ApacheCon NA 2014</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na13.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">February 26-28, 2013</div>
+ <h4>ApacheCon NA 2013</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://eu12.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 5-8, 2012</div>
+ <h4>ApacheCon EU 2012</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://na11.apachecon.com/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 7-11, 2011</div>
+ <h4>ApacheCon NA 2011</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="https://archive.apachecon.com/c/acna2010/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 1-5, 2010</div>
+ <h4>ApacheCon NA 2010</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 2-6, 2009</div>
+ <h4>ApacheCon US 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/aceu2009/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 23-27, 2009</div>
+ <h4>ApacheCon EU 2009</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/c/acus2008/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 3-8, 2008</div>
+ <h4>ApacheCon US 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2008">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 7-11, 2008</div>
+ <h4>ApacheCon EU 2008</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/us2007">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 12-16, 2007</div>
+ <h4>ApacheCon US 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/eu2007/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 20 - May 4, 2007</div>
+ <h4>ApacheCon EU 2007</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 9-13, 2006</div>
+ <h4>ApacheCon US 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/Asia/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">August 14-17, 2006</div>
+ <h4>ApacheCon Asia 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2006/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">June 26-30, 2006</div>
+ <h4>ApacheCon EU 2006</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">December 10-14, 2005</div>
+ <h4>ApacheCon US 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2005/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">July 18-22, 2005</div>
+ <h4>ApacheCon EU 2005</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2004/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 13-17, 2004</div>
+ <h4>ApacheCon US 2004</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2003/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 16-19, 2003</div>
+ <h4>ApacheCon US 2003</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2002/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">November 18-21, 2002</div>
+ <h4>ApacheCon US 2002</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2001/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">April 4-6, 2001</div>
+ <h4>ApacheCon US 2001</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/EU/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 23-25, 2000</div>
+ <h4>ApacheCon EU 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://archive.apachecon.com/2000/US/">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">March 8-10, 2000</div>
+ <h4>ApacheCon US 2000</h4>
+ </div>
+ </a>
+ </div>
+ <div class="card card--footer">
+ <a href="http://www.apacheweek.com/features/apachecon98">
+ <div class="card-inner flex flex-column">
+ <div class="event-card__date">October 14-16, 1998</div>
+ <h4>ApacheCon 1998</h4>
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ </footer>
+ </body>
+</html>
+
+
diff --git a/output/events/apachecon-na-2014.html b/output/events/apachecon-na-2014.html
new file mode 100644
index 0000000..9b1c247
--- /dev/null
+++ b/output/events/apachecon-na-2014.html
@@ -0,0 +1,596 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="apple-touch-icon" sizes="57x57" href="/favicons/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="/favicons/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/favicons/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="/favicons/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/favicons/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="/favicons/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/favicons/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="/favicons/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="/favicons/favicon-194x194.png" sizes="194x194">
+ <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="/favicons/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
+ <link rel="manifest" href="/favicons/manifest.json">
+ <link rel="shortcut icon" href="/favicons/favicon.png">
+ <meta name="msapplication-TileColor" content="#603cba">
+ <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+ <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+ <meta name="theme-color" content="#282661">
+
+ <title>ApacheCon NA 2014 | Apache Software Foundation Events</title>
+ <link href="/fonts/Montserrat-300-600-800.css" async rel="stylesheet">
+ <link href="/css/styles.css" async rel="stylesheet">
+ <script src="https://www.apachecon.com/event-images/snippet.js" async></script>
+
+ <script src="/js/jquery.min.js"></script>
+ <script src="/js/init.js"></script>
+</head>
+<body class="body-apachecon-na-2014" >
+ <header id="header-main">
+ <div class="inner relative z1 flex flex-space-between flex-vert-center">
+ <a href="/" class="logo">
+ <img src="/images/CommunityOverCode_Logo_horizontal-color.svg" alt="ASF Events">
+ </a>
+ <div id="nav-toggle" class="nav-toggle hidden">
+ <span id="nav-top"></span>
+ <span id="nav-mid"></span>
+ <span id="nav-btm"></span>
+ </div>
+
+
+<nav>
+ <ul class="flex">
+ <li><a href="/about/">About</a></li>
+ <li><a href="/sponsors/">Sponsors</a></li>
+ <li><a href="https://news.apache.org/foundation/entry/category/events">News</a></li>
+ </ul>
+</nav> </header>
+
+
+ <div class="hero hero--event-home relative" style="background-image: url('');">
+ <div class="inner flex py-xl relative flex-vert-center z1 flex-col-reverse-800 flex-gap-50">
+ <div class="hero__content flex-1">
+ <h1 class="hero__title">
+ Community Over Code
+ <span class="hero__subtitle">Denver, CO</span>
+ </h1>
+ <div class="hero-event-dates text-white">April 7-11, 2014</div>
+ <div class="hero-ctas flex flex-gap-20 flex-wrap">
+ </div>
+ </div>
+ <div class="hero__logo flex-1">
+ <img src="/images/CoC-logo-white.webp" alt="Community Over Code logo" class="hero__logo-image">
+ </div>
+ </div>
+ <script>
+ // Countdown timer script
+ let countdownInterval;
+
+ function updateCountdown() {
+ const countdownWrapper = document.getElementById('countdown-wrapper');
+ const targetDate = new Date(countdownWrapper.getAttribute('data-date')).getTime();
+ const now = new Date().getTime();
+ const distance = targetDate - now;
+ if(distance > 0) {
+ countdownWrapper.classList.add('show');
+ } else {
+ clearInterval(countdownInterval); // Stop the interval
+ // remove countdown from the dom
+ countdownWrapper.remove();
+ return;
+ }
+
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+ document.getElementById('cd-days').textContent = String(days).padStart(2, '0');
+ document.getElementById('cd-hours').textContent = String(hours).padStart(2, '0');
+ document.getElementById('cd-minutes').textContent = String(minutes).padStart(2, '0');
+ document.getElementById('cd-seconds').textContent = String(seconds).padStart(2, '0');
+ }
+
+ countdownInterval = setInterval(updateCountdown, 1000);
+ updateCountdown(); // Initial call to set values immediately
+ </script>
+ <div id="countdown-wrapper" class="countdown" data-date="2014-04-07">
+ <div class="countdown__box card">
+ <span id="cd-days" class="countdown__number">00</span>
+ <span class="countdown__label">Days</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-hours" class="countdown__number">00</span>
+ <span class="countdown__label">Hours</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-minutes" class="countdown__number">00</span>
+ <span class="countdown__label">Minutes</span>
+ </div>
+ <div class="countdown__box card">
+ <span id="cd-seconds" class="countdown__number">00</span>
+ <span class="countdown__label">Seconds</span>
+ </div>
+ </div>
+ </div>
+ <section class="maincontent maincontent--single-event">
+ <div class="inner flex-col-800 flex pt-xl">
+ <div class="flex-1"></div>
+ <div class="flex-2">
+ <h2>Event Info</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/archive/2014/apachecon-north-america" target="_blank">Press Release</a></p>
+<hr/>
+<h2>Schedules</h2>
+<p><a class="btn" href="https://apacheconnorthamerica2014.sched.com/" target="_blank">Schedule</a></p>
+<hr/>
+<h2>Slides</h2>
+<p><a class="btn" href="http://events.linuxfoundation.org/events/archive/2014/apachecon-north-america/program/slides" target="_blank">Slides</a></p>
+<hr/>
+<h2>YouTube Videos</h2>
+<p><a class="btn" href="https://www.youtube.com/playlist?list=PLU2OcwpQkYCzvGxZgVOunTs-3iEao6YJc" target="_blank">YouTube Playlist</a></p>
+<hr/>
+<h2>Audio Recordings</h2>
+<p><a class="btn" href="http://events17.linuxfoundation.org/events/archive/2014/apachecon-north-america/program/audio-video-recordings" target="_blank">Audio Recordings</a></p>
+<hr/>
... 14322 lines suppressed ...