EzBunkerLast updated: 14-05-2020

This section provides an overview of EzBunker Platform, functionalities and objectives for it's humble existence.

Github Code Example:

You can embed your code snippets using Github gists

System Overview

Vivamus efficitur fringilla ullamcorper. Cras condimentum condimentum mauris, vitae facilisis leo. Aliquam sagittis purus nisi, at commodo augue convallis id.

Development Status

Prerequisites

In this section, there are a few parts to the installations required for the Platform to function. Those parts include, Windows Server, Ubuntu Server, Hyperledger Fabric, Vue.JS & lastly MongoDB.

Orama Windows Server

The Windows server can be accessed via the Microsoft Remote Desktop Application. The IP address, Username & Password will be necessary to access the Server. This server is mainly used to run the User Interface codes as well as the Back-end codes that interacts & communicates with the MongoDB database as well as the Hyperledger Fabric Blockchain.

Server IP:47.88.230.212

Orama Linux Server

The Ubuntu Server can be accessed via your device's terminal / command prompt by typing out a line of code as shown below. This code is requesting access to the Ubuntu server, afterwhich the terminal prompts you for the server's password. Lastly, type "su - neith" to access the specific user account where the files are all stored under.

Initial Code:ssh root@161.117.195.203

Hyperledger Fabric

Hyperledger Fabric is intended as a foundation for developing applications or solutions with a modular architecture. Depending on the OS used, there are different steps to installing Hyperledger Fabric.

For installation on Ubuntu the steps are shown here:

Hyperledger Fabric Installation Guide! | Hacker Noon

In this guide, we will install Hyperledger Fabric v1.4 on Linux machine and on Windows machine. When I started learning Hyperledger Fabric, installing it is really a pain in a neck and it turned miserable as I was using Windows.

As for Windows, the steps are shown here:

Hyperledger Fabric on Windows 10

Since Hyperledger fabric heavily based on Docker and a bunch of Unix commands. It's much better to develop it on UNIX environments like Ubuntu or MacOS. On Windows 10 we have the option to enable Ubuntu subsystem by following this instruction.

Hyperledger Composer

Hyperledger Composer is an extensive, open development toolset and framework to make developing blockchain applications easier. Hyperledger Composer accelerates time to value, and makes it easier to integrate blockchain applications with the existing business systems in place. Hyperledger composer has helped us model our business network by defining the Assets, Participants & Transactions.

Hyperledger Composer - Create business networks and blockchain applications quickly for Hyperledger | Hyperledger Composer

Update Aug 29th 2019: Hyperledger Composer has been deprecated. Please see the README for more information. Define a business network in our purpose-built modelling language, and script transactions in JavaScript: the most popular language on the planet. Rather than weeks, think hours to develop production-ready applications that go from the web-browser all the way back to the blockchain.

Vue.Js

VueJs being just a framework, does not require an extensive number of steps to be ready. The steps to setting up VueJs are shown here:

Vue.js

Already know HTML, CSS and JavaScript? Read the guide and start building things in no time! An incrementally adoptable ecosystem that scales between a library and a full-featured framework. 20KB min+gzip Runtime Blazing Fast Virtual DOM Minimal Optimization Efforts

MongoDB

MongoDB has a software called Mongo Compass which allows the user to connect to the database via a url that is provided for each Database.In Mongo Compass, the user will be able to view & manage all tables as well as all data entities. The installation steps are shown here:

Download Center: Compass

MongoDB Compass, the GUI for MongoDB, is the easiest way to explore and manipulate your data. Download and use for free for development environments.

APIs

An API for a website is code that allows two software programs to communicate with each other. The API spells out the proper way for a developer to write a program requesting services from an operating system or other application.

REST API

A RESTful API is an application program interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data.This is used for Hyperledger Fabric, in terms of communicating with the Platform & the Blockchain.

Email

This API is linked to the SMTP Directmail bought from Alibaba Cloud. This code connects to our SMTP Account and allows us to send the automated Emails to the User Upon creation of accounts.

Upload Image

This API is used to allow uploading,updating & deleting of Profile & Vessel Pictures.Each time is updates,deletes and uploads, it either replaces or deletes the file path for the images stored in the Resources folder in the Backend.Each image name is auto generated by the Crypto Function on line 45.

Authentication

This API enables the logging in and creation of accounts. The login,logout & register function are "POST" requests sent.

Search

This API enables the searching of Bunkering Companies via a "GET" request with the parameters being Location, Fuel & Vessel.

O Coin

This API enables the purchasing of OCoins & is done via a "POST" request.It also retrieves the number of existing OCoins done via the "GET" request.

Profile

This API enables the updating and displaying of information in the profile. The updating is done via the "POST" request whereas the displaying is done via the "GET" request.

Purchase Order

This API enables the creation of Purchase Orders via the "POST" request & the retrieval of Purchase Orders is done via the "GET" request.

Vessel

This API enables the uploading of vessels done via the "POST" request & the retrieval of Vessels done via the "GET" requests.

Integrations

These are the softwares that have been used to build the platform up. Hyperledger composer was used to fast track the Blockchain creation process,this is where we defined the Network. Hyperledger Fabric is where the blockchain actually runs by refering to the definition of the network created in Composer. Vuejs is the frontend framework used & MongoDB is the database used.

Hyperledger Fabric

Hyperledger Fabric is an Open-Source Distributed Ledger Blockchain. In Orama's use case, we have used it for the purpose of creating a transparent yet private network for the Bunkering Industry.Blockchain is also one of the most secure networks currently available in the world.It is protected by strong encryption tools that are available at our disposal.Additionally, Hyperledger Fabric also has its own framework for the creation of Smart Contracts that is called ChainCode.

Introduction - hyperledger-fabricdocs master documentation

In general terms, a blockchain is an immutable transaction ledger, maintained within a distributed network of peer nodes. These nodes each maintain a copy of the ledger by applying transactions that have been validated by a consensus protocol, grouped into blocks that include a hash that bind each block to the preceding block.

Hyperledger Composer

Hyperledger Composer is an extensive, open development toolset and framework to make developing blockchain applications easier. Hyperledger Composer accelerates time to value, and makes it easier to integrate blockchain applications with the existing business systems in place. Hyperledger composer has helped us model our business network by defining the Assets, Participants & Transactions.

Installing Hyperledger Composer

Make sure you have the required pre-requisites by following Installing pre-requisites . To install the full development environment click Installing the development environment here or in the table of contents on the left. To update the full development environment click Updating the development environment here or in the table of contents on the left.

Vue.Js

Vue.js is an open-source Model–view–viewmodel JavaScript framework for building user interfaces and single-page applications.

Vue.js

Already know HTML, CSS and JavaScript? Read the guide and start building things in no time! An incrementally adoptable ecosystem that scales between a library and a full-featured framework. 20KB min+gzip Runtime Blazing Fast Virtual DOM Minimal Optimization Efforts

MongoDB

MongoDB is a cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schema.

The most popular database for modern apps

MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. No database makes you more productive. Try MongoDB free in the cloud! Used by millions of developers to power the world's most innovative products and services THE DOCUMENT MODEL MongoDB is a document database, which means it stores data in JSON-like documents.

NGINX

MongoDB is a cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schema.

nginx: download

null

FrontEnd

Section intro goes here. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque finibus condimentum nisl id vulputate. Praesent aliquet varius eros interdum suscipit. Donec eu purus sed nibh convallis bibendum quis vitae turpis. Duis vestibulum diam lorem, vitae dapibus nibh facilisis a. Fusce in malesuada odio.

Dist

Dist stands for distribution, and is the minified/concatenated version which is actually used in production sites. In other words, it is the compressed version of our website for better accessibility for NGINX where we link it.

Node_Modules

Node_Modules is a standard folder shown when you were to run npm build. This contains all the external packages used.Upon creation & before deployment you should run npm install to ensure all packages are installed. You wont be able to manually add each package because there are too many. So best case is you finish the rest of the codes and it will detect the packages required and install it.

Public

The file public/index.html is a template that will be processed with html-webpack-plugin. During build, asset links will be injected automatically.This is just part of the VueJs framework.

Source

Src is where all the other codes such as assets,components etc are stored here.

.ENV

This is a file that allows you to state your database connections & other environment variables that are to be shared across all environments.

.ENV Development

This is the same as the one above however, it is only meant for Production running purposes, in other words it will only work when code is run in Production mode.

.ENV Production

This is the same as the one above however, it is only meant for Production running purposes, in other words it will only work when code is run in Production mode.

README.md

This is usually where people write steps on how to run the programs/platforms.

TypeScript Config

This config file is created using "tsc --init" code in the terminal. The presence of a tsconfig.json file in a directory indicates that the directory is the root of a TypeScript project. The tsconfig.json file specifies the root files and the compiler options required to compile the project.

Package file

This file usually holds metadata relevant to the project. It is used to give information to npm to allow it to identify the project. It is generated by using npm init.

nginx.config

This is where all the HTTP server details are stored. For example, our API and normal server for the Domains "api.ez-bunker.com" & "www.ez-bunker.com" are configured in the nginx configuration file. The SSL certificate is also linked in this file as well for each server.

Source

These file names should be followed strictly.In the src files lies these files that should store the necessary files accordingly.

Assets

This is where all the images,styles & plugins used in the website should be stored.

Components

This is where all the frontend main code should be stored. For example, the files for the home page and profile page are stored here.Under the Components section you will see all the files that have been stored here.

Router

Suggested by the title, this is where all the main routing for the platform is created.

Services

Services is where all the APIs used & the countries.json file is stored.

Store

This file aids in the updating & deleting of states. In this case the profile pictures.

App.Vue

This is the skeleton of the Platform, it contains the Main Navigation & the Footer. It is used in all pages of the platform to make it easier to add the components that are repeated in the pages.

Main.ts

This file is the main typescript file for src, it has all the necessary imports such as the Style sheets,plugins,cookies, Axios, fonts & also the most important part of checking whether the user has already signed in when the page has loaded up,using cookies.

Assets

This is where all the images, plugins & styles are stored. Follow the format, copy & paste all the items when creating this platform.5c 65ctxfrr21

Images

These contain all the images used in the Platform itself. Every single image you want to use in the frontend section should be stored here.

Plugins

This is where all the plugins are stored, best case is to copy & paste it when creating a new platform as it is necessary for the platform.

Style

This is where all the Styles of the platform is stored, again copy & paste this section as well.

Components

These are all of the Frontend files that are used in the platform. They are stored in separate folders for better management.

Console

Console contains 3 files that make up the Dashboard,Console & Nomination Form pages.

Home

This folder contains all the components displayed in the Home Page of EzBunker.

OCoin

This folder contains 2 files that are related to OCoin, viewing OCoin & Buying OCoin pages.

Profile

This folder contains 4 files that are related to the Profile page.Edit Profile, Edit Image,Edit Payment Info & the Profile Page itself.

Templates

Template contains 4 files that make up the Platform. It contains the console Navigation, Footer, Main Navigation & Profile Navigation file.

Vessel

This folder contains 1 file that is to manage the vessels added.

Widgets

This folder contains the 3 files. Bunkering Signup, Shipping Signup & Search file.

Not Found

Lastly this is the 404 not Found page created.

Console

This section contains all the files that are necessary for the Console.

Dashboard

This is where all the Nomination Forms will be displayed for both the Buyer & Supplier. The purchase order is displayed based on the user type & the custom id of the user.User can also update the status of the purchase order from accepted to rejected.

Nominate

This is the page that shows the Buyer & Supplier's Profile picture before they proceed to the nomination form page.It retrieves the user's profile image by looking for the users ID.

Nomination Form

This is the Nomination form page where the user is asked to input the relevant fields.

Home

These are the sections that make up the Home page on Ez-Bunker.

Home

This is the Home page that is the first page the users see when they visit Ez-bunker's website.

How

This is the How it works page.

Login

This is the Login page that contains a form that allows the users to login & it also contains a link to sign up if the users have yet to create an account.

Logout

This is just the logout button that has a function to enable users to logout of their accounts.

Search

This is the search feature that allows users to search for bunkering companies,that then directs them to a page that displays all the companies that match the filter. This function retrieves all the profiles and uses the routes by linking the user's ID to it.

Sign Up

This is the signup page that users go to when they need to sign Up.There are 2 different forms for Signing up, one is for the Bunkering Companies & one is for the Shipping Companies.

OCoin

These are the pages relevant to O Coins. The buying and viewing of OCoins.

Buy OCoin

This is the page where users can purchase O Coins by choosing the payment type as well as how many OCoins they would like to purchase.

View

This section shows the OCoin balance as well as a button to allow users to buy more OCoins in anycase that they are short of some.

Profile

These are the pages that are relevant to the Profile page.The Edit profile, Edit Profile Image, Edit Payment & Edit Vessel Images.

Edit Profile

This page consists of a form that allows users to edit their profile details and update it.

Edit Profile Image

This section is where the user is able to edit their Profile Image.

Edit Payment

This is the page that allows users to edit their payment information.This function replaces the old payment methods and updates it with the new values.

View Profile

This is the template for how the profile's look like when they are searched for or when the user wants to view their own profile.

Templates

These are all the template files needed to create a page on the Ez-bunker platform. Its basically just inputing the sections into pages.

Console Navigation

This is the console navigation bar page

Footer

This is the footer page that is placed in each new page created on Ez-Bunker.

Main Navigation

This is the main navigation bar on the top that allows users to navigation through the platform.

Profile Navigation

This is the left bar navigation for the Profile page.

Vessel

This consists of the Manage Vessel page where the user is able to add and delete their existing vessels.

Manage Vessel

This is the page where the user is able to view all the vessels they have added and also update,delete & add vessels.It also contains the filepond import that allows the uploading & previewing of images

Widgets

These are the widgets that can be basically copy pasted and reused in other pages.

Bunkering Sign Up

This is the Bunkering sign up page where Bunker companies can sign up.

Search

This is the search function that is shown in the home page when users want to search for Bunker Companies.

Shipping Sign Up

This is the Shipping sign up page where Shipping companies can sign up.

Router

This contains all the routings created for the platform.

Routings

This is where all the routings from one page to another is set and created.

Services

This folder contains miscellaneous codes that are relevant to the platform.

Countries.json

This contains a list of all the countries and their country code.

Store

Index.ts

This is where the tokens are assigned to the users & it also changes the user's profile image by replacing the existing image.

Backend

This is where all the backend codes that interact with the blockchain and the database is stored.

.ENV

Dotenv is a zero dependency module that loads environment variables from a .env file into proces .env. It stores configuration in the environment separately from the main code.

Server

This file links the .ENV file to the web configuration file under source.

README.md

These are the set of instructions on how to run the codes once they have been completed or edited.

Dist

This is where the files are accessible throughout the folders.

Source

Source contains files that will be accessible throughout the folders as well.

Server

Need to check through

Resources

In the Backend folder, there should be 4 folders created. Cards,Profile,Vessel & View. This is to allow storage of necesary data for the platform.

Cards

Cards folder is used to store the user's blockchain identity.

Profile

Profile is used to store the user's company logo.

Vessel

Vessel is used to store the Bunkering user's Vessel images.

View

View is to store the email template that is used to send out the unique id for each user upon registering for an account.

Middleware

Middleware is computer software that provides services to software applications beyond those available from the operating system. In our case we used an authentication package called Passport.js.

Authentication

Passport.js

Passport is authentication middleware for Node.js. Extremely flexible and modular, Passport can be unobtrusively dropped in to any Express-based web application. A comprehensive set of strategies support authentication using a username and password, Facebook, Twitter, and more. Supported by

Controller

This is where all the creations are coded out. Creations such as users, o coins & Orama.

Authentication

This is where all the processes that include the user is kept.The Upload & Email helpers are used here. THe user,profile,session & Blockchain user's models are imported and used here as well.The users are created in the blockchain & their blockchain ID is attached to them.

Index

This function is used to aid in the search bar in the home page.The Profile schema is imported here to retrieve the profiles from the search function that is created here.

OCoin

The purchasing & viewing of OCoin can be done here.The OCoin model is imported here as well.

Orama

This is where Orama is created for the distribution of OCoin purposes as well as being the main source & holder for the OCoins.

Profile

All function related to the Profile for MongoDB exists here.This is where all things related to the profile can be changed, for example the Profile Image, Payment details & etc.

PurchaseOrder

All processes related to the Purchase order such as the depositing of the OCoin & the updating of status is done here.The PurchaseOrder & OCoi models from Hyperledger is imported here as well as the User schema from Mongo.The displaying of Purchase Orders is also done here by retrieving the user's ID and comparing it with the ID in the Purchase Order.

Resource

All processes that are linked to the resources folder is done here.The existing file paths are the default images that are placed as placeholders, upon uploading of a new image, the new image's path replaces the default image's path.

Vessel

Uploading, updating & deleting of vessels is done here for the MongoDB side.The Vessels are also displayed by using the User's id.

Helpers

In object-oriented programming, a helper class is used to assist in providing some functionality, which isn't the main goal of the application or class in which it is used. An instance of a helper class is called a helper object

Email

This is where the email template is retrieved and sent to the user upon creation of accounts.

UEN

This is where the validation of UEN is done.

Upload

This is where the uploading of images is done. Deleting & Replacing images.The file paths are replaced upon updating it & deleted upon deletion.Each file name is also generated by the Crypto library that creates a random 12 digit value.

Under Src

These are the separate files under Src.

Database

This is where the database connection is established.

Passport

This is where the authentication of the user is done.

Routes

This is where all the Routes for the platform is established upon logging in

Web

This includes different segments combined under one web typscript file that is used in certain pages of the webpage.

MongoDB Model

This section is where the MongoDB schema is created.

Profile

This is where the User profile schema is defined.This are the details that are displayed for other users to see only. Certain information about the user is not displayed & mentioned here.

User

This is where the user's Blockchain identity schema is imported & used to create their accounts and also add it into the MongoDB.It also adds the existing session into the database & authenticates with Composer API to store the Blockchain card into the database as well

Session

This is where all the details regarding the session is defined.

Vessel

This is where the Vessels schema for MongoDB is defined

Hyperledger Model

This is where all the processes related to Hyperledger is added into.

OCoin

This is where the buying, depositing & releasing of tokens is stored.The user's blockchain id is first retrieved afterwhich, the user is able to purchase or deposit O Coins which is done using the "POST" function.

Orama

This is where Orama is created in the Blockchain upon running the Platform.

Purchase Order

This is where the creation of the Purchase order in the blockchain is done. A custom id for the purchase order is created and assigned using the Crypto Library. Users are able to update & create their Purchase Orders. This is where the retrieval of the Purchase Orders are done as well.

User

This is where the separate Bunkering and Shipping user's accounts are created. & also the assigning of blockchain IDs. The Blockchain cards are imported via the Hyperledger Multiple user API via a POST request.

Blockchain

This section contains all the Blockchain codes that is in the Ubuntu server.

Dist

This is where the Business Network Definition is stored.

Library

This is where the Smart Contract / ChainCode should be stored.

Models

This is where the business model file is stored.

Envvars.txt

Links the module to the files.

grantPerms.sh

This grants you permissions to run some necessary blockchain codes.

installNetwork.sh

TThis installs the blockchain network onto fabric.

networkAdmin.card

This is just an example of how the networkadmin card looks like, it has to be generated via a script in the terminal.

Package.json

This contains all the package files

Passport.js

This is the passport js function for the token where the Custom JWT token is retrieved and checked.

Permissions.ACL

This is where all the permissions for the network is created.

Queries

This is where the queries necessary for the network is created.

README.md

This is where the Important steps for the blockchain network is stored.

resetNetwork.sh

This resets the blockchain network.

Start Admin Rest Server

This starts the Admin Rest Server.

Start User Rest Server

This starts the User Rest Server

Dist

Orama Platform Network Model Compiled

File is auto generated.

Library

Library

This is where the chaincode/smart contract is stored.

Models

Orama Business Network Model

This is where the business model definition is stored

Execution Guide

Now that you have all the codes in place, its all about executing the codes to make sure they work.

Hyperledger Fabric Installation Guide For Ubuntu

Downloading Hyperledger Fabric onto Ubuntu.

Executing download files for Hyperledger Fabric.

Starting Hyperledger Fabric & Created Admin Card.

Blockchain PM2 Execution Guide on Ubuntu Server

PM2 is used here to run 2 REST servers that communicate with the Blockchain.

ssh root@161.117.195.203

Backend PM2 Execution Guide on Windows Server

pm2 run server is used to run the Backend codes needed for the Ez-Bunker platform to run. To check if the codes have executed, ensure that it says REST server running at port....

pm2 run server

Frontend Execution Guide on Windows Server

Npm run build is used to update and run all the frontend codes for the Ez-Bunker platform.

Open Bash Terminal in the FrontEnd Folder

NGINX Execution Guide on Windows Server

Hyperledger Fabric is intended as a foundation for developing applications or solutions with a modular architecture. Depending on the OS used, there are different steps to installing Hyperledger Fabric.

Open Commands Prompt and navigate to the C: or wherever your nginx folder is stored.

Misc

Section intro goes here. You can list all your FAQs using the format below.

Section Item 9.1 (FAQ Category One)

What's sit amet quam eget lacinia?

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.

How to ipsum dolor sit amet quam tortor?

Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui.

Can I bibendum sodales?

Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui.

Where arcu sed urna gravida?

Aenean et sodales nisi, vel efficitur sapien. Quisque molestie diam libero, et elementum diam mollis ac. In dignissim aliquam est eget ullamcorper. Sed id sodales tortor, eu finibus leo. Vivamus dapibus sollicitudin justo vel fermentum. Curabitur nec arcu sed urna gravida lobortis. Donec lectus est, imperdiet eu viverra viverra, ultricies nec urna.

Section Item 9.2 (FAQ Category Two)

What's sit amet quam eget lacinia?

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.

How to ipsum dolor sit amet quam tortor?

Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui.

Can I bibendum sodales?

Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui.

Where arcu sed urna gravida?

Aenean et sodales nisi, vel efficitur sapien. Quisque molestie diam libero, et elementum diam mollis ac. In dignissim aliquam est eget ullamcorper. Sed id sodales tortor, eu finibus leo. Vivamus dapibus sollicitudin justo vel fermentum. Curabitur nec arcu sed urna gravida lobortis. Donec lectus est, imperdiet eu viverra viverra, ultricies nec urna.

Section Item 9.3 (FAQ Category Three)

How to dapibus sollicitudin justo vel fermentum?

Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui.

How long bibendum sodales?

Fusce vulputate eleifend sapien. Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus. Nullam accumsan lorem in dui.

Where dapibus sollicitudin?

Aenean et sodales nisi, vel efficitur sapien. Quisque molestie diam libero, et elementum diam mollis ac. In dignissim aliquam est eget ullamcorper. Sed id sodales tortor, eu finibus leo. Vivamus dapibus sollicitudin justo vel fermentum. Curabitur nec arcu sed urna gravida lobortis. Donec lectus est, imperdiet eu viverra viverra, ultricies nec urna.