Skip to content
Success

Console Output

Started by user Achim Kraus
Running as Achim Kraus
Obtained jenkins/Jenkinsfile from git https://github.com/eclipse/californium.git
[Pipeline] Start of Pipeline
[Pipeline] echo
[WARNING] label option is deprecated. To use a static pod template, use the 'inheritFrom' option.
[Pipeline] podTemplate
[Pipeline] {
[Pipeline] node
Created Pod: kubernetes californium/hugo-agent-9z09w-x65vd
[Normal][californium/hugo-agent-9z09w-x65vd][Scheduled] Successfully assigned californium/hugo-agent-9z09w-x65vd to okdnode-15
[Normal][californium/hugo-agent-9z09w-x65vd][AddedInterface] Add eth0 [10.40.33.74/23] from openshift-sdn
[Normal][californium/hugo-agent-9z09w-x65vd][Pulled] Container image "docker.io/eclipsecbi/jiro-agent-basic:remoting-4.13" already present on machine
[Normal][californium/hugo-agent-9z09w-x65vd][Created] Created container jnlp
[Normal][californium/hugo-agent-9z09w-x65vd][Started] Started container jnlp
[Normal][californium/hugo-agent-9z09w-x65vd][Pulling] Pulling image "eclipsefdn/hugo-node:h0.99.1-n16.15.0"
Still waiting to schedule task
‘hugo-agent-9z09w-x65vd’ is offline
[Normal][californium/hugo-agent-9z09w-x65vd][Pulled] Successfully pulled image "eclipsefdn/hugo-node:h0.99.1-n16.15.0" in 10.791032926s
[Normal][californium/hugo-agent-9z09w-x65vd][Created] Created container hugo
[Normal][californium/hugo-agent-9z09w-x65vd][Started] Started container hugo
Agent hugo-agent-9z09w-x65vd is provisioned from template hugo-agent-9z09w
---
apiVersion: "v1"
kind: "Pod"
metadata:
  annotations:
    buildUrl: "http://jenkins-ui.californium.svc.cluster.local/californium/job/californium-website/15/"
    runUrl: "job/californium-website/15/"
  labels:
    run: "hugo"
    jenkins: "slave"
    jenkins/label-digest: "7ac110df4066c009b519c7b03c365692b5eeb4d5"
    jenkins/label: "hugo-agent"
  name: "hugo-agent-9z09w-x65vd"
  namespace: "californium"
spec:
  containers:
  - env:
    - name: "JENKINS_SECRET"
      value: "********"
    - name: "JENKINS_TUNNEL"
      value: "jenkins-discovery.californium.svc.cluster.local:50000"
    - name: "JENKINS_AGENT_NAME"
      value: "hugo-agent-9z09w-x65vd"
    - name: "JENKINS_NAME"
      value: "hugo-agent-9z09w-x65vd"
    - name: "JENKINS_AGENT_WORKDIR"
      value: "/home/jenkins/agent"
    - name: "JENKINS_URL"
      value: "http://jenkins-ui.californium.svc.cluster.local/californium/"
    - name: "HOME"
      value: "/home/jenkins"
    image: "docker.io/eclipsecbi/jiro-agent-basic:remoting-4.13"
    name: "jnlp"
    resources:
      limits: {}
      requests:
        memory: "256Mi"
        cpu: "100m"
    volumeMounts:
    - mountPath: "/home/jenkins/.ssh"
      name: "volume-known-hosts"
    - mountPath: "/home/jenkins/agent"
      name: "workspace-volume"
      readOnly: false
  - command:
    - "cat"
    image: "eclipsefdn/hugo-node:h0.99.1-n16.15.0"
    name: "hugo"
    tty: true
    volumeMounts:
    - mountPath: "/home/jenkins/agent"
      name: "workspace-volume"
      readOnly: false
  nodeSelector:
    kubernetes.io/os: "linux"
  restartPolicy: "Never"
  volumes:
  - emptyDir:
      medium: ""
    name: "workspace-volume"
  - configMap:
      name: "known-hosts"
    name: "volume-known-hosts"

Running on hugo-agent-9z09w-x65vd in /home/jenkins/agent/workspace/californium-website
[Pipeline] {
[Pipeline] dir
Running in /home/jenkins/agent/workspace/californium-website/hugo
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
The recommended git tool is: git
No credentials specified
Cloning the remote Git repository
Cloning repository https://github.com/eclipse/californium.git
 > git init /home/jenkins/agent/workspace/californium-website/hugo # timeout=10
Fetching upstream changes from https://github.com/eclipse/californium.git
 > git --version # timeout=10
 > git --version # 'git version 2.20.1'
 > git fetch --tags --force --progress -- https://github.com/eclipse/californium.git +refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
Checking out Revision b82cf0fa1b3aca49b92733356b44a6985eeb487a (origin/update_hugo)
 > git config remote.origin.url https://github.com/eclipse/californium.git # timeout=10
 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse origin/update_hugo^{commit} # timeout=10
 > git config core.sparsecheckout # timeout=10
 > git checkout -f b82cf0fa1b3aca49b92733356b44a6985eeb487a # timeout=10
Commit message: "Update hugo image."
First time build. Skipping changelog.
 > git remote # timeout=10
 > git submodule init # timeout=10
 > git submodule sync # timeout=10
 > git config --get remote.origin.url # timeout=10
 > git submodule init # timeout=10
 > git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10
 > git config --get submodule.syna-theme.url # timeout=10
 > git config -f .gitmodules --get submodule.syna-theme.path # timeout=10
 > git submodule update --init --recursive site/themes/syna # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // dir
[Pipeline] withEnv
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] timeout
Timeout set to expire in 15 min
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Checkout www repo)
[Pipeline] dir
Running in /home/jenkins/agent/workspace/californium-website/www
[Pipeline] {
[Pipeline] sshagent
[ssh-agent] Using credentials genie.californium (ssh://genie.californium@git.eclipse.org)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Exec ssh-agent (binary ssh-agent on a remote machine)
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-0WjWSMpkWaT1/agent.427
SSH_AGENT_PID=429
Running ssh-add (command line suppressed)
Identity added: /home/jenkins/agent/workspace/californium-website/www@tmp/private_key_14416466430805974337.key (/home/jenkins/agent/workspace/californium-website/www@tmp/private_key_14416466430805974337.key)
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
+ git clone ssh://genie.californium@git.eclipse.org:29418/www.eclipse.org/californium.git .
Cloning into '.'...
Total 436 (delta 26), reused 435 (delta 26)
+ git checkout master
Already on 'master'
Your branch is up to date with 'origin/master'.
[Pipeline] }
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 429 killed;
[ssh-agent] Stopped.
[Pipeline] // sshagent
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build website (main) with Hugo)
[Pipeline] container
[Pipeline] {
[Pipeline] dir
Running in /home/jenkins/agent/workspace/californium-website/hugo/site
[Pipeline] {
[Pipeline] sh
+ hugo -b https://www.eclipse.org/californium/
Start building sites … 
hugo v0.99.1-d524067382e60ce2a2248c3133a1b3af206b6ef1 linux/amd64 BuildDate=2022-05-18T11:18:14Z VendorInfo=gohugoio
WARN 2022/05/30 17:39:42 .File.Dir on zero object. Wrap it in if or with: {{ with .File }}{{ .Dir }}{{ end }}

                   | EN  
-------------------+-----
  Pages            | 36  
  Paginator pages  |  0  
  Non-page files   |  1  
  Static files     | 57  
  Processed images |  0  
  Aliases          |  0  
  Sitemaps         |  1  
  Cleaned          |  0  

Total in 812 ms
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // container
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Push to website master branch)
[Pipeline] sh
+ rm -rf www/404.html www/categories www/css www/favicon.ico www/favicon.png www/favicon.svg www/fonts www/images www/_index www/index.html www/index.json www/scripts www/sitemap.xml www/style.min.dfc76e0a4c03faab88f81d517d6efa6a235c422f57d1fa1a10e56eba3fe728ea.css www/tags
+ cp -Rvf hugo/site/public/404.html hugo/site/public/categories hugo/site/public/css hugo/site/public/favicon.ico hugo/site/public/favicon.png hugo/site/public/favicon.svg hugo/site/public/fonts hugo/site/public/images hugo/site/public/_index hugo/site/public/index.html hugo/site/public/index.json hugo/site/public/scripts hugo/site/public/sitemap.xml hugo/site/public/style.min.dfc76e0a4c03faab88f81d517d6efa6a235c422f57d1fa1a10e56eba3fe728ea.css hugo/site/public/tags www/
'hugo/site/public/404.html' -> 'www/404.html'
'hugo/site/public/categories' -> 'www/categories'
'hugo/site/public/categories/index.html' -> 'www/categories/index.html'
'hugo/site/public/categories/index.xml' -> 'www/categories/index.xml'
'hugo/site/public/css' -> 'www/css'
'hugo/site/public/css/adopters.css' -> 'www/css/adopters.css'
'hugo/site/public/favicon.ico' -> 'www/favicon.ico'
'hugo/site/public/favicon.png' -> 'www/favicon.png'
'hugo/site/public/favicon.svg' -> 'www/favicon.svg'
'hugo/site/public/fonts' -> 'www/fonts'
'hugo/site/public/fonts/fa-brands-400.eot' -> 'www/fonts/fa-brands-400.eot'
'hugo/site/public/fonts/fa-brands-400.svg' -> 'www/fonts/fa-brands-400.svg'
'hugo/site/public/fonts/fa-brands-400.ttf' -> 'www/fonts/fa-brands-400.ttf'
'hugo/site/public/fonts/fa-brands-400.woff' -> 'www/fonts/fa-brands-400.woff'
'hugo/site/public/fonts/fa-brands-400.woff2' -> 'www/fonts/fa-brands-400.woff2'
'hugo/site/public/fonts/fa-regular-400.eot' -> 'www/fonts/fa-regular-400.eot'
'hugo/site/public/fonts/fa-regular-400.svg' -> 'www/fonts/fa-regular-400.svg'
'hugo/site/public/fonts/fa-regular-400.ttf' -> 'www/fonts/fa-regular-400.ttf'
'hugo/site/public/fonts/fa-regular-400.woff' -> 'www/fonts/fa-regular-400.woff'
'hugo/site/public/fonts/fa-regular-400.woff2' -> 'www/fonts/fa-regular-400.woff2'
'hugo/site/public/fonts/fa-solid-900.eot' -> 'www/fonts/fa-solid-900.eot'
'hugo/site/public/fonts/fa-solid-900.svg' -> 'www/fonts/fa-solid-900.svg'
'hugo/site/public/fonts/fa-solid-900.ttf' -> 'www/fonts/fa-solid-900.ttf'
'hugo/site/public/fonts/fa-solid-900.woff' -> 'www/fonts/fa-solid-900.woff'
'hugo/site/public/fonts/fa-solid-900.woff2' -> 'www/fonts/fa-solid-900.woff2'
'hugo/site/public/images' -> 'www/images'
'hugo/site/public/images/800px-Iot_logo_large_transparent.png' -> 'www/images/800px-Iot_logo_large_transparent.png'
'hugo/site/public/images/EF_GRY-OR_svg.svg' -> 'www/images/EF_GRY-OR_svg.svg'
'hugo/site/public/images/eclipse_incubation_vertical_png-02.png' -> 'www/images/eclipse_incubation_vertical_png-02.png'
'hugo/site/public/images/java.jpg' -> 'www/images/java.jpg'
'hugo/site/public/images/logos' -> 'www/images/logos'
'hugo/site/public/images/logos/Er_512.png' -> 'www/images/logos/Er_512.png'
'hugo/site/public/images/logos/Er_96.png' -> 'www/images/logos/Er_96.png'
'hugo/site/public/images/logos/Sc_128.png' -> 'www/images/logos/Sc_128.png'
'hugo/site/public/images/logos/Sc_16.png' -> 'www/images/logos/Sc_16.png'
'hugo/site/public/images/logos/Sc_256.png' -> 'www/images/logos/Sc_256.png'
'hugo/site/public/images/logos/Sc_32.png' -> 'www/images/logos/Sc_32.png'
'hugo/site/public/images/logos/Sc_512.png' -> 'www/images/logos/Sc_512.png'
'hugo/site/public/images/logos/Sc_64.png' -> 'www/images/logos/Sc_64.png'
'hugo/site/public/images/logos/Sc_box_256.png' -> 'www/images/logos/Sc_box_256.png'
'hugo/site/public/images/logos/Ac_256.png' -> 'www/images/logos/Ac_256.png'
'hugo/site/public/images/logos/Ac_32.png' -> 'www/images/logos/Ac_32.png'
'hugo/site/public/images/logos/Ac_512.png' -> 'www/images/logos/Ac_512.png'
'hugo/site/public/images/logos/Ac_96.png' -> 'www/images/logos/Ac_96.png'
'hugo/site/public/images/logos/Ac_box_256.png' -> 'www/images/logos/Ac_box_256.png'
'hugo/site/public/images/logos/Cf_128.png' -> 'www/images/logos/Cf_128.png'
'hugo/site/public/images/logos/Cf_16.png' -> 'www/images/logos/Cf_16.png'
'hugo/site/public/images/logos/Cf_24.png' -> 'www/images/logos/Cf_24.png'
'hugo/site/public/images/logos/Cf_256.png' -> 'www/images/logos/Cf_256.png'
'hugo/site/public/images/logos/Cf_32.png' -> 'www/images/logos/Cf_32.png'
'hugo/site/public/images/logos/Cf_48.png' -> 'www/images/logos/Cf_48.png'
'hugo/site/public/images/logos/Cf_512.png' -> 'www/images/logos/Cf_512.png'
'hugo/site/public/images/logos/Cf_64.png' -> 'www/images/logos/Cf_64.png'
'hugo/site/public/images/logos/Cf_96.png' -> 'www/images/logos/Cf_96.png'
'hugo/site/public/images/logos/Cf_box_512.png' -> 'www/images/logos/Cf_box_512.png'
'hugo/site/public/images/logos/Cu_128.png' -> 'www/images/logos/Cu_128.png'
'hugo/site/public/images/logos/Cu_16.png' -> 'www/images/logos/Cu_16.png'
'hugo/site/public/images/logos/Cu_24.png' -> 'www/images/logos/Cu_24.png'
'hugo/site/public/images/logos/Cu_256.png' -> 'www/images/logos/Cu_256.png'
'hugo/site/public/images/logos/Cu_32.png' -> 'www/images/logos/Cu_32.png'
'hugo/site/public/images/logos/Cu_48.png' -> 'www/images/logos/Cu_48.png'
'hugo/site/public/images/logos/Cu_512.png' -> 'www/images/logos/Cu_512.png'
'hugo/site/public/images/logos/Cu_64.png' -> 'www/images/logos/Cu_64.png'
'hugo/site/public/images/logos/Cu_96.png' -> 'www/images/logos/Cu_96.png'
'hugo/site/public/images/logos/Er_32.png' -> 'www/images/logos/Er_32.png'
'hugo/site/public/_index' -> 'www/_index'
'hugo/site/public/_index/tutorial.jpg' -> 'www/_index/tutorial.jpg'
'hugo/site/public/_index/index.html' -> 'www/_index/index.html'
'hugo/site/public/index.html' -> 'www/index.html'
'hugo/site/public/index.json' -> 'www/index.json'
'hugo/site/public/scripts' -> 'www/scripts'
'hugo/site/public/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js' -> 'www/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js'
'hugo/site/public/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js' -> 'www/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js'
'hugo/site/public/scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js' -> 'www/scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js'
'hugo/site/public/sitemap.xml' -> 'www/sitemap.xml'
'hugo/site/public/style.min.dfc76e0a4c03faab88f81d517d6efa6a235c422f57d1fa1a10e56eba3fe728ea.css' -> 'www/style.min.dfc76e0a4c03faab88f81d517d6efa6a235c422f57d1fa1a10e56eba3fe728ea.css'
'hugo/site/public/tags' -> 'www/tags'
'hugo/site/public/tags/index.html' -> 'www/tags/index.html'
'hugo/site/public/tags/index.xml' -> 'www/tags/index.xml'
[Pipeline] dir
Running in /home/jenkins/agent/workspace/californium-website/www
[Pipeline] {
[Pipeline] sshagent
[ssh-agent] Using credentials genie.californium (ssh://genie.californium@git.eclipse.org)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Exec ssh-agent (binary ssh-agent on a remote machine)
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-qwl823jYQawZ/agent.464
SSH_AGENT_PID=466
Running ssh-add (command line suppressed)
Identity added: /home/jenkins/agent/workspace/californium-website/www@tmp/private_key_14319863144748982659.key (/home/jenkins/agent/workspace/californium-website/www@tmp/private_key_14319863144748982659.key)
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
+ git add -A
+ git diff --cached --exit-code
diff --git a/404.html b/404.html
index 3c966ee..8a90cfe 100644
--- a/404.html
+++ b/404.html
@@ -27,7 +27,7 @@
     <meta name="twitter:image" content="">
   <meta name="author" content="Eclipse Californium project">
 
-  <meta name="generator" content="Hugo 0.81.0" />
+  <meta name="generator" content="Hugo 0.99.1" />
 
   <title>404 Page not found &middot; Eclipse Californium&trade;</title>
 
@@ -385,7 +385,7 @@ html {
       
     };
   </script>
-  <script src="/californium/scripts/syna-head.min.e41aca70413d995c0e49a558ce1b0a572a1046016f64d7cfed0886c7ec75e3ab.js"></script>
+  <script src="/californium/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js"></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
       <script src='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js'></script></head>
 <body class="bg-secondary">
@@ -527,7 +527,7 @@ html {
     </div>
 
     <!-- Theme Code -->
-      <script async defer src="/californium/scripts/syna-main.min.0fee75bda576b036c6916366c93862bee0f9e51fac1be5360918faac938026cb.js"></script>
+      <script async defer src="/californium/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js"></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
       <script src='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js'></script>
   </body>
diff --git a/_index/index.html b/_index/index.html
index 1fe7d2a..121af0a 100644
--- a/_index/index.html
+++ b/_index/index.html
@@ -29,7 +29,7 @@
         <meta name="twitter:image" content="">
   <meta name="author" content="Eclipse Californium project">
 
-  <meta name="generator" content="Hugo 0.81.0" />
+  <meta name="generator" content="Hugo 0.99.1" />
 
   <title>Welcome &middot; Eclipse Californium&trade;</title>
 
@@ -387,7 +387,7 @@ html {
       
     };
   </script>
-  <script src="/californium/scripts/syna-head.min.e41aca70413d995c0e49a558ce1b0a572a1046016f64d7cfed0886c7ec75e3ab.js"></script>
+  <script src="/californium/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js"></script>
       <link rel='stylesheet' href='/californium/css/adopters.css'>
       <script src='https://iot.eclipse.org/assets/js/eclipsefdn.adopters.js'></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
@@ -612,45 +612,45 @@ Since version 3.0 this includes also the new configuration.</p>
 </section>
 
 <!-- Item -->
-<section id="scandium" class="fragment ">
-    <div class="container-fluid bg-light ">
+<section id="getting-started" class="fragment ">
+    <div class="container-fluid bg-dark ">
     <div class="container py-5 ">
 
   <div class="row align-items-center text-center justify-content-start text-lg-left">
     <div class="col-12 order-lg-12 pl-lg-5 col-lg-8">
         <div class="row pb-3">
-          <div class="col-12 text-body">
-            <h2>Scandium (Sc)</h2>
+          <div class="col-12 text-white">
+            <h2>Getting Started</h2>
+          </div>
+        </div>
+        <div class="row pb-2">
+          <div class="col-12 text-secondary">
+            <h5>Learn how to use Californium</h5>
           </div>
         </div>
       <div class="col-12 text-center d-lg-none pb-4 order-lg-1 mt-lg-5 mr-lg-auto col-lg-4">
         <div class="row">
           <div class="col-12">
-                <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
+                <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
           </div>
         </div>
       </div><div class="row text-left">
         <div class="col-12">
-          <div class="mb-0 text-body"><p>The Scandium (Sc) sub-module provides security for Californium. It implements DTLS 1.2 to secure your application
-through ECC with pre-shared keys, certificates, or raw public keys. It comes with many DTLS extensions, amoung them the DTLS 1.2 Connection ID.
-<br>
-Start making your exciting experience with an mature DTLS 1.2 solution, implemented for the Internet of Things.</p>
-<p><a href="https://www.rfc-editor.org/rfc/rfc6347.html">RFC 6347</a>,
-<a href="https://www.rfc-editor.org/rfc/rfc7250.html">RFC 7250</a>,
-<a href="https://www.rfc-editor.org/rfc/rfc9146.html">RFC 9146</a>.</p>
+          <div class="mb-0 text-secondary"><p>The Internet of Things if growing, but how can you build your own connected objects?
+Together with MQTT, CoAP is one of the popular IoT protocols.
+It provides answers to the typical IoT constraints: it is bandwidth efficient and fits
+in constrained embedded environment while providing friendly and discoverable RESTful API.</p>
 </div>
         </div>
       </div>
         <div class="col-12 text-center mb-2 text-lg-right">
             <a class="btn btn-lg m-2
-               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core#scandium-sc---security-for-californium">Introduction</a>
-            <a class="btn btn-lg m-2
-               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core">Repository</a>
+               btn-primary" href="http://goo.gl/LLQ03w">Take the Tutorial</a>
         </div></div>
     <div class="col-12 order-lg-1 mr-lg-auto col-lg-4">
       <div class="row justify-content-center">
             <div class="col-12 text-center d-none d-lg-inline">
-              <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
+              <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
             </div>
       </div>
     </div>
@@ -660,45 +660,45 @@ Start making your exciting experience with an mature DTLS 1.2 solution, implemen
 </section>
 
 <!-- Item -->
-<section id="getting-started" class="fragment ">
-    <div class="container-fluid bg-dark ">
+<section id="scandium" class="fragment ">
+    <div class="container-fluid bg-light ">
     <div class="container py-5 ">
 
   <div class="row align-items-center text-center justify-content-start text-lg-left">
     <div class="col-12 order-lg-12 pl-lg-5 col-lg-8">
         <div class="row pb-3">
-          <div class="col-12 text-white">
-            <h2>Getting Started</h2>
-          </div>
-        </div>
-        <div class="row pb-2">
-          <div class="col-12 text-secondary">
-            <h5>Learn how to use Californium</h5>
+          <div class="col-12 text-body">
+            <h2>Scandium (Sc)</h2>
           </div>
         </div>
       <div class="col-12 text-center d-lg-none pb-4 order-lg-1 mt-lg-5 mr-lg-auto col-lg-4">
         <div class="row">
           <div class="col-12">
-                <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
+                <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
           </div>
         </div>
       </div><div class="row text-left">
         <div class="col-12">
-          <div class="mb-0 text-secondary"><p>The Internet of Things if growing, but how can you build your own connected objects?
-Together with MQTT, CoAP is one of the popular IoT protocols.
-It provides answers to the typical IoT constraints: it is bandwidth efficient and fits
-in constrained embedded environment while providing friendly and discoverable RESTful API.</p>
+          <div class="mb-0 text-body"><p>The Scandium (Sc) sub-module provides security for Californium. It implements DTLS 1.2 to secure your application
+through ECC with pre-shared keys, certificates, or raw public keys. It comes with many DTLS extensions, amoung them the DTLS 1.2 Connection ID.
+<br>
+Start making your exciting experience with an mature DTLS 1.2 solution, implemented for the Internet of Things.</p>
+<p><a href="https://www.rfc-editor.org/rfc/rfc6347.html">RFC 6347</a>,
+<a href="https://www.rfc-editor.org/rfc/rfc7250.html">RFC 7250</a>,
+<a href="https://www.rfc-editor.org/rfc/rfc9146.html">RFC 9146</a>.</p>
 </div>
         </div>
       </div>
         <div class="col-12 text-center mb-2 text-lg-right">
             <a class="btn btn-lg m-2
-               btn-primary" href="http://goo.gl/LLQ03w">Take the Tutorial</a>
+               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core#scandium-sc---security-for-californium">Introduction</a>
+            <a class="btn btn-lg m-2
+               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core">Repository</a>
         </div></div>
     <div class="col-12 order-lg-1 mr-lg-auto col-lg-4">
       <div class="row justify-content-center">
             <div class="col-12 text-center d-none d-lg-inline">
-              <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
+              <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
             </div>
       </div>
     </div>
@@ -1089,8 +1089,8 @@ Collection of links and information, not only limited to Californium&rsquo;s sco
 <div id="react"></div>
 
     <!-- Theme Code -->
-      <script async defer src="/californium/scripts/syna-main.min.0fee75bda576b036c6916366c93862bee0f9e51fac1be5360918faac938026cb.js"></script>
-      <script async defer src="/californium/scripts/syna-content.min.6153911e04fccadd0dba2ac14e0506d77050bc7d6cae8b35ef59ac87ad2db515.js"></script>
+      <script async defer src="/californium/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js"></script>
+      <script async defer src="/californium/scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js"></script>
       <link rel='stylesheet' href='/californium/css/adopters.css'>
       <script src='https://iot.eclipse.org/assets/js/eclipsefdn.adopters.js'></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
diff --git a/categories/index.html b/categories/index.html
index 4f41bd2..052f114 100644
--- a/categories/index.html
+++ b/categories/index.html
@@ -29,7 +29,7 @@
         <meta name="twitter:image" content="">
   <meta name="author" content="Eclipse Californium project">
 
-  <meta name="generator" content="Hugo 0.81.0" />
+  <meta name="generator" content="Hugo 0.99.1" />
 
   <title>Categories &middot; Eclipse Californium&trade;</title>
 
@@ -387,7 +387,7 @@ html {
       
     };
   </script>
-  <script src="/californium/scripts/syna-head.min.e41aca70413d995c0e49a558ce1b0a572a1046016f64d7cfed0886c7ec75e3ab.js"></script>
+  <script src="/californium/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js"></script>
       <link rel='stylesheet' href='/californium/css/adopters.css'>
       <script src='https://iot.eclipse.org/assets/js/eclipsefdn.adopters.js'></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
@@ -612,45 +612,45 @@ Since version 3.0 this includes also the new configuration.</p>
 </section>
 
 <!-- Item -->
-<section id="scandium" class="fragment ">
-    <div class="container-fluid bg-light ">
+<section id="getting-started" class="fragment ">
+    <div class="container-fluid bg-dark ">
     <div class="container py-5 ">
 
   <div class="row align-items-center text-center justify-content-start text-lg-left">
     <div class="col-12 order-lg-12 pl-lg-5 col-lg-8">
         <div class="row pb-3">
-          <div class="col-12 text-body">
-            <h2>Scandium (Sc)</h2>
+          <div class="col-12 text-white">
+            <h2>Getting Started</h2>
+          </div>
+        </div>
+        <div class="row pb-2">
+          <div class="col-12 text-secondary">
+            <h5>Learn how to use Californium</h5>
           </div>
         </div>
       <div class="col-12 text-center d-lg-none pb-4 order-lg-1 mt-lg-5 mr-lg-auto col-lg-4">
         <div class="row">
           <div class="col-12">
-                <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
+                <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
           </div>
         </div>
       </div><div class="row text-left">
         <div class="col-12">
-          <div class="mb-0 text-body"><p>The Scandium (Sc) sub-module provides security for Californium. It implements DTLS 1.2 to secure your application
-through ECC with pre-shared keys, certificates, or raw public keys. It comes with many DTLS extensions, amoung them the DTLS 1.2 Connection ID.
-<br>
-Start making your exciting experience with an mature DTLS 1.2 solution, implemented for the Internet of Things.</p>
-<p><a href="https://www.rfc-editor.org/rfc/rfc6347.html">RFC 6347</a>,
-<a href="https://www.rfc-editor.org/rfc/rfc7250.html">RFC 7250</a>,
-<a href="https://www.rfc-editor.org/rfc/rfc9146.html">RFC 9146</a>.</p>
+          <div class="mb-0 text-secondary"><p>The Internet of Things if growing, but how can you build your own connected objects?
+Together with MQTT, CoAP is one of the popular IoT protocols.
+It provides answers to the typical IoT constraints: it is bandwidth efficient and fits
+in constrained embedded environment while providing friendly and discoverable RESTful API.</p>
 </div>
         </div>
       </div>
         <div class="col-12 text-center mb-2 text-lg-right">
             <a class="btn btn-lg m-2
-               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core#scandium-sc---security-for-californium">Introduction</a>
-            <a class="btn btn-lg m-2
-               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core">Repository</a>
+               btn-primary" href="http://goo.gl/LLQ03w">Take the Tutorial</a>
         </div></div>
     <div class="col-12 order-lg-1 mr-lg-auto col-lg-4">
       <div class="row justify-content-center">
             <div class="col-12 text-center d-none d-lg-inline">
-              <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
+              <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
             </div>
       </div>
     </div>
@@ -660,45 +660,45 @@ Start making your exciting experience with an mature DTLS 1.2 solution, implemen
 </section>
 
 <!-- Item -->
-<section id="getting-started" class="fragment ">
-    <div class="container-fluid bg-dark ">
+<section id="scandium" class="fragment ">
+    <div class="container-fluid bg-light ">
     <div class="container py-5 ">
 
   <div class="row align-items-center text-center justify-content-start text-lg-left">
     <div class="col-12 order-lg-12 pl-lg-5 col-lg-8">
         <div class="row pb-3">
-          <div class="col-12 text-white">
-            <h2>Getting Started</h2>
-          </div>
-        </div>
-        <div class="row pb-2">
-          <div class="col-12 text-secondary">
-            <h5>Learn how to use Californium</h5>
+          <div class="col-12 text-body">
+            <h2>Scandium (Sc)</h2>
           </div>
         </div>
       <div class="col-12 text-center d-lg-none pb-4 order-lg-1 mt-lg-5 mr-lg-auto col-lg-4">
         <div class="row">
           <div class="col-12">
-                <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
+                <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
           </div>
         </div>
       </div><div class="row text-left">
         <div class="col-12">
-          <div class="mb-0 text-secondary"><p>The Internet of Things if growing, but how can you build your own connected objects?
-Together with MQTT, CoAP is one of the popular IoT protocols.
-It provides answers to the typical IoT constraints: it is bandwidth efficient and fits
-in constrained embedded environment while providing friendly and discoverable RESTful API.</p>
+          <div class="mb-0 text-body"><p>The Scandium (Sc) sub-module provides security for Californium. It implements DTLS 1.2 to secure your application
+through ECC with pre-shared keys, certificates, or raw public keys. It comes with many DTLS extensions, amoung them the DTLS 1.2 Connection ID.
+<br>
+Start making your exciting experience with an mature DTLS 1.2 solution, implemented for the Internet of Things.</p>
+<p><a href="https://www.rfc-editor.org/rfc/rfc6347.html">RFC 6347</a>,
+<a href="https://www.rfc-editor.org/rfc/rfc7250.html">RFC 7250</a>,
+<a href="https://www.rfc-editor.org/rfc/rfc9146.html">RFC 9146</a>.</p>
 </div>
         </div>
       </div>
         <div class="col-12 text-center mb-2 text-lg-right">
             <a class="btn btn-lg m-2
-               btn-primary" href="http://goo.gl/LLQ03w">Take the Tutorial</a>
+               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core#scandium-sc---security-for-californium">Introduction</a>
+            <a class="btn btn-lg m-2
+               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core">Repository</a>
         </div></div>
     <div class="col-12 order-lg-1 mr-lg-auto col-lg-4">
       <div class="row justify-content-center">
             <div class="col-12 text-center d-none d-lg-inline">
-              <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
+              <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
             </div>
       </div>
     </div>
@@ -1089,8 +1089,8 @@ Collection of links and information, not only limited to Californium&rsquo;s sco
 <div id="react"></div>
 
     <!-- Theme Code -->
-      <script async defer src="/californium/scripts/syna-main.min.0fee75bda576b036c6916366c93862bee0f9e51fac1be5360918faac938026cb.js"></script>
-      <script async defer src="/californium/scripts/syna-content.min.6153911e04fccadd0dba2ac14e0506d77050bc7d6cae8b35ef59ac87ad2db515.js"></script>
+      <script async defer src="/californium/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js"></script>
+      <script async defer src="/californium/scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js"></script>
       <link rel='stylesheet' href='/californium/css/adopters.css'>
       <script src='https://iot.eclipse.org/assets/js/eclipsefdn.adopters.js'></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
diff --git a/index.html b/index.html
index 5b03397..e6c1df9 100644
--- a/index.html
+++ b/index.html
@@ -29,7 +29,7 @@
         <meta name="twitter:image" content="">
   <meta name="author" content="Eclipse Californium project">
 
-  <meta name="generator" content="Hugo 0.81.0" />
+  <meta name="generator" content="Hugo 0.99.1" />
 
   <title>Eclipse Californium&trade;</title>
 
@@ -387,7 +387,7 @@ html {
       
     };
   </script>
-  <script src="/californium/scripts/syna-head.min.e41aca70413d995c0e49a558ce1b0a572a1046016f64d7cfed0886c7ec75e3ab.js"></script>
+  <script src="/californium/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js"></script>
       <link rel='stylesheet' href='/californium/css/adopters.css'>
       <script src='https://iot.eclipse.org/assets/js/eclipsefdn.adopters.js'></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
@@ -612,45 +612,45 @@ Since version 3.0 this includes also the new configuration.</p>
 </section>
 
 <!-- Item -->
-<section id="scandium" class="fragment ">
-    <div class="container-fluid bg-light ">
+<section id="getting-started" class="fragment ">
+    <div class="container-fluid bg-dark ">
     <div class="container py-5 ">
 
   <div class="row align-items-center text-center justify-content-start text-lg-left">
     <div class="col-12 order-lg-12 pl-lg-5 col-lg-8">
         <div class="row pb-3">
-          <div class="col-12 text-body">
-            <h2>Scandium (Sc)</h2>
+          <div class="col-12 text-white">
+            <h2>Getting Started</h2>
+          </div>
+        </div>
+        <div class="row pb-2">
+          <div class="col-12 text-secondary">
+            <h5>Learn how to use Californium</h5>
           </div>
         </div>
       <div class="col-12 text-center d-lg-none pb-4 order-lg-1 mt-lg-5 mr-lg-auto col-lg-4">
         <div class="row">
           <div class="col-12">
-                <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
+                <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
           </div>
         </div>
       </div><div class="row text-left">
         <div class="col-12">
-          <div class="mb-0 text-body"><p>The Scandium (Sc) sub-module provides security for Californium. It implements DTLS 1.2 to secure your application
-through ECC with pre-shared keys, certificates, or raw public keys. It comes with many DTLS extensions, amoung them the DTLS 1.2 Connection ID.
-<br>
-Start making your exciting experience with an mature DTLS 1.2 solution, implemented for the Internet of Things.</p>
-<p><a href="https://www.rfc-editor.org/rfc/rfc6347.html">RFC 6347</a>,
-<a href="https://www.rfc-editor.org/rfc/rfc7250.html">RFC 7250</a>,
-<a href="https://www.rfc-editor.org/rfc/rfc9146.html">RFC 9146</a>.</p>
+          <div class="mb-0 text-secondary"><p>The Internet of Things if growing, but how can you build your own connected objects?
+Together with MQTT, CoAP is one of the popular IoT protocols.
+It provides answers to the typical IoT constraints: it is bandwidth efficient and fits
+in constrained embedded environment while providing friendly and discoverable RESTful API.</p>
 </div>
         </div>
       </div>
         <div class="col-12 text-center mb-2 text-lg-right">
             <a class="btn btn-lg m-2
-               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core#scandium-sc---security-for-californium">Introduction</a>
-            <a class="btn btn-lg m-2
-               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core">Repository</a>
+               btn-primary" href="http://goo.gl/LLQ03w">Take the Tutorial</a>
         </div></div>
     <div class="col-12 order-lg-1 mr-lg-auto col-lg-4">
       <div class="row justify-content-center">
             <div class="col-12 text-center d-none d-lg-inline">
-              <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
+              <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
             </div>
       </div>
     </div>
@@ -660,45 +660,45 @@ Start making your exciting experience with an mature DTLS 1.2 solution, implemen
 </section>
 
 <!-- Item -->
-<section id="getting-started" class="fragment ">
-    <div class="container-fluid bg-dark ">
+<section id="scandium" class="fragment ">
+    <div class="container-fluid bg-light ">
     <div class="container py-5 ">
 
   <div class="row align-items-center text-center justify-content-start text-lg-left">
     <div class="col-12 order-lg-12 pl-lg-5 col-lg-8">
         <div class="row pb-3">
-          <div class="col-12 text-white">
-            <h2>Getting Started</h2>
-          </div>
-        </div>
-        <div class="row pb-2">
-          <div class="col-12 text-secondary">
-            <h5>Learn how to use Californium</h5>
+          <div class="col-12 text-body">
+            <h2>Scandium (Sc)</h2>
           </div>
         </div>
       <div class="col-12 text-center d-lg-none pb-4 order-lg-1 mt-lg-5 mr-lg-auto col-lg-4">
         <div class="row">
           <div class="col-12">
-                <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
+                <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
           </div>
         </div>
       </div><div class="row text-left">
         <div class="col-12">
-          <div class="mb-0 text-secondary"><p>The Internet of Things if growing, but how can you build your own connected objects?
-Together with MQTT, CoAP is one of the popular IoT protocols.
-It provides answers to the typical IoT constraints: it is bandwidth efficient and fits
-in constrained embedded environment while providing friendly and discoverable RESTful API.</p>
+          <div class="mb-0 text-body"><p>The Scandium (Sc) sub-module provides security for Californium. It implements DTLS 1.2 to secure your application
+through ECC with pre-shared keys, certificates, or raw public keys. It comes with many DTLS extensions, amoung them the DTLS 1.2 Connection ID.
+<br>
+Start making your exciting experience with an mature DTLS 1.2 solution, implemented for the Internet of Things.</p>
+<p><a href="https://www.rfc-editor.org/rfc/rfc6347.html">RFC 6347</a>,
+<a href="https://www.rfc-editor.org/rfc/rfc7250.html">RFC 7250</a>,
+<a href="https://www.rfc-editor.org/rfc/rfc9146.html">RFC 9146</a>.</p>
 </div>
         </div>
       </div>
         <div class="col-12 text-center mb-2 text-lg-right">
             <a class="btn btn-lg m-2
-               btn-primary" href="http://goo.gl/LLQ03w">Take the Tutorial</a>
+               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core#scandium-sc---security-for-californium">Introduction</a>
+            <a class="btn btn-lg m-2
+               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core">Repository</a>
         </div></div>
     <div class="col-12 order-lg-1 mr-lg-auto col-lg-4">
       <div class="row justify-content-center">
             <div class="col-12 text-center d-none d-lg-inline">
-              <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
+              <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
             </div>
       </div>
     </div>
@@ -1089,8 +1089,8 @@ Collection of links and information, not only limited to Californium&rsquo;s sco
 <div id="react"></div>
 
     <!-- Theme Code -->
-      <script async defer src="/californium/scripts/syna-main.min.0fee75bda576b036c6916366c93862bee0f9e51fac1be5360918faac938026cb.js"></script>
-      <script async defer src="/californium/scripts/syna-content.min.6153911e04fccadd0dba2ac14e0506d77050bc7d6cae8b35ef59ac87ad2db515.js"></script>
+      <script async defer src="/californium/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js"></script>
+      <script async defer src="/californium/scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js"></script>
       <link rel='stylesheet' href='/californium/css/adopters.css'>
       <script src='https://iot.eclipse.org/assets/js/eclipsefdn.adopters.js'></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
diff --git a/scripts/syna-content.min.6153911e04fccadd0dba2ac14e0506d77050bc7d6cae8b35ef59ac87ad2db515.js b/scripts/syna-content.min.6153911e04fccadd0dba2ac14e0506d77050bc7d6cae8b35ef59ac87ad2db515.js
deleted file mode 100644
index 5d6065a..0000000
--- a/scripts/syna-content.min.6153911e04fccadd0dba2ac14e0506d77050bc7d6cae8b35ef59ac87ad2db515.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(c){var b={};function a(d){if(b[d])return b[d].exports;var e=b[d]={i:d,l:!1,exports:{}};return c[d].call(e.exports,e,e.exports,a),e.l=!0,e.exports}return a.m=c,a.c=b,a.d=function(b,c,d){a.o(b,c)||Object.defineProperty(b,c,{enumerable:!0,get:d})},a.r=function(a){typeof Symbol!='undefined'&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:'Module'}),Object.defineProperty(a,'__esModule',{value:!0})},a.t=function(b,d){var c,e;if(d&1&&(b=a(b)),d&8)return b;if(d&4&&typeof b=='object'&&b&&b.__esModule)return b;if(c=Object.create(null),a.r(c),Object.defineProperty(c,'default',{enumerable:!0,value:b}),d&2&&typeof b!='string')for(e in b)a.d(c,e,function(a){return b[a]}.bind(null,e));return c},a.n=function(b){var c=b&&b.__esModule?function(){return b.default}:function(){return b};return a.d(c,'a',c),c},a.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},a.p="",a(a.s="./assets/js/content.js")})({"./assets/js/content.js":function(a,b){eval("var sidebarContent = document.querySelector('.content-sidebar .sticky-top .content-sidebar-body');\n\nif (sidebarContent) {\n  var sidebarContentParent = sidebarContent.parentElement;\n  var sidebarContentParentPadding = parseInt(getComputedStyle(sidebarContentParent).paddingTop, 10);\n  var headerHeight = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-height'), 10);\n  document.addEventListener('scroll', function () {\n    var sidebarTop = sidebarContentParent.getBoundingClientRect().top;\n    var extraPadding = 0;\n\n    if (sidebarTop <= headerHeight) {\n      extraPadding = headerHeight;\n    }\n\n    sidebarContentParent.style.setProperty('padding-top', extraPadding + sidebarContentParentPadding + 'px', 'important');\n  });\n}\n\n//# sourceURL=webpack:///./assets/js/content.js?")}})
\ No newline at end of file
diff --git a/scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js b/scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js
new file mode 100644
index 0000000..021ad25
--- /dev/null
+++ b/scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js
@@ -0,0 +1 @@
+(function(n){var t={};function e(s){if(t[s])return t[s].exports;var o=t[s]={i:s,l:!1,exports:{}};return n[s].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=n,e.c=t,e.d=function(t,n,s){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:s})},e.r=function(e){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},e.t=function(t,n){if(n&1&&(t=e(t)),n&8)return t;if(n&4&&typeof t=="object"&&t&&t.__esModule)return t;var o,s=Object.create(null);if(e.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),n&2&&typeof t!="string")for(o in t)e.d(s,o,function(e){return t[e]}.bind(null,o));return s},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},e.p="",e(e.s="./assets/js/content.js")})({"./assets/js/content.js":function(){eval("var sidebarContent = document.querySelector('.content-sidebar .sticky-top .content-sidebar-body');\n\nif (sidebarContent) {\n  var sidebarContentParent = sidebarContent.parentElement;\n  var sidebarContentParentPadding = parseInt(getComputedStyle(sidebarContentParent).paddingTop, 10);\n  var headerHeight = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-height'), 10);\n  document.addEventListener('scroll', function () {\n    var sidebarTop = sidebarContentParent.getBoundingClientRect().top;\n    var extraPadding = 0;\n\n    if (sidebarTop <= headerHeight) {\n      extraPadding = headerHeight;\n    }\n\n    sidebarContentParent.style.setProperty('padding-top', extraPadding + sidebarContentParentPadding + 'px', 'important');\n  });\n}\n\n//# sourceURL=webpack:///./assets/js/content.js?")}})
\ No newline at end of file
diff --git a/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js b/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js
new file mode 100644
index 0000000..6ce1e77
--- /dev/null
+++ b/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js
@@ -0,0 +1 @@
+(function(n){var t={};function e(s){if(t[s])return t[s].exports;var o=t[s]={i:s,l:!1,exports:{}};return n[s].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=n,e.c=t,e.d=function(t,n,s){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:s})},e.r=function(e){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},e.t=function(t,n){if(n&1&&(t=e(t)),n&8)return t;if(n&4&&typeof t=="object"&&t&&t.__esModule)return t;var o,s=Object.create(null);if(e.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),n&2&&typeof t!="string")for(o in t)e.d(s,o,function(e){return t[e]}.bind(null,o));return s},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},e.p="",e(e.s="./assets/js/head.js")})({"./assets/js/head.js":function(){eval('function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Stream = /*#__PURE__*/function () {\n  function Stream() {\n    _classCallCheck(this, Stream);\n\n    this._topics = {};\n    this.subUid = -1;\n    this._activeUrlEvent = null;\n\n    this._updateActiveEvent(window.location.href);\n\n    window.onhashchange = function (_ref) {\n      var newURL = _ref.newURL;\n\n      this._publishHashChange(newURL);\n    };\n\n    this.subscribe = this.subscribe.bind(this);\n    this.publish = this.publish.bind(this);\n    this.unsubscribe = this.unsubscribe.bind(this);\n    this._publishHashChange = this._publishHashChange.bind(this);\n    this._translateUrlQuery = this._translateUrlQuery.bind(this);\n    this._updateActiveEvent = this._updateActiveEvent.bind(this);\n  }\n\n  _createClass(Stream, [{\n    key: "subscribe",\n    value: function subscribe(topic, func) {\n      if (!this._topics[topic]) {\n        this._topics[topic] = [];\n      }\n\n      var token = (++this.subUid).toString();\n\n      this._topics[topic].push({\n        token: token,\n        func: func\n      });\n\n      if (this._activeUrlEvent && this._activeUrlEvent.event === topic) {\n        func.call(null, this._activeUrlEvent.args);\n      }\n\n      return token;\n    }\n  }, {\n    key: "publish",\n    value: function publish(topic, argsText) {\n      var _this = this;\n\n      if (!this._topics[topic]) {\n        return false;\n      }\n\n      setTimeout(function () {\n        var subscribers = _this._topics[topic];\n        var args = _typeof(argsText) === \'object\' ? argsText : argsText.split(\',\').reduce(function (tmp, param) {\n          var _param$split = param.split(\':\'),\n              _param$split2 = _slicedToArray(_param$split, 2),\n              key = _param$split2[0],\n              value = _param$split2[1];\n\n          tmp[key] = value;\n          return tmp;\n        }, {});\n        var len = subscribers ? subscribers.length : 0;\n\n        while (len--) {\n          subscribers[len].func.call(null, args);\n        }\n      }, 0);\n      return true;\n    }\n  }, {\n    key: "unsubscribe",\n    value: function unsubscribe(token) {\n      for (var topic in this._topics) {\n        if (this._topics[topic]) {\n          for (var i = 0, j = this._topics[topic].length; i < j; i++) {\n            if (this._topics[topic][i].token === token) {\n              this._topics[topic].splice(i, 1);\n\n              return token;\n            }\n          }\n        }\n      }\n\n      return false;\n    }\n  }, {\n    key: "_publishHashChange",\n    value: function _publishHashChange(url) {\n      var _this$_updateActiveEv = this._updateActiveEvent(url),\n          event = _this$_updateActiveEv.event,\n          args = _this$_updateActiveEv.args;\n\n      if (!event) {\n        return false;\n      }\n\n      return this.publish(event, args);\n    }\n  }, {\n    key: "_updateActiveEvent",\n    value: function _updateActiveEvent(url) {\n      var params = this._translateUrlQuery(url);\n\n      var event = null;\n\n      if (!params.e && window.syna.enabledUnsafeEvents && params.event) {\n        event = params.event;\n      } else if (params.e) {\n        params = this._translateUrlQuery(atob(params.e));\n        event = params.event;\n      } else {\n        return {};\n      }\n\n      delete params.event;\n      this._activeUrlEvent = {\n        event: event,\n        args: params\n      };\n      return this._activeUrlEvent;\n    }\n  }, {\n    key: "_translateUrlQuery",\n    value: function _translateUrlQuery(url) {\n      var query = url.slice(url.indexOf(\'?\') + 1) || \'\';\n      return query.split(\'&\').reduce(function (tmp, pair) {\n        var _pair$split = pair.split(\'=\'),\n            _pair$split2 = _slicedToArray(_pair$split, 2),\n            key = _pair$split2[0],\n            value = _pair$split2[1];\n\n        tmp[decodeURIComponent(key)] = decodeURIComponent(value);\n        return tmp;\n      }, {});\n    }\n  }]);\n\n  return Stream;\n}();\n\nvar SynaAPI = /*#__PURE__*/function () {\n  function SynaAPI() {\n    _classCallCheck(this, SynaAPI);\n\n    this._registry = {};\n    this.register = this.register.bind(this);\n    this.update = this.update.bind(this);\n    this.get = this.get.bind(this);\n    this.getScope = this.getScope.bind(this);\n    this.toArray = this.toArray.bind(this);\n  }\n\n  _createClass(SynaAPI, [{\n    key: "register",\n    value: function register(scope, id, value) {\n      if (!this._registry[scope]) {\n        this._registry[scope] = {};\n      }\n\n      this._registry[scope][id] = value;\n    }\n  }, {\n    key: "update",\n    value: function update(scope, id, value) {\n      if (!this._registry[scope] || !this._registry[scope][id]) {\n        return null;\n      }\n\n      this._registry[scope][id] = value;\n      return value;\n    }\n  }, {\n    key: "get",\n    value: function get(scope, id) {\n      if (!this._registry[scope]) {\n        return null;\n      }\n\n      return this._registry[scope][id];\n    }\n  }, {\n    key: "getScope",\n    value: function getScope(scope) {\n      return this._registry[scope];\n    }\n  }, {\n    key: "toArray",\n    value: function toArray(scope) {\n      if (!this._registry[scope]) {\n        return null;\n      }\n\n      return Object.values(this._registry[scope]);\n    }\n  }, {\n    key: "renderTemplate",\n    value: function renderTemplate(templateString, data) {\n      var conditionalMatches, conditionalPattern, copy;\n      conditionalPattern = /\\$\\{\\s*isset ([a-zA-Z]*) \\s*\\}(.*)\\$\\{\\s*end\\s*}/g; //since loop below depends on re.lastInxdex, we use a copy to capture any manipulations whilst inside the loop\n\n      copy = templateString;\n\n      while ((conditionalMatches = conditionalPattern.exec(templateString)) !== null) {\n        if (data[conditionalMatches[1]]) {\n          //valid key, remove conditionals, leave contents.\n          copy = copy.replace(conditionalMatches[0], conditionalMatches[2]);\n        } else {\n          //not valid, remove entire section\n          copy = copy.replace(conditionalMatches[0], \'\');\n        }\n      }\n\n      templateString = copy; //now any conditionals removed we can do simple substitution\n\n      var key, find, re;\n\n      for (key in data) {\n        find = \'\\\\$\\\\{\\\\s*\' + key + \'\\\\s*\\\\}\';\n        re = new RegExp(find, \'g\');\n        templateString = templateString.replace(re, data[key]);\n      }\n\n      return templateString;\n    }\n  }]);\n\n  return SynaAPI;\n}();\n\nwindow.syna = window.syna || {};\nwindow.syna.api = new SynaAPI();\nwindow.syna.stream = new Stream();\nwindow.synaPortals = {};\n\n//# sourceURL=webpack:///./assets/js/head.js?')}})
\ No newline at end of file
diff --git a/scripts/syna-head.min.e41aca70413d995c0e49a558ce1b0a572a1046016f64d7cfed0886c7ec75e3ab.js b/scripts/syna-head.min.e41aca70413d995c0e49a558ce1b0a572a1046016f64d7cfed0886c7ec75e3ab.js
deleted file mode 100644
index 29ed1af..0000000
--- a/scripts/syna-head.min.e41aca70413d995c0e49a558ce1b0a572a1046016f64d7cfed0886c7ec75e3ab.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(c){var b={};function a(d){if(b[d])return b[d].exports;var e=b[d]={i:d,l:!1,exports:{}};return c[d].call(e.exports,e,e.exports,a),e.l=!0,e.exports}return a.m=c,a.c=b,a.d=function(b,c,d){a.o(b,c)||Object.defineProperty(b,c,{enumerable:!0,get:d})},a.r=function(a){typeof Symbol!='undefined'&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:'Module'}),Object.defineProperty(a,'__esModule',{value:!0})},a.t=function(b,d){var c,e;if(d&1&&(b=a(b)),d&8)return b;if(d&4&&typeof b=='object'&&b&&b.__esModule)return b;if(c=Object.create(null),a.r(c),Object.defineProperty(c,'default',{enumerable:!0,value:b}),d&2&&typeof b!='string')for(e in b)a.d(c,e,function(a){return b[a]}.bind(null,e));return c},a.n=function(b){var c=b&&b.__esModule?function(){return b.default}:function(){return b};return a.d(c,'a',c),c},a.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},a.p="",a(a.s="./assets/js/head.js")})({"./assets/js/head.js":function(a,b){eval('function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Stream = /*#__PURE__*/function () {\n  function Stream() {\n    _classCallCheck(this, Stream);\n\n    this._topics = {};\n    this.subUid = -1;\n    this._activeUrlEvent = null;\n\n    this._updateActiveEvent(window.location.href);\n\n    window.onhashchange = function (_ref) {\n      var newURL = _ref.newURL;\n\n      this._publishHashChange(newURL);\n    };\n\n    this.subscribe = this.subscribe.bind(this);\n    this.publish = this.publish.bind(this);\n    this.unsubscribe = this.unsubscribe.bind(this);\n    this._publishHashChange = this._publishHashChange.bind(this);\n    this._translateUrlQuery = this._translateUrlQuery.bind(this);\n    this._updateActiveEvent = this._updateActiveEvent.bind(this);\n  }\n\n  _createClass(Stream, [{\n    key: "subscribe",\n    value: function subscribe(topic, func) {\n      if (!this._topics[topic]) {\n        this._topics[topic] = [];\n      }\n\n      var token = (++this.subUid).toString();\n\n      this._topics[topic].push({\n        token: token,\n        func: func\n      });\n\n      if (this._activeUrlEvent && this._activeUrlEvent.event === topic) {\n        func.call(null, this._activeUrlEvent.args);\n      }\n\n      return token;\n    }\n  }, {\n    key: "publish",\n    value: function publish(topic, argsText) {\n      var _this = this;\n\n      if (!this._topics[topic]) {\n        return false;\n      }\n\n      setTimeout(function () {\n        var subscribers = _this._topics[topic];\n        var args = _typeof(argsText) === \'object\' ? argsText : argsText.split(\',\').reduce(function (tmp, param) {\n          var _param$split = param.split(\':\'),\n              _param$split2 = _slicedToArray(_param$split, 2),\n              key = _param$split2[0],\n              value = _param$split2[1];\n\n          tmp[key] = value;\n          return tmp;\n        }, {});\n        var len = subscribers ? subscribers.length : 0;\n\n        while (len--) {\n          subscribers[len].func.call(null, args);\n        }\n      }, 0);\n      return true;\n    }\n  }, {\n    key: "unsubscribe",\n    value: function unsubscribe(token) {\n      for (var topic in this._topics) {\n        if (this._topics[topic]) {\n          for (var i = 0, j = this._topics[topic].length; i < j; i++) {\n            if (this._topics[topic][i].token === token) {\n              this._topics[topic].splice(i, 1);\n\n              return token;\n            }\n          }\n        }\n      }\n\n      return false;\n    }\n  }, {\n    key: "_publishHashChange",\n    value: function _publishHashChange(url) {\n      var _this$_updateActiveEv = this._updateActiveEvent(url),\n          event = _this$_updateActiveEv.event,\n          args = _this$_updateActiveEv.args;\n\n      if (!event) {\n        return false;\n      }\n\n      return this.publish(event, args);\n    }\n  }, {\n    key: "_updateActiveEvent",\n    value: function _updateActiveEvent(url) {\n      var params = this._translateUrlQuery(url);\n\n      var event = null;\n\n      if (!params.e && window.syna.enabledUnsafeEvents && params.event) {\n        event = params.event;\n      } else if (params.e) {\n        params = this._translateUrlQuery(atob(params.e));\n        event = params.event;\n      } else {\n        return {};\n      }\n\n      delete params.event;\n      this._activeUrlEvent = {\n        event: event,\n        args: params\n      };\n      return this._activeUrlEvent;\n    }\n  }, {\n    key: "_translateUrlQuery",\n    value: function _translateUrlQuery(url) {\n      var query = url.slice(url.indexOf(\'?\') + 1) || \'\';\n      return query.split(\'&\').reduce(function (tmp, pair) {\n        var _pair$split = pair.split(\'=\'),\n            _pair$split2 = _slicedToArray(_pair$split, 2),\n            key = _pair$split2[0],\n            value = _pair$split2[1];\n\n        tmp[decodeURIComponent(key)] = decodeURIComponent(value);\n        return tmp;\n      }, {});\n    }\n  }]);\n\n  return Stream;\n}();\n\nvar SynaAPI = /*#__PURE__*/function () {\n  function SynaAPI() {\n    _classCallCheck(this, SynaAPI);\n\n    this._registry = {};\n    this.register = this.register.bind(this);\n    this.update = this.update.bind(this);\n    this.get = this.get.bind(this);\n    this.getScope = this.getScope.bind(this);\n    this.toArray = this.toArray.bind(this);\n  }\n\n  _createClass(SynaAPI, [{\n    key: "register",\n    value: function register(scope, id, value) {\n      if (!this._registry[scope]) {\n        this._registry[scope] = {};\n      }\n\n      this._registry[scope][id] = value;\n    }\n  }, {\n    key: "update",\n    value: function update(scope, id, value) {\n      if (!this._registry[scope] || !this._registry[scope][id]) {\n        return null;\n      }\n\n      this._registry[scope][id] = value;\n      return value;\n    }\n  }, {\n    key: "get",\n    value: function get(scope, id) {\n      if (!this._registry[scope]) {\n        return null;\n      }\n\n      return this._registry[scope][id];\n    }\n  }, {\n    key: "getScope",\n    value: function getScope(scope) {\n      return this._registry[scope];\n    }\n  }, {\n    key: "toArray",\n    value: function toArray(scope) {\n      if (!this._registry[scope]) {\n        return null;\n      }\n\n      return Object.values(this._registry[scope]);\n    }\n  }, {\n    key: "renderTemplate",\n    value: function renderTemplate(templateString, data) {\n      var conditionalMatches, conditionalPattern, copy;\n      conditionalPattern = /\\$\\{\\s*isset ([a-zA-Z]*) \\s*\\}(.*)\\$\\{\\s*end\\s*}/g; //since loop below depends on re.lastInxdex, we use a copy to capture any manipulations whilst inside the loop\n\n      copy = templateString;\n\n      while ((conditionalMatches = conditionalPattern.exec(templateString)) !== null) {\n        if (data[conditionalMatches[1]]) {\n          //valid key, remove conditionals, leave contents.\n          copy = copy.replace(conditionalMatches[0], conditionalMatches[2]);\n        } else {\n          //not valid, remove entire section\n          copy = copy.replace(conditionalMatches[0], \'\');\n        }\n      }\n\n      templateString = copy; //now any conditionals removed we can do simple substitution\n\n      var key, find, re;\n\n      for (key in data) {\n        find = \'\\\\$\\\\{\\\\s*\' + key + \'\\\\s*\\\\}\';\n        re = new RegExp(find, \'g\');\n        templateString = templateString.replace(re, data[key]);\n      }\n\n      return templateString;\n    }\n  }]);\n\n  return SynaAPI;\n}();\n\nwindow.syna = window.syna || {};\nwindow.syna.api = new SynaAPI();\nwindow.syna.stream = new Stream();\nwindow.synaPortals = {};\n\n//# sourceURL=webpack:///./assets/js/head.js?')}})
\ No newline at end of file
diff --git a/scripts/syna-main.min.0fee75bda576b036c6916366c93862bee0f9e51fac1be5360918faac938026cb.js b/scripts/syna-main.min.0fee75bda576b036c6916366c93862bee0f9e51fac1be5360918faac938026cb.js
deleted file mode 100644
index 40a2b4f..0000000
--- a/scripts/syna-main.min.0fee75bda576b036c6916366c93862bee0f9e51fac1be5360918faac938026cb.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(c){var b={};function a(d){if(b[d])return b[d].exports;var e=b[d]={i:d,l:!1,exports:{}};return c[d].call(e.exports,e,e.exports,a),e.l=!0,e.exports}return a.m=c,a.c=b,a.d=function(b,c,d){a.o(b,c)||Object.defineProperty(b,c,{enumerable:!0,get:d})},a.r=function(a){typeof Symbol!='undefined'&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:'Module'}),Object.defineProperty(a,'__esModule',{value:!0})},a.t=function(b,d){var c,e;if(d&1&&(b=a(b)),d&8)return b;if(d&4&&typeof b=='object'&&b&&b.__esModule)return b;if(c=Object.create(null),a.r(c),Object.defineProperty(c,'default',{enumerable:!0,value:b}),d&2&&typeof b!='string')for(e in b)a.d(c,e,function(a){return b[a]}.bind(null,e));return c},a.n=function(b){var c=b&&b.__esModule?function(){return b.default}:function(){return b};return a.d(c,'a',c),c},a.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},a.p="",a(a.s="./assets/js/index.js")})({"./assets/js/helpers/bootstrap-helper.js":function(a,b,c){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _jq_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jq-helpers */ \"./assets/js/helpers/jq-helpers.js\");\n// Updated the script from https://stackoverflow.com/questions/43417452/animate-navbar-collapse-using-pure-js-css/43434017#43434017\n\nvar toggle = document.querySelectorAll('.navbar-toggler');\nvar collapse = document.querySelectorAll('.navbar-collapse');\nvar dropdowns = document.querySelectorAll('.dropdown') || [];\n\nfunction toggleMenu(node) {\n  var menu = document.querySelector(node.dataset.target);\n  menu.classList.toggle('in');\n}\n\nfunction closeMenus() {\n  Array.from(dropdowns || []).forEach(function (node) {\n    node.querySelector('.dropdown-toggle').classList.remove('dropdown-open');\n    node.classList.remove('open');\n  });\n}\n\nfunction closeMenusOnResize() {\n  if (document.body.clientWidth >= 768) {\n    closeMenus();\n    Array.from(collapse || []).forEach(function (node) {\n      return node.classList.remove('in');\n    });\n  }\n}\n\nfunction toggleDropdown() {\n  if (document.body.clientWidth < 768) {\n    var open = this.classList.contains('open');\n    closeMenus();\n\n    if (!open) {\n      this.querySelector('.dropdown-toggle').classList.toggle('dropdown-open');\n      this.classList.toggle('open');\n    }\n  }\n}\n\nwindow.addEventListener('resize', closeMenusOnResize, false);\nArray.from(dropdowns || []).forEach(function (node) {\n  return node.addEventListener('click', toggleDropdown);\n});\nArray.from(toggle || []).forEach(function (node) {\n  return node.addEventListener('click', function (e) {\n    return toggleMenu(node);\n  }, false);\n});\n\n//# sourceURL=webpack:///./assets/js/helpers/bootstrap-helper.js?")},"./assets/js/helpers/jq-helpers.js":function(a,b,c){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _serialize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./serialize */ "./assets/js/helpers/serialize.js");\n\n\nfunction $(selector) {\n  var nodes = typeof selector === \'string\' ? Array.from((this && Array.isArray(this) ? this[0] : document).querySelectorAll(selector)) : [selector];\n  var _returnee = {\n    $nodes: nodes,\n    $: $.bind(nodes),\n    on: function on(event, selector, callback) {\n      if (typeof callback === \'undefined\') {\n        callback = selector;\n        selector = null;\n      }\n\n      if (selector) {\n        nodes.forEach(function (node) {\n          node.addEventListener(event, function (e) {\n            if (e.target.matches(selector)) {\n              callback.call(node, e);\n            }\n          });\n        });\n      } else {\n        nodes.forEach(function (node) {\n          return node["on".concat(event)] = callback.bind(node);\n        });\n      }\n\n      return _returnee;\n    },\n    addClass: function addClass(className) {\n      nodes.forEach(function (node) {\n        return node.classList.add(className);\n      });\n      return _returnee;\n    },\n    removeClass: function removeClass(className) {\n      nodes.forEach(function (node) {\n        return node.classList.remove(className);\n      });\n      return _returnee;\n    },\n    attr: function attr(attribute, value) {\n      if (value === undefined && nodes.length > 1) {\n        throw new Error("Can\'t access value of several nodes\' attributes");\n      }\n\n      if (value === undefined) {\n        return nodes[0].getAttribute(attribute);\n      } else if (value !== null) {\n        nodes.forEach(function (node) {\n          return node.setAttribute(attribute, value);\n        });\n      }\n\n      return _returnee;\n    },\n    removeAttr: function removeAttr(attribute) {\n      nodes.forEach(function (node) {\n        return node.removeAttribute(attribute);\n      });\n      return _returnee;\n    },\n    append: function append(innerHTML) {\n      nodes.forEach(function (node) {\n        return node.insertAdjacentHTML(\'beforeend\', innerHTML);\n      });\n      return _returnee;\n    },\n    html: function html(innerHTML) {\n      if (innerHTML === undefined) {\n        if (nodes.length > 1) {\n          throw new Error("Can\'t get several nodes innerHTML at once");\n        }\n\n        return nodes[0].innerHTML;\n      }\n\n      nodes.forEach(function (node) {\n        return node.innerHTML = innerHTML;\n      });\n      return _returnee;\n    },\n    text: function text(innerText) {\n      if (innerText === undefined) {\n        if (nodes.length > 1) {\n          throw new Error("Can\'t get several nodes innerText at once");\n        }\n\n        return nodes[0].innerText;\n      }\n\n      if (innerText !== null) {\n        nodes.forEach(function (node) {\n          return node.innerText = innerText;\n        });\n      }\n\n      return _returnee;\n    },\n    val: function val(value) {\n      if (value === undefined) {\n        if (nodes.length > 1) {\n          throw new Error("Can\'t get several nodes value at once");\n        }\n\n        return nodes[0].value;\n      }\n\n      nodes.forEach(function (node) {\n        return node.value = value;\n      });\n      return _returnee;\n    },\n    submit: function submit() {\n      return nodes.forEach(function (node) {\n        return node.submit();\n      });\n    },\n    serialize: function serialize() {\n      var json = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (nodes.length > 1) {\n        throw new Error("Can\'t serialize multiple forms at once");\n      }\n\n      if (json) {\n        return Object(_serialize__WEBPACK_IMPORTED_MODULE_0__["serializeJSON"])(nodes[0]);\n      }\n\n      return Object(_serialize__WEBPACK_IMPORTED_MODULE_0__["default"])(nodes[0]);\n    },\n    length: nodes.length\n  };\n  nodes.forEach(function (node, index) {\n    return _returnee[index] = node;\n  });\n  return _returnee;\n}\n\n$.scrollTo = function scrollTo(element, to, duration) {\n  if (duration <= 0) return;\n  var difference = to - element.scrollTop;\n  var perTick = difference / duration * 10;\n  setTimeout(function () {\n    element.scrollTop = element.scrollTop + perTick;\n    if (element.scrollTop === to) return;\n    scrollTo(element, to, duration - 10);\n  }, 10);\n};\n\n$.ajax = function ajax(_ref) {\n  var method = _ref.method,\n      url = _ref.url,\n      data = _ref.data,\n      _ref$options = _ref.options,\n      options = _ref$options === void 0 ? {\n    contentType: \'application/json;charset=UTF-8\'\n  } : _ref$options;\n  var xhr = new XMLHttpRequest();\n  xhr.open(method.toUpperCase(), url);\n  xhr.setRequestHeader(\'Content-Type\', options.contentType);\n  xhr.send(data);\n  return new Promise(function (resolve, reject) {\n    xhr.onreadystatechange = function () {\n      if (xhr.readyState == 4) {\n        if (xhr.status == 200) {\n          resolve(JSON.parse(xhr.responseXML || xhr.responseText));\n        } else {\n          reject(xhr.statusText);\n        }\n      }\n    };\n  });\n};\n\n$.post = function (url, data, options) {\n  return $.ajax({\n    method: \'post\',\n    url: url,\n    data: data,\n    options: options\n  });\n};\n\nif (window && window.testingMode) {\n  window.jqHelpers = $;\n}\n\n/* harmony default export */ __webpack_exports__["default"] = ($);\n\n//# sourceURL=webpack:///./assets/js/helpers/jq-helpers.js?')},"./assets/js/helpers/serialize.js":function(a,b,c){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return serialize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"serializeJSON\", function() { return serializeJSON; });\n// From https://code.google.com/archive/p/form-serialize/\nfunction serialize(form) {\n  if (!form || form.nodeName !== 'FORM') {\n    return;\n  }\n\n  var i,\n      j,\n      q = [];\n\n  for (i = form.elements.length - 1; i >= 0; i = i - 1) {\n    if (form.elements[i].name === '') {\n      continue;\n    }\n\n    switch (form.elements[i].nodeName) {\n      case 'INPUT':\n        switch (form.elements[i].type) {\n          case 'text':\n          case 'hidden':\n          case 'password':\n          case 'button':\n          case 'reset':\n          case 'submit':\n            q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n            break;\n\n          case 'checkbox':\n          case 'radio':\n            if (form.elements[i].checked) {\n              q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n            }\n\n            break;\n\n          case 'file':\n            break;\n        }\n\n        break;\n\n      case 'TEXTAREA':\n        q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n        break;\n\n      case 'SELECT':\n        switch (form.elements[i].type) {\n          case 'select-one':\n            q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n            break;\n\n          case 'select-multiple':\n            for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) {\n              if (form.elements[i].options[j].selected) {\n                q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].options[j].value));\n              }\n            }\n\n            break;\n        }\n\n        break;\n\n      case 'BUTTON':\n        switch (form.elements[i].type) {\n          case 'reset':\n          case 'submit':\n          case 'button':\n            q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n            break;\n        }\n\n        break;\n    }\n  }\n\n  return q.join('&');\n}\nfunction serializeJSON(form) {\n  var obj = {};\n  var elements = form.querySelectorAll('input, select, textarea');\n\n  for (var i = 0; i < elements.length; ++i) {\n    var element = elements[i];\n    var name = element.name;\n    var value = element.value;\n\n    if (name) {\n      if (element.type === 'radio' || element.type === 'checkbox') {\n        if (element.checked) {\n          obj[name] = value;\n        }\n      } else if (element.type !== 'file') {\n        obj[name] = value;\n      }\n    }\n  }\n\n  return JSON.stringify(obj);\n}\n\n//# sourceURL=webpack:///./assets/js/helpers/serialize.js?")},"./assets/js/index.js":function(a,b,c){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_bootstrap_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/bootstrap-helper */ \"./assets/js/helpers/bootstrap-helper.js\");\n/* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scroll */ \"./assets/js/scroll.js\");\n/* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modal */ \"./assets/js/modal.js\");\n/* harmony import */ var _helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers/jq-helpers */ \"./assets/js/helpers/jq-helpers.js\");\n\n\n\n\nObject(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(document).on('click', '.btn-group-toggle .btn', function (e) {\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(e.target.closest('.btn-group-toggle')).$('label.btn.active').removeClass('active');\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(e.target).addClass('active');\n}).on('click', '.dropdown-toggle', function (e) {\n  var parent = e.target.parentElement;\n  var dropdowns = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(parent).$('.dropdown-menu');\n\n  if (parent.classList.contains('show')) {\n    parent.classList.remove('show');\n    dropdowns.removeClass('show');\n  } else {\n    parent.classList.add('show');\n    dropdowns.addClass('show');\n  }\n}).on('click', '.dropdown-item', function (e) {\n  var dropdown = e.target.parentElement;\n  var button = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dropdown.parentElement).$('.dropdown-toggle');\n\n  if (!button.$nodes[0].classList.contains('nav-link')) {\n    button.text(e.target.innerText);\n    button.attr('data-value', e.target.dataset.value);\n  }\n\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dropdown).removeClass('show');\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dropdown.parentElement).removeClass('show');\n}).on('click', 'a[href*=\"event=\"], a[href*=\"e=\"]', function (e) {\n  if (window.syna.stream._publishHashChange(e.target.href)) {\n    e.preventDefault();\n    return false;\n  }\n});\n\n//# sourceURL=webpack:///./assets/js/index.js?")},"./assets/js/modal.js":function(a,b,c){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/jq-helpers */ \"./assets/js/helpers/jq-helpers.js\");\n/* harmony import */ var _templates_modal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./templates/modal */ \"./assets/js/templates/modal.js\");\n\n\nObject(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('body').append(_templates_modal__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\nvar setImage = function setImage(image, element) {\n  if (image) {\n    element.removeClass('hidden');\n    element[0].src = image;\n  } else {\n    element.addClass('hidden');\n  }\n};\n\nsetTimeout(function () {\n  var modal = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('.modal');\n  var dialog = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('.modal .modal-dialog');\n\n  function closeDialog() {\n    Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('body').removeClass('modal-open');\n    modal.removeClass('show');\n  }\n\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('[data-dismiss=\"modal\"]').on('click', closeDialog);\n  modal.on('click', function (e) {\n    if (!dialog[0].contains(e.target)) {\n      closeDialog();\n    }\n  });\n\n  (window.syna || (window.syna = {})).showModal = function (_ref) {\n    var title = _ref.title,\n        subtitle = _ref.subtitle,\n        background = _ref.background,\n        image = _ref.image,\n        icon = _ref.icon,\n        content = _ref.content,\n        labels = _ref.labels,\n        _ref$size = _ref.size,\n        size = _ref$size === void 0 ? '' : _ref$size;\n    Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('body').addClass('modal-open');\n    modal.addClass('show');\n    dialog.$('.title').html(title || '');\n    dialog.$('.subtitle').html(subtitle || '');\n    setImage(image, dialog.$('.modal-asset-image'));\n    setImage(background, dialog.$('.modal-background-image'));\n\n    if (!background) {\n      dialog.$('.modal-asset-image').addClass('hidden');\n      setImage(image, dialog.$('.modal-background-image'));\n    }\n\n    if (labels) {\n      dialog.$('.badge-container').removeClass('hidden');\n      dialog.$('.badge-container').html(labels || '');\n    } else {\n      dialog.$('.badge-container').addClass('hidden');\n    }\n\n    if (icon) {\n      dialog.$('.icon-container').removeClass('hidden');\n      dialog.$('.icon-container').html(icon.replace(/fa-inverse/g, ''));\n    } else {\n      dialog.$('.icon-container').addClass('hidden');\n    }\n\n    if (content) {\n      dialog.$('.modal-body .content').html(content);\n      dialog.$('.modal-body .content').removeClass('hidden');\n    } else {\n      dialog.$('.modal-body .content').addClass('hidden');\n    }\n\n    dialog.removeClass('md').removeClass('lg').addClass(size);\n  };\n}, 0);\n\n//# sourceURL=webpack:///./assets/js/modal.js?")},"./assets/js/scroll.js":function(a,b,c){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/jq-helpers */ "./assets/js/helpers/jq-helpers.js");\n\n\n(function () {\n  handleScroll();\n  window.onscroll = handleScroll;\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.scroll-to-top\').on(\'click\', scrollToTop);\n})();\n\nfunction handleScroll() {\n  if (window.scrollY > window.innerHeight / 2) {\n    Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.scroll-to-top\').removeClass(\'d-none\');\n  } else {\n    Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.scroll-to-top\').addClass(\'d-none\');\n  }\n\n  var headers = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.content-fragment h1, .content-fragment h2, .content-fragment h3, .content-fragment h4, .content-fragment h5, .content-fragment h6, .fragment\');\n\n  for (var i = headers.length - 1; i >= 0; i--) {\n    var bounds = headers[i].getBoundingClientRect();\n\n    if (bounds.top < 64) {\n      Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.scroll-spy a:not(.default-active)\').removeClass(\'active\');\n      Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.toc #TableOfContents li a\').removeClass(\'active\');\n\n      if (headers[i].id) {\n        Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(".toc #TableOfContents li a[href=\\"".concat(window.location.pathname, "#").concat(headers[i].id, "\\"]")).addClass(\'active\');\n        Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(".scroll-spy a[href=\\"".concat(window.location.pathname, "#").concat(headers[i].id, "\\"]")).addClass(\'active\');\n      }\n\n      break;\n    }\n  }\n}\n\nfunction scrollToTop() {\n  _helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"].scrollTo(document.scrollingElement, 0, 250);\n}\n\n//# sourceURL=webpack:///./assets/js/scroll.js?')},"./assets/js/templates/modal.js":function(a,b,c){"use strict";eval('__webpack_require__.r(__webpack_exports__);\nvar ModalTemplate = "\\n<div class=\\"modal fade\\" tabindex=\\"-1\\" role=\\"dialog\\" aria-hidden=\\"true\\">\\n  <div class=\\"modal-dialog\\" role=\\"document\\">\\n    <div class=\\"modal-content\\">\\n      <div class=\\"modal-header row mx-0\\">\\n        <div class=\\"modal-title col px-0\\">\\n          <h5 class=\\"title text-dark\\"></h5>\\n          <h6 class=\\"subtitle text-secondary\\"></h6>\\n        </div>\\n        <button type=\\"button\\" class=\\"close\\" data-dismiss=\\"modal\\" aria-label=\\"Close\\">\\n          <span aria-hidden=\\"true\\">&times;</span>\\n        </button>\\n      </div>\\n      <div class=\\"modal-background\\">\\n        <img src=\\"\\" alt=\\"\\" class=\\"img-fluid modal-background-image\\">\\n        <img src=\\"\\" alt=\\"\\" class=\\"img-fluid modal-asset-image\\">\\n        <div class=\\"modal-asset-icon icon-container pt-4\\"></div>\\n      </div>\\n      <div class=\\"modal-body p-3\\">\\n        <div class=\\"badge-container\\"></div>\\n        <div class=\\"content\\"></div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n";\n/* harmony default export */ __webpack_exports__["default"] = (ModalTemplate);\n\n//# sourceURL=webpack:///./assets/js/templates/modal.js?')}})
\ No newline at end of file
diff --git a/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js b/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js
new file mode 100644
index 0000000..fa130f5
--- /dev/null
+++ b/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js
@@ -0,0 +1 @@
+(function(n){var t={};function e(s){if(t[s])return t[s].exports;var o=t[s]={i:s,l:!1,exports:{}};return n[s].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=n,e.c=t,e.d=function(t,n,s){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:s})},e.r=function(e){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},e.t=function(t,n){if(n&1&&(t=e(t)),n&8)return t;if(n&4&&typeof t=="object"&&t&&t.__esModule)return t;var o,s=Object.create(null);if(e.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),n&2&&typeof t!="string")for(o in t)e.d(s,o,function(e){return t[e]}.bind(null,o));return s},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},e.p="",e(e.s="./assets/js/index.js")})({"./assets/js/helpers/bootstrap-helper.js":function(){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _jq_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jq-helpers */ \"./assets/js/helpers/jq-helpers.js\");\n// Updated the script from https://stackoverflow.com/questions/43417452/animate-navbar-collapse-using-pure-js-css/43434017#43434017\n\nvar toggle = document.querySelectorAll('.navbar-toggler');\nvar collapse = document.querySelectorAll('.navbar-collapse');\nvar dropdowns = document.querySelectorAll('.dropdown') || [];\n\nfunction toggleMenu(node) {\n  var menu = document.querySelector(node.dataset.target);\n  menu.classList.toggle('in');\n}\n\nfunction closeMenus() {\n  Array.from(dropdowns || []).forEach(function (node) {\n    node.querySelector('.dropdown-toggle').classList.remove('dropdown-open');\n    node.classList.remove('open');\n  });\n}\n\nfunction closeMenusOnResize() {\n  if (document.body.clientWidth >= 768) {\n    closeMenus();\n    Array.from(collapse || []).forEach(function (node) {\n      return node.classList.remove('in');\n    });\n  }\n}\n\nfunction toggleDropdown() {\n  if (document.body.clientWidth < 768) {\n    var open = this.classList.contains('open');\n    closeMenus();\n\n    if (!open) {\n      this.querySelector('.dropdown-toggle').classList.toggle('dropdown-open');\n      this.classList.toggle('open');\n    }\n  }\n}\n\nwindow.addEventListener('resize', closeMenusOnResize, false);\nArray.from(dropdowns || []).forEach(function (node) {\n  return node.addEventListener('click', toggleDropdown);\n});\nArray.from(toggle || []).forEach(function (node) {\n  return node.addEventListener('click', function (e) {\n    return toggleMenu(node);\n  }, false);\n});\n\n//# sourceURL=webpack:///./assets/js/helpers/bootstrap-helper.js?")},"./assets/js/helpers/jq-helpers.js":function(){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _serialize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./serialize */ "./assets/js/helpers/serialize.js");\n\n\nfunction $(selector) {\n  var nodes = typeof selector === \'string\' ? Array.from((this && Array.isArray(this) ? this[0] : document).querySelectorAll(selector)) : [selector];\n  var _returnee = {\n    $nodes: nodes,\n    $: $.bind(nodes),\n    on: function on(event, selector, callback) {\n      if (typeof callback === \'undefined\') {\n        callback = selector;\n        selector = null;\n      }\n\n      if (selector) {\n        nodes.forEach(function (node) {\n          node.addEventListener(event, function (e) {\n            if (e.target.matches(selector)) {\n              callback.call(node, e);\n            }\n          });\n        });\n      } else {\n        nodes.forEach(function (node) {\n          return node["on".concat(event)] = callback.bind(node);\n        });\n      }\n\n      return _returnee;\n    },\n    addClass: function addClass(className) {\n      nodes.forEach(function (node) {\n        return node.classList.add(className);\n      });\n      return _returnee;\n    },\n    removeClass: function removeClass(className) {\n      nodes.forEach(function (node) {\n        return node.classList.remove(className);\n      });\n      return _returnee;\n    },\n    attr: function attr(attribute, value) {\n      if (value === undefined && nodes.length > 1) {\n        throw new Error("Can\'t access value of several nodes\' attributes");\n      }\n\n      if (value === undefined) {\n        return nodes[0].getAttribute(attribute);\n      } else if (value !== null) {\n        nodes.forEach(function (node) {\n          return node.setAttribute(attribute, value);\n        });\n      }\n\n      return _returnee;\n    },\n    removeAttr: function removeAttr(attribute) {\n      nodes.forEach(function (node) {\n        return node.removeAttribute(attribute);\n      });\n      return _returnee;\n    },\n    append: function append(innerHTML) {\n      nodes.forEach(function (node) {\n        return node.insertAdjacentHTML(\'beforeend\', innerHTML);\n      });\n      return _returnee;\n    },\n    html: function html(innerHTML) {\n      if (innerHTML === undefined) {\n        if (nodes.length > 1) {\n          throw new Error("Can\'t get several nodes innerHTML at once");\n        }\n\n        return nodes[0].innerHTML;\n      }\n\n      nodes.forEach(function (node) {\n        return node.innerHTML = innerHTML;\n      });\n      return _returnee;\n    },\n    text: function text(innerText) {\n      if (innerText === undefined) {\n        if (nodes.length > 1) {\n          throw new Error("Can\'t get several nodes innerText at once");\n        }\n\n        return nodes[0].innerText;\n      }\n\n      if (innerText !== null) {\n        nodes.forEach(function (node) {\n          return node.innerText = innerText;\n        });\n      }\n\n      return _returnee;\n    },\n    val: function val(value) {\n      if (value === undefined) {\n        if (nodes.length > 1) {\n          throw new Error("Can\'t get several nodes value at once");\n        }\n\n        return nodes[0].value;\n      }\n\n      nodes.forEach(function (node) {\n        return node.value = value;\n      });\n      return _returnee;\n    },\n    submit: function submit() {\n      return nodes.forEach(function (node) {\n        return node.submit();\n      });\n    },\n    serialize: function serialize() {\n      var json = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (nodes.length > 1) {\n        throw new Error("Can\'t serialize multiple forms at once");\n      }\n\n      if (json) {\n        return Object(_serialize__WEBPACK_IMPORTED_MODULE_0__["serializeJSON"])(nodes[0]);\n      }\n\n      return Object(_serialize__WEBPACK_IMPORTED_MODULE_0__["default"])(nodes[0]);\n    },\n    length: nodes.length\n  };\n  nodes.forEach(function (node, index) {\n    return _returnee[index] = node;\n  });\n  return _returnee;\n}\n\n$.scrollTo = function scrollTo(element, to, duration) {\n  if (duration <= 0) return;\n  var difference = to - element.scrollTop;\n  var perTick = difference / duration * 10;\n  setTimeout(function () {\n    element.scrollTop = element.scrollTop + perTick;\n    if (element.scrollTop === to) return;\n    scrollTo(element, to, duration - 10);\n  }, 10);\n};\n\n$.ajax = function ajax(_ref) {\n  var method = _ref.method,\n      url = _ref.url,\n      data = _ref.data,\n      _ref$options = _ref.options,\n      options = _ref$options === void 0 ? {\n    contentType: \'application/json;charset=UTF-8\'\n  } : _ref$options;\n  var xhr = new XMLHttpRequest();\n  xhr.open(method.toUpperCase(), url);\n  xhr.setRequestHeader(\'Content-Type\', options.contentType);\n  xhr.send(data);\n  return new Promise(function (resolve, reject) {\n    xhr.onreadystatechange = function () {\n      if (xhr.readyState == 4) {\n        if (xhr.status == 200) {\n          resolve(JSON.parse(xhr.responseXML || xhr.responseText));\n        } else {\n          reject(xhr.statusText);\n        }\n      }\n    };\n  });\n};\n\n$.post = function (url, data, options) {\n  return $.ajax({\n    method: \'post\',\n    url: url,\n    data: data,\n    options: options\n  });\n};\n\nif (window && window.testingMode) {\n  window.jqHelpers = $;\n}\n\n/* harmony default export */ __webpack_exports__["default"] = ($);\n\n//# sourceURL=webpack:///./assets/js/helpers/jq-helpers.js?')},"./assets/js/helpers/serialize.js":function(){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return serialize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"serializeJSON\", function() { return serializeJSON; });\n// From https://code.google.com/archive/p/form-serialize/\nfunction serialize(form) {\n  if (!form || form.nodeName !== 'FORM') {\n    return;\n  }\n\n  var i,\n      j,\n      q = [];\n\n  for (i = form.elements.length - 1; i >= 0; i = i - 1) {\n    if (form.elements[i].name === '') {\n      continue;\n    }\n\n    switch (form.elements[i].nodeName) {\n      case 'INPUT':\n        switch (form.elements[i].type) {\n          case 'text':\n          case 'hidden':\n          case 'password':\n          case 'button':\n          case 'reset':\n          case 'submit':\n            q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n            break;\n\n          case 'checkbox':\n          case 'radio':\n            if (form.elements[i].checked) {\n              q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n            }\n\n            break;\n\n          case 'file':\n            break;\n        }\n\n        break;\n\n      case 'TEXTAREA':\n        q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n        break;\n\n      case 'SELECT':\n        switch (form.elements[i].type) {\n          case 'select-one':\n            q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n            break;\n\n          case 'select-multiple':\n            for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) {\n              if (form.elements[i].options[j].selected) {\n                q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].options[j].value));\n              }\n            }\n\n            break;\n        }\n\n        break;\n\n      case 'BUTTON':\n        switch (form.elements[i].type) {\n          case 'reset':\n          case 'submit':\n          case 'button':\n            q.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));\n            break;\n        }\n\n        break;\n    }\n  }\n\n  return q.join('&');\n}\nfunction serializeJSON(form) {\n  var obj = {};\n  var elements = form.querySelectorAll('input, select, textarea');\n\n  for (var i = 0; i < elements.length; ++i) {\n    var element = elements[i];\n    var name = element.name;\n    var value = element.value;\n\n    if (name) {\n      if (element.type === 'radio' || element.type === 'checkbox') {\n        if (element.checked) {\n          obj[name] = value;\n        }\n      } else if (element.type !== 'file') {\n        obj[name] = value;\n      }\n    }\n  }\n\n  return JSON.stringify(obj);\n}\n\n//# sourceURL=webpack:///./assets/js/helpers/serialize.js?")},"./assets/js/index.js":function(){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_bootstrap_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/bootstrap-helper */ \"./assets/js/helpers/bootstrap-helper.js\");\n/* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scroll */ \"./assets/js/scroll.js\");\n/* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modal */ \"./assets/js/modal.js\");\n/* harmony import */ var _helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers/jq-helpers */ \"./assets/js/helpers/jq-helpers.js\");\n\n\n\n\nObject(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(document).on('click', '.btn-group-toggle .btn', function (e) {\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(e.target.closest('.btn-group-toggle')).$('label.btn.active').removeClass('active');\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(e.target).addClass('active');\n}).on('click', '.dropdown-toggle', function (e) {\n  var parent = e.target.parentElement;\n  var dropdowns = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(parent).$('.dropdown-menu');\n\n  if (parent.classList.contains('show')) {\n    parent.classList.remove('show');\n    dropdowns.removeClass('show');\n  } else {\n    parent.classList.add('show');\n    dropdowns.addClass('show');\n  }\n}).on('click', '.dropdown-item', function (e) {\n  var dropdown = e.target.parentElement;\n  var button = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dropdown.parentElement).$('.dropdown-toggle');\n\n  if (!button.$nodes[0].classList.contains('nav-link')) {\n    button.text(e.target.innerText);\n    button.attr('data-value', e.target.dataset.value);\n  }\n\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dropdown).removeClass('show');\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dropdown.parentElement).removeClass('show');\n}).on('click', 'a[href*=\"event=\"], a[href*=\"e=\"]', function (e) {\n  if (window.syna.stream._publishHashChange(e.target.href)) {\n    e.preventDefault();\n    return false;\n  }\n});\n\n//# sourceURL=webpack:///./assets/js/index.js?")},"./assets/js/modal.js":function(){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/jq-helpers */ \"./assets/js/helpers/jq-helpers.js\");\n/* harmony import */ var _templates_modal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./templates/modal */ \"./assets/js/templates/modal.js\");\n\n\nObject(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('body').append(_templates_modal__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\nvar setImage = function setImage(image, element) {\n  if (image) {\n    element.removeClass('hidden');\n    element[0].src = image;\n  } else {\n    element.addClass('hidden');\n  }\n};\n\nsetTimeout(function () {\n  var modal = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('.modal');\n  var dialog = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('.modal .modal-dialog');\n\n  function closeDialog() {\n    Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('body').removeClass('modal-open');\n    modal.removeClass('show');\n  }\n\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('[data-dismiss=\"modal\"]').on('click', closeDialog);\n  modal.on('click', function (e) {\n    if (!dialog[0].contains(e.target)) {\n      closeDialog();\n    }\n  });\n\n  (window.syna || (window.syna = {})).showModal = function (_ref) {\n    var title = _ref.title,\n        subtitle = _ref.subtitle,\n        background = _ref.background,\n        image = _ref.image,\n        icon = _ref.icon,\n        content = _ref.content,\n        labels = _ref.labels,\n        _ref$size = _ref.size,\n        size = _ref$size === void 0 ? '' : _ref$size;\n    Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('body').addClass('modal-open');\n    modal.addClass('show');\n    dialog.$('.title').html(title || '');\n    dialog.$('.subtitle').html(subtitle || '');\n    setImage(image, dialog.$('.modal-asset-image'));\n    setImage(background, dialog.$('.modal-background-image'));\n\n    if (!background) {\n      dialog.$('.modal-asset-image').addClass('hidden');\n      setImage(image, dialog.$('.modal-background-image'));\n    }\n\n    if (labels) {\n      dialog.$('.badge-container').removeClass('hidden');\n      dialog.$('.badge-container').html(labels || '');\n    } else {\n      dialog.$('.badge-container').addClass('hidden');\n    }\n\n    if (icon) {\n      dialog.$('.icon-container').removeClass('hidden');\n      dialog.$('.icon-container').html(icon.replace(/fa-inverse/g, ''));\n    } else {\n      dialog.$('.icon-container').addClass('hidden');\n    }\n\n    if (content) {\n      dialog.$('.modal-body .content').html(content);\n      dialog.$('.modal-body .content').removeClass('hidden');\n    } else {\n      dialog.$('.modal-body .content').addClass('hidden');\n    }\n\n    dialog.removeClass('md').removeClass('lg').addClass(size);\n  };\n}, 0);\n\n//# sourceURL=webpack:///./assets/js/modal.js?")},"./assets/js/scroll.js":function(){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/jq-helpers */ "./assets/js/helpers/jq-helpers.js");\n\n\n(function () {\n  handleScroll();\n  window.onscroll = handleScroll;\n  Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.scroll-to-top\').on(\'click\', scrollToTop);\n})();\n\nfunction handleScroll() {\n  if (window.scrollY > window.innerHeight / 2) {\n    Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.scroll-to-top\').removeClass(\'d-none\');\n  } else {\n    Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.scroll-to-top\').addClass(\'d-none\');\n  }\n\n  var headers = Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.content-fragment h1, .content-fragment h2, .content-fragment h3, .content-fragment h4, .content-fragment h5, .content-fragment h6, .fragment\');\n\n  for (var i = headers.length - 1; i >= 0; i--) {\n    var bounds = headers[i].getBoundingClientRect();\n\n    if (bounds.top < 64) {\n      Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.scroll-spy a:not(.default-active)\').removeClass(\'active\');\n      Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(\'.toc #TableOfContents li a\').removeClass(\'active\');\n\n      if (headers[i].id) {\n        Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(".toc #TableOfContents li a[href=\\"".concat(window.location.pathname, "#").concat(headers[i].id, "\\"]")).addClass(\'active\');\n        Object(_helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"])(".scroll-spy a[href=\\"".concat(window.location.pathname, "#").concat(headers[i].id, "\\"]")).addClass(\'active\');\n      }\n\n      break;\n    }\n  }\n}\n\nfunction scrollToTop() {\n  _helpers_jq_helpers__WEBPACK_IMPORTED_MODULE_0__["default"].scrollTo(document.scrollingElement, 0, 250);\n}\n\n//# sourceURL=webpack:///./assets/js/scroll.js?')},"./assets/js/templates/modal.js":function(){"use strict";eval('__webpack_require__.r(__webpack_exports__);\nvar ModalTemplate = "\\n<div class=\\"modal fade\\" tabindex=\\"-1\\" role=\\"dialog\\" aria-hidden=\\"true\\">\\n  <div class=\\"modal-dialog\\" role=\\"document\\">\\n    <div class=\\"modal-content\\">\\n      <div class=\\"modal-header row mx-0\\">\\n        <div class=\\"modal-title col px-0\\">\\n          <h5 class=\\"title text-dark\\"></h5>\\n          <h6 class=\\"subtitle text-secondary\\"></h6>\\n        </div>\\n        <button type=\\"button\\" class=\\"close\\" data-dismiss=\\"modal\\" aria-label=\\"Close\\">\\n          <span aria-hidden=\\"true\\">&times;</span>\\n        </button>\\n      </div>\\n      <div class=\\"modal-background\\">\\n        <img src=\\"\\" alt=\\"\\" class=\\"img-fluid modal-background-image\\">\\n        <img src=\\"\\" alt=\\"\\" class=\\"img-fluid modal-asset-image\\">\\n        <div class=\\"modal-asset-icon icon-container pt-4\\"></div>\\n      </div>\\n      <div class=\\"modal-body p-3\\">\\n        <div class=\\"badge-container\\"></div>\\n        <div class=\\"content\\"></div>\\n      </div>\\n    </div>\\n  </div>\\n</div>\\n";\n/* harmony default export */ __webpack_exports__["default"] = (ModalTemplate);\n\n//# sourceURL=webpack:///./assets/js/templates/modal.js?')}})
\ No newline at end of file
diff --git a/tags/index.html b/tags/index.html
index e0ac1fc..86c3475 100644
--- a/tags/index.html
+++ b/tags/index.html
@@ -29,7 +29,7 @@
         <meta name="twitter:image" content="">
   <meta name="author" content="Eclipse Californium project">
 
-  <meta name="generator" content="Hugo 0.81.0" />
+  <meta name="generator" content="Hugo 0.99.1" />
 
   <title>Tags &middot; Eclipse Californium&trade;</title>
 
@@ -387,7 +387,7 @@ html {
       
     };
   </script>
-  <script src="/californium/scripts/syna-head.min.e41aca70413d995c0e49a558ce1b0a572a1046016f64d7cfed0886c7ec75e3ab.js"></script>
+  <script src="/californium/scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js"></script>
       <link rel='stylesheet' href='/californium/css/adopters.css'>
       <script src='https://iot.eclipse.org/assets/js/eclipsefdn.adopters.js'></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
@@ -612,45 +612,45 @@ Since version 3.0 this includes also the new configuration.</p>
 </section>
 
 <!-- Item -->
-<section id="scandium" class="fragment ">
-    <div class="container-fluid bg-light ">
+<section id="getting-started" class="fragment ">
+    <div class="container-fluid bg-dark ">
     <div class="container py-5 ">
 
   <div class="row align-items-center text-center justify-content-start text-lg-left">
     <div class="col-12 order-lg-12 pl-lg-5 col-lg-8">
         <div class="row pb-3">
-          <div class="col-12 text-body">
-            <h2>Scandium (Sc)</h2>
+          <div class="col-12 text-white">
+            <h2>Getting Started</h2>
+          </div>
+        </div>
+        <div class="row pb-2">
+          <div class="col-12 text-secondary">
+            <h5>Learn how to use Californium</h5>
           </div>
         </div>
       <div class="col-12 text-center d-lg-none pb-4 order-lg-1 mt-lg-5 mr-lg-auto col-lg-4">
         <div class="row">
           <div class="col-12">
-                <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
+                <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
           </div>
         </div>
       </div><div class="row text-left">
         <div class="col-12">
-          <div class="mb-0 text-body"><p>The Scandium (Sc) sub-module provides security for Californium. It implements DTLS 1.2 to secure your application
-through ECC with pre-shared keys, certificates, or raw public keys. It comes with many DTLS extensions, amoung them the DTLS 1.2 Connection ID.
-<br>
-Start making your exciting experience with an mature DTLS 1.2 solution, implemented for the Internet of Things.</p>
-<p><a href="https://www.rfc-editor.org/rfc/rfc6347.html">RFC 6347</a>,
-<a href="https://www.rfc-editor.org/rfc/rfc7250.html">RFC 7250</a>,
-<a href="https://www.rfc-editor.org/rfc/rfc9146.html">RFC 9146</a>.</p>
+          <div class="mb-0 text-secondary"><p>The Internet of Things if growing, but how can you build your own connected objects?
+Together with MQTT, CoAP is one of the popular IoT protocols.
+It provides answers to the typical IoT constraints: it is bandwidth efficient and fits
+in constrained embedded environment while providing friendly and discoverable RESTful API.</p>
 </div>
         </div>
       </div>
         <div class="col-12 text-center mb-2 text-lg-right">
             <a class="btn btn-lg m-2
-               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core#scandium-sc---security-for-californium">Introduction</a>
-            <a class="btn btn-lg m-2
-               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core">Repository</a>
+               btn-primary" href="http://goo.gl/LLQ03w">Take the Tutorial</a>
         </div></div>
     <div class="col-12 order-lg-1 mr-lg-auto col-lg-4">
       <div class="row justify-content-center">
             <div class="col-12 text-center d-none d-lg-inline">
-              <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
+              <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
             </div>
       </div>
     </div>
@@ -660,45 +660,45 @@ Start making your exciting experience with an mature DTLS 1.2 solution, implemen
 </section>
 
 <!-- Item -->
-<section id="getting-started" class="fragment ">
-    <div class="container-fluid bg-dark ">
+<section id="scandium" class="fragment ">
+    <div class="container-fluid bg-light ">
     <div class="container py-5 ">
 
   <div class="row align-items-center text-center justify-content-start text-lg-left">
     <div class="col-12 order-lg-12 pl-lg-5 col-lg-8">
         <div class="row pb-3">
-          <div class="col-12 text-white">
-            <h2>Getting Started</h2>
-          </div>
-        </div>
-        <div class="row pb-2">
-          <div class="col-12 text-secondary">
-            <h5>Learn how to use Californium</h5>
+          <div class="col-12 text-body">
+            <h2>Scandium (Sc)</h2>
           </div>
         </div>
       <div class="col-12 text-center d-lg-none pb-4 order-lg-1 mt-lg-5 mr-lg-auto col-lg-4">
         <div class="row">
           <div class="col-12">
-                <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
+                <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
           </div>
         </div>
       </div><div class="row text-left">
         <div class="col-12">
-          <div class="mb-0 text-secondary"><p>The Internet of Things if growing, but how can you build your own connected objects?
-Together with MQTT, CoAP is one of the popular IoT protocols.
-It provides answers to the typical IoT constraints: it is bandwidth efficient and fits
-in constrained embedded environment while providing friendly and discoverable RESTful API.</p>
+          <div class="mb-0 text-body"><p>The Scandium (Sc) sub-module provides security for Californium. It implements DTLS 1.2 to secure your application
+through ECC with pre-shared keys, certificates, or raw public keys. It comes with many DTLS extensions, amoung them the DTLS 1.2 Connection ID.
+<br>
+Start making your exciting experience with an mature DTLS 1.2 solution, implemented for the Internet of Things.</p>
+<p><a href="https://www.rfc-editor.org/rfc/rfc6347.html">RFC 6347</a>,
+<a href="https://www.rfc-editor.org/rfc/rfc7250.html">RFC 7250</a>,
+<a href="https://www.rfc-editor.org/rfc/rfc9146.html">RFC 9146</a>.</p>
 </div>
         </div>
       </div>
         <div class="col-12 text-center mb-2 text-lg-right">
             <a class="btn btn-lg m-2
-               btn-primary" href="http://goo.gl/LLQ03w">Take the Tutorial</a>
+               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core#scandium-sc---security-for-californium">Introduction</a>
+            <a class="btn btn-lg m-2
+               btn-primary" href="https://github.com/eclipse/californium/tree/main/scandium-core">Repository</a>
         </div></div>
     <div class="col-12 order-lg-1 mr-lg-auto col-lg-4">
       <div class="row justify-content-center">
             <div class="col-12 text-center d-none d-lg-inline">
-              <img src="/californium/_index/tutorial.jpg" class="img-fluid p-2" alt="Getting Started">
+              <img src="/californium/images/logos/Sc_256.png" class="img-fluid p-2" alt="Scandium (Sc)">
             </div>
       </div>
     </div>
@@ -1089,8 +1089,8 @@ Collection of links and information, not only limited to Californium&rsquo;s sco
 <div id="react"></div>
 
     <!-- Theme Code -->
-      <script async defer src="/californium/scripts/syna-main.min.0fee75bda576b036c6916366c93862bee0f9e51fac1be5360918faac938026cb.js"></script>
-      <script async defer src="/californium/scripts/syna-content.min.6153911e04fccadd0dba2ac14e0506d77050bc7d6cae8b35ef59ac87ad2db515.js"></script>
+      <script async defer src="/californium/scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js"></script>
+      <script async defer src="/californium/scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js"></script>
       <link rel='stylesheet' href='/californium/css/adopters.css'>
       <script src='https://iot.eclipse.org/assets/js/eclipsefdn.adopters.js'></script>
       <link rel='stylesheet' href='https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css'>
+ echo 'Changes have been detected, publishing to repo '\''www.eclipse.org/californium'\'''
Changes have been detected, publishing to repo 'www.eclipse.org/californium'
+ git config user.email californium-bot@eclipse.org
+ git config user.name 'Californium Bot'
+ git commit -m 'Website build californium-website-15'
[master 34b07ac] Website build californium-website-15
 11 files changed, 150 insertions(+), 150 deletions(-)
 delete mode 100644 scripts/syna-content.min.6153911e04fccadd0dba2ac14e0506d77050bc7d6cae8b35ef59ac87ad2db515.js
 create mode 100644 scripts/syna-content.min.f23cffcdd6285821097a5f379866522f2246b8b552e8ae1edd9ee9ac5f702846.js
 create mode 100644 scripts/syna-head.min.b5fbe9225800730aa103861cbf3892ac76f1b3ba0c0083c231731105745ed5a9.js
 delete mode 100644 scripts/syna-head.min.e41aca70413d995c0e49a558ce1b0a572a1046016f64d7cfed0886c7ec75e3ab.js
 delete mode 100644 scripts/syna-main.min.0fee75bda576b036c6916366c93862bee0f9e51fac1be5360918faac938026cb.js
 create mode 100644 scripts/syna-main.min.6ab53c2f5c36ba02e88e05c33f430d6c74373baa4039ecb4e1e89dde1690476d.js
+ git log --graph --abbrev-commit --date=relative -n 5
* commit 34b07ac
| Author: Californium Bot <californium-bot@eclipse.org>
| Date:   0 seconds ago
| 
|     Website build californium-website-15
| 
* commit 2fda83f
| Author: Californium Bot <californium-bot@eclipse.org>
| Date:   3 days ago
| 
|     Website build californium-website-14
| 
* commit 452936c
| Author: Californium Bot <californium-bot@eclipse.org>
| Date:   5 days ago
| 
|     Website build californium-website-13
| 
* commit 2938640
| Author: Californium Bot <californium-bot@eclipse.org>
| Date:   10 days ago
| 
|     Website build californium-website-12
| 
* commit 4ae1cb4
| Author: Californium Bot <californium-bot@eclipse.org>
| Date:   10 days ago
| 
|     Website build californium-website-11
+ git push origin HEAD:master
remote: 
remote: Processing changes: (\)
remote: Processing changes: refs: 1 (\)
remote: Processing changes: refs: 1 (\)
remote: Processing changes: refs: 1, done            
remote: commit 34b07ac: ----------        
remote: commit 34b07ac: Reviewing commit: 34b07ac5        
remote: commit 34b07ac: Authored by: Californium Bot <californium-bot@eclipse.org>        
remote: commit 34b07ac:         
remote: commit 34b07ac: Reviewing commit: 34b07ac56c7c7c0c9bd308ca6ede973f8338285a        
remote: commit 34b07ac: Authored by: Californium Bot <californium-bot@eclipse.org>        
remote: commit 34b07ac: Automated user 'californium-bot@eclipse.org' detected for author of commit 34b07ac56c7c7c0c9bd308ca6ede973f8338285a        
remote: commit 34b07ac: Automated user 'californium-bot@eclipse.org' detected for committer of commit 34b07ac56c7c7c0c9bd308ca6ede973f8338285a        
remote: commit 34b07ac: Eclipse user 'Californium Bot'(author) is a committer on the project.        
remote: commit 34b07ac: Eclipse user 'Californium Bot'(committer) is a committer on the project.        
remote: commit 34b07ac:         
remote: commit 34b07ac: This commit passes Eclipse validation.        
To ssh://git.eclipse.org:29418/www.eclipse.org/californium.git
   2fda83f..34b07ac  HEAD -> master
[Pipeline] }
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 466 killed;
[ssh-agent] Stopped.
[Pipeline] // sshagent
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // timeout
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // podTemplate
[Pipeline] End of Pipeline
Finished: SUCCESS