academia/docs/architecture/diagrams/03-sequence-enrollment.svg

1 line
41 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="SEQUENCE" height="1798px" preserveAspectRatio="none" style="width:1905px;height:1798px;background:#FFFFFF;" version="1.1" viewBox="0 0 1905 1798" width="1905px" zoomAndPan="magnify"><title>Secuencia: Inscripci&#243;n de Estudiante en Materia (con JWT)</title><defs/><g><text fill="#000000" font-family="Verdana" font-size="22" font-weight="bold" lengthAdjust="spacing" textLength="724.958" x="588.9705" y="35.4209">Secuencia: Inscripci&#243;n de Estudiante en Materia (con JWT)</text><g><title>Frontend</title><rect fill="#FFFFFF" height="1387.375" style="stroke:#000000;stroke-width:1;" width="10" x="263.374" y="311.7031"/></g><g><title>API GraphQL</title><rect fill="#FFFFFF" height="1283.7109" style="stroke:#000000;stroke-width:1;" width="10" x="492.2173" y="371.1016"/></g><g><title>JWT Middleware</title><rect fill="#FFFFFF" height="86.3984" style="stroke:#000000;stroke-width:1;" width="10" x="644.8027" y="400.2344"/></g><g><title>EnrollStudentHandler</title><rect fill="#FFFFFF" height="1109.9141" style="stroke:#000000;stroke-width:1;" width="10" x="819.6392" y="515.7656"/></g><g><title>EnrollmentDomainService</title><rect fill="#FFFFFF" height="438.9922" style="stroke:#000000;stroke-width:1;" width="10" x="1127.4199" y="997.8906"/></g><g><title>StudentRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1339.5098" y="588.0313"/></g><g><title>SubjectRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1512.3057" y="838.2266"/></g><g><title>EnrollmentRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1695.7622" y="1509.1484"/></g><rect fill="#FFFFFF" height="119.6641" style="stroke:#000000;stroke-width:1;" width="911.667" x="15" y="690.4297"/><rect fill="#FFFFFF" height="133.6641" style="stroke:#000000;stroke-width:1;" width="1235.6694" x="15" y="1070.1563"/><rect fill="#FFFFFF" height="133.6641" style="stroke:#000000;stroke-width:1;" width="1235.6694" x="15" y="1275.0859"/><g><title>Estudiante</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="61.4165" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="65" x2="65" y1="128.9063" y2="1717.0781"/></g><g><title>Frontend</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="264.374" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="267.6948" x2="267.6948" y1="128.9063" y2="1717.0781"/></g><g><title>API GraphQL</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="493.2173" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="496.4404" x2="496.4404" y1="128.9063" y2="1717.0781"/></g><g><title>JWT Middleware</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="645.8027" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="648.9941" x2="648.9941" y1="128.9063" y2="1717.0781"/></g><g><title>EnrollStudentHandler</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="820.6392" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="824.6113" x2="824.6113" y1="128.9063" y2="1717.0781"/></g><g><title>EnrollmentDomainService</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="1128.4199" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1132.1704" x2="1132.1704" y1="128.9063" y2="1717.0781"/></g><g><title>StudentRepository</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="1340.5098" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1344.418" x2="1344.418" y1="128.9063" y2="1717.0781"/></g><g><title>SubjectRepository</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="1513.3057" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1516.6016" x2="1516.6016" y1="128.9063" y2="1717.0781"/></g><g><title>EnrollmentRepository</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="1696.7622" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1700.0098" x2="1700.0098" y1="128.9063" y2="1717.0781"/></g><g><title>SQL Server</title><rect fill="#000000" fill-opacity="0.00000" height="1588.1719" width="8" x="1847.8657" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1851.8325" x2="1851.8325" y1="128.9063" y2="1717.0781"/></g><g class="participant participant-head" data-participant="user"><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="74.833" x="25" y="125.6045">Estudiante</text><ellipse cx="65.4165" cy="60.6094" fill="#FFFFFF" rx="8" ry="8" style="stroke:#000000;stroke-width:1;"/><path d="M65.4165,68.6094 L65.4165,95.6094 M52.4165,76.6094 L78.4165,76.6094 M65.4165,95.6094 L52.4165,110.6094 M65.4165,95.6094 L78.4165,110.6094" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g class="participant participant-tail" data-participant="user"><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="74.833" x="25" y="1729.0732">Estudiante</text><ellipse cx="65.4165" cy="1741.375" fill="#FFFFFF" rx="8" ry="8" style="stroke:#000000;stroke-width:1;"/><path d="M65.4165,1749.375 L65.4165,1776.375 M52.4165,1757.375 L78.4165,1757.375 M65.4165,1776.375 L52.4165,1791.375 M65.4165,1776.375 L78.4165,1791.375" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g class="participant participant-head" data-participant="frontend"><rect fill="#F8F9FA" height="46.5938" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="79.3584" x="228.6948" y="81.3125"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="63.1094" x="236.8193" y="101.3076">Frontend</text><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="65.3584" x="235.6948" y="117.6045">(Angular)</text></g><g class="participant participant-tail" data-participant="frontend"><rect fill="#F8F9FA" height="46.5938" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="79.3584" x="228.6948" y="1716.0781"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="63.1094" x="236.8193" y="1736.0732">Frontend</text><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="65.3584" x="235.6948" y="1752.3701">(Angular)</text></g><g class="participant participant-head" data-participant="api"><rect fill="#F8F9FA" height="46.5938" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="119.5537" x="437.4404" y="81.3125"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="88.3613" x="453.0366" y="101.3076">API GraphQL</text><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="105.5537" x="444.4404" y="117.6045">(HotChocolate)</text></g><g class="participant participant-tail" data-participant="api"><rect fill="#F8F9FA" height="46.5938" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="119.5537" x="437.4404" y="1716.0781"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="88.3613" x="453.0366" y="1736.0732">API GraphQL</text><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="105.5537" x="444.4404" y="1752.3701">(HotChocolate)</text></g><g class="participant participant-head" data-participant="jwt"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="125.6172" x="586.9941" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="111.6172" x="593.9941" y="117.6045">JWT Middleware</text></g><g class="participant participant-tail" data-participant="jwt"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="125.6172" x="586.9941" y="1716.0781"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="111.6172" x="593.9941" y="1736.0732">JWT Middleware</text></g><g class="participant participant-head" data-participant="handler"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="164.0557" x="742.6113" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="150.0557" x="749.6113" y="117.6045">EnrollStudentHandler</text></g><g class="participant participant-tail" data-participant="handler"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="164.0557" x="742.6113" y="1716.0781"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="150.0557" x="749.6113" y="1736.0732">EnrollStudentHandler</text></g><g class="participant participant-head" data-participant="domainService"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="196.499" x="1034.1704" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="182.499" x="1041.1704" y="117.6045">EnrollmentDomainService</text></g><g class="participant participant-tail" data-participant="domainService"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="196.499" x="1034.1704" y="1716.0781"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="182.499" x="1041.1704" y="1736.0732">EnrollmentDomainService</text></g><g class="participant participant-head" data-participant="studentRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="144.1836" x="1272.418" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="130.1836" x="1279.418" y="117.6045">StudentRepository</text></g><g class="participant participant-tail" data-participant="studentRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="144.1836" x="1272.418" y="1716.0781"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="130.1836" x="1279.418" y="1736.0732">StudentRepository</text></g><g class="participant participant-head" data-participant="subjectRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="141.4082" x="1446.6016" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="127.4082" x="1453.6016" y="117.6045">SubjectRepository</text></g><g class="participant participant-tail" data-participant="subjectRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="141.4082" x="1446.6016" y="1716.0781"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="127.4082" x="1453.6016" y="1736.0732">SubjectRepository</text></g><g class="participant participant-head" data-participant="enrollRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="165.5049" x="1618.0098" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="151.5049" x="1625.0098" y="117.6045">EnrollmentRepository</text></g><g class="participant participant-tail" data-participant="enrollRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="165.5049" x="1618.0098" y="1716.0781"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="151.5049" x="1625.0098" y="1736.0732">EnrollmentRepository</text></g><g class="participant participant-head" data-participant="db"><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="78.0664" x="1809.8325" y="125.6045">SQL Server</text><path d="M1833.8657,76.6094 C1833.8657,66.6094 1851.8657,66.6094 1851.8657,66.6094 C1851.8657,66.6094 1869.8657,66.6094 1869.8657,76.6094 L1869.8657,102.6094 C1869.8657,112.6094 1851.8657,112.6094 1851.8657,112.6094 C1851.8657,112.6094 1833.8657,112.6094 1833.8657,102.6094 L1833.8657,76.6094" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1833.8657,76.6094 C1833.8657,86.6094 1851.8657,86.6094 1851.8657,86.6094 C1851.8657,86.6094 1869.8657,86.6094 1869.8657,76.6094" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g class="participant participant-tail" data-participant="db"><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="78.0664" x="1809.8325" y="1729.0732">SQL Server</text><path d="M1833.8657,1742.375 C1833.8657,1732.375 1851.8657,1732.375 1851.8657,1732.375 C1851.8657,1732.375 1869.8657,1732.375 1869.8657,1742.375 L1869.8657,1768.375 C1869.8657,1778.375 1851.8657,1778.375 1851.8657,1778.375 C1851.8657,1778.375 1833.8657,1778.375 1833.8657,1768.375 L1833.8657,1742.375" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1833.8657,1742.375 C1833.8657,1752.375 1851.8657,1752.375 1851.8657,1752.375 C1851.8657,1752.375 1869.8657,1752.375 1869.8657,1742.375" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g><title>Frontend</title><rect fill="#FFFFFF" height="1387.375" style="stroke:#000000;stroke-width:1;" width="10" x="263.374" y="311.7031"/></g><g><title>API GraphQL</title><rect fill="#FFFFFF" height="1283.7109" style="stroke:#000000;stroke-width:1;" width="10" x="492.2173" y="371.1016"/></g><g><title>JWT Middleware</title><rect fill="#FFFFFF" height="86.3984" style="stroke:#000000;stroke-width:1;" width="10" x="644.8027" y="400.2344"/></g><g><title>EnrollStudentHandler</title><rect fill="#FFFFFF" height="1109.9141" style="stroke:#000000;stroke-width:1;" width="10" x="819.6392" y="515.7656"/></g><g><title>EnrollmentDomainService</title><rect fill="#FFFFFF" height="438.9922" style="stroke:#000000;stroke-width:1;" width="10" x="1127.4199" y="997.8906"/></g><g><title>StudentRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1339.5098" y="588.0313"/></g><g><title>SubjectRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1512.3057" y="838.2266"/></g><g><title>EnrollmentRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1695.7622" y="1509.1484"/></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="1893.8989" x="5" y="159.4727"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="159.4727" y2="159.4727"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="162.4727" y2="162.4727"/><rect fill="#FFFFFF" height="23.1328" style="stroke:#000000;stroke-width:1;" width="182.4287" x="860.7351" y="148.9063"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="163.9028" x="866.7351" y="164.9731">Autenticaci&#243;n (previo)</text><path d="M22,187.0391 L22,227.0391 L310,227.0391 L310,197.0391 L300,187.0391 L22,187.0391" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M300,187.0391 L300,197.0391 L310,197.0391 L300,187.0391" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="188.811" x="50.8965" y="204.106">El estudiante ya inici&#243; sesi&#243;n</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="221.2603" x="50.8965" y="219.2388">y tiene un JWT v&#225;lido almacenado</text><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="1893.8989" x="5" y="252.8711"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="252.8711" y2="252.8711"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="255.8711" y2="255.8711"/><rect fill="#FFFFFF" height="23.1328" style="stroke:#000000;stroke-width:1;" width="189.8999" x="856.9995" y="242.3047"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="171.374" x="862.9995" y="258.3716">Solicitud de Inscripci&#243;n</text><g class="message" data-participant-1="user" data-participant-2="frontend"><polygon fill="#000000" points="251.374,307.7031,261.374,311.7031,251.374,315.7031,255.374,311.7031" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="65.4165" x2="257.374" y1="311.7031" y2="311.7031"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="124.7061" x="102.0422" y="291.5044">Selecciona materia</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="157.4473" x="85.6716" y="306.6372">y hace clic en "Inscribir"</text></g><g class="message" data-participant-1="frontend" data-participant-2="api"><polygon fill="#000000" points="480.2173,367.1016,490.2173,371.1016,480.2173,375.1016,484.2173,371.1016" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="273.374" x2="486.2173" y1="371.1016" y2="371.1016"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="156.0063" x="304.7925" y="335.77">mutation enrollStudent(</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="134.3228" x="319.7666" y="350.9028">studentId, subjectId)</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="199.8433" x="282.874" y="366.0356">[Authorization: Bearer &lt;JWT&gt;]</text></g><g class="message" data-participant-1="api" data-participant-2="jwt"><polygon fill="#000000" points="632.8027,396.2344,642.8027,400.2344,632.8027,404.2344,636.8027,400.2344" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="502.2173" x2="638.8027" y1="400.2344" y2="400.2344"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="82.1577" x="532.4312" y="395.1685">Validate JWT</text></g><g class="message" data-participant-1="jwt" data-participant-2="jwt"><line style="stroke:#000000;stroke-width:1;" x1="654.8027" x2="696.8027" y1="444.5" y2="444.5"/><line style="stroke:#000000;stroke-width:1;" x1="696.8027" x2="696.8027" y1="444.5" y2="457.5"/><line style="stroke:#000000;stroke-width:1;" x1="655.8027" x2="696.8027" y1="457.5" y2="457.5"/><polygon fill="#000000" points="665.8027,453.5,655.8027,457.5,665.8027,461.5,661.8027,457.5" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="103.7715" x="661.8027" y="424.3013">Verify signature</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="80.0376" x="673.6697" y="439.4341">&amp; expiration</text></g><g class="message" data-participant-1="jwt" data-participant-2="api"><polygon fill="#000000" points="513.2173,482.6328,503.2173,486.6328,513.2173,490.6328,509.2173,486.6328" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="507.2173" x2="648.8027" y1="486.6328" y2="486.6328"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="99.3281" x="526.3459" y="481.5669">ClaimsPrincipal</text></g><g class="message" data-participant-1="api" data-participant-2="handler"><polygon fill="#000000" points="807.6392,511.7656,817.6392,515.7656,807.6392,519.7656,811.6392,515.7656" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="502.2173" x2="813.6392" y1="515.7656" y2="515.7656"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="210.9517" x="555.4524" y="510.6997">Handle(EnrollStudentCommand)</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="1893.8989" x="5" y="544.332"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="544.332" y2="544.332"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="547.332" y2="547.332"/><rect fill="#FFFFFF" height="23.1328" style="stroke:#000000;stroke-width:1;" width="163.1382" x="870.3804" y="533.7656"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="144.6123" x="876.3804" y="549.8325">Obtenci&#243;n de Datos</text><g class="message" data-participant-1="handler" data-participant-2="studentRepo"><polygon fill="#000000" points="1327.5098,584.0313,1337.5098,588.0313,1327.5098,592.0313,1331.5098,588.0313" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="829.6392" x2="1333.5098" y1="588.0313" y2="588.0313"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="270.0864" x="949.5313" y="582.9653">GetByIdWithEnrollmentsAsync(studentId)</text></g><g class="message" data-participant-1="studentRepo" data-participant-2="db"><polygon fill="#000000" points="1839.8657,613.1641,1849.8657,617.1641,1839.8657,621.1641,1843.8657,617.1641" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1349.5098" x2="1845.8657" y1="617.1641" y2="617.1641"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="201.1509" x="1500.1123" y="612.0981">SELECT Student + Enrollments</text></g><g class="message" data-participant-1="db" data-participant-2="studentRepo"><polygon fill="#000000" points="1360.5098,642.2969,1350.5098,646.2969,1360.5098,650.2969,1356.5098,646.2969" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1354.5098" x2="1850.8657" y1="646.2969" y2="646.2969"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="84.5889" x="1558.3933" y="641.231">Student data</text></g><g class="message" data-participant-1="studentRepo" data-participant-2="handler"><polygon fill="#000000" points="840.6392,671.4297,830.6392,675.4297,840.6392,679.4297,836.6392,675.4297" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="834.6392" x2="1343.5098" y1="675.4297" y2="675.4297"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="51.1748" x="1061.4871" y="670.3638">Student</text></g><path d="M15,690.4297 L79.4429,690.4297 L79.4429,697.5625 L69.4429,707.5625 L15,707.5625 L15,690.4297" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="119.6641" style="stroke:#000000;stroke-width:1;" width="911.667" x="15" y="690.4297"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19.4429" x="30" y="703.4966">alt</text><text fill="#000000" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="129.8408" x="94.4429" y="702.6401">[Cuenta no activada]</text><g class="message" data-participant-1="handler" data-participant-2="api"><polygon fill="#000000" points="513.2173,724.6953,503.2173,728.6953,513.2173,732.6953,509.2173,728.6953" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="507.2173" x2="818.6392" y1="728.6953" y2="728.6953"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="179.4482" x="571.2041" y="723.6294">Error: "Cuenta no activada"</text></g><g class="message" data-participant-1="api" data-participant-2="frontend"><polygon fill="#000000" points="284.374,753.8281,274.374,757.8281,284.374,761.8281,280.374,757.8281" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="278.374" x2="491.2173" y1="757.8281" y2="757.8281"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="94.6182" x="335.4866" y="752.7622">{ errors: [...] }</text></g><g class="message" data-participant-1="frontend" data-participant-2="user"><polygon fill="#000000" points="76.4165,798.0938,66.4165,802.0938,76.4165,806.0938,72.4165,802.0938" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="70.4165" x2="262.374" y1="802.0938" y2="802.0938"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="116.397" x="106.1968" y="781.895">Muestra mensaje:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="173.9575" x="77.4165" y="797.0278">"Activa tu cuenta primero"</text></g><g class="message" data-participant-1="handler" data-participant-2="subjectRepo"><polygon fill="#000000" points="1500.3057,834.2266,1510.3057,838.2266,1500.3057,842.2266,1504.3057,838.2266" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="829.6392" x2="1506.3057" y1="838.2266" y2="838.2266"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="159.9609" x="1090.9919" y="833.1606">GetByIdAsync(subjectId)</text></g><g class="message" data-participant-1="subjectRepo" data-participant-2="db"><polygon fill="#000000" points="1839.8657,863.3594,1849.8657,867.3594,1839.8657,871.3594,1843.8657,867.3594" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1522.3057" x2="1845.8657" y1="867.3594" y2="867.3594"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="101.6704" x="1636.2505" y="862.2935">SELECT Subject</text></g><g class="message" data-participant-1="db" data-participant-2="subjectRepo"><polygon fill="#000000" points="1533.3057,892.4922,1523.3057,896.4922,1533.3057,900.4922,1529.3057,896.4922" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1527.3057" x2="1850.8657" y1="896.4922" y2="896.4922"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="82.0117" x="1646.0798" y="891.4263">Subject data</text></g><g class="message" data-participant-1="subjectRepo" data-participant-2="handler"><polygon fill="#000000" points="840.6392,921.625,830.6392,925.625,840.6392,929.625,836.6392,925.625" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="834.6392" x2="1516.3057" y1="925.625" y2="925.625"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="48.5977" x="1149.1736" y="920.5591">Subject</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="1893.8989" x="5" y="954.1914"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="954.1914" y2="954.1914"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="957.1914" y2="957.1914"/><rect fill="#FFFFFF" height="23.1328" style="stroke:#000000;stroke-width:1;" width="257.1724" x="823.3633" y="943.625"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="238.6465" x="829.3633" y="959.6919">Validaci&#243;n de Reglas de Negocio</text><g class="message" data-participant-1="handler" data-participant-2="domainService"><polygon fill="#000000" points="1115.4199,993.8906,1125.4199,997.8906,1115.4199,1001.8906,1119.4199,997.8906" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="829.6392" x2="1121.4199" y1="997.8906" y2="997.8906"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="239.5923" x="858.7334" y="992.8247">ValidateEnrollment(student, subject)</text></g><g class="message" data-participant-1="domainService" data-participant-2="domainService"><line style="stroke:#000000;stroke-width:1;" x1="1137.4199" x2="1179.4199" y1="1042.1563" y2="1042.1563"/><line style="stroke:#000000;stroke-width:1;" x1="1179.4199" x2="1179.4199" y1="1042.1563" y2="1055.1563"/><line style="stroke:#000000;stroke-width:1;" x1="1138.4199" x2="1179.4199" y1="1055.1563" y2="1055.1563"/><polygon fill="#000000" points="1148.4199,1051.1563,1138.4199,1055.1563,1148.4199,1059.1563,1144.4199,1055.1563" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="154.7559" x="1144.4199" y="1021.9575">CheckMaxEnrollments()</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="112.4233" x="1165.5862" y="1037.0903">[m&#225;x 3 materias]</text></g><path d="M15,1070.1563 L79.4429,1070.1563 L79.4429,1077.2891 L69.4429,1087.2891 L15,1087.2891 L15,1070.1563" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="133.6641" style="stroke:#000000;stroke-width:1;" width="1235.6694" x="15" y="1070.1563"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19.4429" x="30" y="1083.2231">alt</text><text fill="#000000" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="182.5151" x="94.4429" y="1082.3667">[Estudiante tiene 3 materias]</text><g class="message" data-participant-1="domainService" data-participant-2="handler"><polygon fill="#000000" points="840.6392,1104.4219,830.6392,1108.4219,840.6392,1112.4219,836.6392,1108.4219" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="834.6392" x2="1126.4199" y1="1108.4219" y2="1108.4219"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="273.7808" x="841.6392" y="1103.356">throw MaxEnrollmentsExceededException</text></g><g class="message" data-participant-1="handler" data-participant-2="api"><polygon fill="#000000" points="513.2173,1133.5547,503.2173,1137.5547,513.2173,1141.5547,509.2173,1137.5547" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="507.2173" x2="818.6392" y1="1137.5547" y2="1137.5547"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="244.8926" x="538.4819" y="1132.4888">Error: "L&#237;mite de materias alcanzado"</text></g><g class="message" data-participant-1="api" data-participant-2="frontend"><polygon fill="#000000" points="284.374,1162.6875,274.374,1166.6875,284.374,1170.6875,280.374,1166.6875" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="278.374" x2="491.2173" y1="1166.6875" y2="1166.6875"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="94.6182" x="335.4866" y="1161.6216">{ errors: [...] }</text></g><g class="message" data-participant-1="frontend" data-participant-2="user"><polygon fill="#000000" points="76.4165,1191.8203,66.4165,1195.8203,76.4165,1199.8203,72.4165,1195.8203" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="70.4165" x2="262.374" y1="1195.8203" y2="1195.8203"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="168.5176" x="80.1365" y="1190.7544">Muestra mensaje de error</text></g><g class="message" data-participant-1="domainService" data-participant-2="domainService"><line style="stroke:#000000;stroke-width:1;" x1="1137.4199" x2="1179.4199" y1="1247.0859" y2="1247.0859"/><line style="stroke:#000000;stroke-width:1;" x1="1179.4199" x2="1179.4199" y1="1247.0859" y2="1260.0859"/><line style="stroke:#000000;stroke-width:1;" x1="1138.4199" x2="1179.4199" y1="1260.0859" y2="1260.0859"/><polygon fill="#000000" points="1148.4199,1256.0859,1138.4199,1260.0859,1148.4199,1264.0859,1144.4199,1260.0859" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="178.0898" x="1144.4199" y="1226.8872">CheckProfessorConstraint()</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="132.4438" x="1167.2429" y="1242.02">[no repetir profesor]</text></g><path d="M15,1275.0859 L79.4429,1275.0859 L79.4429,1282.2188 L69.4429,1292.2188 L15,1292.2188 L15,1275.0859" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="133.6641" style="stroke:#000000;stroke-width:1;" width="1235.6694" x="15" y="1275.0859"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19.4429" x="30" y="1288.1528">alt</text><text fill="#000000" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="210.3643" x="94.4429" y="1287.2964">[Ya tiene materia con el profesor]</text><g class="message" data-participant-1="domainService" data-participant-2="handler"><polygon fill="#000000" points="840.6392,1309.3516,830.6392,1313.3516,840.6392,1317.3516,836.6392,1313.3516" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="834.6392" x2="1126.4199" y1="1313.3516" y2="1313.3516"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="270.4419" x="843.3086" y="1308.2856">throw SameProfessorConstraintException</text></g><g class="message" data-participant-1="handler" data-participant-2="api"><polygon fill="#000000" points="513.2173,1338.4844,503.2173,1342.4844,513.2173,1346.4844,509.2173,1342.4844" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="507.2173" x2="818.6392" y1="1342.4844" y2="1342.4844"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="285.0098" x="518.4233" y="1337.4185">Error: "Ya tienes materia con este profesor"</text></g><g class="message" data-participant-1="api" data-participant-2="frontend"><polygon fill="#000000" points="284.374,1367.6172,274.374,1371.6172,284.374,1375.6172,280.374,1371.6172" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="278.374" x2="491.2173" y1="1371.6172" y2="1371.6172"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="94.6182" x="335.4866" y="1366.5513">{ errors: [...] }</text></g><g class="message" data-participant-1="frontend" data-participant-2="user"><polygon fill="#000000" points="76.4165,1396.75,66.4165,1400.75,76.4165,1404.75,72.4165,1400.75" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="70.4165" x2="262.374" y1="1400.75" y2="1400.75"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="168.5176" x="80.1365" y="1395.6841">Muestra mensaje de error</text></g><g class="message" data-participant-1="domainService" data-participant-2="handler"><polygon fill="#000000" points="840.6392,1432.8828,830.6392,1436.8828,840.6392,1440.8828,836.6392,1436.8828" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="834.6392" x2="1131.4199" y1="1436.8828" y2="1436.8828"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="90.1431" x="935.958" y="1431.8169">Validaci&#243;n OK</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="1893.8989" x="5" y="1465.4492"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="1465.4492" y2="1465.4492"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1898.8989" y1="1468.4492" y2="1468.4492"/><rect fill="#FFFFFF" height="23.1328" style="stroke:#000000;stroke-width:1;" width="108.4341" x="897.7324" y="1454.8828"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="89.9082" x="903.7324" y="1470.9497">Persistencia</text><g class="message" data-participant-1="handler" data-participant-2="enrollRepo"><polygon fill="#000000" points="1683.7622,1505.1484,1693.7622,1509.1484,1683.7622,1513.1484,1687.7622,1509.1484" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="829.6392" x2="1689.7622" y1="1509.1484" y2="1509.1484"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="145.0439" x="1190.1787" y="1504.0825">AddAsync(enrollment)</text></g><g class="message" data-participant-1="enrollRepo" data-participant-2="db"><polygon fill="#000000" points="1839.8657,1534.2813,1849.8657,1538.2813,1839.8657,1542.2813,1843.8657,1538.2813" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1705.7622" x2="1845.8657" y1="1538.2813" y2="1538.2813"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="122.1035" x="1717.7622" y="1533.2153">INSERT Enrollment</text></g><g class="message" data-participant-1="db" data-participant-2="enrollRepo"><polygon fill="#000000" points="1716.7622,1563.4141,1706.7622,1567.4141,1716.7622,1571.4141,1712.7622,1567.4141" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1710.7622" x2="1850.8657" y1="1567.4141" y2="1567.4141"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="18.7573" x="1769.4353" y="1562.3481">OK</text></g><g class="message" data-participant-1="enrollRepo" data-participant-2="handler"><polygon fill="#000000" points="840.6392,1592.5469,830.6392,1596.5469,840.6392,1600.5469,836.6392,1596.5469" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="834.6392" x2="1699.7622" y1="1596.5469" y2="1596.5469"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="70.9731" x="1229.7141" y="1591.481">Enrollment</text></g><g class="message" data-participant-1="handler" data-participant-2="api"><polygon fill="#000000" points="513.2173,1621.6797,503.2173,1625.6797,513.2173,1629.6797,509.2173,1625.6797" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="507.2173" x2="823.6392" y1="1625.6797" y2="1625.6797"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="122.2559" x="602.3003" y="1620.6138">EnrollmentPayload</text></g><g class="message" data-participant-1="api" data-participant-2="frontend"><polygon fill="#000000" points="284.374,1650.8125,274.374,1654.8125,284.374,1658.8125,280.374,1654.8125" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="278.374" x2="496.2173" y1="1654.8125" y2="1654.8125"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="133.0151" x="318.7881" y="1649.7466">{ enrollment: {...} }</text></g><g class="message" data-participant-1="frontend" data-participant-2="user"><polygon fill="#000000" points="76.4165,1695.0781,66.4165,1699.0781,76.4165,1703.0781,72.4165,1699.0781" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="70.4165" x2="267.374" y1="1699.0781" y2="1699.0781"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="145.6025" x="94.094" y="1678.8794">Muestra confirmaci&#243;n:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="145.2534" x="94.2686" y="1694.0122">"Inscrito en [materia]"</text></g><!--SRC=[lLRRRXit47tVhvYgG26XYL6W3Te8TG1PaHErLg9OHeF2yWD5ZYNQk-I6vDfMYdnCFg1F_GJ_M8VS6rTMKpyKVRAyU-RCSCwPMNxbDfWXv2cJAh7NKkNCi0miVYXGSPoXjMoDerIk5N1K3as4CcXphMoDEi9KtuwCqRVWJ85xwERCECbbpfGxOlnwRNIXn5Ydsi3NnpyTFpyU_KkGDW9D5V33ysVVFVinIPnqAS82kKTBDeIfijp8dClxlnG8X8brXP0KZe0APemE8HdqkLRmo_kpGP8mxeYmr-9wm2mKbWwRjycXTsmqlLHYgVeZjIvIPWO1ULazxw97yocyCYpVl3kXWDVQZJUQwvJIbr4ibzq0AWPcKeWKRvafQxYwTLtCH1cTfWigbCHupHI1JK1koj_xq1b1N-gC55wWkP6yf1RnasvOHN-AkRQIMhCD0RPzkWClLbV87y3Rf_zKr4u4XXSXG337LimYaRyx0LzaTKonIfB3GnWLr6-YPAN8_TpWZTG3E3nC4gL9Q4q1GS4dhJe0anImDSEMWLJICv3Nh2SYo1QSH8LG17F0pVtdL0eDBCqO-Py9dH0L-1oXa8LEYO4elT4wnlEb-0BWwOkc11ZIMLBaN6h582kTk5HRKeyZSABo3ksLF2jfUjwQyePmxIcIXeo8oKF4cHMEEQAiEbZ9rrygg4MRYYUr85CnMAfpQk166_ann0tX2Cbn1dwc8x-uQ9DwYoO-1wKYArAgtnYrmxyYP8lpDlNlMnWTx78BbjO6SuN1fVe6y2wN9kGhiKtvOre-cPqRgRn5qaHWXxWke78u1PI-xtTcOQopZ1uFsgBgYV0olLqvlnogXV2IEMs3G3KdqKVsfXIlq1rjf-AzT9lMhtPajuhtcvv6oUBXY9c8MAoyx9EJoVWCgcBXMuXO4q8yVL113VMZqANizAA2nKsBQqbOwc1Ccz4nCYsK6C78wD2Gj4fCQ7cR8VGU1lH2H52Yw-S_07sG7SBvmS711NmAmDQZX0vJC8HPGRDdoFQeBBl2uLBrHe4TN06yp9WRcQ7HlIGuFLQdtIQjEfKSZQyZEQBb4uVkob6-QWJe9AbULWB495q1QWxSczsxhnoQndwdk4xzAaDuWsjDks3NYftL70rTwvdQWyrKHsVlBlQaIxQ7VRn1VZrZTv4Z-tv5PFUVx-3xUalPYz9BqSUqN9Gj8YY_awxJAhVnTuDkgiaTHnGe_DyyB8SlM_Fa_izC-bDYavUMCsVg8-tc_zwbFay8BHtvk6REZRwaAv6ccuhoP984ynsbUJAOevE6ZEuXsbHT_PrLtQpE1FvoWca3UsHh5op3FSaVszkw2jijmrAxwqB-xmvt3XdFqTjVuudRyJpDt1oDbJPiVROxN-r5WqX7ejeZs9Wo6gReJX95rMja-cOnEJsBTdczIJePgDGujdEaE1JtPKtsoDN4pDasrKp4eSrNRxz6JIZzHpfz8fsYuF2z_v9cv8TBQR9I0x_1owkAq_xUSbwvvg8NSpONbxy1]--></g></svg>