<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- PAGE settings -->
  <link rel="icon" href="favicon.ico">
  <title>Bliss ROMs</title>
  <meta name="description" content="Open Source OS for all devices, based on AOSP">
  <meta name="keywords" content="blissroms, bliss, os, x86, aosp, android, rom, teambliss">
  <!-- CSS dependencies -->
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
    integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
  <script src="https://kit.fontawesome.com/7b4ed0a31a.js" crossorigin="anonymous"></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"
    type="text/css">
  <link href="https://fonts.googleapis.com/css?family=VT323" rel="stylesheet" type="text/css">
  <link rel="stylesheet" href="neon.css">
  <!-- Script: Make my navbar transparent when the document is scrolled to top -->
  <script src="js/navbar-ontop.js"></script>

  <link rel="stylesheet" href="css/animations.css">
  <link rel="stylesheet" href="css/style.css">
  <link rel="stylesheet" href="css/table.css">
  <script data-ad-client="ca-pub-7639560510014441" async=""
    src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
</head>

<body class="">
  <!-- Navbar -->
  <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark" style="padding-right: 41px;">
    <div class="container pt-6">
      <a class="navbar-brand" href="#"><img src="images/BlissIcon_Smal_wl.png" width="50"
          class="d-inline-block align-top" alt=""></a>
      <div class="row">
        <div class="col-md-12"><a class="navbar-brand" href="#"><b><b>Bliss ROMs</b></b></a></div>
      </div>
      <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
        data-target="#navbar2SupportedContent" aria-controls="navbar2SupportedContent" aria-expanded="true"
        aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button>
      <div class="navbar-collapse text-center justify-content-end collapse show" id="navbar2SupportedContent">
        <ul class="navbar-nav">
          <li class="nav-item mx-2">
            <a class="nav-link" href="#features"><b><b>Features</b></b></a>
          </li>
          <li class="nav-item mx-2">
            <a class="nav-link" href="#about"><b><b>About</b></b></a>
          </li>
          <li class="nav-item mx-2">
            <a class="nav-link" href="#team"><b><b>Team</b></b></a>
          </li>
          <li class="nav-item mx-2">
            <a class="nav-link" href="https://blisslabs.org" target="_blank"><b><b>Non Profit</b></b></a>
          </li>
          <li class="nav-item mx-2">
            <a class="nav-link" href="blog.html"><b><b>Blog</b></b></a>
          </li>
          <li class="nav-item mx-2">
            <a class="nav-link" href="#gear"><b><b>Gear</b></b></a>
          </li>
        </ul>
        <a class="btn navbar-btn mx-2 btn-primary" href="#download"><b><b>Download</b></b></a>
      </div>
    </div>
  </nav>
  <!-- Cover -->
  <div class="section-fade-out pt-5 pb-5"
    style="background-image: url(&quot;images/bg.jpeg&quot;); background-position: center bottom;">
    <div class="container pt-5">
      <div class="row">
        <div class="col-md-5">
          <div class="col-md-12">
            <h1 class="display-3 mb-4">Bliss ROMs</h1>
            <p class="lead">Working together to bring you an Open Source OS, based on Android, that incorporates many
              customizations, options and added security features.&nbsp;<br><br>And it is available for...</p>
            <div class="d-inline-flex justify-content-center align-items-center mx-auto">
              <a href="#download"
                class="btn btn-lg btn-primary d-inline-flex justify-content-center align-items-center mx-auto">Download
                Now</a>
            </div>
          </div>
        </div>
        <div class="d-flex justify-content-center align-items-center flex-grow-1" align="center"
          style="max-height: 100%;max-width: 100%;vertical-align: middle;display: inline-flex;float: none; margin-top: -8%;">
          <div class="d-inline-flex justify-content-center align-items-center">
            <div class="animation d-inline-flex justify-content-center align-items-center" data-animation-step="2">
              <div class="device mt-5">
                <div class="screen-stand"></div>
                <div class="display">
                  <div class="slide1">
                    <div>Most Intel/x86 <br>
                      <em>PCs, Tablets &amp; Laptops</em>
                    </div>
                  </div>
                  <div class="slide2">
                    <div>Most Android <br>
                      <em>tablets</em>
                    </div>
                  </div>
                  <div class="slide3">
                    <div>Most<br>Android<br>
                      <em>phones</em>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <!-- Article style section -->
  <div class="section-fade-in py-5 bg-dark">
    <div class="container">
      <div class="row" id="about">
        <div
          class="col-md-6 order-2 order-md-1 animate-in-left d-flex flex-grow-1 align-items-center justify-content-center">
          <img class="img-fluid d-block mx-auto" src="images/1571976237838.png" style="" width="50%">
        </div>
        <div class="col-md-6 align-self-center order-1 order-md-2 my-3 text-md-left text-center">
          <h3 class="display-3">About Bliss</h3>
          <p class="my-4 body-font">We are a volunteer based non-profit organization that works to maintain various open
            source &amp; closed source development projects. We provide the inspiration, training and mentorship to help
            the&nbsp;dreams of those that join, become reality.<br><br>One of our main focuses is to provide a quality
            ROM/OS that can run on all your devices, preserving customizations and options by syncing across all
            platforms. We try to include all the features you can imagine, for just about any situation.<br><br>You will
            also find us regularly contributing to other projects as well because we believe that building our community
            through positive influence will go further than building an empire on selfish goals.</p>
          <a class="btn btn-outline-primary" href="bfor.html">Learn More About Us</a>
        </div>
      </div>
    </div>
  </div>
  <!-- Features -->
  <div class="text-center bg-primary py-5 px-5">
    <div class="container">
      <div class="d-flex justify-content-center align-items-center px-0 container-fluid mx-auto">
        <div class="row mx-auto d-flex align-items-center justify-content-center">
          <div class="col-md-12">
            <div class="row mx-auto">
              <div class="align-self-center col-lg-6 text-md-left text-center">
                <h3 class="display-3">Bliss Variants</h3>
                <p class="my-4 body-font">Bliss comes in a few variants. On top of our traditional device builds of
                  Bliss ROM, our GSI/Treble builds will work on most treble compatible devices (Android Pie+) And our
                  x86 variant (Bliss OS) is made to work with the Linux kernel, and supports booting with MBR/UEFI type
                  bootloaders. So just about any Windows/Linux PC or tablet released in the last 4 years. We are always
                  developing with usability in mind, and supporting more and more devices each week.&nbsp;<br></p>
                <a class="btn btn-dark" href="#download">Download</a>
              </div>
              <div class="align-self-center mt-5 col-lg-5 offset-1 animate-in-right">
                <img class="img-fluid d-block" src="images/bliss_surface.png">
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div class="py-5 bg-dark" id="features">
    <div class="container">
      <div class="row">
        <div class="col-12 text-center">
          <h3 class="display-3">Features</h3>
        </div>
      </div>
      <div class="row">
        <div class="align-self-center text-md-right text-center col-lg-4 col-md-6">
          <h4 class="text-primary"><b>Focus on design</b></h4>
          <p class="mb-5 text-white">We include many options for customization and theming throughout the OS</p>
          <h4 class="text-primary"><b>Customized settings</b></h4>
          <p class="mb-5 text-white">Choose settings depending on the criteria you value the most. With no limits.</p>
          <h4 class="text-primary"><b>Performance</b></h4>
          <p class="mb-5 text-white">Focused on speed and stability with tweaks to assist in the most demanding
            applications</p>
        </div>
        <div class="my-3 d-none d-lg-block animate-in-down col-md-4">
          <img class="img-fluid d-block" src="images/Phone_features_dark.png">
        </div>
        <div class="align-self-center text-md-left text-center col-lg-4 col-md-6">
          <h4 class="text-primary"><b>Battery-friendly</b></h4>
          <p class="mb-5 text-white">Extra options are provided to help tune battery consumption to the best levels</p>
          <h4 class="text-primary"><b>Added Security</b></h4>
          <p class="mb-5 text-white">Additional security options and features are found throughout the OS. And AOSP
            security updates are merged regularly.</p>
          <h4 class="text-primary"><b>Compatibility</b></h4>
          <p class="mb-5 text-white">We bring Bliss to every device we own. And our PC builds include extras for
            ARM/ARM64 app compatibility&nbsp;&nbsp;</p>
        </div>
      </div>
    </div>
  </div>
  <!-- Features -->
  <!-- Carousel reviews -->
  <div class="section bg-dark">
    <div class="container d-flex justify-content-center align-items-center flex-grow-1 mx-auto w-75 py-4">
      <div class="row">
        <div class="col-md-6 text-left mx-auto flex-center">
          <div>
            <h2 class="my-3 highlight_secondary team-header text-white no-wrap">We volunteer our time.</h2>
            <p class="mb-3 body-font">We are a 501(c3) nonprofit, run by people that donate their free time towards the
              project. We do our best to bring a quality OS to your device, while working a real job on the side in most
              cases. Please consider showing us we're on the right track by clicking the button below and making a small
              contribution towards our efforts.</p> <a
              href="https://www.paypal.com/donate?hosted_button_id=J5SLZ7MQNCT24" target="_blank"
              class="btn btn-primary">Buy Us a Coffee</a>
          </div>
        </div>
        <div class="col-md-5 py-5 offset-1"><img
            class="img-fluid d-block d-flex align-items-center justify-content-center flex-grow-1 mx-auto animate-in-right"
            src="images/coffee-break.svg" width="300"></div>
      </div>
    </div>
  </div>
  <!-- Documentation section -->
  <div class="py-5 bg-light text-right" id="documentation">
    <div class="container">
      <div class="row">
        <div class="col-md-12" style="">
          <h3 class="display-3 text-truncate">Docs &amp; Issue Reporting</h3>
          <div class="row">
            <div class="col-md-12" style="">
              <h3>Looking for our documentation?</h3>
              <p>We have full guides, troubleshooting tips, and more.&nbsp;</p>
              <div class="col-md-12">
                <a class="btn btn-secondary text-right mb-3 mx-2" href="https://wiki.blissroms.com" target="_blank">Team
                  Bliss Wiki</a>
                <a class="btn btn-secondary mb-3 mx-2" href="https://blog.blissroms.com" target="_blank">Development
                  blog</a>
              </div>
              <h3>Like to report a bug?</h3>
              <p>We prefer to keep all our bug reports in a centralized place. Please use the link below to report any
                bugs using the Issues tab for the repo needed.</p>
              <div class="mx-auto col-md-12">
                <a class="btn btn-secondary mb-3 mx-2" href="https://github.com/BlissRoms"
                  target="_blank">BlissRoms&nbsp;</a><a class="btn btn-secondary mb-3 mx-2"
                  href="https://github.com/BlissRoms-Devices" target="_blank">BlissRoms Devices</a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <!-- Developer section -->
  <div class="download-section bg-light mb-0" id="developer">
    <div class="py-5 bg-dark" id="documentation">
      <div class="container">
        <div class="row">
          <div class="col-md-12" style="">
            <h3 class="display-3 text-truncate">Developers</h3>
            <div class="row">
              <div class="col-md-3" style=""><img class="img-fluid d-block" src="images/github-logo.png"></div>
              <div class="col-md-7" style="">
                <h3>Want to help contribute towards our open source projects?</h3>
                <p>Documentation for BlissRoms and Bliss OS can be found on our wiki, while our development update posts
                  can be found under our blog. Please read the documentation before asking a question on our Telegram
                  development chats!<br><br>To get a glimpse on usage statistics of Bliss, please visit our statistics
                  page.</p>
                <p>If you want to contribute code, download the source from our GitHub organization and submit commits
                  through our Gerrit review system!</p>
              </div>
              <div class="col-md-2 mx-auto" style="">
                <a class="btn mb-3 btn-secondary" href="https://github.com/BlissRoms" target="_blank">BlissRoms
                  GitHub</a><a class="btn mb-3 btn-secondary" href="https://github.com/BlissRoms-Devices"
                  target="_blank">BlissRoms Devices GitHub</a>
                <a class="btn mb-3 btn-secondary" href="https://review.blissroms.com" target="_blank">BlissRoms
                  Gerrit</a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <!-- Downloads Section -->
    <div class="container py-5" id="download">
      <div class="row">
        <div class="col-md-6 order-2 order-md-1"> <img class="img-fluid d-block mx-auto" src="images/1571976296909.png"
            style="" width="50%"> </div>
        <div class="px-md-5 col-md-6 d-flex flex-column align-items-start justify-content-center order-1 order-md-2">
          <h3 class="display-3">Downloads</h3>
          <img
            src="https://img.shields.io/sourceforge/dm/blissroms.svg?style=for-the-badge&amp;logo=appveyor&amp;colorB=blue"
            max-width="160px" width="50%">
          <p class="mb-3">
          </p>
          <div id="demo">
            <br>
            <a class="btn btn-primary mx-1 mb-3" href="https://downloads.blissroms.org">Go to Downloads</a>
            <hr width="100%" size="8" align="left">
            <h2>Looking for our PC builds?</h2>
            <p>(Bliss OS (x86) &amp; Android-Generic builds)</p>
            <br>
            <a class="btn mb-3 btn-dark" target="_blank" href="https://blissos.org">Bliss OS</a>
            <a class="btn mb-3 btn-dark" target="_blank" href="https://android-generic.github.io">Android-Generic</a>
            <p></p>
            <hr width="100%" size="8" align="left">
            <h2>Legacy Downloads</h2>
            <br>
            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/Q/">Android 10 (Q) device
              builds</a><br>
            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/Pie/">Android 9 (Pie) device
              builds</a><br>
            <a class="btn btn-link" href="https://sourceforge.net/projects/blissroms/files/GSI/">Android 9 (Pie) GSI
              builds</a>
            <p></p>
          </div>
        </div>
      </div>
    </div>
    <div class="py-5 bg-light" id="team">
      <div class="container">
        <div class="row">
          <div class="col-md-12">
            <div class="row">
              <div class="mx-auto col-md-12 text-center">
                <h3 class="display-3">The Team</h3>
              </div>
            </div>
            <ul class="nav nav-tabs nav-justified">
              <li class="nav-item mx-auto font-weight-bold"> <a class="active nav-link" href="" data-toggle="tab"
                  data-target="#tabone">Core Members</a> </li>
              <li class="nav-item mx-auto font-weight-bold"> <a href="" class="nav-link" data-toggle="tab"
                  data-target="#tabtwo">Maintainers</a> </li>
            </ul>
            <div class="tab-content mt-2">
              <div class="tab-pane fade show active" id="tabone" role="tabpanel">
                <section id="content" class="team_content"></section>
                <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
                <script>
                  $.ajax({
                    type: "GET",
                    url: "https://api.blissroms.org/api/teambliss", // TeamBliss JSON
                    success: function (data) {
                      var newContent = ''; // Variable to hold HTML
                      for (var i = 0; i < data.length; i++) { // Loop through object
                        newContent += '<div id="event" class="team_item">';
                        newContent += '<img class="image crop" src="' + data[i].avatar + '" ';
                        newContent += 'alt="' + data[i].member + '" />';
                        newContent += '<h3><b>' + data[i].member + '</b></h3>';
                        newContent += '<p class="team_data_text font-weight-bold">' + data[i].designation + '</p>';
                        // newContent += '<p class="team_data_text font-weight-bold"><i>&quot;' + data[i].email + '&quot;</i></p>';
                        newContent += '</div>';
                      }
                      // Update the page with the new content
                      document.getElementById('content').innerHTML = newContent;
                    }
                  })
                </script>
              </div>
              <div class="tab-pane fade" id="tabtwo" role="tabpanel">
                <section id="content2" class="team_content"></section>
                <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
                <script>
                  $.ajax({
                    type: "GET",
                    url: "https://blissapi.blissroms.com/blissinfra/public/allmaintainers", // TeamBliss JSON
                    success: function (data) {
                      var newContent = ''; // Variable to hold HTML
                      for (var i = 0; i < data.length; i++) { // Loop through object
                        newContent += '<div id="event" class="team_item">';
                        newContent += '<img class="image crop" src="' + data[i].image + '" ';
                        newContent += 'alt="' + data[i].mname + '" />';
                        newContent += '<h3><b>' + data[i].mname + '</b></h3>';
                        newContent += '<p class="team_data_text font-weight-bold">' + data[i].device + '</p>';
                        newContent += '<p class="team_data_text font-weight-bold"><i>&quot;' + data[i].codename + '&quot;</i></p>';
                        newContent += '</div>';
                      }
                      // Update the page with the new content
                      document.getElementById('content2').innerHTML = newContent;
                    }
                  })
                </script>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="py-5 bg-primary" id="gear">
      <div class="container">
        <div class="row">
          <div class="col-md-12">
            <h1><b>A Little Bliss Gear</b></h1>
            <p class="lead mb-4"><b>Bliss Family of ROMs has put together a Teespring store as a start to bring some
                stylish merchandise to our users, and help raise money for our cause. Check out a few of our selections
                below and follow the link to our store for more</b></p>
          </div>
        </div>
        <div class="row d-flex justify-content-between">
          <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" width="1500" src="images/560.jpg">
            <h4 class="my-3"> <b>T-Shirts</b></h4>
            <p class="body-font"><b>Be the first one on your block to sport Bliss on your back. Various sizes and colors
                available.</b></p>
          </div>
          <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" src="images/560 (1).jpg" width="1500">
            <h4 class="my-3"> <b>Hoodies</b></h4>
            <p class="body-font"><b>Keep warm in style. Wr have hoodies and sweatshirts available. Various sizes and
                colors options too.</b></p>
          </div>
          <div class="col-md-4 col-lg-3 p-4"> <img class="img-fluid d-block" src="images/560 (2).jpg" width="1500">
            <h4 class="my-3"> <b>Tank Tops</b></h4>
            <p class="body-font"><b>It's all about the Bliss when you are wearing one of our tank tops. Various sizes
                and colors available.</b></p>
          </div>
        </div>
        <div class="row">
          <div class="col-md-12">
            <div class="card">
              <div class="card-body">
                <h4 class="card-title"><b>Want More?</b></h4>
                <p class="card-text body-font">We are constantly updating our selection of apparel, adding more cool
                  designs and options as we go. So make sure you check back for any updates.&nbsp;</p> <a
                  class="btn btn-primary" href="https://teespring.com/stores/bliss-family-store-2">Visit Our Teespring
                  Store&nbsp;<i class="fa fa-shopping-cart fa-fw"></i></a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <!-- START OF BLISSLABS -->
    <div class="py-5 text-light cover" style="background-color: #343a40;">
      <div class="container" style="max-width: 100%;">
        <div class="row">
          <div class="col-md-12">
            <div class="row">
              <div
                class="d-flex flex-column justify-content-center p-3 col-md-8 offset-lg-1 align-items-start order-1 order-md-1">
                <h1 class="mb-3">A BlissLabs Project</h1>
                <p class="lead">We are part of a larger community of open-source projects called BlissLabs. Explore more
                  about the other BlissLabs projects below:<br></p>
                <a class="btn btn-primary" target="_blank" href="https://blisslabs.org">Learn More</a>
              </div>
              <div class="col-md-4 col-lg-3 order-2 order-md-2 p-0"> <img
                  class="img-fluid d-block justify-content-between align-items-center"
                  src="https://blisslabs.org/assets/images/bliss_labs_logo.svg" style="width: 20vw;"> </div>
            </div>
          </div>
        </div>
        <div class="row">
          <div class="col-md-12">
            <div class="carousel slide" data-ride="carousel" id="carousel">
              <div class="carousel-inner">
                <div id="carousel-slider"> </div>
              </div>
              <a class="carousel-control-prev" href="#carousel" role="button" data-slide="prev">
                <span class="carousel-control-prev-icon"></span>
                <span class="sr-only">Previous</span>
              </a>
              <a class="carousel-control-next" href="#carousel" role="button" data-slide="next">
                <span class="carousel-control-next-icon"></span>
                <span class="sr-only">Next</span>
              </a>
            </div>
            <!---------------->
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
            <script>
              $.ajax({
                type: "GET",
                url: "https://api.blissroms.org/api/allprojects",
                contentType: "application/json",
                datatype: "json",
                data: {},
                success: function (data) {
                  var newContent = ''; // Variable to hold HTML
                  for (var i = 0; i < data.length; i++) { // Loop through object
                    if (data[i].project != null) {
                      if (i == 0) {
                        newContent += '<div class="carousel-item active" style="padding-block: 10vh;" >';
                      } else {
                        newContent += '<div class="carousel-item" >';
                      }
                      newContent += '<img class="d-block img-fluid" src="' + data[i].project_avatar + '" style="margin-left: 10%; height: 35vh;"';
                      newContent += 'alt="' + data[i].project + ' " style="padding-top: 1.5rem;"/>';
                      newContent += '<div class="carousel-caption" style="background: linear-gradient(#343a40 10%, #343a40 100%)!important; padding-top: 50vw; width: 50vw; margin-left: 30vw; bottom: 0px ">';
                    < !--newContent += '<div class="item-details">'; -->
                        newContent += '<h3 class="zxc" ><b style="font-size: xx-large;">' + data[i].project + '</b></h3>';
                      newContent += '<h5 class="zxc" >Project Lead: ' + data[i].project_lead + '</h5>';
                      newContent += '<p class="card__text zxc" style=" margin-right: 1.7rem; margin-left: 1.7rem; ">' + data[i].project_description + '</p>';
                      if (data[i].project_github != null) {
                        newContent += '<a href="' + data[i].project_github + '" target="_blank"><i class="fab fa fa-git p-2" style="font-size: 300%;"></i></a>';
                      }
                      if (data[i].project_website != null) {
                        newContent += '<a href="' + data[i].project_website + '" target="_blank"><i class="fab fa p-2 fa-globe" style="font-size: 300%;"></i></a>';
                      }
                    < !--newContent += '</div>'; -->
                        newContent += '</div>';
                      newContent += '</div>';
                    } else {
                      newContent = 'NONE';
                    }
                  }
                  // Update the page with the new content
                  document.getElementById('carousel-slider').innerHTML = newContent;
                },
                error: function (jqXHR, status, err) {
                  newContent = 'ERROR: NONE';
                  document.getElementById('carousel-slider').innerHTML = newContent;
                  alert("Status: " + textStatus);
                  alert("Error: " + errorThrown);
                }
              })
            </script>
            <!---------------->
          </div>
        </div>
      </div>
    </div>
    <!-- END OF BLISSLABS -->
    <div class="py-3 bg-dark">
      <div class="container">
        <div class="row">
          <div class="col-lg-3 col-6 p-3">
            <h5> <b>Socials</b></h5>
            <ul class="list-unstyled text-primary">
              <li class="text-primary"> <a href="https://t.me/Team_Bliss_Community">BlissROMs Telegram</a> </li>
              <li> <a href="https://t.me/blissx86">Bliss OS Telegram</a> </li>
              <li> <a href="https://www.facebook.com/BlissFamilyOfROMs/">Bliss Facebook</a> </li>
              <li> <a href="https://twitter.com/Bliss_Roms">Bliss Twitter</a> </li>
              <li> <a href="https://www.linkedin.com/company/stayblissful">Bliss LinkedIn</a> </li>
              <li> <a href="https://discord.gg/wwc4Aua4fp">Bliss Discord</a> </li>
            </ul>
          </div>
          <div class="col-lg-3 col-6 p-3">
            <h5> <b>Sources</b></h5>
            <ul class="list-unstyled">
              <li> <a href="https://review.blissroms.com">BlissROMs Gerrit Review</a> </li>
              <li> <a href="https://review-x86.blissroms.com">Bliss OS (x86) Gerrit Review</a> </li>
              <li> <a href="https://github.com/BlissRoms">BlissROMs GitHub</a> </li>
              <li> <a href="https://github.com/BlissRoms-Devices">BlissROMs-Devices GitHub</a> </li>
              <li> <a href="https://github.com/BlissRoms-x86">Bliss OS GitHub</a> </li>
              <li> <a href="https://github.com/BlissRoms-pine64">BlissROMs-PINE64 GitHub</a> </li>
            </ul>
          </div>
          <div class="col-lg-3 col-6 p-3">
            <h5>Subreddits</h5>
            <ul class="list-unstyled">
              <li> <a href="https://www.reddit.com/r/BlissRoms">BlissROMs</a> </li>
              <li> <a href="https://www.reddit.com/r/BlissOS">Bliss OS</a> </li>
              <li> <a href="https://www.reddit.com/r/TeamBliss">TeamBliss</a> </li>
            </ul>
          </div>
          <div class="col-lg-3 col-md-3 p-3">
            <h5> <b>Follow us</b> </h5>
            <div class="row">
              <div class="col-md-12 d-flex align-items-center my-2 justify-content-center"> <a
                  href="https://www.facebook.com/BlissFamilyOfROMs/" class="">
                  <i class="d-block fa fa-facebook-official text-muted mr-2 fa-2x"></i>
                </a> <a href="https://www.instagram.com/blissroms/">
                  <i class="d-block fa fa-instagram text-muted mx-2 fa-2x"></i>
                </a><a href="https://github.com/BlissRoms">
                  <i class="d-block fa fa-github text-muted text-muted mx-2 fa-2x"></i>
                </a><a href="https://www.linkedin.com/company/stayblissful">
                  <i class="d-block fa fa-linkedin text-muted text-muted mx-2 fa-2x"></i>
                </a> <a href="https://www.reddit.com/r/BlissRoms">
                  <i class="d-block fa fa-reddit text-muted mx-2 fa-2x"></i>
                </a> <a href="https://twitter.com/Bliss_Roms">
                  <i class="d-block fa fa-twitter text-muted ml-2 fa-2x"></i>
                </a> </div>
            </div>
          </div>
        </div>
        <div class="row">
          <div class="col-md-12 text-center">
            <p class="mb-0 mt-2">© 2021 BlissLabs. All rights reserved</p>
          </div>
        </div>
      </div>
    </div>
    <!-- Footer -->
    <!-- JavaScript dependencies -->
    <script src="js/mainani.js" type="text/javascript"></script>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
      integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
      crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
      integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
      crossorigin="anonymous"></script>
    <!-- Script: Smooth scrolling between anchors in the same page -->
    <script src="js/smooth-scroll.js"></script>
    <script src="js/conditionize.js"></script>
  </div>
</body>

</html>