Showing source for: https://tartanconnect.cmu.edu/home_login
Duration: 0.989793s






<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">


<script>
    var jsPageName = "Login"; // pass strPageName to JavaScript, used in function setPageName() [accessibility.js]
    var jsAjaxRequest = ('0' === '1') ? true : false;
</script>

 <!-- AX != 1 -->

    <script>
        var url = new URL(location.href);
        history.replaceState({type: ""} , '', url.pathname + url.search);
    </script>
    
    

    <head>
        <!-- META TAGS -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1,requiresActiveX=true">
        <meta name="apple-itunes-app" content="app-id=1665616335, affiliate-data=myAffiliateData, app-argument=myURL">

        <title>Login</title>
        <meta name="description" content="The campus engagement platform for TartanConnect - Powered by CampusGroups.">
        <meta name="title" content="TartanConnect">

        

        <!-- CSS IMPORT -->
        

            <!-- FONT FOR DEV -->
            <link href="/css/fonts/open-sans.css" rel="stylesheet" type="text/css" >

            <!-- FAVICON -->
            <link rel="icon" type="images/x-icon" href="/upload/tepper/2022/s1_image_upload_4003688_Icon_Favicon_1_928141053.png">
            <link rel="shortcut icon" type="images/x-icon" href="/upload/tepper/2022/s1_image_upload_4003688_Icon_Favicon_1_928141053.png">

            <!-- JQUERY UI -->
            <link rel="stylesheet" type="text/css" href="/bower_components/jquery-ui/themes/base/jquery-ui.min.css">

            <!-- AUTOCOMPLETE -->
            <link rel="stylesheet" type="text/css" href="/js/jquery/jquery.autocomplete.css">

            <!-- BOOTSTRAP & GLYPHICONS -->
            <link rel="stylesheet" type="text/css" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
            <link rel="stylesheet" type="text/css" href="/static/plugins/bootstrap-multiselect/dist/css/bootstrap-multiselect.css">
            <link rel="stylesheet" type="text/css" href="/glyphicons-pro/css/glyphicons-filetypes.css">

            <!-- THICKBOX -->
            <link rel="stylesheet" type="text/css" href="/js/thickbox/thickbox.css">
        

        <!-- JQUERY & FONT -->
        <script src="/bower_components/jquery/dist/jquery.min.js"></script>
        <script src="/bower_components/jquery-ui/jquery-ui.min.js"></script>

        <!-- BOOTSTRAP -->
        <script src="/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
        <script src="/static/plugins/bootstrap-multiselect/dist/js/bootstrap-multiselect.js"></script>
        <script src="/static/js/bootstrap.cg.js"></script>

        <script type="text/javascript" src="/js/accessibility.js?v=20251112.1"></script>
        <script type="text/javascript" src="/js/scripts.js?v=20251007.1"></script>

        <link rel="stylesheet" type="text/css" href="/bower_components/mdi/css/materialdesignicons.min.css">
        <link rel="stylesheet" type="text/css" href="/static/css/materialdesigniconscustom.css">
        
        <link rel="stylesheet" type="text/css" href="/static/css/header.css?v=20220425.1">
        <link rel="stylesheet" type="text/css" href="/css/bootstrap-customV.css?v=20250729.1">
        
        
    </head>

    <body class="body-background " data-menu="">

        <!-- SKIP links - skip to top of main content -->
        <div id="div-skip-links" class="skip-link-container-mobile">
                
            <span style="padding: 5px"><a id="a-skip-to-main-content" href="javascript:void('skip-to-main-content');" class="skip-link" onclick="setFocusToContent(true);" aria-label="Skip to Main Content">Skip to Main Content</a></span>

            <span id="span-skip-to-left-navigation" style="padding: 5px; display: none;"><a id="a-skip-to-left-navigation" href="javascript:void('skip-to-navigation');" class="skip-link" onclick="setFocusToSidebar();" aria-label="Skip to Navigation">Skip to Navigation</a></span>

            <!-- ACCESSIBILITY -->
            

            <script>
                // if we're on mobile we will not enable the skip links
                const isMobileDevice = /Mobi/i.test(window.navigator.userAgent);
                // console.log('> isMobileDevice=' + isMobileDevice);

                $(window).on('load', function () {
                    if (!isMobileDevice) {
                        var elem = document.getElementById('div-skip-links');
                        if (typeof elem !== undefined) {
                            elem.classList.remove('skip-link-container-mobile');
                            elem.classList.add('skip-link-container');
                        }
                    }
                });
            </script>
        </div>

        <!-- School custom code -->
        
        <!-- End school custom code -->
    

        <!-- Modal -->
        <div id="primary-modal" class="modal fade" role="dialog">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <p class="loader">
                        <img alt="" aria-hidden="true" src="/images/loader-big.gif">
                        <br> Loading...
                    </p>
                </div>
            </div>
        </div>
        <div id="secondary-modal" class="modal fade" role="dialog">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <p class="loader">
                        <img alt="" aria-hidden="true" src="/images/loader-big.gif">
                        <br> Loading...
                    </p>
                </div>
            </div>
        </div>
        <script>
            $("#primary-modal").on("hide.bs.modal", function (e) {
                $("#primary-modal .modal-content").html(writeLoading("Loading"));
            });
            $("#secondary-modal").on("hide.bs.modal", function (e) {
                $("#secondary-modal .modal-content").html(writeLoading("Loading"));
            });
        </script>
        <!-- End Modal -->

        

        <script src="/static/js/modernizr.min.js"></script>
        
            <script src="/js/jquery-validate/jquery.validate.min.js"></script>
        
        <script src="/static/js/polyfill.js"></script>

        

        <!-- HEADER -->
        
            <style>
                .btn--school { background-color: #ba0000; color: #fff; }
                .btn--school:hover { background-color: #ba0000; color: #fff; }
                .btn--school:focus { background-color: #ba0000; color: #fff; }

                .topbar { background: #f9f8f7; border-color: #f9f8f7; }
                .topbar ul.nav > li > a:hover, .topbar ul.nav > li > button:hover  { background-color: #ba0000 !important; }
                .topbar ul.nav > li > a:focus, .topbar ul.nav > li > button:focus  { background-color: #ba0000 !important; outline: none; }
                .topbar .topbar__sidebar-toggle:hover  { background-color: #ba0000 !important; }
                .topbar .topbar__sidebar-toggle:focus  { background-color: #ba0000 !important; outline: none; }
                .topbar.topbar-fair .topbar__left button:hover, .topbar.topbar-fair .topbar__left button:focus { background-color: #ffffff !important; color: #000000 !important; }

                .topbar .open:not(.topbar__left) > a,
                .topbar .open:not(.topbar__left) > a:focus, 
                .topbar > .open:not(.topbar__left) > a:hover,
                .topbar .open:not(.topbar__left) > button, 
                .topbar .open:not(.topbar__left) > button:focus, 
                .topbar > .open:not(.topbar__left) > button:hover { background-color: #ba0000 !important; }
                .topbar li:focus-within > button.mdi-menu { background-color: #ba0000 !important; }
                .topbar li.active > a, .topbar li.active > button { background-color: #ba0000 !important; }
            </style>

            <div id="generic"></div>

            
            <div id="outer-shell" class="outer-shell  ">

                <!-- Impersonate -->
                
                <!-- /.Impersonate -->

                <!-- Message / Maintenance -->
                
                <!-- /.Message -->

                
                <style>
                    nav.topbar { 
                        display: block; height: inherit; --navbar-height: 5.8rem; 
                        align-items: center;
                        display: grid;
                        grid-template-rows: repeat(2, auto);
                        grid-template-columns: 1fr auto;
                        grid-auto-flow: column;
                    }
                    @media (min-width: 768px) {
                        nav.topbar { display: flex; }
                    }
                    .topbar.topbar--has-toggle .logo { margin-left: 0; padding-right: 1.2rem; padding-left: 1.2rem; display: flex; align-items: center;}
                    nav.topbar .topbar__sidebar-toggle { 
                        padding: 0; width: var(--navbar-height); height: var(--navbar-height); display: flex; align-items: center; justify-content: center;
                    }
                    nav.topbar .navbar-header .logo:not(.dropdown-toggle) { margin-right: 10px; }
                    nav.topbar #header__switch { height: var(--navbar-height); }
                    .topbar__sidebar-toggle .mdi,
                    .topbar__menu .topbar__menu-icon > .mdi { display: block; }
                    .topbar__sidebar-toggle .mdi:before,
                    .topbar__menu .topbar__menu-icon > .mdi::before,
                    nav.topbar .navbar-toggle .mdi::before  { display: block; line-height: 1; }
                    nav.topbar .navbar-toggle { height: var(--navbar-height); align-items: center; justify-content: center; margin-left: 15px;
                                                        float: none; margin-top: 0; margin-right: 0; margin-bottom: 0; padding-left: 15px; padding-right: 15px;}
                    
                    
                    /* Shared backgrounds */
                    nav.topbar .navbar-toggle.collapsed {
                        background-color: #f9f8f7;
                    }
                    nav.topbar .navbar-toggle:not(.collapsed),
                    nav.topbar .navbar-toggle:focus,
                    nav.topbar .navbar-toggle:hover {
                        background-color: #ba0000;
                    }

                    nav.topbar,
                    nav.topbar.topbar--light.topbar--reverse { --btn-text-color: white; }
                    nav.topbar.topbar--light, nav.topbar.topbar--reverse { --btn-text-color: #333; }

                    nav.topbar #button-menu-mobile:focus-visible,
                    nav.topbar #header__switch:focus-visible,
                    nav.topbar .navbar-toggle:focus-visible,
                    nav.topbar ul.nav.nav-right > li > .topbar__menu:focus-visible,
                    .acc-keyboard-mode nav.topbar #header__switch:focus {
                        outline: 2px solid var(--btn-text-color) !important;
                        outline-offset: -2px;
                    }
                    @media (min-width: 768px) {
                        nav.topbar #main-navbar-collapse ul.nav > li > .topbar__menu:focus-visible {
                            outline: 2px solid var(--btn-text-color);
                            outline-offset: -2px;
                        }
                    }

                    /* Default text color (dark theme) */
                    nav.topbar .navbar-toggle { color: white; }

                    /* Light: text becomes #333 */
                    nav.topbar.topbar--light .navbar-toggle { color: #333; }

                    /* Reverse: hover flips to #333 */
                    nav.topbar.topbar--light .navbar-toggle,
                    nav.topbar.topbar--reverse .navbar-toggle:not(.collapsed),
                    nav.topbar.topbar--reverse .navbar-toggle:focus,
                    nav.topbar.topbar--reverse .navbar-toggle:hover { color: #333; }

                    /* Light + Reverse: hover flips back to white */
                    nav.topbar.topbar--light.topbar--reverse .navbar-toggle:not(.collapsed),
                    nav.topbar.topbar--light.topbar--reverse .navbar-toggle:focus,
                    nav.topbar.topbar--light.topbar--reverse .navbar-toggle:hover { color: white; }
                    
                    @media (max-width: 767px) {
                        nav.topbar .navbar-toggle { display: flex; }
                        nav.topbar .navbar-collapse { background-color: #f0f2f5; border-bottom: 1px solid gray; max-height: calc(100vh - 5.8rem - 1.5rem); }
                        nav.topbar .navbar-collapse ul.navbar-nav { flex-wrap: wrap; gap: 1.5rem; padding: 1.5rem; }
                        nav.topbar .navbar-collapse ul.nav::before { content: initial; }
                        nav.topbar .navbar-collapse ul.nav > li > .topbar__menu { height: 75px; border-radius: 15px; min-width: 8rem; }
                        nav.topbar .navbar-collapse ul.nav > li:not(.active) > .topbar__menu:not(:hover):not(:focus) { background-color: white !important; color: #333333 !important; }
                        nav.topbar .navbar-collapse ul.nav > li.active > .topbar__menu, 
                        nav.topbar .navbar-collapse ul.nav > li > .topbar__menu:hover, 
                        nav.topbar .navbar-collapse ul.nav > li > .topbar__menu:focus { border: 2px solid #f9f8f7; }
                        nav.topbar ul.nav.nav-right > li .topbar__menu { padding-left: 0.5rem; padding-right: 0.5rem; min-width: 3rem; }
                    }
                    nav.topbar ul.nav > li { height: inherit; }
                    nav.topbar ul.nav > li .topbar__menu { height: var(--navbar-height); }
                </style>
                
                <nav
                    id="topbar"
                    class="
                        topbar topbar-
                         topbar--light  topbar--reverse 
                    "
                    role="navigation" aria-label="Topbar"
                    style="align-items: center;"
                >
                    <div class="navbar-header topbar__left" style="float: none; display: flex; align-items: center;">
                        
                                <div role="banner">
                                    <a id="a-top-bar-logo" aria-label="TartanConnect Logo. Opens the members homepage." role="button" class="logo" href="/groups">
                                        <img class="topbar__icon-large" src="/upload/tepper/2022/image_upload_4003688__Test_928135621.png" alt="TartanConnect Logo Image." aria-label="TartanConnect Logo Image. Clicking opens the members home page." style="max-height: 50px; max-width: 165px;">
                                        <img class="topbar__icon-small" src="/upload/tepper/2022/image_upload_4003688_Icon_Favicon_1_92814121.png" alt="TartanConnect Logo Image." aria-label="TartanConnect Logo Image. Clicking opens the members home page." style="max-height: 35px; max-width: 35px; margin: 0 5px;">
                                    </a>
                                </div>
                            
                            <button id="main-navbar-toggler" type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#main-navbar-collapse" aria-expanded="false">
                                <div>
                                    <div>
                                        <span class="mdi mdi-apps mdi-24px"></span>
                                    </div>
                                    <div>Menu</div>
                                </div>
                                <div>
                                    <span class="caret aria-decorative" role="presentation" aria-hidden="true"></span>
                                </div>
                            </button>
                        
                    </div>
                    



<div style="grid-column: span 2 / span 2">
    <div class="collapse navbar-collapse" id="main-navbar-collapse" style="padding: 0;">
        <ul class="nav navbar-nav">
            
                <!-- Not Logged Buttons -->
                
                    <!-- Home Website Buttons -->
                    
                        <li class="active">
                            <a class="topbar__menu topbar__menu--large" href="/home_login" aria-label="Home" role="button">Home</a>
                        </li>
                                    <li class="hidden-xs dropdown  hasNoSubMenu">
                <a class="topbar__menu topbar__menu--large" href="/home/groups/" style="max-width: inherit">
                    Groups
                </a>
                
                <ul class="dropdown-menu dropdown-menu-left arrow-dropdown-menu arrow-menu-right user-list notify-list" style="overflow-y: auto;max-height: 80vh;">

                </ul>
            </li>            <li class="hidden-xs dropdown  hasNoSubMenu">
                <a class="topbar__menu topbar__menu--large" href="/home/events/" style="max-width: inherit">
                    Events
                </a>
                
                <ul class="dropdown-menu dropdown-menu-left arrow-dropdown-menu arrow-menu-right user-list notify-list" style="overflow-y: auto;max-height: 80vh;">

                </ul>
            </li>
                        
                            <li>
                                <a 
                                    class="topbar__menu topbar__menu--large hidden-sm hidden-md hidden-lg"
                                    href="/home/groups/" 
                                    aria-label="Groups Section" 
                                    role="button" 
                                    tabindex="0"
                                >Groups</a>
                            </li>
                        
                            <li>
                                <a 
                                    class="topbar__menu topbar__menu--large hidden-sm hidden-md hidden-lg"
                                    href="/home/events/" 
                                    aria-label="Events Section" 
                                    role="button" 
                                    tabindex="0"
                                >Events</a>
                            </li>
                        
                    <!-- /.Home Website Buttons -->

                    <!-- Group & Event Buttons -->
                    
                    <!-- /.Group & Event Buttons -->
                
                <!-- /.Not Logged Buttons -->

                <!-- Home Button -->
                
                <!-- /.Home Button -->

                <!-- Group Button -->
                
                <!-- /.Group Button -->

                <!-- Manage Button -->
                

                <!-- Event Button -->
                
                <!-- /.Event Button -->
               
                <!-- Chat Button -->
                
                <!-- /.Chat Button -->
                
                
                <!-- Admin / Setup Button -->
                
                <!-- /.Admin Button -->
            
        </ul>
    </div>
</div>
<div style="color: white; margin-left: auto;">
    <ul class="nav nav-right">
        
            <!-- Login Button -->
            <li class="">
                <a class="topbar__menu topbar__menu--row" href="/webapp/auth/login" aria-label="Sign In Section" role="button">
                    <span class="mdi mdi-login-variant mdi-24px"></span> 
                    <span class="hidden-xs hidden-sm topbar__menu-text" style="overflow: initial;"> Sign In </span>
                </a>
            </li>
            <!-- /.Login Button -->
        
    </ul>
    <style>
        #a-top-bar-logo:focus > i { outline: 2px solid #ffffff; }
    </style>
</div>

                    
                </nav>
                <script>
                    $('#topbar').on('focusout', '.dropdown-menu, .navbar-collapse', function (ev) {
                        if (!ev.currentTarget.contains(ev.relatedTarget)) {
                            if ($(ev.currentTarget).hasClass('dropdown-menu')) {
                                $(ev.currentTarget).parent().find('[data-toggle="dropdown"]').dropdown('close');
                            } else if ($(ev.currentTarget).hasClass('navbar-collapse')) {
                                $(ev.currentTarget).collapse('hide');
                            }
                        }
                    });
                    $(document).on('click', function (e) {
                        var $navbar = $('#main-navbar-collapse');
                        if ($navbar.hasClass('in') && !$(e.target).closest('#main-navbar-collapse, #main-navbar-toggler').length) {
                            $navbar.collapse('hide');
                        }
                    });
                    $('#topbar').on('show.bs.dropdown', function () {
                        $('#main-navbar-collapse').collapse('hide');
                    });
                </script>


                <div id="inner-shell" class="inner-shell">

                     

        <!-- END HEADER -->

        
            <div id="content-cont" class="content-cont container-fluid">
        
            <div id="page-cont" class="content" role="main" aria-label="Main Content.">
                <div style="position: relative;"><span id="span-top-of-main-content--0" class="content__top-element" tabindex="0" aria-label="Top of Main Content." style="display: none;">Top of Main Content</span></div>


                
                <!-- Used in email_form -->
                
<!-- END AX != 1 -->

                

	
	<div class="login__slideshow-container">
		
			<button id="h2-slideshow-previous" type="button" class="login__slideshow--previous-arrow header-cg--h2" style="z-index: 99999999; padding: 0px; border: 0; background: transparent;" aria-label="Previous Homepage Slide" onclick="$('.login__slideshow').slick('slickPrev');setAriaLabelOnHomepagePreviousSlideButton();"><span id="span-slideshow-previous" class="mdi mdi-chevron-left"></span><span id="span-slideshow-previous-hidden" class="visually-hidden">Previous Slide</span></button>
		
		<div class="login__slideshow">
			
			<div class="login__cover-container" aria-label="Welcome to TartanConnect! The official campus community engagement platform at Carnegie Mellon University.">
				<img class="login__cover-img" style="height:calc(100vh - 70px);" alt="No image description provided" tabindex="-1" src="/upload/tepper/2022/image_upload_3967313_29344297235_b0601ad78a_kjpg_62792654.jpeg" >
				<div class="login__cover-overlay"></div>
				<div class="login__cover-text">
					<div>
						
						<h1 class="ufocus" style="font-size:50px;color:white">Welcome to TartanConnect!</h1>
						<div class="text__subtitle">The official campus community engagement platform at Carnegie Mellon University</div>
						<div class="btn-container">
							
								<script>
									function addSignInButtonClass() {
										var style = document.createElement('style');
										style.type = 'text/css';
										var mainColor = '#ba0000';
										var hoverColor = '#' + generateColor('', '#ba0000', 20)[0];
										// console.log('> addSignInButtonClass() begins...');
										// console.log('> mainColor=' + mainColor);
										// console.log('> hoverColor=' + hoverColor);
										var cssText = '#a-sign-in-button_1 {background-color: ' + mainColor + ';} ';
										cssText += '#a-sign-in-button_1:hover, #a-sign-in-button_1:focus {background-color: ' + hoverColor + ';} ';
										style.innerHTML = cssText;
										document.getElementsByTagName('head')[0].appendChild(style);
										// console.log('addSignInButtonClass() added #a-sign-in-button_1 class info');
									}
									addSignInButtonClass();
								</script>
								<a id="a-sign-in-button_1" class="btn btn--rounded action-btn" onclick="loadButton($(this))" href="/login_only?redirect=" aria-label="Sign In. Welcome to TartanConnect! The official campus community engagement platform at Carnegie Mellon University. Click to go to Sign In."><div style="padding: 0 20px;"><span class="mdi mdi-login"></span> Sign In</div></a>
							
						</div>
					</div>
				</div>
				
					<span class="mdi mdi-chevron-down discover-btn" onclick="$('html, body').animate({ scrollTop: $('.login__slideshow-container').height() }, 700);" tabindex="-1" role="presentation" aria-hidden="true"></span>
				
			</div>

			
			<div class="login__cover-container" aria-label="Discover More Events. Take advantage of enriching opportunities happening on your campus.">
				<img class="login__cover-img" style="height:calc(100vh - 70px);" alt="No image description provided" tabindex="-1" src="/upload/tepper/2022/image_upload_3967313_17235619895_83ff5699ee_kjpg_62793246.jpeg" hidden>
				<div class="login__cover-overlay"></div>
				<div class="login__cover-text">
					<div>
						
						<h1 class="ufocus" style="font-size:50px;color:white">Discover More Events</h1>
						<div class="text__subtitle">Take advantage of enriching opportunities happening on your campus</div>
						<div class="btn-container">
							
								<script>
									function addSignInButtonClass() {
										var style = document.createElement('style');
										style.type = 'text/css';
										var mainColor = '#266ad8';
										var hoverColor = '#' + generateColor('', '#266ad8', 20)[0];
										// console.log('> addSignInButtonClass() begins...');
										// console.log('> mainColor=' + mainColor);
										// console.log('> hoverColor=' + hoverColor);
										var cssText = '#a-sign-in-button_2 {background-color: ' + mainColor + ';} ';
										cssText += '#a-sign-in-button_2:hover, #a-sign-in-button_2:focus {background-color: ' + hoverColor + ';} ';
										style.innerHTML = cssText;
										document.getElementsByTagName('head')[0].appendChild(style);
										// console.log('addSignInButtonClass() added #a-sign-in-button_2 class info');
									}
									addSignInButtonClass();
								</script>
								<a id="a-sign-in-button_2" class="btn btn--rounded action-btn" onclick="loadButton($(this))" href="events" aria-label="Events. Discover More Events. Take advantage of enriching opportunities happening on your campus. Click to go to Events.."><div style="padding: 0 20px;"><span class="mdi mdi-calendar"></span> Events</div></a>
							
						</div>
					</div>
				</div>
				
					<span class="mdi mdi-chevron-down discover-btn" onclick="$('html, body').animate({ scrollTop: $('.login__slideshow-container').height() }, 700);" tabindex="-1" role="presentation" aria-hidden="true"></span>
				
			</div>

			
		</div>
		
			<button id="h2-slideshow-next" type="button" class="login__slideshow--next-arrow header-cg--h2" style="z-index: 99999999; padding: 0px; border: 0; background: transparent;" aria-label="Next Homepage Slide" onclick="$('.login__slideshow').slick('slickNext');setAriaLabelOnHomepageNextSlideButton();"><span id="span-slideshow-next" class="mdi mdi-chevron-right"></span><span id="span-slideshow-next-hidden" class="visually-hidden">Next Slide</span></button>
			<script>
				$(window).on('load', function () {
					$('#h2-slideshow-previous').keyup(function (event) {
						if (event.which == 13) {
							$('#h2-slideshow-previous').click();
							setTimeout(function () {
								$('div.login__cover-container.slick-active').focus();
							}, 100);
						}
					});
					$('#h2-slideshow-next').keyup(function (event) {
						if (event.which == 13) {
							$('#h2-slideshow-next').click();
							setTimeout(function () {
								$('div.login__cover-container.slick-active').focus();
							}, 100);
						}
					});
					$('#h2-slideshow-previous').blur(function () {
						$('#h2-slideshow-previous').attr('aria-label', 'Previous Homepage Slide');
						$('#span-slideshow-previous').attr('aria-label', 'Previous Slide');
						$('#span-slideshow-previous-hidden').text('Previous Slide');
					});
					$('#h2-slideshow-next').blur(function () {
						$('#h2-slideshow-next').attr('aria-label', 'Next Homepage Slide');
						$('#span-slideshow-next').attr('aria-label', 'Next Slide');
						$('#span-slideshow-next-hidden').text('Next Slide');
					});
				});
				function setAriaLabelOnHomepagePreviousSlideButton() {
					setTimeout(function () {
						$('div.login__cover-container.slick-active .btn-container a').focus();
					}, 250);
				}
				function setAriaLabelOnHomepageNextSlideButton() {
					setTimeout(function () {
						$('div.login__cover-container.slick-active .btn-container a').focus();
					}, 250);
				}
			</script>
		
	</div>

	<div class="login__event-container">
		<div class="login__event-slider">
			<div class="row">
				<div class="col-xs-6 col-sm-6 col-md-6">
					<h2 class="header-cg--h3" style="margin-top:0;margin-left:20px">Upcoming Events <small>(744)</small></h2>
				</div>
				<div class="col-xs-6 col-sm-6 col-md-6 text-right">
					
						<a data-z="hl.a.01" class="btn btn-grey btn--rounded" href="/events" style="margin-top:0;margin-right:20px" aria-label="All Events"><span class="mdi mdi-calendar"></span> All Events</a>
					
				</div>
			</div>
			<div id="event_slider_container" style="padding: 0px 30px 0px 30px;" role="region" aria-label="Upcoming Events Carousel"><div class="text-center"><span style="position:absolute;top:45%" class="glyphicon glyphicon-refresh mdi-custom_spin grey-element"></span></div></div>
		</div>
	</div>
	

<div height="50px"></div>

<script>
// Home Page JS Logic after Group Pinned
$(document).ready(function() {
	clampText('text-clamp', true);
	getContent('event_slider_container', 'ajax_event_slider2?nb_events=4');
	$('.login__slideshow').slick({
		dots: false,
		arrows:false,
		infinite: true,
		fade: true,
		adaptiveHeight: true,
		autoplay: false,
		speed:700,
		autoplaySpeed: 900000,
		slidesToScroll: 1,
		cssEase: 'linear',
		slidesToShow: 1,
		initialSlide: 1
	});
});
</script>

<style>

	.outer-shell > .container,.container-fluid {width: 100%;margin-left:0;margin-right:0}
	.groups_preview-container {
		width: 100%;
	}
	@media (min-width: 1200px) {
		.news-container, .groups_preview-container {
			padding: 0 35px;
			width: 1200px;
			margin: auto;
		}
	}

	
	.discover-btn {
		position: absolute;
		bottom: 0.5vh;
		color: #F5F5F8;
		cursor: pointer;
		transition-duration: 0.4s;
	}
	.discover-btn:before {
		font-size: 90px;
	}
	.discover-btn:hover {
		bottom:0vh;
	}
	.list-group-item:hover {
		border-color: #d0d0d0;
		background-color: #f9f9f9;
		-webkit-transition: background-color 150ms ease-out;
		-ms-transition: background-color 150ms ease-out;
		transition: background-color 150ms ease-out;
	}
	.action-btn {
		color:white;
		background-color:#ba0000;
		box-shadow: 0px 0px 0px 1px rgba(255,255,255, 0.5);
		display:block;
	}
	.action-btn:hover, .action-btn:focus {
		color:white;
	}
	.btn-container {
		margin-top:5%;
		display: flex;
		justify-content: center;
	}

	.login__slideshow--next-arrow :before, .login__slideshow--previous-arrow :before {
		background-color: #ba0000;
		color:#d2d2d2;
	}

	.login__slideshow--next-arrow:focus :before, .login__slideshow--previous-arrow:focus :before {
		background-color: #ffffff;
		color: #ba0000 !important;
	}

	.acc-keyboard-mode a.btn--rounded:focus { text-decoration: underline; text-decoration-style: solid; }
	.acc-keyboard-mode div.login__cover-container:focus h1.ufocus { text-decoration: underline; text-decoration-style: solid; }
	.acc-keyboard-mode a.a-slick-card-link:focus h3 { text-decoration: underline; text-decoration-style: solid; }
	.acc-keyboard-mode a.group-card:focus h3, a.badge:focus { text-decoration: underline; text-decoration-style: solid; }

</style>

<link rel="stylesheet" type="text/css" href="/static/plugins/slick/slick.css"/>
<link rel="stylesheet" type="text/css" href="/static/plugins/slick/slick-theme.css"/>
<script type="text/javascript" src="static/plugins/slick/slick.min.js"></script>


<!-- Rich text editor: CKEditor (default) or Lexical (feature flag) -->


<script>
	//YT Viewer
	if (typeof arrYoutubePlayerObjects != "undefined") { 

		$("#youtubeScript").remove();
		$("#www-widgetapi-script").remove();
		if (window['YT'] != undefined) { window.YT.loading = 0; window.YT.loaded = 0; }
				
 		var youtubeTag   = document.createElement('script');
		youtubeTag.id    = "youtubeScript";
		youtubeTag.src   = "https://www.youtube.com/iframe_api";
		youtubeTag.async = false;

		// Get First Script Tag & Insert Vimeo Script before that.
		var firstScriptTag = document.getElementsByTagName('script')[0];
      	firstScriptTag.parentNode.insertBefore(youtubeTag, firstScriptTag);

      	// Array of Players
      	var arrYoutubePlayers = [];

      	// Functions to work on Youtube Players
      	function onYoutubePlayerReady(event) {
			var player = event.target;
			$(window).blur(function() { player.pauseVideo(); });
			$(window).scroll(function() { 
				if ( !isInViewport(document.getElementById("player--" + player.youtubeObject.cgID))) { 
					player.pauseVideo(); 
				} 
			});

			var startTime = new Date(player.youtubeObject.startTime * 1000).toISOString();
			var totalTime = new Date(player.getDuration() * 1000).toISOString();
			if (player.getDuration() >= 3600) {
				startTime = startTime.substr(11, 8);
				totalTime = totalTime.substr(11, 8);
			}
			else {
				startTime = startTime.substr(14, 5);
				totalTime = totalTime.substr(14, 5);
			}
			$("#player-btn--" + player.youtubeObject.cgID + " div.timer").html("<span id='player-time--" + player.youtubeObject.cgID + "'>" + startTime + "</span> / " + totalTime);
      	}

      	function onYoutubePlayerStateChange(event) {
      		var player = event.target;

      		if (event.data == YT.PlayerState.PLAYING) {
				// Change Buttons
				$("#player-btn--" + player.youtubeObject.cgID + " button.playpause").attr("data-status", "pause").attr("aria-label", "Pause");
				$("#player-btn--" + player.youtubeObject.cgID + " button.playpause span.mdi").removeClass("mdi-play").addClass("mdi-pause");
      		}

      		if (event.data == YT.PlayerState.PLAYING && player.intervalFunction == null) {
	            // HACK For Window BLUR
	            window.focus();

	            // AJAX Recurring Call
	            player.intervalFunction = setInterval(function() {
	                postVideoViews(player.youtubeObject.cgUID, player.youtubeObject.cgUID_s, player.getCurrentTime());
	            }, 10000);

	            // Timer
	            player.intervalTimerFunction = setInterval(function() { 
	            	var currentTime = new Date(player.getCurrentTime() * 1000).toISOString();
	            	if (player.getDuration() >= 3600) {
	            		currentTime = currentTime.substr(11, 8);
	            	}
	            	else {
	            		currentTime = currentTime.substr(14, 5);
	            	}
	            	$("#player-time--" + player.youtubeObject.cgID).html(currentTime);
	            }, 1000) 
	        }
	        else if (event.data == YT.PlayerState.PAUSED || event.data == YT.PlayerState.ENDED) {
				// Change Buttons
				$("#player-btn--" + player.youtubeObject.cgID + " button.playpause").attr("data-status", "play").attr("aria-label", "Play");
				$("#player-btn--" + player.youtubeObject.cgID + " button.playpause span.mdi").removeClass("mdi-pause").addClass("mdi-play");

	            clearInterval(player.intervalFunction);
	            clearInterval(player.intervalTimerFunction);
				player.intervalFunction = null;
				player.intervalTimerFunction = null;
				postVideoViews(player.youtubeObject.cgUID, player.youtubeObject.cgUID_s, player.getCurrentTime(), (event.data == YT.PlayerState.ENDED ? 'true' : ''));
				//if (event.data == YT.PlayerState.ENDED) { 
				    //if (typeof refreshTrackChecklist !== "undefined") { refreshTrackChecklist(); }
					//else if (typeof parent.refreshTrackChecklist !== "undefined") { parent.refreshTrackChecklist(); }
				//}
	        }
      	}

		function youtubePlayerPlayPause(player) {
			var currentStatus = $("#player-btn--" + player.youtubeObject.cgID + " button.playpause").attr("data-status");
			if (currentStatus == "play") { player.playVideo(); }
			else if (currentStatus == "pause") { player.pauseVideo(); }
		}

        /* Function that checks localStorage for the Vimeo/YouTube closed captions load policy. Returns number values:
         *   0 - closed captions should be be disabled (do not load closed captions)
         *   1 - closed captions should be loaded when video loads
         * If the local storage key is not defined we return 0 (as a number).
         */
        function getVideoPlayerCCLoadPolicy() {
            try {
                const lsKey = 'cg-video-player-cc-load-policy';
                const ccLoadPolicy = localStorage.getItem(lsKey);
                return (ccLoadPolicy === '1') ? 1 : 0;
            } catch(e) {
                return 0;
            }
        }

        /* Function that toggles the video player CC load policy stored in local storage. Toggled values are (strings values):
         *   '0' - closed captions should be be disabled (do not load closed captions)
         *   '1' - closed captions should be loaded when video loads
         * If the local storage key is not defined it is treated as though the value were '0' and toggles to '1'.
         * */
        function toggleVideoPlayerCCLoadPolicy() {
            try {
                const lsKey = 'cg-video-player-cc-load-policy';
                const ccLoadPolicy = localStorage.getItem(lsKey);
                if (ccLoadPolicy === '1') {
                    localStorage.setItem(lsKey, '0');
                } else {
                    localStorage.setItem(lsKey, '1');
                }
            } catch(e) {
                return;
            }
        }

        /* Function that prompts the user for confirmation before toggling the video player closed caption load policy.
         * - If closed captions are currently turned off, the user will be prompted to confirm before turning them on (and vice versa)
         * - Video player CC load policy setting is stored in local storage (see above functions)
         * - Vimeo and YouTube video players require reload of the associated IFrames to change the setting, 
         *   if user confirms yes to reload, the page will be reloaded.
         */
        function toggleClosedCaptionsAndReloadVideoIframes() {
            const turnClosedCaptionsOnOff = (typeof getVideoPlayerCCLoadPolicy !== 'undefined' && getVideoPlayerCCLoadPolicy() === 1) ? 'off' : 'on';
            const message = 'Turning ' + turnClosedCaptionsOnOff + ' closed captions will reload this page, please save any outstanding changes before you choose to turn closed captions ' + turnClosedCaptionsOnOff + '. Are you sure you want to turn closed captions ' + turnClosedCaptionsOnOff + '?';
            if (confirm(message)) {
                toggleVideoPlayerCCLoadPolicy();
                location.reload();
            } else {
                return false;
            }
        }

      	// Called when the script is fully loaded.
      	function onYouTubeIframeAPIReady() {

      		// Loop through players
	  		arrYoutubePlayerObjects.forEach(function (youtubeObject, index) {
	  			arrYoutubePlayers[index] = new YT.Player("player--" + youtubeObject.cgID, {
                                                        	height: youtubeObject.height,
                                                        	width:  youtubeObject.width,
                                                        	videoId: youtubeObject.videoID,
                                                        	playerVars: {
	                                                            modestbranding: 1,
	                                                            rel: 0,
	                                                            disablekb: 1,
	                                                            playsinline: 1,
	                                                            controls: 0,
	                                                            start: youtubeObject.startTime,
                                                                cc_load_policy: (typeof getVideoPlayerCCLoadPolicy !== 'undefined') ? getVideoPlayerCCLoadPolicy() : 0
                                                        	},
	                                                        events: {
	                                                            'onStateChange': onYoutubePlayerStateChange,
	                                                            'onReady': onYoutubePlayerReady
	                                                        }
                                                    	});
	  			arrYoutubePlayers[index].youtubeObject = youtubeObject;
	  			arrYoutubePlayers[index].intervalFunction = null;

				$("#player-btn--" + youtubeObject.cgID + " button.playpause").on('click', function() { 
					youtubePlayerPlayPause(arrYoutubePlayers[index]); 
				});
				$("#player-btn--" + youtubeObject.cgID + " button.replay").on('click', function() { 
					arrYoutubePlayers[index].seekTo(0); 
				});
				$("#player-btn--" + youtubeObject.cgID + " button.rewind").on('click', function() { 
					arrYoutubePlayers[index].seekTo(arrYoutubePlayers[index].getCurrentTime() - 10);
				});
                const turnClosedCaptionsOnOff = (typeof getVideoPlayerCCLoadPolicy !== 'undefined' && getVideoPlayerCCLoadPolicy() === 1) ? 'off' : 'on';
                $("#player-btn--" + youtubeObject.cgID + " button.closedcaption").attr('aria-label', 'Turn ' + turnClosedCaptionsOnOff + ' closed captions. Note, this requires a reload of the current page.');
				$("#player-btn--" + youtubeObject.cgID + " button.closedcaption").on('click', function() { 
                    toggleClosedCaptionsAndReloadVideoIframes();
				});
				$("#player-btn--" + youtubeObject.cgID + " button.fullscreen").on('click', function() {
					arrYoutubePlayers[index].pauseVideo();
					tb_show("", "/video_player?embed=1&uid=" + youtubeObject.cgUID + "&width=995&height=680&modal=true&TB_iframe=1", "");
				});

  			});

  			arrYoutubePlayerObjects = undefined;
  		}
	} 


	//Vimeo Viewer
	if (typeof arrVimeoPlayerObjects != "undefined") {

        $("#vimeoScript").remove();

		var vimeoTag   = document.createElement('script');
		vimeoTag.id    = "vimeoScript";
		vimeoTag.src   = "https://player.vimeo.com/api/player.js";
		vimeoTag.async = false;

		// Get First Script Tag & Insert Vimeo Script before that.
		var firstScriptTag = document.getElementsByTagName('script')[0];
      	firstScriptTag.parentNode.insertBefore(vimeoTag, firstScriptTag);

      	// Array of Players
      	var arrVimeoPlayers = [];

      	// Functions to work on Vimeo Players
		function vimeoPlayerPlay(player) {
			// Change Buttons
			$("#player-btn--" + player.vimeoObject.cgID + " button.playpause").attr("data-status", "pause").attr("aria-label", "Pause");
			$("#player-btn--" + player.vimeoObject.cgID + " button.playpause span.mdi").removeClass("mdi-play").addClass("mdi-pause");

			// AJAX Recurring Call
			player.intervalFunction  = setInterval( function() { 
				player.getCurrentTime().then( function(seconds) {
					postVideoViews(player.vimeoObject.cgUID, player.vimeoObject.cgUID_s, seconds);
				}) 
			}, 10000)

			// Timer
            player.intervalTimerFunction = setInterval(function() { 
            	player.getCurrentTime().then( function(seconds) {
	            	var currentTime = new Date(seconds * 1000).toISOString();
	            	if (player.totalDuration >= 3600) {
	            		currentTime = currentTime.substr(11, 8);
	            	}
	            	else {
	            		currentTime = currentTime.substr(14, 5);
	            	}
	            	$("#player-time--" + player.vimeoObject.cgID).html(currentTime);
				}) 
            }, 1000) 
		}

		function vimeoPlayerPause(player) { 
			// Change Buttons
			$("#player-btn--" + player.vimeoObject.cgID + " button.playpause").attr("data-status", "play").attr("aria-label", "Play");
			$("#player-btn--" + player.vimeoObject.cgID + " button.playpause span.mdi").removeClass("mdi-pause").addClass("mdi-play");

			// Clear AJAX Recurring Call
			clearInterval(player.intervalFunction);
			clearInterval(player.intervalTimerFunction);
			player.intervalFunction = null;
			player.intervalTimerFunction = null;
			
			player.getCurrentTime().then( function(seconds) {
				postVideoViews(player.vimeoObject.cgUID, player.vimeoObject.cgUID_s, seconds);
			});		
		}

		function vimeoPlayerEnded(player) {
			// Change Buttons
			$("#player-btn--" + player.vimeoObject.cgID + " button.playpause").attr("data-status", "play").attr("aria-label", "Play");
			$("#player-btn--" + player.vimeoObject.cgID + " button.playpause span.mdi").removeClass("mdi-pause").addClass("mdi-play");

			// Clear AJAX Recurring Call
			clearInterval(player.intervalFunction);
			clearInterval(player.intervalTimerFunction);
			player.intervalFunction = null;
			player.intervalTimerFunction = null;

			player.getCurrentTime().then( function(seconds) {
				postVideoViews(player.vimeoObject.cgUID, player.vimeoObject.cgUID_s, seconds, 'true');
			});

			//if (typeof refreshTrackChecklist !== "undefined") { refreshTrackChecklist(); }
			//else if (typeof parent.refreshTrackChecklist !== "undefined") { parent.refreshTrackChecklist(); }
		}

		function vimeoPlayerPlayPause(player) {
			var currentStatus = $("#player-btn--" + player.vimeoObject.cgID + " button.playpause").attr("data-status");
			if (currentStatus == "play") {
				player.play();
			}
			else if (currentStatus == "pause") {
				player.pause();
			}
		}

      	// We wait until the script is fully loaded.
      	$("#vimeoScript").on('load', function() {
		  	
		  	// Loop through players
	  		arrVimeoPlayerObjects.forEach(function (vimeoObject, index) {

                if (typeof getVideoPlayerCCLoadPolicy !== 'undefined' && getVideoPlayerCCLoadPolicy() === 1) {
                    // load with closed captions enabled (set texttrack to 'en')
	      			arrVimeoPlayers[index] = new Vimeo.Player("player--" + vimeoObject.cgID, { url: vimeoObject.URL , height: vimeoObject.height, width: vimeoObject.width, controls: false, texttrack: 'en' });
                } else {
    	  			arrVimeoPlayers[index] = new Vimeo.Player("player--" + vimeoObject.cgID, { url: vimeoObject.URL , height: vimeoObject.height, width: vimeoObject.width, controls: false });
                }
	  			arrVimeoPlayers[index].vimeoObject = vimeoObject;
	  			arrVimeoPlayers[index].intervalFunction = null;

	  			if (vimeoObject.startTime != 0) {
	  				arrVimeoPlayers[index].setCurrentTime(vimeoObject.startTime);
	  			}

				arrVimeoPlayers[index].on('play',  function() { vimeoPlayerPlay(this)  } );
				arrVimeoPlayers[index].on('pause', function() { vimeoPlayerPause(this) } );
				arrVimeoPlayers[index].on('ended', function() { vimeoPlayerEnded(this) } );

				$("#player-btn--" + vimeoObject.cgID + " button.playpause").on('click', function() { 
					vimeoPlayerPlayPause(arrVimeoPlayers[index]); 
				});
				$("#player-btn--" + vimeoObject.cgID + " button.replay").on('click', function() { 
					arrVimeoPlayers[index].setCurrentTime(0) 
				});
				$("#player-btn--" + vimeoObject.cgID + " button.rewind").on('click', function() { 
					arrVimeoPlayers[index].getCurrentTime().then(function(seconds) {
						arrVimeoPlayers[index].setCurrentTime(Math.max(0, seconds - 10));
					})
				});
                const turnClosedCaptionsOnOff = (typeof getVideoPlayerCCLoadPolicy !== 'undefined' && getVideoPlayerCCLoadPolicy() === 1) ? 'off' : 'on';
                $("#player-btn--" + vimeoObject.cgID + " button.closedcaption").attr('aria-label', 'Turn ' + turnClosedCaptionsOnOff + ' closed captions. Note, this requires a reload of the current page.');
				$("#player-btn--" + vimeoObject.cgID + " button.closedcaption").on('click', function() {
                    toggleClosedCaptionsAndReloadVideoIframes();
				});
				$("#player-btn--" + vimeoObject.cgID + " button.fullscreen").on('click', function() {
					arrVimeoPlayers[index].pause();
					tb_show("", "/video_player?embed=1&uid=" + vimeoObject.cgUID + "&width=995&height=680&modal=true&TB_iframe=1", "");
				});

				$(window).blur(function() { 
					arrVimeoPlayers[index].pause(); 
				});
				$(window).scroll(function() { 
					if ( !isInViewport(document.getElementById("player--" + vimeoObject.cgID))) { 
						arrVimeoPlayers[index].pause(); 
					} 
				});


				var startTime = new Date(vimeoObject.startTime * 1000).toISOString();
				var totalTime = 0;
				arrVimeoPlayers[index].getDuration().then(function(seconds) { 
					arrVimeoPlayers[index].totalDuration = seconds;

					totalTime = new Date(seconds * 1000).toISOString();
					if (seconds >= 3600) {
						startTime = startTime.substr(11, 8);
						totalTime = totalTime.substr(11, 8);
					}
					else {
						startTime = startTime.substr(14, 5);
						totalTime = totalTime.substr(14, 5);
					}
					$("#player-btn--" + vimeoObject.cgID + " div.timer").html("<span id='player-time--" + vimeoObject.cgID + "'>" + startTime + "</span> / " + totalTime);
				});
			});

			arrVimeoPlayerObjects = undefined;

		});

	}
</script>

<script>
	$(document).ready(function(){
		$("[data-toggle='tooltip']").tooltip(); 	
		$(".btn--loader").click(function() {
			loadButton($(this));
		});
		tb_init('a.thickbox, area.thickbox, input.thickbox');

         // fix for the non editable input in ckeditor (ex: URL...)
         $(".modal").removeAttr("tabindex");
		 // second hack to fix ckeditor links, especially the 'edit link' option
		 if ($.fn.modal && $.fn.modal.Constructor && $.fn.modal.Constructor.prototype) {
			 $.fn.modal.Constructor.prototype.enforceFocus = function() {
				modal_this = this
				$(document).on('focusin.modal', function (e) {
					if (modal_this.$element[0] !== e.target && !modal_this.$element.has(e.target).length
					&& !$(e.target.parentNode).hasClass('cke_dialog_ui_input_select')
					&& !$(e.target.parentNode).hasClass('cke_dialog_ui_input_text')
					&& !$(e.target).closest('.cg-le-image-dialog-overlay, .cg-le-raw-html-dialog-overlay').length
					// the calendar sits on <body>, not in the modal: iOS throws it off screen inside a -webkit-overflow-scrolling:touch scroller (CGPES-4806)
					&& !$(e.target).closest('#ui-datepicker-div').length) {
					modal_this.$element.focus()
					}
				})
			 };
		 }

         setupAjaxAccessibility();
	});
</script>

 <!-- AX != 1 -->

			</div><!--/.content -->
		</div><!--/.content-page -->
	</div><!--/.inner-shell -->

	
				<style>
					.outer-shell { display:flex; flex-direction:column; min-height: 100vh; }
					@-moz-document url-prefix() {
						.inner-shell  {flex:1; }
					}
					@media screen and (-webkit-min-device-pixel-ratio:0) {
						.inner-shell { flex:1; }
					}
					body.enlarged { min-height:initial; position:relative; }
					body.enlarged > .outer-shell { display:flex; flex-direction:column; min-height: 100vh; }
				</style>
				<footer class="footer__home">
					<div>
						
						<div id="footer-links" class="row footer__cont" style="background: transparent;">
							<div class="col-md-offset-1_5 col-md-3 col-sm-12 col-xs-12 text-center" style="padding-top:10px;">
								<img alt="TartanConnect Website Logo" src="/upload/tepper/2022/image_upload_4003688__Test_928135621.png" style="background-color:#f9f8f7;border-radius:5px;padding:5px;max-width:140px;max-height:50px;">
							</div>
							<div class="text-xs-center text-sm-left text-md-left col-md-3 col-sm-6 col-xs-12" style="display:flex;padding: 10px 10px;">
								<div style="margin:auto" role="group" aria-label="Contact information.">
									<h2 class="footer__home--title" style="margin-top: 0; margin-bottom: 10px;">Contact</h2>
									<span>TartanConnect</span><br>
									<span style="line-height:1.7">5000 Forbes Avenue<br>Carnegie Mellon University<br>Pittsburgh, PA 15213<br>United States</span><br>
									
									<a class="a-footer-contact-links" href="mailto:[email protected]" aria-describedby="desc--opens-email-client" aria-label="Email [email protected] for general inquiries.">[email protected]</a><br>
									
								</div>
							</div>
							<div class="text-xs-center text-sm-left text-md-left col-md-3 col-sm-6 col-xs-12" style="display:flex;vertical-align:top;padding: 10px 10px;">
								<div style="margin:auto" role="group" aria-label="Links">
									<h2 class="footer__home--title" style="margin-top: 0; margin-bottom: 10px;">Links</h2>
									<a class="a-footer-contact-links" href="/home_login">Home</a><br>
									
										<a class="a-footer-contact-links" href="/home/groups/">Groups</a><br>
									
										<a class="a-footer-contact-links" href="/home/events/">Events</a><br>
									
										<a class="a-footer-contact-links" href="https://www.cmu.edu/tepper/">Terms of Service</a><br>
									
										<a class="a-footer-contact-links" href="https://www.cmu.edu/tepper/privacy-policy/index.html">Privacy Policy</a><br>
									
                                    <a class="a-footer-contact-links" target="_blank" href="https://helpcenter.readyeducation.com/migration/knowledge" aria-describedby="desc--new-tab">Support Center</a>
								</div>
							</div>
							
						</div>
						<div class="row" style="padding:15px 20px 0 20px;border-top:1px solid #5a5a5a;margin-top: 10px;" role="group" aria-label="Footer Bar Links">
							<div class="col-sm-6 col-xs-12 text-xs-center text-sm-left"></div>
							<div class="col-sm-6 col-xs-12 text-xs-center text-sm-right">
								<a class="a-footer-contact-links" href="https://www.readyeducation.com/">&copy;2026 Ready Education</a>
							</div>
						</div>
					</div>
				</footer>
			

	<script type="text/javascript" src="/js/jquery-migrate-1.2.1.js"></script>

	<!-- THICKBOX -->
	<script src="/js/thickbox/thickbox.js"></script>

    <script type="text/javascript" src="/static/js/metisMenuCustom.js?v=1"></script>
    <script type="text/javascript" src="/static/js/jquery.slimscroll.js"></script> 
    <!--<link href="/static/css/scrollbar.css" rel="stylesheet">
    <script type="text/javascript" src="/static/js/scrollbar.js"></script>-->

	<script type="text/javascript">function $$(strId) { return document.getElementById(strId); }</script>
	<script type="text/javascript" src="/static/plugins/clamp/clamp.min.js"></script>
    <script type="text/javascript" src="/static/js/core.js"></script>
    <script type="text/javascript" src="/static/js/menu.js"></script>
    <script type="text/javascript" src="/static/js/routing.js"></script>


	
		<script type="text/javascript">$.ajaxSetup({cache:true})</script>
	

	<!-- @TODO: This is for jPrompt. We might to see if an update is available or give it a better style -->
	
	    <link href="/js/jquery-alerts/jquery.alerts.css" rel="stylesheet" type="text/css">
	    <script src="/js/jquery-alerts/jquery.alerts.js" type="text/javascript"></script>
	

	<!-- @TODO: Check if used : put directly on /r and student_password-->
	
	    <script>
	        
	    </script>
	

	<!-- Google Analytics -->
	<script>
	var _customTask = function() {
	  return function(model){
	    var piiRegex = [
	    	{ name: 'Email', regex: /.{4}@.{4}/g},
	       	{ name: 'Phone_Number', regex: /^(\+|\d)[0-9]{7,16}$/g},
	       	{ name: 'SSN', regex: /^\d{3}-\d{2}-\d{4}$}/g},
	       	{ name: 'Address', regex: /^\d+\s[A-z]+\s[A-z]+/g}];

	    var globalSendTaskName = '_' + model.get('trackingId') + '_sendHitTask';

	    // Fetch reference to the original sendHitTask
	    var originalSendTask = window[globalSendTaskName] = window[globalSendTaskName] || model.get('sendHitTask');
	    var i, hitPayload, parts, val;

	    // Overwrite sendHitTask with PII purger
	    model.set('sendHitTask', function(sendModel) {

	      hitPayload = sendModel.get('hitPayload').split('&');

	      for (i = 0; i < hitPayload.length; i++) {
	        parts = hitPayload[i].split('=');

	        // Double-decode, to account for web server encode + analytics.js encode
	        try {
	          val = decodeURIComponent(decodeURIComponent(parts[1]));
	        } catch(e) {
	          val = decodeURIComponent(parts[1]);
	        }

	        piiRegex.forEach(function(pii) {
	          val = val.replace(pii.regex, '[REDACTED ' + pii.name + ']');
	        });

	        parts[1] = encodeURIComponent(val);
	        hitPayload[i] = parts.join('=');
	      }

	      sendModel.set('hitPayload', hitPayload.join('&'), true);
	      originalSendTask(sendModel);
	    });
	  };
	}
	</script>

	
        <!-- GA4 implementation -->
        <script async src='https://www.googletagmanager.com/gtag/js?id=UA-4037554-3'></script>
        <script>
            window.dataLayer = window.dataLayer || [];
            function gtag(){dataLayer.push(arguments);}
            gtag('js', new Date());
			gtag('config', 'UA-4037554-3', {
				'send_page_view': true,
				'name': 'school',
				custom_map: {
				'dimension1': 'customTask'
				}
			});
			gtag('event', 'page_view', { customTask: _customTask() });
        </script>
    
	<!-- End Google Analytics -->

	

    <!-- Help -->
	
    <!-- End Help -->

	<!-- A11Y Descriptions -->
	<div id="a11y-description-blocks" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0;">
		<div id="desc--archive-record">Archived records can be found by switching the status filter from Active to Archived.</div>
		<div id="desc--auto-submit">Auto submit on change.</div>
		<div id="desc--changing-end-time">Note: changing the start time may automatically update other time fields on the page</div>
		<div id="desc--changing-start-time">Note: changing the end time may automatically update other time fields on the page</div>
		<div id="desc--changing-timezone">Note: changing the timezone may automatically update other time fields on the page</div>
		<div id="desc--chat">Chat</div>
		<div id="desc--club-website">Open the group website in a new tab.</div>
		<div id="desc--delete-cannot-be-undone">This action permanently removes the record and cannot be undone.</div>
		<div id="desc--download">Download</div>
		<div id="desc--drag-drop">Press Enter or Space to grab or drop items, arrow keys to move, escape to restore original position, and Ctrl plus Enter or Space to add items to top of active menu.</div>
		<div id="desc--duplicate-record-with-copy">Creates a duplicate record and adds COPY to the title in parentheses.</div>
		<div id="desc--edit-delete-options">Enables edit and delete options</div>
		<div id="desc--escape-to-exit-dropdown">Press escape to collapse and exit the dropdown.</div>
		<div id="desc--expandable-sub-menu">Expandable sub-menu.</div>
		<div id="desc--immediate-action-reload">This will take immediate action and reload the page.</div>
		<div id="desc--making-selection-auto-save">Making a selection will automatically save the new status.</div>
		<div id="desc--making-selection-auto-save-tag">Making a selection will automatically add the tag.</div>
		<div id="desc--new-tab">New tab</div>
		<div id="desc--opens-email-builder">Opens the email builder for the selected groups.</div>
		<div id="desc--opens-email-client">Opens the default email client.</div>
		<div id="desc--paste-emails">Paste emails in the text box separated by a line or a comma.</div>
		<div id="desc--reload-page-filter-by">Reloads page and filters by this entry</div>
		<div id="desc--no-delete--group-registration">This checklist cannot be deleted because it is used for a Group Registration or Group Re-Registration approval process.</div>
		<div id="desc--selecting-will-reload-page">Changing the selection will reload the page</div>
		<div id="desc--selecting-will-update-form">Changing the selection will update the form</div>
		<div id="desc--selecting-will-update-page">Changing the selection will update the page</div>
		<div id="desc--selecting-will-update-row">Changing the selection will update the row</div>
		<div id="desc--slider-next">Click to get the next slides then shift-tab back to the slide deck.</div>
		<div id="desc--slider-prev">Click to get the previous slides then tab forward.</div>
		<div id="desc--stop-following">Stop following</div>
		<div id="desc--unarchive-record">Moves this record back into the Active status.</div>
		<div id="desc--use-arrow-keys">Use arrow keys</div>
		<div id="desc--video-conference-link">Video conferencing link, new tab.</div>
		<div id="desc--view-my-calendar">View my entire calendar or schedule.</div>
		<div id="desc--view-profile">Opens member profile</div>
		<div id="desc--you-are-attending-event">You are attending this event.</div>
	</div>

	<script>
		const messagesToAnnounce = ["#div-top-warning-msg", "#div-top-ok-msg", "#div-top-info-msg"]
			.map(s => document.querySelector(`${s} > span[role="status"]`))
			.filter(Boolean)
			.map(node => node.innerText);
		if(messagesToAnnounce.length > 0){
			a11yAnnounceToScreenReader(messagesToAnnounce.join(". "))
		}
	</script>

</body>

 <!-- END AX != 1 -->

	<style>

		/* acc-keyboard-mode (OFF) - Default outline on :focus (none) */
		body:not(.acc-keyboard-mode) :focus { outline: none; }
		body:not(.acc-keyboard-mode) a:focus { outline: none; }

        body:not(.acc-keyboard-mode) button.close:focus { outline: none; }

		body:not(.acc-keyboard-mode) .button:focus { outline: none; }
		body:not(.acc-keyboard-mode) .button.focus { outline: none; }

		body:not(.acc-keyboard-mode) .btn.active.focus,
        body:not(.acc-keyboard-mode) .btn.active:focus,
        body:not(.acc-keyboard-mode) .btn.focus,
        body:not(.acc-keyboard-mode) .btn:active.focus,
        body:not(.acc-keyboard-mode) .btn:active:focus,
        body:not(.acc-keyboard-mode) .btn:focus { outline: none; }

		body:not(.acc-keyboard-mode) .dropdown-toggle:focus { outline: none; }
		#header__btn-cont--manage:focus, #header__btn-cont--manage:focus-within { outline: none; }

		/* no outline/focus on the following (various reasons including hover style on focus, other focus styles applied, etc.) */
		body:not(.acc-keyboard-mode) h2:focus { outline: none; outline-offset: 0px; border: none; }
		/* .page__header--btns .btn:focus { outline: none !important; outline-offset: 0px !important; } */
		/* a.btn--rounded:focus { outline: none !important; outline-offset: 0px !important; } */

		/* acc-keyboard-mode (ON) - Default outline on :focus (2px solid #000000) */
		.acc-keyboard-mode a:focus {
			outline: 2px solid #000000;
			outline-offset: 2px;
		}

	</style>

    <!-- should always be last stylesheet loaded -->
    <link href="/static/css/accessibility.css?v=20251008.3" rel="stylesheet" />

</html>


Latest requests

# Url Url Source Date
1 https://tartanconnect.cmu.edu/home… 2026-10-17 12:32:47
2 https://drbo8b.b-cdn.net/research/… 2026-10-17 12:32:46
3 https://ya-seo-34.fra1.digitalocea… 2026-10-17 12:32:45
4 https://account.windy.com/login?pu… 2026-10-17 12:32:45
5 http://preview.rlu.ru/4zzJE 2026-10-17 12:32:45
6 https://willysforsale.com/author/h… 2026-10-17 12:32:45
7 https://m.vk.com/topic-202740069_4… 2026-10-17 12:32:44
8 https://digi5.sgp1.digitaloceanspa… 2026-10-17 12:32:44
9 https://catering10.b-cdn.net/about/ 2026-10-17 12:32:44
10 https://lumberslime13.werite.net/1… 2026-10-17 12:32:43
11 https://sporviz.com/nfl/arrests-si… 2026-10-17 12:32:41
12 https://www.texarkanatwins.com/%25… 2026-10-17 12:32:41
13 https://www.thebolditalic.com/?gi=… 2026-10-17 12:32:35
14 https://badcreditguarantorloans748… 2026-10-17 12:32:30
15 https://www.texarkanatwins.com/%25… 2026-10-17 12:32:26
16 https://www.thebolditalic.com/?gi=… 2026-10-17 12:32:25
17 https://www.thebolditalic.com/?gi=… 2026-10-17 12:32:20
18 https://auth.mediacorp.sg/u/login?… 2026-10-17 12:32:18
19 https://auth.mediacorp.sg/u/login?… 2026-10-17 12:32:17
20 https://www.texarkanatwins.com/%25… 2026-10-17 12:32:14