CINXE.COM

Google Cloud Digital Leaders Forum: Using Aggregated Metrics to Navigate COVID-19

<!DOCTYPE html> <html> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://cloudonair.withgoogle.com/events/leaders-forum-covid-national-response-portal","20210817030547","https://web.archive.org/","web","/_static/", "1629169547"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <link rel="icon" href="/web/20210817030547im_/https://cloudonair.withgoogle.com/images/shared/platform/favicon.ico"/> <meta name="twitter:card" content="summary"/> <title>Google Cloud Digital Leaders Forum: Using Aggregated Metrics to Navigate COVID-19</title> <meta property="og:title" content="Google Cloud Digital Leaders Forum: Using Aggregated Metrics to Navigate COVID-19"/> <meta name="description" content="<div>With the volume of pandemic-related data being generated, policy and healthcare organization leaders now have a way to view aggregated information that will tackle current and future needs. Join experts and industry leaders to explore the National Response Portal, powered by Google Cloud. See how this technology can empower healthcare organizations with actionable insights that will make a lasting impact.<br><br><em>Original air date: July 9, 2020</em></div>"/> <meta property="og:description" content="<div>With the volume of pandemic-related data being generated, policy and healthcare organization leaders now have a way to view aggregated information that will tackle current and future needs. Join experts and industry leaders to explore the National Response Portal, powered by Google Cloud. See how this technology can empower healthcare organizations with actionable insights that will make a lasting impact.<br><br><em>Original air date: July 9, 2020</em></div>"/> <meta property="og:image" content="https://web.archive.org/web/20210817030547im_/https://cloudonair.withgoogle.com/api/assets?path=/gs/gweb-gc-gather-production.appspot.com/files/AAANsUm8gqMbu0b6bljCEqa2b0xKNJr1v5Af5QnfHpo1bmrZWym85akY07Jlewj2z6aehyWr77GN80NAjfalac556bsj6Crw_Q.n0wV00oZGnjHuToR"/> <meta name="robots" content="noindex,nofollow"/> <meta charset="utf-8"/> <meta content="initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no, width=device-width" name="viewport"/> <link href="//web.archive.org/web/20210817030547cs_/https://fonts.googleapis.com/css?family=Roboto+Mono|Google+Sans:400,500,600,700|Roboto:100,200,300,400,500,600,700&amp;lang=en" rel="stylesheet"/> <link href="//web.archive.org/web/20210817030547cs_/https://fonts.googleapis.com/icon?family=Material+Icons+Extended" rel="stylesheet"/> <base href="/web/20210817030547/https://cloudonair.withgoogle.com/"/> <style> html.show-gated-signin, .show-gated-signin body, html.show-gated-signout, .show-gated-signout body, html.show-user-upgrade-error, .show-user-upgrade-error body, html.show-private-error, .show-private-error body, html.show-general-error, .show-general-error body, html.show-offline-error, .show-offline-error body, html.show-cookie-error, .show-cookie-error body, html.show-auth-error, .show-auth-error body { margin: 0px; height: 100%; min-width: 100%; display: flex; } .show-gated-signin #app, .show-gated-signin app-root, .show-gated-signout #app, .show-gated-signout app-root, .show-user-upgrade-error #app, .show-user-upgrade-error app-root, .show-private-error #app, .show-private-error app-root, .show-general-error #app, .show-general-error app-root, .show-offline-error #app, .show-offline-error app-root, .show-auth-error #app, .show-auth-error app-root, .show-cookie-error #app, .show-cookie-error app-root { display: none; } .boxed-takeover { min-height: 100%; min-width: 100%; background-color: #fafafa; color: #212121; font-family: 'Roboto', sans-serif; display: none; align-items: flex-start; } .show-gated-signin #gated-signin, .show-gated-signout #gated-signout, .show-user-upgrade-error #user-upgrade-error, .show-private-error #private-error, .show-general-error #general-error, .show-offline-error #offline-error, .show-cookie-error #cookie-error, .show-auth-error #auth-error { display: flex; } .boxed-takeover .box { box-sizing: border-box; max-width: 450px; box-shadow: 0 0 4px rgba(0, 0, 0, 0.3); text-align: center; padding: 40px; background-color: #fff; margin: auto; } .boxed-takeover .box.auth-box { width: calc(100% - 240px); max-width: 600px; min-width: 320px; padding-bottom: 24px; transition: padding 0.5s ease-in-out; } .boxed-takeover h1 { font-weight: 400; font-size: 28px; line-height: 34px; margin: 0; } .boxed-takeover p { font-weight: 300; margin: 10px 0 40px 0; font-size: 16px; line-height: 22px; } #private-error.boxed-takeover .box div { font-size: 16px; font-weight: 300; line-height: 22px; margin: 10px 0 40px 0; } .boxed-takeover input { font-size: 16px; padding: 10px 14px; line-height: 22px; font-weight: 400; margin-top: 10px; border: 1px solid #000; } .boxed-takeover button { cursor: pointer; width: 100%; background-color: #3b78e7; color: #fff; outline: none !important; font-size: 16px; padding: 10px 14px; line-height: 22px; font-weight: 400; margin-top: 10px; border: 1px solid #3b78e7; } .boxed-takeover button:hover { background-color: #000; border-color: #000; } .boxed-takeover button.outline { background-color: inherit; color: #1a73e8; border-color: #1a73e8; } .boxed-takeover button.outline:hover { color: #1a73e8; } .boxed-takeover button.auth { border-radius: 4px; font-family: 'Google Sans', 'Arial', sans-serif; } .boxed-takeover button.auth.blue { border-color: #1a73e8; background-color: #1a73e8; padding: 12px 24px; width: auto; } .boxed-takeover button.auth.blue:disabled, .boxed-takeover button.auth.blue:disabled:hover { color: #5f6368; background-color: #dbdce0; border-color: #dbdce0; } .boxed-takeover button.auth.blue:hover, .sign-in-buttons button.auth.blue:hover { border-color: #1a73e8; background-color: #1a73e8; } .boxed-takeover .sign-in-buttons { display: flex; align-items: center; justify-content: flex-end; } .boxed-takeover .sign-in-buttons button { margin: 0px; } .boxed-takeover .sign-in-buttons a { padding-right: 30px; } .boxed-takeover .input-container { display: flex; flex-wrap: wrap; position: relative; } .boxed-takeover .input-container input { border: 2px solid #1a73e8; border-radius: 4px; width: 100%; } .boxed-takeover .input-container label { position: absolute; font-size: 12px; top: 4px; padding: 0 4px; left: 22px; background-color: #ffffff; color: #1a73e8; } .boxed-takeover .box .input-pair { display: flex; flex-wrap: wrap; justify-content: space-between; } .boxed-takeover .input-pair .input-container { flex: 0 1 49%; } .boxed-takeover .error-container { text-align: left; color: #f44336; font-size: 10.5px; font-family: 'Roboto', sans-serif; display: none; align-items: center; font-weight: 500; margin-top: 0.5em; } .boxed-takeover .error-container { display: flex; } .boxed-takeover .error-container i, .boxed-takeover .error-container i { font-size: 15px; padding-right: 5.5px; text-align: left; } .boxed-takeover .privacy-policy { margin-top: 74px; text-align: center; } .boxed-takeover .privacy-policy .privacy-link { color: #5f6368; font-family: 'Roboto', sans-serif; font-size: 14px; line-height: 22px; text-decoration: none; } #private-error button { padding-bottom: 10px; } #private-error .box { padding-bottom: 40px; } .sign-in-buttons .auth.link { color: #1a73e8; justify-content: center; font-family: 'Google Sans', 'Arial', sans-serif; cursor: pointer; } .sign-in-buttons .auth.right-anchor { margin-left: auto; } .error-takeover { background-color: #fdf7e3; border-radius: 4px; padding: 25px 51px 33px; margin-bottom: 25px; } .error-takeover div { display: flex; align-items: center; padding-bottom: 8px; } .error-takeover div h2 { font-size: 20px; color: #202124; font-family: 'Google Sans', 'Arial', sans-serif; margin: 0; } .error-takeover div i { font-size: 24px; color: #e79c37; padding-right: 22px; } .error-takeover .error-message { text-align: left; margin: 0; } #enterEmail h1 { margin-bottom: 87px; } #signinMethod button, #accountCreationConfirmation button { width: 100%; max-width: 360px; } #accountCreationConfirmation #confirmation-resent { margin: 20px 0 0; } #enterEmail .input-container { margin-bottom: calc(74px - 1.25em); } #enterPassword .input-container { margin-bottom: 73px; } #enterPassword .email { color: #202124; font-family: 'Google Sans', 'Arial', sans-serif; margin-bottom: 43px; } #createAccount h1 { margin-bottom: 75px; } #createAccount .input-container { margin-bottom: 35px; } #createAccount .input-pair { margin-bottom: 68px; } #createAccount .input-pair .input-container { margin-bottom: 0; } @media (max-width: 768px) { #createAccount .input-pair { margin-bottom: 0px; } #createAccount .input-pair .input-container { flex: 0 1 100%; margin-bottom: 35px; } } #hasGoogleAccount h1 { margin-bottom: 58px; } #hasGoogleAccount p { text-align: left; margin-bottom: 120px; } #resetPassword h1, #postReset h1 { margin-bottom: 44px; } #resetPassword p { text-align: left; margin-bottom: 102px; } #postReset p { text-align: left; margin-bottom: 120px; } .email-text { font-weight: 700; } /* loading animation */ .loading-ball-anim { display: flex; flex: 1; justify-content: center; align-items: center; height: 100vh; opacity: 0; transition: opacity 1s; } .loading-ball-anim.start { opacity: 1; } .loading-ball-anim .ball { width: 22px; height: 22px; border-radius: 11px; margin: 0 10px; animation: 2s bounce ease infinite; } @keyframes bounce { 50% { transform: translateY(25px); } } /* cookie-bar */ #cookie-bar { box-sizing: border-box; position: fixed; width: 100vw; min-height: 65px; bottom: 0; left: 0; background: #fff; padding: 0 25px; display: flex; font-size: 14px; justify-content: center; align-items: center; z-index: 999998; border-top: 1px solid #dadce0; } .hidden { display: none !important; } @media screen and (max-width: 800px) { #cookie-bar { flex-direction: column; } } #cookie-bar span { padding-right: 20px; font-family: 'Roboto', sans-serif; font-weight: normal; } @media screen and (max-width: 800px) { #cookie-bar span { margin-bottom: 25px; margin-top: 25px; padding-right: 0; } } #cookie-bar span a { color: #1a73e8; } #cookie-bar .buttons { margin-left: auto; display: flex; align-items: center; font-weight: 500; font-family: 'Google Sans', 'Arial', sans-serif; } @media screen and (max-width: 800px) { #cookie-bar .buttons { margin-bottom: 25px; } } #cookie-bar .buttons a { color: #1a73e8; margin-right: 25px; display: inline-flex; align-items: center; white-space: nowrap; text-decoration: none; } #cookie-bar .buttons button { background: #f1f3f4 !important; font-size: 14px; font-weight: 500; max-height: 50px; line-height: normal; align-self: center; border: 2px solid #fff; padding: 14px 31px; white-space: nowrap; color: #000; text-transform: none; } #cookie-bar .buttons button:hover { color: #1a73e8; } body.unsupported { overflow: hidden; } #bad-browser { position: fixed; } #bad-browser-shade, #bad-browser { bottom: 0; left: 0; position: fixed; right: 0; top: 0; } #bad-browser-shade, #bad-browser-text, #bad-browser { z-index: 999999; } #bad-browser-shade { background: #000; opacity: 0.4; } #bad-browser .material-icons-extended { color: #f9bb2d; font-size: 36px; } #bad-browser h2 { font-size: 42px; font-weight: 700; margin-bottom: 32px; padding: 16px 32px 0; font-family: 'Google Sans', 'Arial', sans-serif; } #bad-browser-text { background: #fff; border-radius: 8px; left: 50%; margin-left: -250px; margin-top: -250px; padding: 40px 40px 56px; position: relative; text-align: center; top: 50%; width: 500px; } @media only screen and (max-width: 600px) { .boxed-takeover .box { box-shadow: none; background-color: inherit; padding: 20px; } .boxed-takeover .box.auth-box { width: 100%; max-width: unset; min-width: unset; } } </style> <script src="//web.archive.org/web/20210817030547js_/https://www.google.com/js/gweb/analytics/autotrack.js"></script> <script src="//web.archive.org/web/20210817030547js_/https://www.gstatic.com/firebasejs/7.14.2/firebase-app.js"></script> <script src="//web.archive.org/web/20210817030547js_/https://www.gstatic.com/firebasejs/7.14.2/firebase-auth.js"></script> <script> if (window['gweb']) { window.tracker = new gweb.analytics.AutoTrack({ profile: 'UA-117498501-1', cookiePath: '/' }); } window.CONFIG = { protocol: "https", default_instance: "gatherplatform.withgoogle.com", default_language: "en", is_local_dev: false, gated: false, devMode: false, firebase: { apiKey: 'AIzaSyC1a0zObeFwLX6lp3psqKSqeSvyTJl-2Xg', authDomain: 'gweb-gc-gather-production.firebaseapp.com', databaseURL: 'https://web.archive.org/web/20210817030547/https://gweb-gc-gather-production.firebaseio.com', projectId: 'gweb-gc-gather-production', storageBucket: 'gweb-gc-gather-production.appspot.com', messagingSenderId: '122167620338', appId: '1:122167620338:web:54e2dc54572219490bd66b', }, google_maps_api_key: "AIzaSyCztX6xvkUgIs3798bCXyhJQaeit0gYkgo", template: "SINGLE_SESSION", instance: "cloudonair.withgoogle.com", templates: { angularjs: { instance: [ "DEFAULT", ], event: [ "CHROME_2018", "CLOUD_SUMMIT_2018", ] }, instance: [ "DEFAULT", "DEVFEST", "CLOUD", ], event: [ "DEFAULT", "CLOUD_2017", "CLOUD_2018", "CLOUD_SUMMIT_2018", "CLOUD_TRANSFORM_2018", "CLOUD_DATA_AI_2018", "DEVFEST_2018", "CHROME_2018", "CLOUD_Q1_2019", "GLOBAL_EVENTS_GML_2019", "SINGLE_SESSION", ] } } // Initialize Firebase window.firebase.initializeApp(window.CONFIG.firebase); </script> </head> <body> <!-- framebuster code starts here --> <style> plaintext { display: none; } </style> <script> (function() { try { var win = this; while ('<plaintext>') { if (win.parent == win) { break; } eval('win.frameElement.src').substr(0, 1); win = win.parent; } if (win.frameElement != null) { throw 'busted'; } document.write('\x3Cxmp style\x3Ddisplay:none\x3E'); } catch (e) { try { if (!open(location, '_top')) { alert('this content cant be framed'); } top.location = location; } catch (e) {} } })(); </script> <!-- do not remove the plaintext nor xmp tags --> <plaintext/> <xmp>.</xmp> <!-- framebuster code ends here --> <!-- for ng4 --> <app-root> <div class="loading-ball-anim"> <div class="ball" style="background-color:#4285F5"></div> <div class="ball" style="background-color:#EA4436;animation-delay:.25s"></div> <div class="ball" style="background-color:#FBBD06;animation-delay:.5s"></div> <div class="ball" style="background-color:#34A952;animation-delay:.75s"></div> </div> </app-root> <script> setTimeout(function() { document.querySelector('.loading-ball-anim').classList.add('start'); }, 100); </script> <!-- for angularJS --> <div id="app" class="loading"> <div class="main-ctrl" ng-controller="main as mainCtrl"> <ui-view class="main-view-container"></ui-view> </div> </div> <div id="gated-signin" class="boxed-takeover"> <div id="signinMethod" class="box auth-box"> <h1>Welcome!</h1> <p>Please sign in to get started.</p> <button class="auth blue" onclick="signIn()"> Continue with Google </button> <button onclick="signInStep('enterEmail')" class="outline auth"> Continue with email </button> <div class="privacy-policy"> <a class="privacy-link" target="_blank" href="https://web.archive.org/web/20210817030547/https://policies.google.com/privacy">Privacy Policy</a> </div> </div> <div id="enterEmail" class="box hidden auth-box"> <h1>Sign in with email</h1> <div class="input-container"> <input type="email" id="emailAddress"/> <label>Enter email:</label> <div class="error-container hidden" id="invalid-email"> <i class="material-icons-extended">info</i> <span>Enter a valid email address</span> </div> </div> <div class="sign-in-buttons"> <div class="auth link"> <a onclick="signInStep('signinMethod')"> Back </a> </div> <button class="auth blue" onclick="checkEmail()">Next</button> </div> <div class="privacy-policy"> <a class="privacy-link" target="_blank" href="https://web.archive.org/web/20210817030547/https://policies.google.com/privacy">Privacy Policy</a> </div> </div> <div id="hasGoogleAccount" class="box hidden auth-box"> <h1>Sign in with Google</h1> <p> The email you entered is associated with a Google account. Sign in with Google to continue. </p> <div class="sign-in-buttons"> <div class="auth link"> <a onclick="signInStep('enterEmail')"> Back </a> </div> <button class="auth blue" onclick="signIn()"> Sign in with Google </button> </div> <div class="privacy-policy"> <a class="privacy-link" target="_blank" href="https://web.archive.org/web/20210817030547/https://policies.google.com/privacy">Privacy Policy</a> </div> </div> <div id="enterPassword" class="box hidden auth-box"> <form> <h1>Sign in</h1> <p id="loginEmail" class="email"></p> <div class="input-container" id="password-container"> <label>Password:</label> <input type="password" autocomplete="current-password" id="loginPassword" required/> <div id="no-password" class="error-container hidden"> <i class="material-icons-extended">info</i> <span>Enter password</span> </div> <div id="invalid-password" class="error-container hidden"> <i class="material-icons-extended">info</i> <span>Wrong password. Try again or click Forgot password to reset it.</span> </div> </div> <div class="error-takeover hidden" id="login-retry-limit"> <div> <i class="material-icons-extended">report_problem</i> <h2>Too many failed attempts</h2> </div> <p class="error-message"> Unavailable because of too many failed attempts to sign in. Try again in a few minutes. </p> </div> <div class="sign-in-buttons"> <div class="auth link"> <a onclick="signInStep('resetPassword')"> Forgot Password? </a> </div> <div class="auth link right-anchor"> <a onclick="signInStep('enterEmail')"> Back </a> </div> <button type="button" class="auth blue" onclick="signInEmailPassword()" id="password-sign-in"> Next </button> </div> <div class="privacy-policy"> <a class="privacy-link" target="_blank" href="https://web.archive.org/web/20210817030547/https://policies.google.com/privacy">Privacy Policy</a> </div> </form> </div> <div id="createAccount" class="box auth-box hidden"> <form> <h1>Create Account</h1> <div class="input-container"> <label>Email Address:</label> <input type="email" id="accountEmail" autocomplete="new-username" disabled/> <div id="email-in-use" class="error-container hidden"> <i class="material-icons-extended">info</i> <span>This email is already in use. Please go back and select a different email</span> </div> </div> <div class="input-container"> <label>Password:</label> <input type="password" autocomplete="new-password" id="accountPassword"/> <div id="create-account-no-password" class="error-container hidden"> <i class="material-icons-extended">info</i> <span>Enter password</span> </div> <div id="weak-password" class="error-container hidden"> <i class="material-icons-extended">info</i> <span>Use 6 or more characters with a mix of letters, numbers &amp; symbols</span> </div> </div> <div class="input-pair"> <div class="input-container"> <label>First Name:</label> <input type="text" id="accountFirstName"/> <div id="no-first-name" class="error-container hidden"> <i class="material-icons-extended">info</i> <span>Enter first name</span> </div> </div> <div class="input-container"> <label>Last Name:</label> <input type="text" id="accountLastName"/> <div id="no-last-name" class="error-container hidden"> <i class="material-icons-extended">info</i> <span>Enter last name</span> </div> </div> </div> <div class="sign-in-buttons"> <div class="auth link"> <a onclick="signInStep('enterEmail')"> Back </a> </div> <button type="button" class="auth blue" onclick="createAccount()">Next</button> </div> <div class="privacy-policy"> <a class="privacy-link" target="_blank" href="https://web.archive.org/web/20210817030547/https://policies.google.com/privacy">Privacy Policy</a> </div> </form> </div> <div id="accountCreationConfirmation" class="box auth-box hidden"> <p> An email has been sent to <span id="emailConfirmation" class="email-text"></span>. Click the confirmation link in that email to verify your account. </p> <button class="auth blue" onclick="resendAccountConfirmation()"> Resend email </button> <button class="auth blue" onclick="accountCreationComplete()"> Done </button> <p id="confirmation-resent" class="hidden"> Confirmation email resent </p> <div class="privacy-policy"> <a class="privacy-link" target="_blank" href="https://web.archive.org/web/20210817030547/https://policies.google.com/privacy">Privacy Policy</a> </div> </div> <div id="resetPassword" class="box auth-box hidden"> <h1>Reset password</h1> <p> If you鈥檝e forgotten your password, you can request to have an email sent with a link to create a new one. </p> <div class="sign-in-buttons"> <div class="auth link"> <a onclick="signInStep('enterPassword')"> Back </a> </div> <button class="auth blue" onclick="resetPassword()"> Reset Password </button> </div> <div class="privacy-policy"> <a class="privacy-link" target="_blank" href="https://web.archive.org/web/20210817030547/https://policies.google.com/privacy">Privacy Policy</a> </div> </div> <div id="postReset" class="box auth-box hidden"> <h1>Reset password</h1> <p> We've sent an email to <span id="email-text" class="email-text"></span>. Follow the instructions in that email to reset your password. </p> <div class="sign-in-buttons"> <div class="auth link"> <a onclick="signInStep('signinMethod')"> Back </a> </div> </div> <div class="privacy-policy"> <a class="privacy-link" target="_blank" href="https://web.archive.org/web/20210817030547/https://policies.google.com/privacy">Privacy Policy</a> </div> </div> </div> <div id="gated-signout" class="boxed-takeover"> <div class="box"> <h1>Forbidden</h1> <p>Sorry, you do not have permission to access this resource.</p> <button onclick="signOut()">Sign out</button> </div> </div> <div id="user-upgrade-error" class="boxed-takeover"> <div class="box"> <h1>User account conflict</h1> <p>Sorry, the user account you are using is now linked to Google. Please sign in with Google to use this account.</p> <button onclick="signOut()">Sign out</button> </div> </div> <div id="private-error" class="boxed-takeover"> <div class="box"> <div class="formatted-html"><h1>Forbidden</h1><p>You do not have permission to access this private event</p></div> <button onclick="signOut()">Sign out</button> </div> </div> <div id="general-error" class="boxed-takeover"> <div class="box"> <h1>We'll be right back</h1> <p> We are having temporary difficulties, and are working to fix the issue. </p> </div> </div> <div id="cookie-error" class="boxed-takeover"> <div class="box"> <h1>Cookies are disabled</h1> <p> Cookies are required in order to sign in. Please enable cookies in your browser's settings and disable any adblockers. Then refresh this page. </p> </div> </div> <div id="auth-error" class="boxed-takeover"> <div class="box"> <h1>Error authenticating user</h1> <p> There was an error during authentication. Please refresh to try again. </p> <p> If this issue persists, please <a href="javascript:signOut()">sign out</a> and sign back in after reloading. </p> </div> </div> <div id="offline-error" class="boxed-takeover"> <div class="box"> <h1>You're currently offline</h1> <p> Refresh the page when your connection is restored to return to the app. </p> </div> </div> <script defer src="/web/20210817030547js_/https://cloudonair.withgoogle.com/scripts/app.preload.674ea286.js"></script> <script> window.templateBundleMap = { platform: { "default": { script: "/scripts/app.platform.default.js", style: "/styles/app.platform.default.css", }, "devfest": { script: "/scripts/app.platform.devfest.00bccb14.js", style: "/styles/app.platform.devfest.9a069068.css", }, "cloud": { script: "/scripts/app.platform.cloud.8a89606e.js", style: "/styles/app.platform.cloud.63d95ec9.css", }, }, event: { "default": { script: "/scripts/app.event.default.3ce675ba.js", style: "/styles/app.event.default.f6e547ef.css", }, "cloud_2017": { script: "/scripts/app.event.cloud_2017.5febd0b9.js", style: "/styles/app.event.cloud_2017.cfad198e.css", }, "cloud_2018": { script: "/scripts/app.event.cloud_2018.930ab354.js", style: "/styles/app.event.cloud_2018.44d3e09a.css", }, "cloud_summit_2018": { script: "/scripts/app.event.cloud_summit_2018.f080cb43.js", style: "/styles/app.event.cloud_summit_2018.9619f661.css", }, "cloud_transform_2018": { script: "/scripts/app.event.cloud_transform_2018.6ee5ada5.js", style: "/styles/app.event.cloud_transform_2018.44d13652.css", }, "cloud_data_ai_2018": { script: "/scripts/app.event.cloud_data_ai_2018.8f89570b.js", style: "/styles/app.event.cloud_data_ai_2018.bf11eb73.css", }, "devfest_2018": { script: "/scripts/app.event.devfest_2018.015938b3.js", style: "/styles/app.event.devfest_2018.548da493.css", }, "chrome_2018": { script: "/scripts/app.event.chrome_2018.4b3ad9f0.js", style: "/styles/app.event.chrome_2018.2f6c3c2f.css", }, "cloud_q1_2019": { script: "/scripts/app.event.cloud_q1_2019.d97037eb.js", style: "/styles/app.event.cloud_q1_2019.d9069726.css", }, "global_events_gml_2019": { script: "/scripts/app.event.global_events_gml_2019.f72f0ebd.js", style: "/styles/app.event.global_events_gml_2019.fb6a40ff.css", }, "single_session": { script: "/scripts/app.event.single_session.1899dee8.js", style: "/styles/app.event.single_session.14af763a.css", }, }, angularJsDependencies: "/scripts/dependencies.3ee3557d.js" } </script> <!-- Google Tag Manager --> <noscript><iframe src="//web.archive.org/web/20210817030547if_/https://www.googletagmanager.com/ns.html?id=GTM-PNCS53" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script> (function(w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = '//web.archive.org/web/20210817030547/https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-PNCS53'); </script> <!-- End Google Tag Manager --> <noscript> <p style="margin:100px 6px;text-align:center;"> This app requires JavaScript <nobr>to function.</nobr><br/> Please enable javascript and reload <nobr>the page.</nobr> </p> </noscript> <div class="hidden" id="bad-browser"> <div id="bad-browser-shade"></div> <div id="bad-browser-text"> <span id="warning-icon"><i class="material-icons-extended">warning</i></span> <h2> Your browser<br/> is not supported </h2> <p> For the full experience, use Google Chrome, Firefox, Safari or Edge. </p> </div> </div> <div class="container hidden" id="cookie-bar"> <span>This site uses cookies from Google to deliver services and to analyze traffic</span> <div class="buttons"> <a href="https://web.archive.org/web/20210817030547/https://policies.google.com/technologies/cookies" rel="noopener" target="_blank">See details</a> <button class="confirm">OK, Got it</button> </div> </div> <script> // Show bad browser modal for IE and Opera browsers. Separated into // independent code block to prevent other script errors from blocking. // Internet Explorer 6-11 var isIE = !!document.documentMode; // Opera browser var isOpera = /(Opera|OPR\/)/g.test(window.navigator.userAgent); if (isIE || isOpera) { document.getElementById('bad-browser').className = ''; document.body.className += ' unsupported'; } </script> <script> var cookieBarState = false; try { cookieBarState = window.localStorage.getItem('cookiebar_state'); } catch (e) { console.log('Failed to load cookie bar state'); } if (!cookieBarState) { var cookieBarEl = document.querySelector('#cookie-bar'); if (cookieBarEl) { cookieBarEl.classList.remove('hidden'); var button = cookieBarEl.querySelector('.confirm'); function buttonClickHandler(event) { try { window.localStorage.setItem('cookiebar_state', 'True'); } catch (e) { console.log('Failed to save cookiebar state'); } var cookieBarEl = document.querySelector('#cookie-bar'); cookieBarEl.classList.add('hidden'); } button.addEventListener('click', buttonClickHandler); } } function hideTempElements() { const elementIdsToHide = [ 'invalid-password', 'invalid-email', 'no-password', 'email-in-use', 'weak-password', 'create-account-no-password', 'no-first-name', 'no-last-name', 'login-retry-limit', 'confirmation-resent', ]; elementIdsToHide.forEach(id => { document.getElementById(id).classList.add('hidden'); }); } function signInStep(stepName) { hideTempElements(); document .getElementById('password-container') .classList.remove('hidden'); document.getElementById('password-sign-in').disabled = false; [ 'signinMethod', 'enterEmail', 'hasGoogleAccount', 'enterPassword', 'createAccount', 'accountCreationConfirmation', 'resetPassword', 'postReset', ] .filter(elementId => elementId !== stepName) .forEach(elementId => document.getElementById(elementId).classList.add('hidden') ); document.getElementById(stepName).classList.remove('hidden'); } function checkEmail() { document.getElementById('invalid-email').classList.add('hidden'); const enteredEmail = document.getElementById('emailAddress').value; if (/^.*@google\.com$/i.test(enteredEmail)) { signInStep('hasGoogleAccount'); } else { const emailRegex = /.+@.+\..+/; if (!enteredEmail || !emailRegex.test(enteredEmail)) { document.getElementById('invalid-email').classList.remove('hidden'); return; } window.firebase .auth() .fetchSignInMethodsForEmail(enteredEmail) .then(signinOptions => { if (signinOptions.length === 0) { document.getElementById('accountEmail').value = enteredEmail; signInStep('createAccount'); } else if (signinOptions.includes('google.com')) { signInStep('hasGoogleAccount'); } else { document.getElementById( 'loginEmail' ).textContent = enteredEmail; signInStep('enterPassword'); } }) .catch(error => console.error(error)); } } function signInEmailPassword() { document.getElementById('invalid-password').classList.add('hidden'); document.getElementById('no-password').classList.add('hidden'); document.getElementById('password-sign-in').disabled = false; const password = document.getElementById('loginPassword').value; if (!password) { document.getElementById('no-password').classList.remove('hidden'); return; } window.firebase .auth() .signInWithEmailAndPassword( document.getElementById('loginEmail').textContent, document.getElementById('loginPassword').value ) .then(() => { window.location.reload(true); }) .catch(error => { if (error.code === 'auth/wrong-password') { document .getElementById('invalid-password') .classList.remove('hidden'); console.debug('wrong password'); } else if (error.code === 'auth/too-many-requests') { document .getElementById('password-container') .classList.add('hidden'); document .getElementById('login-retry-limit') .classList.remove('hidden'); document.getElementById('password-sign-in').disabled = true; } else { console.error(error); } }); } function createAccount() { hideTempElements(); const accountEmail = document.getElementById('accountEmail').value; const accountPassword = document .getElementById('accountPassword') .value.trim(); const accountFirstName = document .getElementById('accountFirstName') .value.trim(); const accountLastName = document .getElementById('accountLastName') .value.trim(); document.getElementById('accountPassword').value = accountPassword; document.getElementById('accountFirstName').value = accountFirstName; document.getElementById('accountLastName').value = accountLastName; if (!accountPassword) { document .getElementById('create-account-no-password') .classList.remove('hidden'); } if (!accountFirstName) { document.getElementById('no-first-name').classList.remove('hidden'); } if (!accountLastName) { document.getElementById('no-last-name').classList.remove('hidden'); } if (!accountPassword || !accountFirstName || !accountLastName) return; window.firebase .auth() .createUserWithEmailAndPassword(accountEmail, accountPassword) .then(resp => { resp.user.updateProfile({ displayName: `${accountFirstName} ${accountLastName}`, }); document.getElementById( 'emailConfirmation' ).textContent = accountEmail; sendAccountConfirmation({ url: window.location.href }); signInStep('accountCreationConfirmation'); }) .catch(error => { if (error.code === 'auth/weak-password') { document .getElementById('weak-password') .classList.remove('hidden'); } else if (error.code === 'auth/email-already-in-use') { document .getElementById('email-in-use') .classList.remove('hidden'); } else { console.error(error); } }); } function sendAccountConfirmation() { window.firebase.auth().currentUser.sendEmailVerification({ url: window.location.href }); } function resendAccountConfirmation() { window.firebase.auth().currentUser.sendEmailVerification({ url: window.location.href }); document .getElementById('confirmation-resent') .classList.remove('hidden'); } function accountCreationComplete() { location.reload(true); } function resetPassword() { const email = document.getElementById('loginEmail').textContent; window.firebase .auth() .sendPasswordResetEmail(email, { url: window.location.origin }) .then(() => { this.document.getElementById('email-text').textContent = email; this.signInStep('postReset'); }); } </script> </body> </html><!-- FILE ARCHIVED ON 03:05:47 Aug 17, 2021 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 08:54:34 Nov 26, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 6.457 exclusion.robots: 0.039 exclusion.robots.policy: 0.03 esindex: 0.01 cdx.remote: 5.109 LoadShardBlock: 104.614 (3) PetaboxLoader3.datanode: 87.561 (4) PetaboxLoader3.resolve: 131.576 (2) load_resource: 140.379 -->

Pages: 1 2 3 4 5 6 7 8 9 10