Modified: websites/production/tapestry/content/ioc-configuration.html
==============================================================================
--- websites/production/tapestry/content/ioc-configuration.html (original)
+++ websites/production/tapestry/content/ioc-configuration.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: 
websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html
==============================================================================
--- 
websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html
 (original)
+++ 
websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html
 Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-cookbook-basics.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-basics.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-basics.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-cookbook-override.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-override.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-override.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: 
websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html
==============================================================================
--- 
websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html 
(original)
+++ 
websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html 
Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-cookbook-patterns.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-patterns.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-patterns.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: 
websites/production/tapestry/content/ioc-cookbook-service-configurations.html
==============================================================================
--- 
websites/production/tapestry/content/ioc-cookbook-service-configurations.html 
(original)
+++ 
websites/production/tapestry/content/ioc-cookbook-service-configurations.html 
Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-cookbook.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook.html (original)
+++ websites/production/tapestry/content/ioc-cookbook.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-decorator.html
==============================================================================
--- websites/production/tapestry/content/ioc-decorator.html (original)
+++ websites/production/tapestry/content/ioc-decorator.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-injection.html
==============================================================================
--- websites/production/tapestry/content/ioc-injection.html (original)
+++ websites/production/tapestry/content/ioc-injection.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-logging.html
==============================================================================
--- websites/production/tapestry/content/ioc-logging.html (original)
+++ websites/production/tapestry/content/ioc-logging.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-module.html
==============================================================================
--- websites/production/tapestry/content/ioc-module.html (original)
+++ websites/production/tapestry/content/ioc-module.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-order.html
==============================================================================
--- websites/production/tapestry/content/ioc-order.html (original)
+++ websites/production/tapestry/content/ioc-order.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-overview.html
==============================================================================
--- websites/production/tapestry/content/ioc-overview.html (original)
+++ websites/production/tapestry/content/ioc-overview.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-parallel.html
==============================================================================
--- websites/production/tapestry/content/ioc-parallel.html (original)
+++ websites/production/tapestry/content/ioc-parallel.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-pipeline.html
==============================================================================
--- websites/production/tapestry/content/ioc-pipeline.html (original)
+++ websites/production/tapestry/content/ioc-pipeline.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-provider.html
==============================================================================
--- websites/production/tapestry/content/ioc-provider.html (original)
+++ websites/production/tapestry/content/ioc-provider.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-run.html
==============================================================================
--- websites/production/tapestry/content/ioc-run.html (original)
+++ websites/production/tapestry/content/ioc-run.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-serialization.html
==============================================================================
--- websites/production/tapestry/content/ioc-serialization.html (original)
+++ websites/production/tapestry/content/ioc-serialization.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-shadow.html
==============================================================================
--- websites/production/tapestry/content/ioc-shadow.html (original)
+++ websites/production/tapestry/content/ioc-shadow.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-startup.html
==============================================================================
--- websites/production/tapestry/content/ioc-startup.html (original)
+++ websites/production/tapestry/content/ioc-startup.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-strategy.html
==============================================================================
--- websites/production/tapestry/content/ioc-strategy.html (original)
+++ websites/production/tapestry/content/ioc-strategy.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc-symbols.html
==============================================================================
--- websites/production/tapestry/content/ioc-symbols.html (original)
+++ websites/production/tapestry/content/ioc-symbols.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/ioc.html
==============================================================================
--- websites/production/tapestry/content/ioc.html (original)
+++ websites/production/tapestry/content/ioc.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/javascript-faq.html
==============================================================================
--- websites/production/tapestry/content/javascript-faq.html (original)
+++ websites/production/tapestry/content/javascript-faq.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="JavaScriptFAQ-JavaScript">JavaScript</h1><p>Main articles: <a 
href="client-side-javascript.html">Client-Side JavaScript</a>, <a 
href="legacy-javascript.html">Legacy JavaScript</a></p><h2 
id="JavaScriptFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1737227517872 {padding: 0px;}
-div.rbtoc1737227517872 ul {margin-left: 0px;}
-div.rbtoc1737227517872 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737721009405 {padding: 0px;}
+div.rbtoc1737721009405 ul {margin-left: 0px;}
+div.rbtoc1737721009405 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1737227517872">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737721009405">
 <ul class="toc-indentation"><li><a 
href="#JavaScriptFAQ-WhydoIgeta&quot;Tapestryisundefined&quot;erroronformsubmit?(5.3andearlier)">Why
 do I get a "Tapestry is undefined" error on form submit? (5.3 and 
earlier)</a></li><li><a 
href="#JavaScriptFAQ-What'sthedifferencebetweentheT5objectandtheTapestryobjectinthebrowser?(5.3andearlier)">What's
 the difference between the T5 object and the Tapestry object in the browser? 
(5.3 and earlier)</a></li></ul>
 </div><h2 
id="JavaScriptFAQ-WhydoIgeta&quot;Tapestryisundefined&quot;erroronformsubmit?(5.3andearlier)">Why
 do I get a "Tapestry is undefined" error on form submit? (5.3 and 
earlier)</h2><p>This client-side error is clear but can be awkward to solve. It 
means your browser has not been able to load the tapestry.js file properly. The 
question is, why? It can be due to multiple reasons, some of them 
below:</p><ul><li>First, check if 'tapestry.js' is present in the head part of 
your resulting HTML page.</li><li><p>If you have set the <a 
href="configuration.html">tapestry.combine-scripts</a> configuration symbol to 
true, Tapestry generates one single URL to retrieve all the JS files. 
Sometimes, this can produce long URLs that browsers are unable to retrieve. Try 
setting the symbol to false.</p><div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluenc
 e-information-macro-body"><p>This only applies to Tapestry 
5.1.</p></div></div></li><li>If you have included jQuery in conjunction with 
Tapestry's prototype, that will cause a conflict with the '$' selector used by 
both. In this case, you should put jQuery on top of the stack and turn on the 
<a class="external-link" href="http://api.jquery.com/jQuery.noConflict/"; 
rel="nofollow">jQuery.noConflict</a> mode.</li><li>Also, if you have included a 
custom or third-party JS library on top of the stack that causes the JavaScript 
parsing to fail, then check the JavaScript syntax in that library.</li><li>If 
you have used a tool to minimize your JavaScript libraries, this can lead to 
JavaScript syntax errors, so check if it works with all the JavaScript files 
unpacked.</li></ul><h2 
id="JavaScriptFAQ-What'sthedifferencebetweentheT5objectandtheTapestryobjectinthebrowser?(5.3andearlier)">What's
 the difference between the <code>T5</code> object and the 
<code>Tapestry</code> object in the browser? (
 5.3 and earlier)</h2><p>Both of these objects are <em>namespaces</em>: 
containers of functions, constants, and nested namespaces.</p><p>The 
<code>T5</code> object is a replacement for the <code>Tapestry</code> object, 
starting in release 5.3. Increasingly, functions defined by the 
<code>Tapestry</code> object are being replaced with similar or equivalent 
functions in the <code>T5</code> object.</p><p>This is part of an overall goal, 
spanning at least two releases of Tapestry, to make Tapestry JavaScript 
framework agnostic; which is to say, not depend specifically on Prototype or 
jQuery. Much of the code in the <code>Tapestry</code> object is specifically 
linked to Prototype and Scriptaculous.</p><p>The <code>T5</code> object 
represents a stable, documented, set of APIs that are preferred when building 
components for maximum portability between underlying JavaScript frameworks. In 
other words, when building component libraries, coding to the <code>T5</code> 
object ensures that your c
 omponent will be useful regardless of whether the final application is built 
using Prototype, jQuery or something else.</p></div>
             </div>

Modified: websites/production/tapestry/content/javascript-modules.html
==============================================================================
--- websites/production/tapestry/content/javascript-modules.html (original)
+++ websites/production/tapestry/content/javascript-modules.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/javascript-rewrite-in-54.html
==============================================================================
--- websites/production/tapestry/content/javascript-rewrite-in-54.html 
(original)
+++ websites/production/tapestry/content/javascript-rewrite-in-54.html Fri Jan 
24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This is a historical document in 
which Tapestry's Howard Lewis Ship describes the motivations and plan for 
significantly changing Tapestry's client-side functionality starting in 
Tapestry 5.4. This plan closely matches the actual results delivered in 
Tapestry 5.4, but this document is mostly kept for historical 
reference.</p></div></div><h2 
id="JavaScriptRewritein5.4-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1712225561806 {padding: 0px;}
-div.rbtoc1712225561806 ul {margin-left: 0px;}
-div.rbtoc1712225561806 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720821188 {padding: 0px;}
+div.rbtoc1737720821188 ul {margin-left: 0px;}
+div.rbtoc1737720821188 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1712225561806">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737720821188">
 <ul class="toc-indentation"><li><a 
href="#JavaScriptRewritein5.4-TapestryandJavaScript">Tapestry and 
JavaScript</a></li><li><a 
href="#JavaScriptRewritein5.4-TapestryJavaScriptLimitations(through5.3)">Tapestry
 JavaScript Limitations (through 5.3)</a>
 <ul class="toc-indentation"><li><a 
href="#JavaScriptRewritein5.4-DependenceonPrototype/Scriptaculous">Dependence 
on Prototype/Scriptaculous</a></li><li><a 
href="#JavaScriptRewritein5.4-LackofDocumentation">Lack of 
Documentation</a></li><li><a 
href="#JavaScriptRewritein5.4-LackofModuleStructure">Lack of Module 
Structure</a></li><li><a 
href="#JavaScriptRewritein5.4-ComplexInitialization">Complex 
Initialization</a></li></ul>
 </li><li><a 
href="#JavaScriptRewritein5.4-JavaScriptImprovementsfor5.4">JavaScript 
Improvements for 5.4</a>

Modified: websites/production/tapestry/content/javascript.html
==============================================================================
--- websites/production/tapestry/content/javascript.html (original)
+++ websites/production/tapestry/content/javascript.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/jmx-module.html
==============================================================================
--- websites/production/tapestry/content/jmx-module.html (original)
+++ websites/production/tapestry/content/jmx-module.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/json.html
==============================================================================
--- websites/production/tapestry/content/json.html (original)
+++ websites/production/tapestry/content/json.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/key-features-v2.html
==============================================================================
--- websites/production/tapestry/content/key-features-v2.html (original)
+++ websites/production/tapestry/content/key-features-v2.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/key-features.html
==============================================================================
--- websites/production/tapestry/content/key-features.html (original)
+++ websites/production/tapestry/content/key-features.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/layout-component.html
==============================================================================
--- websites/production/tapestry/content/layout-component.html (original)
+++ websites/production/tapestry/content/layout-component.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/legacy-javascript.html
==============================================================================
--- websites/production/tapestry/content/legacy-javascript.html (original)
+++ websites/production/tapestry/content/legacy-javascript.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/limitations.html
==============================================================================
--- websites/production/tapestry/content/limitations.html (original)
+++ websites/production/tapestry/content/limitations.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="Limitations-Limitations">Limitations</h1><h2 
id="Limitations-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1712225605261 {padding: 0px;}
-div.rbtoc1712225605261 ul {margin-left: 0px;}
-div.rbtoc1712225605261 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720865432 {padding: 0px;}
+div.rbtoc1737720865432 ul {margin-left: 0px;}
+div.rbtoc1737720865432 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1712225605261">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737720865432">
 <ul class="toc-indentation"><li><a 
href="#Limitations-HowdoIaddnewcomponentstoanexistingpagedynamically?">How do I 
add new components to an existing page dynamically?</a></li><li><a 
href="#Limitations-Whydoesn'tmyserviceimplementationreloadwhenIchangeit?">Why 
doesn't my service implementation reload when I change it?</a></li><li><a 
href="#Limitations-HowdoIrunmultipleTapestryapplicationsinthesamewebapplication?">How
 do I run multiple Tapestry applications in the same web 
application?</a></li></ul>
 </div><h2 
id="Limitations-HowdoIaddnewcomponentstoanexistingpagedynamically?">How do I 
add new components to an existing page dynamically?</h2><p>The short answer 
here is: <strong>you don't</strong>. The long answer here is <strong>you don't 
have to, to get the behavior you desire</strong>.</p><p>One of Tapestry basic 
values is high scalability: this is expressed in a number of ways, reflecting 
scalability concerns within a single server, and within a cluster of 
servers.</p><p>Although you code Tapestry pages and components as if they were 
ordinary POJOs (<span>Plain Old Java Objects -- Tapestry does not require you 
to extend any base classes or implement any special interfaces)</span><span>, 
as deployed by Tapestry they are closer to a traditional servlet: a single 
instance of each page services requests from multiple threads. Behind the 
scenes, Tapestry transforms you code, rewriting it on the 
fly.</span></p><p>What this means is that <em>any</em> incoming request must be 
handled 
 by a <em>single page instance</em>. Therefore, Tapestry enforces the concept 
of <strong>static structure, dynamic behavior</strong>.</p><p>Tapestry provides 
quite a number of ways to vary what content is rendered, well beyond simple 
conditionals and loops. It is possible to "drag in" components from other pages 
when rendering a page (other FAQs will expand on this concept). The point is, 
that although a Tapestry page's structure is very rigid, the order in which the 
components of the page render does not have to be top to bottom.</p><h2 
id="Limitations-Whydoesn'tmyserviceimplementationreloadwhenIchangeit?">Why 
doesn't my service implementation reload when I change it?</h2><p>Main article: 
<a href="service-implementation-reloading.html">Service Implementation 
Reloading</a></p><p>Live service reloading has some limitations:</p><ul><li>The 
service must define a service interface.</li><li>The service implementation 
must be on the file system (not inside a JAR).</li><li>The implementatio
 n must be instantiated by Tapestry, not inside code (even code inside a module 
class).</li><li>The service must use the default <a 
href="limitations.html">scope</a> (reloading of perthread scopes is not 
supported).</li></ul><p>Consider the following example module:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre><code class="language-java">public static void bind(ServiceBinder binder)

Modified: websites/production/tapestry/content/link-components-faq.html
==============================================================================
--- websites/production/tapestry/content/link-components-faq.html (original)
+++ websites/production/tapestry/content/link-components-faq.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="LinkComponentsFAQ-LinkComponents">Link Components</h1><p>Main Articles: <a 
href="page-navigation.html">Page Navigation</a>, <a 
href="component-parameters.html">Component Parameters</a></p><h2 
id="LinkComponentsFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1712225570128 {padding: 0px;}
-div.rbtoc1712225570128 ul {margin-left: 0px;}
-div.rbtoc1712225570128 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720829550 {padding: 0px;}
+div.rbtoc1737720829550 ul {margin-left: 0px;}
+div.rbtoc1737720829550 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1712225570128">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737720829550">
 <ul class="toc-indentation"><li><a 
href="#LinkComponentsFAQ-HowdoIaddqueryparameterstoaPageLinkorActionLink?">How 
do I add query parameters to a PageLink or ActionLink?</a></li><li><a 
href="#LinkComponentsFAQ-HowdoIcreateaLinkbacktothecurrentpagefromacomponent?">How
 do I create a Link back to the current page from a component?</a></li></ul>
 </div><h2 
id="LinkComponentsFAQ-HowdoIaddqueryparameterstoaPageLinkorActionLink?">How do 
I add query parameters to a PageLink or ActionLink?</h2><p>These components do 
not have parameters to allow you to specify query parameters for the link; they 
both allow you to specify a <em>context</em> (one or more values to encode into 
the request path).</p><p>However, you can accomplish the same thing with a 
little code and markup. For example, to create a link to another page and pass 
a query parameter, you can replace your PageLink component with a standard 
<code>&lt;a&gt;</code> tag:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <pre><code class="language-xml">&lt;a href="${profilePageLink}"&gt;Display 
Profile (w/ full details)&lt;/a&gt;

Modified: 
websites/production/tapestry/content/loading-the-project-into-eclipse.html
==============================================================================
--- websites/production/tapestry/content/loading-the-project-into-eclipse.html 
(original)
+++ websites/production/tapestry/content/loading-the-project-into-eclipse.html 
Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/localization.html
==============================================================================
--- websites/production/tapestry/content/localization.html (original)
+++ websites/production/tapestry/content/localization.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/logging-in-tapestry.html
==============================================================================
--- websites/production/tapestry/content/logging-in-tapestry.html (original)
+++ websites/production/tapestry/content/logging-in-tapestry.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/logging.html
==============================================================================
--- websites/production/tapestry/content/logging.html (original)
+++ websites/production/tapestry/content/logging.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/mailing-lists.html
==============================================================================
--- websites/production/tapestry/content/mailing-lists.html (original)
+++ websites/production/tapestry/content/mailing-lists.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/maven-support-faq.html
==============================================================================
--- websites/production/tapestry/content/maven-support-faq.html (original)
+++ websites/production/tapestry/content/maven-support-faq.html Fri Jan 24 
12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -144,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="MavenSupportFAQ-MavenSupport">Maven Support</h1><h2 
id="MavenSupportFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1712225715404 {padding: 0px;}
-div.rbtoc1712225715404 ul {margin-left: 0px;}
-div.rbtoc1712225715404 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1737720977193 {padding: 0px;}
+div.rbtoc1737720977193 ul {margin-left: 0px;}
+div.rbtoc1737720977193 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1712225715404">
+/*]]>*/</style></p><div class="toc-macro rbtoc1737720977193">
 <ul class="toc-indentation"><li><a 
href="#MavenSupportFAQ-WhydoMavenprojectnamesandotherdetailsshowupinmypages?">Why
 do Maven project names and other details show up in my pages?</a></li></ul>
 </div><h2 
id="MavenSupportFAQ-WhydoMavenprojectnamesandotherdetailsshowupinmypages?">Why 
do Maven project names and other details show up in my pages?</h2><p>Tapestry 
and maven both use the same syntax for dynamic portions of files: the 
<code>${...</code>} syntax. When Maven is copying resources from 
<code>src/main/resources</code>, and when filtering is <em>enabled</em> (which 
is not the default), then any expansions in <em>Tapestry templates</em> that 
match against Maven project properties are substituted. If you look at the 
deployed application you'll see that <code>${name</code>} is gone, replaced 
with your project's name!</p><p>The solution is to update your 
<code>pom.xml</code> and ignore any .tml files when copying and 
filtering:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>pom.xml 
(partial)</b></div><div class="codeContent panelContent pdl">
 <pre><code class="language-xml">  &lt;resource&gt;

Modified: websites/production/tapestry/content/menuleft.html
==============================================================================
--- websites/production/tapestry/content/menuleft.html (original)
+++ websites/production/tapestry/content/menuleft.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: 
websites/production/tapestry/content/meta-programming-page-content.html
==============================================================================
--- websites/production/tapestry/content/meta-programming-page-content.html 
(original)
+++ websites/production/tapestry/content/meta-programming-page-content.html Fri 
Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/modules.html
==============================================================================
--- websites/production/tapestry/content/modules.html (original)
+++ websites/production/tapestry/content/modules.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/navigation.html
==============================================================================
--- websites/production/tapestry/content/navigation.html (original)
+++ websites/production/tapestry/content/navigation.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/navigationv2.html
==============================================================================
--- websites/production/tapestry/content/navigationv2.html (original)
+++ websites/production/tapestry/content/navigationv2.html Fri Jan 24 12:18:16 
2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->

Modified: websites/production/tapestry/content/news.html
==============================================================================
--- websites/production/tapestry/content/news.html (original)
+++ websites/production/tapestry/content/news.html Fri Jan 24 12:18:16 2025
@@ -50,12 +50,23 @@
   <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js"; 
defer></script>
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/plugins/autoloader/prism-autoloader.min.js";
 defer></script>
 
-  <script type="text/javascript">
-    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new 
Date;
-    ga('create', 'UA-400821-1', 'auto');
-    ga('send', 'pageview');
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="https://analytics.apache.org/";;
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '71']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
   </script>
-  <script async src="https://www.google-analytics.com/analytics.js";></script>
+  <!-- End Matomo Code -->
 </head>
 <body>
   <!-- /// Navigation Start -->



Reply via email to