diff --git a/css/about.css b/css/about.css new file mode 100644 index 0000000..4336339 --- /dev/null +++ b/css/about.css @@ -0,0 +1,26 @@ +#about-container { + background-color: #191A18; + font-family: "OCR A Extended"; +} + +.title { + text-align: center; + color: #65B32E; + font-size: xx-large; +} + +.main-text { + text-align: justify; + color: #65B32E; + line-height: 300%; + margin-left: 50px; + margin-right: 50px; +} + +.main-text>p { + font-size: 1rem; +} + +.highlight { + color: white; +} \ No newline at end of file diff --git a/css/index.css b/css/index.css new file mode 100644 index 0000000..7dcfa3c --- /dev/null +++ b/css/index.css @@ -0,0 +1,391 @@ +/*********************/ +/* General attributes*/ +/*********************/ + +/* Font Setup */ +@font-face { + font-family: "OCR A Extended"; + src: url(../resources/OCRAEXT.TTF); +} + +/* + * Structuring the general layout of the page. + * Also setting some overall style rules such as + * the fonts or margins + */ + +*, +::before, +::after { + box-sizing: border-box; + border-width: 0; + border-style: solid; + border-color: #e5e7eb; +} + +::before, +::after { + --tw-content: ''; +} + +body { + margin: 0; + + background-color: #191A18; + overflow: hidden; +} + +p { + margin: 0; + + font-family: "OCR A Extended"; + color: #65B32E; + font-size: 0.75rem; +} + +button { + font-family: inherit; + + font-size: 100%; + color: inherit; + + margin: 0; + padding: 0; + + cursor: pointer; +} + +img { + display: block; +} + +/*************/ +/* Main divs */ +/*************/ + +/* Creating and setting the size of the main + * divs of the page. Most of them are defined + * statically, so it might be a good idea to + * look at the design and maybe implemet something + * for mobile if time allows. + */ + +#main-container { + height: 1080px; + width: 1920px; +} + +#top-bar { + z-index: 2; + + width: 100%; + height: 45px; + + background-color: #2E2F2D; +} + +#shell { + display: inline-block; + height: 880px; + width: 520px; + + padding: 15px; + + border-right: 1px solid #2E2F2D; +} + +#inner-page { + display: inline-block; + position: absolute; + + top: 45px; + left: 520px; + + height: 880px; + width: 1400px; +} + +/****************/ +/* Top bar divs */ +/****************/ + +/* Main styling for the bard that spans + * the entirity of the webpage. + */ + +.min-tab { + display: flex; + + align-items: center; + justify-content: center; + + width: 160px; + height: 100%; + + background-color: #20201D; +} + +.min-tab p { + font-size: 15px; + margin-right: 20px; +} + +#shell-tab { + margin-left: 20px; +} + +#new-tab { + visibility: hidden; +} + +/* + * Building a cross. + */ + +.cross-stand-alone { + position: relative; + + width: 20px; + height: 20px; + + margin-top: 0px; + margin-right: 10px; + padding: 0; + border: 0; + + background: none; +} + +.cross-stand-alone:before, +.cross-stand-alone:after { + position: absolute; + top: 7px; + left: 0; + right: 0; + + height: 4px; + + content: ""; + + background: #2E2F2D; + border-radius: 4px; +} + +.cross-stand-alone:before { + transform: rotate(45deg); +} + +.cross-stand-alone:after { + transform: rotate(-45deg); +} + +.cross-stand-alone span { + display: block; +} + +.visually-hidden { + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + padding: 0 !important; + + height: 1px !important; + width: 1px !important; + + border: 0 !important; + + overflow: hidden; +} + +/**************/ +/* Shell divs */ +/**************/ + +/* The definitions are arrange from top-to-button relative + * to how the html elements have been defined. + */ + +.shell-box { + margin-top: 20px; + + border-bottom: 1px solid #2E2F2D; +} + +/**********/ +/* -Logo- */ +/**********/ + +#logo-box { + display: block; + + height: 140px; + width: 100%; + + margin-top: 1.2%; +} + +#logo-box img { + width: 95%; + + margin: auto; +} + +/***************/ +/* -Copyright- */ +/***************/ + +#copyright-box { + height: 88px; + width: 100%; +} + +/******************/ +/* -Command line- */ +/******************/ + +#command-line-box { + height: 88px; + width: 100%; +} + +#highlighter { + visibility: visible; +} + +/*************/ +/* -Buttons- */ +/*************/ + +#menu-box { + height: 380px; + width: 100%; + + margin-top: 0; + margin-bottom: 0; +} + +#button-box { + height: 100%; + width: 60%; + + background-color: #1C1C1C; + + margin-left: auto; + margin-right: auto; + + padding-top: 20px; + padding-bottom: 20px; +} + +.shell-button { + height: 25%; + width: 100%; + + background-color: transparent; + color: #264413; + font-family: "OCR A Extended"; + font-size: 18px; + + transition: ease-in 230ms; +} + +/***************/ +/* -Selection- */ +/***************/ + +.shell-button:hover { + font-size: 23px; + color: #65B32E; + background-color: #191A18; +} + +/**********/ +/* -Info- */ +/**********/ + +#info-box { + height: 88px; + width: 100%; + + border-bottom: none; +} + +/* + * Silly but it works. + * I don't think anyone will complain. + */ + +#start-info { + margin-top: 25px; +} + +/*******************/ +/* Inner page divs */ +/*******************/ + +/* + * This section is divided into two, mainly the divisions that + * are used for the loading animation and the actual section + * that is supposed to host the chosen page. + */ + +/* Loading Box */ + +#on-load-top-box { + height: 140px; + width: 100%; + + padding: 30px; +} + +.loading-output { + visibility: hidden; +} + +.loading-output:nth-child(1) { + visibility: visible; +} + + +/* Inner Page */ + +#on-load-center-box { + height: 740px; + width: 100%; + + display: flex; + + align-items: center; + justify-content: center; +} + +#on-load-center-box p { + font-size: 1.25rem; +} + +/* Content */ +#about-container { + background-color: #191A18; + font-family: "OCR A Extended"; +} + +.title { + text-align: center; + color: #65B32E; + font-size: xx-large; +} + +.main-text { + text-align: justify; + color: #65B32E; + line-height: 300%; + margin-left: 50px; + margin-right: 50px; +} + +.main-text>p { + font-size: 1rem; +} + +.highlight { + color: white; +} diff --git a/css/schedule.css b/css/schedule.css new file mode 100644 index 0000000..80f3781 --- /dev/null +++ b/css/schedule.css @@ -0,0 +1,111 @@ +#schedule-container { + display: flex; + justify-content: center; + + background-color: #191A18; + font-family: "OCR A Extended"; +} + +.box-container { + display: flex; + flex-direction: column; + + width: 900px; + margin-bottom: 10px; +} + +table, +td { + width: 900px; + border-collapse: collapse; + + padding: 5px; + padding-top: 8px; + padding-bottom: 8px; +} + + +th { + color: #65B32E; + + padding: 5px; + padding-top: 8px; + padding-bottom: 8px; + + font-size: larger; +} + +tr:nth-child(even) { + background: linear-gradient( + to bottom, + #0F1B07, + #0F1B07 50%, + #1A2F0C 50%, + #1A2F0C + ); + + background-size: 100% 5px; + color: white; + text-align: center; +} + + +tr:nth-child(odd) { + background: linear-gradient( + to bottom, + #161616, + #161616 50%, + #121212 50%, + #121212 + ); + background-size: 100% 5px; + color: white; + text-align: center; +} + +#info-text { + color: #65B32E; + font-size: small; +} + +#pattern { + font-family: monospace; + font-size: xx-small; + text-align: center; +} + +.pattern-segment { + display: inline-block; + margin-right: 5px; + + color: #65B32E; +} + +.top-row, +.line-row, +.bottom-row { + white-space: nowrap; +} + +.line-row { + margin-top: 20px; + margin-bottom: 20px; +} + +#info-container { + display: flex; + height: 250px; + + flex-direction: row; + align-items: flex-start; + + word-wrap: break-word; +} + +#info-container p { + margin-left: 20px; + + text-align: justify; + color: #65B32E; + font-size: small; +} diff --git a/css/speakers.css b/css/speakers.css new file mode 100644 index 0000000..c39a9a8 --- /dev/null +++ b/css/speakers.css @@ -0,0 +1,141 @@ +#speakers-container { + display: flex; + justify-content: center; + + background-color: #191A18; + font-family: "OCR A Extended"; +} + +.cross-stand-alone { + position: relative; + + width: 20px; + height: 20px; + + margin-top: 0px; + margin-right: 10px; + padding: 0; + border: 0; + + background: none; +} + +.cross-stand-alone:before, .cross-stand-alone:after { + position: absolute; + top: 18px; + left: 0; + right: 0; + + height: 4px; + + content: ""; + + background: #ffffff; + border-radius: 4px; +} + +.cross-stand-alone:before { + transform: rotate(45deg); +} + +.cross-stand-alone:after { + transform: rotate(-45deg); +} + +.cross-stand-alone span { + display: block; +} + +.visually-hidden { + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + padding: 0 !important; + + height: 1px !important; + width: 1px !important; + + border: 0 !important; + + overflow: hidden; +} + +.box-container-main { + margin-top: 20px; + margin-right: 20px; +} + +.box-container { + display: flex; + flex-direction: column; + + margin-bottom: 10px; +} + +.container { + display: flex; + width: 500px; + height: 180px; + + margin: 0px; + + overflow: hidden; + background-color: black; + + color: #65B32E; + font-family: "OCR A Extended"; +} + +.image-container { + flex: 0 0 auto; +} + +img { + height: 125px; + width: 100px; + + margin-left: 20px; + margin-top: 20px; + + border: 5px solid #264413; + border-radius: 3px; +} + +.text-container { + flex: 1; + + margin-left: 15px; + margin-right: 15px; + margin-top: 0px; + + text-align: justify; + font-size: small; + line-height: 190%; +} + +.container2 { + display: flex; + height: 40px; + width: 500px; + + margin: 0px; + + overflow: hidden; + + background-color: #264413; + + color: white; +} + +.text-container2 { + flex: 1; + + margin-top: 8px; + margin-left: 20px; + + font-size: larger; + text-align: justify; +} + +.text-container2 p { + margin: 0; +} \ No newline at end of file diff --git a/css/sponsors.css b/css/sponsors.css new file mode 100644 index 0000000..058b4d5 --- /dev/null +++ b/css/sponsors.css @@ -0,0 +1,105 @@ +#sponsors-container { + display: flex; + justify-content: center; + + background-color: #191A18; + font-family: "OCR A Extended"; +} + +img { + display: block; + margin-left: auto; + margin-right: auto; + + width: 40%; + height: 125px; + width: 100px; + + margin-top: 10px; + + border: 2px solid #000000; + border-radius: 3px; +} + +.box-container-main { + margin-top: 20px; + margin-right: 20px; +} + +.box-container { + display: flex; + flex-direction: column; + + margin-bottom: 10px; +} + +.container { + display: flex; + flex-direction: column; + width: 330px; + + border: 1px solid #000000; + overflow: hidden; + + background: linear-gradient( + to bottom, + #0F1B07, + #0F1B07 50%, + #1F390F 50%, + #1F390F + ); + + background-size: 100% 10px; + color: white; + height: 300px; + font-family: "OCR A Extended"; + } + +.image-container { + flex: 0 0 auto; +} + +.text-container { + margin-left: 15px; + margin-right: 15px; + margin-top: 0px; + + text-align: justify; + font-size: small; + line-height: 120%; +} + +.text-container2 { + flex: 1; + margin-top: 8px; + + font-size: larger; + text-align: center; +} + +.text-container2 p { + margin: 0; +} + +.container2 { + display: flex; + flex-direction: column; + width: 330px; + + border: 1px solid #000000; + + overflow: hidden; + + background: linear-gradient( + to bottom, + #0F1B07, + #0F1B07 50%, + #122108 50%, + #122108 + ); + + background-size: 100% 10px; + color: white; + height: 300px; + font-family: "OCR A Extended"; +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..9678c53 --- /dev/null +++ b/index.html @@ -0,0 +1,121 @@ + + + + + + + + + Thalia Symposium: Cybercrime + + + + + +
+
+
+
+

Shell

+
+
+ +
+
+ +
+ + + +
+

root@thalia-user: ~/sbin$ cat index.html

+

root@thalia-user: ~/sbin$ _

+
+ + + +
+

root@thalia-user: ~/Local$: cat> Contanct_Info.txt

+

[ OK ] theactual.email.@thalia.nu - e-mail

+

[ OK ] 001122334455 - phone number

+
+ +
+ +
+
+

root@thalia-user:~/Local$ Awaiting endpoint.


+

root@thalia-user:~/Local$ loaded succesfully!

+
+

root@thalia-user:~/Local$ Awaiting choice.


+

+ /**********************************************************************************************************************************************************/ +

+
+ +
+
+
+ About Symposium +
+ +
+

Symposium is ... Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do + eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation + ullamco laboris nisi ut aliquip ex ea commodo consequat. Symposium. Duis + aute + irure dolor in + reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Symposium. + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim + id est laborum.

+
+ +
+ The Theme: Cyber Crime +
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et + dolore + magna aliqua. + Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. + Symposium. + Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint occaecat cupidatat non proident, Symposium sunt in culpa qui + officia deserunt mollit anim id est laborum. +

+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/js/index.js b/js/index.js new file mode 100644 index 0000000..aa88bb5 --- /dev/null +++ b/js/index.js @@ -0,0 +1,253 @@ +/**************************/ +/* Globals and Constants */ +/**************************/ + +const blink = new blinkerTimer(); +const shellButtons = document.getElementsByClassName("shell-button"); + +var buttonPresses = 0; +var isButtonPressed = false; + +// Strings for reference in order to represent +// the different shell commands. +const rootCommand = "root@thalia-user: ~/sbin$ "; +const rootCat = "cat "; +const highlighter = "_"; + +// Strings used in the loading of pages +const pageNames = [ + "index.html", + "speakers.html", + "sponsors.html", + "schedule.html", +]; + +const fileName = location.href.split("/").slice(-1); + +const activeLoadBar = "[---------------------------------]"; +const inactiveLoadBar = "Requesting Access." + +/********************/ +/* Helper Functions */ +/********************/ + +// Template for replacing characters within a string. +String.prototype.replaceAt = function (indexToReplace, replacement) { + return this.substring(0, indexToReplace) + replacement + this.substring(indexToReplace + replacement.length); +} + +// Template for the timer that controls the blinking of +// the shell highlighter. *.start() starts the global timer, +// and *.stop() stops the global timer. +function blinkerTimer() { + // The two possible states. + var stop, resume; + + // Starting the timer by creating a new instance. + this.start = () => { + timer = setInterval(() => { + // Updating the command highlighter + let commandHighlighter = document.getElementById("highlighter"); + + // Fliping the states of the highlighter. + if (commandHighlighter.style.visibility == "hidden") + commandHighlighter.style.visibility = "visible"; + + else + + commandHighlighter.style.visibility = "hidden"; + }, 500) + }; + + // Stopping the timer by killing its current instance, + // and making sure the blinker is visible. + this.stop = () => { + clearInterval(timer); + document.getElementById("highlighter").style.visibility = "visible"; + }; +} + +// Sleeps for a specified amount of time +// in ms. Very useful in combination +// with 'async' and 'await'. +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +/**************************/ +/* Shell & Menu Functions */ +/**************************/ + +// Gradually reconstructs the text contents of a +// given html element. 'htmlElementID' help get the +// html element, and 'speed' denotes how fast the +// text is reconstructed. +async function reconstructInnerHtmlID(htmlElementID, speed) { + // Storing the specified html element and its text contents. + let htmlEL = document.getElementById(htmlElementID); + let initialString = htmlEL.innerText; + + // Setting the visibility on, and deleting the + // original text contents of the html element, + // in order to make the efect pop out. + htmlEL.style.visibility = "visible"; + htmlEL.innerText = ""; + + // Going through each element of the intial string + // and adding it sequentiantly to the element's + // contents again. + for (i = 0; i < initialString.length; i++) { + htmlEL.innerText = htmlEL.innerText + initialString.charAt(i); + + // Spaces work a bit different, so enforcing it for now. + // Also, a little more waiting time to add some 'pizzaz'. + if (initialString.charAt(i) == ' ') { + await sleep(speed + 50); + htmlEL.innerText = htmlEL.innerText + '\xa0'; + } + + // Delay after each letter. + await sleep(speed); + } +} + +// Writes a command to the current command line. The +// command is denoted by the commandIdent which corresponds +// to an existing command. +async function writeCurrentCommandToShell(commandIdent) { + // Briefly chaging the contents of the highlighter to achieve the animation. + document.getElementById("highlighter").innerText = ""; + document.getElementById("highlighter").innerText = rootCat + pageNames[commandIdent]; + await reconstructInnerHtmlID("highlighter", 50); + + window.location.href = "http://127.0.0.1:5500/" + pageNames[commandIdent]; +} + +// How each shell-button press is handled. +// The highlighter stops blinking, and the corresponding +// command for that button is written sequentiantly to the +// shell. There is also a check to avoid multiple button +// presses at a time. 'buttonIdent' just identifies +// which button was pressed. +async function buttonPress(buttonIdent) { + if (!isButtonPressed) { + // Breifly stopping the highlighting animation. + + blink.stop(); + await resetOnInnerPageLoad(); + + + // Flaging the button as pressed and writing to the shell. + isButtonPressed = true; + await writeCurrentCommandToShell(buttonIdent); + + // Incrementing the button press counter in order + // correctly display the commands. + buttonPresses++; + + // Flagging the button as released. + isButtonPressed = false; + } +} + +/******************************/ +/* Top-loading page functions */ +/******************************/ + +// The functions work very nicely together. +// Still they need to be called only when the inner +// page loads/ or during. Didn't get to do it as a truly +// single-page application, so for showing the functionalities +// and animations I was calling these functions inside the button +// press function. +// +// Maybe a flag would be a good idea to know when the animations +// have finished and the page can be loaded - nothing special, +// just a bool value. +// +// Always call 'resetOnInnerPageLoad()' before 'onInnerPageLoad'. + + +// Creates the loading bar animation +// dynamically. +async function loadingBarAnimation(speed) { + // Getting the loading bard section and replacing it + // with its 'active' form. + let loadingBar = document.getElementById("load-bar"); + let tempAsset = activeLoadBar; + + // The temporary asset that creates the animation + loadingBar.innerHTML = tempAsset; + + // Replacing each unloaded character one by one + // wiht '\'. + for (i = 1; i < activeLoadBar.length - 1; i++) { + tempAsset = tempAsset.replaceAt(i, '\\'); + + // Adding delay. + // Lil' easter egg hehe, we be evil in this house. + // I barely had any sleep. + let seconds = new Date().getTime() / 1000; + if (seconds % 37 == 0) + await sleep(speed + 2000); + + else + await sleep(speed); + + // Updating the inner text of the loading bar for each + // iteration. + loadingBar.innerText = tempAsset; + } +} + +// Loads every piece of text required for switching to a new page +// in their specific order. +async function onInnerPageLoad() { + // Getting the requried loading lines and updating + // the one that denotes that loaded Page. + document.getElementById("on-load-center-box").style.visibility = "hidden"; + let loadingLines = document.getElementsByClassName("loading-output"); + document.getElementById("page-identifier").innerText = fileName; + + // Wating for th loading bar to finish. + await loadingBarAnimation(25); + + // Instantly rendering the rest of the remaining lines. + for (i = 1; i < 4; i++) { + loadingLines[i].style.visibility = "visible"; + await sleep(25); + } + document.getElementById("on-load-center-box").style.visibility = "visible"; +} + +// Resets the loading part of the page, preparing +// it for a new inner page load. +async function resetOnInnerPageLoad() { + let loadingLines = document.getElementsByClassName("loading-output"); + let loadBar = document.getElementById("load-bar"); + + // Hiding the unused elements in reverse order and + // with a delay in order for a smoother transition. + for (i = 3; i > 0; i--) { + loadingLines[i].style.visibility = "hidden"; + await sleep(25); + } + + loadBar.innerHTML = inactiveLoadBar; +} + +// Loads everything needed for the page. +async function loadAssets() { + blink.start(); + await onInnerPageLoad(); +} + +// Onload behaviour for different elements. +document.onload = loadAssets(); + +// Beahviour for buttons. +shellButtons[0].onclick = () => { buttonPress(0) }; +shellButtons[1].onclick = () => { buttonPress(1) }; +shellButtons[2].onclick = () => { buttonPress(2) }; +shellButtons[3].onclick = () => { buttonPress(3) }; + diff --git a/resources/OCRAEXT.TTF b/resources/OCRAEXT.TTF new file mode 100644 index 0000000..0e77e20 Binary files /dev/null and b/resources/OCRAEXT.TTF differ diff --git a/resources/empty_photo.jpg b/resources/empty_photo.jpg new file mode 100644 index 0000000..6fe3ecb Binary files /dev/null and b/resources/empty_photo.jpg differ diff --git a/resources/logo.png b/resources/logo.png new file mode 100644 index 0000000..792907a Binary files /dev/null and b/resources/logo.png differ diff --git a/resources/logo_mark.png b/resources/logo_mark.png new file mode 100644 index 0000000..2ea58b5 Binary files /dev/null and b/resources/logo_mark.png differ diff --git a/schedule.html b/schedule.html new file mode 100644 index 0000000..f2687cd --- /dev/null +++ b/schedule.html @@ -0,0 +1,254 @@ + + + + + + + + + Thalia Symposium: Schedule + + + + + + + +
+
+
+
+

Shell

+
+
+ +
+
+ +
+ + + +
+

root@thalia-user: ~/sbin$ cat schedule.html

+

root@thalia-user: ~/sbin$ _

+
+ + + +
+

root@thalia-user: ~/Local$: cat> Contact_Info.txt

+

[ OK ] theactual.email.@thalia.nu - e-mail

+

[ OK ] 001122334455 - phone number

+
+ +
+ +
+
+

root@thalia-user:~/Local$ Awaiting endpoint.


+

root@thalia-user:~/Local$ loaded succesfully!

+
+

root@thalia-user:~/Local$ Awaiting choice.


+

+ /**********************************************************************************************************************************************************/ +

+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TimeActivity 1SpeakerActivity 2
10:00-10:20Walk-in
10:20-10:30OpeningFiller
10:30-11:20Talk 1Speaker 1Filler
11:30-12:20Talk 2Speaker 2Filler
12:20-13:40Lunch && MarketFiller
13:40-14:30Talk 3Speaker 3Speeddates
14:40-15:10Coffee && MarketFiller
15:10-16:00Talk 4Speaker 4Filler
16:10-17:00Talk 5Speaker 5Filler
17:00-19:00BorrelFiller
+ +

+ /****************************************************************************************************************/ +

+ +
+
+ +
+
+ /-----/       -.         +
+
+ +
+
+    /    .     / -        +
+
+ +
+
+    /    /--.  /   /---/ 
+
+ +
+
+    /    /  /  /-  /   /  +
+
+ +
+
/-----/ /  /  /   /---/  +
+
+ +
+
/**********************/
+
+ +
+
+    /-----/     /         +
+
+ +
+
+       /     .  /         +
+
+ +
+
+       /  _/-/  /--/      +
+
+ +
+
+       /  /  /  /  /      +
+
+ +
+
+       /  /-/_  /--/      +
+
+ +
+
/**********************/
+
+ +
+ +

+    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget + dolor. Aenean massa. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, + ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.
+     Donec pede justo, + fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis + vitae, justo. + Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper + nisi. + Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. + Aliquam + lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius + laoreet. Quisque + rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget + dui. +

+
+
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/speakers.html b/speakers.html new file mode 100644 index 0000000..f5df25f --- /dev/null +++ b/speakers.html @@ -0,0 +1,218 @@ + + + + + + + + + Thalia Symposium: Speakers + + + + + + + +
+
+
+
+

Shell

+
+
+ +
+
+ +
+ + + +
+

root@thalia-user: ~/sbin$ cat speakers.html

+

root@thalia-user: ~/sbin$ _

+
+ + + +
+

root@thalia-user: ~/Local$: cat> Contact_Info.txt

+

[ OK ] theactual.email.@thalia.nu - e-mail

+

[ OK ] 001122334455 - phone number

+
+ +
+ +
+
+

root@thalia-user:~/Local$ Awaiting endpoint.


+

root@thalia-user:~/Local$ loaded succesfully!

+
+

root@thalia-user:~/Local$ Awaiting choice.


+

+ /**********************************************************************************************************************************************************/ +

+
+ +
+
+
+
+
+
+

Speaker Name

+
+ +
+ +
+
+ +
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+ +
+
+
+

Speaker Name

+
+ +
+ +
+
+ +
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+ +
+
+
+

Speaker Name

+
+ +
+ +
+
+ +
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+
+ +
+
+
+
+

Speaker Name

+
+ +
+ +
+
+ +
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+ +
+
+
+

Speaker Name

+
+ +
+ +
+
+ +
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+ +
+
+
+

Speaker Name

+
+ +
+ +
+
+ +
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/sponsors.html b/sponsors.html new file mode 100644 index 0000000..a5f28a4 --- /dev/null +++ b/sponsors.html @@ -0,0 +1,202 @@ + + + + + + + + + Thalia Symposium: Sponsors + + + + + + + +
+
+
+
+

Shell

+
+
+ +
+
+ +
+ + + +
+

root@thalia-user: ~/sbin$ cat about.html

+

root@thalia-user: ~/sbin$ _

+
+ + + +
+

root@thalia-user: ~/Local$: cat> Contact_Info.txt

+

[ OK ] theactual.email.@thalia.nu - e-mail

+

[ OK ] 001122334455 - phone number

+
+ +
+ +
+
+

root@thalia-user:~/Local$ Awaiting endpoint.


+

root@thalia-user:~/Local$ loaded succesfully!

+
+

root@thalia-user:~/Local$ Awaiting choice.


+

+ /**********************************************************************************************************************************************************/ +

+
+ +
+
+
+
+
+
+ +
+ +
+

Sponsor Name

+
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+ +
+
+
+ +
+ +
+

Sponsor Name

+
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+
+ +
+
+
+
+ +
+ +
+

Sponsor Name

+
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+ +
+
+
+ +
+ +
+

Sponsor Name

+
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+
+ +
+
+
+
+ +
+ +
+

Sponsor Name

+
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+ +
+
+
+ +
+ +
+

Sponsor Name

+
+ +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, + sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file