PageSourceSearch

https://angularreduxchat.web.app/

html angularreduxchat.web.app collected 2026-10-03 12:16:38 UTC 24,467 bytes, 66 lines download raw bytes

1<!DOCTYPE html><html lang="en" data-beasties-container><head>
2    <meta charset="utf-8">
3    <title>Angular Redux Chat Web Application | Lynn Stanikmas</title>
4    
4<script type="application/ld+json">
5      {
6        "@context": "http://schema.org",
7        "@type": "WebApplication",
8        "name": "Angular Redux Chat Web Application | Lynn Stanikmas",
9        "description": "Angular | Redux web application design and development by Lynn Stanikmas, Virginia, U.S. web application developer and designer. State management using Redux.",
10        "url": "https://angularreduxchat.web.app/",
11        "operatingSystem": "Web",
12        "applicationCategory": "Chat Web Application",
13        "featureList": [
14          "Angular",
15          "Bootstrap",
16          "ECMAScript",
17          "Typescript",
18          "Google Cloud Firebase",
19          "GCP",
20          "AngularFire",
21          "Redux",
22          "Moment.js",
23          "Custom Directives"
24        ],
25        "creator": {
26          "@type": "Person",
27          "name": "Lynn Stanikmas"
28        },
29        "author": {
30          "@type": "Person",
31          "name": "Lynn Stanikmas"
32        },
33        "copyrightHolder": {
34          "@type": "Person",
35          "name": "Lynn Stanikmas"
36        },
37        "datePublished": "2022-09-01T18:06:00-04:00",
38        "locationCreated": {
39          "@type": "Place",
40          "name": "VA, USA",
41          "address": {
42            "@type": "PostalAddress",
43            "addressCountry": "US"
44          }
45        },
46        "about": "Lynn Stanikmas Senior Web Developer, Senior UI Designer, Sr. UI Developer, and Senior Software Engineer Javascript, HTML, CSS, UX, UI, Angular, web design, web development work.",
47        "keywords": "javascript, Angular, prototype, Lynn Stanikmas, Virginia, U.S., senior web developer, web development, web design, UI design, UX design"
48      }
49    </script>
49
50    <meta name="author" content="Lynn Stanikmas">
51    <base href="/">
52    <meta name="viewport" content="width=device-width, initial-scale=1">
53    <link rel="icon" type="image/x-icon" href="favicon.ico">
54    <meta name="google-site-verification" content="78INVscOiJXf-DwDd2yfWaPVoNKTT1stkqS2If6HSmU">
55    <meta name="yandex-verification" content="bb2230298ffbcbb2">
56  <style>*{box-sizing:border-box}*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:10px;-webkit-tap-highlight-color:transparent}body{margin:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}footer,main,nav{display:block}a{background-color:transparent}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}small{font-size:80%}img{border:0}button,input{color:inherit;font:inherit;margin:0}button{overflow:visible;text-transform:none}button{-webkit-appearance:button;cursor:pointer}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}footer{color:#545454;font-style:normal;font-size:.9em;line-height:14px;width:100%;background-color:#ccc;position:fixed;bottom:0;padding:.9em 0 .5em;text-align:center}footer a{color:#545454;font-style:normal;font-weight:700}footer p{padding:0 0 5px;margin:0}address{color:#545454;font-style:normal;line-height:130%;display:inline}@media(max-width:1080px){footer{font-size:.8em;line-height:14px}}@media(max-width:420px){footer{line-height:125%}}@media print{*,*:before,*:after{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}a[href^="#"]:after{content:""}img{page-break-inside:avoid;max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}}@font-face{font-family:Glyphicons Halflings;src:url(/assets/fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(/assets/fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2) format("woff2"),url(/assets/fonts/bootstrap/glyphicons-halflings-regular.woff) format("woff"),url(/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf) format("truetype"),url(/assets/fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:Glyphicons Halflings;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-comment:before{content:"\e111"}input,button{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.chat-window .msg-container .avatar img{display:block;max-width:100%;height:auto}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}p{margin:0 0 10px}small{font-size:85%}address{margin-bottom:20px;font-style:normal;line-height:1.42857}.container{margin:0 auto;padding:0 15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}.container-fluid{margin:0 auto;padding:0 15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row,.chat-window-container,.chat-window .msg-container{margin:0 -15px}.row:before,.chat-window-container:before,.chat-window .msg-container:before,.row:after,.chat-window-container:after,.chat-window .msg-container:after{content:" ";display:table}.row:after,.chat-window-container:after,.chat-window .msg-container:after{clear:both}.chat-window .top-bar .panel-buttons-container,.chat-window .msg-container .avatar,.conversation-wrap,.chat-window,.chat-window .top-bar .panel-title-container,.chat-window .messages,.chat-window .panel-container{position:relative;min-height:1px;padding:0 15px}.chat-window .top-bar .panel-buttons-container,.chat-window .msg-container .avatar,.chat-window,.chat-window .top-bar .panel-title-container,.chat-window .messages,.chat-window .panel-container{float:left}.chat-window .top-bar .panel-buttons-container,.chat-window .msg-container .avatar{width:16.66667%}.chat-window,.chat-window .top-bar .panel-title-container,.chat-window .messages{width:83.33333%}.chat-window .panel-container{width:100%}@media(min-width:768px){.chat-window{float:left}.chat-window{width:41.66667%}}@media(min-width:992px){.chat-window .top-bar .panel-buttons-container,.chat-window .msg-container .avatar,.chat-window .top-bar .panel-title-container,.chat-window .messages,.chat-window .panel-container{float:left}.chat-window .top-bar .panel-buttons-container,.chat-window .msg-container .avatar{width:16.66667%}.chat-window .top-bar .panel-title-container,.chat-window .messages{width:83.33333%}.chat-window .panel-container{width:100%}}@media(min-width:1200px){.conversation-wrap{float:left}.conversation-wrap{width:100%}}.chat-window .panel-footer .chat-input{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px #00000013;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.chat-window .panel-footer .chat-input:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 8px #66afe999}.chat-window .panel-footer .chat-input::-moz-placeholder{color:#999;opacity:1}.chat-window .panel-footer .chat-input:-ms-input-placeholder{color:#999}.chat-window .panel-footer .chat-input::-webkit-input-placeholder{color:#999}.chat-window .panel-footer .chat-input{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn,.chat-window .panel-footer .btn-chat{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.chat-window .panel-footer .btn-chat:focus,.btn:active:focus,.chat-window .panel-footer .btn-chat:active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
56.btn:hover,.chat-window .panel-footer .btn-chat:hover,.btn:focus,.chat-window .panel-footer .btn-chat:focus{color:#333;text-decoration:none}.btn:active,.chat-window .panel-footer .btn-chat:active{outline:0;background-image:none;box-shadow:inset 0 3px 5px #00000020}.btn-primary,.chat-window .panel-footer .btn-chat{color:#fff;background-color:#5f7b7c;border-color:#4d6364}.btn-primary:focus,.chat-window .panel-footer .btn-chat:focus{color:#fff;background-color:#4d6364;border-color:#4d6364}.btn-primary:hover,.chat-window .panel-footer .btn-chat:hover,.btn-primary:active,.chat-window .panel-footer .btn-chat:active{color:#fff;background-color:#4d6364;border-color:#4d6364}.btn-primary:active:hover,.chat-window .panel-footer .btn-chat:active:hover,.btn-primary:active:focus,.chat-window .panel-footer .btn-chat:active:focus{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary:active,.chat-window .panel-footer .btn-chat:active{background-image:none}.btn-primary .badge{color:#337ab7;background-color:#fff}.chat-window .panel-footer .btn-chat{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.input-group{position:relative;display:table;border-collapse:separate}.chat-window .panel-footer .input-group .chat-input{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-btn,.chat-window .panel-footer .input-group .chat-input{display:table-cell}.input-group-btn:not(:first-child):not(:last-child),.chat-window .panel-footer .input-group .chat-input:not(:first-child):not(:last-child){border-radius:0}.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.chat-window .panel-footer .input-group .chat-input:first-child,.chat-window .panel-footer .input-group-btn:first-child>.btn-chat{border-bottom-right-radius:0;border-top-right-radius:0}.chat-window .panel-footer .input-group .chat-input:last-child,.chat-window .panel-footer .input-group-btn:last-child>.btn-chat,.chat-window .panel-footer .input-group-btn:first-child>.btn-chat:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.chat-window .panel-footer .input-group-btn>.btn-chat{position:relative}.chat-window .panel-footer .input-group-btn>.btn-chat:hover,.chat-window .panel-footer .input-group-btn>.btn-chat:focus,.chat-window .panel-footer .input-group-btn>.btn-chat:active{z-index:2}.chat-window .panel-footer .input-group-btn:first-child>.btn-chat{margin-right:-1px}.chat-window .panel-footer .input-group-btn:last-child>.btn-chat{z-index:2;margin-left:-1px}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.container-fluid>.navbar-header{margin:0 -15px}@media(min-width:768px){.container-fluid>.navbar-header{margin:0}}.navbar-brand{float:left;padding:27px;font-size:18px;line-height:9px;height:50px}nav h1{margin:0}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media(min-width:768px){.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-text{margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media(min-width:768px){.navbar-right{float:right!important;margin-right:-15px}}.navbar-default{background-color:#aab2b1;border-color:#aab2b1}.navbar-default .navbar-brand{color:#fff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#50462d}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media>.pull-left{padding-right:10px}
56.media-body{display:table-cell;vertical-align:top}.media-heading{padding:0;margin-bottom:0}h3.media-heading{font-size:14px}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 12px 12px #0003}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin:0;font-size:16px;color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;margin-bottom:.7em}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.pull-left{float:left!important}.conversation-wrap{box-shadow:-2px 0 3px #eceeee;padding:0}.conversation-wrap .conversation{position:relative;display:block;padding:5px;border-bottom:1px solid #aab2b1;margin:0}.conversation-wrap .conversation .avatar{width:50px;height:50px}.conversation-wrap .conversation:hover{cursor:hand;cursor:pointer;opacity:.8}.conversation-wrap .conversation .div-link{position:absolute;width:100%;height:100%;top:0;left:0;text-decoration:none;z-index:10;background-color:#fff;opacity:0;filter:alpha(opacity=0)}.conversation-wrap::-webkit-scrollbar{width:6px}.conversation-wrap::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)}.conversation-wrap::-webkit-scrollbar-thumb{background:#ddd;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)}.conversation-wrap::-webkit-scrollbar-thumb:window-inactive{background:#ddd}.chat-window{bottom:39px;right:0;position:fixed;float:right;margin-left:10px}.chat-window>div>.panel{border-radius:5px 5px 0 0}.chat-window .top-bar .panel-buttons-container,.chat-window .msg-container .avatar,.chat-window .top-bar .panel-title-container,.chat-window .messages{padding:0}.chat-window .panel{margin-bottom:0}.chat-window .msg-container-base{background:#d0d9d9;margin:0;padding:0 10px 10px;max-height:300px;overflow-x:hidden}.chat-window .top-bar{background:#50462d;color:#fff;padding:10px;position:relative;overflow:hidden}.chat-window .msg-receive{padding-left:0;margin-left:0}.chat-window .msg-sent{padding-bottom:20px!important;margin-right:0}.chat-window .messages{background:#fff;padding:10px;border-radius:2px;max-width:100%}.chat-window .messages>p{font-size:13px;margin:0 0 .2rem}.chat-window .messages>.time{font-size:11px;color:#3ab4c9}.chat-window .msg-container{padding:10px;overflow:hidden;display:flex}.chat-window img{display:block;width:100%}.chat-window .avatar{position:relative}.chat-window .base-receive>.avatar:after{content:"";position:absolute;top:0;right:0;width:0;height:0;border:5px solid transparent;border-left-color:transparent;border-bottom-color:transparent}.chat-window .base-sent{justify-content:flex-end;align-items:flex-end}.chat-window .base-sent>.avatar:after{content:"";position:absolute;bottom:0;left:0;width:0;height:0;border:5px solid transparent;border-right-color:transparent;border-top-color:transparent}.chat-window .msg-sent>.time{float:right}.chat-window .msg-container-base::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#f5f5f5}.chat-window .msg-container-base::-webkit-scrollbar{width:12px;background-color:#f5f5f5}.chat-window .msg-container-base::-webkit-scrollbar-thumb{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#555}.navbar-brand img{float:left;top:-10px;position:relative;margin-right:10px}.navbar-text{padding-right:110px}@media(min-width:1081px){.panel-footer{margin-bottom:1em}}
57</style><link rel="stylesheet" href="styles-IP3NI7G3.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-IP3NI7G3.css"></noscript><style ng-app-id="ng">.active[_ngcontent-ng-c4252231570]{display:none}.panel-buttons-container[_ngcontent-ng-c4252231570]   button[_ngcontent-ng-c4252231570]{background-color:transparent;color:#fff;border:0;margin-top:1px}.chat-window[_ngcontent-ng-c4252231570]   .top-bar[_ngcontent-ng-c4252231570]   .panel-title-container[_ngcontent-ng-c4252231570]{width:76%}</style><meta name="keywords" content="Angular, Redux, Lynn Stanikmas, state management, web application"><meta name="description" content="Angular | Redux web application design and development by Lynn Stanikmas, Virginia, U.S. web application developer and designer. State management using Redux."></head>
58  <body><!--nghm-->
58<script type="text/javascript" id="ng-event-dispatch-contract">(()=>{function p(t,n,r,o,e,i,f,m){return{eventType:t,event:n,targetElement:r,eic:o,timeStamp:e,eia:i,eirp:f,eiack:m}}function u(t){let n=[],r=e=>{n.push(e)};return{c:t,q:n,et:[],etc:[],d:r,h:e=>{r(p(e.type,e,e.target,t,Date.now()))}}}function s(t,n,r){for(let o=0;o<n.length;o++){let e=n[o];(r?t.etc:t.et).push(e),t.c.addEventListener(e,t.h,r)}}function c(t,n,r,o,e=window){let i=u(t);e._ejsas||(e._ejsas={}),e._ejsas[n]=i,s(i,r),s(i,o,!0)}window.__jsaction_bootstrap=c;})();
59</script>
59<script>window.__jsaction_bootstrap(document.body,"ng",["click","input","compositionstart","compositionend"],["blur"]);</script>
59
60    <noscript> Your JavaScript is disabled </noscript>
61    <app-root ng-version="21.0.6" ngh="7" ng-server-context="ssg"><main><router-outlet></router-outlet><app-chat-page ngh="0"><div><chat-nav-bar ngh="0"><nav class="navbar navbar-default"><div class="container-fluid"><div class="navbar-header"><h1><a href="#" aria-hidden="true" class="navbar-brand"><img src="assets/images/logos/favicon_32.png" alt="Lynn Stanikmas senior software engineer"> Redux Chat Web Application </a></h1></div><p class="navbar-text navbar-right"><button type="button" aria-live="assertive" aria-atomic="true" class="btn btn-primary"> Unread Messages <span class="badge">3</span></button></p></div></nav></chat-nav-bar><div class="container"><chat-threads ngh="3"><div class="row"><div aria-live="assertive" aria-relevant="all" class="conversation-wrap"><chat-thread ngh="1"><div role="alert" aria-live="assertive" aria-atomic="true" class="media conversation"><div class="pull-left"><img class="media-object avatar" src="assets/images/avatars/female-avatar-2.png" alt="lady user"></div><div class="media-body"><h3 class="media-heading contact-name"> Lady User <span>• <span class="sr-only">selected thread</span></span><!----></h3><small class="message-preview"> So shall you feel the loss, but not the friend which you weep for. </small></div><a class="div-link" jsaction="click:;">Select Lady User thread</a></div></chat-thread><chat-thread ngh="2"><div role="alert" aria-live="assertive" aria-atomic="true" class="media conversation"><div class="pull-left"><img class="media-object avatar" src="assets/images/avatars/male-avatar-1.png" alt="echo user"></div><div class="media-body"><h3 class="media-heading contact-name"> Echo User <!----></h3><small class="message-preview"> I'll echo whatever you send me </small></div><a class="div-link" jsaction="click:;">Select Echo User thread</a></div></chat-thread><chat-thread ngh="2"><div role="alert" aria-live="assertive" aria-atomic="true" class="media conversation"><div class="pull-left"><img class="media-object avatar" src="assets/images/avatars/female-avatar-4.png" alt="reverse user"></div><div class="media-body"><h3 class="media-heading contact-name"> Reverse User <!----></h3><small class="message-preview"> I'll reverse whatever you send me </small></div><a class="div-link" jsaction="click:;">Select Reverse User thread</a></div></chat-thread><chat-thread ngh="2"><div role="alert" aria-live="assertive" aria-atomic="true" class="media conversation"><div class="pull-left"><img class="media-object avatar" src="assets/images/avatars/male-avatar-2.png" alt="waiting user"></div><div class="media-body"><h3 class="media-heading contact-name"> Waiting User <!----></h3><small class="message-preview"> I'll wait however many seconds you send to me before responding. Try sending '3' </small></div><a class="div-link" jsaction="click:;">Select Waiting User thread</a></div></chat-thread><!----></div></div></chat-threads><chat-window _nghost-ng-c4252231570 ngh="6"><div _ngcontent-ng-c4252231570 class="chat-window-container"><div _ngcontent-ng-c4252231570 aria-live="assertive" aria-relevant="all" class="chat-window"><div _ngcontent-ng-c4252231570 class="panel-container"><div _ngcontent-ng-c4252231570 class="panel panel-default"><div _ngcontent-ng-c4252231570 class="panel-heading top-bar"><div _ngcontent-ng-c4252231570 class="panel-title-container"><h2 _ngcontent-ng-c4252231570 class="panel-title"><span _ngcontent-ng-c4252231570 role="presentation" class="glyphicon glyphicon-comment"></span> Chat - Lady User </h2></div><div _ngcontent-ng-c4252231570 class="panel-buttons-container"><button _ngcontent-ng-c4252231570 aria-label="open and close the chat messages panel" jsaction="click:;"> Toggle </button></div></div><div _ngcontent-ng-c4252231570 aria-live="assertive" aria-relevant="all" aria-role="alert" class="panel-body msg-container-base"><chat-message _ngcontent-ng-c4252231570 ngh="4"><div role="alert" aria-live="assertive" aria-atomic="true" class="msg-container base-sent"><div class="avatar"><img src="assets/images/avatars/female-avatar-1.png" alt="Juliet"></div><!----><div class="messages msg-sent"><p>Yet let me weep for such a feeling loss.</p><p class="time">  • <span class="sr-only">sent </span>an hour ago </p></div><!----></div></chat-message><chat-message _ngcontent-ng-c4252231570 ngh="5"><div role="alert" aria-live="assertive" aria-atomic="true" class="msg-container base-receive"><!----><div class="messages msg-receive"><p>So shall you feel the loss, but not the friend which you weep for.</p><p class="time">  • <span class="sr-only">sent </span>20 minutes ago </p></div><div class="avatar"><img src="assets/images/avatars/female-avatar-2.png" alt="Lady User"></div><!----></div></chat-message><!----></div><div _ngcontent-ng-c4252231570 class="panel-footer"><div _ngcontent-ng-c4252231570 class="input-group"><input _ngcontent-ng-c4252231570 type="text" placeholder="Write your message here..." class="chat-input ng-untouched ng-pristine ng-valid" value jsaction="input:;blur:;compositionstart:;compositionend:;"><span _ngcontent-ng-c4252231570 class="input-group-btn"><button _ngcontent-ng-c4252231570 class="btn-chat" jsaction="click:;">Send</button></span></div></div></div></div></div></div></chat-window></div></div>
62`
63</app-chat-page><!----></main><footer><address> United States <a href="tel:+17742892639">+1 (774) 289-2639</a></address><p><span monocopyright class="copyright">
63Copyright ©2026 </span> Lynn Stanikmas. All rights reserved. </p></footer></app-root>
64  <link rel="modulepreload" href="chunk-CWBTOWAK.js"><link rel="modulepreload" href="chunk-K56E3OKS.js"><link rel="modulepreload" href="chunk-PEZFNDKF.js">
64<script src="polyfills-D5OGI5N6.js" type="module"></script>
64<script src="main-URTQZX3T.js" type="module"></script>
64
65
66<script id="ng-state" type="application/json">{"__nghData__":[{},{"t":{"6":"t1"},"c":{"6":[{"i":"t1","r":1}]}},{"t":{"6":"t1"},"c":{"6":[]}},{"t":{"3":"t0"},"c":{"3":[{"i":"t0","r":1,"x":4}]}},{"t":{"1":"t3","11":"t4"},"c":{"1":[{"i":"t3","r":1}],"11":[]}},{"t":{"1":"t3","11":"t4"},"c":{"1":[],"11":[{"i":"t4","r":1}]}},{"t":{"14":"t2"},"c":{"14":[{"i":"t2","r":1,"x":2}]}},{"c":{"1":[{"i":"c713103848","r":1}]}}]}</script>
66</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.