&lt;xmp&gt;.&lt;/xmp&gt; &lt;!-- framebuster code ends here --&gt; &lt;!-- for ng4 --&gt; &lt;app-root&gt; &lt;div class=&quot;loading-ball-anim&quot;&gt; &lt;div class=&quot;ball&quot; style=&quot;background-color:#4285F5&quot;&gt;&lt;/div&gt; &lt;div class=&quot;ball&quot; style=&quot;background-color:#EA4436;animation-delay:.25s&quot; &gt;&lt;/div&gt; &lt;div class=&quot;ball&quot; style=&quot;background-color:#FBBD06;animation-delay:.5s&quot; &gt;&lt;/div&gt; &lt;div class=&quot;ball&quot; style=&quot;background-color:#34A952;animation-delay:.75s&quot; &gt;&lt;/div&gt; &lt;/div&gt; &lt;/app-root&gt; &lt;script&gt; setTimeout(function() { document.querySelector(&#39;.loading-ball-anim&#39;).classList.add(&#39;start&#39;); }, 100); &lt;/script&gt; &lt;!-- for angularJS --&gt; &lt;div id=&quot;app&quot; class=&quot;loading&quot;&gt; &lt;div class=&quot;main-ctrl&quot; ng-controller=&quot;main as mainCtrl&quot;&gt; &lt;ui-view class=&quot;main-view-container&quot;&gt;&lt;/ui-view&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;gated-signin&quot; class=&quot;boxed-takeover&quot;&gt; &lt;div id=&quot;signinMethod&quot; class=&quot;box auth-box&quot;&gt; &lt;h1&gt; Sign in or create account &lt;/h1&gt; &lt;p&gt; To register for events &lt;/p&gt; &lt;button class=&quot;auth blue&quot; onclick=&quot;signIn()&quot;&gt; Continue with Google &lt;/button&gt; &lt;button onclick=&quot;signInStep(&#39;enterEmail&#39;)&quot; class=&quot;outline auth&quot;&gt; Continue with email &lt;/button&gt; &lt;div class=&quot;privacy-policy&quot;&gt; &lt;a class=&quot;privacy-link&quot; target=&quot;_blank&quot; href=&quot;https://policies.google.com/privacy&quot; &gt; Privacy Policy &lt;/a &gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;enterEmail&quot; class=&quot;box hidden auth-box&quot;&gt; &lt;h1&gt; Sign in with email &lt;/h1&gt; &lt;div class=&quot;input-container&quot;&gt; &lt;label for=&quot;emailAddress&quot;&gt; Enter your email &lt;/label&gt; &lt;input type=&quot;email&quot; id=&quot;emailAddress&quot; oninput=&quot;hideErrors(&#39;invalid-email&#39;)&quot; /&gt; &lt;div class=&quot;error-container hidden&quot; id=&quot;invalid-email&quot;&gt; &lt;i class=&quot;google-material-icons&quot;&gt;info&lt;/i&gt; &lt;span&gt; &lt;output&gt;Enter a valid email address&lt;/output&gt; &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;sign-in-buttons&quot;&gt; &lt;div class=&quot;auth link&quot;&gt; &lt;button type=&quot;button&quot; onclick=&quot;signInStep(&#39;signinMethod&#39;)&quot; class=&quot;button-link&quot;&gt; Back &lt;/button&gt; &lt;/div&gt; &lt;button class=&quot;auth blue&quot; onclick=&quot;checkEmail()&quot;&gt; Next &lt;/button&gt; &lt;/div&gt; &lt;div class=&quot;privacy-policy&quot;&gt; &lt;a class=&quot;privacy-link&quot; target=&quot;_blank&quot; href=&quot;https://policies.google.com/privacy&quot; &gt; Privacy Policy &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;hasGoogleAccount&quot; class=&quot;box hidden auth-box&quot;&gt; &lt;h1&gt; Sign in with Google &lt;/h1&gt; &lt;p&gt; &lt;output&gt;It looks like you&#39;ve already used this email. Sign in with Google to continue.&lt;/output&gt; &lt;/p&gt; &lt;div class=&quot;sign-in-buttons&quot;&gt; &lt;div class=&quot;auth link&quot;&gt; &lt;button type=&quot;button&quot; onclick=&quot;signInStep(&#39;enterEmail&#39;)&quot; class=&quot;button-link&quot;&gt; Back &lt;/button&gt; &lt;/div&gt; &lt;button class=&quot;auth blue&quot; onclick=&quot;signIn()&quot;&gt; Sign in with Google &lt;/button&gt; &lt;/div&gt; &lt;div class=&quot;privacy-policy&quot;&gt; &lt;a class=&quot;privacy-link&quot; target=&quot;_blank&quot; href=&quot;https://policies.google.com/privacy&quot; &gt; Privacy Policy &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;enterPassword&quot; class=&quot;box hidden auth-box&quot;&gt; &lt;form&gt; &lt;h1&gt; Sign in with email &lt;/h1&gt; &lt;p id=&quot;loginEmail&quot; class=&quot;email&quot;&gt;&lt;/p&gt; &lt;div class=&quot;input-container&quot; id=&quot;password-container&quot;&gt; &lt;label for=&quot;loginPassword&quot;&gt; Enter your password &lt;/label&gt; &lt;input type=&quot;password&quot; autocomplete=&quot;current-password&quot; id=&quot;loginPassword&quot; oninput=&quot;hideErrors(&#39;no-password&#39;, &#39;invalid-password&#39;)&quot; required /&gt; &lt;div id=&quot;no-password&quot; class=&quot;error-container hidden&quot;&gt; &lt;i class=&quot;google-material-icons&quot;&gt;info&lt;/i&gt; &lt;span&gt; &lt;output&gt;Enter a password&lt;/output&gt; &lt;/span&gt; &lt;/div&gt; &lt;div id=&quot;invalid-password&quot; class=&quot;error-container hidden&quot;&gt; &lt;i class=&quot;google-material-icons&quot;&gt;info&lt;/i&gt; &lt;span&gt; &lt;output&gt;Wrong password. Try again or click &quot;Forgot password&quot; to reset it.&lt;/output&gt; &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;error-takeover hidden&quot; id=&quot;login-retry-limit&quot;&gt; &lt;div&gt; &lt;i class=&quot;google-material-icons&quot;&gt;report_problem&lt;/i&gt; &lt;h2&gt; Too many failed attempts &lt;/h2&gt; &lt;/div&gt; &lt;p class=&quot;error-message&quot;&gt; &lt;output&gt;Unavailable because of too many failed attempts to sign in. Try again in a few minutes.&lt;/output&gt; &lt;/p&gt; &lt;/div&gt; &lt;div class=&quot;sign-in-buttons&quot;&gt; &lt;div class=&quot;auth link forgot-password&quot;&gt; &lt;button type=&quot;button&quot; onclick=&quot;signInStep(&#39;resetPassword&#39;)&quot; class=&quot;button-link&quot;&gt; Forgot Password? &lt;/button&gt; &lt;/div&gt; &lt;div class=&quot;auth link right-anchor&quot;&gt; &lt;button type=&quot;button&quot; onclick=&quot;signInStep(&#39;enterEmail&#39;)&quot; class=&quot;button-link&quot;&gt; Back &lt;/button&gt; &lt;/div&gt; &lt;button type=&quot;button&quot; class=&quot;auth blue&quot; onclick=&quot;signInEmailPassword()&quot; id=&quot;password-sign-in&quot; &gt; Next &lt;/button&gt; &lt;/div&gt; &lt;div class=&quot;privacy-policy&quot;&gt; &lt;a class=&quot;privacy-link&quot; target=&quot;_blank&quot; href=&quot;https://policies.google.com/privacy&quot; &gt; Privacy Policy &lt;/a&gt; &lt;/div&gt; &lt;/form&gt; &lt;/div&gt; &lt;div id=&quot;createAccount&quot; class=&quot;box auth-box hidden&quot;&gt; &lt;form&gt; &lt;h1&gt; Create Account &lt;/h1&gt; &lt;div class=&quot;input-container&quot;&gt; &lt;label for=&quot;accountEmail&quot;&gt;Email Address:&lt;/label&gt; &lt;input type=&quot;email&quot; id=&quot;accountEmail&quot; autocomplete=&quot;new-username&quot; oninput=&quot;hideErrors(&#39;email-in-use&#39;)&quot; disabled /&gt; &lt;div id=&quot;email-in-use&quot; class=&quot;error-container hidden&quot;&gt; &lt;i class=&quot;google-material-icons&quot;&gt;info&lt;/i&gt; &lt;span&gt; &lt;output&gt;This email is already in use. Please go back and select a different email.&lt;/output&gt; &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;input-container&quot;&gt; &lt;label for=&quot;accountPassword&quot;&gt; Enter your password &lt;/label&gt; &lt;input type=&quot;password&quot; autocomplete=&quot;new-password&quot; id=&quot;accountPassword&quot; oninput=&quot;hideErrors(&#39;create-account-no-password&#39;, &#39;weak-password&#39;)&quot; /&gt; &lt;div id=&quot;create-account-no-password&quot; class=&quot;error-container hidden&quot;&gt; &lt;i class=&quot;google-material-icons&quot;&gt;info&lt;/i&gt; &lt;span&gt; &lt;output&gt;Enter password&lt;/output&gt; &lt;/span&gt; &lt;/div&gt; &lt;div id=&quot;weak-password&quot; class=&quot;error-container hidden&quot;&gt; &lt;i class=&quot;google-material-icons&quot;&gt;info&lt;/i&gt; &lt;span&gt; &lt;output&gt;Use 6 or more characters with a mix of letters, numbers &amp; symbols&lt;/output&gt; &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;input-pair&quot;&gt; &lt;div class=&quot;input-container&quot;&gt; &lt;label for=&quot;accountFirstName&quot;&gt; First Name &lt;/label&gt; &lt;input type=&quot;text&quot; id=&quot;accountFirstName&quot; oninput=&quot;hideErrors(&#39;no-first-name&#39;)&quot; /&gt; &lt;div id=&quot;no-first-name&quot; class=&quot;error-container hidden&quot;&gt; &lt;i class=&quot;google-material-icons&quot;&gt;info&lt;/i&gt; &lt;span&gt; &lt;output&gt;Enter first name&lt;/output&gt; &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;input-container&quot;&gt; &lt;label for=&quot;accountLastName&quot;&gt; Last Name &lt;/label&gt; &lt;input type=&quot;text&quot; id=&quot;accountLastName&quot; oninput=&quot;hideErrors(&#39;no-last-name&#39;)&quot; /&gt; &lt;div id=&quot;no-last-name&quot; class=&quot;error-container hidden&quot;&gt; &lt;i class=&quot;google-material-icons&quot;&gt;info&lt;/i&gt; &lt;span&gt; &lt;output&gt;Enter last name&lt;/output&gt; &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;sign-in-buttons&quot;&gt; &lt;div class=&quot;auth link&quot;&gt; &lt;button type=&quot;button&quot; onclick=&quot;signInStep(&#39;enterEmail&#39;)&quot; class=&quot;button-link&quot;&gt; Back &lt;/button&gt; &lt;/div&gt; &lt;button type=&quot;button&quot; class=&quot;auth blue&quot; onclick=&quot;createAccount()&quot;&gt; Next &lt;/button&gt; &lt;/div&gt; &lt;div class=&quot;privacy-policy&quot;&gt; &lt;a class=&quot;privacy-link&quot; target=&quot;_blank&quot; href=&quot;https://policies.google.com/privacy&quot; &gt; Privacy Policy &lt;/a&gt; &lt;/div&gt; &lt;/form&gt; &lt;/div&gt; &lt;div id=&quot;accountCreationConfirmation&quot; class=&quot;box auth-box hidden&quot;&gt; &lt;p&gt; &lt;div id=&quot;emailConfirmation&quot; class=&quot;email-text&quot;&gt;&lt;/div&gt; An email has been sent to your email address. Click the confirmation link in that email to verify your account. &lt;/p&gt; &lt;p&gt; Please check your promotional tab or spam folder. You can resend the message if you did not receive it. &lt;/p&gt; &lt;button class=&quot;auth blue&quot; onclick=&quot;resendAccountConfirmation()&quot;&gt; Resend email &lt;/button&gt; &lt;button class=&quot;auth blue&quot; onclick=&quot;accountCreationComplete()&quot;&gt; Done &lt;/button&gt; &lt;p id=&quot;confirmation-resent&quot; class=&quot;hidden&quot;&gt; Confirmation email resent &lt;/p&gt; &lt;div class=&quot;privacy-policy&quot;&gt; &lt;a class=&quot;privacy-link&quot; target=&quot;_blank&quot; href=&quot;https://policies.google.com/privacy&quot; &gt; Privacy Policy &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;resetPassword&quot; class=&quot;box auth-box hidden&quot;&gt; &lt;h1&gt; Reset Password &lt;/h1&gt; &lt;p&gt; If you&#39;ve forgotten your password, you can request to have an email sent with a link to create a new one. &lt;/p&gt; &lt;div class=&quot;sign-in-buttons&quot;&gt; &lt;div class=&quot;auth link&quot;&gt; &lt;button type=&quot;button&quot; onclick=&quot;signInStep(&#39;enterPassword&#39;)&quot; class=&quot;button-link&quot;&gt; Back &lt;/button&gt; &lt;/div&gt; &lt;button class=&quot;auth blue&quot; onclick=&quot;resetPassword()&quot;&gt; Reset Password &lt;/button&gt; &lt;/div&gt; &lt;div class=&quot;privacy-policy&quot;&gt; &lt;a class=&quot;privacy-link&quot; target=&quot;_blank&quot; href=&quot;https://policies.google.com/privacy&quot; &gt; Privacy Policy &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;postReset&quot; class=&quot;box auth-box hidden&quot;&gt; &lt;h1&gt; Reset Password &lt;/h1&gt; &lt;p&gt; We&#39;ve sent an email to your email address. Follow the instructions in that email to reset your password. &lt;/p&gt; &lt;div class=&quot;sign-in-buttons&quot;&gt; &lt;div class=&quot;auth link&quot;&gt; &lt;button type=&quot;button&quot; onclick=&quot;signInStep(&#39;signinMethod&#39;)&quot; class=&quot;button-link&quot;&gt; Back &lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;privacy-policy&quot;&gt; &lt;a class=&quot;privacy-link&quot; target=&quot;_blank&quot; href=&quot;https://policies.google.com/privacy&quot; &gt; Privacy Policy &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;gated-signout&quot; class=&quot;boxed-takeover&quot;&gt; &lt;div class=&quot;box&quot;&gt; &lt;h1&gt; Forbidden &lt;/h1&gt; &lt;p&gt; &lt;output&gt;Sorry, you do not have permission to access this resource.&lt;/output&gt; &lt;/p&gt; &lt;button onclick=&quot;signOut()&quot;&gt; Sign out &lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;user-upgrade-error&quot; class=&quot;boxed-takeover&quot;&gt; &lt;div class=&quot;box&quot;&gt; &lt;h1&gt;User account conflict&lt;/h1&gt; &lt;p&gt; &lt;output&gt;Sorry, the user account you are using is now linked to Google. Please sign in with Google to use this account.&lt;/output&gt; &lt;/p&gt; &lt;button onclick=&quot;signOut()&quot;&gt; Sign out &lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;private-error&quot; class=&quot;boxed-takeover&quot;&gt; &lt;div class=&quot;box&quot;&gt; &lt;div class=&quot;formatted-html&quot;&gt;&lt;h1&gt;Forbidden&lt;/h1&gt;&lt;div&gt;You do not have permission to access this private event&lt;/div&gt;&lt;/div&gt; &lt;button onclick=&quot;signOut()&quot;&gt; Sign out &lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;general-error&quot; class=&quot;boxed-takeover&quot;&gt; &lt;div class=&quot;box&quot;&gt; &lt;h1&gt;We&amp;#39;ll be right back&lt;/h1&gt; &lt;p&gt; We are having temporary difficulties, and are working to fix the issue. &lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;cookie-error&quot; class=&quot;boxed-takeover&quot;&gt; &lt;div class=&quot;box&quot;&gt; &lt;h1&gt;Cookies are disabled&lt;/h1&gt; &lt;p&gt; Cookies are required in order to sign in. Please enable cookies in your browser&amp;#39;s settings and disable any adblockers. Then refresh this page. &lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;auth-error&quot; class=&quot;boxed-takeover&quot;&gt; &lt;div class=&quot;box&quot;&gt; &lt;h1&gt;Error authenticating user&lt;/h1&gt; &lt;p&gt; There was an error during authentication. Please refresh to try again. If this issue persists, please sign out and sign back in after reloading. &lt;/p&gt; &lt;button onclick=&quot;signOut()&quot;&gt; Sign out &lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id=&quot;offline-error&quot; class=&quot;boxed-takeover&quot;&gt; &lt;div class=&quot;box&quot;&gt; &lt;h1&gt;You&amp;#39;re currently offline&lt;/h1&gt; &lt;p&gt; Refresh the page when your connection is restored to return to the app. &lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;script defer src=&quot;/scripts/app.preload.bfab45df.js&quot; &gt;&lt;/script&gt; &lt;!-- Developer Profiles --&gt; &lt;script src=&quot;/static/scripts/developer_profiles_api_v0.2.3.js&quot;&gt;&lt;/script&gt; &lt;script&gt; window.templateBundleMap = { platform: { &quot;default&quot;: { script: &quot;/scripts/app.platform.default.js&quot;, style: &quot;/styles/app.platform.default.css&quot;, }, &quot;devfest&quot;: { script: &quot;/scripts/app.platform.devfest.js&quot;, style: &quot;/styles/app.platform.devfest.css&quot;, }, &quot;cloud&quot;: { script: &quot;/scripts/app.platform.cloud.3fae633a.js&quot;, style: &quot;/styles/app.platform.cloud.ff437da9.css&quot;, }, }, event: { &quot;default&quot;: { script: &quot;/scripts/app.event.default.79639975.js&quot;, style: &quot;/styles/app.event.default.76a7a704.css&quot;, }, &quot;cloud_2017&quot;: { script: &quot;/scripts/app.event.cloud_2017.14fe68ec.js&quot;, style: &quot;/styles/app.event.cloud_2017.978f9577.css&quot;, }, &quot;cloud_2018&quot;: { script: &quot;/scripts/app.event.cloud_2018.920955c7.js&quot;, style: &quot;/styles/app.event.cloud_2018.4524a015.css&quot;, }, &quot;cloud_summit_2018&quot;: { script: &quot;/scripts/app.event.cloud_summit_2018.b80bb2df.js&quot;, style: &quot;/styles/app.event.cloud_summit_2018.2828e67d.css&quot;, }, &quot;cloud_transform_2018&quot;: { script: &quot;/scripts/app.event.cloud_transform_2018.21a8e490.js&quot;, style: &quot;/styles/app.event.cloud_transform_2018.fc10d7ff.css&quot;, }, &quot;cloud_data_ai_2018&quot;: { script: &quot;/scripts/app.event.cloud_data_ai_2018.502619fb.js&quot;, style: &quot;/styles/app.event.cloud_data_ai_2018.66e30895.css&quot;, }, &quot;devfest_2018&quot;: { script: &quot;/scripts/app.event.devfest_2018.5614ac9a.js&quot;, style: &quot;/styles/app.event.devfest_2018.55fd9704.css&quot;, }, &quot;chrome_2018&quot;: { script: &quot;/scripts/app.event.chrome_2018.cf503ed7.js&quot;, style: &quot;/styles/app.event.chrome_2018.acf234a7.css&quot;, }, &quot;cloud_q1_2019&quot;: { script: &quot;/scripts/app.event.cloud_q1_2019.67fde800.js&quot;, style: &quot;/styles/app.event.cloud_q1_2019.98f47d07.css&quot;, }, &quot;global_events_gml_2019&quot;: { script: &quot;/scripts/app.event.global_events_gml_2019.6695235b.js&quot;, style: &quot;/styles/app.event.global_events_gml_2019.bb1763a3.css&quot;, }, &quot;single_session&quot;: { script: &quot;/scripts/app.event.single_session.b32ef42d.js&quot;, style: &quot;/styles/app.event.single_session.da02b89f.css&quot;, }, }, theme: { gemini: &quot;/styles/themes/gemini.faecb6b7.css&quot;, youtube: &quot;/styles/themes/youtube.6ad3b535.css&quot;, }, angularJsDependencies: &quot;/scripts/dependencies.4f4b11f9.js&quot; } &lt;/script&gt; &lt;div class=&quot;hidden&quot; id=&quot;bad-browser&quot;&gt; &lt;div id=&quot;bad-browser-shade&quot;&gt;&lt;/div&gt; &lt;div id=&quot;bad-browser-text&quot;&gt; &lt;span id=&quot;warning-icon&quot; &gt;&lt;i class=&quot;google-material-icons&quot;&gt;warning&lt;/i&gt;&lt;/span &gt; &lt;h2&gt; Your browser&lt;br /&gt; is not supported &lt;/h2&gt; &lt;p&gt; For the full experience, use Google Chrome, Firefox, Safari or Edge. &lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;script&gt; // 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(&#39;bad-browser&#39;).className = &#39;&#39;; document.body.className += &#39; unsupported&#39;; } &lt;/script&gt; &lt;script&gt; const cookieBarScript = document.createElement(&#39;script&#39;) const lang = window.navigator.userLanguage || window.navigator.language || &#39;en&#39;; cookieBarScript.setAttribute(&#39;data-glue-cookie-notification-bar-language&#39;, lang); cookieBarScript.setAttribute(&#39;src&#39;, &#39;https://www.gstatic.com/glue/cookienotificationbar/cookienotificationbar.min.js&#39;); document.body.appendChild(cookieBarScript); &lt;/script&gt; &lt;script&gt; function hideTempElements() { const elementIdsToHide = [ &#39;invalid-password&#39;, &#39;invalid-email&#39;, &#39;no-password&#39;, &#39;email-in-use&#39;, &#39;weak-password&#39;, &#39;create-account-no-password&#39;, &#39;no-first-name&#39;, &#39;no-last-name&#39;, &#39;login-retry-limit&#39;, &#39;confirmation-resent&#39;, ]; elementIdsToHide.forEach(id =&gt; { document.getElementById(id).classList.add(&#39;hidden&#39;); }); } function signInStep(stepName) { hideTempElements(); const currentView = document.getElementById(stepName); document .getElementById(&#39;password-container&#39;) .classList.remove(&#39;hidden&#39;); document.getElementById(&#39;password-sign-in&#39;).disabled = false; [ &#39;signinMethod&#39;, &#39;enterEmail&#39;, &#39;hasGoogleAccount&#39;, &#39;enterPassword&#39;, &#39;createAccount&#39;, &#39;accountCreationConfirmation&#39;, &#39;resetPassword&#39;, &#39;postReset&#39;, ] .filter(elementId =&gt; elementId !== stepName) .forEach(elementId =&gt; document.getElementById(elementId).classList.add(&#39;hidden&#39;) ); currentView.classList.remove(&#39;hidden&#39;); const input = currentView.querySelector(&quot;input:not([disabled])&quot;); if (input) { input.focus(); } } function checkEmail() { document.getElementById(&#39;invalid-email&#39;).classList.add(&#39;hidden&#39;); const enteredEmail = document.getElementById(&#39;emailAddress&#39;).value; if (/^.*@google\.com$/i.test(enteredEmail)) { signInStep(&#39;hasGoogleAccount&#39;); makeErrorAccessible(document.getElementById(&#39;hasGoogleAccount&#39;)); } else { const emailRegex = /.+@.+\..+/; if (!enteredEmail || !emailRegex.test(enteredEmail)) { document.getElementById(&#39;invalid-email&#39;).classList.remove(&#39;hidden&#39;); makeErrorAccessible(document.getElementById(&#39;invalid-email&#39;)); return; } window.firebase .auth() .fetchSignInMethodsForEmail(enteredEmail) .then(signinOptions =&gt; { if (signinOptions.length === 0) { document.getElementById(&#39;accountEmail&#39;).value = enteredEmail; signInStep(&#39;createAccount&#39;); } else if (signinOptions.includes(&#39;google.com&#39;)) { signInStep(&#39;hasGoogleAccount&#39;); } else { document.getElementById( &#39;loginEmail&#39; ).textContent = enteredEmail; signInStep(&#39;enterPassword&#39;); } }) .catch(error =&gt; console.error(error)); } } function hideErrors(...errorIds) { for(let id of errorIds) { const errorToHide = document.getElementById(id); const errorMessage = errorToHide.querySelector(&quot;output&quot;); if(!errorToHide.classList.contains(&quot;hidden&quot;)) { errorToHide.classList.add(&quot;hidden&quot;); } errorMessage.removeAttribute(&quot;aria-role&quot;); errorMessage.removeAttribute(&quot;aria-live&quot;); } } function makeErrorAccessible(errorContainer) { const errorMessage = errorContainer.querySelector(&quot;output&quot;); errorMessage.setAttribute(&quot;aria-role&quot;, &quot;alert&quot;); errorMessage.setAttribute(&quot;aria-live&quot;, &quot;polite&quot;); } function signInEmailPassword() { document.getElementById(&#39;invalid-password&#39;).classList.add(&#39;hidden&#39;); document.getElementById(&#39;no-password&#39;).classList.add(&#39;hidden&#39;); document.getElementById(&#39;password-sign-in&#39;).disabled = false; const password = document.getElementById(&#39;loginPassword&#39;).value; if (!password) { document.getElementById(&#39;no-password&#39;).classList.remove(&#39;hidden&#39;); makeErrorAccessible(document.getElementById(&#39;no-password&#39;)); return; } window.firebase .auth() .signInWithEmailAndPassword( document.getElementById(&#39;loginEmail&#39;).textContent, document.getElementById(&#39;loginPassword&#39;).value ) .then(() =&gt; { window.location.reload(true); }) .catch(error =&gt; { if (error.code === &#39;auth/wrong-password&#39;) { document .getElementById(&#39;invalid-password&#39;) .classList.remove(&#39;hidden&#39;); console.debug(&#39;wrong password&#39;); makeErrorAccessible(document.getElementById(&#39;invalid-password&#39;)); } else if (error.code === &#39;auth/too-many-requests&#39;) { document .getElementById(&#39;password-container&#39;) .classList.add(&#39;hidden&#39;); document .getElementById(&#39;login-retry-limit&#39;) .classList.remove(&#39;hidden&#39;); makeErrorAccessible(document.getElementById(&#39;login-retry-limit&#39;)); document.getElementById(&#39;password-sign-in&#39;).disabled = true; } else { console.error(error); } }); } function createAccount() { hideTempElements(); const accountEmail = document.getElementById(&#39;accountEmail&#39;).value; const accountPassword = document .getElementById(&#39;accountPassword&#39;) .value.trim(); const accountFirstName = document .getElementById(&#39;accountFirstName&#39;) .value.trim(); const accountLastName = document .getElementById(&#39;accountLastName&#39;) .value.trim(); document.getElementById(&#39;accountPassword&#39;).value = accountPassword; document.getElementById(&#39;accountFirstName&#39;).value = accountFirstName; document.getElementById(&#39;accountLastName&#39;).value = accountLastName; if (!accountPassword) { document .getElementById(&#39;create-account-no-password&#39;) .classList.remove(&#39;hidden&#39;); makeErrorAccessible(document.getElementById(&#39;create-account-no-password&#39;)); } if (!accountFirstName) { document.getElementById(&#39;no-first-name&#39;).classList.remove(&#39;hidden&#39;); makeErrorAccessible(document.getElementById(&#39;no-first-name&#39;)); } if (!accountLastName) { document.getElementById(&#39;no-last-name&#39;).classList.remove(&#39;hidden&#39;); makeErrorAccessible(document.getElementById(&#39;no-last-name&#39;)); } if (!accountPassword || !accountFirstName || !accountLastName) return; window.firebase .auth() .createUserWithEmailAndPassword(accountEmail, accountPassword) .then(resp =&gt; { resp.user.updateProfile({ displayName: `${accountFirstName} ${accountLastName}`, }).then(() =&gt; { // Solves issue with Firebase profile data propagation to the // user after creation–outlined here: // https://buganizer.corp.google.com/issues/204450136 const unsubscribe = window.firebase .auth() .onAuthStateChanged(user =&gt; { user.getIdToken(true); unsubscribe(); }); }); const emailConfirmation = document.getElementById(&quot;emailConfirmation&quot;); if(emailConfirmation) { document.getElementById( &#39;emailConfirmation&#39; ).textContent = accountEmail; } sendAccountConfirmation({ url: window.location.href }); signInStep(&#39;accountCreationConfirmation&#39;); }) .catch(error =&gt; { if (error.code === &#39;auth/weak-password&#39;) { document .getElementById(&#39;weak-password&#39;) .classList.remove(&#39;hidden&#39;); makeErrorAccessible(document.getElementById(&#39;weak-password&#39;)) } else if (error.code === &#39;auth/email-already-in-use&#39;) { document .getElementById(&#39;email-in-use&#39;) .classList.remove(&#39;hidden&#39;); makeErrorAccessible(document.getElementById(&#39;email-in-use&#39;)) } 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(&#39;confirmation-resent&#39;) .classList.remove(&#39;hidden&#39;); } function accountCreationComplete() { location.reload(true); } function resetPassword() { const email = document.getElementById(&#39;loginEmail&#39;).textContent; window.firebase .auth() .sendPasswordResetEmail(email, { url: window.location.origin }) .then(() =&gt; { this.document.getElementById(&#39;email-text&#39;).textContent = email; this.signInStep(&#39;postReset&#39;); }); } &lt;/script&gt; &lt;/body&gt; &lt;/html&gt;</plaintext></body></html>