```mermaid graph TB linkStyle default fill:#FFF,stroke:#000,stroke-width:1.5px; classDef cssGrayscale fill:#EEE,fill-opacity:0.5,stroke:#000,stroke-width:1.5px; classDef cssError fill:#ff0000,fill-opacity:0.5,stroke:#000,stroke-width:1.5px; start(Start) chkIsProgramIDProvided{URL has a ProgramID?} chkIsSigninRequired{URL requires sign-in?} chkIsGuestSignedIn{Is guest signed-in?} chkProgIDValidForGuest{Valid ProgID for Guest?} chkSignInSuccessful{Sign-in Successful?} opMLifeSignIn[MLife Sign-In] errOfferNotValid[Error: Offer Not Valid] start-->chkIsProgramIDProvided chkIsProgramIDProvided-- Yes -->chkIsSigninRequired chkIsSigninRequired-- Yes -->chkIsGuestSignedIn chkIsGuestSignedIn-- No --> opMLifeSignIn opMLifeSignIn --> chkSignInSuccessful chkSignInSuccessful-- No --> errOfferNotValid chkIsGuestSignedIn-- Yes --> chkProgIDValidForGuest chkProgIDValidForGuest -- No --> errOfferNotValid class start cssGrayscale; class chkIsProgramIDProvided,chkIsSigninRequired,chkIsGuestSignedIn,chkProgIDValidForGuest,chkSignInSuccessful,opMLifeSignIn cssGrayscale; class errOfferNotValid cssError; ```