Source Code 32
Source Code 32
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<style>
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Segoe UI",Arial,sans-
serif;background:#e8f0f7;color:#1a2a1a;font-size:12px}
/* HEADER */
.hdr{background:linear-gradient(135deg,#0a3d1f 0%,#1a6b3a
50%,#0a3d1f 100%);padding:0;display:flex;align-items:stretch;border-
bottom:4px solid #27ae60;box-shadow:0 3px 12px rgba(0,0,0,.35)}
.hdr-logo{background:rgba(255,255,255,.97);padding:8px
18px;display:flex;align-items:center;border-right:3px solid #27ae60;min-
width:220px}
.hdr-logo img{height:54px;object-fit:contain}
.hdr-center{flex:1;padding:10px 20px;display:flex;flex-
direction:column;justify-content:center}
.hdr-title{font-size:19px;font-weight:800;color:#fff;letter-spacing:.5px;text-
shadow:1px 1px 4px rgba(0,0,0,.4);line-height:1.2}
.hdr-sub{font-size:10px;color:#a8d5b5;margin-top:3px;letter-spacing:.3px}
.hdr-right{display:flex;flex-direction:column;align-items:flex-end;justify-
content:center;padding:10px 16px;gap:5px}
.hdr-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.hbadge{padding:3px 10px;border-radius:3px;font-size:10px;font-
weight:700;letter-spacing:.3px}
.[Link]{background:#27ae60;color:#fff}
.[Link]{background:rgba(255,255,255,.15);color:#fff;border:1px solid
rgba(255,255,255,.3)}
.[Link]{background:#e74c3c;color:#fff;cursor:pointer}
.[Link]:hover{background:#c0392b}
.hdr-leader{font-size:9px;color:#a8d5b5;text-align:right}
.hdr-leader span{color:#fff;font-weight:600}
/*
═══════════════════════════════════════════════════════
════════
LOGIN MODAL — Role-Based Card Selection (v2)
═══════════════════════════════════════════════════════
════════ */
/*
═══════════════════════════════════════════════════════
════════
LOGIN OVERLAY — Integrated Corporate Branding (v3)
═══════════════════════════════════════════════════════
════════ */
.login-overlay{
display:none;position:fixed;inset:0;z-index:10000;
align-items:center;justify-content:center;
background:
radial-gradient(ellipse at 20% 50%, rgba(10,61,31,.55) 0%, transparent
60%),
backdrop-filter:blur(2px);
pointer-events:all;
.[Link]{display:flex}
.login-overlay::before{
content:"";position:absolute;inset:0;
background:
repeating-linear-gradient(90deg,transparent 0px,transparent
119px,rgba(39,174,96,.07) 119px,rgba(39,174,96,.07) 120px),
repeating-linear-gradient(0deg,transparent 0px,transparent
59px,rgba(39,174,96,.04) 59px,rgba(39,174,96,.04) 60px);
pointer-events:none;
/* ── Login card ── */
.login-box{
z-index:10001;
background:#fff;border-radius:16px;
width:500px;max-width:96vw;
box-shadow:
0 32px 80px rgba(0,0,0,.65),
0 0 0 1px rgba(39,174,96,.2),
0 0 60px rgba(10,61,31,.3);
position:relative;
overflow:hidden;
.login-box::after{
content:"";position:absolute;bottom:0;left:0;right:0;height:4px;
background:repeating-linear-gradient(90deg,#27ae60 0px,#27ae60
20px,#0a3d1f 20px,#0a3d1f 40px);
z-index:2;
/* ══════════════════════════════════════
══════════════════════════════════════ */
.login-brand-panel{
position:relative;
overflow:hidden;
border-radius:16px 16px 0 0;
/* Decorative geometry */
.login-brand-panel::before{
content:"";position:absolute;
top:-40px;right:-40px;
width:160px;height:160px;
border-radius:50%;
background:radial-gradient(circle,rgba(39,174,96,.22) 0%,transparent
70%);
pointer-events:none;
.login-brand-panel::after{
content:"";position:absolute;
bottom:-20px;left:-20px;
width:120px;height:120px;
border-radius:50%;
background:radial-gradient(circle,rgba(255,255,255,.04) 0%,transparent
70%);
pointer-events:none;
.login-brand-stripe{
position:absolute;bottom:0;left:0;right:0;height:3px;
background:repeating-linear-gradient(90deg,#27ae60 0px,#27ae60
14px,rgba(255,255,255,.12) 14px,rgba(255,255,255,.12) 18px);
.login-brand-inner{
display:flex;align-items:center;gap:18px;position:relative;z-index:1;
}
.login-emblem{
width:76px;height:76px;border-radius:12px;
background:linear-
gradient(145deg,rgba(255,255,255,.98),rgba(240,248,240,.95));
display:flex;align-items:center;justify-content:center;
flex-shrink:0;
box-shadow:
0 0 0 3px rgba(39,174,96,.45),
position:relative;overflow:hidden;
.login-emblem::before{
content:"";position:absolute;bottom:0;left:0;right:0;height:3px;
background:linear-gradient(90deg,#27ae60,#1a6b3a);
.login-emblem img{
height:58px;width:58px;object-fit:contain;
/* Text block */
.login-brand-text{flex:1;min-width:0}
.login-brand-org{
font-size:9px;font-weight:800;color:rgba(255,255,255,.55);
letter-spacing:1.4px;text-transform:uppercase;
margin-bottom:3px;
.login-brand-name{
font-size:17px;font-weight:900;color:#fff;
letter-spacing:.4px;line-height:1.15;
margin-bottom:3px;
.login-brand-name span{color:#5dd68a}
.login-brand-div{
font-size:9.5px;font-weight:600;color:rgba(255,255,255,.55);
letter-spacing:.6px;margin-bottom:8px;
.login-badges-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.login-sys-badge{
display:inline-flex;align-items:center;gap:4px;
border-radius:4px;padding:3px 8px;
font-size:8.5px;font-weight:800;color:#7ee8a2;
letter-spacing:.4px;text-transform:uppercase;
.[Link]{
background:rgba(255,255,255,.08);border-
color:rgba(255,255,255,.2);color:rgba(255,255,255,.7);
}
/* Divider label */
.login-step-label{
font-size:9px;font-weight:800;color:#0a3d1f;letter-spacing:.8px;
text-transform:uppercase;margin-bottom:10px;
display:flex;align-items:center;gap:8px;
.login-step-label::before,.login-step-label::after{
content:"";flex:1;height:1px;background:#d4e8d4;
.role-cards{display:flex;gap:12px;margin-bottom:20px;position:relative;z-
index:1}
.role-card{
background:#f8fdf8;position:relative;
user-select:none;
pointer-events:all;
-webkit-tap-highlight-color:rgba(39,174,96,.18);
}
.role-card:hover{
border-color:#27ae60;background:#edfaf0;
/* Selected state */
.[Link]{
border-color:#0a3d1f;background:linear-gradient(135deg,#edfaf0,#d4efdf);
.[Link]::before{
content:"✓";position:absolute;top:7px;right:10px;
font-size:11px;font-weight:900;color:#0a3d1f;
.[Link]-card .rc-icon{background:linear-
gradient(135deg,#0a3d1f,#1a6b3a)}
.[Link]-card .rc-icon{background:linear-
gradient(135deg,#1e8449,#27ae60)}
.[Link]-admin-card .rc-icon{background:linear-
gradient(135deg,#7d6000,#b8860b)}
.[Link]-admin-card{border-color:#c9a227}
.[Link]-admin-card:hover{border-
color:#b8860b;background:#fffbea}
.[Link]{border-
color:#7d6000;background:linear-gradient(135deg,#fffbea,#fef3cd)}
.rc-icon{
width:44px;height:44px;border-radius:50%;display:flex;align-items:center;
.rc-name{font-size:13px;font-weight:800;color:#0a3d1f;margin-bottom:2px}
.rc-desc{font-size:9px;color:#666;margin-bottom:8px;line-height:1.4}
.rc-perms{list-style:none;padding:0;margin:0;text-align:left}
.rc-perms li::before{content:"•";color:#27ae60;font-weight:900;font-
size:10px}
.rc-perms [Link]::before{content:"✕";color:#e74c3c;font-size:8px}
.rc-icon,.rc-name,.rc-desc{pointer-events:none}
.pw-section{
padding:16px;margin-bottom:16px;
pointer-events:all;
.[Link]{display:block}
@keyframes fadeSlideIn{from{opacity:0;transform:translateY(-
6px)}to{opacity:1;transform:translateY(0)}}
.pw-role-badge{
display:inline-flex;align-items:center;gap:5px;
background:#0a3d1f;color:#fff;border-radius:20px;
padding:3px 10px;font-size:9px;font-weight:700;
margin-bottom:10px;letter-spacing:.3px;
.pw-label{font-size:10px;font-weight:700;color:#0a3d1f;margin-
bottom:4px;display:block;letter-spacing:.05em}
.pw-input-wrap{position:relative}
.pw-input-wrap input{
outline:none;transition:border .15s;background:#fff;
.pw-toggle{
position:absolute;right:10px;top:50%;transform:translateY(-50%);
background:none;border:none;cursor:pointer;font-size:13px;
color:#888;line-height:1;padding:2px;
/* Sign-in button */
.login-btn{
width:100%;border:none;border-radius:8px;padding:12px;
font-size:13px;font-weight:800;cursor:pointer;
font-family:inherit;letter-spacing:.3px;transition:all .18s;
background:linear-gradient(135deg,#0a3d1f,#1a6b3a);color:#fff;
.login-btn:hover:not(:disabled){
background:linear-gradient(135deg,#073016,#145730);
.login-btn:disabled{background:#c8d8c8;color:#888;cursor:not-allowed;box-
shadow:none;transform:none}
.login-btn:not(:disabled){pointer-events:all;cursor:pointer}
/* Error message */
.login-err{color:#c0392b;font-size:10px;text-align:center;margin-
top:9px;display:none;
/* Responsive */
@media(max-width:520px){
.login-box{border-radius:12px}
.login-emblem{width:62px;height:62px}
.login-emblem img{height:46px;width:46px}
.login-brand-name{font-size:14px}
/* NAV */
.nav-bar{background:#0a3d1f;display:flex;gap:0;padding:0 8px;overflow-
x:auto;border-bottom:2px solid #27ae60}
.nav-tab{padding:9px 15px;cursor:pointer;font-size:11px;font-
weight:600;color:#a8d5b5;border-bottom:3px solid transparent;white-
space:nowrap;transition:all .15s;display:flex;align-items:center;gap:5px}
.nav-tab:hover{color:#fff;background:rgba(255,255,255,.08)}
.[Link]{color:#fff;border-bottom-
color:#27ae60;background:rgba(255,255,255,.1)}
/* PAGES */
.page{display:none;padding:10px;min-height:calc(100vh - 130px)}
.[Link]{display:block}
/* WIDGET */
.row{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.widget{background:#fff;border-radius:5px;border:1px solid
#c8d8c8;overflow:hidden;box-shadow:0 1px 5px rgba(0,0,0,.07)}
.wh{padding:6px 10px;font-size:10px;font-weight:800;display:flex;align-
items:center;justify-content:space-between;letter-spacing:.6px;color:#fff}
.[Link]{background:linear-gradient(90deg,#0a3d1f,#1a6b3a)}
.[Link]{background:linear-gradient(90deg,#1e8449,#27ae60)}
.[Link]{background:linear-gradient(90deg,#0e6655,#17a589)}
.[Link]{background:linear-gradient(90deg,#7b241c,#e74c3c)}
.[Link]{background:linear-gradient(90deg,#1a252f,#2c3e50)}
.[Link]{background:linear-gradient(90deg,#784212,#d35400)}
.[Link]{background:linear-gradient(90deg,#4a235a,#8e44ad)}
.wb{padding:8px 10px}
/* FLEX UTILS */
.f1{flex:1;min-width:0}
.fw2{width:calc(50% - 4px)}
.fw3{width:calc(33.33% - 6px)}
.fw25{width:calc(25% - 6px)}
.fw75{width:calc(75% - 4px)}
.fw66{width:calc(66.66% - 4px)}
/* KPI TILE */
.kpi-grid{display:grid;gap:6px}
.kpi-val{font-size:22px;font-weight:800;color:#0a3d1f;line-height:1}
.kpi-lbl{font-size:9px;color:#555;margin-top:2px;font-weight:600}
.[Link]-kpi{border-left-color:#e74c3c}.[Link]-kpi .kpi-val{color:#c0392b}
.[Link]-kpi{border-left-color:#d35400}.[Link]-kpi .kpi-
val{color:#d35400}
.[Link]-kpi{border-left-color:#2980b9}.[Link]-kpi .kpi-
val{color:#2980b9}
.[Link]-kpi{border-left-color:#27ae60}.[Link]-kpi .kpi-
val{color:#1e8449}
/* HBAR */
.hbr{display:flex;align-items:center;gap:5px;margin-bottom:5px}
.hbr-lbl{width:130px;font-size:9px;color:#333;text-align:right;flex-
shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.[Link]{width:90px}
.hbr-track{flex:1;height:16px;background:#e8f0e8;border-
radius:2px;overflow:hidden}
.hbr-fill{height:100%;border-radius:2px;display:flex;align-
items:center;padding-left:5px;font-size:9px;color:#fff;font-weight:700;min-
width:20px}
.hbr-num{font-size:9px;color:#333;width:32px;text-align:right;flex-shrink:0}
/* PBAR */
.pbar{height:8px;background:#e8f0e8;border-
radius:4px;overflow:hidden;margin-top:2px}
.pbar-f{height:100%;border-radius:4px}
/* BADGE */
.bdg{display:inline-block;padding:2px 7px;border-radius:10px;font-
size:9px;font-weight:700}
.bdg.g{background:#d4efdf;color:#1e8449}
.bdg.r{background:#fadbd8;color:#c0392b}
.bdg.o{background:#fdebd0;color:#d35400}
.bdg.b{background:#d6eaf8;color:#1a5276}
.[Link]{background:#eaecee;color:#555}
.bdg.p{background:#e8daef;color:#6c3483}
/* TABLE */
.tbl{width:100%;border-collapse:collapse;font-size:10px}
.tbl td:first-child{font-weight:600}
/* CRITICAL MILESTONES TABLE */
.cms-table{width:100%;border-collapse:collapse;font-size:9px;min-
width:720px}
.cms-table th:last-child{border-right:none}
.cms-table td:last-child{border-right:none}
.cms-row-critical td{background:#fff8f6!important}
.cms-row-critical:hover td{background:#fdeee8!important}
.cms-row-overdue td{background:#fdf0ef!important}
.cms-row-overdue:hover td{background:#fce4e1!important}
.cms-row-due30 td{background:#fffbf0!important}
.cms-row-due30:hover td{background:#fff5de!important}
.cms-proj-chip{display:inline-block;padding:2px 7px;border-radius:3px;font-
size:8px;font-weight:800;white-space:nowrap;letter-spacing:.2px}
.cms-ms-name{font-weight:800;color:#0a3d1f;font-size:9px;line-height:1.3}
.cms-activity{font-size:8px;color:#1a6b3a;font-weight:700;margin-top:1px}
.cms-days-badge{display:inline-block;padding:3px 8px;border-
radius:4px;font-size:8.5px;font-weight:800;white-space:nowrap;min-
width:58px;text-align:center}
.cms-days-overdue{background:#fadbd8;color:#c0392b;border:1px solid
#f5c6c3}
.cms-days-due30{background:#fdebd0;color:#a04000;border:1px solid
#f8cda0}
.cms-days-normal{background:#eafaf1;color:#1e8449;border:1px solid
#a9dfbf}
.cms-status-badge{display:inline-block;padding:2px 8px;border-
radius:8px;font-size:8px;font-weight:800;white-space:nowrap}
.cms-filter-bar{display:flex;gap:6px;padding:7px
10px;background:#f4f9f2;border-bottom:1px solid #dde8d0;flex-
wrap:wrap;align-items:center}
.cms-filter-btn{padding:3px 10px;border-radius:3px;font-size:8.5px;font-
weight:700;border:1px solid
#c8d8c8;background:#fff;color:#555;cursor:pointer;font-
family:inherit;transition:all .15s}
.[Link]{background:#0a3d1f;color:#fff;border-color:#0a3d1f}
.cms-legend{display:flex;gap:12px;align-items:center;margin-left:auto;flex-
wrap:wrap}
.cms-leg-item{display:flex;align-items:center;gap:4px;font-
size:8px;color:#666;font-weight:600}
.cms-leg-dot{width:10px;height:10px;border-radius:2px}
.cms-empty{text-align:center;padding:30px;color:#aaa;font-size:10px}
.cms-date-col{white-space:nowrap;font-size:9px}
.cms-date-delayed{color:#c0392b;font-weight:700}
.cms-date-normal{color:#555}
.cms-variance{font-size:8px;font-weight:700;margin-top:1px}
/* GANTT */
.gantt-lbl{width:180px;font-size:9px;color:#333;flex-shrink:0;white-
space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.gantt-track{flex:1;height:18px;background:#e8f0e8;border-
radius:3px;position:relative;overflow:hidden}
.gantt-bar{height:100%;border-
radius:3px;position:absolute;display:flex;align-items:center;padding:0
5px;font-size:9px;color:#fff;font-weight:700;white-
space:nowrap;overflow:hidden}
.gantt-pct{font-size:9px;width:32px;text-align:right;color:#333;flex-shrink:0}
.gantt-months{display:flex;margin-left:186px;margin-bottom:4px}
.gantt-m{flex:1;font-size:8px;color:#0a3d1f;font-weight:700;text-
align:center;border-left:1px solid #c8d8c8;padding:1px 0}
/* RISK MATRIX */
.rm{border-collapse:collapse;width:100%;font-size:10px}
.rm-r{background:#e74c3c;color:#fff}
.rm-o{background:#f39c12;color:#fff}
.rm-y{background:#f1c40f;color:#333}
.rm-g{background:#27ae60;color:#fff}
.rm-t{background:#1abc9c;color:#fff}
.rm-h{background:#0a3d1f;color:#fff;font-size:9px}
/* CALENDAR */
.cal{width:100%;border-collapse:collapse;font-size:10px}
.cal th{background:#0a3d1f;color:#fff;padding:4px;text-align:center;font-
size:9px}
.cal [Link]{background:#27ae60;color:#fff;border-radius:50%;font-
weight:700}
.cal [Link]-ev{background:#d4efdf;color:#1e8449;font-weight:700}
.cal [Link]{background:#fadbd8;color:#c0392b;font-weight:700}
/* EDIT CONTROLS */
.edit-btn{background:#0a3d1f;color:#fff;border:none;border-
radius:3px;padding:2px 8px;cursor:pointer;font-size:9px;font-
weight:700;font-family:inherit}
.edit-btn:hover{background:#1a6b3a}
.[Link]{background:#c0392b}.edit-
[Link]:hover{background:#922b21}
.[Link]{background:#1a5276}.edit-
[Link]:hover{background:#0d3349}
.[Link]{background:#d35400}.edit-
[Link]:hover{background:#a04000}
.add-btn{background:#27ae60;color:#fff;border:none;border-
radius:3px;padding:3px 10px;cursor:pointer;font-size:10px;font-
weight:700;font-family:inherit;display:inline-flex;align-items:center;gap:4px}
.add-btn:hover{background:#1e8449}
/* MODAL */
.modal-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-
index:500;align-items:center;justify-content:center;backdrop-filter:blur(3px)}
.[Link]{display:flex}
.modal{background:#fff;border-radius:7px;padding:24px;width:500px;max-
width:96vw;max-height:90vh;overflow-y:auto;border-top:5px solid
#27ae60;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.modal h3{font-size:15px;color:#0a3d1f;margin-bottom:16px;font-
weight:800;display:flex;align-items:center;gap:8px}
.mf{margin-bottom:11px}
.mf label{display:block;font-size:10px;font-weight:700;color:#555;margin-
bottom:3px;letter-spacing:.05em}
.mf input,.mf select,.mf textarea{width:100%;border:1px solid
#c8d8c8;border-radius:4px;padding:7px 9px;font-size:11px;font-
family:inherit;outline:none;transition:border .15s}
.mf textarea{height:65px;resize:none}
.mf-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mbtns{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;flex-
wrap:wrap}
.mbtn{padding:7px 18px;border-radius:4px;border:none;font-size:11px;font-
family:inherit;cursor:pointer;font-weight:700}
.mbtn.p{background:#0a3d1f;color:#fff}.mbtn.p:hover{background:#1a6b3
a}
.mbtn.c{background:#eaecee;color:#555}.mbtn.c:hover{background:#d5d8
dc}
.mbtn.r{background:#e74c3c;color:#fff}.mbtn.r:hover{background:#c0392b
}
/* TOAST */
.toast-wrap{position:fixed;bottom:18px;right:18px;z-
index:1000;display:flex;flex-direction:column;gap:6px}
.toast{background:#0a3d1f;color:#fff;padding:9px 15px;border-
radius:5px;font-size:11px;display:flex;align-items:center;gap:8px;border-
left:4px solid #27ae60;box-shadow:0 4px 15px
rgba(0,0,0,.25);animation:tIn .2s ease}
@keyframes
tIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:transla
teY(0)}}
/* INLINE EDIT */
.editable[contenteditable="true"]{outline:none;background:#e4f0e0;border-
radius:2px;padding:1px 3px}
/* ADMIN PANEL */
.admin-bar{
background:#1a2a1a;color:#fff;padding:5px 12px;
display:none;align-items:center;gap:10px;font-size:10px;
.[Link]{display:flex}
.admin-badge{
padding:2px 10px;border-radius:20px;font-weight:800;font-size:9px;
letter-spacing:.3px;
/* PROGRESS RING */
.ring-wrap{display:flex;flex-direction:column;align-items:center}
/* REPORT PREVIEW */
.notif-row{display:flex;align-items:center;justify-content:space-
between;padding:8px 0;border-bottom:1px solid #e8f0e8}
.evm-kpi-val{font-size:15px;font-weight:800;line-height:1.1}
.evm-kpi-lbl{font-size:8px;color:#666;margin-top:2px;font-weight:700;letter-
spacing:.3px}
.evm-kpi-sub{font-size:8px;color:#888;margin-top:1px}
.cv-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-
bottom:1px solid #e8f0e8}
.cv-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.cv-name{font-size:9px;font-weight:700;color:#0a3d1f;flex:1;min-
width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cv-bar-track{flex:1;height:8px;background:#e8f0e8;border-
radius:3px;overflow:hidden;max-width:120px}
.cv-bar-fill{height:100%;border-radius:3px}
.cv-variance{font-size:9px;font-weight:700;width:70px;text-align:right;flex-
shrink:0}
.cv-status-badge{padding:2px 8px;border-radius:10px;font-size:8px;font-
weight:800;flex-shrink:0}
.[Link]{background:#d4efdf;color:#1e8449}
.[Link]{background:#fdebd0;color:#d35400}
.[Link]{background:#fadbd8;color:#c0392b}
.cf-chart-wrap{display:flex;align-items:flex-end;gap:6px;padding:10px 0
0;min-height:120px;overflow-x:auto}
.cf-month{display:flex;flex-direction:column;align-
items:center;gap:3px;flex:1;min-width:52px}
.cf-bar-track{width:100%;background:#e8f0e8;border-radius:3px 3px 0
0;position:relative}
.cf-lbl{font-size:8px;font-weight:700;color:#555;text-align:center}
.cf-amt{font-size:7px;color:#0a3d1f;font-weight:700;white-
space:nowrap;text-align:center}
.bca-row{margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid
#e8f0e8}
.bca-name{font-size:9px;font-weight:700;color:#0a3d1f;margin-
bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bca-bars{display:flex;flex-direction:column;gap:3px}
.bca-bar-row{display:flex;align-items:center;gap:5px}
.bca-bar-label{font-size:7px;width:32px;flex-shrink:0;font-weight:700}
.bca-bar-track{flex:1;height:9px;background:#e8f0e8;border-
radius:2px;overflow:hidden;position:relative}
.bca-bar-fill{height:100%;border-radius:2px;position:absolute;left:0;top:0}
.bca-pct{font-size:7px;width:30px;text-align:right;flex-shrink:0;font-
weight:700}
.toggle-sw{width:38px;height:20px;background:#bdc3c7;border-
radius:10px;position:relative;cursor:pointer;transition:.2s;flex-shrink:0}
.[Link]{background:#27ae60}
.toggle-thumb{width:16px;height:16px;background:#fff;border-
radius:50%;position:absolute;top:2px;left:2px;transition:.2s}
.[Link] .toggle-thumb{left:20px}
/* DONUT SVG */
.donut-pct{font-size:14px;font-weight:800;fill:#0a3d1f}
.donut-sub{font-size:8px;fill:#888}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-thumb{background:#27ae60;border-radius:3px}
::-webkit-scrollbar-track{background:#e8f0e8}
input[type=range]{accent-color:#27ae60;width:100%}
</style>
<script>
/* ── Login stubs — defined early so onclick works before main script parses
── */
window._loginQueue = [];
function selectRole(r){
if(window._selectRoleReady) window._selectRoleImpl(r);
else window._loginQueue.push(['selectRole',r]);
function doLogin(){
if(window._selectRoleReady) window._doLoginImpl();
else window._loginQueue.push(['doLogin']);
function togglePwVisibility(){
if(window._selectRoleReady) window._togglePwImpl();
else window._loginQueue.push(['togglePwVisibility']);
</script>
<style>
.sched-kpi-strip{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.[Link]{border-left-color:#e74c3c}.[Link]{border-left-
color:#f39c12}.[Link]{border-left-color:#2980b9}.sched-
[Link]{border-left-color:#8e44ad}
.sched-kpi-val{font-size:22px;font-weight:800;color:#0a3d1f;line-height:1}
.sched-kpi-lbl{font-size:9px;color:#666;font-weight:600;margin-
top:2px;letter-spacing:.3px}
/* Gantt 2026 */
.g26-wrap{overflow-x:auto}
.g26-hdr{display:flex;margin-left:186px;border-bottom:2px solid
#0a3d1f;margin-bottom:0}
.g26-mon{flex:1;font-size:8px;font-
weight:800;color:#fff;background:#0a3d1f;text-align:center;padding:4px
0;border-right:1px solid #1a6b3a}
.g26-row{display:flex;align-items:center;margin-
bottom:3px;position:relative}
.g26-row:hover{background:#f0f8f0;border-radius:3px}
.g26-lbl{width:186px;font-size:9px;color:#1a2a1a;font-weight:700;flex-
shrink:0;padding:3px 5px;overflow:hidden;text-overflow:ellipsis;white-
space:nowrap;border-right:2px solid #c8d8c8}
.g26-track{flex:1;height:22px;background:#f0f4f0;border-
radius:2px;position:relative;overflow:visible}
.g26-grid-
line{position:absolute;top:0;bottom:0;width:1px;background:#e0e8e0;pointe
r-events:none}
.g26-bar{height:100%;border-radius:3px;position:absolute;display:flex;align-
items:center;padding:0 6px;font-size:9px;color:#fff;font-weight:700;white-
space:nowrap;overflow:hidden;cursor:pointer;transition:opacity .15s;box-
shadow:0 1px 3px rgba(0,0,0,.2)}
.g26-bar:hover{opacity:.85}
.g26-baseline{height:5px;border-radius:2px;position:absolute;bottom:-
8px;opacity:.45}
.g26-milestone-
dot{position:absolute;top:50%;width:14px;height:14px;background:#e74c3c
;border:2px solid #fff;border-radius:50%;transform:translate(-50%,-50%);z-
index:2;box-shadow:0 0 0 2px rgba(231,76,60,.35);cursor:pointer}
.g26-pct-badge{position:absolute;right:-34px;font-size:9px;font-
weight:800;color:#0a3d1f;white-space:nowrap}
.g26-today-
line{position:absolute;top:0;bottom:0;width:2px;background:#e74c3c;z-
index:3;pointer-events:none}
.g26-today-line::after{content:"TODAY";position:absolute;top:-
2px;left:3px;font-size:7px;font-weight:800;color:#e74c3c;white-
space:nowrap}
.g26-tooltip{position:fixed;background:#1a2a1a;color:#fff;padding:8px
12px;border-radius:5px;font-size:10px;z-index:9999;pointer-
events:none;display:none;max-width:220px;box-shadow:0 4px 16px
rgba(0,0,0,.4);border-left:3px solid #27ae60}
.g26-cp-
badge{position:absolute;top:0;bottom:0;left:0;right:0;background:repeating-
linear-gradient(45deg,transparent,transparent 3px,rgba(231,76,60,.12)
3px,rgba(231,76,60,.12) 6px);pointer-events:none;border-radius:3px}
.g26-leg-item{display:flex;align-items:center;gap:4px;font-
size:9px;color:#555}
.g26-leg-dot{width:12px;height:12px;border-radius:2px}
/* S-Curve */
.scurve-wrap{position:relative;overflow:hidden}
.scurve-svg{width:100%;height:200px;display:block}
.scurve-legend{display:flex;gap:16px;justify-content:center;margin-top:6px}
.scurve-leg{display:flex;align-items:center;gap:5px;font-
size:9px;color:#555;font-weight:600}
.scurve-leg-line{width:28px;height:3px;border-radius:2px}
.scurve-variance-badge{display:inline-block;padding:2px 8px;border-
radius:10px;font-size:9px;font-weight:700;margin-left:4px}
/* Phase dashboard */
.phase-grid{display:grid;grid-template-
columns:repeat(4,1fr);gap:6px;margin-bottom:4px}
.[Link]{border-color:#2980b9;border-left:4px solid
#2980b9}
.phase-card-title{font-size:9px;font-weight:800;color:#0a3d1f;letter-
spacing:.3px;margin-bottom:3px}
.phase-card-pct{font-size:20px;font-weight:800;line-height:1;margin-
bottom:2px}
.phase-bar-bg{height:5px;background:#e8f0e8;border-
radius:3px;overflow:hidden;margin-top:4px}
.phase-bar-fill{height:100%;border-radius:3px}
.phase-card-status{font-size:8px;font-weight:700;margin-top:4px}
/* Delay analytics */
.[Link]{background:#fffbf0;border-color:#fdebd0;border-left-
color:#f39c12}
.[Link]{background:#fdf3f3;border-color:#fadbd8;border-left-
color:#e74c3c}
.delay-heat{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.[Link]{background:#e74c3c}
.[Link]{background:#f39c12}
.[Link]{background:#27ae60}
.float-bar{height:8px;background:#e8f0e8;border-
radius:4px;overflow:hidden;flex:1}
.float-fill{height:100%;border-radius:4px}
/* Milestone tracker */
.ms-row{display:flex;align-items:center;gap:7px;padding:6px 0;border-
bottom:1px solid #e8f0e8}
.ms-icon{width:26px;height:26px;border-radius:50%;display:flex;align-
items:center;justify-content:center;font-size:11px;flex-shrink:0}
.[Link]{background:#d4efdf;color:#1e8449}
.[Link]-progress{background:#d6eaf8;color:#1a5276}
.[Link]{background:#eaecee;color:#555}
.[Link]{background:#fadbd8;color:#c0392b}
.ms-content{flex:1;min-width:0}
.ms-name{font-size:10px;font-weight:700;color:#0a3d1f;white-
space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ms-meta{font-size:9px;color:#888;margin-top:1px}
.ms-status-badge{font-size:8px;font-weight:800;padding:2px 7px;border-
radius:10px;white-space:nowrap}
.[Link]{background:#d4efdf;color:#1e8449}
.[Link]-progress{background:#d6eaf8;color:#1a5276}
.[Link]{background:#eaecee;color:#555}
.[Link]{background:#fadbd8;color:#c0392b}
</style>
<style>
/* ── Schedule v7 Additions ── */
.sched-proj-bar{background:linear-
gradient(90deg,#0a3d1f,#1a6b3a);padding:8px 10px;display:flex;align-
items:center;gap:10px;flex-wrap:wrap;border-bottom:2px solid #27ae60}
.sched-proj-label{color:#a8d5b5;font-size:10px;font-weight:700;letter-
spacing:.4px;white-space:nowrap}
.sched-proj-sel{background:#0a3d1f;color:#fff;border:1.5px solid
#27ae60;border-radius:4px;padding:4px 28px 4px 10px;font-size:11px;font-
weight:700;font-family:inherit;cursor:pointer;outline:none;appearance:none;-
webkit-appearance:none;background-image:url('data:image/svg+xml,<svg
xmlns=%22[Link] width=%2210%22 height=
%226%22 viewBox=%220 0 10 6%22><path d=%22M0 0l5 6 5-6z%22 fill=
%22%2327ae60%22/></svg>');background-repeat:no-repeat;background-
position:right 8px center;min-width:200px}
.sched-view-sel{background:#1a6b3a;color:#fff;border:1px solid
rgba(255,255,255,.3);border-radius:4px;padding:4px 28px 4px 10px;font-
size:10px;font-weight:700;font-
family:inherit;cursor:pointer;outline:none;appearance:none;-webkit-
appearance:none;background-image:url('data:image/svg+xml,<svg xmlns=
%22[Link] width=%2210%22 height=%226%22
viewBox=%220 0 10 6%22><path d=%22M0 0l5 6 5-6z%22 fill=%22%23fff
%22/></svg>');background-repeat:no-repeat;background-position:right 8px
center}
.sched-proj-info{margin-left:auto;display:flex;align-items:center;gap:8px;flex-
wrap:wrap}
.sched-proj-tag{background:rgba(39,174,96,.25);border:1px solid
#27ae60;color:#a8d5b5;border-radius:3px;padding:2px 8px;font-
size:9px;font-weight:700;letter-spacing:.3px}
/* Activity table */
.act-tbl{width:100%;border-collapse:collapse;font-size:9px}
.act-tbl td:first-child{font-weight:600;color:#0a3d1f}
.act-status{display:inline-block;padding:2px 6px;border-radius:8px;font-
size:8px;font-weight:700;white-space:nowrap}
.[Link]{background:#d4efdf;color:#1e8449}
.[Link]-progress{background:#d6eaf8;color:#1a5276}
.[Link]{background:#eaecee;color:#555}
.[Link]{background:#fdebd0;color:#d35400}
.[Link]{background:#fadbd8;color:#c0392b}
/* Financial S-Curve */
.fin-scurve-svg{width:100%;height:160px;display:block}
/* Milestone Groups */
.ms-group-hdr{font-size:9px;font-weight:800;letter-spacing:.5px;padding:5px
8px;border-radius:3px;margin-bottom:5px;margin-top:8px;display:flex;align-
items:center;gap:6px}
.[Link]{background:#d4efdf;color:#1e8449}
.[Link]{background:#d6eaf8;color:#1a5276}
.[Link]{background:#eaecee;color:#555}
.ms-activity-chip{display:inline-block;background:#e8f4fd;border:1px solid
#b0d0ea;border-radius:10px;padding:1px 7px;font-
size:8px;color:#1a5276;margin:1px 2px;font-weight:600}
/* Delay v7 table */
.delay-tbl{width:100%;border-collapse:collapse;font-size:9px}
/* Upload zone */
.upload-zone:hover{border-color:#27ae60;background:#edfaf0}
.upload-zone-icon{font-size:22px;margin-bottom:4px}
.upload-zone-txt{font-size:9px;color:#555;font-weight:600}
.upload-zone-sub{font-size:8px;color:#888;margin-top:2px}
</style>
<style>
.cost-selector-bar{background:linear-gradient(135deg,#0a3d1f 0%,#1a6b3a
60%,#0a3d1f 100%);padding:10px 14px;display:flex;align-
items:center;gap:12px;flex-wrap:wrap;border-bottom:3px solid
#27ae60;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.cost-sel-label{color:#a8d5b5;font-size:10px;font-weight:800;letter-
spacing:.5px;white-space:nowrap}
.cost-proj-sel{background:#0a3d1f;color:#fff;border:2px solid
#27ae60;border-radius:5px;padding:6px 32px 6px 12px;font-size:12px;font-
weight:800;font-family:inherit;cursor:pointer;outline:none;appearance:none;-
webkit-appearance:none;background-image:url('data:image/svg+xml,<svg
xmlns=%22[Link] width=%2210%22 height=
%226%22 viewBox=%220 0 10 6%22><path d=%22M0 0l5 6 5-6z%22 fill=
%22%2327ae60%22/></svg>');background-repeat:no-repeat;background-
position:right 10px center;min-width:260px;transition:border-color .15s}
.cost-proj-sel:hover{border-color:#fff}
.cost-upload-btn{background:rgba(255,255,255,.15);color:#fff;border:1px
solid rgba(255,255,255,.4);border-radius:4px;padding:5px 12px;font-
size:9px;font-weight:700;font-
family:inherit;cursor:pointer;transition:background .15s;white-space:nowrap}
.cost-upload-btn:hover{background:rgba(255,255,255,.25)}
.cost-sel-info{margin-left:auto;display:flex;align-items:center;gap:8px;flex-
wrap:wrap}
.cost-sel-tag{background:rgba(39,174,96,.25);border:1px solid
#27ae60;color:#a8d5b5;border-radius:3px;padding:2px 9px;font-
size:9px;font-weight:700;letter-spacing:.3px;white-space:nowrap}
.pcs-header{background:linear-
gradient(90deg,#0a3d1f,#1a6b3a);padding:8px 12px;display:flex;align-
items:center;justify-content:space-between;flex-wrap:wrap;gap:6px}
.pcs-title{font-size:11px;font-weight:800;color:#fff;letter-spacing:.5px}
.pcs-status-badge{padding:3px 12px;border-radius:12px;font-size:9px;font-
weight:800;letter-spacing:.3px}
.[Link]{background:#27ae60;color:#fff}
.[Link]{background:#f39c12;color:#fff}
.[Link]{background:#e74c3c;color:#fff}
.[Link]{background:#2980b9;color:#fff}
.pcs-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:0;border-
top:1px solid #c8d8c8}
@media(max-width:900px){.pcs-grid{grid-template-columns:repeat(3,1fr)}}
.pcs-cell:last-child{border-right:none}
.pcs-cell-val{font-size:17px;font-weight:800;color:#0a3d1f;line-
height:1.1;margin-bottom:2px}
.pcs-cell-lbl{font-size:8px;color:#777;font-weight:700;letter-
spacing:.4px;text-transform:uppercase}
.pcs-cell-sub{font-size:8px;font-weight:700;margin-top:2px}
.[Link] .pcs-cell-val{color:#0a3d1f}
.[Link] .pcs-cell-val{color:#2980b9}
.[Link] .pcs-cell-val{color:#27ae60}
.[Link] .pcs-cell-val{color:#1abc9c}
.[Link] .pcs-cell-val{font-size:22px}
.[Link] .pcs-cell-val{font-size:22px}
.[Link] .pcs-cell-val{color:#d35400}
.[Link] .pcs-cell-val{font-size:16px}
.[Link] .pcs-cell-val{font-size:20px}
.pcs-util-bar{height:5px;background:#e8f0e8;border-
radius:3px;overflow:hidden;margin-top:5px}
.pcs-util-bar-f{height:100%;border-radius:3px;transition:width .4s}
.cost-section-hdr{display:flex;align-items:center;justify-content:space-
between;background:linear-
gradient(90deg,#0a3d1f,#1a6b3a);color:#fff;padding:6px 10px;font-
size:10px;font-weight:800;letter-spacing:.5px;border-radius:5px 5px 0 0}
</style>
<style>
/*
══════════════════════════════════════════════════════
PMO REPORT MODULE v2 — Enterprise Grade
══════════════════════════════════════════════════════
*/
/* Page wrapper */
#page-reports { background:#eef3f8; }
/* ── Top banner ── */
.rpt-banner {
.rpt-action-btn {
.[Link]:hover { background:#1e8449; }
.[Link]:hover { background:rgba(255,255,255,.25); }
.[Link]:hover { background:#922b21; }
.[Link]:hover { background:#0d3349; }
.[Link]:hover { background:#a04000; }
.[Link]:hover { background:#4a235a; }
flex:1; min-width:130px;
.[Link] { border-top-color:#e74c3c; }
.[Link]{ border-top-color:#f39c12; }
.[Link] { border-top-color:#2980b9; }
.[Link]{ border-top-color:#8e44ad; }
.[Link] { border-top-color:#16a085; }
background:linear-gradient(135deg,#edfaf3,#f8fff8);
/* ── Sidebar cards ── */
.[Link] { background:linear-
gradient(90deg,#0a3d1f,#1a6b3a); }
.[Link] { background:linear-
gradient(90deg,#1a252f,#2c3e50); }
.[Link] { background:linear-
gradient(90deg,#0e6655,#17a589); }
.rpt-sidebar-body { padding:10px; }
.rpt-type-btn {
.rpt-type-btn:last-child { margin-bottom:0; }
/* Distribute panel */
/* Advanced filters */
.rpt-filter-sel, .rpt-filter-inp {
.rpt-filter-inp { width:90px; }
.rpt-filter-clear { font-size:9px; font-weight:700; color:#c0392b;
cursor:pointer; background:none; border:none; font-family:inherit;
padding:3px 6px; border-radius:4px; }
.rpt-filter-clear:hover { background:#fdf3f3; }
/* ── Charts area ── */
/* Donut chart */
/* Variance chart */
.rpt-tbl-search::placeholder { color:rgba(255,255,255,.5); }
.rpt-tbl-exp-btn:hover { background:rgba(255,255,255,.3); }
/* ── Preview area ── */
/* ── Report History ── */
/* Photo gallery */
</style>
</head>
<body>
<!--
═══════════════════════════════════════════════════════
════════
LOGIN OVERLAY — Role-Based Card Authentication (v2)
═══════════════════════════════════════════════════════
════════ -->
<div class="login-box">
<!-- ═══ BRANDED HEADER PANEL ═══ -->
<div class="login-brand-panel">
<div class="login-brand-inner">
<div class="login-emblem">
<img
src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAQDA
wQDAwQEAwQFBAQFBgoHBgYGBg0JCggKDw0QEA8NDw4RExgUERIXEg4PFR
wVFxkZGxsbEBQdHx0aHxgaGxr/
2wBDAQQFBQYFBgwHBwwaEQ8RGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaG
hoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhr/
wgARCAImBQADASIAAhEBAxEB/
8QAHAABAAICAwEAAAAAAAAAAAAAAAcIBQYBAwQC/
8QAGgEBAAIDAQAAAAAAAAAAAAAAAAECAwQFBv/
aAAwDAQACEAMQAAABn8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAB841XKNRwkYZJQ1hWCf/NW/
GRgsXhINMEr4XQkYdn8GHMP38CjjkevKYAtuecjAyzls9Zk7Nrea17lO5MTWdlnd
5C4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB5MIx7Mj3Bxgl5A2EYLHYiuXXGCdcJEpg3/
AAmtow+ryjCAAPo+WTzC+qJFzDPESdsnOWuyyfevWVZvoK1rE4xSCUua/
GHQ2WxLXBDO4ImZpAqz756Fn0ZSPPV7hOYAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAfJ9MZg4xbejTBME0cV7wcYLI4SvhgmbB
Rsa+3YPGowc8CgA9J5mfy7LpKTstOaG0+5hmrblbI9rNAGZmZOaMcxuxmwO
W9CcwLgAAAAAcYfMlYz0Sw6NOqKyMaxzo4d3TGkzGHJnzcqoyFPVmx5vTbqgk
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHLw4Jj2tG2CjXm
b5r7gmCx+BgFGvMWCjpGDaMH4zACh6cstgG6ZhljNMWXnNA3Nj8szVqy9heZ
zQhl5YM0f5jaDNjch9JygsAAAAAAAAAAAAAAABjYqmdGvVT4sbC0cbWxGpnJ2r
b6527RtP3C3dBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPnEq5hp
GvxryugvX2CxmDrx8RrzZgIyNfb8F5cpGHBtwyy0cpcys5YOWFzDNWnJWS+2
WActNCc0WZffDLrOWyCc3z9DIAAAAAAAAAAAAAAODl4cKx7Qj/HRhlFE/
YrKiNMsvurE5Wc/
IWAAAAdfYRE0WWs0uvLgV6vLHI+5ohTlmtaimVbeg5E5gAAAAAAAAAAAAAA
AAAAAAAAAAAAAABwcsXgGLc0X4yMEx+WGOtjk7X8BlWPE4CSMpFIF6LKZFF
aclYpOWC8pMBljPKbwZdcynvTl+foZAAAAAAAAAAAAAAAAB8n0xWDYtxRhgo
15s+a84OMFkMHAJgmLBR0jBtWFx5gBQAABlcUTJG/
V5Tt2t5rrK89Pc3HM7oAAAGAgWzOMjRrI2HXq8NIsdFrVdkBznbv+kTsgAAAAA
AAAAAAAAAAAAAAAAAAAAAMfkCMD49qRi1jJ5Qt1dpNwSAAAAAAAAAAAAA
AAAAAAdeFUzzQcBGvLvEB4Fgsbga+o15jwMdGvs+D8iNcFQB6TzM9mGXSU
mZdlhxPeWnNXDI2U72avmQnNOaE+mcia+4SzvDHVJZfTY1YabLrUaQK7lNFZf
bO7aFp2427YMgAAHlgyfeuNaqqRo5rwGya2Vs9kK0z5bu5oTugAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRr7Hs6NdcjXm3z13wka1hd
dhk1pE1/W0a/
f0duQYsU2fKsuhpPyc5YdTvlGWunosv7WWt+Un5OWF8vKJm0PLbMZfB7fpOUF
gAAAAAAGrbSUr3qtrI6ryYYd/
RHM+5mhYzWuRNK9vQfQnMAABxF0pIw1S4nOEq8Dp93hMFh9nqzOVu3ugno
gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyo9XxgMZGHMaz7
vewx7rk5+9hrN6rLfSteMhO5khfIyuZI6yG6mXXMlkU5OvsGQAAAAAAAAAAAA
AAAAADXIHs3jI0ayNh16vDSHHha1XZAs5W7/oE7IAADV9oKVg8FlYErwcL9/
CNSapEqjLE9eVnHNuqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAOtHY1/
XYwyEhvANewOOrj4o17A+aBzDYrYKq5Jls4jiRbdP6DKAAB5oNnvrjWqqkmNq8
BtGrlbQ+2t0+272UE7gAADw+4iveq2ohavE0ARz5HmOqu8T0p2dHfbsgkAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY9GQ8e
o4WNXP6v7fY1o/
12bvbGGviyOSTWXI2S+mWv+VmtOWKu2UDJCmi2lxka9ZN+xWrRzLU9sBTrb
u+gTsgAAIzkxGKqfzPUHV4HmymLMFkM9V6ebdzaBO+AAA+foRPFVrY/
ryoRdvVHI2meKvZ2d6yLFZW3cBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADphab+I16pbRusSV4doPZXKfbdnIC
dsAABr2wlay4uzkEV4Wtd/
QjSnrdKqTVbsyCJ6YAAAGpwVaHCRoVsZnDV4eTnyuHrnZtG1Ta7d8FwAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpxi
mZafioxSLpet45r6LtWCzFeXPwv6QAAAB5/
QRBei2siivHirlxHMmCTqoynPVltxzbrgAAAeGCLC9MatV2/wCgV4HbN8F/
TJaxG0k39ADKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAABjsZshj03wyAjHG3RKBSK5AyhkCc4AAAAAGgQtajWI5teGRx1
eNKktVTsnbsZkT0wAAAPmKpXRhqim+Fa8DqlWKitreYXmW3oPsTnAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAA1+uNmKz14qbYSnJi3wW74AAAADVtpKVf8NloErwcJJEbowWualtt/
SguAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAcdCPQxOOY9naT4YxyIivwqTEhDxsc9q7eFSy3xWDoilnfLWgpYvxwAUnT
wQ0U2LXXManfZjSZEt2QnogAAAAAMZkytXPJIceU8zvc51tslbrhPRAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdfYRgsftq
MWj9G/
lY588nFYu6ZXIiLiXiIb65oKwl1ziRBvVO4gX5nwiAOuwZEISJtZnCdoAAAAAAAcE
RRfs+sU81m7JwRO9umE9IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfB9ujoV9zE+ZXPtY8sV3Fp
HhUkWNtQ0mNAbfHNkbefn6v6YGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAeZHpYXxxj2ZpWOY5GRb4lJf+IW8bH
NvlhfqUmPyxMUk/yxv8xTf/
AC6T8qbj5NZK57y4cpkPN0Ir8+X2FMZ582VwHGw/
ZrbZOTWm0cmrNsJ1Nvu8TmjidfR9z1wnaAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AA6cfjK9Rz7MKzo1bMKzizHtq3N07G0qzo17McVoFmFZxZj31Yn+dnN/
NfMVGC0HuheaJ6DzemN1ty4rQjl2s831Hk9PduK0I5lrPrzem3ZMRC0a0346unE
c+0frqrIM55pef0T0gSA6+zDqfSs6vIsvzWcWm9FVdynNPDEZeekCzFZSrcadj/
VV2VWvK2M9FX2azHsq3NDHIeL76wslmFZ0admFZxZ/
31SlediVhPSMVDEas2Y2unEc+0Ptqpvs55ueX1T0vN4tPheOdZjKVTtIyeoTvY3r
gnXa8iz31C2UnNJqs6Nay6tAsvzWcWYyNVrJzt9qs6NS0nqjuRLdQGbpx+Hr/
HOswrOjWsx6qu/SbWIYmOel2Cc7q7Y3Ydy+qy/
deZatjclbrurt11HsVnV5Fp+dY9Fun71Z1eZafv07cbdZjsjEEY5J5rN9RzbV4rsgK
d2effViY2GRcfqELJsvla22EZev5rT8xp2bycMTPPRYzurGxWT99WJeYZQ8Xt1Od/
LKzq8m1XZHkh26rH+ms8YLE81m3SNWUa9WFr0wvr5sLGvXxadO7Vma97+p
z1WWoRgqq2XWo5j63OdZ3Krz7tf1O/
WjFZXFV4kjTRDEz27iN5IjdkhkV87aWPJDjy3oIdFfP2m8/
fE9vR6LjH3XzvxzO+3T0KspRi6NPdJ5qlP09DcBbrgMNmcNGOtQr5flNm8z0asp
khuNTJ2MrBKc7Uti3c4q5aOrleV5ZViqVY0pLq/Z+sE7KaIXmiMG7Vhs/
WCc7t6psjThzptVoM7cIffwjm2h580d29HoOIc187xzOW5z0KspYieNPbZ+qpOs
7/
hhiZ4YjXWkq3aOdj1i3Yrnruxa7Ty+75TFzpPSqutPwiqzs645XPMsSfPQqxZDL+
Kd2sYrwpqkSO5Et6MJ2dRr/
YCv9eE+vmxMYK8fNp6+zk1qXIj2KMVjBf0qu02VuryT2+KOVL8n1wsdbuc67s
WutquYr5iwPo8/
ot6Cuwr5+fdx03crelYLOpy1RbTq1PLzP4tUmW3VrXuWm91eXuOkejzplXK7NEl
uppRsVeTNOx8c39PG0NbLrVPPM9jfGw2t51zY7+nr/
qNha9V4OyWJqlYhtYOE9j1yNLmxsVzpO/
q1erC16YGya2jR23nUS8477FspW7oTtV31nZtZp5fdp4geeLdgJ6FZsVlsTTyvry
GEGb8fgAK2ljyQ48t6CHRXz9pa52MrRPW8O56ZIsaE0i/
peqsFpK1V5WGkqNd6jQnRo0bW69glfDHYPDattLYrUK+cnDftB363o1d7EQS19
H2bWc5Xj2SF/U8VctHVyvK8sqxVKsaUl1fs/
WCdlNELzRGDd6wWfrBOdsmto52969hS7cNPlJeW66WJrVbo4na9U3+vMm8X9
N8Vks9XCOXgJBj7dK87c4YmeGGVaOrloJ2PcLdiueu7FrtPL7vO8EztbsuOeJ36rdf
Z108nLkpRbKVvQsdkcdOxWIU8tNUiR3IlvRhOzqNf7AV/
rwlgq+owWegPXU3bHrkuxjlE+L+kiWLsnjKeak3Rpp0OduPrF10kpjmTXdi123ar
mKeYsD6PP6LegrsK+fnzctN3K3pQnPHsJ2mrHXidNnquzgRlrm4afGmz+A21E8
Vhm6Cp3kyxDZtX2YLOxFPTi73+Dfa8DKRdYGv07MlzHWCzU73bAU+60zV22L
XuK8B9fO/rSlnS/
ptWr1YWvVeKmSG5bYtl48ienseX0XcGf1Cc9eNY2bWaeX3aeIHni3YCehWfE5b
E08ruEjafNFuvo+nTTG68MivDtLHkhx5b0EOivn7SwDP2hW7sL7DryvEtbzCe32
7+11m2PWY5SVIusetqEOWO1hnhhM5reDffJ656lahXz84b9Dmx27u9VrzOpRo
Nv1Ca2KQ2heqe3t1WZVieOWlqJZvY9wrBZ+sDOmeGJnjBvFYLPVhnOk6MZOa
u5eH2Y6epCfHPFeFOMebNnJ6sH5zBo5dq/
uD9zt39wrJsmqxy0lxrYpOKgmz9ZWTqsLXrYIwWO6tG0q3W1DxlfPyNNGib3b0
Ljniduq3X2ddPJy5KUWylb0LHZHHTsViFPLTVIkdyJb0YTs6jX+wFf68IWCjBX1v2g
sWxWJqtYielsmnbjBk7miCvnt/w2smZ7/
AYbU4LE5W3o66CvnLA+jz+i3oK7Cvn583KJdgt3t6aNwzb1DEqY9Sum26krwO
zj43lOlcb1oSdw08RIE3artVu/
wBdaJqgKNBs2so52/6ALJ3gjd5zTuLeigXS5PjCnm/
qyddLRzu8i3X1avVi4VrxdebEjR11sQ12yUHzrPQy4t2K76zIOv083lZ4h6YbdYJ3
qz4ncsdTzOzTPFcqW7KN5I0RkgxsPNeBYOPJE0m3dg/nYOa8Kwfd199/
TQNpVqo3ryIdbJ4Y5+JbjJc58JJpPdCcoDDZnFsdZWw8083rrYuTXG8bzObSJx5+J
7NbcRuus14PgZHPq61ZXEbLbt+Gr9oq/
Rra9M8cymw7VWG0MAM2utiRztdbENdbxIM5/
rcfpbuwbodq47ry4YbNj452JbfJU59flUnuIqlXgqkm+Oq8LVWW9bDr21bZKM7/
AN9hbsvn6+U1X69l+KeX3uUY9kK3eY7I+Gc9X2xKeakiRNI3e3fCdnUa/
wBiIYrxdesZCs4p9dbrQx9OzCWyfKvJn6ssjarO1rso6hNKM29C3brXhZc0SnnsrK
sNTJO7XVsSObL/
AKHdbu1wbDzXha62Ia62ISru+pbbb0Nc9dm2NI4muz5GM+tvVq+2sgU03Od0
jtSROXTb0MJaJtHTTznishGMr26fnjCV8E2K3dmeV4E/
e7R94t6OIIwmHQI4mHtHXuwk7vInpgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAf/
EADIQAAAGAQIEBgICAgMAAwAAAAACAwQFBgEQFREUNDUSExYgMDMxYFBw
QEEhIjIkgLD/2gAIAQEAAQUC/
VzrpJhWbj0QrbGJArcgpbXxgewyJwaWfHBzmUNqi6WbAk1IECdokSBK5KYCFsYq
BvJNHX9E5zjAUkWiIUsscmFbi3wFLivkK2aRUCsm8WGTZN/
gtpZ61DW4KlDSeYvP6AOoRMKzLBEK2tgmFLkUK256YKz8isFHKyv+WzmHjEM
LaiqElk1yfuyjlFEKz8ckFLczIFbkcK2mQUCsu+WBjmPn5MFyYJxztYJ1uRUCdPdG
CdNTCdUjyAkBHEG0MRtzQbe0G0Mcg8DHHClVjzhSmkC9TephxGO2vvavV2R4
62JqBNQipP25R82RCtjjkgrcGxQrcV8hWyyKgVkHa4znOfkKQx8pxL5UErMicJU5z
kJ01LATq0eQJwzBIERTTx87mLZuw6p6Jg7gHzT3MZNzHHi7C3kP2fOcYCsg1QCt
ljkgrcUMBW4OTBWxSKoUeOFvkI3WUCcJIKhOqyBwnTVQnTm+AnWY5MJxTJIFT
KTH+S8iGb4PqkskFUjon9kRZlGoQXTcp/
r3HgFX7VEK2WOSCtxQwFbe6MFbDIqhR0ut8WMZyE2DpXKddkVAnUXpgnTAn
UWRQnXo5MJMGqIxjh/
Bu2Ld8SSqiqIMXJDax0qvGKRsohJpfrCrxuiFrHHIha4NyhW4ODBWxSKoVeOF/
hI3WUBISQUCdWkDhOmrZCdNQwE6tHkCcMwSBEU0/
wCNkYZtJFk4VxGZ1buVWisPOpSRf1E6yaQWno9EK25mQLXFXIVs0iqFZB0t7yo
qHCcS+VCdYkThOnushOmlCdTYFCcBHJgjJskOHD+VOXByzFX4DOMlzoQ5kzQd
hw8/
S85xgKyjNAK2mPTC1yC1rfqBaXfLgxjG9hEFVcpwz9UErEicJ091kJ00gTqbEoJXo
4gTYtUhjGMfxCjtBEKWGOSB7cyKM3JMZuYxcyglxb5Cdpj1AjJNHHzzEAlI4cN1G
qun4EFY+P6Ko4SSC1gj0QrcGxQtcHJgrYZFYKuVl84IYwTj3auCQEicEqb8wJTVQ
nTkMBOqx5ASCj0wRk2THDGP4nOcYCsi0QCtmjkgpcUMBW4OTBSxyKoVfOV/
ibyTtqGtvXIGc+ye/LJxSMmk/j1o5bWDsWWoIcpy/wA6tINUAtZ49IKW/
wAQNOTLkZbT7sFq8kqCU5xnBKamCVJiUErsaQEi2SWSpkJ/
GZzwCsi0QCtmjkwrcUsBW3uzBWwSKwUcrLf4bGceMBHWNq9+R6xRfoysQtFq
6ws8pHGRWTcJ/wAyphznJmbpUGgkVQSvxxASOaJjBCl/
kFXjdAK2OOSC1xblCtwdGCthkVQo6XW+XBcmCcc7WCdbkVBipv8AI9IPBmpPs
BStyKYWYOkPfF2JwwDJ+hIJfEugm5SmYJSNNrEzC0WozeJPkf2cxykwtMsUArbW
RAtcjhWzyKgVkXa/
yEbLKBOFfqhOqyBwSmrBOnIYCdXjiBOHYJAiSafwOIxm6DqoIHD2Besva1dqs1Y
eeSki/
EYuDlnK5lt7I6SWjVo6TRkkf2FRZNILT8eiFrg2KFre6MFp6QWB1lFfhTbqq5Thn6oJ
WJEwTp7rITpqYJU2BQnARyYTZN0hjHD/
AAn8C0fiSgXUd7CHMmaDsWHXyTlb8YzjJc6NHirFaImEpRP9bUVTSwtPx6AWuD
coWtzs4Vmn6wMcx8+zCZzAkY8UBK9JHBKk+ME6aoCU1DATqseQEgo9MEZt0
xw4f5f5EtWE3AWROgprBWT5Juvkf4VSOgpoisdupCzxJEv6rnOCheYYtwvbmhAt
cHJgvOSDgeBwuCRjxQEr0icEqkgcEp7rITpgJT2uASrRxASBjkwmwapDBcF/
hpWIRk03zBaPW1g7FlqCmwcvxS8KlKJu2arFbQhzJmg7Dh3+pq+bnCjJ4qD1tJb
JatHFBYCOKCxbIgKgkQcP5F6xRkEZWIWi1dYWePHGRWIun8UhGoySMlGLRq2s
FY+P74rINUAeyRxBi1R+QlOx62SmwfHxLoJuUpqBUjjaxE0rFqNXSTxH4nTRJ4j
MQisYfWCsWWwKbBy/uZjlJhabYIBa3MyBa4r5C1kkVgo8cLe1q/cMjRdpTcD8/
EYuDlnK5lv7IyVWjFmL9GQQ+JRMqpJuumZ+yEnzx+UlSLp/
tyzpFvhxaGCIXuJ8hexSC4UXVWzoVuqcEiHymU61IqBOoOzAtMwM01IOqi6SC7
dVscQlhMyyQ5VC/
FN1vCwMXJDaMH60cvGSiMmj8X5E5Wh+NYiaViztXSTxH9rcczkOIuUcj0fk+cU1
IFqDTAJVI8oLXI0oLDsCArZEnwPWCD9OXhFYw4hZ1SNOisRwn8UzApyJV26jZX
Rq6VZrREylKJ/
HN14r0KJmSPpGSq0YsxfoyCH72omVUk3XTs9IeaVi1GzlN2j8UpEIyiT9gtHLaIrH
bqQk6SRL8cxCJSZHTVVmtoxfrR60XKoyaP75NVrBwYuS5iZdWLWaO0nqPxPWK
L9GWhlotTQhzJmg7Dh78klGIyaUjGLxq2jZyq0Wh5tKTJ+
+TEAlI4ctlWitYeGbyPxqokXTmq8dhnTGeGYKxeb8jpqk8Rl4RWMPokqdFSEnyS
GP3YyhCBSVZJA9mjiA9wa4B7mD3B1kSEmvJGrTUy8n8mcccTdaH41gbF4fkUT
KqSbrp2WpTZLmCsWHH7ssxbOcngY5QGrEcYZqLLIzTm2RmmpgtNL4mLBCPS
+aarpHoVSOippWpvPi+P8AInK2PxrBWP8AoyWhkZQj1kswWBTZIaLd88w+Sbr
xHoVSOifSCsRm2SmwbH9FTDAkgy0qJ+Md8svCoyhHbNVitpW5vKB/
6KkXJWjLSppeCM+aQjkZJGSjFoxbSvSPPsf6CycuAZ2gUGlGRBmdjijNljsA1rYFB7
i3wJSYXlDhBEzhZm3K0bfO+ZJv2zludquKo58qR/
djLJlBpNmQGsEcUGtUdgGuDTANcig9xWBrc9yDWiRMMz8iYHlHpwZ0ucZObPw
Yxk2a7Ccnj/
Bt6GCPhDm8Mp+6GLg+FIhoqD1uPOM1SPyM1FkM09oM01EZpqYzTB6MOPRq
gzTXAzTnQzUHg9JPh6SfD0pID0tIjNXkcD0zIjFbkshCpPFMxsA2jv8ADuRseaIfHil
P6dnnuH0iKq386T/
pywzpUCaVhhyjH+kvFgZVTwOcb4BpNmUb3H4BrBHFGbNHYBrVH4ClvalD+zO
neNIGIzIucY4Y/
oDJsYBnKJBmSZ4GZuPKDWGOIM2iOwDW1hgZuLYGuSYNcsg1xcA1veZBrXIZB
rPImGbDJZBpqQMMyTzIM7cGGVD5HHj8URBLSRm7dNoj+8n80GzIA27BQk7nB
kbCYZYWAwUiZ4wNAzJh6alMg1Zkh6akh6akh6bkhmuyWB6ekh6ekhsEkNgkRs
EiNjkBscgNjkBscgNjkBscgNjkBscgNikcjYJIbBJD0/
JD09JDFcksj03JD01JBCpPVAxq7RrnGMYx/
wDmqqKERJubMbmzG5sxubMbmzG5swqumiTc2Y3NmNzZjc2Q3NmNzZjcmYS
VIsQ0i0Kbc2YReN3BtFnCTfG5sxubIYzxws5Sb43NmNzZDGeONVn7ZuMTkfnKT
lFx8JjYIXc2Y3NmNzZjc2YTWTW9+ZJnjO5swi6RcjOcFxubMbmzCLhJxjOcFxubIb
mzG5sxubMbmzCT1utn2rPWzcb5H8UXSDj2LLpN8bmzG5MxjPHGh37VI25swk
9brnWdoN87mzG5sxubIbmyG5sxubMbmzHjLgm5sxubMIuEnGNVFCIk3NmNz
Zjc2Y3NmEnSC/
uOoVIm5swWRaGNqc5UibmzG5MwkqRYiihUibmzG5swksRcmij5skfc2YxItDZG
5sxubMJKkXIooREm5sxubIYzxwaRaFNubMEkGqh9DyDVM25swkqRYgWdItxub
MbmzBDlULoo9bIm3NmNyZixdn9uPzaOze+s9nk+4Cn9bpcei0b/
AEXLpdEPoEhIoxyMhYXb3PHjoQ5kzRdpVQyisRwn7pXtvsKcxMsLM7aZYSKEil7
HPUCmfl50mlP6J90ftxnOM12eOc+j5+hHoyNjdPM5znOQU5iZjLQu3ygum5SFw
6HRv0+k93cVTu1y6r3r9p0p/
b9bL2f2FNkmYizqImKbBy62535bUFNkhmLnDxppO9p0rfZ5/
s+lY7Ppb2fhVGM+HLBxh2zmmnJyQp7nxNrc58tkIlpzsg8Xw0aGNk5hUWXmO
Q7cYatlFMqqCoO/
EkJ+P59jpU3vnMwqoVFN65M8dCtx3OvbF2fTw5HhyPDkeHPGz9n8OR4c+zw5
HhyKz2eS7gKd1ulx6PRv9Fy6XRD6XjsjJu/
fKyDjThrX5jLBf3SvbdMYzkcOGrB8rHuGboj1vq56gUz8vOk0p/
Qvuj0Kkc45dYGLkmQQ+UztFuYbOXBGiEjIKSTnThrBS5o1xjODYuPRaNun0nu7i
qd2uOOLrwmHhNrjGcjw5HhyF+0aU/
t+tl7Pp4cjhnGtTkcnLrPPOcktKg88SWk52nSt9nn+z6Vjs+kuz56P/
GlQdeY0uDTiUVhx5EpanPnSYpzT/
m3OvLZaQjPko4W535bbSGd8lI6WKP5F+IN7yMiLW98hmMY8WYZhiOY2Ls+kA
UuYjwFHgKPAUZxjI8BR4Cif7uKtjjLeAo8BRjHASfcBTut0uPR6N/
ouXS6IfRbnviWBS5OaIr6DJMyCZy2CvkRJpW3vOR3tle26VIuMxpkUz4ma0mon
pT3n/fVz1Ipn5edJpT+ie9HpT+3C2IJmjtI5PKTC3vf+RjGTZh68i0TyinnE/
XiFS0q77mmFx6LRt0+k93cVTu2S4yPAUZIXgp9gp2MZT8so8BQ/
6HSn9v1svZ9IMpdpMimfE8yKxkRBK5SltJd5yMeGrVR4qIZ3yUjpOdp0rfZ5/
s+lY7PrYGfJyQrTrlpSVa87HhFUyCq6xnCwh2nJx1odcxJiDZ87I6TzznJIOWyjUwg3
nOxono/
cGGkE952NnHvPSIrEfzTwWLs+jedfNUfU0kPUskK1IuJAmtg7wKr3bWT7iEHKzU
28PxvD8OHzh1jRv9Fy6XRv9Est58kKu3wvKaHJhQjlLyHApy3B17ZbtulR7ZpPts
NZUV9TKcvq66kUz8vOk0p/
Qvej0j5tzGo+rH4fSrqR0gYk79yJ1XK0sK43w4ldM4wbD5HlngqK3gkLj0Wjbp9J7
u4qndtP9Kf+xTfr0f8ARaU/
t+tl7PpCuUSRRnrYhZt8WQkBApebLaXB3xOKe28Ssk35V8IN5zsaJztOlb7PP9n0
rHZ9bYz85kEz5TO1Xw5bTjXlJPSFa85JLq4QRWVysqKiz8tsJh3yUeGSHNO7g18O
RUHfgX0scfyT4R0qePRBS5OaJY4j2IsXZ/
bTfq1sHeBVO7ayfcfe3+i5dLo3+h7jg8FPz/8AO1ljYPJip4zullfrsG/
qSSHqSSHqSSFZkXMgJbtulR7Zpa88ZUQ2OMrq56kUz8vOk0p/
RPej90PZsEGM8cSZfDIiomxiR1mzeKVFW7vcei0aZ8TXSd7uKp3XT/Sn2Cm/
Xo/6LSn9v1svZ/dU43KZQY2C4kHWXjwVpty8XbW/lvxUHngcCd7TpW+zz/
Z9Kx2fVZIq6TlAzZwKm686PsrnmJTStuuWlLU68iNCCRl1myBWrcXB5xUFTbebI
WNvzEUGTnLR2Q+FCCcj9wYfjWrR3Mu9LF2fSIgmLqO9NRw9NRwZRrePxrYe8C
qd21k+4ivRyMi59KR49KR4sUM1jW+jf6Ll0uiH0WBvlvKiDeYYyOj90Vk0MbJzC
mt/
+1y6XWmfiW7ZpUe2BRQqSci7516Kyh50toc3hIbPEwphP+rzpNKd0T3o9K5EN
H7P01HB3V2Z0M44ZFVeZcMbI38iVEQ85GQxnBsB24K0bqqZWVFPb+JxakvMit
K+6w5iwofCRHa/MuhT0uLzT/Sn2Cm/Vo/6LSn9v1svZ/
bCIN3MgUuC4FlecrG6J2xyknJzasqmGTnLN0Q+FCTvadK32ef7PpWOz+y3M/
LcivyOI5yofKqhCZUOomZI5DZIafkyyKgqbPznoMbBCyDrL14IuaViiKWx0qnpV3
nMx2llY4aSAKXJjRjLEez0sXZ9IqxM2bD1YwHqxgPVjAN1yuUdLB3gVTu2sn3EU/
rdLj0ejf6Ll0uiH0WuP89vpE2c7MhraxxiWmlZQwIXKholjiPYykUnKp+j2o9HtR6P
aiLh0ooS3bdICcaxzM9uZFxKz68ljSqx+W7WTsW2v0rPHKYmLMio30qSOU4550
mlP6J90eldmGkez9TRoeWpoRHOeORTPzaY/
LpppEWU7EmbaxxiXnFZTIxjJswrDb2Dxvh21VTMioIqVVi1i21jkszYzyBNKqz5eP
0/0p9gpv1aP+i0p/b9bL2fSFbImirNFcouCmyQ0LJYkmYtTzz3/
uq7zmY6d7TpW+zz/Z9IWfaMI/
1ZHj1ZHj1ZHhi9SkEJxnzsdrVmXMyFqZ+Q+1r7Lko0WV5ysb7qu75eR0uX3Bt1
Gti7P7oftelg7wKr3bWT7iKd1ulx6PRv9Fy6XRD6M4wbE7Bmj1PZ+RXILKHvle2
+6Cgjvj4xguJRxzUhq1bHdrtG5WjZ50mlP6J90fvrkcZgy/In4IzI/
trsDkmdLNC5Nn2wkQeSXKXBC6Z/Cn/sU36tH/RaU/
t+tl7PpBdpeNSPWzpsdm4EJJZjXi7kiDZZUy6oqDTB8+SmPJTEs15ORFXectIzva
dK32ef7P7qr2kTjPkpHStsuUjbCy5yN0iGfPSGlqd+e/
Ea25x95CWB5KYt7PGCBM+Ujs3GHbYXL7g26jWcRUcRmxSI2KRGxSI2KRGxSI
2KREYmZGP0mol64k9ikRXYt20kdX8M+Ve7FIisRzpm70tDRd422ORGxSIRx4Ur
QzXeIbFIjYpEI44JAxcHLI1NNXK0BIIZxFvchtWX6+YyvN4/4JFMyrDYpEbFIjYpEbD
IhCqv1QwqzZrnGOGFC+Mj2sPWxjsnKeSMHSga1p+5zFQyEWUOi5O22ORGxyI
rDRZm0dlydrsUiNikRsUiNikRsUiEKq/
VEZW27DOhi4NiRqiS+V4CQQztb3IbVp+4zGVtuwz7JOsIO8r12QQztb3ASgpBb
LCo/wDKSJEE9c/
g8HIZPsUiKuycMk9HhcnabFIjYpEVloszZ6zyCjmM2KRGxSIiEjoRossOZ6TYpEbFI
gxJU8RsUiNikRCM8so7SzxK7pxsUiE4aSSPIlVdw+xSI2KREEgo3jJlE68ZsUiNikRs
UiNikRsUiNikRXW6rWNFnjFHqexSIaV96o5xjBccOIfV94R3sUiKxFKMsBQ2SJrQ8
mursUiK1EuGzvSYac7HbFIjYpEVpN03ai0MHLxXYpEIQkgVb/7x/wD/
xAA7EQACAgEBBgQFAQQJBQAAAAABAgADBBEQEhMxQVEUITIzICJCUGFSIzBA
YgU0Q1NgcYGh8BVwkJGx/9oACAEDAQE/AftBYDnDkVD6oc2oQ5/
ZYc608ocm4/VDY55naGYcjBkWr9UXOsHPziZ1Z5+UV1fzU/
fTYi8zDlUjrDn19BDnt0EOZcesN1jc2+EVu3IQYtx6QYNs8A/
eeAfvDg2xsa5ekII57AxU6iV5rL6/
OV2pb6T91NqLzMOXSOsOevQQ579BDl3HrDY7cz8AqsbksGJcekGDZ1MGAOrQ
YVQgxqR9MCKvIfuCobnHw6m5eUsw7E5eewEqdRKc3pZOf202IvMw5dI6xs9eg
hzn6CHKuPWF2bmdgVjyEGPafpgwrjBgN1MGAnUwYdI6QUVD6YABy/
grcdLecuxnq8+myjJany6RHWwar9mLBecbJpXrDnVjkI2e3QQ5dx6zets7mCi0/
TBh3HpBgP1MGAOrQYNQgxaR9MFaDkP4E2IvMw5VI+qeLp7wZNJ+qBg3L48jD
1+aucpVc1J1EqtW1dV+wNbWvMw5dXTzhyXPpQzfy25DScHKfm0GAx5tBgJ1M
GFSIMakfTBWg5D+DNta8zDmUjrDnr0EOdZ0EOVcesLs3M/CCRyiZdqc/
OVZddnly+LIxhb5jnGUqdDK7GrbVZRetw/P8aRrDUh5wVoOQ/
hi6rzMbKpXrGz06CNnv0EOVc3WF2bmfgFVjclgxLj0gwbOpgwO7QYNU8FVDgJ0
MfCsXl5xlZTodlOU1fkfMRHWwar8N1C3D8yytq20aKxQ6iY+SLfI8/
t7Oq8zGzKV6xs8fSsbNtPKNda3NpoTBTYfpgxLj0gwbesGB3aDAr6mDDpHSCiof
TAAOX7lkVxowl2ER517KrmpOolVq3Lqvw21LaujS6lqToYDp5iY2Vv/
ACvz+1GF36LD4luwhxr39TwYA6tBg194MOkdIMekfTBWg5D+EyMYW+Y5xlKn
Qyuxq21WU3rcPLn8LoHGjS/
HNJ1HLZjZf02ffGvqXm0bNqHKNn9lnjrYuefqErtW0ar8N1C3D8yytqjo0Vih1Ex8
gXDTr8JAI0MyMUp8yctmNlbvyvynP7sTpGst+lI3jG/EOJe/
qMGA3UwYA6tBg1CeEp7SzBU+iAvQ/
Yyi9bh+fhsqW0aNLqGpPnASDqJj5Qs+VufxZGJ9VezHyTV8rcoCGGo+/
XULcPOMlmO8x8gXD8/CyhxoZkYxq8xy2Y2VvfK/
P4sjFFnzLzhBU6GUZDUn8RHVxqv3wso5mHIqH1SzJx3Gjecr94bnxc5kYm781e
zGy/of4r8dbh+Y6NWdGlNzUnUSuxbV1X72a0bmIceo/TPC09olFdZ1UfuMjED/
ADJzhGnkZhXFhuH4raltGjS6lqToZXa1TarKbluGo/
wNn6b4mF73xugcaNL8Y0+fSV2Gpt4RHDqGH3w2oOZhyaR9UOZSOs8dVPHp
2h/
pDss8e36Z46ztDm3RmLHUzDpNa7x5n9wQGGhlqcNyswW1rI+9mms8xPD0/
pnhaf0zwlPaeDp7TwVM8FTPA1TwNU8DX3leLVX5gfur237SRMAaVk/
4K3hOInecar9UOTSPql+ZvDdriKXbdErQVqFH302adDDd/
KYchv7sw5Nn92Ycm7+7nicn9H/2eIyu3+0N+V/
wTi5X5/8AU38k95rf+f8AeaXHv/vNyzsZw37Thv2nCs/TODZ+mJi2v00lOOtI/
P8A428jJNLaATx79p49+0rymdGbTlPHv2nj37Tx79pj5LXPukQ5zA6aSiw2pvGW
vw0LTx79pbYa69+ePftBLslKf84c9+glecreTjSc9rHdUmePftPHv2iZyn1CAhhqN
mTeaNNBKctrLAukycg0EaCUZbWvukTJyDSQAJ49+08e/
aU5odt1hpsuyEp584c9+glecD5ONIDrL8tqn3QJjZBuJ1Gxs5lYjSDKbg8TSePftPH
v2nj37SjJNu9qOU8e/
aVPxEDbMjKal90CePftBnt1WVXLcNV2Wvw0LTx7doDvDURzuqTPHv2nE/Zb/
wCJ49+0rbfQNL7GqTeE8e3aX3mtQyiUZZtfdIl+Wan3QJRebVLMOU8e3aUWNa
m8RMnI4OgEpyzY+6RLCyqSs8e/aVPxEDTJyOBppEzLHYKFmd7glFPGbTWeA/
mleJuKy685/wBP/
mjDdYiUYvGXe1lGLwW3tY3qMwvZmV7LbMn2Dsus4VW9CSx1MTBYjUnSWVtU
260wrv7M7bPQdleHxEDay2pqTo0w7Sr7h5HZ/
SHJZie8Jn+pZh+8Jn+pZTXxX3ZZhbiFtdllvDq3jCSx1MTBZhqTpLamqbdaYVvn
wzMz3jMDm2yz1mUV8XH3fzPAfzbKsPioG1lWPwA3nsxvZXZne7KKeM2msvxTS
N7WUOa7AdmfZySaTCfer07S3222D+rf6bKPaWMoYaGMpRiplf7fFK9ojbjBpY2+
5aP+xxd3vFUsdBFUIoUTIfiWEwEo2sVg6hhMqrh2fgzBs5pMiziWEzBq/
tDM73BFYryM41n6pjEmoE7LfcaYPtbG9RgZhyM3mPXZk+wdmd6FmONbV2Z4
GimY50uWWZaVNukTx9fYziC2ksPzsxvZWZw/Z6yv1jZ/
SHJZie8Jn+pZh+8Jn+pYrFDqI1tjDQmUCsv85mefkEoGtqjZnj5QZQdLVmZ7xm
BzbZZ6zMH2tuL7Ij+k7Mb2V2Z3uyi7gtrpLslrhppMdDZYBsufiWFpbVu4yn/
nnMN9y3TvLfbOwf1b/TZR7S7M6vR9/
vMF9HK95boLDpKtDYNZnPq4XtMKvefe7TIfh1kypd9wszF3bf8AOYL6pu9plVcW
v8xWKnUStDYwURVCjQTO9wTF4e/
+0muJ+JW9Z8k2W+40wfa2N6jMSqt6tWEyKa1qJA2ZPsHZlV79Oo6RWKnURcq
phqTpMq4XN5chMNN6ze7TIxrLLCyzwd3aVoa8fdb87KL6lqAJmVkC3yXlMZN+0
TxFWumszLVsYBekwxrcJn+pZh+8Jn+pZjbnE+flG8Lp02FTbiA9opKnURMuphq
TpMq8XN8vITDr37Ne0zl0cNMa3gvqY+VUq6g6znMVd2kbcX2RH9J2Y3srszvdlF
PGbTWWIa23TMF1816zKfcqOw3WMN0mA6ecL8Sje/Gwf1b/
AE2U31CtQWniKf1S9RdV5RGKNvCIpscLLE4blY7F23jMavh1CZz6kJFYodRHsaz1
GYr7lo2ZAC2sBMBRqTszVZrPIThv2nDftMJWVzqNllb758phAirz2NW+8fKYYIq85
kgmk6Thv2mQCaCJw37QcpfhnXerhRx0leLZZ00lVa1LujbZ6DOG/
acN+0TFtfpKaRSugjo4b5hFrduQmLj8EatzmcrMw0ExEYW+YmcrMw0E4b9pw3
7SvFtfppEQVruiX4Z13q4a3HMSvGss6aSqpal3RLahau6ZZjWV9JuOekow2J1s2
8N+0xQRSNY3pM4b9pjjSpddmarGzyEwlZXOomZTxF3hzEVbEOoEyWe7TQTEq
bi6sJoJbSyuQBMfe4LIROG/aAHw+n4nDftOG/
acN+0o8qll9LLYdBMKohi7CZtRJDKJTQz2AEbLBZY5bSYdW6mpEvr36yJw37Spi6
AmZKObjoJgqV3tR/2i/
8QAIBEAAwEBAAIDAQEBAAAAAAAAAAERECAwUCFAYEFwkP/
aAAgBAgEBPwH1VKXul/
AUpfBCEJzfb0pS9QhCeOE2+wpeoQhPwFKXYQhPq3wz03zkIT61KUvdL+ApS9Q
hCEITb7mlLxCEITyTx310IT0N97SlL9G+5+SEIQhPoT/Gpl/
DTwzF+PYvxFKUpSlxeJe+hCEIQnkX46/
hvk+f+c1LlKXLty7S80peLlylLtLl25Sly8UvF25duUuXbl2jyZOUPHxMXMxYxDEPJ
xMQxcTJy8mvF9FixD6XTx69vD14xD4evGLVq1Y+v4Lti1i1i5fS6ePhZOVjEMQxb
/NYh9rl6vovVqx6tWrqZPIxD2ZMnM8LEPGLxofC5X+Rf//
EAEgQAAEDAQIICwYCCgICAgMAAAEAAgMEEBESISIjMTRxchMgMjNBUXOBgpK
xMEJSYZHBYKEFFCRAQ1BicKLRU2ODsnThgKOw/9oACAEBAAY/
AvwvnJGt2lZVVH3Y1kcJJsCzNL5nLNtij7r1rJbsACyqqXzLCkcXO6zxP2eV8e665Z
NVIsb2v2tWfpmu3XXLO4cO0XrMVDHfK/
8AsTjWdqI2+Jc9hbrVmoJH7cSzUDG7TeudDN1qztTIfEsZv/cczUPu6jjCuq4Q/
wCbcSuZKGO+F+L+wGW8N2lZdVH3G9ZBfJsaszSnxOWbZFH3XrHUubu4lnZX
v2u/
e8zKcH4XYwsGtZwLviGMLDheHt6wfxvnZWM2uWOpad3Gs2ySTuuWZpgN5yy
XMj3WrOVUn1uV73F232tzQSs3TSu8C5jB3nBZ2WNn5rO1LjsbcsoSP2uWqtO3
GtUi8q1aLyLVovIsdJF5VjpW9yyRIzY5ZmpI3mrNGOUfI3LPU72/
O7j4VNK5hQZ+kG8G74xoQfE4Paekfi/
Ozxt2uXP4W6L1mYJH7cSzUDG7TeudDN1qztRK7xrGb/
aXMaTsWRSy+W5c0GbXLOzxtHyxrO1LzsFyymvftcsilj7xes3G1uwfuGfp2E9d1x
V9JM6M9TsYV7ouEb1sx8a+nfi6WnQUGPzM3wnp/
E+NZ2ojb4lzpfutvWap5HbTcs1DGzbjXP4G6LlnZ5H7Xe0ujie7Y1ZNLJ4sSygyPa
5Z2paN0LOzyO2XBc0X7zlkUsQ8KuY0NHyH71n4hhfEMRRdRP4ZvwnSiyVhY4d
DuK2Ktvli+LpCEkDg9h0Efh/
Gs7URt2uXOl+61Zmne7ablmoo2fmtYLN0XLOzPftd7LEL1dHTyu8C1cjaQFlviZ3
3rO1XlYst0r++5asDvG9Zqnjb4Vi/
keDUxh4RfQHhWfB0oteC0jSDxL4Tez3mHQVhQnKHKadI/
DOdmjZtcufw90XrMwSP24lmYY2bca5/A3Rcs7PI/
a72Obie7Y1ZNLJ34ljYxm1yztSxuxt6ztRI7YLljY9+85ZNLH3i9ZuNrdg/
ludbgydDxpV7xhxdDxxBJA8seEGSXR1A0t6/
wlnHtZtKyqlp3cazTJJO65ZinY3eN6xSiMf0tWdqJXeLj5EbnbAsill8q5prN5wWcmj
b9Ss7VE7GrL4R+1yxUzTvY1m4I2+FYv5qWvAc06QUZv0aNsX+kQ4XEWhzCW
uGghCCsIbP0O+L8F4ys7UxjxLJc+TdasxTeZyyMCLY1Zyqk7jcspxO3iXRxvfutW
TSyd4uXNNbtcFnJomj5XlZ2qcd1qyjK/
xLVwdpWbp4m7GLEP5RnZo2bXLHUB26L1kNlf3LFSu8yxUn+ayqQ+dZynkb33
rG98e81Zmojd4vbmSK6Oo6+vanRTtLHjo4gp/0g7H7sh+/
4FzsjGbXLHUB27jWZhkk24lmYY2bca1gs3Rcr5pXybzlkglXx00rtjCsVM4bbgsrg
2+JZ2paN1qztRI7YLllNfJtcsVKw7VkQRN2MH8qx4lnaiNviXOl+61Zqne7ablmoY
2fmufwd0ALOzyP2u9lmJ3tHVfiV1XG2UdbcRVzZODf8L8XtcGUYLxyXjoXBzt2Hr
4gp604UPuu+FBzCHNOgj+fZ6ojb4likdJutV1LSOdtK/
Z6bA2R3rL4e75uwVfJgN3nrLnjbsvWcqXHY1ZRlf4lq4O1xV7KWIeFZDQ3YP5Zj
WdqI2+Jc6X7rVmKd7t43LNRxx/msdS5u7iWdle/a79zAZJhx/A/
Gg2Q8BL1O9oYqht46Pkrn5UR5L+II5b30x6PhTZIXB7HaCP51mjEwfMErLrnNH/
WwBftE9TNvSrVgdpvWRTRDwLJaB3fzDPTRs2uXP4e6L1mYJH7cSzUMbPzWsFu
6Llnpnv3ne1yQSs3TSu8C5jB3nBY+DHiXOw/
UrEYj4lzOFuuCz1PIza3jhkufg6icYXCUz8LrHSPZujnaHsdpBRkivfTHp+HiZOXCe
UxCWndhNP5fii95Ddqy6mPuN6zYkl2C5HgKYDecsUjY91qztRK7xe0yInu2NWTS
yd4uWU1ke1yzlSwbAs7USO2C5Y43P2vKyaWPvCzbGt2D2Gfp2OPXdjV9JK6I9T
sYRLo+EZ8TMfFElO8scFgPzdQPd6/
Zlrxe06QjUUILoveZ8PE4SA4veb1rDgOP3m9I/
EWdkazaVjqGu3cazMMj9uJZmKOPbjWOpc3dxK+R7n7T7G6KN79jVkUsveLlzT
W7XBZyaJo+V5WdqnHY25ZXCP8SxUzTtxrNQRM2MWL9yJLOCk+NiLruFh+NvE
DmEtcNBCbT1pDZvdd8XtDUfo8ZXvR9exXEXG0S07sFw/
NYsiYcpn4cvke1g+ZWOoDj/TjWYge/biWZZHF+ay6l/
diV7yXH58XJa49yyKWY+BasRtIWUYmeJZ2paN1qzlRI7YLllNfJtcsVKw7cayII27G
fvploLo5fg6CjHM0seNIPEbTfpB3ybIfv7QzU1zKj8nIxytLHt0g2tkhcWvboIXBzXM
qB0fF+FryblnKlncb1mWSS/
ksxCyPbjWVUOA6m4leWyyfPSsillPgWrEbSFlCNm1yy5om/VZ2q8rFlyyu/
JY2PftesVKzvxrN08TfCskAfybLyZRyXrg6ht3Ueg8QU9acKH3XfCg5hvadB9nfyJx
yXoxVDcFw/
O0OYS1w0EJtPWHBn6HfF+E8yWt+bhesqvcwf0RgL9oqamba9Y2PdtetWadqya
WLyLJjYPD/ADIxVDbx0HqVzxhRHkv4gimvfTH/
ABTZIXBzHaCPZ8HOMfuu6QsCYZPuv6DxG01e7HobIfv+PM7URt2uXP4W61cp
48CubUsB/
qxK9pBHy9m6OZoex2kFGSG99Men4eJdy4DympstO7CYfZmKobhNKwhnIDod
1beIKeuN8Xuv+FAtN4PT+NL3uDR81l1LL/ljWZZJKdlyzMDG7TeuewB/
SLlnZpH7XcXCppXM+XQhFXXRSfF0H2Za4Xg6QjUUAwo/
eZ1cTCixsPKZ1oS07r+sdXsyyRoc06QUZ6QF8HSPh4giqL303/
qmyRODmO0Efi++aVkY+ZWS90p/pC/ZqcD5vK5/
AH9AuV8sjnn+o23MiedjVk0kvlXMhm84LOSxM/NZdWe5ixVT/
Kr6eRs3y0FFk7HRu6jY2CrJfT9B6WIOYQ5p0EezdUUAuk95nWi1wucNItEsB2jrW
HFieOUzq9o6o/Rzfm6P/XEu5cB0t/
0hLTuwmH8WfspjHzesv9JBg6mMuV81YXHdWVUv7mrKllcsYkftctXv2uKxUsXlW
REweH2GBUswh0HpCv5cB0P/
AN2COW99Mej4U2SFwex2gj2ZkiujqOvr2p0U7Sx7dItbLTuwXhfBOOUz2jp6QBt
R0jociyRpa4aQbcKLGw8pnWhLAdo6vx4WSNDmnSCnT0d74OkdLbLuXAeUz/
SbLA7CY72d0gwZByX9S4Oobd1HoNrZIXFj26CFwc1zKgdHxe0whkTjQ7/
aMVQ3BcLRLTuu6x1rCjyZBymdX49dP+jxc/
3o+vYiHC4jSFe3KiPLYmy07sJp9mYqhuEOj5LHlwnkvtDmEtcNBCbBVkNqOg/
F7TAmGV7rukLAnGT7rug2tlgdgPCwTkVA0s/
HpkizdR19e1GKoYWPCZFfm5sRHz9o6OZoex2kFGamvfT/AJttvGlCmr3Zz3X/
ABe0MVQ3CYVeM5AdDv8AdofE4te04iEIai5lT/7fjfLcG7SsupiHiXOl261ZEUr/
AMlm6X6vWTDE36prqkjJ0XBRvAyYson2txTqj9HN+bov9cRtNXuxaGSH7+0LJG
hzTpBTp6S98HSPhtBabiNBTaeuN0vuv+L8bXzwskPzCx0rO7EsUTm7HlYnSjxLJ
nkHcsVS/
wAqy6olvyauDpm3DpPX7czUtzJ+kdDk5krSx7dINraOqdffzbj6e1dUfo8fN0f+uI
2m/SDvkyQ/
f+xmPImHJejFUNwT0fOwFpuIxhQzdJGPb7UzUtzKjpHQ5FkrSx7dINraetOFDoa/
4UC03g/2LkY4ZbRew9Rte34ZD7a/
kTjkvRiqG4Lh+dopKo5t2Jh+H5f2Lmlf0Ntwj77yfb8HONjukLAmF7TyX9dowzfLH
ku/
sHjIWVNGPEsqqiHjWtMXPX+ErJ4R3hWbgkdtxIcJkRjksFjIoxe55uCigZoY279wd
DMMR0HqUkMvKYbrOC92Vv5/jfKkaO9ZVVEPGtZadgKxOefAsmKU/
RZFKe9yyKdg2lZLIm9y5bG7GLWnLKqpfOsuaQ+JY3E+wuAvK/WatuedyR8I/
copR/EZj7rKS7/kH41uKy2O85WOE+YrRIPGuVKPEsU035LJqZPKFiqneVYqv/
8AX/8Aa1seRa03yrFUR/
QrFPF+axSRHvK0xeZaYvMtEfnXIZ51zbT41zQ8wXMXeILPOZEPqsIDhZfjd+50r
em42Ug/7R/Z6RzDexmS2wP6Imk/2ddS0jr5XYnuHu28K8Zc2Pu/
snpCxvaO9c/H5llVUQ8YWtx/Vay07AVzp8hWJzz4Fm4pH/
kiyL9njPw6bQ+Qfs7DlfP5K4f2BxlZUrBtcsdTF51jq4/
qtZB2ArnHHwLEJT4ViglKyaV3e5ZNL9XrJp4x3lZMcQ+qxGNvhXOtHgC1k/
QLHVy/
VY6mbzrKnkPjWNzvqtPsg54MdP8AF17E2KBuCxuj8dZsN7ysltN5isn9U/
yWTJSjYFz8I2LW2+b/AOljqSdkyypCf/MsbQf/ACLmgfGFzH+QXMf5Bcx/
kFq5PiC1Y+YLVT9QtVd9VqrvqFqrvqFqj1qj1qj1qj1qj1qj1qj1qj1qr1qrvqFqrvqtV
d9QtWPmC1e7xBcx/kFzH+QWdLIhtvQdNfUP/q0fRXDR/
wDzVi+VwY0dJWtReda1F51rUXnWtReda1F51rUXnWHK9rG9ZK1qLzrWovOtai
861qLzrWovOtai861qLzoPicHtPSEWuqIwRpylrUXnRbBMyQjoabQZ5Gxg/
EVrUXnWtRedXhAzyNjB0YRWtReda1F51eOJn542bXK79ajWYlZJun2Jc43NGkrW
ovOtai861qLzrWovOs1I1+6ePcamLzLWovOjwErZLtOCVecQC1qLzrWovOiYJGy
AfCUS7EAtai861qLzrWovOtai861qLzq6KeN56g7jZ+eNm1yu/
Wo1mJWSbruJfPI2Mf1Fa1F51rUXnV40WlslRG1w0guWtRedYEM8b3dQcgJ5WRk
6MIrWovOtai861qLzrWovOtai861qLzrWovOsO8YN1961qLzrWovOiYJGyAfCeIXy
uDGjpK1qLzrWovOtai861qLzrMysfsdxi6Rwa0aSVrUXnQa2oiJOIDC4hdI4NaNJK
1qLzrWovOg+Jwe09IRfI4NaNJK1qLzrWovOsOF4e3rFpZLPGxw0guWtRedACpiJ
OjKs1qLzrWovOsOF4e3rBRfK4MaOkrWovOtai86vGhFrqmIEaRhLWovOgyOojc4
6AHWlr6iNrhpBctai86D4nB7T0iwcPKyO/
RhFa1F51rUXnQcw4TToItwJZ42O6i5azF51rMXnVTsHrx27zfYQ7T6qq7V3rZN2f3
tg7S2PdCpt82x7os4Sodsb0lEMdwEXwtWPHZhRuLT1hBlfnY/j6R/
tNkhcHsdoI49V2R4t7HFp+SAmP6xH/
VpXCU7to6RxZd8+tlX4fup+zPpbN2n2VR2bvTjXg3FCkrHYRPNvPpbwlQ67qHS
UWxHgIupulXk32XsJaesIMrc9F8XvBNlgcHsd02Q9rbFuC2q37BuFU/Zn19hJ/
wDHP/
rbL2v2HEn7vXi3tJB+SbFXnhI9GH0hBzTe06DxI6dpypTedlgc3SDeFFMPfbbVbls
Hf6qq3fvbDtd62xVTfeyXWAjEQoZh77VNGBc0nCbZNAdLHYX1UcI0yO/
KyCLoLr3bFLL0Mbei52k47JKl2iMXDbZLM7Qxt6c9+NzjebJaV3u5TdljsEZ2PKba
6ndyoTi2WOkfia0XlSzu0vdfZwkgvihxn5lVOwetuhaD9FoK0Jm81aD9FoPE0FaC
odp9VVdqfWyfs/vbB2lse6FTb9se6E+abktRlnOwdXGEUp/Z3/
l8+PV9kbcQv4jZoTo0jrUc8XJeOJNvn1sq/
D91P2bvS2btFUdm70tvYxztgXNP8queCD87A5huIN4UMvxsBT5peSwXoyy6Pd
b1DjBrz+zvOV8vmrxjBUHa/a2LcFtVv2DcKp+z+65JWg24gtB+i0FSf/HP/
rbL2v2HEn7vW3QtFrqOU8nGzZxJXA5LMhtstK7Sw4TdltVuWwd/
qqrd+9sO13rbNF7117dtskB0xuvGxQ1LejIdYxvRKMFFg0RNwbJ6p241MgGmV
35WxMPLIwnbbI6ZumQ3nZbDITc2/
Bdstc5gzUuU2yJ7jcx2S6wQNOVMceywAYyUyP3zjftVTsHrbTZI5PUuSPouSPouS
PosYvXJH0XJH0VTd1/axt/wFckfRckfRYlVdq6yfs/
vbB2n2ti3Qqbfti3Qo6VuhmU7bYGsF5OIBNfUMElQdJOO7YsF0bSNidVUQuaOW
y1oeb3xZJ41X2RtdeBzpVz42kbE6agbgSD3BoNstK7Ry28SbfNlX4fup+zd6Wzd
p9lUdm70tk7X7CzhSBwjXDBNtMx2kRhRUjTi5b7ABjJTZKpglnPXoarjG0jYnVVC
3Bwcb2C3g3nLhOD3KDtPtbDuC2q37BuFYxeuSPouSPonbbKm8DSFyR9FyR9FU
9k70tl7X7DiT93rbS5I5HUrnMaRsT44sTHDCA6rKYjpdd9bZpfeuubts4OHlXE2Q
yX5N+C7ZbVblsHf6qq3fvbFtd68SS7kSZbbGA8mUYCni6S3FtsZIzlMN4Ukr+U9
15sgj966921FgOTCMGyJh5DThOtlcDkMyW2NbKMbmhw77IXnlAYLttjg0Z1mUy
2N7jltyXKV4OQ3JbZw8gzcPrZU7B62tihluY3Rkhc8PKFz3+IU5qn4WCRdiu4lVt+
1jdx3Equ1dYXU8joyRde1a3L9VrUvmQFRM+QDRhG2LdCpt+2LcCqX/
wBZFjS7RE3Ctc12NpFxUsXwPIsni6HMv41X2Rtd2ptma3kuyvrZTXdJweJNvn1s
q/D91P2bvS2btFUdm70tMVPgYJN+UF/C8qH6y+8DQ0DFY2R7f2dhvJ6/
lZVE9DsH6WRYWhmXaQcYKniGhjyBY+PoexQdp9rYdwW1W/
YNw8R22yq3hbU9k70tl7X7DiT93rbSh0rAcD4kS6eMAf1J8sfIGS2ymHU6891sN
K3oy3WTzn3RghVEXwvN1kLzygMF22yq3LYO/
wBVVbv3ti2u9eI2dvKhP5WNe3E5pvCimboe29TtHJccJvfbAz3b8J3cpJHcljb0+R/
KebzY+pdplxDZZNKOVdc3bZDCPfeAqaZoxXYBslpnHE8YTdtpewZqXKG2ypjZj
4ZuL5GwNaLycQUcPvaXbbKnYPXjVW8OJU7R6WN3HcSq7V3sIt0Km37YtwKcH/
kNk3Z/fiVRb/yGy/8A6zeoXUr8Bzn3HFetY/wC1j/
ELWP8Qqj9bkw8G67Eqvsja7tTbi6IxZSdoOJNvmyr8P3U/
Zu9LZu0+yqOzd6cdkFaxrGaGvaLleMYVUD/
AMpseOuLiVZHx2M3HKDtPtbAf+seltVv2f8AjPEdtsqt4W1HZu9LZe1+w4k/
d68d1ZKLi4XM2WEnQFNMfedi2WRk6ZctMlGiRv5iyWmdoeMJu2yq3LYO/
wBVVbtsW13rxHxv5LxcVJC/
Sx11hiPKhdd3J4GiIYFsd+iTIXBjTMcGxkTOU91wUcLNDG3WQ0rToy3fawynRE3
81N1x5Yshmb7jr017cYcLxY9jecblM28Q1EgzcOjetqdg9bYJZosJ7hjOEuZ/
yXMnzFOFKzBwtOPiVO0eljdw8Sq7V1kjKm/Bay/
EblyZPOtEnnUT6YOvc643m+2LdCpt+2PdCn6nnDHfZFI7Ew5LrZZ3+6PzRc7S
TfZUTnRiYFTdofTiVfh+6q+yNru1NjnyG5rReSpp+hzsWyyM9EYLrXE9ARPzsq3f
NoU/
Zu9LZu0+yqOzd6WySVMeE4Pu0rmf8k79XaY5LsRvVxsMTze6E3dylPRJlCyGY8
m+52xXjRZJNJyWC9PkdynG82TznQ1uCEXfA4G2H4mDANjnvNzWi8qab43k2T
SdDWXcR22yq3hbUdm70tl7X7DiT93rxo46w5J0DrKAaLgLHgcuXJFrGMhhwWi4
aUxs0bG4BvBbZFM33HXpr2Y2uF4VVuWwd/
qqrd+9sW13rxWVLdEouO2yUyG5joz9U578bnG8oNYL3ONwCcyQXOabiE1zcR
GMKn4M3tbHj3jpsdO7kwjFtsLnYgFNMfedi2WPbDGx2GbyXJzHQxXOFx02hh5UJ
we60vZyJsqwNGk4lHCNI5R6zbU7B62wwy8JhsGO5q/
ieRfxPIv4nkTJY+S8Xi2p2j0sbuO4lV2rrJuz+9sHafa2LdCpt/
7Wx7oTamMXui5W7aIatpljGhw0hYhKT1YKuORCNDLA1gvcTcAo4fe0u2pjJXuZg
G/
EuflXPyrn5VJwL3Pw7r8JVfZG0xVGHhYZOIXrIbK7uXBgcFB8I6dtrqiQZc2jYuAdF
wjMG8kHGsqR0e80p8FDe4vFxfdda55/
iSEqfs3els3afZVHZu9LXx1Ly1xkv0Lnj5CnfqpMsvRiV5squrJQnjF8kPpaIalplhHJI
0hYhKT1YKwbuDgGhvXtsAaLyUyM84cp+1Swu99tydG8XOabjYXR5UbuUxXuEr
T1YKMNO0xw9PWbeFdypjf3cR22yq3hbU9k70tl7X7DiT93rbSl0TCcDpahUQtuh
k0gdBsDmm5wxhNeedbiePnZwLeTCPz44jPKhOD3Kq3LYO/1VVu/
e1kM+HhtJ0NX8XyL+L5F/E8iE0F+BfdjClYOWMpu3icK7kQ4+9cM0ZMw/
PiRg8uTLdY8Dly5I44jJyZhd320u6bId8cSp2D149J2Ytqdo9LG7h4lV2psn7P72w
dp9rY90Km3zbHuhEOxgoywDCpnf48XEhV1guk9xp6OPV9keOJqkFtOP81cMQC
qJb8Rfi4jIYRe5xuUcLNDBcp+zd6Wzdp9lUdm709hfKLpZThEdVhnphfTu0j4OM2
rrG3H+Gw+tprKVt5/iN+/
GBcLqdvKPX8kGtxAaOI7bZVbwtqeyd6Wy9r9hxJ+71tpdxPgl5LgpIZeUw2NcT
mn4nhPnJyGtwk+R+NzzebJ6iRoIGQ29c236Lm2/
RTxdGFeNlgjdyZsnvVVuWwd/qqrd+/
HbvmyVg5LsptrS7ly5RUmCL3x5bbYYvdvvdst4FvJhF3fZBD8Tsexc236Lm2+VQ
VEbQLjgm6xr2YnNN4UUzdD232Uu6bId8evEnjhaXvddcBtWqSLVXrVXrVXrVXr
VXqnZKMF7WAEWzyQ07nsJxEbFqj0JKiB0bMA4zxKh8dM8tdISCtUepXVMLo2ll1
5thbTRmRwffiWqPWqvTAdIaFA2mjMhDrzctUetVemA6cGwteL2nSCi+gdwR+A
6FjpnO+bMa1SbyLLYIW9byg92em+I9HsKhkYvc6MgBapItVetVetVes4GQj5lB9
Qf1h/z0K4aE5t914uvRMLf1hn9On6K59PKPAsinlPgWWzgG9b/
wDSyMuU8p5sma0XksIC1R61R6lbUxmNxffjUzWi8lhAWqvWqvWqvWqvWqvQ
4QMhHzKEkmemHSdAtucLwUX0TuBd8PurV3PHWzGtUm8iyo+BHW9CSXPzDp
OgcUyUx4CQ/
QrmeFH9GNapN5CsmleN7Eg79ISeBiEcLQxg0AcU3Ur9K1V6qBVRGPCIuvtna0X
ksIH0WqvWqvUjKmMxuMl9x4kscDS95uuA2rVHrVXqnjlbgva3GLGz0rcKduIjrC1
V61V6/UXUkl4PK/
pWqvWqvUUb24L9LttsU1JEZDg3OuWqvTXspXhzTeFKGxnhnx8j5rVXrVXqGOd
pY8X3g7VURwtw3uGILVJFqr1qr1qr1qr1qr0I6hhY/
COI2RSUzMOVhuuHUtVeomzwOjjwsonqVw0BY1MKaBz4sLJIWqvUs1UzAkdiAPV
Y5zW4RAxDrT5H0r8J5vK1V6fNVxGO5tzb7Zomi9117dq1V61V6fBWROjwTk32
U5pYnSYLTfctVeoy6lfcHD/85P/
EAC4QAAECAwYGAwEAAwEBAAAAAAEAERAhMUFRYXGh8CCBkbHB8TDR4WB
AUHCAsP/aAAgBAQABPyH+XEuDwQnR4Rf8VT/
Je6q9b6VpoeZH5pY4O3uMLEAS5jnNSoPcRAjc2X7ptb99FrQHc6oI29JVC8k9P+
EgHIAYp4dhVxVt84U54QSCyvP5A7DLvlUE7nog5ixP+BSkimVmFtpFMAXfu6JoL
OIQL0/vwjisAIBu7BGiGPdND1PJ7JxaEUiLh8VqLR/
yzoB6wxrSgBHo6H9uMfJIKQn8B7UMn2RCZY84ttjm6cXINg8SdgsT/
KacGAXeoK63ALSmdANGk2B+TKh5qUAadGgGnRL1JGqPKqIcxC2m+box+vHZ
OxzEtVQuzR1Cz4r2ZAGRzCyQD13Kmhorg/
1zgVQklvqynKzvU1w4+6BEXeTJRxcLyqJuJIi5ixPyAhGbAdGWIzPuQ+eW0R5Wk
vC0q9G45r+Fv3s0CAGLkfOQ9UELms6gICUAwMkh3BVEESMuF8UW0/
IXNCssh/
pwEwAxQAljq4KSDOydTkSPQE3uJHbK4aa9WVnP4zoIzfFUDZPNDQdt2I0yvFKF
T/D9qbCShela/
AHuhYGWMf5Q0zf3qamyH6qri4DHgdjKRwWDM77qoZUfz5AHJk6yO5VMNxipa
bvEr+33l0r+Q01ys/
ERYhYBO5mZULdyaKBqzJOWAA+DD4Ik4LxPJAWyMUAGBh/
o7kfEiYyKc0vlP2pcEgGI4J14ZhEkf+ZE6LgE4SELDI7DECC9eQilzWGmoTlZ/
BqpxQkEIYPJbufJa1V9FoSqa3Kth1mgzA8Ef63SUMi1zmTlzu4LY8AtTZRVOofyQ5
x2GFV3ud2quOh2ww+MjBwIJanhp3rM8WvslBASheW91U9hUWm+i10tldyzsF
3P3ctOYUABgYf7UOMGAcFWDqqHCVQIiQ+LkTBVnYLL9/
xYVxAXlS4vcwnRV2cXygW+fiCkjbMOqcXouZaIq5nE8ck8GYhQCfG1NBgTzORX
roeEGeko7ug/
WWJvY8Xx8oo5jAVFBkP9QPJbKtBa0wj90+PKt9zFfrfleEfwinMgCVqMXwq+N1S
d6fM2y6WVVeYlEEk4kVkvdogL0/hAbhMIKp/
cKyslexXQY6RPwq4BcNHALEK0hw6ZCkGtsN/
uJpePFyOo2IVoiX3QxjW+ibpBmRAE4KEBCgDf6kK5jMnzJyKcADReFaYUjmMbLk
raqmpcokmszj8J8M7G6CjYRJNQ5cQgXp8nP4UQlbXdBvHA/XQLX8ICUXIcH/
eu1U7uYsIJ2BkXx7oBOfdIIoxM33LSQw8IpMM3s6mTsBIYB+wgtUxnhFHBuM8p
4JvahDBsAf6wAOQAxT45CwgpKC8QqvJgI9jFppSIuEdqIdaj/
hnCYMB+Kes20jkfkeZdVpXhMAcyqHPHgcTTNiCG3J6A/
wC6a96TPhcs9qpddAwjK0XjIWcvgC04v9g0BcJ9qXHRwzwwspxkulZDwk1g0/
LpSBW9lrmXgkKuIaB66yCsbnCopXlZZy4ixpBLSBQ4AHsB8Y0pMgOgpK3gPBNJ
zMOoxQP9ReVx/qGgS8mTnPCx7onsFtqaJZdRe7J1attV3naJJrM4/
FktQsKJBu9rXVbkvJ0aORlKLvgIE2fzBMlPa6grZPj4HRyYPUE8oCpS5hOnDqdiwK
EmwJuljHxjwCMQSKtOWCuTDgBXFtMhVLXUq/
0QdwWGFV8u+tVTciyXFHLR5u+tGndjn4Mk5CYxQKi2poOCQUivXQ8ILQ9Bs5ry
zsmYlhfPctDSCAEgA/whwAtgx53p0GlhTMWcBD4uQxBVjgbH9/
IGWawakICgVBETXaq4LirFjM7jD+cxQgIKXXW+tSzE009OtU9i4/
FYgMJ+HTERiLhiTIwJuyNSjFyJoWIVpWf2Q6dY/
hNUiuoWc9eAIBQAP8sgAQQ4KCCVRo+tUNOmNKSOCY2TSQEEOJj4wiWvyIgoG
ApE/ZHQFrZrGIfywxkAtKtW3PdFJzmTFSSsLiTs/
NtkZyOApRizIFLJxbhPJaLjleOzFaXpCCOuXhCJ/
n7kBYRgKHdEH+mZ4tJImPxFz5YUbxwPc0SV/
CHgEcBkfjchhaOhwVnfRsC8RINFyGIKHgqNl+/
5MGBa8eS5IjXC6JCcXrCCo+eEqjPkKCCW3AgAoAP9i+QMwrwnIDZYkc8eB6EK
W4ggcEcivxmkioVcETOjoCTEEiYkU02RAjvT+6JADmi0i1S/
qhRJjniWHmPtQaerScfGAODIO5JmwHgeJz6uoQEtKR2+MW2/
WYhTWl054OA6bTJXNggBhnAGv9pjAAmRIg8LDfonwckOqcRj5kcGww0MOcxz
wht5HTckbFKkB3BAgHBcH4gwhmIJFOk1Q1y4cDyrdGX6TSAalTuPxg1OwDgo3
Wjb/ngKWR1y4IAJHIkf6/
IjGETI5S9VLg+I7Jy5JDPDyYMTSZRJx4hTWzpb3R6ewqLywJug1TKUOIoAQq8oBc
2LQp0QTYyC/
NyHBHxtp17HLcUSEaxBMR7IPG4p9Nsqn8ZABiHC6AHuhBJjIiL9udl4oBbbbsP6
wANgYToEBIMfep1Nls/lW7ZAQbUAFsaclYXZ2o477Fy09wCAApLjJx/
UBTOuZSphA4gE7eIIFUHIr8beJErOFDYQmRKl1uBTbkDU1GHyDqgtjNE3OwExF
zVujL9J5GKHqdx/
vB7nYCRTKKvayg4Tl1KY4kPMJIj45USkCaFmEdG8RJVB0A5op2MQ+SS0enXBD
79diIuMFvQbinUsJxn/AHkhxNX6oCiCNimIKLMiSuWKH06oG4/
GDHarSvCdAupI0OMSHxciYKFUYWf7+STWFGqpypUaMSp7T4KkMFnGuIw/
vW128uFLEwBtyQa/gg/
ILADASKtpWR3cIkERgoXQ2wKD6Dj8g1OlxRu8VTphE4OQRMI5oA5ZP7cQ/
JhVvLmFP7N70rteBN3eECnXMierSJZej175QGA4NQm6BQd0IJMZERzSQ0R3p8Y
NTsBIogDU2v5iRsU4DRMr0yUzY/
22MHH1SNz9iHNABTO2OK8tAhslAgoLttaFefnafU7CaImBgJiMm5J8kEAGIcJ2r0f
dCCTGRhSkk3sCkgLiX/C3zLZHY4Jkm1WBeIOBm4L0+Nnyq/
KFHqNhNEPAwExG0DgrmwQGgTgi3/
hYyDm6kTGqMuYHzOkwkkaFGv01wXiJRpM7teH/
AAs+YAIALyaBVrAt3ZkJfOeTdlVwV3ooSGGUiia+bcf+BO1VQVmUTbPBXaaKuH
yco+z8iu3NqFTLIktFWZc8YMSlAqLC/wAA/szArwhMT5QKcjNDkn/
bh3zsQhbisirecHhaC5LsRh5QxmclF6+ld/
KfKCSyh5VnOQAVVvMtfU1q9H4AAolAAjyQKbsf/
CCjZZoDHSOPrL+1OX2NxZVBb71QhkqlZZCRJQVQbYKyjMiZSOYr9dBsOq+0bO
HDgankgYmyPbF7ZBxsuiVCyQIjFfJRBucUdcdejYO6JkLP8O6YftAoK91/49plFD9g
UqKxxMv+Otlk4UXZxNJR+Wz/
AMTI6i5rVcFGoDywMg1CdWzg8K1vJGjuSHT7EBG/
bwn5qtZwrQcRtoAQGAoP+A0ZGZWgeBOrNsC7QXqvZpeF2ZEtF8ftA+AXhVVi
0FasZdkcloJKClkUWB5fUuwhvZEHKOZarRKoLNCVTjn8VreZhA4wzAP7o5n+Jx4
U11X0w8QPGL5Xhi+kenyGpRFxAgfXVNQGRAdmjAKwCsIrskRuzyiDbar1aKjnrV
61etXrV61etXrV61D8HAT1JAiDdHlWhzKwisAogM/OaJiIXECQWCgH/
wA1auBo7AL0petL1petL1petLIzeC9KXrS9aXqS9aXpS9aVDHR3BREfMBGS9KQ
ABOQTKJChMCw5XpSa+kgCI4NETDjEw69aXqSAIjg0PAbYqLAOmY6yGOAwT8I
8QjkoAvWl60vWk79JBnF4J4yoEQWIIr1pHhuuSyODgBySvSl6UiNCYlxijtAJyTYnv
pL1petL1petLA+KJ4pIRwggdh7NBeiB4AkwlgWA69KXrSCIjlQxplPAEL0pSYG7IlA
Kg4BDr0petL1JepL1petL1pF4CtiTXr1pelIhQmJcD8FcDRWAXpS9aXrS9aWiPHin
RmIYBetIqN2AzPAOI7kMAvSl60qGOjuCganchgF60vWkCEehXEaOEmBC9KR6w
MAGaJaq9KXpSDCPR0FXA0VgF6UiKvRIAiOVCiomYgyK9aVJQ4EmJb8sBBC9KV
DHR3BgfEzdLr1pelIBcFyHBidhGxAr0ZerLfbvFQ+Eey3uJC2xwgFs1y2K6Aqt2ug
XVFKrgjpaILM5lEicnYmAYB6FYpyakkBUB7Rx7rdw4+EJlhBktJU5hq9XHgNOAp
my3o7/
AALbr3EBFAtBVF0ajNE6b7CpcEXXZmmzKcSLEwExTQjFHfO4YoeEnAQ3WBhat
9ujssPiORbwIavwGp7XCCDq0mRMxZD1b0PEI4LRwS5ORMDHsMTFWZ4TgbY6
tHf4lpXZHcr0W7yHnikDlbhwrFxJztWgUIZwuNJkj4mdnJBwQTygmUT8iw6Igjnc8
GI67/kKnaU3zmbEwfZM+crAc8fqhZweo/
UMCmu5sAqoKAXCwQbLSrkBb7diCUIjKDPTIMpuinahs9cqVkYAE0mcF65euQE
O7S4skb/
CAWzXLUe0BVbdcifMHqbk6sJyhuEXWhovczsXtoC8xTi3m6NUMgRIpgjMRmEs
mNxRaXeZG6JpwZM3y9Hd4BbVeiLYmIV7usGFA0GJjEFhXsUQj2s8I0jUOSuouFk
X0zIVDBWDgraYoWrZbo7LCJyMw8yeoXqo1AOQgy96HApqfAaztRBaEcgjWEBiI
viCPnDgmcG5A/
Yv81AjrUd3iWldkdyvRaEOXKKIgkxkRBx780E0aryCDqGdPuE5KW5jMwcAU+wp
zDTWScW7NzSg+xuT8Z5DzCSrCTBTLDaITgDyz+wlvNsmsCALhgEUYtq8lvt2JR
LrtR4Na0FYAYx1IQBgwbAJgBvxGUgAwMMFtF/
GDgWxXLUe0BVblcjncrnqQf8AjYWlAYY4LMKEhXsIqq3gKAXiJXAXLs4t5ui9aNxg
EfkaoIoOMdzpNxRDFjIwKC0w8JiaLc7403y9Hf4FuV6OroZSIzWk7IykBp6I8rM+i
Ai3DABDZU5a+AEfnWwinsO6RF4iabPpC2uKFq2m4R2WET0PzCEna5TU4P8Aj
CirW+3o6nwGs7UTjn9BEJ7qCKB6AmKWQlKB3lJEQAt1ZIKtZlMCBqpsAeD4MLn
Cd6Q1qO7xLS+zjsZ4tqFdYOlYgs7E2Icw5UwiGLGSkHA5wVZtNYrJPaG6smVNa
B56mDLH5CEZnhOUP2AWwa64Hg4B+WkJpnVLuapWUJtAeeFOSPyx+wr5nh7
bMN9uxGvFYCSUCsKp65Gxw4NJ7OLW8XwfLkEaUY0JuVwcaAWxXLUe0LVtFyMf
LgiZCQgFZyOeQERRuQLwUUh9CYGNGQEYg/
vFtN0dguERCAEaICpe3MRNOAam+Xo7vALcr0cWQ5OSw0Vnt2AIVzWQkdyE0
KSykgFhcZLlSIy2DEIOhiHgZzm+oW1xQtW03COyw4ZmpavDeLo7RejqfAaztRF
FwAggqoWi1TBRAjVAgQUHHJpou4kPMsgy+Qc4zKIyy5BUQcE/
LSGtR3eJaX2cdjMnmM9YE/
Y8wKggutNybkKJ8Q4cpMpfZB8gpnxPOgzydycHfN1ZIKtZlFmSgXWoA3m8qkLF
RGCsZfHJbQgO4yJg8/WDgBsC9XaLt51hvt3i3C7is267g3C/
jC2K5aj2gFtFyJKhFXOAgG0+LgojeeBxhQJP7gIxwbFb30rf+tb31p84Hwzvctpujtt
wiMoqBMCACUQ0U7G8xpvl6O/
wLcr3HTUDCDMIAiuUIRpgI7sDGqZuo4AX4iG4XLa4o46dlHdYQpxTUtThvF0duv
R1PgNZ2uOVYL7oEbYDlUnzeCDamMS5o4FBjktEKw1aO7xLS+447BvuTzlWUx
wdm/
UEwhUbOiupiCXgbudNU5kYXkqYBVcDnKmJhhQgHmQM8d+M0lLQdrkfkLLKIY
Wo2LITAwYg/
TFiIJEGREfMKfxHfbsTBHdwsf1Q6JoE3qPwbNchtd3BuF8AfGwCscL2iDAHt1s0Ati
uWo9oCq3a5DMioNr4FNcOYFAghxMQooSxfYCMI5xQJRmdweJA2w3R224QElOF
WBGp9V5BAjXOPbuYiMmBCVjcUMy9wt8vR2+BbleiREdEuEmCx/
UhaNufmeKIaQRCX6OcdEdslg2ddRARiw80khgrkHBgWliUnzl5xnAwRJExJdMkH
PjfMWsNE4iAaBAhsCIQ+5MDfuEYmpa3DcLo7dejqfAaztcR/
Ayq6KA0CYAWQc2360W8p5RVp+A8LC+zC1H4YCYFatHd4lpfZ8FjPdJvyGjGYm
EWZzzCmJ0AWlOFeuBRW3YJimgAZZZAMz7hgQBm5OCpFGbdYgzLxwdOj9kWo
uPd97IjRYDRcbYTESsTd7D3hUx327GneMzwMzOftXAxaO7XIbddwbhfx0YFsVy
1GAVW7XI9N2y2KQaOkvKJSpIuB7KOpgW41AVKkKaHbzqhCgoFdyFuQtyF420L
abokffuuLKcFulRFiK1ItJuhsoIGCMkCU6il3hOpjHIwBhGyMDISW+Xo7/
AtqvRMPYLGZMIWO9QMLwOaIaYTB2WSqKBF9uNaEg3hPVAREXV3eqB8IGAZN
1bqhUxj8ycFODEQGlbI1/
UJFjERAzrO9olMFumqRNS1OG4XR2i9HU+A1naiZnpiG9DfYsBL94OAi4LCiMD9
Mg1kpzmrFk0XQu8di1SO7xLSuyJ7hIGZUkrERiIxFTS4qIyTP3DySzjIST16JvrIcte
BgLdYMHNsX7osmif1lKO43w3u9Ckd9u/
FLdrkN7u4N5v4wcC2a5bFdAVW7XIbQAYg2ok0iTaeEAk02SKuIPOnHj3m7jKdd
wCNmQyEAMAE0ziuUSHBIks+1RH+Zb5ejv8AAtqvcYBJYTyVYqFYsCIAEGYKce5
wCr64cplNNmdgxeImyWFxDty/
rEEEBMAsEai1eG4XR2i9HU+A1najtsSh6uye42FDjZpnjDQLWv5IRwkuvDIg7jzo
M6EYcyvW162miDCWamIOIYf0cFbvEtK7Ph2zxjco/
sWjN040TE7DK6RegP0tVAMGEG8jvWasCMjgPcKAgAbGFetJzwDbpAtzETEKjWo
NxvjkKRGXK8pFsAtmFuwt2Fswt2EeaRKwxGuleE3ITV4OIeAVXlWh1uQmFYloXi
6T2F1oTswih7ACOSIz2CwGW5CHo0QdYABHKA4IjAOCnCrWby3I1APZkiTAvOh7
ahIItJ9AyyD4MRZ0EhbALZhbsIF/
JEBzB9kaEGwGHkgCAwUCm4fMWIQC9QdAcSWhOSGGb1QrLwbxyuEGiTS8tG
ZZjRC4yYlfLyy2YWzC3YWzCBi3bRzmh9kSo0gegIkYgzEG1PRu3MvpFoKAgpg7
nUqN6NoriAD6A4bU+gBpJuDGEhIYuqYgO8PNMvQDcShaRYCQ4KiLJYJNRbsIwD
KvJRZzPLyU3YW7CNaAFww4Dv3vKSA7sIooSDWGFHSSvdhbsIKKAiYUWLdhbsJ
78uPFEjPcmotmEGpJi8JmrWKiS3YWzCwmrlMjZQoHbMLYBbMLdhbsLdhbsIahH
gF/
vG0NbMIoGhckGRsBgEQAiYFPEcNwK3YRZeGyEwo4Q2rkQ5JlC1bMLPduyaxK9i
1wTC3YW7CCxHztgwGhcALdhBeCRJaU0Kf+4//
aAAwDAQACAAMAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAFCMThSThQBzHkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAANHBjRyBAAEPCBPDJCAARXDAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELAOIRTgAFGEMygCxA
AAAAAAQAkABvBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AEADU5CAAMPNaYgCxAAAAAAAAAAAAAAAAACEARBAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAEPAiUjqNI7gTggAAAAAAAAAAAAAAEMDJLJAAA
AABHBzLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGcJvWwwSBgAAAAAA
AAAAAAAAAAAMNDASigAAAQRBIAAAAlACOAAAAAAAAAAAAAAAAAAAAAAA
AAAAAADihAAAAAAAAAAAAAAAAAAAAFLY6xRAANGPNzAhlhIAgJAAAA2CALA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAeBiBKEG+
xgDRAAAAAAAAAHB3OAAAAzjRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAEbrppRBSBgAAAAAAAAAAAAAAAAAARISuAAAAAJAuAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCM
6AyJAAAACDRCAAAAAvAyJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAEPpCaagBCKmAAAACqAgAAAAAGBAJAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyaOAA
AAQARNAAAAAgJFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAANCYaAAAAARDADAAAAAWBzAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxzDiAAAAAAAF
AJAAAAACuyCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAeFAAAAAAQhXAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJFDCBBaCxREBAAAA
AAABLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAARzCyAihBgwBiAAAAAAAAEiJAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANIGLPDAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAFHHMJgUT0AMufPuHHKMLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYDDQjT
TxiCHzSXICTFJAABDhBJAEFwwYDDMAP7kJQoAaRjzjYThAZDHGAFCJAz5DADzVl
YlKqE1UTAImpG/
czgw1BhRAfUaALCDAAWAyGCAuXLDjSvQqlDDTLvAoSDI0pAqABDFXAWABCAr
ALQhJfsYApDZhsTripAjLALpABQzA/
UTXAjGJMDADFHA2XLDDQCWoXAhGr2AooAopBAqABSxHBijEAArArAniCTCfDn
gMCAWgpRQjALpABRhA5UtQKIEONIAAxVPgFrXLRNorBjZctCOhCAopAAqABCLr
GA+BOArAlGLZziiqjEqRAKiAPCCWAmoAGBDCrOhnPdCAARKCBTqHwDVrCCYhj
HQjHPGahUqDFCjAKDgCzVxOzCvKCCqJenQBqZTSKpEAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/
8QALREBAAECAwcEAwEBAQEBAAAAAQARMSFB0VFhcYGRobEQweHwIFDxQD
BgcJD/2gAIAQMBAT8Q/UB1QS/jz4luq8tYes6S0A5V8y+rlhLg9XWKt/
S6hzdZalzx8y0TsmBl7jtpCKBN3720ZzJt3wqwl56EdbOKstIOB/
ZfjrpSKuL+F4XkzZPjQ94i6HP4hnHvHKPRgLI8/
iXRvDGK0FH0rRo7phwo256MErU3Z9P2tqzmTbrgPxD33oaxto6uk2T4AS87zfU
FaEvh0ZsvxSOsHVmmjWX6rz0lpHPHzLQHI/
4FUIm+Y7ibrdJieBuv0iI0YYWjK1OvrrBBUt+tt+cybdcB+IG+8aGsfaOrNk+FCXq
eK+l1HgOkta8eZeAOekfbOS6Q116GsuieKy2jprBaCn+IPDjtL/
eM2q2j32ePRirHY0+0hlqn6YqrDiy6F4Yy+T2ibZxq6TZLgEbh6jLeulPMuAOKfM
bZOrM2ciXKrz0lpHOr7y0pyNP8NszmTInfSfeOktI8eYVVV4fklYFQY7NNIiqMyq5
mTKuuJmfoLLnOCaVcAy77j/I2b0e6xy1z0IhUuj7sFdekuAvOWEefeWFORp/
jtmcyWmrgPxDX3ihrHWDqzZvhQl+nm/ijVUZhio36xGrFv1/
Ie358dYnOiQE1GYLwFz7l/toKVllV4q+8s6cjSBT/
AC4yRxSbU8KsDfehrE2zq6TZnhQl6nivqC2l8OjNl+KR9g6vtD0jVgrq8/iO/
wCvxGXzo6TFmdj31lFKO/0p/
uhw0glqn444wFn7lERUftoFeiQOx58NP19njiywVcD+TVDpMnHLWXU66UgvAX
qyzrpNheKRFwc6+0fQNWAuPQm2nFfiWkdIJQU/
44yBKzjGzPltiI0ZWrhmZMqy4mZ+NDXPMmTXJ2xEJRINOFtbfn9UqFZrdDWG13
GfMPxM0dPmDunppMyPNlkEsKcjSW/xjW/PjrEx0SAmo/
bys8AufcvxTlUZfht7OMtKlG4OuvX92tLywnWviszU8tYus6RVwDp8wrfN3zKkK+
fxxxgLP3KUDY+eEOvRJVjA5bd5+KIKjK7jbGz49Fpfcdnx4ggqftqCtK8JZPzQ8My
NOCnzMSF4qxdnozNnQlyq89CA/N1hSujsbazYY+8yVWYC59y/
Gl7UlL4jJ+5wElEhJg+fzu/KvUuJpp0iJeOXPH43dIYSo/
vqFwuTshJslnJ+7JQjgLnufcPxWnUYvf8AHjrBRqQaX3Hbx3+fyyl7X53xwFElMOK
uaQG1R/eWUOKS7jzGLUcGYKtpUpt+0r+SAox6iwzNnDT0tLwfZ16/
lUFsjrujsqMukMzb8yuL44/u8YF5GkuQ6Rf+9ZhYPX/
hWMLYydGI0KJET4luHx+VH3BzJk1ycmVlfMza5mz/
AMMCpemPtA0U2P5pyqMaox29nGBP67paQf3aheWN6msuA+8ptJyYjary+Y5T
7QPk+I5Y6sXsO+sRZDlEz1WKDp2D5/4OAqM3CMZDJ8lf3SVlhekWyfecVyd9Yr
83WfUsdg9Wcbr8Ti9fib56/
Edu7aRDEO1x+P8AkdjV8YRUM3wf+KRunUidz1NYlcdSXAfeUNcy7pBw4syCv3i
0nwL5iln5fMDbsQNvpymTXfSKW7If6URkn1ui309o3j0ukXuybggtfoMr5+jpN/
6Ok3zozeujFsja4fMwtirv3L/
82z5GpXObj3m4946gU1zm495uPebj3igBhXOPaODvhsqYvaOaVpNx7xCCqB7a
zce8VQZgDjsHvslRg05xjmGWsEFT13Yi9Bm495uvVjlKW8x+YYWo+gyBrW8VJ
B47IMA121gMhWu3KDwa7azce83HvAWKWcvTBMWwfcIhwe8b5gYmsAVLRGR
pTbAwClLV9CicFM4h0qjSmM3HvNx7zce8LQFFc9+k3HvGVKVPQABwrnNx7yq
wKcWZ9C5mehu5eYVcT1YYWGKbkL0m494Jw8cXas3HvEQLgxCdaX4Tc+rD+I
8dlSCTFeMYmacYUwP6Y7H3mENW3CKwVXxDZivG8EiqZTce8EnPznKChVfENB
V4ztvdlSwqFZX/
AB8xMc00tbvKv4+ZuxU6RLbjS0S+4UtO8fLLHFnZe56dme3pvZgHGIEqsH1Ry
pXrPuhjKrvPc9/
Xt3w+ig01NnzOjZyZXRqfPp5HtPL8M7R8ztnxO0fMp1dL9pSiumNvRM+odUjhK
rAtUcqV6z6IY9SYXPcnbHidseX0798sr9dNFJX/
AB8+jYDru+ZVWKpspk+nae76WOB7ytYVCu2A8QtshmzaPB9LDxfaVBXKYvvg
5ZTtHw+n18PTtiI7ThLwA0m+PsxNI4mSM3sLDSze7F7QHeWktABSU0sYHAgA
YIy0AlZUqGYe5KSvE95TyxgcCUBzMD3fadt7sXqw7pvXVjuVcfL6dw+WXOL7en
ePlgtEObrElFPN19OzPb0TR+2IBnb6bZKp2jINsYuU2U1n1DWUBYJ4Pp2GsJOYdY
kc2nk9PI9p5fhnaPmds+J2j5lWNGVU04wjhHZ47CJRyr7QGLVPQtqq+IyjaTtjxO2
PPp375Zd4vt6+f5Z2T4fTtPd9LHA94jGqpSG3QXgmyavAi0mxhcOGUwVxGr9c
pRFbBpO1fD6fTw9O2PShC3kfErZk7nxCDbVgJtqeZSHJ3fiVl28n4lNb2OLN7z/
e0q6WA+3tKu7+D8yoUsxNOcqJo/
SZpEB2idt7sQWClM9tZ9p8QuuYZHp3D5Zc4vt6d4+WCArVhWxD3PTsj29GC5
Q9sYDvGMx6GxgnhN+
+Ps3llCoKNM903bqRJcD3egKxDWIlp3Y5MjF5fMxLImGOEaCpV3io2C9vmdo+Z
2z4naPmYHBgb2ir16KV5el7D4GHjxBN4xgOobGADUb4g5cWkfJE7nxByRwY4q
mQRVK5xyN3Hr6+f5Z2T4fTtPd9LHA94jGihWL7pDVTFjXbu5TDl3A5/
HpXJTZ9IiBcgIM14fT6eHoDAQJukc35nL6wVdIYLrEQyf5FV1lIN3F5/
Eppli8X4lWdGJDUpMWWcHnbv6WyK/
MYu5Q6+glZwyHazf8Ao6Tf+jpHFjDMTP0Y47uTt4RUCmLfl6NSu7k7XdBYKNW
8ARVp7k3vo6QAFWh7Tf8Ao6QYKwKCps2cIpRfR0jWRtftYK/r6hRNj4Zv/R0m/
wDR0jeQ2uHzLuVu7Y2WFdkRo7yYiXnYlUZwbG+F1Ao5OyVRnBsLnN/6Ok3/
AKOkRxobXS8I2CVwMNmmkRovR0j2RtftZ1Eu2N/
4sSxqNpjBlB9HSAiobM3QgU9N/wCjpAEUcfLDUDY+Gb/
0dIxhRp7voLUcCw745MYZjti0P3CHX1NzpHK2gbG7fLKKCAMcSbqNbSuFBt0jKo
oNMHMd23zN/wCjpLCx0zf+jpN/6Ok3/
o6QIEo0IKMlyg58pTgUwK77yuUrg07RIYZ1Gxyi0KxQPF2OkZ8cuZkcYQxjSpxM
Zv8A0dIBVGmPGKqpwdhuhVUWuU2//Iv/
xAAiEQADAQEAAgMBAQEBAQAAAAAAAREQMSAhQVBRMEBgcJD/
2gAIAQIBAT8Q+pqIxRWV+FZRH39RGKK/GMjK0oj8EE79rURiiivwjKKxBF/
JoNtX6+vqIKK/CMrEEEX+NpMamJz6iojFFbIyisQREX+Kogq/g/
xicE79BUVFKI8QQRf5KiMUUV+SZCR+TVxOCd/3Qi/
z1EYrxjKKxBBBWqDvi1RqYnfsIxRXkZRWIIIv5v8AGJwTvi1RqYq+s9keIIIiL/
I1cTgnfJqYv195URisd8WqNTE75NYv19xXinpBAx7QnfFqjUxO+T/
GJz79qntCd8mpif75NXE599UNpi75v8Yv15NUkE4W/d+iIgSS/
g6xvjyao1BOCd/4d1/BqCc+9qKiCCNKKxJ/F+jj7uIiIiCCCCCCBJL+T9s4/
wCMqKhhezn31KV/hWVlZRRWez2RkZGRkZGJT/
5ttzRPwCdwnRuYbi03ML+QNwVDcFQ3NFWNpeA4YndX1fAJ3C943NE7lniX1jo/
WG4KmOBO4Xsbgq10bgmZ0JXCU0lRKDODjOMbmmoN8a+YqGoN8a6x1hK6b
i01Bvg60xKrSpCUxczoSo4F3G+Mb0PmfGLmP0dQvQzi1uvUjG+BusT5OsrFzH
04x5c40u6XRtIg6sXDgXdLuOtVihwLul060zjeN4zoTg3RdxusaDex8z4xc8B9F3
CDcQunRwNVYvedCnyehTH04xiXoaUzjEqxNMbonsabZRIsTUG6dFQ1OsdY6P
WdwmhqdHQnGVLFzeNXM6EqP1huLK86sXMTUKh+0L0L2P0P2JRDfGWnWPuk
9kZHpp04xpnA+EY+EeP8EZQlNfCMjIxKDTIxKCCexCMjKF6GIyhKDVGmiMWox
cyMXM6OhKez2E9417FwjFwjIyMXBr2J8iCXvHWcD9ojENO/+Rv/
xAAuEAEAAgAEBAYCAgMBAQEAAAABABEQITFRQWGh8CBxgZGxwTDRYPFAU
OFwgLD/2gAIAQEAAT8Q/
i6vf35xih1EP3kyF7v5iGAd2+UCddV+WNUB4ETnFP0EyFlVmrzcUEoUhTtHj2IO
9C5UDjSv5pKg598SjKPJo94BLPwD3VPSCOn/
AIRzU0qlT0NXDrOKPb6eEho0Ife4fkfj8BUQC3ib7Rpt2tA9ic6PM/
4ArFIRXvLRZv8Ap6oZRPTS+7ygkUI6J/
P+bZzOsZKnYH84oK1Lh1EyjnJfAyl8FIke7EFecBBO0O5tir/
lFDP9a6RRhdbF+yGrmxm9T+bpARr9ix/
kkz0seV7QoPuwd2Ev4VLQC2BhVNQ3n2pOem3XX8pNL0GWKV5FF4aNxrIxl20
9a7ySKJreV8YECq0+yYPQSBIGDT+mKa9ryhFQAeuzvJl9mu+yvyboGT3EpzWk
Cs1fd64REa8Qr+4izJmyrWleTWBUDZpOSfy51oIUh0gp6XczQGNHviHUxuBAon
iD0npPh/
aZZsipFbrxsfyaIF2p9p6AdPvSGkLiFYBYpwbNeyu4qjnAg+lITm+zxzTSEVHsfnA
oLGU6PmPoTH1fQoXrkf10OpqNR8JG97c83F3hytRdb+T2rfSqcL0V49LjSl7jSCU
zsH7i3AspvSJLSwXtqBeyxVbX42mzcsPYjb5l+mm98zPPay1bFU61PN7/AJwh/
iZWXWG9wu6HGygwPQ/
ylDbDV6IOQsyr3tU1cVaXo+ARKQ0YszoizL6wYtXbD/
H2AAaq1AFULQKdZkuwv1MAdgkfccHDdqTQK2kvrbbB1fxC3TQsZ5aCiWJr3im
9u7YexEE2G37GbmuUH0I5uW+XikO5X6gYhaAUf6N3XlUnlmZPSZSXLhD5GW
SDgj4CjRm2/SwHWxezNk/jChqwO/
Pc9rgVuNifEtSTQQ+9zJgN09I65tiEst1qBeyxVbXjBY7XejkR8U2/
nJV1O5P2gtod1bABZHd5zOXDcfFSvbpx/cQeWaHxpKD/AFjRrSi16/
EmXWS68p4vA848l0bJxGMhmRyfNP4kxOdX5FiVc+L0sBQ5yn3bi5BNQ+iBCjQ
fq2xVzHhUi3afEd/
ebESN9ECKRNeP7SBryOQpZDgQdWMps1BD7E1xub5TDDJ9K/1AAA4B/
tV+CAAeCMfPGa939I/DErkTgjiLZ1WBojBzmGg/
Xyfwt2RapRG+Qr2qzMk2cD6QSjDgb9kAY2qVhav9qpOaglXXEFajlw1HoS7d0+
mEQHgIQacSP0EXYjb5FFPY3H4kbeir8/AoK4hfiDUXyD/
TqGrDhPEQ9FiFLbfFkqShsV94FfK6P1G7zpPCLyfuSAJ2slcbY/
YSpFnCD2OcAbQn5iGAsSuXu840cq+SPEcTKotiZIwtuOPc7fnAIqx/
gnMdfzLBmiaqXSX3ACgfe5UucBT0hpGEXzYz8izra/
wnNyaiCrtgVLb5yx7EZvYyHWoN23cYD7rOfSDXLQlfVmoDIA9ammfkP9TQibqo
EnjW19rm2FX6mE0/F5cipvTSX2VeEzLDNmHtHbbufgCkVNMbeoE4ydN0NI7/
AMkOXJ94BFWP5E5gqLP+zlHvFt9dDwZjVM65bvIOiAAOiJ/
vUFUAREajW3tcT4GxHvQjjgu/
WLKVtNevTc5Wx+1cUCfzvRF+258rKizr+9jY1GoAfaDRR/
RscsLrviclGfCH+s5vKVEouull7XGUY4frYIgDiZ0uCl3BDkYVEf8AEJfVOxt/
w9Sk9lPLjFLlI1n7bBHT8Y/8wOW+ODHan6WTts8Bks0arfdOUvKAaw/
3SSnePPkImRVTP5+ZaUbr0MVGLN2+aYfMdGydJ0FY+P8AXqGrAL7S82Ohpa/
SIIETQJ1uWgo4qzIdsw377Y82Kv5HqR2dleh8Efckqq8+I0VXHO/
E7w+o9TDTUQZQ5E7eGM4iNC3iqCwrR86cUkXJduB+OiIArEm+CQfQ+ABZw7
H4YyYDAeYDg/yhcG6hHWF7vdKXjYQ0aT6qUJ/HumKwrND+bRj0hA9iO23c/
EBWoo+8DQh0Bp60pFiq3N+MAlntrCgnj+3wEtOc+RLBd0BfW4IGnD4E8aDqQ
3jZI6Qw9Z6f2MXT3b62omng4+UDQ7HEmsvy/
YT8a3dWIHUSPZ0c6527l8CMXQ8ozA1QQX5BP5FzHGT1ZchrUFRam5mHW5b
ULiJH0ebM3Ky2vyv4AVoTkI1noQA9g+CMgG2SGd9VBAOcdxawSbePxRXQkX+
qN2hv8ESnbCCv8HWafZgM8mkbY8ch97wAZMqxaIkLyNsy/
XyfjQRHSUP5+XnwHlHPKlcicEx0p6HzAcRizKVc0+X+OFQRqF6sdRxpNRFqq3Q
dblkLNFGDqLti+MfJer118Nfmul7ABHSlcZ3kV3WBOcU+JFr5+TrUuO2PWAZvQ3
0gVs0KLqsBG+iI9idGw/yzZCpHMSc/M0+W/
wAols6pExFYpBsY8gXEPgecNqIWJ+MYxL4PpPOPLJXFGN/
FhUkZkLZD+LK3VElBC0Kf+QvAHgyp95uXRxIfZaRE7Ppl62HVeYeKDkfMszXY2
wq0/N+LNeXliPHeR9x27hsMqKW/6CUAHl+UzkGo/wBQMAnAz/
TKgvHpW78ka/
rZ7cPgXyg515+8hZ1YgdEfxtgqhZvthvnMHALxMQJMqRaIkODgXl+vk/
iZhwG6I8gHzMpRa+yUUWPOL/
qO2nzsctTts45aW78ohQRoqV0h9eWH+xL9niy3xwYoUzQnbZ4Do5o1q+4coC
Vt8A/
jP2EozmFLWtcaDoqDYkGo8mTX8TzgAKsf504UBqsDvltj5ibajs6ldFvQhhC0sfST
ShMVPU/HXGIViQGska/nTn4CiZy9HxsGp+4Hijgn4wR/
pqXBOCRdk0HwA0GhnnI3c8GKa1AdEf5ojJdQg9WaywX9AypLaUE9YpzeCjpRG
gLf9c2x/LCVfAkHNC/mrJlRFsmfn+8MiFYmYn4mV+sQOok1aDnnP38ngKJSaN/
UBsyTudDf8ahDHgvBGZn46z9/
gttXJ1526Dgovgfy9eaFr86wY23n3UlzukX7Q4FNlUUZumr8q4DKDA+h6HxBBn
miPvSZG3cnyYYLk6Q3OJ++XeYK/
uUHvodbSaudVrzNzBoQrPv2SXdFkLiP4tZqQY+XPgcTipKaiONJtMn9KQOEII9Zy
/GpEpSOYkoM+z4v26RyKqkckTEy93d/4GDYDIOa4o4J/
LCDNM6e+YTWwIkexucZFrl1ksYqxz79SZ04cv4EUsbzEU59w/
KABT99UFog8dLSbC76gxvlMD/
gODB7okelDBFvgPxitsQ+s5yh2T5JuOLco1NDxDiMKlzVZvt/
ICsh0fmbc0fyKvIYkLZNOz4gn7+4UN/54nI1kDZiuYjU/
swgV7tFUWfSa4eInBPxpCJa9bO5yi3lrntwY34CNSMVzZyB+TbDlzycpxIrl9HQ8
E4ji1gqPQQg44WrX2c/
54CAsdSVPJeVczY8onXFSUaiMBMvLcg32QLUcy64oOCfjcmLRy3xwYmVXZV9OI
WzqsDRGFUQAy/Xy/
kWmC1fMERWa48MjuwaJxDiMLredIdf+eiILkJXznnE0PSGjdcSLBbuByX+QYqS2
BABU8R9jEmJ4nRE4kZyhZefB/IH9mjquAeCQmsrf/
EcQWgriEoAKDSvjz8v5uqDGqPymS7aM9i44EexVB225g6rGqq3f9Ue7sRXrgRI
MQgs8ENUfynCMiFiRM6Zu1fSORVUjkiYs7vJoTbnQBFCOj+N6hrIGyTOBvWfvxh
0xUlGiJNFG5dydn828oENe87Q7zEbJd/sLHrN2o/
UuHzaKi57t6y69wQYBN21nvji/nM5c15u3NEygrymNq286+D/
ACKRKUjmJOYFxH4HlHJotI5I4CsVYmoUy4h93OACrHR/
8LyOrA8z5YXXmtXfPEwaYRkSBsSWVE9PDK6j8om0cB5u3NEegrimLiVrM+Tu54
GZC1gdEf8AwuyEkags9GqiIph8bhEfmRhRsw+0iSQ0eoOJiFknFXTzP/
C3dnrhkDzYq14sEw0lvIHw/nH6kU/mFENgLlU+HcwFEVRLHUjutflP/
AkagQCx9xJbg7F+4d15+GHKcb/
gJnw+c+oY5ruZsT7LsXzMwL2oh33YEyFPus0WIu7xfVv/
AAC1DujJ6c4lCTYprROThW/Fj5P+bKGrFwY1fnGc8IK/
DB1E7Go1Becl0V+lyKIZuL6htc9+NhVQgrjvf1SyvsdkRe/
RSO35nflhtee7+BzyhfKvAJXbWHtbfm/whSHqDZdKwedXoqt/
NSZWvYvclpmfCcP2vfctPWT9ReNbg/
U+UVy+slkKV5zf3A2YrLdOcFZznNwA23mE1i/
Ily2tRh4zRiR4GRmkfKRAclDCvH6P2SBsJo59F/hnAc3+Sj6w/wCJJt/
46oFsIhWc0dR9cFpxzyVf/HSEsZAfUO/G+AxjrRl9n/
xNL3Aw32Ifcsso1v8AfA7G5/
ujVWeVp27BtFMevH1NSORfyOD1WBQQiIhz4Yq1VnVwTMC0YNDAhGoMgP8Aw
FOm+SQqyeytnOmL/
bMoS9jKd8M7Q5RzyZrF8h8wknrR+4LXeT+pT1XIPqZLIDqnSd/
j5rKItMgr5JxlmG57H1db9xe3d1Y9bcz8QTmbqE7T94lBLxf50YC/
DoAUsh5wYSrk9cbAGEwJR5JNgk5D8ItbNwj0bzGYze9GA9qOa8AAAD3cPnh6Ku
3yi7h+5359zvT7n9Kn9Kn9Kn9Kn9Kn9Kn9Kn9Kj1HQTuz7nZP3HapOf78PTfev
niAA3P8AV6HG6ixBeWiClLQKA/8AzVjLGJOYrNZ3D9ztn7nbP3O2fuds/
cR17nnB7igAudM2dw/c7Z+52z9zun7nbP3O4fudw/
ctbtU1GmkjPbBijUc53D9yxpTKbssaAGCnYFncP3EltXbxgwjWjRGVehRK2LnbP3
Ete55w4RrDRHwJNRgw9LuU4Hmw+I9KNX4V/C5uTNA1VnbP3O2fud4/
cGUI9vGPAjV+FfGgrwGjtrO2fuNDq8YtLqM7AhQBqs7h+53D9yutnp2Go0FClA
M1YaTuec7Z+52z9ztn7nbP3Brvokeg+J1AtRA9Lnu8mviXw+rpH2HwU/
NVbYLOwfudw/cLEUQbExY8lebgLO4fuFHNCsjVoYuvyVBqlzuH7nbP3O6fud0/
c7x+52z9xEtI7eMaiNryK3m2qCljHbxncP3Ku2aFss8GnCTfMLO4fuds/
c7Z+52z9zKXDgz7D4i2bRgc1nbP3C+lRFNAz8GWOAQbrOwfudw/
ctKNU0MskmTAwYbrO2fudo/ca4aCojTmY0qLzFCyxZ3D9wT1ktToGcAqqCdw/
c7h+48CUGauZKQA1tjdZ3D9wSxHbxh6iiGiMbYclQ1HOds/
cSRdPjyDGyBQgbJc7h+5aXapqbJhb1OoZetXO0fudw/
cFRSiB4iYmSQUyHks7Z+53z9+ND1J+JHbtG7w877nxdv2SmZgdPzhoe2mFGZ
yZ3YCJsirQPfY1eurY4Pre2S9SKXfKJhBlesHjVP238JM7bHofMizS1ygiB4ayewHD
wavlO1bsOk/
HZONDovsrJGdZwLb8uIotHPbI4sXruAlNUq6ti4MzW2Q8kmjAeSO9kBbPJ2cOmY
RogoTh8XHvOT8T+DRO9bsagn4WxLYexiPUjlWMw+sgH5M2Joj4BFqB93r8YPw
KHUDYyregfoj3HHsW5+IqQIoRMpec3B6Qi7JmRAxB+1aHuMzqEwNdzIjyv8AkC
p299fnBjEnImVhhzmZD3qMVZXiVtwoXfnb7YNbGxuhke8bfukpbgd1lPfI6qwN6
guatHVIiNYKF7TmzDr84FrSLgFssd9gF6BgQrQ4DwMhLvfhH94n94nOGcUDMP7
xP7zEWgQwdouxH95n95gIUeLLvO7DoOKg3N88Xb9kpnYfT853jZM7rtGraDms
a6uj8riIlqMUfhnofQcoBEtFj4u578R19aJVPSDFUYgesZUMwIufGXMcsdadq3YdJ
+C8REH4m0pg+k7V+o93jq9nBBmXCSbGCZxvzBfmXpdXi1oHNjjLXNOCGNC7
1ihMbgVoCA+EFmI5iYoGidu249lyYvsqhf3Gf2HG1yvmT+8ShOqR2nZbGgZ42b
E2dukOvGhn9d3s1r4EAste/PFwExegnvWPetzHq/
GpAgLbzl58ORsUmGjSR6p1iWqsnJ+28Mufzsjm6nsKDMGj9vFINRJ1rvlgCz7d6l
PTLB/
uNl645Hi+6oIBMGsEPDYf3oMflA3NP5A1M5YPXAPmq6EIBT79e2ngQqKK7JL+rf
qf1b9T+vfqcnogSf1Sf1iEpLLPJgHm6Nk/rE/
rEDB2hRMncZ8Oi4h735Yu17ZTMw+n5zve2AnqicdC4PxPzBZoCGb4IXsOhAgx
S8J5VKjPxYeZ4adUGf2+PF3Pfir6mUsxmLSYT2jVnZaIcEHc0GkcLJ/
l5KHHWnYN+HS/
guHHCmiG3Km0BjvkBWptiVVGdmsti0D7HBwYmfKuQEGjYg5RYHSKWhPKoXIj5
pS35Y5E2LdZb9sTDR4NXZcmL3RSNE2f1iZhotwTsO+F46a4eDP6JFtX9H6hsND
GqBnjZsiKovJugDJR4J7Q9DO9TAhyHzwcWccHNmKtVY2s2zqotOJUf4+bWAAqx
w71uY9X4EQ7Nu8Gcb8nTY9MAetxFnI+QjP7AjudhpIgfq9LJXztIFXRAVCNKY8z9
5AowDCp8+k/VgBphQFlH354PJFJSMPqGZX6wDMu16oM/
SyiLQWNSDUMI8mcu/
UqWwaQd94LSwjhH8NDZAo0MQwwo6gCgjw8vFMNp4Dsm/
DPZMSdjjlyc+NQ3F2vbKZmHNEVdjllzizz/
iMBKmbjAt2h0BSdZqO+9BhQ87aPTxe87/
F3EQPnhbhxlPyXMdadt3YdL+C8RIDVaWqrAn9z/
ccA0mmb0YNzB5eDZAAKIyOb8kDgegiO/
wC5xNEorREpJ0ydirB2WW9UcTDR4NXZcnhP0DOw74d93eL9Qq8bNhBHKo28
4QYLTJ6y/
wCXSjrnD0L5QOLJ3UOyywlfLX2mkdlBhzvwOH1RMr9Yd63Mer8CId+3eDVzb2v
098LWIbZLJpY2NqWnvH01287o45O7lw1kTsavKz6jdWc5q8OndfR64ZOCu3OP
SKtVY2sOlTOxOb0IIoUPccMvq5Oxli2aJ2cC0HcU4HTgaQTqSmgJQo0vzC/
Ah7ju8HdtniA75v8AwO17ZTMw+si7Hhg6o1PNwvOcD5eA1lJe1MPmQwoQdrY
VBukOPgllPCZpRWug2ned/il/Noi4MrbH1fKMRofk4dL+S8cIBhICnk/
T0h5AiixNyN/9t4aTM+nwelT70AfFSoAujcTuuTAq22J0DOw74d93eKxQM/
GzZUllOe31uWAHm3eAFsXpVuQ5H2wqo8lOjoQnFcy8j4rAqC+FL2vDsW5j1fgV
Ls27wGVNjsKhj1zlpofXBLaA9pvH/EE7ubEACTP7uhMgpTy/
oMKXbTmqhA1zloq8FpZw8+Qwzpgb0XSWwvcLn1OGoluxoHqQSQqcQswobzX
x/YMoZ6tEdRMc0RB2Np4iG2WjDbbznb/3O8PuEKVarjTX8RBLvm/
DP1dyyUV7TpFP3v1EQtRQ2OLte2UzsPp+c7/
tjIAxuJmcFldttl36MNKIWJgsJZW42XqNS9qR3Vtwpshd+Gg62HYd/
hlrucigC1gItZGoGT7GGvKz5FMSzsw2Auc7Z7uDDdPZDwfHRvAcDLHKsXJ2/
wDcV/
wRaaAVuEjbRNkwV4SriF9NzK+8tisB8hpFMA8UDMRwHa0XxQyPVjsepwthSN8
4mdBntOHF2xVDu6Rk/GCzkOoAtZrI+gWGHAex53/
WPQM7Lvh3Hd4rFQz8TNrwjcAOjbMDEgagGgYUvo9N1+3ziTWCbBW8QRKGcx
SZrhqhLHtPUhCQU4hYzsW5j1fgRDs27w0enxX98HFhzLy53gAW6WxtuuERoCJ6
dbUmki8Ax1A2MQzB9GYHtgN009jgnbRfoAtYvyrJwcj7YK8zC8hQZJHMdtgVvzx
o38wNT9rxNIsH0eBK0o7q0Q+VV3Ne54kKkhBUNfPnMu7979zn+9+5l3fvfuOW
9c4bn4bAHfN+HTcRMzf8sXa9srmYbT852TZGsWx1Jq+j84k30cvYI6IHZmii+tz
OodfW7vFwGj6xLNASkKofnFByUaWqVxn9x+s/
uP1n9x+szgWsGWaqrzned+J2AjJUDflEjw3R1rDgI3mHGXEKJdR+2vpE6U3WiZ
aTfvd10w/qZUuUttcQJoA8gHx+DxwQD2LCrPUmT2HtLjNrLXimNrbVd1wN/
kPZis74NV04geGsgds9YSlhlkL1mRhq2VuYOwMPZVyAnGnL7x6QPiprwRk+jUW
04/BKcBwECiCcTYQZCZ5o9bilVzuSfGJI9THhldN49AzsO+Hcd3izUy/
GzY8nlSublCRZcj9PA8wnIkGxIcQIDgDodcK23qL6KxtLYlbrF7n7XO6bnj6kHOra1
apcyL6n9z+y/uf2f9xUUI1LVlKeetz1LIiNYgzPR88j26x6cv3AyOinwVn/
ADFD0KwMd9A3V7fONpbGss9+TN49+2Ydo2zR8vxYe07fhsZd134dFxUGd/
yxds2Ym6fnOybI0FglgckYvQrRanj5eEyCloMyxNNgLMvjnc9/
jNyKpKOBALiAUAaBMmz63b4jwJ0K2A4rkTT+q7gzfVv8hDggbFS0EK3BaoBXpn
zDZBUjmJGvo2JXwwVAWR4VfXNo/
DGhstym3nv4hsLdMp1GF5flQBQGPRM7Dvh3nd4v1Azxs26PC0SQGvCOY5y5v
C2PAckwdplc1088G3elyCxXnLC7zmrwOSFRS3/jO/vqd9fWLIZ7PNNeXOeq/
Jj134FI7LuYfY8r9MVRqOeaH2+Ywhkjiuh629sVpc8pnwJBQFGAiAXueAw+xN9JC
KQAOEek78+oRBZ0ZOfWOHJoCqWRvRyvwUzPRvDv2zDtWyaPliD5DWIT68YPc
5zmtdUIDMxS/wD1qoDBQUamuqPBRYcCmSOCgjZpazOKvJasWk/
oSE9yrUAgJryfxyOCr4yPkarggswRZoAB4I6wVttFY82sAmWwWBbqaPxYX7mZe
B4udP8AA+0xtUQPADnFAA9kfXuqbPS8ziSlpcpPEWgKAihs4oWKsmsMR89Tkxs
s6pvjFxxUfZnAnHA83IdDBYBo6owJ/Qk/
oScb492mKkEHVGB7vh57nBwA9EQEuqbPS8zPCVq9PFNQB7A6iQT+aRscjWBT
rYL7YZlid9n6NsSTXUK9PwIJTBZZy9bnwekdpHQ69o1ioghOmPwjE9JE1+WZUA
xA8FsjZiTAsDggG2uQxKgPnVAD3cecradBbTvp4Fkg6iiPxOxMOagw6szLCxrSsH
9xjzhfa2tzh5485US3ERM/
rFBhzrla04OSxFUySyAE8j1Z+WPPVfx6iyHzNZwELurp4we5znFntWzBcsHE81T
UdcOZfMTUDbDVEA0AhNAkR4jFamjqc4MOJBsrLDNffDX6PSBkPOM3/
OIrw4LWbIWvMemPmbuD/IY846BPniPRwLiy6U1MOaDX3AjS/wDuP//Z"
alt="EDR Logo"/>
</div>
<div class="login-brand-text">
<div class="login-brand-name">Ethio-Djibouti
Railway<br><span>Share Company</span></div>
</div>
</div>
</div>
<div class="login-brand-stripe"></div>
<div class="login-form-body">
<div class="role-cards">
<div class="rc-icon">👑</div>
</div>
<div class="rc-icon"></div>
<div class="rc-name">Admin</div>
</div>
<div class="rc-icon"></div>
<div class="rc-name">Guest</div>
</div>
<div class="pw-input-wrap">
</div>
</div>
<!--
═══════════════════════════════════════════════════════
════════
ROLE STATUS BAR — shown after login, colour-coded by role
═══════════════════════════════════════════════════════
════════ -->
<span style="color:#555">·</span>
<!-- Access level description (updated dynamically) -->
<span style="flex:1"></span>
style="background:#e74c3c;color:#fff;border:none;border-radius:3px;
padding:3px 10px;cursor:pointer;font-size:10px;font-
weight:700;display:none">
</button>
<button onclick="doLogout()"
style="background:#555;color:#fff;border:none;border-radius:3px;
padding:3px 10px;cursor:pointer;font-size:10px;font-weight:700">
⏻ Logout
</button>
</div>
<div class="hdr-logo">
<img
src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAQDA
wQDAwQEAwQFBAQFBgoHBgYGBg0JCggKDw0QEA8NDw4RExgUERIXEg4PFR
wVFxkZGxsbEBQdHx0aHxgaGxr/
2wBDAQQFBQYFBgwHBwwaEQ8RGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaG
hoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhr/
wgARCAImBQADASIAAhEBAxEB/
8QAHAABAAICAwEAAAAAAAAAAAAAAAcIBQYBAwQC/
8QAGgEBAAIDAQAAAAAAAAAAAAAAAAECAwQFBv/
aAAwDAQACEAMQAAABn8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAB841XKNRwkYZJQ1hWCf/NW/
GRgsXhINMEr4XQkYdn8GHMP38CjjkevKYAtuecjAyzls9Zk7Nrea17lO5MTWdlnd
5C4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB5MIx7Mj3Bxgl5A2EYLHYiuXXGCdcJEpg3/
AAmtow+ryjCAAPo+WTzC+qJFzDPESdsnOWuyyfevWVZvoK1rE4xSCUua/
GHQ2WxLXBDO4ImZpAqz756Fn0ZSPPV7hOYAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAfJ9MZg4xbejTBME0cV7wcYLI4SvhgmbB
Rsa+3YPGowc8CgA9J5mfy7LpKTstOaG0+5hmrblbI9rNAGZmZOaMcxuxmwO
W9CcwLgAAAAAcYfMlYz0Sw6NOqKyMaxzo4d3TGkzGHJnzcqoyFPVmx5vTbqgk
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHLw4Jj2tG2CjXm
b5r7gmCx+BgFGvMWCjpGDaMH4zACh6cstgG6ZhljNMWXnNA3Nj8szVqy9heZ
zQhl5YM0f5jaDNjch9JygsAAAAAAAAAAAAAAABjYqmdGvVT4sbC0cbWxGpnJ2r
b6527RtP3C3dBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPnEq5hp
GvxryugvX2CxmDrx8RrzZgIyNfb8F5cpGHBtwyy0cpcys5YOWFzDNWnJWS+2
WActNCc0WZffDLrOWyCc3z9DIAAAAAAAAAAAAAAODl4cKx7Qj/HRhlFE/
YrKiNMsvurE5Wc/
IWAAAAdfYRE0WWs0uvLgV6vLHI+5ohTlmtaimVbeg5E5gAAAAAAAAAAAAAA
AAAAAAAAAAAAAABwcsXgGLc0X4yMEx+WGOtjk7X8BlWPE4CSMpFIF6LKZFF
aclYpOWC8pMBljPKbwZdcynvTl+foZAAAAAAAAAAAAAAAAB8n0xWDYtxRhgo
15s+a84OMFkMHAJgmLBR0jBtWFx5gBQAABlcUTJG/
V5Tt2t5rrK89Pc3HM7oAAAGAgWzOMjRrI2HXq8NIsdFrVdkBznbv+kTsgAAAAA
AAAAAAAAAAAAAAAAAAAAAMfkCMD49qRi1jJ5Qt1dpNwSAAAAAAAAAAAAA
AAAAAAdeFUzzQcBGvLvEB4Fgsbga+o15jwMdGvs+D8iNcFQB6TzM9mGXSU
mZdlhxPeWnNXDI2U72avmQnNOaE+mcia+4SzvDHVJZfTY1YabLrUaQK7lNFZf
bO7aFp2427YMgAAHlgyfeuNaqqRo5rwGya2Vs9kK0z5bu5oTugAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRr7Hs6NdcjXm3z13wka1hd
dhk1pE1/W0a/
f0duQYsU2fKsuhpPyc5YdTvlGWunosv7WWt+Un5OWF8vKJm0PLbMZfB7fpOUF
gAAAAAAGrbSUr3qtrI6ryYYd/
RHM+5mhYzWuRNK9vQfQnMAABxF0pIw1S4nOEq8Dp93hMFh9nqzOVu3ugno
gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyo9XxgMZGHMaz7
vewx7rk5+9hrN6rLfSteMhO5khfIyuZI6yG6mXXMlkU5OvsGQAAAAAAAAAAAA
AAAAADXIHs3jI0ayNh16vDSHHha1XZAs5W7/oE7IAADV9oKVg8FlYErwcL9/
CNSapEqjLE9eVnHNuqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAOtHY1/
XYwyEhvANewOOrj4o17A+aBzDYrYKq5Jls4jiRbdP6DKAAB5oNnvrjWqqkmNq8
BtGrlbQ+2t0+272UE7gAADw+4iveq2ohavE0ARz5HmOqu8T0p2dHfbsgkAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY9GQ8e
o4WNXP6v7fY1o/
12bvbGGviyOSTWXI2S+mWv+VmtOWKu2UDJCmi2lxka9ZN+xWrRzLU9sBTrb
u+gTsgAAIzkxGKqfzPUHV4HmymLMFkM9V6ebdzaBO+AAA+foRPFVrY/
ryoRdvVHI2meKvZ2d6yLFZW3cBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADphab+I16pbRusSV4doPZXKfbdnIC
dsAABr2wlay4uzkEV4Wtd/
QjSnrdKqTVbsyCJ6YAAAGpwVaHCRoVsZnDV4eTnyuHrnZtG1Ta7d8FwAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpxi
mZafioxSLpet45r6LtWCzFeXPwv6QAAAB5/
QRBei2siivHirlxHMmCTqoynPVltxzbrgAAAeGCLC9MatV2/wCgV4HbN8F/
TJaxG0k39ADKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAABjsZshj03wyAjHG3RKBSK5AyhkCc4AAAAAGgQtajWI5teGRx1
eNKktVTsnbsZkT0wAAAPmKpXRhqim+Fa8DqlWKitreYXmW3oPsTnAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAA1+uNmKz14qbYSnJi3wW74AAAADVtpKVf8NloErwcJJEbowWualtt/
SguAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAcdCPQxOOY9naT4YxyIivwqTEhDxsc9q7eFSy3xWDoilnfLWgpYvxwAUnT
wQ0U2LXXManfZjSZEt2QnogAAAAAMZkytXPJIceU8zvc51tslbrhPRAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdfYRgsftq
MWj9G/
lY588nFYu6ZXIiLiXiIb65oKwl1ziRBvVO4gX5nwiAOuwZEISJtZnCdoAAAAAAAcE
RRfs+sU81m7JwRO9umE9IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfB9ujoV9zE+ZXPtY8sV3Fp
HhUkWNtQ0mNAbfHNkbefn6v6YGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAeZHpYXxxj2ZpWOY5GRb4lJf+IW8bH
NvlhfqUmPyxMUk/yxv8xTf/
AC6T8qbj5NZK57y4cpkPN0Ir8+X2FMZ582VwHGw/
ZrbZOTWm0cmrNsJ1Nvu8TmjidfR9z1wnaAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AA6cfjK9Rz7MKzo1bMKzizHtq3N07G0qzo17McVoFmFZxZj31Yn+dnN/
NfMVGC0HuheaJ6DzemN1ty4rQjl2s831Hk9PduK0I5lrPrzem3ZMRC0a0346unE
c+0frqrIM55pef0T0gSA6+zDqfSs6vIsvzWcWm9FVdynNPDEZeekCzFZSrcadj/
VV2VWvK2M9FX2azHsq3NDHIeL76wslmFZ0admFZxZ/
31SlediVhPSMVDEas2Y2unEc+0Ptqpvs55ueX1T0vN4tPheOdZjKVTtIyeoTvY3r
gnXa8iz31C2UnNJqs6Nay6tAsvzWcWYyNVrJzt9qs6NS0nqjuRLdQGbpx+Hr/
HOswrOjWsx6qu/SbWIYmOel2Cc7q7Y3Ydy+qy/
deZatjclbrurt11HsVnV5Fp+dY9Fun71Z1eZafv07cbdZjsjEEY5J5rN9RzbV4rsgK
d2effViY2GRcfqELJsvla22EZev5rT8xp2bycMTPPRYzurGxWT99WJeYZQ8Xt1Od/
LKzq8m1XZHkh26rH+ms8YLE81m3SNWUa9WFr0wvr5sLGvXxadO7Vma97+p
z1WWoRgqq2XWo5j63OdZ3Krz7tf1O/
WjFZXFV4kjTRDEz27iN5IjdkhkV87aWPJDjy3oIdFfP2m8/
fE9vR6LjH3XzvxzO+3T0KspRi6NPdJ5qlP09DcBbrgMNmcNGOtQr5flNm8z0asp
khuNTJ2MrBKc7Uti3c4q5aOrleV5ZViqVY0pLq/Z+sE7KaIXmiMG7Vhs/
WCc7t6psjThzptVoM7cIffwjm2h580d29HoOIc187xzOW5z0KspYieNPbZ+qpOs
7/
hhiZ4YjXWkq3aOdj1i3Yrnruxa7Ty+75TFzpPSqutPwiqzs645XPMsSfPQqxZDL+
Kd2sYrwpqkSO5Et6MJ2dRr/
YCv9eE+vmxMYK8fNp6+zk1qXIj2KMVjBf0qu02VuryT2+KOVL8n1wsdbuc67s
WutquYr5iwPo8/
ot6Cuwr5+fdx03crelYLOpy1RbTq1PLzP4tUmW3VrXuWm91eXuOkejzplXK7NEl
uppRsVeTNOx8c39PG0NbLrVPPM9jfGw2t51zY7+nr/
qNha9V4OyWJqlYhtYOE9j1yNLmxsVzpO/
q1erC16YGya2jR23nUS8477FspW7oTtV31nZtZp5fdp4geeLdgJ6FZsVlsTTyvry
GEGb8fgAK2ljyQ48t6CHRXz9pa52MrRPW8O56ZIsaE0i/
peqsFpK1V5WGkqNd6jQnRo0bW69glfDHYPDattLYrUK+cnDftB363o1d7EQS19
H2bWc5Xj2SF/U8VctHVyvK8sqxVKsaUl1fs/
WCdlNELzRGDd6wWfrBOdsmto52969hS7cNPlJeW66WJrVbo4na9U3+vMm8X9
N8Vks9XCOXgJBj7dK87c4YmeGGVaOrloJ2PcLdiueu7FrtPL7vO8EztbsuOeJ36rdf
Z108nLkpRbKVvQsdkcdOxWIU8tNUiR3IlvRhOzqNf7AV/
rwlgq+owWegPXU3bHrkuxjlE+L+kiWLsnjKeak3Rpp0OduPrF10kpjmTXdi123ar
mKeYsD6PP6LegrsK+fnzctN3K3pQnPHsJ2mrHXidNnquzgRlrm4afGmz+A21E8
Vhm6Cp3kyxDZtX2YLOxFPTi73+Dfa8DKRdYGv07MlzHWCzU73bAU+60zV22L
XuK8B9fO/rSlnS/
ptWr1YWvVeKmSG5bYtl48ienseX0XcGf1Cc9eNY2bWaeX3aeIHni3YCehWfE5b
E08ruEjafNFuvo+nTTG68MivDtLHkhx5b0EOivn7SwDP2hW7sL7DryvEtbzCe32
7+11m2PWY5SVIusetqEOWO1hnhhM5reDffJ656lahXz84b9Dmx27u9VrzOpRo
Nv1Ca2KQ2heqe3t1WZVieOWlqJZvY9wrBZ+sDOmeGJnjBvFYLPVhnOk6MZOa
u5eH2Y6epCfHPFeFOMebNnJ6sH5zBo5dq/
uD9zt39wrJsmqxy0lxrYpOKgmz9ZWTqsLXrYIwWO6tG0q3W1DxlfPyNNGib3b0
Ljniduq3X2ddPJy5KUWylb0LHZHHTsViFPLTVIkdyJb0YTs6jX+wFf68IWCjBX1v2g
sWxWJqtYielsmnbjBk7miCvnt/w2smZ7/
AYbU4LE5W3o66CvnLA+jz+i3oK7Cvn583KJdgt3t6aNwzb1DEqY9Sum26krwO
zj43lOlcb1oSdw08RIE3artVu/
wBdaJqgKNBs2so52/6ALJ3gjd5zTuLeigXS5PjCnm/
qyddLRzu8i3X1avVi4VrxdebEjR11sQ12yUHzrPQy4t2K76zIOv083lZ4h6YbdYJ3
qz4ncsdTzOzTPFcqW7KN5I0RkgxsPNeBYOPJE0m3dg/nYOa8Kwfd199/
TQNpVqo3ryIdbJ4Y5+JbjJc58JJpPdCcoDDZnFsdZWw8083rrYuTXG8bzObSJx5+J
7NbcRuus14PgZHPq61ZXEbLbt+Gr9oq/
Rra9M8cymw7VWG0MAM2utiRztdbENdbxIM5/
rcfpbuwbodq47ry4YbNj452JbfJU59flUnuIqlXgqkm+Oq8LVWW9bDr21bZKM7/
AN9hbsvn6+U1X69l+KeX3uUY9kK3eY7I+Gc9X2xKeakiRNI3e3fCdnUa/
wBiIYrxdesZCs4p9dbrQx9OzCWyfKvJn6ssjarO1rso6hNKM29C3brXhZc0SnnsrK
sNTJO7XVsSObL/
AKHdbu1wbDzXha62Ia62ISru+pbbb0Nc9dm2NI4muz5GM+tvVq+2sgU03Od0
jtSROXTb0MJaJtHTTznishGMr26fnjCV8E2K3dmeV4E/
e7R94t6OIIwmHQI4mHtHXuwk7vInpgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAf/
EADIQAAAGAQIEBgICAgMAAwAAAAACAwQFBgEQFREUNDUSExYgMDMxYFBw
QEEhIjIkgLD/2gAIAQEAAQUC/
VzrpJhWbj0QrbGJArcgpbXxgewyJwaWfHBzmUNqi6WbAk1IECdokSBK5KYCFsYq
BvJNHX9E5zjAUkWiIUsscmFbi3wFLivkK2aRUCsm8WGTZN/
gtpZ61DW4KlDSeYvP6AOoRMKzLBEK2tgmFLkUK256YKz8isFHKyv+WzmHjEM
LaiqElk1yfuyjlFEKz8ckFLczIFbkcK2mQUCsu+WBjmPn5MFyYJxztYJ1uRUCdPdG
CdNTCdUjyAkBHEG0MRtzQbe0G0Mcg8DHHClVjzhSmkC9TephxGO2vvavV2R4
62JqBNQipP25R82RCtjjkgrcGxQrcV8hWyyKgVkHa4znOfkKQx8pxL5UErMicJU5z
kJ01LATq0eQJwzBIERTTx87mLZuw6p6Jg7gHzT3MZNzHHi7C3kP2fOcYCsg1QCt
ljkgrcUMBW4OTBWxSKoUeOFvkI3WUCcJIKhOqyBwnTVQnTm+AnWY5MJxTJIFT
KTH+S8iGb4PqkskFUjon9kRZlGoQXTcp/
r3HgFX7VEK2WOSCtxQwFbe6MFbDIqhR0ut8WMZyE2DpXKddkVAnUXpgnTAn
UWRQnXo5MJMGqIxjh/
Bu2Ld8SSqiqIMXJDax0qvGKRsohJpfrCrxuiFrHHIha4NyhW4ODBWxSKoVeOF/
hI3WUBISQUCdWkDhOmrZCdNQwE6tHkCcMwSBEU0/
wCNkYZtJFk4VxGZ1buVWisPOpSRf1E6yaQWno9EK25mQLXFXIVs0iqFZB0t7yo
qHCcS+VCdYkThOnushOmlCdTYFCcBHJgjJskOHD+VOXByzFX4DOMlzoQ5kzQd
hw8/
S85xgKyjNAK2mPTC1yC1rfqBaXfLgxjG9hEFVcpwz9UErEicJ091kJ00gTqbEoJXo
4gTYtUhjGMfxCjtBEKWGOSB7cyKM3JMZuYxcyglxb5Cdpj1AjJNHHzzEAlI4cN1G
qun4EFY+P6Ko4SSC1gj0QrcGxQtcHJgrYZFYKuVl84IYwTj3auCQEicEqb8wJTVQ
nTkMBOqx5ASCj0wRk2THDGP4nOcYCsi0QCtmjkgpcUMBW4OTBSxyKoVfOV/
ibyTtqGtvXIGc+ye/LJxSMmk/j1o5bWDsWWoIcpy/wA6tINUAtZ49IKW/
wAQNOTLkZbT7sFq8kqCU5xnBKamCVJiUErsaQEi2SWSpkJ/
GZzwCsi0QCtmjkwrcUsBW3uzBWwSKwUcrLf4bGceMBHWNq9+R6xRfoysQtFq
6ws8pHGRWTcJ/wAyphznJmbpUGgkVQSvxxASOaJjBCl/
kFXjdAK2OOSC1xblCtwdGCthkVQo6XW+XBcmCcc7WCdbkVBipv8AI9IPBmpPs
BStyKYWYOkPfF2JwwDJ+hIJfEugm5SmYJSNNrEzC0WozeJPkf2cxykwtMsUArbW
RAtcjhWzyKgVkXa/
yEbLKBOFfqhOqyBwSmrBOnIYCdXjiBOHYJAiSafwOIxm6DqoIHD2Besva1dqs1Y
eeSki/
EYuDlnK5lt7I6SWjVo6TRkkf2FRZNILT8eiFrg2KFre6MFp6QWB1lFfhTbqq5Thn6oJ
WJEwTp7rITpqYJU2BQnARyYTZN0hjHD/
AAn8C0fiSgXUd7CHMmaDsWHXyTlb8YzjJc6NHirFaImEpRP9bUVTSwtPx6AWuD
coWtzs4Vmn6wMcx8+zCZzAkY8UBK9JHBKk+ME6aoCU1DATqseQEgo9MEZt0
xw4f5f5EtWE3AWROgprBWT5Juvkf4VSOgpoisdupCzxJEv6rnOCheYYtwvbmhAt
cHJgvOSDgeBwuCRjxQEr0icEqkgcEp7rITpgJT2uASrRxASBjkwmwapDBcF/
hpWIRk03zBaPW1g7FlqCmwcvxS8KlKJu2arFbQhzJmg7Dh3+pq+bnCjJ4qD1tJb
JatHFBYCOKCxbIgKgkQcP5F6xRkEZWIWi1dYWePHGRWIun8UhGoySMlGLRq2s
FY+P74rINUAeyRxBi1R+QlOx62SmwfHxLoJuUpqBUjjaxE0rFqNXSTxH4nTRJ4j
MQisYfWCsWWwKbBy/uZjlJhabYIBa3MyBa4r5C1kkVgo8cLe1q/cMjRdpTcD8/
EYuDlnK5lv7IyVWjFmL9GQQ+JRMqpJuumZ+yEnzx+UlSLp/
tyzpFvhxaGCIXuJ8hexSC4UXVWzoVuqcEiHymU61IqBOoOzAtMwM01IOqi6SC7
dVscQlhMyyQ5VC/
FN1vCwMXJDaMH60cvGSiMmj8X5E5Wh+NYiaViztXSTxH9rcczkOIuUcj0fk+cU1
IFqDTAJVI8oLXI0oLDsCArZEnwPWCD9OXhFYw4hZ1SNOisRwn8UzApyJV26jZX
Rq6VZrREylKJ/
HN14r0KJmSPpGSq0YsxfoyCH72omVUk3XTs9IeaVi1GzlN2j8UpEIyiT9gtHLaIrH
bqQk6SRL8cxCJSZHTVVmtoxfrR60XKoyaP75NVrBwYuS5iZdWLWaO0nqPxPWK
L9GWhlotTQhzJmg7Dh78klGIyaUjGLxq2jZyq0Wh5tKTJ+
+TEAlI4ctlWitYeGbyPxqokXTmq8dhnTGeGYKxeb8jpqk8Rl4RWMPokqdFSEnyS
GP3YyhCBSVZJA9mjiA9wa4B7mD3B1kSEmvJGrTUy8n8mcccTdaH41gbF4fkUT
KqSbrp2WpTZLmCsWHH7ssxbOcngY5QGrEcYZqLLIzTm2RmmpgtNL4mLBCPS
+aarpHoVSOippWpvPi+P8AInK2PxrBWP8AoyWhkZQj1kswWBTZIaLd88w+Sbr
xHoVSOifSCsRm2SmwbH9FTDAkgy0qJ+Md8svCoyhHbNVitpW5vKB/
6KkXJWjLSppeCM+aQjkZJGSjFoxbSvSPPsf6CycuAZ2gUGlGRBmdjijNljsA1rYFB7
i3wJSYXlDhBEzhZm3K0bfO+ZJv2zludquKo58qR/
djLJlBpNmQGsEcUGtUdgGuDTANcig9xWBrc9yDWiRMMz8iYHlHpwZ0ucZObPw
Yxk2a7Ccnj/
Bt6GCPhDm8Mp+6GLg+FIhoqD1uPOM1SPyM1FkM09oM01EZpqYzTB6MOPRq
gzTXAzTnQzUHg9JPh6SfD0pID0tIjNXkcD0zIjFbkshCpPFMxsA2jv8ADuRseaIfHil
P6dnnuH0iKq386T/
pywzpUCaVhhyjH+kvFgZVTwOcb4BpNmUb3H4BrBHFGbNHYBrVH4ClvalD+zO
neNIGIzIucY4Y/
oDJsYBnKJBmSZ4GZuPKDWGOIM2iOwDW1hgZuLYGuSYNcsg1xcA1veZBrXIZB
rPImGbDJZBpqQMMyTzIM7cGGVD5HHj8URBLSRm7dNoj+8n80GzIA27BQk7nB
kbCYZYWAwUiZ4wNAzJh6alMg1Zkh6akh6akh6bkhmuyWB6ekh6ekhsEkNgkRs
EiNjkBscgNjkBscgNjkBscgNjkBscgNikcjYJIbBJD0/
JD09JDFcksj03JD01JBCpPVAxq7RrnGMYx/
wDmqqKERJubMbmzG5sxubMbmzG5swqumiTc2Y3NmNzZjc2Q3NmNzZjcmYS
VIsQ0i0Kbc2YReN3BtFnCTfG5sxubIYzxws5Sb43NmNzZDGeONVn7ZuMTkfnKT
lFx8JjYIXc2Y3NmNzZjc2YTWTW9+ZJnjO5swi6RcjOcFxubMbmzCLhJxjOcFxubIb
mzG5sxubMbmzCT1utn2rPWzcb5H8UXSDj2LLpN8bmzG5MxjPHGh37VI25swk
9brnWdoN87mzG5sxubIbmyG5sxubMbmzHjLgm5sxubMIuEnGNVFCIk3NmNz
Zjc2Y3NmEnSC/
uOoVIm5swWRaGNqc5UibmzG5MwkqRYiihUibmzG5swksRcmij5skfc2YxItDZG
5sxubMJKkXIooREm5sxubIYzxwaRaFNubMEkGqh9DyDVM25swkqRYgWdItxub
MbmzBDlULoo9bIm3NmNyZixdn9uPzaOze+s9nk+4Cn9bpcei0b/
AEXLpdEPoEhIoxyMhYXb3PHjoQ5kzRdpVQyisRwn7pXtvsKcxMsLM7aZYSKEil7
HPUCmfl50mlP6J90ftxnOM12eOc+j5+hHoyNjdPM5znOQU5iZjLQu3ygum5SFw
6HRv0+k93cVTu1y6r3r9p0p/
b9bL2f2FNkmYizqImKbBy62535bUFNkhmLnDxppO9p0rfZ5/
s+lY7Ppb2fhVGM+HLBxh2zmmnJyQp7nxNrc58tkIlpzsg8Xw0aGNk5hUWXmO
Q7cYatlFMqqCoO/
EkJ+P59jpU3vnMwqoVFN65M8dCtx3OvbF2fTw5HhyPDkeHPGz9n8OR4c+zw5
HhyKz2eS7gKd1ulx6PRv9Fy6XRD6XjsjJu/
fKyDjThrX5jLBf3SvbdMYzkcOGrB8rHuGboj1vq56gUz8vOk0p/
Qvuj0Kkc45dYGLkmQQ+UztFuYbOXBGiEjIKSTnThrBS5o1xjODYuPRaNun0nu7i
qd2uOOLrwmHhNrjGcjw5HhyF+0aU/
t+tl7Pp4cjhnGtTkcnLrPPOcktKg88SWk52nSt9nn+z6Vjs+kuz56P/
GlQdeY0uDTiUVhx5EpanPnSYpzT/
m3OvLZaQjPko4W535bbSGd8lI6WKP5F+IN7yMiLW98hmMY8WYZhiOY2Ls+kA
UuYjwFHgKPAUZxjI8BR4Cif7uKtjjLeAo8BRjHASfcBTut0uPR6N/
ouXS6IfRbnviWBS5OaIr6DJMyCZy2CvkRJpW3vOR3tle26VIuMxpkUz4ma0mon
pT3n/fVz1Ipn5edJpT+ie9HpT+3C2IJmjtI5PKTC3vf+RjGTZh68i0TyinnE/
XiFS0q77mmFx6LRt0+k93cVTu2S4yPAUZIXgp9gp2MZT8so8BQ/
6HSn9v1svZ9IMpdpMimfE8yKxkRBK5SltJd5yMeGrVR4qIZ3yUjpOdp0rfZ5/
s+lY7PrYGfJyQrTrlpSVa87HhFUyCq6xnCwh2nJx1odcxJiDZ87I6TzznJIOWyjUwg3
nOxono/
cGGkE952NnHvPSIrEfzTwWLs+jedfNUfU0kPUskK1IuJAmtg7wKr3bWT7iEHKzU
28PxvD8OHzh1jRv9Fy6XRv9Est58kKu3wvKaHJhQjlLyHApy3B17ZbtulR7ZpPts
NZUV9TKcvq66kUz8vOk0p/
Qvej0j5tzGo+rH4fSrqR0gYk79yJ1XK0sK43w4ldM4wbD5HlngqK3gkLj0Wjbp9J7
u4qndtP9Kf+xTfr0f8ARaU/
t+tl7PpCuUSRRnrYhZt8WQkBApebLaXB3xOKe28Ssk35V8IN5zsaJztOlb7PP9n0
rHZ9bYz85kEz5TO1Xw5bTjXlJPSFa85JLq4QRWVysqKiz8tsJh3yUeGSHNO7g18O
RUHfgX0scfyT4R0qePRBS5OaJY4j2IsXZ/
bTfq1sHeBVO7ayfcfe3+i5dLo3+h7jg8FPz/8AO1ljYPJip4zullfrsG/
qSSHqSSHqSSFZkXMgJbtulR7Zpa88ZUQ2OMrq56kUz8vOk0p/
RPej90PZsEGM8cSZfDIiomxiR1mzeKVFW7vcei0aZ8TXSd7uKp3XT/Sn2Cm/
Xo/6LSn9v1svZ/dU43KZQY2C4kHWXjwVpty8XbW/lvxUHngcCd7TpW+zz/
Z9Kx2fVZIq6TlAzZwKm686PsrnmJTStuuWlLU68iNCCRl1myBWrcXB5xUFTbebI
WNvzEUGTnLR2Q+FCCcj9wYfjWrR3Mu9LF2fSIgmLqO9NRw9NRwZRrePxrYe8C
qd21k+4ivRyMi59KR49KR4sUM1jW+jf6Ll0uiH0WBvlvKiDeYYyOj90Vk0MbJzC
mt/
+1y6XWmfiW7ZpUe2BRQqSci7516Kyh50toc3hIbPEwphP+rzpNKd0T3o9K5EN
H7P01HB3V2Z0M44ZFVeZcMbI38iVEQ85GQxnBsB24K0bqqZWVFPb+JxakvMit
K+6w5iwofCRHa/MuhT0uLzT/Sn2Cm/Vo/6LSn9v1svZ/
bCIN3MgUuC4FlecrG6J2xyknJzasqmGTnLN0Q+FCTvadK32ef7PpWOz+y3M/
LcivyOI5yofKqhCZUOomZI5DZIafkyyKgqbPznoMbBCyDrL14IuaViiKWx0qnpV3
nMx2llY4aSAKXJjRjLEez0sXZ9IqxM2bD1YwHqxgPVjAN1yuUdLB3gVTu2sn3EU/
rdLj0ejf6Ll0uiH0WuP89vpE2c7MhraxxiWmlZQwIXKholjiPYykUnKp+j2o9HtR6P
aiLh0ooS3bdICcaxzM9uZFxKz68ljSqx+W7WTsW2v0rPHKYmLMio30qSOU4550
mlP6J90eldmGkez9TRoeWpoRHOeORTPzaY/
LpppEWU7EmbaxxiXnFZTIxjJswrDb2Dxvh21VTMioIqVVi1i21jkszYzyBNKqz5eP
0/0p9gpv1aP+i0p/b9bL2fSFbImirNFcouCmyQ0LJYkmYtTzz3/
uq7zmY6d7TpW+zz/Z9IWfaMI/
1ZHj1ZHj1ZHhi9SkEJxnzsdrVmXMyFqZ+Q+1r7Lko0WV5ysb7qu75eR0uX3Bt1
Gti7P7oftelg7wKr3bWT7iKd1ulx6PRv9Fy6XRD6M4wbE7Bmj1PZ+RXILKHvle2
+6Cgjvj4xguJRxzUhq1bHdrtG5WjZ50mlP6J90fvrkcZgy/In4IzI/
trsDkmdLNC5Nn2wkQeSXKXBC6Z/Cn/sU36tH/RaU/
t+tl7PpBdpeNSPWzpsdm4EJJZjXi7kiDZZUy6oqDTB8+SmPJTEs15ORFXectIzva
dK32ef7P7qr2kTjPkpHStsuUjbCy5yN0iGfPSGlqd+e/
Ea25x95CWB5KYt7PGCBM+Ujs3GHbYXL7g26jWcRUcRmxSI2KRGxSI2KRGxSI
2KREYmZGP0mol64k9ikRXYt20kdX8M+Ve7FIisRzpm70tDRd422ORGxSIRx4Ur
QzXeIbFIjYpEI44JAxcHLI1NNXK0BIIZxFvchtWX6+YyvN4/4JFMyrDYpEbFIjYpEbD
IhCqv1QwqzZrnGOGFC+Mj2sPWxjsnKeSMHSga1p+5zFQyEWUOi5O22ORGxyI
rDRZm0dlydrsUiNikRsUiNikRsUiEKq/
VEZW27DOhi4NiRqiS+V4CQQztb3IbVp+4zGVtuwz7JOsIO8r12QQztb3ASgpBb
LCo/wDKSJEE9c/
g8HIZPsUiKuycMk9HhcnabFIjYpEVloszZ6zyCjmM2KRGxSIiEjoRossOZ6TYpEbFI
gxJU8RsUiNikRCM8so7SzxK7pxsUiE4aSSPIlVdw+xSI2KREEgo3jJlE68ZsUiNikRs
UiNikRsUiNikRXW6rWNFnjFHqexSIaV96o5xjBccOIfV94R3sUiKxFKMsBQ2SJrQ8
mursUiK1EuGzvSYac7HbFIjYpEVpN03ai0MHLxXYpEIQkgVb/7x/wD/
xAA7EQACAgEBBgQFAQQJBQAAAAABAgADBBEQEhMxQVEUITIzICJCUGFSIzBA
YgU0Q1NgcYGh8BVwkJGx/9oACAEDAQE/AftBYDnDkVD6oc2oQ5/
ZYc608ocm4/VDY55naGYcjBkWr9UXOsHPziZ1Z5+UV1fzU/
fTYi8zDlUjrDn19BDnt0EOZcesN1jc2+EVu3IQYtx6QYNs8A/
eeAfvDg2xsa5ekII57AxU6iV5rL6/
OV2pb6T91NqLzMOXSOsOevQQ579BDl3HrDY7cz8AqsbksGJcekGDZ1MGAOrQ
YVQgxqR9MCKvIfuCobnHw6m5eUsw7E5eewEqdRKc3pZOf202IvMw5dI6xs9eg
hzn6CHKuPWF2bmdgVjyEGPafpgwrjBgN1MGAnUwYdI6QUVD6YABy/
grcdLecuxnq8+myjJany6RHWwar9mLBecbJpXrDnVjkI2e3QQ5dx6zets7mCi0/
TBh3HpBgP1MGAOrQYNQgxaR9MFaDkP4E2IvMw5VI+qeLp7wZNJ+qBg3L48jD
1+aucpVc1J1EqtW1dV+wNbWvMw5dXTzhyXPpQzfy25DScHKfm0GAx5tBgJ1M
GFSIMakfTBWg5D+DNta8zDmUjrDnr0EOdZ0EOVcesLs3M/CCRyiZdqc/
OVZddnly+LIxhb5jnGUqdDK7GrbVZRetw/P8aRrDUh5wVoOQ/
hi6rzMbKpXrGz06CNnv0EOVc3WF2bmfgFVjclgxLj0gwbOpgwO7QYNU8FVDgJ0
MfCsXl5xlZTodlOU1fkfMRHWwar8N1C3D8yytq20aKxQ6iY+SLfI8/
t7Oq8zGzKV6xs8fSsbNtPKNda3NpoTBTYfpgxLj0gwbesGB3aDAr6mDDpHSCiof
TAAOX7lkVxowl2ER517KrmpOolVq3Lqvw21LaujS6lqToYDp5iY2Vv/
ACvz+1GF36LD4luwhxr39TwYA6tBg194MOkdIMekfTBWg5D+EyMYW+Y5xlKn
Qyuxq21WU3rcPLn8LoHGjS/
HNJ1HLZjZf02ffGvqXm0bNqHKNn9lnjrYuefqErtW0ar8N1C3D8yytqjo0Vih1Ex8
gXDTr8JAI0MyMUp8yctmNlbvyvynP7sTpGst+lI3jG/EOJe/
qMGA3UwYA6tBg1CeEp7SzBU+iAvQ/
Yyi9bh+fhsqW0aNLqGpPnASDqJj5Qs+VufxZGJ9VezHyTV8rcoCGGo+/
XULcPOMlmO8x8gXD8/CyhxoZkYxq8xy2Y2VvfK/
P4sjFFnzLzhBU6GUZDUn8RHVxqv3wso5mHIqH1SzJx3Gjecr94bnxc5kYm781e
zGy/of4r8dbh+Y6NWdGlNzUnUSuxbV1X72a0bmIceo/TPC09olFdZ1UfuMjED/
ADJzhGnkZhXFhuH4raltGjS6lqToZXa1TarKbluGo/
wNn6b4mF73xugcaNL8Y0+fSV2Gpt4RHDqGH3w2oOZhyaR9UOZSOs8dVPHp
2h/
pDss8e36Z46ztDm3RmLHUzDpNa7x5n9wQGGhlqcNyswW1rI+9mms8xPD0/
pnhaf0zwlPaeDp7TwVM8FTPA1TwNU8DX3leLVX5gfur237SRMAaVk/
4K3hOInecar9UOTSPql+ZvDdriKXbdErQVqFH302adDDd/
KYchv7sw5Nn92Ycm7+7nicn9H/2eIyu3+0N+V/
wTi5X5/8AU38k95rf+f8AeaXHv/vNyzsZw37Thv2nCs/TODZ+mJi2v00lOOtI/
P8A428jJNLaATx79p49+0rymdGbTlPHv2nj37Tx79pj5LXPukQ5zA6aSiw2pvGW
vw0LTx79pbYa69+ePftBLslKf84c9+glecreTjSc9rHdUmePftPHv2iZyn1CAhhqN
mTeaNNBKctrLAukycg0EaCUZbWvukTJyDSQAJ49+08e/
aU5odt1hpsuyEp584c9+glecD5ONIDrL8tqn3QJjZBuJ1Gxs5lYjSDKbg8TSePftPH
v2nj37SjJNu9qOU8e/
aVPxEDbMjKal90CePftBnt1WVXLcNV2Wvw0LTx7doDvDURzuqTPHv2nE/Zb/
wCJ49+0rbfQNL7GqTeE8e3aX3mtQyiUZZtfdIl+Wan3QJRebVLMOU8e3aUWNa
m8RMnI4OgEpyzY+6RLCyqSs8e/aVPxEDTJyOBppEzLHYKFmd7glFPGbTWeA/
mleJuKy685/wBP/
mjDdYiUYvGXe1lGLwW3tY3qMwvZmV7LbMn2Dsus4VW9CSx1MTBYjUnSWVtU
260wrv7M7bPQdleHxEDay2pqTo0w7Sr7h5HZ/
SHJZie8Jn+pZh+8Jn+pZTXxX3ZZhbiFtdllvDq3jCSx1MTBZhqTpLamqbdaYVvn
wzMz3jMDm2yz1mUV8XH3fzPAfzbKsPioG1lWPwA3nsxvZXZne7KKeM2msvxTS
N7WUOa7AdmfZySaTCfer07S3222D+rf6bKPaWMoYaGMpRiplf7fFK9ojbjBpY2+
5aP+xxd3vFUsdBFUIoUTIfiWEwEo2sVg6hhMqrh2fgzBs5pMiziWEzBq/
tDM73BFYryM41n6pjEmoE7LfcaYPtbG9RgZhyM3mPXZk+wdmd6FmONbV2Z4
GimY50uWWZaVNukTx9fYziC2ksPzsxvZWZw/Z6yv1jZ/
SHJZie8Jn+pZh+8Jn+pYrFDqI1tjDQmUCsv85mefkEoGtqjZnj5QZQdLVmZ7xm
BzbZZ6zMH2tuL7Ij+k7Mb2V2Z3uyi7gtrpLslrhppMdDZYBsufiWFpbVu4yn/
nnMN9y3TvLfbOwf1b/TZR7S7M6vR9/
vMF9HK95boLDpKtDYNZnPq4XtMKvefe7TIfh1kypd9wszF3bf8AOYL6pu9plVcW
v8xWKnUStDYwURVCjQTO9wTF4e/
+0muJ+JW9Z8k2W+40wfa2N6jMSqt6tWEyKa1qJA2ZPsHZlV79Oo6RWKnURcq
phqTpMq4XN5chMNN6ze7TIxrLLCyzwd3aVoa8fdb87KL6lqAJmVkC3yXlMZN+0
TxFWumszLVsYBekwxrcJn+pZh+8Jn+pZjbnE+flG8Lp02FTbiA9opKnURMuphq
TpMq8XN8vITDr37Ne0zl0cNMa3gvqY+VUq6g6znMVd2kbcX2RH9J2Y3srszvdlF
PGbTWWIa23TMF1816zKfcqOw3WMN0mA6ecL8Sje/Gwf1b/
AE2U31CtQWniKf1S9RdV5RGKNvCIpscLLE4blY7F23jMavh1CZz6kJFYodRHsaz1
GYr7lo2ZAC2sBMBRqTszVZrPIThv2nDftMJWVzqNllb758phAirz2NW+8fKYYIq85
kgmk6Thv2mQCaCJw37QcpfhnXerhRx0leLZZ00lVa1LujbZ6DOG/
acN+0TFtfpKaRSugjo4b5hFrduQmLj8EatzmcrMw0ExEYW+YmcrMw0E4b9pw3
7SvFtfppEQVruiX4Z13q4a3HMSvGss6aSqpal3RLahau6ZZjWV9JuOekow2J1s2
8N+0xQRSNY3pM4b9pjjSpddmarGzyEwlZXOomZTxF3hzEVbEOoEyWe7TQTEq
bi6sJoJbSyuQBMfe4LIROG/aAHw+n4nDftOG/
acN+0o8qll9LLYdBMKohi7CZtRJDKJTQz2AEbLBZY5bSYdW6mpEvr36yJw37Spi6
AmZKObjoJgqV3tR/2i/
8QAIBEAAwEBAAIDAQEBAAAAAAAAAAERECAwUCFAYEFwkP/
aAAgBAgEBPwH1VKXul/
AUpfBCEJzfb0pS9QhCeOE2+wpeoQhPwFKXYQhPq3wz03zkIT61KUvdL+ApS9Q
hCEITb7mlLxCEITyTx310IT0N97SlL9G+5+SEIQhPoT/Gpl/
DTwzF+PYvxFKUpSlxeJe+hCEIQnkX46/
hvk+f+c1LlKXLty7S80peLlylLtLl25Sly8UvF25duUuXbl2jyZOUPHxMXMxYxDEPJ
xMQxcTJy8mvF9FixD6XTx69vD14xD4evGLVq1Y+v4Lti1i1i5fS6ePhZOVjEMQxb
/NYh9rl6vovVqx6tWrqZPIxD2ZMnM8LEPGLxofC5X+Rf//
EAEgQAAEDAQIICwYCCgICAgMAAAEAAgMEEBESISIjMTRxchMgMjNBUXOBgpK
xMEJSYZHBYKEFFCRAQ1BicKLRU2ODsnThgKOw/9oACAEBAAY/
AvwvnJGt2lZVVH3Y1kcJJsCzNL5nLNtij7r1rJbsACyqqXzLCkcXO6zxP2eV8e665Z
NVIsb2v2tWfpmu3XXLO4cO0XrMVDHfK/
8AsTjWdqI2+Jc9hbrVmoJH7cSzUDG7TeudDN1qztTIfEsZv/cczUPu6jjCuq4Q/
wCbcSuZKGO+F+L+wGW8N2lZdVH3G9ZBfJsaszSnxOWbZFH3XrHUubu4lnZX
v2u/
e8zKcH4XYwsGtZwLviGMLDheHt6wfxvnZWM2uWOpad3Gs2ySTuuWZpgN5yy
XMj3WrOVUn1uV73F232tzQSs3TSu8C5jB3nBZ2WNn5rO1LjsbcsoSP2uWqtO3
GtUi8q1aLyLVovIsdJF5VjpW9yyRIzY5ZmpI3mrNGOUfI3LPU72/
O7j4VNK5hQZ+kG8G74xoQfE4Paekfi/
Ozxt2uXP4W6L1mYJH7cSzUDG7TeudDN1qztRK7xrGb/
aXMaTsWRSy+W5c0GbXLOzxtHyxrO1LzsFyymvftcsilj7xes3G1uwfuGfp2E9d1x
V9JM6M9TsYV7ouEb1sx8a+nfi6WnQUGPzM3wnp/
E+NZ2ojb4lzpfutvWap5HbTcs1DGzbjXP4G6LlnZ5H7Xe0ujie7Y1ZNLJ4sSygyPa
5Z2paN0LOzyO2XBc0X7zlkUsQ8KuY0NHyH71n4hhfEMRRdRP4ZvwnSiyVhY4d
DuK2Ktvli+LpCEkDg9h0Efh/
Gs7URt2uXOl+61Zmne7ablmoo2fmtYLN0XLOzPftd7LEL1dHTyu8C1cjaQFlviZ3
3rO1XlYst0r++5asDvG9Zqnjb4Vi/
keDUxh4RfQHhWfB0oteC0jSDxL4Tez3mHQVhQnKHKadI/
DOdmjZtcufw90XrMwSP24lmYY2bca5/A3Rcs7PI/
a72Obie7Y1ZNLJ34ljYxm1yztSxuxt6ztRI7YLljY9+85ZNLH3i9ZuNrdg/
ludbgydDxpV7xhxdDxxBJA8seEGSXR1A0t6/
wlnHtZtKyqlp3cazTJJO65ZinY3eN6xSiMf0tWdqJXeLj5EbnbAsill8q5prN5wWcmj
b9Ss7VE7GrL4R+1yxUzTvY1m4I2+FYv5qWvAc06QUZv0aNsX+kQ4XEWhzCW
uGghCCsIbP0O+L8F4ys7UxjxLJc+TdasxTeZyyMCLY1Zyqk7jcspxO3iXRxvfutW
TSyd4uXNNbtcFnJomj5XlZ2qcd1qyjK/
xLVwdpWbp4m7GLEP5RnZo2bXLHUB26L1kNlf3LFSu8yxUn+ayqQ+dZynkb33
rG98e81Zmojd4vbmSK6Oo6+vanRTtLHjo4gp/0g7H7sh+/
4FzsjGbXLHUB27jWZhkk24lmYY2bca1gs3Rcr5pXybzlkglXx00rtjCsVM4bbgsrg
2+JZ2paN1qztRI7YLllNfJtcsVKw7VkQRN2MH8qx4lnaiNviXOl+61Zqne7ablmoY
2fmufwd0ALOzyP2u9lmJ3tHVfiV1XG2UdbcRVzZODf8L8XtcGUYLxyXjoXBzt2Hr
4gp604UPuu+FBzCHNOgj+fZ6ojb4likdJutV1LSOdtK/
Z6bA2R3rL4e75uwVfJgN3nrLnjbsvWcqXHY1ZRlf4lq4O1xV7KWIeFZDQ3YP5Zj
WdqI2+Jc6X7rVmKd7t43LNRxx/msdS5u7iWdle/a79zAZJhx/A/
Gg2Q8BL1O9oYqht46Pkrn5UR5L+II5b30x6PhTZIXB7HaCP51mjEwfMErLrnNH/
WwBftE9TNvSrVgdpvWRTRDwLJaB3fzDPTRs2uXP4e6L1mYJH7cSzUMbPzWsFu
6Llnpnv3ne1yQSs3TSu8C5jB3nBY+DHiXOw/
UrEYj4lzOFuuCz1PIza3jhkufg6icYXCUz8LrHSPZujnaHsdpBRkivfTHp+HiZOXCe
UxCWndhNP5fii95Ddqy6mPuN6zYkl2C5HgKYDecsUjY91qztRK7xe0yInu2NWTS
yd4uWU1ke1yzlSwbAs7USO2C5Y43P2vKyaWPvCzbGt2D2Gfp2OPXdjV9JK6I9T
sYRLo+EZ8TMfFElO8scFgPzdQPd6/
Zlrxe06QjUUILoveZ8PE4SA4veb1rDgOP3m9I/
EWdkazaVjqGu3cazMMj9uJZmKOPbjWOpc3dxK+R7n7T7G6KN79jVkUsveLlzT
W7XBZyaJo+V5WdqnHY25ZXCP8SxUzTtxrNQRM2MWL9yJLOCk+NiLruFh+NvE
DmEtcNBCbT1pDZvdd8XtDUfo8ZXvR9exXEXG0S07sFw/
NYsiYcpn4cvke1g+ZWOoDj/TjWYge/biWZZHF+ay6l/
diV7yXH58XJa49yyKWY+BasRtIWUYmeJZ2paN1qzlRI7YLllNfJtcsVKw7cayII27G
fvploLo5fg6CjHM0seNIPEbTfpB3ybIfv7QzU1zKj8nIxytLHt0g2tkhcWvboIXBzXM
qB0fF+FryblnKlncb1mWSS/
ksxCyPbjWVUOA6m4leWyyfPSsillPgWrEbSFlCNm1yy5om/VZ2q8rFlyyu/
JY2PftesVKzvxrN08TfCskAfybLyZRyXrg6ht3Ueg8QU9acKH3XfCg5hvadB9nfyJx
yXoxVDcFw/
O0OYS1w0EJtPWHBn6HfF+E8yWt+bhesqvcwf0RgL9oqamba9Y2PdtetWadqya
WLyLJjYPD/ADIxVDbx0HqVzxhRHkv4gimvfTH/
ABTZIXBzHaCPZ8HOMfuu6QsCYZPuv6DxG01e7HobIfv+PM7URt2uXP4W61cp
48CubUsB/
qxK9pBHy9m6OZoex2kFGSG99Men4eJdy4DympstO7CYfZmKobhNKwhnIDod
1beIKeuN8Xuv+FAtN4PT+NL3uDR81l1LL/ljWZZJKdlyzMDG7TeuewB/
SLlnZpH7XcXCppXM+XQhFXXRSfF0H2Za4Xg6QjUUAwo/
eZ1cTCixsPKZ1oS07r+sdXsyyRoc06QUZ6QF8HSPh4giqL303/
qmyRODmO0Efi++aVkY+ZWS90p/pC/ZqcD5vK5/
AH9AuV8sjnn+o23MiedjVk0kvlXMhm84LOSxM/NZdWe5ixVT/
Kr6eRs3y0FFk7HRu6jY2CrJfT9B6WIOYQ5p0EezdUUAuk95nWi1wucNItEsB2jrW
HFieOUzq9o6o/Rzfm6P/XEu5cB0t/
0hLTuwmH8WfspjHzesv9JBg6mMuV81YXHdWVUv7mrKllcsYkftctXv2uKxUsXlW
REweH2GBUswh0HpCv5cB0P/
AN2COW99Mej4U2SFwex2gj2ZkiujqOvr2p0U7Sx7dItbLTuwXhfBOOUz2jp6QBt
R0jociyRpa4aQbcKLGw8pnWhLAdo6vx4WSNDmnSCnT0d74OkdLbLuXAeUz/
SbLA7CY72d0gwZByX9S4Oobd1HoNrZIXFj26CFwc1zKgdHxe0whkTjQ7/
aMVQ3BcLRLTuu6x1rCjyZBymdX49dP+jxc/
3o+vYiHC4jSFe3KiPLYmy07sJp9mYqhuEOj5LHlwnkvtDmEtcNBCbBVkNqOg/
F7TAmGV7rukLAnGT7rug2tlgdgPCwTkVA0s/
HpkizdR19e1GKoYWPCZFfm5sRHz9o6OZoex2kFGamvfT/AJttvGlCmr3Zz3X/
ABe0MVQ3CYVeM5AdDv8AdofE4te04iEIai5lT/7fjfLcG7SsupiHiXOl261ZEUr/
AMlm6X6vWTDE36prqkjJ0XBRvAyYson2txTqj9HN+bov9cRtNXuxaGSH7+0LJG
hzTpBTp6S98HSPhtBabiNBTaeuN0vuv+L8bXzwskPzCx0rO7EsUTm7HlYnSjxLJ
nkHcsVS/
wAqy6olvyauDpm3DpPX7czUtzJ+kdDk5krSx7dINraOqdffzbj6e1dUfo8fN0f+uI
2m/SDvkyQ/
f+xmPImHJejFUNwT0fOwFpuIxhQzdJGPb7UzUtzKjpHQ5FkrSx7dINraetOFDoa/
4UC03g/2LkY4ZbRew9Rte34ZD7a/
kTjkvRiqG4Lh+dopKo5t2Jh+H5f2Lmlf0Ntwj77yfb8HONjukLAmF7TyX9dowzfLH
ku/
sHjIWVNGPEsqqiHjWtMXPX+ErJ4R3hWbgkdtxIcJkRjksFjIoxe55uCigZoY279wd
DMMR0HqUkMvKYbrOC92Vv5/jfKkaO9ZVVEPGtZadgKxOefAsmKU/
RZFKe9yyKdg2lZLIm9y5bG7GLWnLKqpfOsuaQ+JY3E+wuAvK/WatuedyR8I/
copR/EZj7rKS7/kH41uKy2O85WOE+YrRIPGuVKPEsU035LJqZPKFiqneVYqv/
8AX/8Aa1seRa03yrFUR/
QrFPF+axSRHvK0xeZaYvMtEfnXIZ51zbT41zQ8wXMXeILPOZEPqsIDhZfjd+50r
em42Ug/7R/Z6RzDexmS2wP6Imk/2ddS0jr5XYnuHu28K8Zc2Pu/
snpCxvaO9c/H5llVUQ8YWtx/Vay07AVzp8hWJzz4Fm4pH/
kiyL9njPw6bQ+Qfs7DlfP5K4f2BxlZUrBtcsdTF51jq4/
qtZB2ArnHHwLEJT4ViglKyaV3e5ZNL9XrJp4x3lZMcQ+qxGNvhXOtHgC1k/
QLHVy/
VY6mbzrKnkPjWNzvqtPsg54MdP8AF17E2KBuCxuj8dZsN7ysltN5isn9U/
yWTJSjYFz8I2LW2+b/AOljqSdkyypCf/MsbQf/ACLmgfGFzH+QXMf5Bcx/
kFq5PiC1Y+YLVT9QtVd9VqrvqFqrvqFqj1qj1qj1qj1qj1qj1qj1qj1qr1qrvqFqrvqtV
d9QtWPmC1e7xBcx/kFzH+QWdLIhtvQdNfUP/q0fRXDR/
wDzVi+VwY0dJWtReda1F51rUXnWtReda1F51rUXnWHK9rG9ZK1qLzrWovOtai
861qLzrWovOtai861qLzoPicHtPSEWuqIwRpylrUXnRbBMyQjoabQZ5Gxg/
EVrUXnWtRedXhAzyNjB0YRWtReda1F51eOJn542bXK79ajWYlZJun2Jc43NGkrW
ovOtai861qLzrWovOs1I1+6ePcamLzLWovOjwErZLtOCVecQC1qLzrWovOiYJGy
AfCUS7EAtai861qLzrWovOtai861qLzq6KeN56g7jZ+eNm1yu/
Wo1mJWSbruJfPI2Mf1Fa1F51rUXnV40WlslRG1w0guWtRedYEM8b3dQcgJ5WRk
6MIrWovOtai861qLzrWovOtai861qLzrWovOsO8YN1961qLzrWovOiYJGyAfCeIXy
uDGjpK1qLzrWovOtai861qLzrMysfsdxi6Rwa0aSVrUXnQa2oiJOIDC4hdI4NaNJK
1qLzrWovOg+Jwe09IRfI4NaNJK1qLzrWovOsOF4e3rFpZLPGxw0guWtRedACpiJ
OjKs1qLzrWovOsOF4e3rBRfK4MaOkrWovOtai86vGhFrqmIEaRhLWovOgyOojc4
6AHWlr6iNrhpBctai86D4nB7T0iwcPKyO/
RhFa1F51rUXnQcw4TToItwJZ42O6i5azF51rMXnVTsHrx27zfYQ7T6qq7V3rZN2f3
tg7S2PdCpt82x7os4Sodsb0lEMdwEXwtWPHZhRuLT1hBlfnY/j6R/
tNkhcHsdoI49V2R4t7HFp+SAmP6xH/
VpXCU7to6RxZd8+tlX4fup+zPpbN2n2VR2bvTjXg3FCkrHYRPNvPpbwlQ67qHS
UWxHgIupulXk32XsJaesIMrc9F8XvBNlgcHsd02Q9rbFuC2q37BuFU/Zn19hJ/
wDHP/
rbL2v2HEn7vXi3tJB+SbFXnhI9GH0hBzTe06DxI6dpypTedlgc3SDeFFMPfbbVbls
Hf6qq3fvbDtd62xVTfeyXWAjEQoZh77VNGBc0nCbZNAdLHYX1UcI0yO/
KyCLoLr3bFLL0Mbei52k47JKl2iMXDbZLM7Qxt6c9+NzjebJaV3u5TdljsEZ2PKba
6ndyoTi2WOkfia0XlSzu0vdfZwkgvihxn5lVOwetuhaD9FoK0Jm81aD9FoPE0FaC
odp9VVdqfWyfs/vbB2lse6FTb9se6E+abktRlnOwdXGEUp/Z3/
l8+PV9kbcQv4jZoTo0jrUc8XJeOJNvn1sq/
D91P2bvS2btFUdm70tvYxztgXNP8queCD87A5huIN4UMvxsBT5peSwXoyy6Pd
b1DjBrz+zvOV8vmrxjBUHa/a2LcFtVv2DcKp+z+65JWg24gtB+i0FSf/HP/
rbL2v2HEn7vW3QtFrqOU8nGzZxJXA5LMhtstK7Sw4TdltVuWwd/
qqrd+9sO13rbNF7117dtskB0xuvGxQ1LejIdYxvRKMFFg0RNwbJ6p241MgGmV
35WxMPLIwnbbI6ZumQ3nZbDITc2/
Bdstc5gzUuU2yJ7jcx2S6wQNOVMceywAYyUyP3zjftVTsHrbTZI5PUuSPouSPouS
PosYvXJH0XJH0VTd1/axt/wFckfRckfRYlVdq6yfs/
vbB2n2ti3Qqbfti3Qo6VuhmU7bYGsF5OIBNfUMElQdJOO7YsF0bSNidVUQuaOW
y1oeb3xZJ41X2RtdeBzpVz42kbE6agbgSD3BoNstK7Ry28SbfNlX4fup+zd6Wzd
p9lUdm70tk7X7CzhSBwjXDBNtMx2kRhRUjTi5b7ABjJTZKpglnPXoarjG0jYnVVC
3Bwcb2C3g3nLhOD3KDtPtbDuC2q37BuFYxeuSPouSPonbbKm8DSFyR9FyR9FU
9k70tl7X7DiT93rbS5I5HUrnMaRsT44sTHDCA6rKYjpdd9bZpfeuubts4OHlXE2Q
yX5N+C7ZbVblsHf6qq3fvbFtd68SS7kSZbbGA8mUYCni6S3FtsZIzlMN4Ukr+U9
15sgj966921FgOTCMGyJh5DThOtlcDkMyW2NbKMbmhw77IXnlAYLttjg0Z1mUy
2N7jltyXKV4OQ3JbZw8gzcPrZU7B62tihluY3Rkhc8PKFz3+IU5qn4WCRdiu4lVt+
1jdx3Equ1dYXU8joyRde1a3L9VrUvmQFRM+QDRhG2LdCpt+2LcCqX/
wBZFjS7RE3Ctc12NpFxUsXwPIsni6HMv41X2Rtd2ptma3kuyvrZTXdJweJNvn1s
q/D91P2bvS2btFUdm70tMVPgYJN+UF/C8qH6y+8DQ0DFY2R7f2dhvJ6/
lZVE9DsH6WRYWhmXaQcYKniGhjyBY+PoexQdp9rYdwW1W/
YNw8R22yq3hbU9k70tl7X7DiT93rbSh0rAcD4kS6eMAf1J8sfIGS2ymHU6891sN
K3oy3WTzn3RghVEXwvN1kLzygMF22yq3LYO/
wBVVbv3ti2u9eI2dvKhP5WNe3E5pvCimboe29TtHJccJvfbAz3b8J3cpJHcljb0+R/
KebzY+pdplxDZZNKOVdc3bZDCPfeAqaZoxXYBslpnHE8YTdtpewZqXKG2ypjZj
4ZuL5GwNaLycQUcPvaXbbKnYPXjVW8OJU7R6WN3HcSq7V3sIt0Km37YtwKcH/
kNk3Z/fiVRb/yGy/8A6zeoXUr8Bzn3HFetY/wC1j/
ELWP8Qqj9bkw8G67Eqvsja7tTbi6IxZSdoOJNvmyr8P3U/
Zu9LZu0+yqOzd6cdkFaxrGaGvaLleMYVUD/
AMpseOuLiVZHx2M3HKDtPtbAf+seltVv2f8AjPEdtsqt4W1HZu9LZe1+w4k/
d68d1ZKLi4XM2WEnQFNMfedi2WRk6ZctMlGiRv5iyWmdoeMJu2yq3LYO/
wBVVbtsW13rxHxv5LxcVJC/
Sx11hiPKhdd3J4GiIYFsd+iTIXBjTMcGxkTOU91wUcLNDG3WQ0rToy3fawynRE3
81N1x5Yshmb7jr017cYcLxY9jecblM28Q1EgzcOjetqdg9bYJZosJ7hjOEuZ/
yXMnzFOFKzBwtOPiVO0eljdw8Sq7V1kjKm/Bay/
EblyZPOtEnnUT6YOvc643m+2LdCpt+2PdCn6nnDHfZFI7Ew5LrZZ3+6PzRc7S
TfZUTnRiYFTdofTiVfh+6q+yNru1NjnyG5rReSpp+hzsWyyM9EYLrXE9ARPzsq3f
NoU/
Zu9LZu0+yqOzd6WySVMeE4Pu0rmf8k79XaY5LsRvVxsMTze6E3dylPRJlCyGY8
m+52xXjRZJNJyWC9PkdynG82TznQ1uCEXfA4G2H4mDANjnvNzWi8qab43k2T
SdDWXcR22yq3hbUdm70tl7X7DiT93rxo46w5J0DrKAaLgLHgcuXJFrGMhhwWi4
aUxs0bG4BvBbZFM33HXpr2Y2uF4VVuWwd/
qqrd+9sW13rxWVLdEouO2yUyG5joz9U578bnG8oNYL3ONwCcyQXOabiE1zcR
GMKn4M3tbHj3jpsdO7kwjFtsLnYgFNMfedi2WPbDGx2GbyXJzHQxXOFx02hh5UJ
we60vZyJsqwNGk4lHCNI5R6zbU7B62wwy8JhsGO5q/
ieRfxPIv4nkTJY+S8Xi2p2j0sbuO4lV2rrJuz+9sHafa2LdCpt/
7Wx7oTamMXui5W7aIatpljGhw0hYhKT1YKuORCNDLA1gvcTcAo4fe0u2pjJXuZg
G/
EuflXPyrn5VJwL3Pw7r8JVfZG0xVGHhYZOIXrIbK7uXBgcFB8I6dtrqiQZc2jYuAdF
wjMG8kHGsqR0e80p8FDe4vFxfdda55/
iSEqfs3els3afZVHZu9LXx1Ly1xkv0Lnj5CnfqpMsvRiV5squrJQnjF8kPpaIalplhHJI
0hYhKT1YKwbuDgGhvXtsAaLyUyM84cp+1Swu99tydG8XOabjYXR5UbuUxXuEr
T1YKMNO0xw9PWbeFdypjf3cR22yq3hbU9k70tl7X7DiT93rbSl0TCcDpahUQtuh
k0gdBsDmm5wxhNeedbiePnZwLeTCPz44jPKhOD3Kq3LYO/1VVu/
e1kM+HhtJ0NX8XyL+L5F/E8iE0F+BfdjClYOWMpu3icK7kQ4+9cM0ZMw/
PiRg8uTLdY8Dly5I44jJyZhd320u6bId8cSp2D149J2Ytqdo9LG7h4lV2psn7P72w
dp9rY90Km3zbHuhEOxgoywDCpnf48XEhV1guk9xp6OPV9keOJqkFtOP81cMQC
qJb8Rfi4jIYRe5xuUcLNDBcp+zd6Wzdp9lUdm709hfKLpZThEdVhnphfTu0j4OM2
rrG3H+Gw+tprKVt5/iN+/
GBcLqdvKPX8kGtxAaOI7bZVbwtqeyd6Wy9r9hxJ+71tpdxPgl5LgpIZeUw2NcT
mn4nhPnJyGtwk+R+NzzebJ6iRoIGQ29c236Lm2/
RTxdGFeNlgjdyZsnvVVuWwd/qqrd+/
HbvmyVg5LsptrS7ly5RUmCL3x5bbYYvdvvdst4FvJhF3fZBD8Tsexc236Lm2+VQ
VEbQLjgm6xr2YnNN4UUzdD232Uu6bId8evEnjhaXvddcBtWqSLVXrVXrVXrVXr
VXqnZKMF7WAEWzyQ07nsJxEbFqj0JKiB0bMA4zxKh8dM8tdISCtUepXVMLo2ll1
5thbTRmRwffiWqPWqvTAdIaFA2mjMhDrzctUetVemA6cGwteL2nSCi+gdwR+A
6FjpnO+bMa1SbyLLYIW9byg92em+I9HsKhkYvc6MgBapItVetVetVes4GQj5lB9
Qf1h/z0K4aE5t914uvRMLf1hn9On6K59PKPAsinlPgWWzgG9b/
wDSyMuU8p5sma0XksIC1R61R6lbUxmNxffjUzWi8lhAWqvWqvWqvWqvWqvQ
4QMhHzKEkmemHSdAtucLwUX0TuBd8PurV3PHWzGtUm8iyo+BHW9CSXPzDp
OgcUyUx4CQ/
QrmeFH9GNapN5CsmleN7Eg79ISeBiEcLQxg0AcU3Ur9K1V6qBVRGPCIuvtna0X
ksIH0WqvWqvUjKmMxuMl9x4kscDS95uuA2rVHrVXqnjlbgva3GLGz0rcKduIjrC1
V61V6/UXUkl4PK/
pWqvWqvUUb24L9LttsU1JEZDg3OuWqvTXspXhzTeFKGxnhnx8j5rVXrVXqGOd
pY8X3g7VURwtw3uGILVJFqr1qr1qr1qr1qr0I6hhY/
COI2RSUzMOVhuuHUtVeomzwOjjwsonqVw0BY1MKaBz4sLJIWqvUs1UzAkdiAPV
Y5zW4RAxDrT5H0r8J5vK1V6fNVxGO5tzb7Zomi9117dq1V61V6fBWROjwTk32
U5pYnSYLTfctVeoy6lfcHD/85P/
EAC4QAAECAwYGAwEAAwEBAAAAAAEAERAhMUFRYXGh8CCBkbHB8TDR4WB
AUHCAsP/aAAgBAQABPyH+XEuDwQnR4Rf8VT/
Je6q9b6VpoeZH5pY4O3uMLEAS5jnNSoPcRAjc2X7ptb99FrQHc6oI29JVC8k9P+
EgHIAYp4dhVxVt84U54QSCyvP5A7DLvlUE7nog5ixP+BSkimVmFtpFMAXfu6JoL
OIQL0/vwjisAIBu7BGiGPdND1PJ7JxaEUiLh8VqLR/
yzoB6wxrSgBHo6H9uMfJIKQn8B7UMn2RCZY84ttjm6cXINg8SdgsT/
KacGAXeoK63ALSmdANGk2B+TKh5qUAadGgGnRL1JGqPKqIcxC2m+box+vHZ
OxzEtVQuzR1Cz4r2ZAGRzCyQD13Kmhorg/
1zgVQklvqynKzvU1w4+6BEXeTJRxcLyqJuJIi5ixPyAhGbAdGWIzPuQ+eW0R5Wk
vC0q9G45r+Fv3s0CAGLkfOQ9UELms6gICUAwMkh3BVEESMuF8UW0/
IXNCssh/
pwEwAxQAljq4KSDOydTkSPQE3uJHbK4aa9WVnP4zoIzfFUDZPNDQdt2I0yvFKF
T/D9qbCShela/
AHuhYGWMf5Q0zf3qamyH6qri4DHgdjKRwWDM77qoZUfz5AHJk6yO5VMNxipa
bvEr+33l0r+Q01ys/
ERYhYBO5mZULdyaKBqzJOWAA+DD4Ik4LxPJAWyMUAGBh/
o7kfEiYyKc0vlP2pcEgGI4J14ZhEkf+ZE6LgE4SELDI7DECC9eQilzWGmoTlZ/
BqpxQkEIYPJbufJa1V9FoSqa3Kth1mgzA8Ef63SUMi1zmTlzu4LY8AtTZRVOofyQ5
x2GFV3ud2quOh2ww+MjBwIJanhp3rM8WvslBASheW91U9hUWm+i10tldyzsF
3P3ctOYUABgYf7UOMGAcFWDqqHCVQIiQ+LkTBVnYLL9/
xYVxAXlS4vcwnRV2cXygW+fiCkjbMOqcXouZaIq5nE8ck8GYhQCfG1NBgTzORX
roeEGeko7ug/
WWJvY8Xx8oo5jAVFBkP9QPJbKtBa0wj90+PKt9zFfrfleEfwinMgCVqMXwq+N1S
d6fM2y6WVVeYlEEk4kVkvdogL0/hAbhMIKp/
cKyslexXQY6RPwq4BcNHALEK0hw6ZCkGtsN/
uJpePFyOo2IVoiX3QxjW+ibpBmRAE4KEBCgDf6kK5jMnzJyKcADReFaYUjmMbLk
raqmpcokmszj8J8M7G6CjYRJNQ5cQgXp8nP4UQlbXdBvHA/XQLX8ICUXIcH/
eu1U7uYsIJ2BkXx7oBOfdIIoxM33LSQw8IpMM3s6mTsBIYB+wgtUxnhFHBuM8p
4JvahDBsAf6wAOQAxT45CwgpKC8QqvJgI9jFppSIuEdqIdaj/
hnCYMB+Kes20jkfkeZdVpXhMAcyqHPHgcTTNiCG3J6A/
wC6a96TPhcs9qpddAwjK0XjIWcvgC04v9g0BcJ9qXHRwzwwspxkulZDwk1g0/
LpSBW9lrmXgkKuIaB66yCsbnCopXlZZy4ixpBLSBQ4AHsB8Y0pMgOgpK3gPBNJ
zMOoxQP9ReVx/qGgS8mTnPCx7onsFtqaJZdRe7J1attV3naJJrM4/
FktQsKJBu9rXVbkvJ0aORlKLvgIE2fzBMlPa6grZPj4HRyYPUE8oCpS5hOnDqdiwK
EmwJuljHxjwCMQSKtOWCuTDgBXFtMhVLXUq/
0QdwWGFV8u+tVTciyXFHLR5u+tGndjn4Mk5CYxQKi2poOCQUivXQ8ILQ9Bs5ry
zsmYlhfPctDSCAEgA/whwAtgx53p0GlhTMWcBD4uQxBVjgbH9/
IGWawakICgVBETXaq4LirFjM7jD+cxQgIKXXW+tSzE009OtU9i4/
FYgMJ+HTERiLhiTIwJuyNSjFyJoWIVpWf2Q6dY/
hNUiuoWc9eAIBQAP8sgAQQ4KCCVRo+tUNOmNKSOCY2TSQEEOJj4wiWvyIgoG
ApE/ZHQFrZrGIfywxkAtKtW3PdFJzmTFSSsLiTs/
NtkZyOApRizIFLJxbhPJaLjleOzFaXpCCOuXhCJ/
n7kBYRgKHdEH+mZ4tJImPxFz5YUbxwPc0SV/
CHgEcBkfjchhaOhwVnfRsC8RINFyGIKHgqNl+/
5MGBa8eS5IjXC6JCcXrCCo+eEqjPkKCCW3AgAoAP9i+QMwrwnIDZYkc8eB6EK
W4ggcEcivxmkioVcETOjoCTEEiYkU02RAjvT+6JADmi0i1S/
qhRJjniWHmPtQaerScfGAODIO5JmwHgeJz6uoQEtKR2+MW2/
WYhTWl054OA6bTJXNggBhnAGv9pjAAmRIg8LDfonwckOqcRj5kcGww0MOcxz
wht5HTckbFKkB3BAgHBcH4gwhmIJFOk1Q1y4cDyrdGX6TSAalTuPxg1OwDgo3
Wjb/ngKWR1y4IAJHIkf6/
IjGETI5S9VLg+I7Jy5JDPDyYMTSZRJx4hTWzpb3R6ewqLywJug1TKUOIoAQq8oBc
2LQp0QTYyC/
NyHBHxtp17HLcUSEaxBMR7IPG4p9Nsqn8ZABiHC6AHuhBJjIiL9udl4oBbbbsP6
wANgYToEBIMfep1Nls/lW7ZAQbUAFsaclYXZ2o477Fy09wCAApLjJx/
UBTOuZSphA4gE7eIIFUHIr8beJErOFDYQmRKl1uBTbkDU1GHyDqgtjNE3OwExF
zVujL9J5GKHqdx/
vB7nYCRTKKvayg4Tl1KY4kPMJIj45USkCaFmEdG8RJVB0A5op2MQ+SS0enXBD
79diIuMFvQbinUsJxn/AHkhxNX6oCiCNimIKLMiSuWKH06oG4/
GDHarSvCdAupI0OMSHxciYKFUYWf7+STWFGqpypUaMSp7T4KkMFnGuIw/
vW128uFLEwBtyQa/gg/
ILADASKtpWR3cIkERgoXQ2wKD6Dj8g1OlxRu8VTphE4OQRMI5oA5ZP7cQ/
JhVvLmFP7N70rteBN3eECnXMierSJZej175QGA4NQm6BQd0IJMZERzSQ0R3p8Y
NTsBIogDU2v5iRsU4DRMr0yUzY/
22MHH1SNz9iHNABTO2OK8tAhslAgoLttaFefnafU7CaImBgJiMm5J8kEAGIcJ2r0f
dCCTGRhSkk3sCkgLiX/C3zLZHY4Jkm1WBeIOBm4L0+Nnyq/
KFHqNhNEPAwExG0DgrmwQGgTgi3/
hYyDm6kTGqMuYHzOkwkkaFGv01wXiJRpM7teH/
AAs+YAIALyaBVrAt3ZkJfOeTdlVwV3ooSGGUiia+bcf+BO1VQVmUTbPBXaaKuH
yco+z8iu3NqFTLIktFWZc8YMSlAqLC/wAA/szArwhMT5QKcjNDkn/
bh3zsQhbisirecHhaC5LsRh5QxmclF6+ld/
KfKCSyh5VnOQAVVvMtfU1q9H4AAolAAjyQKbsf/
CCjZZoDHSOPrL+1OX2NxZVBb71QhkqlZZCRJQVQbYKyjMiZSOYr9dBsOq+0bO
HDgankgYmyPbF7ZBxsuiVCyQIjFfJRBucUdcdejYO6JkLP8O6YftAoK91/49plFD9g
UqKxxMv+Otlk4UXZxNJR+Wz/
AMTI6i5rVcFGoDywMg1CdWzg8K1vJGjuSHT7EBG/
bwn5qtZwrQcRtoAQGAoP+A0ZGZWgeBOrNsC7QXqvZpeF2ZEtF8ftA+AXhVVi
0FasZdkcloJKClkUWB5fUuwhvZEHKOZarRKoLNCVTjn8VreZhA4wzAP7o5n+Jx4
U11X0w8QPGL5Xhi+kenyGpRFxAgfXVNQGRAdmjAKwCsIrskRuzyiDbar1aKjnrV
61etXrV61etXrV61D8HAT1JAiDdHlWhzKwisAogM/OaJiIXECQWCgH/
wA1auBo7AL0petL1petL1petLIzeC9KXrS9aXqS9aXpS9aVDHR3BREfMBGS9KQ
ABOQTKJChMCw5XpSa+kgCI4NETDjEw69aXqSAIjg0PAbYqLAOmY6yGOAwT8I
8QjkoAvWl60vWk79JBnF4J4yoEQWIIr1pHhuuSyODgBySvSl6UiNCYlxijtAJyTYnv
pL1petL1petLA+KJ4pIRwggdh7NBeiB4AkwlgWA69KXrSCIjlQxplPAEL0pSYG7IlA
Kg4BDr0petL1JepL1petL1pF4CtiTXr1pelIhQmJcD8FcDRWAXpS9aXrS9aWiPHin
RmIYBetIqN2AzPAOI7kMAvSl60qGOjuCganchgF60vWkCEehXEaOEmBC9KR6w
MAGaJaq9KXpSDCPR0FXA0VgF6UiKvRIAiOVCiomYgyK9aVJQ4EmJb8sBBC9KV
DHR3BgfEzdLr1pelIBcFyHBidhGxAr0ZerLfbvFQ+Eey3uJC2xwgFs1y2K6Aqt2ug
XVFKrgjpaILM5lEicnYmAYB6FYpyakkBUB7Rx7rdw4+EJlhBktJU5hq9XHgNOAp
my3o7/
AALbr3EBFAtBVF0ajNE6b7CpcEXXZmmzKcSLEwExTQjFHfO4YoeEnAQ3WBhat
9ujssPiORbwIavwGp7XCCDq0mRMxZD1b0PEI4LRwS5ORMDHsMTFWZ4TgbY6
tHf4lpXZHcr0W7yHnikDlbhwrFxJztWgUIZwuNJkj4mdnJBwQTygmUT8iw6Igjnc8
GI67/kKnaU3zmbEwfZM+crAc8fqhZweo/
UMCmu5sAqoKAXCwQbLSrkBb7diCUIjKDPTIMpuinahs9cqVkYAE0mcF65euQE
O7S4skb/
CAWzXLUe0BVbdcifMHqbk6sJyhuEXWhovczsXtoC8xTi3m6NUMgRIpgjMRmEs
mNxRaXeZG6JpwZM3y9Hd4BbVeiLYmIV7usGFA0GJjEFhXsUQj2s8I0jUOSuouFk
X0zIVDBWDgraYoWrZbo7LCJyMw8yeoXqo1AOQgy96HApqfAaztRBaEcgjWEBiI
viCPnDgmcG5A/
Yv81AjrUd3iWldkdyvRaEOXKKIgkxkRBx780E0aryCDqGdPuE5KW5jMwcAU+wp
zDTWScW7NzSg+xuT8Z5DzCSrCTBTLDaITgDyz+wlvNsmsCALhgEUYtq8lvt2JR
LrtR4Na0FYAYx1IQBgwbAJgBvxGUgAwMMFtF/
GDgWxXLUe0BVblcjncrnqQf8AjYWlAYY4LMKEhXsIqq3gKAXiJXAXLs4t5ui9aNxg
EfkaoIoOMdzpNxRDFjIwKC0w8JiaLc7403y9Hf4FuV6OroZSIzWk7IykBp6I8rM+i
Ai3DABDZU5a+AEfnWwinsO6RF4iabPpC2uKFq2m4R2WET0PzCEna5TU4P8Aj
CirW+3o6nwGs7UTjn9BEJ7qCKB6AmKWQlKB3lJEQAt1ZIKtZlMCBqpsAeD4MLn
Cd6Q1qO7xLS+zjsZ4tqFdYOlYgs7E2Icw5UwiGLGSkHA5wVZtNYrJPaG6smVNa
B56mDLH5CEZnhOUP2AWwa64Hg4B+WkJpnVLuapWUJtAeeFOSPyx+wr5nh7
bMN9uxGvFYCSUCsKp65Gxw4NJ7OLW8XwfLkEaUY0JuVwcaAWxXLUe0LVtFyMf
LgiZCQgFZyOeQERRuQLwUUh9CYGNGQEYg/
vFtN0dguERCAEaICpe3MRNOAam+Xo7vALcr0cWQ5OSw0Vnt2AIVzWQkdyE0
KSykgFhcZLlSIy2DEIOhiHgZzm+oW1xQtW03COyw4ZmpavDeLo7RejqfAaztRF
FwAggqoWi1TBRAjVAgQUHHJpou4kPMsgy+Qc4zKIyy5BUQcE/
LSGtR3eJaX2cdjMnmM9YE/
Y8wKggutNybkKJ8Q4cpMpfZB8gpnxPOgzydycHfN1ZIKtZlFmSgXWoA3m8qkLF
RGCsZfHJbQgO4yJg8/WDgBsC9XaLt51hvt3i3C7is267g3C/
jC2K5aj2gFtFyJKhFXOAgG0+LgojeeBxhQJP7gIxwbFb30rf+tb31p84Hwzvctpujtt
wiMoqBMCACUQ0U7G8xpvl6O/
wLcr3HTUDCDMIAiuUIRpgI7sDGqZuo4AX4iG4XLa4o46dlHdYQpxTUtThvF0duv
R1PgNZ2uOVYL7oEbYDlUnzeCDamMS5o4FBjktEKw1aO7xLS+447BvuTzlWUx
wdm/
UEwhUbOiupiCXgbudNU5kYXkqYBVcDnKmJhhQgHmQM8d+M0lLQdrkfkLLKIY
Wo2LITAwYg/
TFiIJEGREfMKfxHfbsTBHdwsf1Q6JoE3qPwbNchtd3BuF8AfGwCscL2iDAHt1s0Ati
uWo9oCq3a5DMioNr4FNcOYFAghxMQooSxfYCMI5xQJRmdweJA2w3R224QElOF
WBGp9V5BAjXOPbuYiMmBCVjcUMy9wt8vR2+BbleiREdEuEmCx/
UhaNufmeKIaQRCX6OcdEdslg2ddRARiw80khgrkHBgWliUnzl5xnAwRJExJdMkH
PjfMWsNE4iAaBAhsCIQ+5MDfuEYmpa3DcLo7dejqfAaztcR/
Ayq6KA0CYAWQc2360W8p5RVp+A8LC+zC1H4YCYFatHd4lpfZ8FjPdJvyGjGYm
EWZzzCmJ0AWlOFeuBRW3YJimgAZZZAMz7hgQBm5OCpFGbdYgzLxwdOj9kWo
uPd97IjRYDRcbYTESsTd7D3hUx327GneMzwMzOftXAxaO7XIbddwbhfx0YFsVy
1GAVW7XI9N2y2KQaOkvKJSpIuB7KOpgW41AVKkKaHbzqhCgoFdyFuQtyF420L
abokffuuLKcFulRFiK1ItJuhsoIGCMkCU6il3hOpjHIwBhGyMDISW+Xo7/
AtqvRMPYLGZMIWO9QMLwOaIaYTB2WSqKBF9uNaEg3hPVAREXV3eqB8IGAZN
1bqhUxj8ycFODEQGlbI1/
UJFjERAzrO9olMFumqRNS1OG4XR2i9HU+A1naiZnpiG9DfYsBL94OAi4LCiMD9
Mg1kpzmrFk0XQu8di1SO7xLSuyJ7hIGZUkrERiIxFTS4qIyTP3DySzjIST16JvrIcte
BgLdYMHNsX7osmif1lKO43w3u9Ckd9u/
FLdrkN7u4N5v4wcC2a5bFdAVW7XIbQAYg2ok0iTaeEAk02SKuIPOnHj3m7jKdd
wCNmQyEAMAE0ziuUSHBIks+1RH+Zb5ejv8AAtqvcYBJYTyVYqFYsCIAEGYKce5
wCr64cplNNmdgxeImyWFxDty/
rEEEBMAsEai1eG4XR2i9HU+A1najtsSh6uye42FDjZpnjDQLWv5IRwkuvDIg7jzo
M6EYcyvW162miDCWamIOIYf0cFbvEtK7Ph2zxjco/
sWjN040TE7DK6RegP0tVAMGEG8jvWasCMjgPcKAgAbGFetJzwDbpAtzETEKjWo
NxvjkKRGXK8pFsAtmFuwt2Fswt2EeaRKwxGuleE3ITV4OIeAVXlWh1uQmFYloXi
6T2F1oTswih7ACOSIz2CwGW5CHo0QdYABHKA4IjAOCnCrWby3I1APZkiTAvOh7
ahIItJ9AyyD4MRZ0EhbALZhbsIF/
JEBzB9kaEGwGHkgCAwUCm4fMWIQC9QdAcSWhOSGGb1QrLwbxyuEGiTS8tG
ZZjRC4yYlfLyy2YWzC3YWzCBi3bRzmh9kSo0gegIkYgzEG1PRu3MvpFoKAgpg7
nUqN6NoriAD6A4bU+gBpJuDGEhIYuqYgO8PNMvQDcShaRYCQ4KiLJYJNRbsIwD
KvJRZzPLyU3YW7CNaAFww4Dv3vKSA7sIooSDWGFHSSvdhbsIKKAiYUWLdhbsJ
78uPFEjPcmotmEGpJi8JmrWKiS3YWzCwmrlMjZQoHbMLYBbMLdhbsLdhbsIahH
gF/
vG0NbMIoGhckGRsBgEQAiYFPEcNwK3YRZeGyEwo4Q2rkQ5JlC1bMLPduyaxK9i
1wTC3YW7CCxHztgwGhcALdhBeCRJaU0Kf+4//
aAAwDAQACAAMAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAFCMThSThQBzHkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAANHBjRyBAAEPCBPDJCAARXDAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELAOIRTgAFGEMygCxA
AAAAAAQAkABvBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AEADU5CAAMPNaYgCxAAAAAAAAAAAAAAAAACEARBAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAEPAiUjqNI7gTggAAAAAAAAAAAAAAEMDJLJAAA
AABHBzLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGcJvWwwSBgAAAAAA
AAAAAAAAAAAMNDASigAAAQRBIAAAAlACOAAAAAAAAAAAAAAAAAAAAAAA
AAAAAADihAAAAAAAAAAAAAAAAAAAAFLY6xRAANGPNzAhlhIAgJAAAA2CALA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAeBiBKEG+
xgDRAAAAAAAAAHB3OAAAAzjRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAEbrppRBSBgAAAAAAAAAAAAAAAAAARISuAAAAAJAuAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCM
6AyJAAAACDRCAAAAAvAyJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAEPpCaagBCKmAAAACqAgAAAAAGBAJAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyaOAA
AAQARNAAAAAgJFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAANCYaAAAAARDADAAAAAWBzAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxzDiAAAAAAAF
AJAAAAACuyCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAeFAAAAAAQhXAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJFDCBBaCxREBAAAA
AAABLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAARzCyAihBgwBiAAAAAAAAEiJAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANIGLPDAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAFHHMJgUT0AMufPuHHKMLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYDDQjT
TxiCHzSXICTFJAABDhBJAEFwwYDDMAP7kJQoAaRjzjYThAZDHGAFCJAz5DADzVl
YlKqE1UTAImpG/
czgw1BhRAfUaALCDAAWAyGCAuXLDjSvQqlDDTLvAoSDI0pAqABDFXAWABCAr
ALQhJfsYApDZhsTripAjLALpABQzA/
UTXAjGJMDADFHA2XLDDQCWoXAhGr2AooAopBAqABSxHBijEAArArAniCTCfDn
gMCAWgpRQjALpABRhA5UtQKIEONIAAxVPgFrXLRNorBjZctCOhCAopAAqABCLr
GA+BOArAlGLZziiqjEqRAKiAPCCWAmoAGBDCrOhnPdCAARKCBTqHwDVrCCYhj
HQjHPGahUqDFCjAKDgCzVxOzCvKCCqJenQBqZTSKpEAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/
8QALREBAAECAwcEAwEBAQEBAAAAAQARMSFB0VFhcYGRobEQweHwIFDxQD
BgcJD/2gAIAQMBAT8Q/UB1QS/jz4luq8tYes6S0A5V8y+rlhLg9XWKt/
S6hzdZalzx8y0TsmBl7jtpCKBN3720ZzJt3wqwl56EdbOKstIOB/
ZfjrpSKuL+F4XkzZPjQ94i6HP4hnHvHKPRgLI8/
iXRvDGK0FH0rRo7phwo256MErU3Z9P2tqzmTbrgPxD33oaxto6uk2T4AS87zfU
FaEvh0ZsvxSOsHVmmjWX6rz0lpHPHzLQHI/
4FUIm+Y7ibrdJieBuv0iI0YYWjK1OvrrBBUt+tt+cybdcB+IG+8aGsfaOrNk+FCXq
eK+l1HgOkta8eZeAOekfbOS6Q116GsuieKy2jprBaCn+IPDjtL/
eM2q2j32ePRirHY0+0hlqn6YqrDiy6F4Yy+T2ibZxq6TZLgEbh6jLeulPMuAOKfM
bZOrM2ciXKrz0lpHOr7y0pyNP8NszmTInfSfeOktI8eYVVV4fklYFQY7NNIiqMyq5
mTKuuJmfoLLnOCaVcAy77j/I2b0e6xy1z0IhUuj7sFdekuAvOWEefeWFORp/
jtmcyWmrgPxDX3ihrHWDqzZvhQl+nm/ijVUZhio36xGrFv1/
Ie358dYnOiQE1GYLwFz7l/toKVllV4q+8s6cjSBT/
AC4yRxSbU8KsDfehrE2zq6TZnhQl6nivqC2l8OjNl+KR9g6vtD0jVgrq8/iO/
wCvxGXzo6TFmdj31lFKO/0p/
uhw0glqn444wFn7lERUftoFeiQOx58NP19njiywVcD+TVDpMnHLWXU66UgvAX
qyzrpNheKRFwc6+0fQNWAuPQm2nFfiWkdIJQU/
44yBKzjGzPltiI0ZWrhmZMqy4mZ+NDXPMmTXJ2xEJRINOFtbfn9UqFZrdDWG13
GfMPxM0dPmDunppMyPNlkEsKcjSW/xjW/PjrEx0SAmo/
bys8AufcvxTlUZfht7OMtKlG4OuvX92tLywnWviszU8tYus6RVwDp8wrfN3zKkK+
fxxxgLP3KUDY+eEOvRJVjA5bd5+KIKjK7jbGz49Fpfcdnx4ggqftqCtK8JZPzQ8My
NOCnzMSF4qxdnozNnQlyq89CA/N1hSujsbazYY+8yVWYC59y/
Gl7UlL4jJ+5wElEhJg+fzu/KvUuJpp0iJeOXPH43dIYSo/
vqFwuTshJslnJ+7JQjgLnufcPxWnUYvf8AHjrBRqQaX3Hbx3+fyyl7X53xwFElMOK
uaQG1R/eWUOKS7jzGLUcGYKtpUpt+0r+SAox6iwzNnDT0tLwfZ16/
lUFsjrujsqMukMzb8yuL44/u8YF5GkuQ6Rf+9ZhYPX/
hWMLYydGI0KJET4luHx+VH3BzJk1ycmVlfMza5mz/
AMMCpemPtA0U2P5pyqMaox29nGBP67paQf3aheWN6msuA+8ptJyYjary+Y5T
7QPk+I5Y6sXsO+sRZDlEz1WKDp2D5/4OAqM3CMZDJ8lf3SVlhekWyfecVyd9Yr
83WfUsdg9Wcbr8Ti9fib56/
Edu7aRDEO1x+P8AkdjV8YRUM3wf+KRunUidz1NYlcdSXAfeUNcy7pBw4syCv3i
0nwL5iln5fMDbsQNvpymTXfSKW7If6URkn1ui309o3j0ukXuybggtfoMr5+jpN/
6Ok3zozeujFsja4fMwtirv3L/
82z5GpXObj3m4946gU1zm495uPebj3igBhXOPaODvhsqYvaOaVpNx7xCCqB7a
zce8VQZgDjsHvslRg05xjmGWsEFT13Yi9Bm495uvVjlKW8x+YYWo+gyBrW8VJ
B47IMA121gMhWu3KDwa7azce83HvAWKWcvTBMWwfcIhwe8b5gYmsAVLRGR
pTbAwClLV9CicFM4h0qjSmM3HvNx7zce8LQFFc9+k3HvGVKVPQABwrnNx7yq
wKcWZ9C5mehu5eYVcT1YYWGKbkL0m494Jw8cXas3HvEQLgxCdaX4Tc+rD+I
8dlSCTFeMYmacYUwP6Y7H3mENW3CKwVXxDZivG8EiqZTce8EnPznKChVfENB
V4ztvdlSwqFZX/
AB8xMc00tbvKv4+ZuxU6RLbjS0S+4UtO8fLLHFnZe56dme3pvZgHGIEqsH1Ry
pXrPuhjKrvPc9/
Xt3w+ig01NnzOjZyZXRqfPp5HtPL8M7R8ztnxO0fMp1dL9pSiumNvRM+odUjhK
rAtUcqV6z6IY9SYXPcnbHidseX0798sr9dNFJX/
AB8+jYDru+ZVWKpspk+nae76WOB7ytYVCu2A8QtshmzaPB9LDxfaVBXKYvvg
5ZTtHw+n18PTtiI7ThLwA0m+PsxNI4mSM3sLDSze7F7QHeWktABSU0sYHAgA
YIy0AlZUqGYe5KSvE95TyxgcCUBzMD3fadt7sXqw7pvXVjuVcfL6dw+WXOL7en
ePlgtEObrElFPN19OzPb0TR+2IBnb6bZKp2jINsYuU2U1n1DWUBYJ4Pp2GsJOYdY
kc2nk9PI9p5fhnaPmds+J2j5lWNGVU04wjhHZ47CJRyr7QGLVPQtqq+IyjaTtjxO2
PPp375Zd4vt6+f5Z2T4fTtPd9LHA94jGqpSG3QXgmyavAi0mxhcOGUwVxGr9c
pRFbBpO1fD6fTw9O2PShC3kfErZk7nxCDbVgJtqeZSHJ3fiVl28n4lNb2OLN7z/
e0q6WA+3tKu7+D8yoUsxNOcqJo/
SZpEB2idt7sQWClM9tZ9p8QuuYZHp3D5Zc4vt6d4+WCArVhWxD3PTsj29GC5
Q9sYDvGMx6GxgnhN+
+Ps3llCoKNM903bqRJcD3egKxDWIlp3Y5MjF5fMxLImGOEaCpV3io2C9vmdo+Z
2z4naPmYHBgb2ir16KV5el7D4GHjxBN4xgOobGADUb4g5cWkfJE7nxByRwY4q
mQRVK5xyN3Hr6+f5Z2T4fTtPd9LHA94jGihWL7pDVTFjXbu5TDl3A5/
HpXJTZ9IiBcgIM14fT6eHoDAQJukc35nL6wVdIYLrEQyf5FV1lIN3F5/
Eppli8X4lWdGJDUpMWWcHnbv6WyK/
MYu5Q6+glZwyHazf8Ao6Tf+jpHFjDMTP0Y47uTt4RUCmLfl6NSu7k7XdBYKNW
8ARVp7k3vo6QAFWh7Tf8Ao6QYKwKCps2cIpRfR0jWRtftYK/r6hRNj4Zv/R0m/
wDR0jeQ2uHzLuVu7Y2WFdkRo7yYiXnYlUZwbG+F1Ao5OyVRnBsLnN/6Ok3/
AKOkRxobXS8I2CVwMNmmkRovR0j2RtftZ1Eu2N/
4sSxqNpjBlB9HSAiobM3QgU9N/wCjpAEUcfLDUDY+Gb/
0dIxhRp7voLUcCw745MYZjti0P3CHX1NzpHK2gbG7fLKKCAMcSbqNbSuFBt0jKo
oNMHMd23zN/wCjpLCx0zf+jpN/6Ok3/
o6QIEo0IKMlyg58pTgUwK77yuUrg07RIYZ1Gxyi0KxQPF2OkZ8cuZkcYQxjSpxM
Zv8A0dIBVGmPGKqpwdhuhVUWuU2//Iv/
xAAiEQADAQEAAgMBAQEBAQAAAAAAAREQMSAhQVBRMEBgcJD/
2gAIAQIBAT8Q+pqIxRWV+FZRH39RGKK/GMjK0oj8EE79rURiiivwjKKxBF/
JoNtX6+vqIKK/CMrEEEX+NpMamJz6iojFFbIyisQREX+Kogq/g/
xicE79BUVFKI8QQRf5KiMUUV+SZCR+TVxOCd/3Qi/
z1EYrxjKKxBBBWqDvi1RqYnfsIxRXkZRWIIIv5v8AGJwTvi1RqYq+s9keIIIiL/
I1cTgnfJqYv195URisd8WqNTE75NYv19xXinpBAx7QnfFqjUxO+T/
GJz79qntCd8mpif75NXE599UNpi75v8Yv15NUkE4W/d+iIgSS/
g6xvjyao1BOCd/4d1/BqCc+9qKiCCNKKxJ/F+jj7uIiIiCCCCCCBJL+T9s4/
wCMqKhhezn31KV/hWVlZRRWez2RkZGRkZGJT/
5ttzRPwCdwnRuYbi03ML+QNwVDcFQ3NFWNpeA4YndX1fAJ3C943NE7lniX1jo/
WG4KmOBO4Xsbgq10bgmZ0JXCU0lRKDODjOMbmmoN8a+YqGoN8a6x1hK6b
i01Bvg60xKrSpCUxczoSo4F3G+Mb0PmfGLmP0dQvQzi1uvUjG+BusT5OsrFzH
04x5c40u6XRtIg6sXDgXdLuOtVihwLul060zjeN4zoTg3RdxusaDex8z4xc8B9F3
CDcQunRwNVYvedCnyehTH04xiXoaUzjEqxNMbonsabZRIsTUG6dFQ1OsdY6P
WdwmhqdHQnGVLFzeNXM6EqP1huLK86sXMTUKh+0L0L2P0P2JRDfGWnWPuk
9kZHpp04xpnA+EY+EeP8EZQlNfCMjIxKDTIxKCCexCMjKF6GIyhKDVGmiMWox
cyMXM6OhKez2E9417FwjFwjIyMXBr2J8iCXvHWcD9ojENO/+Rv/
xAAuEAEAAgAEBAYCAgMBAQEAAAABABEQITFRQWGh8CBxgZGxwTDRYPFAU
OFwgLD/2gAIAQEAAT8Q/
i6vf35xih1EP3kyF7v5iGAd2+UCddV+WNUB4ETnFP0EyFlVmrzcUEoUhTtHj2IO
9C5UDjSv5pKg598SjKPJo94BLPwD3VPSCOn/
AIRzU0qlT0NXDrOKPb6eEho0Ife4fkfj8BUQC3ib7Rpt2tA9ic6PM/
4ArFIRXvLRZv8Ap6oZRPTS+7ygkUI6J/
P+bZzOsZKnYH84oK1Lh1EyjnJfAyl8FIke7EFecBBO0O5tir/
lFDP9a6RRhdbF+yGrmxm9T+bpARr9ix/
kkz0seV7QoPuwd2Ev4VLQC2BhVNQ3n2pOem3XX8pNL0GWKV5FF4aNxrIxl20
9a7ySKJreV8YECq0+yYPQSBIGDT+mKa9ryhFQAeuzvJl9mu+yvyboGT3EpzWk
Cs1fd64REa8Qr+4izJmyrWleTWBUDZpOSfy51oIUh0gp6XczQGNHviHUxuBAon
iD0npPh/
aZZsipFbrxsfyaIF2p9p6AdPvSGkLiFYBYpwbNeyu4qjnAg+lITm+zxzTSEVHsfnA
oLGU6PmPoTH1fQoXrkf10OpqNR8JG97c83F3hytRdb+T2rfSqcL0V49LjSl7jSCU
zsH7i3AspvSJLSwXtqBeyxVbX42mzcsPYjb5l+mm98zPPay1bFU61PN7/AJwh/
iZWXWG9wu6HGygwPQ/
ylDbDV6IOQsyr3tU1cVaXo+ARKQ0YszoizL6wYtXbD/
H2AAaq1AFULQKdZkuwv1MAdgkfccHDdqTQK2kvrbbB1fxC3TQsZ5aCiWJr3im
9u7YexEE2G37GbmuUH0I5uW+XikO5X6gYhaAUf6N3XlUnlmZPSZSXLhD5GW
SDgj4CjRm2/SwHWxezNk/jChqwO/
Pc9rgVuNifEtSTQQ+9zJgN09I65tiEst1qBeyxVbXjBY7XejkR8U2/
nJV1O5P2gtod1bABZHd5zOXDcfFSvbpx/cQeWaHxpKD/AFjRrSi16/
EmXWS68p4vA848l0bJxGMhmRyfNP4kxOdX5FiVc+L0sBQ5yn3bi5BNQ+iBCjQ
fq2xVzHhUi3afEd/
ebESN9ECKRNeP7SBryOQpZDgQdWMps1BD7E1xub5TDDJ9K/1AAA4B/
tV+CAAeCMfPGa939I/DErkTgjiLZ1WBojBzmGg/
Xyfwt2RapRG+Qr2qzMk2cD6QSjDgb9kAY2qVhav9qpOaglXXEFajlw1HoS7d0+
mEQHgIQacSP0EXYjb5FFPY3H4kbeir8/AoK4hfiDUXyD/
TqGrDhPEQ9FiFLbfFkqShsV94FfK6P1G7zpPCLyfuSAJ2slcbY/
YSpFnCD2OcAbQn5iGAsSuXu840cq+SPEcTKotiZIwtuOPc7fnAIqx/
gnMdfzLBmiaqXSX3ACgfe5UucBT0hpGEXzYz8izra/
wnNyaiCrtgVLb5yx7EZvYyHWoN23cYD7rOfSDXLQlfVmoDIA9ammfkP9TQibqo
EnjW19rm2FX6mE0/F5cipvTSX2VeEzLDNmHtHbbufgCkVNMbeoE4ydN0NI7/
AMkOXJ94BFWP5E5gqLP+zlHvFt9dDwZjVM65bvIOiAAOiJ/
vUFUAREajW3tcT4GxHvQjjgu/
WLKVtNevTc5Wx+1cUCfzvRF+258rKizr+9jY1GoAfaDRR/
RscsLrviclGfCH+s5vKVEouull7XGUY4frYIgDiZ0uCl3BDkYVEf8AEJfVOxt/
w9Sk9lPLjFLlI1n7bBHT8Y/8wOW+ODHan6WTts8Bks0arfdOUvKAaw/
3SSnePPkImRVTP5+ZaUbr0MVGLN2+aYfMdGydJ0FY+P8AXqGrAL7S82Ohpa/
SIIETQJ1uWgo4qzIdsw377Y82Kv5HqR2dleh8Efckqq8+I0VXHO/
E7w+o9TDTUQZQ5E7eGM4iNC3iqCwrR86cUkXJduB+OiIArEm+CQfQ+ABZw7
H4YyYDAeYDg/yhcG6hHWF7vdKXjYQ0aT6qUJ/HumKwrND+bRj0hA9iO23c/
EBWoo+8DQh0Bp60pFiq3N+MAlntrCgnj+3wEtOc+RLBd0BfW4IGnD4E8aDqQ
3jZI6Qw9Z6f2MXT3b62omng4+UDQ7HEmsvy/
YT8a3dWIHUSPZ0c6527l8CMXQ8ozA1QQX5BP5FzHGT1ZchrUFRam5mHW5b
ULiJH0ebM3Ky2vyv4AVoTkI1noQA9g+CMgG2SGd9VBAOcdxawSbePxRXQkX+
qN2hv8ESnbCCv8HWafZgM8mkbY8ch97wAZMqxaIkLyNsy/
XyfjQRHSUP5+XnwHlHPKlcicEx0p6HzAcRizKVc0+X+OFQRqF6sdRxpNRFqq3Q
dblkLNFGDqLti+MfJer118Nfmul7ABHSlcZ3kV3WBOcU+JFr5+TrUuO2PWAZvQ3
0gVs0KLqsBG+iI9idGw/yzZCpHMSc/M0+W/
wAols6pExFYpBsY8gXEPgecNqIWJ+MYxL4PpPOPLJXFGN/
FhUkZkLZD+LK3VElBC0Kf+QvAHgyp95uXRxIfZaRE7Ppl62HVeYeKDkfMszXY2
wq0/N+LNeXliPHeR9x27hsMqKW/6CUAHl+UzkGo/wBQMAnAz/
TKgvHpW78ka/
rZ7cPgXyg515+8hZ1YgdEfxtgqhZvthvnMHALxMQJMqRaIkODgXl+vk/
iZhwG6I8gHzMpRa+yUUWPOL/
qO2nzsctTts45aW78ohQRoqV0h9eWH+xL9niy3xwYoUzQnbZ4Do5o1q+4coC
Vt8A/
jP2EozmFLWtcaDoqDYkGo8mTX8TzgAKsf504UBqsDvltj5ibajs6ldFvQhhC0sfST
ShMVPU/HXGIViQGska/nTn4CiZy9HxsGp+4Hijgn4wR/
pqXBOCRdk0HwA0GhnnI3c8GKa1AdEf5ojJdQg9WaywX9AypLaUE9YpzeCjpRG
gLf9c2x/LCVfAkHNC/mrJlRFsmfn+8MiFYmYn4mV+sQOok1aDnnP38ngKJSaN/
UBsyTudDf8ahDHgvBGZn46z9/
gttXJ1526Dgovgfy9eaFr86wY23n3UlzukX7Q4FNlUUZumr8q4DKDA+h6HxBBn
miPvSZG3cnyYYLk6Q3OJ++XeYK/
uUHvodbSaudVrzNzBoQrPv2SXdFkLiP4tZqQY+XPgcTipKaiONJtMn9KQOEII9Zy
/GpEpSOYkoM+z4v26RyKqkckTEy93d/4GDYDIOa4o4J/
LCDNM6e+YTWwIkexucZFrl1ksYqxz79SZ04cv4EUsbzEU59w/
KABT99UFog8dLSbC76gxvlMD/
gODB7okelDBFvgPxitsQ+s5yh2T5JuOLco1NDxDiMKlzVZvt/
ICsh0fmbc0fyKvIYkLZNOz4gn7+4UN/54nI1kDZiuYjU/
swgV7tFUWfSa4eInBPxpCJa9bO5yi3lrntwY34CNSMVzZyB+TbDlzycpxIrl9HQ8
E4ji1gqPQQg44WrX2c/
54CAsdSVPJeVczY8onXFSUaiMBMvLcg32QLUcy64oOCfjcmLRy3xwYmVXZV9OI
WzqsDRGFUQAy/Xy/
kWmC1fMERWa48MjuwaJxDiMLredIdf+eiILkJXznnE0PSGjdcSLBbuByX+QYqS2
BABU8R9jEmJ4nRE4kZyhZefB/IH9mjquAeCQmsrf/
EcQWgriEoAKDSvjz8v5uqDGqPymS7aM9i44EexVB225g6rGqq3f9Ue7sRXrgRI
MQgs8ENUfynCMiFiRM6Zu1fSORVUjkiYs7vJoTbnQBFCOj+N6hrIGyTOBvWfvxh
0xUlGiJNFG5dydn828oENe87Q7zEbJd/sLHrN2o/
UuHzaKi57t6y69wQYBN21nvji/nM5c15u3NEygrymNq286+D/
ACKRKUjmJOYFxH4HlHJotI5I4CsVYmoUy4h93OACrHR/
8LyOrA8z5YXXmtXfPEwaYRkSBsSWVE9PDK6j8om0cB5u3NEegrimLiVrM+Tu54
GZC1gdEf8AwuyEkags9GqiIph8bhEfmRhRsw+0iSQ0eoOJiFknFXTzP/
C3dnrhkDzYq14sEw0lvIHw/nH6kU/mFENgLlU+HcwFEVRLHUjutflP/
AkagQCx9xJbg7F+4d15+GHKcb/
gJnw+c+oY5ruZsT7LsXzMwL2oh33YEyFPus0WIu7xfVv/
AAC1DujJ6c4lCTYprROThW/Fj5P+bKGrFwY1fnGc8IK/
DB1E7Go1Becl0V+lyKIZuL6htc9+NhVQgrjvf1SyvsdkRe/
RSO35nflhtee7+BzyhfKvAJXbWHtbfm/whSHqDZdKwedXoqt/
NSZWvYvclpmfCcP2vfctPWT9ReNbg/
U+UVy+slkKV5zf3A2YrLdOcFZznNwA23mE1i/
Ily2tRh4zRiR4GRmkfKRAclDCvH6P2SBsJo59F/hnAc3+Sj6w/wCJJt/
46oFsIhWc0dR9cFpxzyVf/HSEsZAfUO/G+AxjrRl9n/
xNL3Aw32Ifcsso1v8AfA7G5/
ujVWeVp27BtFMevH1NSORfyOD1WBQQiIhz4Yq1VnVwTMC0YNDAhGoMgP8Aw
FOm+SQqyeytnOmL/
bMoS9jKd8M7Q5RzyZrF8h8wknrR+4LXeT+pT1XIPqZLIDqnSd/
j5rKItMgr5JxlmG57H1db9xe3d1Y9bcz8QTmbqE7T94lBLxf50YC/
DoAUsh5wYSrk9cbAGEwJR5JNgk5D8ItbNwj0bzGYze9GA9qOa8AAAD3cPnh6Ku
3yi7h+5359zvT7n9Kn9Kn9Kn9Kn9Kn9Kn9Kn9Kj1HQTuz7nZP3HapOf78PTfev
niAA3P8AV6HG6ixBeWiClLQKA/8AzVjLGJOYrNZ3D9ztn7nbP3O2fuds/
cR17nnB7igAudM2dw/c7Z+52z9zun7nbP3O4fudw/
ctbtU1GmkjPbBijUc53D9yxpTKbssaAGCnYFncP3EltXbxgwjWjRGVehRK2LnbP3
Ete55w4RrDRHwJNRgw9LuU4Hmw+I9KNX4V/C5uTNA1VnbP3O2fud4/
cGUI9vGPAjV+FfGgrwGjtrO2fuNDq8YtLqM7AhQBqs7h+53D9yutnp2Go0FClA
M1YaTuec7Z+52z9ztn7nbP3Brvokeg+J1AtRA9Lnu8mviXw+rpH2HwU/
NVbYLOwfudw/cLEUQbExY8lebgLO4fuFHNCsjVoYuvyVBqlzuH7nbP3O6fud0/
c7x+52z9xEtI7eMaiNryK3m2qCljHbxncP3Ku2aFss8GnCTfMLO4fuds/
c7Z+52z9zKXDgz7D4i2bRgc1nbP3C+lRFNAz8GWOAQbrOwfudw/
ctKNU0MskmTAwYbrO2fudo/ca4aCojTmY0qLzFCyxZ3D9wT1ktToGcAqqCdw/
c7h+48CUGauZKQA1tjdZ3D9wSxHbxh6iiGiMbYclQ1HOds/
cSRdPjyDGyBQgbJc7h+5aXapqbJhb1OoZetXO0fudw/
cFRSiB4iYmSQUyHks7Z+53z9+ND1J+JHbtG7w877nxdv2SmZgdPzhoe2mFGZ
yZ3YCJsirQPfY1eurY4Pre2S9SKXfKJhBlesHjVP238JM7bHofMizS1ygiB4ayewHD
wavlO1bsOk/
HZONDovsrJGdZwLb8uIotHPbI4sXruAlNUq6ti4MzW2Q8kmjAeSO9kBbPJ2cOmY
RogoTh8XHvOT8T+DRO9bsagn4WxLYexiPUjlWMw+sgH5M2Joj4BFqB93r8YPw
KHUDYyregfoj3HHsW5+IqQIoRMpec3B6Qi7JmRAxB+1aHuMzqEwNdzIjyv8AkC
p299fnBjEnImVhhzmZD3qMVZXiVtwoXfnb7YNbGxuhke8bfukpbgd1lPfI6qwN6
guatHVIiNYKF7TmzDr84FrSLgFssd9gF6BgQrQ4DwMhLvfhH94n94nOGcUDMP7
xP7zEWgQwdouxH95n95gIUeLLvO7DoOKg3N88Xb9kpnYfT853jZM7rtGraDms
a6uj8riIlqMUfhnofQcoBEtFj4u578R19aJVPSDFUYgesZUMwIufGXMcsdadq3YdJ
+C8REH4m0pg+k7V+o93jq9nBBmXCSbGCZxvzBfmXpdXi1oHNjjLXNOCGNC7
1ihMbgVoCA+EFmI5iYoGidu249lyYvsqhf3Gf2HG1yvmT+8ShOqR2nZbGgZ42b
E2dukOvGhn9d3s1r4EAste/PFwExegnvWPetzHq/
GpAgLbzl58ORsUmGjSR6p1iWqsnJ+28Mufzsjm6nsKDMGj9vFINRJ1rvlgCz7d6l
PTLB/
uNl645Hi+6oIBMGsEPDYf3oMflA3NP5A1M5YPXAPmq6EIBT79e2ngQqKK7JL+rf
qf1b9T+vfqcnogSf1Sf1iEpLLPJgHm6Nk/rE/
rEDB2hRMncZ8Oi4h735Yu17ZTMw+n5zve2AnqicdC4PxPzBZoCGb4IXsOhAgx
S8J5VKjPxYeZ4adUGf2+PF3Pfir6mUsxmLSYT2jVnZaIcEHc0GkcLJ/
l5KHHWnYN+HS/
guHHCmiG3Km0BjvkBWptiVVGdmsti0D7HBwYmfKuQEGjYg5RYHSKWhPKoXIj5
pS35Y5E2LdZb9sTDR4NXZcmL3RSNE2f1iZhotwTsO+F46a4eDP6JFtX9H6hsND
GqBnjZsiKovJugDJR4J7Q9DO9TAhyHzwcWccHNmKtVY2s2zqotOJUf4+bWAAqx
w71uY9X4EQ7Nu8Gcb8nTY9MAetxFnI+QjP7AjudhpIgfq9LJXztIFXRAVCNKY8z9
5AowDCp8+k/VgBphQFlH354PJFJSMPqGZX6wDMu16oM/
SyiLQWNSDUMI8mcu/
UqWwaQd94LSwjhH8NDZAo0MQwwo6gCgjw8vFMNp4Dsm/
DPZMSdjjlyc+NQ3F2vbKZmHNEVdjllzizz/
iMBKmbjAt2h0BSdZqO+9BhQ87aPTxe87/
F3EQPnhbhxlPyXMdadt3YdL+C8RIDVaWqrAn9z/
ccA0mmb0YNzB5eDZAAKIyOb8kDgegiO/
wC5xNEorREpJ0ydirB2WW9UcTDR4NXZcnhP0DOw74d93eL9Qq8bNhBHKo28
4QYLTJ6y/
wCXSjrnD0L5QOLJ3UOyywlfLX2mkdlBhzvwOH1RMr9Yd63Mer8CId+3eDVzb2v
098LWIbZLJpY2NqWnvH01287o45O7lw1kTsavKz6jdWc5q8OndfR64ZOCu3OP
SKtVY2sOlTOxOb0IIoUPccMvq5Oxli2aJ2cC0HcU4HTgaQTqSmgJQo0vzC/
Ah7ju8HdtniA75v8AwO17ZTMw+si7Hhg6o1PNwvOcD5eA1lJe1MPmQwoQdrY
VBukOPgllPCZpRWug2ned/il/Noi4MrbH1fKMRofk4dL+S8cIBhICnk/
T0h5AiixNyN/9t4aTM+nwelT70AfFSoAujcTuuTAq22J0DOw74d93eKxQM/
GzZUllOe31uWAHm3eAFsXpVuQ5H2wqo8lOjoQnFcy8j4rAqC+FL2vDsW5j1fgV
Ls27wGVNjsKhj1zlpofXBLaA9pvH/EE7ubEACTP7uhMgpTy/
oMKXbTmqhA1zloq8FpZw8+Qwzpgb0XSWwvcLn1OGoluxoHqQSQqcQswobzX
x/YMoZ6tEdRMc0RB2Np4iG2WjDbbznb/3O8PuEKVarjTX8RBLvm/
DP1dyyUV7TpFP3v1EQtRQ2OLte2UzsPp+c7/
tjIAxuJmcFldttl36MNKIWJgsJZW42XqNS9qR3Vtwpshd+Gg62HYd/
hlrucigC1gItZGoGT7GGvKz5FMSzsw2Auc7Z7uDDdPZDwfHRvAcDLHKsXJ2/
wDcV/
wRaaAVuEjbRNkwV4SriF9NzK+8tisB8hpFMA8UDMRwHa0XxQyPVjsepwthSN8
4mdBntOHF2xVDu6Rk/GCzkOoAtZrI+gWGHAex53/
WPQM7Lvh3Hd4rFQz8TNrwjcAOjbMDEgagGgYUvo9N1+3ziTWCbBW8QRKGcx
SZrhqhLHtPUhCQU4hYzsW5j1fgRDs27w0enxX98HFhzLy53gAW6WxtuuERoCJ6
dbUmki8Ax1A2MQzB9GYHtgN009jgnbRfoAtYvyrJwcj7YK8zC8hQZJHMdtgVvzx
o38wNT9rxNIsH0eBK0o7q0Q+VV3Ne54kKkhBUNfPnMu7979zn+9+5l3fvfuOW
9c4bn4bAHfN+HTcRMzf8sXa9srmYbT852TZGsWx1Jq+j84k30cvYI6IHZmii+tz
OodfW7vFwGj6xLNASkKofnFByUaWqVxn9x+s/
uP1n9x+szgWsGWaqrzned+J2AjJUDflEjw3R1rDgI3mHGXEKJdR+2vpE6U3WiZ
aTfvd10w/qZUuUttcQJoA8gHx+DxwQD2LCrPUmT2HtLjNrLXimNrbVd1wN/
kPZis74NV04geGsgds9YSlhlkL1mRhq2VuYOwMPZVyAnGnL7x6QPiprwRk+jUW
04/BKcBwECiCcTYQZCZ5o9bilVzuSfGJI9THhldN49AzsO+Hcd3izUy/
GzY8nlSublCRZcj9PA8wnIkGxIcQIDgDodcK23qL6KxtLYlbrF7n7XO6bnj6kHOra1
apcyL6n9z+y/uf2f9xUUI1LVlKeetz1LIiNYgzPR88j26x6cv3AyOinwVn/
ADFD0KwMd9A3V7fONpbGss9+TN49+2Ydo2zR8vxYe07fhsZd134dFxUGd/
yxds2Ym6fnOybI0FglgckYvQrRanj5eEyCloMyxNNgLMvjnc9/
jNyKpKOBALiAUAaBMmz63b4jwJ0K2A4rkTT+q7gzfVv8hDggbFS0EK3BaoBXpn
zDZBUjmJGvo2JXwwVAWR4VfXNo/
DGhstym3nv4hsLdMp1GF5flQBQGPRM7Dvh3nd4v1Azxs26PC0SQGvCOY5y5v
C2PAckwdplc1088G3elyCxXnLC7zmrwOSFRS3/jO/vqd9fWLIZ7PNNeXOeq/
Jj134FI7LuYfY8r9MVRqOeaH2+Ywhkjiuh629sVpc8pnwJBQFGAiAXueAw+xN9JC
KQAOEek78+oRBZ0ZOfWOHJoCqWRvRyvwUzPRvDv2zDtWyaPliD5DWIT68YPc
5zmtdUIDMxS/wD1qoDBQUamuqPBRYcCmSOCgjZpazOKvJasWk/
oSE9yrUAgJryfxyOCr4yPkarggswRZoAB4I6wVttFY82sAmWwWBbqaPxYX7mZe
B4udP8AA+0xtUQPADnFAA9kfXuqbPS8ziSlpcpPEWgKAihs4oWKsmsMR89Tkxs
s6pvjFxxUfZnAnHA83IdDBYBo6owJ/Qk/
oScb492mKkEHVGB7vh57nBwA9EQEuqbPS8zPCVq9PFNQB7A6iQT+aRscjWBT
rYL7YZlid9n6NsSTXUK9PwIJTBZZy9bnwekdpHQ69o1ioghOmPwjE9JE1+WZUA
xA8FsjZiTAsDggG2uQxKgPnVAD3cecradBbTvp4Fkg6iiPxOxMOagw6szLCxrSsH
9xjzhfa2tzh5485US3ERM/
rFBhzrla04OSxFUySyAE8j1Z+WPPVfx6iyHzNZwELurp4we5znFntWzBcsHE81T
UdcOZfMTUDbDVEA0AhNAkR4jFamjqc4MOJBsrLDNffDX6PSBkPOM3/
OIrw4LWbIWvMemPmbuD/IY846BPniPRwLiy6U1MOaDX3AjS/wDuP//Z"
alt="Ethio-Djibouti Railway" style="height:54px;object-fit:contain"/>
</div>
<div class="hdr-center">
</div>
<div class="hdr-right">
<div class="hdr-badges">
</div>
</div>
</div>
<div class="nav-tab"
onclick="showPage(this,'auditlog');renderAuditLog()">🔍 Audit Log</div>
</div>
<div class="row">
<div class="wb">
</div>
<div style="margin-top:10px">
<div style="text-align:center;margin-bottom:6px">
</svg>
</div>
<div style="font-size:9px;line-height:1.9">
<div><span style="display:inline-
block;width:9px;height:9px;background:#27ae60;border-radius:2px;margin-
right:4px;vertical-align:middle"></span>On Track: 3 projects</div>
<div><span style="display:inline-
block;width:9px;height:9px;background:#f39c12;border-radius:2px;margin-
right:4px;vertical-align:middle"></span>At Risk: 2 projects</div>
<div><span style="display:inline-
block;width:9px;height:9px;background:#e74c3c;border-radius:2px;margin-
right:4px;vertical-align:middle"></span>Delayed: 1 project</div>
</div>
</div>
</div>
</div>
<div style="display:flex;gap:6px">
</div>
</div>
<thead><tr><th>#</th><th>Project Name</th><th>Project
Manager</th><th>Phase</th><th>Baseline Start</th><th>Baseline
Finish</th><th>Budget
(ETB)</th><th>Spent</th><th>Progress</th><th>Status</th><th
id="ov-action-th" style="display:none">Actions</th></tr></thead>
<tbody id="ov-tbody"></tbody>
</table>
</div>
</div>
</div>
<div class="row">
</div>
</div>
</div>
<div class="row">
</div>
</div>
</div>
<div class="sched-proj-bar">
</select>
<option value="monthly">Monthly</option>
<option value="weekly">Weekly</option>
<option value="daily">Daily</option>
</select>
<div class="sched-proj-info">
</div>
</div>
<!-- ── Schedule KPI Strip ── -->
<div class="sched-kpi-strip">
</div>
<div class="row">
<div style="display:flex;gap:5px;flex-wrap:wrap">
<div id="msp-help-overlay"
style="display:none;position:fixed;inset:0;background:rgba(0,0,0,0.55);z-
index:9999;align-items:center;justify-content:center">
<div style="background:#fff;border-radius:10px;padding:24px
28px;max-width:420px;width:90%;box-shadow:0 8px 32px
rgba(0,0,0,0.25);font-family:inherit">
<div style="display:flex;justify-content:space-between;align-
items:center;margin-bottom:14px">
<span style="font-size:13px;font-weight:800;color:#0a3d1f;letter-
spacing:.5px">UPLOAD MS PROJECT FILE</span>
<button onclick="[Link]('msp-help-
overlay').[Link]='none'" style="background:none;border:none;font-
size:18px;cursor:pointer;color:#555">✕</button>
</div>
</div>
<div style="font-size:11px;color:#333;line-height:1.8;margin-
bottom:16px">
</div>
<div style="display:flex;gap:10px">
<button onclick="[Link]('schedule-msp-
input').click();[Link]('msp-help-
overlay').[Link]='none'"
style="flex:1;padding:9px;background:#2980b9;color:#fff;border:none;bord
er-radius:6px;font-size:11px;font-weight:700;cursor:pointer">📂 Choose XML
File</button>
<button onclick="[Link]('msp-help-
overlay').[Link]='none'" style="padding:9px
14px;background:#eee;color:#555;border:none;border-radius:6px;font-
size:11px;cursor:pointer">Cancel</button>
</div>
</div>
</div>
</div>
</div>
<div class="g26-wrap">
</div>
<div id="scurve-tooltip"
style="position:fixed;background:#1a2a1a;color:#fff;padding:8px
12px;border-radius:5px;font-size:10px;z-index:9999;pointer-
events:none;display:none;max-width:200px;box-shadow:0 4px 16px
rgba(0,0,0,.4);border-left:3px solid #27ae60;line-height:1.6"></div>
</div>
</div>
</div>
<div class="row">
<span style="font-weight:800;letter-spacing:.5px;flex-shrink:0">📈
PHYSICAL PROGRESS S-CURVE</span>
<div style="display:flex;gap:6px;align-items:center;margin-left:auto;flex-
wrap:wrap">
<select id="scurve-project-select"
onchange="onSCurveControlChange()"
style="background:#0e6655;color:#fff;border:1px solid
rgba(255,255,255,.35);border-radius:4px;
cursor:pointer;outline:none;appearance:none;-webkit-
appearance:none;
background-image:url('data:image/svg+xml,<svg xmlns=
%22[Link] width=%2210%22 height=%226%22
viewBox=%220 0 10 6%22><path d=%22M0 0l5 6 5-6z%22 fill=%22%23fff
%22/></svg>');
background-repeat:no-repeat;background-position:right 7px
center;min-width:160px">
</select>
<select id="scurve-view-select"
onchange="onSCurveControlChange()"
style="background:#0e6655;color:#fff;border:1px solid
rgba(255,255,255,.35);border-radius:4px;
cursor:pointer;outline:none;appearance:none;-webkit-
appearance:none;
background-image:url('data:image/svg+xml,<svg xmlns=
%22[Link] width=%2210%22 height=%226%22
viewBox=%220 0 10 6%22><path d=%22M0 0l5 6 5-6z%22 fill=%22%23fff
%22/></svg>');
background-repeat:no-repeat;background-position:right 7px
center;min-width:100px">
<option value="monthly">Monthly</option>
<option value="weekly">Weekly</option>
<option value="daily">Daily</option>
</select>
</div>
</div>
</div>
<div class="scurve-legend">
</div>
</div>
</div>
</div>
<div class="row">
<span style="font-weight:800;letter-spacing:.5px;flex-shrink:0">💰
FINANCIAL PROGRESS S-CURVE</span>
<span style="font-size:9px;color:#a8d0f0;font-weight:600;margin-
left:auto" id="fin-scurve-proj-label"></span>
</div>
</div>
<div class="scurve-legend">
</div>
</div>
</div>
</div>
<div class="row">
<div style="display:flex;gap:5px;flex-wrap:wrap;margin-left:auto">
<input id="act-search" type="text" placeholder="Search activities…"
oninput="renderActivityDashboard()"
style="background:#2c3e50;color:#fff;border:1px solid
rgba(255,255,255,.3);border-radius:3px;padding:3px 8px;font-size:9px;font-
family:inherit;outline:none;width:140px">
<option value="completed">Completed</option>
<option value="upcoming">Upcoming</option>
<option value="delayed">Delayed</option>
<option value="critical">Critical</option>
</select>
</div>
</div>
<thead><tr>
<th>Activity Name</th>
<th>ID</th>
<th>Start</th>
<th>Finish</th>
<th>Physical %</th>
<th>Financial %</th>
<th>Status</th>
<th>Variance (d)</th>
<th>Owner</th>
</tr></thead>
<tbody id="activity-dashboard-tbody"></tbody>
</table>
</div>
</div>
</div>
</div>
<!-- ── Row 4: Milestone & Activity Dashboard + Delay & Critical ── -->
<div class="row">
<div style="margin-left:auto;display:flex;gap:5px">
</div>
</div>
</div>
</div>
</div>
</div>
<span id="pc-ms-summary-badge"
style="background:rgba(255,255,255,.18);border:1px solid
rgba(255,255,255,.35);border-radius:3px;padding:2px 10px;font-
size:9px;font-weight:700;color:#fff;white-space:nowrap"></span>
<label style="font-size:9px;color:rgba(255,255,255,.85);font-
weight:600;display:flex;align-items:center;gap:4px;cursor:pointer;white-
space:nowrap;margin-left:4px">
</label>
</div>
</div>
</div>
</div>
<div style="display:flex;gap:6px;align-items:center">
<select id="pc-activity-type-filter"
onchange="renderPCActivityByProject()"
style="background:#2c3e50;color:#fff;border:1px solid
rgba(255,255,255,.3);border-radius:3px;padding:3px 8px;font-size:9px;font-
family:inherit;outline:none">
<option value="milestone">Milestones</option>
<option value="activity">Activities</option>
</select>
</div>
</select>
</div>
<div id="pc-activity-by-project" style="padding:8px 10px"></div>
</div>
</div>
<div style="display:none">
<div id="phase-grid"></div>
<div id="sched-phases"></div>
<div id="sched-calendar"></div>
<div id="ov-milestones"></div>
<span id="ms-summary-badge"></span>
<div id="ov-activity"></div>
<div id="ov-glance"></div>
</div>
</div>
<!--
══════════════════════════════════════════════════════
PRIMARY PROJECT SELECTOR BAR
══════════════════════════════════════════════════════
-->
<div class="cost-selector-bar">
</select>
<div style="display:flex;gap:6px;flex-wrap:wrap">
<button class="cost-upload-btn"
onclick="[Link]('cost-excel-upload').click()">⬆ Upload
Excel</button>
<button class="cost-upload-btn"
onclick="[Link]('cost-msp-upload').click()">⬆ Upload MS
Project</button>
</div>
<div class="cost-sel-info">
</div>
</div>
<!--
══════════════════════════════════════════════════════
PROJECT COST SUMMARY — appears immediately below selector
══════════════════════════════════════════════════════
-->
<div class="pcs-header">
</div>
<!-- 10 cells populated by JS: BAC, AC, EV, PV, CPI, SPI, EAC, VAC, Util%,
Status -->
</div>
</div>
</div>
</div>
<!--
══════════════════════════════════════════════════════
SECTION 1: EVM + COST VARIANCE ANALYSIS
══════════════════════════════════════════════════════
-->
<thead><tr><th>Project</th><th>BAC (ETB)</th><th>PV
(ETB)</th><th>EV (ETB)</th><th>AC (ETB)</th><th>CV
(EV-AC)</th><th>SV
(EV-PV)</th><th>CPI</th><th>SPI</th><th>EAC</th><th>VAC</th></tr
></thead>
<tbody id="evm-tbody"></tbody>
</table>
</div>
</div>
</div>
</div>
<!--
══════════════════════════════════════════════════════
SECTION 2: COST VARIANCE + BUDGET vs ACTUAL
══════════════════════════════════════════════════════
-->
</div>
</div>
</div>
<!--
══════════════════════════════════════════════════════
SECTION 3: CASH FLOW FORECAST
══════════════════════════════════════════════════════
-->
</div>
</div>
<!--
══════════════════════════════════════════════════════
SECTION 4: DETAILED COST BREAKDOWN
══════════════════════════════════════════════════════
-->
<div style="font-size:10px;font-weight:800;color:#0a3d1f;margin-
bottom:8px;letter-spacing:.4px">BUDGET vs SPENT — GRAPHICAL
VIEW</div>
</div>
<thead><tr><th>Project</th><th>Category</th><th>Budgeted
(ETB)</th><th>Actual (ETB)</th><th>Forecast
(ETB)</th><th>Variance</th><th>%
Used</th><th>CPI</th><th>Status</th></tr></thead>
<tbody id="cost-tbody"></tbody>
</table>
</div>
</div>
</div>
<!--
══════════════════════════════════════════════════════
PROJECT VIEW — shown only when a specific project is selected
══════════════════════════════════════════════════════
-->
<div class="wb">
<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:8px"
id="pv-kpi-grid">
</div>
</div>
</div>
</div>
<div class="row">
</div>
</div>
</div>
<div class="row">
</div>
</div>
</div>
</div>
<div class="row">
</div>
</div>
<div class="row">
<div style="margin-
bottom:10px;padding:8px;background:#f4f9f2;border-radius:4px;border:1px
solid #c8d8c8">
<div style="font-size:10px;font-weight:800;color:#0a3d1f;margin-
bottom:8px;letter-spacing:.4px">BUDGET vs SPENT — GRAPHICAL
VIEW</div>
</div>
<thead><tr><th>Project</th><th>Category</th><th>Budgeted
(ETB)</th><th>Actual (ETB)</th><th>Forecast
(ETB)</th><th>Variance</th><th>%
Used</th><th>CPI</th><th>EAC</th><th>Status</th></tr></thead>
<tbody id="pv-cost-tbody"></tbody>
</table>
</div>
</div>
</div>
<div style="display:none">
<div id="cost-by-proj"></div>
<div id="cost-by-cat"></div>
<div id="cost-per-project-row"></div>
<div id="evm-kpi-grid"></div>
<div id="cost-kpi-cpi-lbl"></div>
<span id="cost-project-badge"></span>
</div>
</div>
<div>
<div style="font-size:13px;font-weight:800;color:#fff;letter-
spacing:.4px">👥 RESOURCE MANAGEMENT MODULE</div>
<div style="font-size:9px;color:#a8d5b5;margin-top:2px">Manpower ·
Machinery & Equipment · Materials · Fuel & Consumables —
Comprehensive Tracking & Monitoring</div>
</div>
<div style="display:flex;align-items:center;gap:8px;flex-wrap:wrap">
<div style="display:flex;align-
items:center;gap:6px;background:rgba(255,255,255,.1);border:1px solid
rgba(255,255,255,.25);border-radius:5px;padding:5px 10px">
<span style="font-size:9px;color:#a8d5b5;font-weight:700">📂 DATA
SOURCE:</span>
<label style="cursor:pointer">
<span style="background:#27ae60;color:#fff;border-
radius:3px;padding:3px 8px;font-size:9px;font-weight:700;cursor:pointer">⬆
Upload MS Project / Excel</span>
</label>
</div>
<div style="display:flex;align-items:center;gap:6px">
<span style="font-size:9px;color:#a8d5b5;font-weight:700">📁
PROJECT:</span>
<select id="res-project-select"
onchange="filterResourcesByProject([Link])"
style="background:#fff;color:#0a3d1f;border:none;border-
radius:4px;padding:5px 10px;font-size:10px;font-
weight:700;cursor:pointer;min-width:220px;outline:none">
</select>
</div>
<div style="display:flex;gap:4px">
</div>
</div>
</div>
<div id="res-view-summary-panel">
<div class="row">
<div style="display:flex;align-items:center;gap:6px">
<span id="res-proj-label-mp"
style="font-size:9px;opacity:.8"></span>
</div>
</div>
<div class="wb">
<div style="display:grid;grid-template-
columns:repeat(4,1fr);gap:5px;margin-bottom:8px" id="mp-kpi-grid"></div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:5px;letter-spacing:.3px">PLANNED vs ACTUAL DEPLOYMENT</div>
<div id="mp-planned-actual"></div>
<div style="display:flex;gap:6px;margin-top:8px;flex-wrap:wrap">
<div style="flex:1;min-width:120px">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:4px">PRODUCTIVITY INDEX</div>
<div id="mp-productivity"></div>
</div>
<div style="flex:1;min-width:120px">
<div style="font-size:9px;font-weight:800;color:#d35400;margin-
bottom:4px">⚡ UPCOMING DEMAND (4 WKS)</div>
<div id="mp-upcoming-demand"></div>
</div>
</div>
<div style="overflow-x:auto">
<thead><tr><th>Name</th><th>Role</th><th>Project</th><th>Util
%</th><th>Tasks</th><th>Productivity</th><th>Status</th><th
id="res-action-th" style="display:none">Actions</th></tr></thead>
<tbody id="res-tbody"></tbody>
</table>
</div>
</div>
</div>
<span id="res-proj-label-eq"
style="font-size:9px;opacity:.8"></span>
</div>
<div class="wb">
<div style="display:grid;grid-template-
columns:repeat(4,1fr);gap:5px;margin-bottom:8px" id="eq-kpi-grid"></div>
<div style="display:flex;gap:8px">
</div>
<div style="flex:1">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:5px">EQUIPMENT STATUS</div>
<div id="eq-status-list"></div>
</div>
</div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin:8px 0
4px">EQUIPMENT REGISTER</div>
<div style="overflow-x:auto">
<thead><tr><th>Equipment</th><th>Type</th><th>Project</th><th>S
tatus</th><th>Util %</th><th>Next Maint.</th></tr></thead>
<tbody id="eq-tbody"></tbody>
</table>
</div>
</div>
</div>
</div>
<div class="row">
<span id="res-proj-label-mat"
style="font-size:9px;opacity:.8"></span>
</div>
<div class="wb">
<div style="display:grid;grid-template-
columns:repeat(4,1fr);gap:5px;margin-bottom:8px"
id="mat-kpi-grid"></div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:5px">PLANNED vs CONSUMED vs REMAINING STOCK</div>
<div id="mat-stacked-bars"></div>
<div style="margin-top:8px">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:4px">MONTHLY USAGE TREND (TONNES)</div>
<div id="mat-trend-chart"
style="height:55px;position:relative"></div>
</div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin:8px 0
4px">MATERIAL STOCK REGISTER</div>
<div style="overflow-x:auto">
<thead><tr><th>Material</th><th>Unit</th><th>Planned</th><th>Co
nsumed</th><th>Stock</th><th>Reorder
Lvl</th><th>Status</th></tr></thead>
<tbody id="mat-tbody"></tbody>
</table>
</div>
</div>
</div>
<span id="res-proj-label-fuel"
style="font-size:9px;opacity:.8"></span>
</div>
<div class="wb">
<div style="display:grid;grid-template-
columns:repeat(4,1fr);gap:5px;margin-bottom:8px"
id="fuel-kpi-grid"></div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:5px">FUEL CONSUMPTION BY ACTIVITY</div>
<div id="fuel-activity-chart"></div>
<div style="display:flex;gap:8px;margin-top:8px;flex-wrap:wrap">
<div style="flex:1;min-width:120px">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:4px">FUEL EFFICIENCY TREND (L/HR)</div>
<div id="fuel-efficiency-chart"
style="height:50px;position:relative"></div>
</div>
<div style="flex:1;min-width:120px">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:4px">MONTHLY FUEL COST (ETB '000)</div>
<div id="fuel-cost-chart"
style="height:50px;position:relative"></div>
</div>
</div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin:8px 0
4px">FUEL & CONSUMABLES REGISTER</div>
<div style="overflow-x:auto">
<thead><tr><th>Item</th><th>Unit</th><th>MTD
Consumption</th><th>MTD Cost (ETB)</th><th>Stock
Level</th><th>Efficiency</th><th>Status</th></tr></thead>
<tbody id="fuel-tbody"></tbody>
</table>
</div>
</div>
</div>
</div>
<div class="row">
<div class="wb">
<div id="util-heatmap"></div>
</div>
</div>
<span id="res-proj-label-cost"
style="font-size:9px;opacity:.8"></span>
</div>
<div class="wb">
<div style="display:flex;gap:8px;flex-wrap:wrap">
<div style="flex:1;min-width:140px">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:5px">COST BREAKDOWN BY TYPE</div>
</div>
<div style="flex:2;min-width:200px">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:5px">MONTHLY RESOURCE COST vs BUDGET</div>
<div id="res-cost-monthly"
style="height:100px;position:relative"></div>
<div style="font-size:9px;font-
weight:800;color:#0a3d1f;margin:8px 0 4px">COST SUMMARY</div>
<div id="res-cost-summary"></div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<span id="res-proj-label-detail"
style="font-size:9px;opacity:.8"></span>
</div>
</div>
</div>
<div id="res-per-project-sections"></div>
</div>
<div class="row">
</div>
<div class="wb" id="res-forecast-content"></div>
</div>
</div>
</div>
</div>
<div class="rpt-banner">
<div class="rpt-banner-left">
<div class="rpt-banner-icon">📊</div>
<div>
</div>
</div>
<div class="rpt-banner-right">
</div>
</div>
</div>
</div>
<div class="rpt-filter-row">
<option>On Track</option><option>At
Risk</option><option>Delayed</option>
</select>
</select>
<option>Discovery</option><option>Design</option><option>Build</opti
on><option>Closeout</option>
</select>
</select>
</div>
<!-- ── CHARTS ROW ── -->
<div class="rpt-chart-hdr">
</div>
</div>
<div class="rpt-chart-hdr">
</div>
</div>
<div class="rpt-chart-hdr">
</div>
</div>
<!-- Variance Chart -->
<div class="rpt-chart-hdr">
</div>
</div>
</div>
<div class="rpt-sidebar">
<div class="rpt-sidebar-card">
</button>
</button>
</button>
</button>
</button>
</button>
</button>
</div>
</div>
<!-- Portfolio Health Index -->
<div class="rpt-sidebar-card">
<div class="rpt-sidebar-body">
</div>
</div>
<div class="rpt-sidebar-card">
<div class="rpt-sidebar-body">
</div>
</div>
<div class="rpt-main">
⚠ <span id="rpt-data-warn-text"></span>
</div>
<div class="rpt-tbl-card">
<div class="rpt-tbl-hdr">
<div class="rpt-tbl-controls">
</div>
</div>
<div style="overflow-x:auto;max-height:310px;overflow-y:auto;">
<thead>
<tr>
<th>Status</th>
<th>EAC</th>
<th>Project Manager</th>
</tr>
</thead>
<tbody id="rpt-cost-tbody"></tbody>
</table>
</div>
<div class="rpt-tbl-pager">
</select>
</div>
</div>
<div class="rpt-preview-card">
<div class="rpt-preview-hdr">
<div style="display:flex;gap:6px;">
</div>
</div>
<div class="rpt-preview-body" id="report-preview-area">
<div class="rpt-preview-empty">
<div class="rpe-icon">📊</div>
<div style="font-weight:700;color:#999;margin-bottom:4px;">No
Report Generated Yet</div>
</div>
</div>
</div>
<div class="rpt-sect-card">
<div style="font-size:11px;font-weight:800;color:#fff;letter-
spacing:.4px;text-transform:uppercase;">🗂 Report History &
Archive</div>
<div style="display:flex;gap:6px;flex-wrap:wrap;">
<button class="rpt-tbl-exp-btn"
onclick="[Link]('excel-upload-input').click()">📤 Upload
Excel</button>
</div>
<div style="padding:8px;overflow-x:auto;">
<thead><tr>
<th>Report Name</th><th>Type</th><th>Generated
Date</th><th>Generated By</th>
<th>Distributed
To</th><th>Format</th><th>Version</th><th>Actions</th>
</tr></thead>
<tbody id="report-history-tbody"></tbody>
</table>
</div>
</div>
<div class="rpt-sect-card">
<div style="font-size:11px;font-weight:800;color:#fff;letter-
spacing:.4px;text-transform:uppercase;">📸 Project Progress Photos</div>
</div>
<div style="text-align:center;color:#bbb;padding:20px;font-
size:11px;grid-column:1/-1;">No photos uploaded yet. Click "Upload Photo"
to add project progress images.</div>
</div>
</div>
<div class="rpt-sect-card">
<div style="font-size:11px;font-weight:800;color:#fff;letter-
spacing:.4px;text-transform:uppercase;">✅ Completed Projects</div>
<option>All</option><option>2024</option><option>2025</option><opt
ion>2026</option>
</select>
</div>
<div style="text-align:center;color:#bbb;padding:20px;font-
size:11px;">No completed projects to display.</div>
</div>
</div>
</div>
<!-- UPCOMING ENGINEERING AND CONSTRUCTION WORKS SECTION -->
<div style="font-size:11px;font-weight:800;color:#fff;letter-
spacing:.4px;text-transform:uppercase;">🏗 Upcoming Engineering &
Construction Works</div>
</div>
<div style="padding:6px;overflow-x:auto;">
<thead><tr><th>Work Item</th><th>Planned
Start</th><th>Planned End</th><th>Scope</th><th>Budget
(ETB)</th><th>Status</th></tr></thead>
<tbody id="upcoming-works-tbody"></tbody>
</table>
</div>
</div>
<div class="row">
<div class="mf-row">
</div>
<div class="mf"><label>DATE
FORMAT</label><select><option>DD/MM/YYYY</option><option>MM/DD/
YYYY</option></select></div>
</div>
</div>
<div style="display:flex;gap:6px;align-items:center;flex-wrap:wrap">
<option>Administrator</option>
<option>Project Manager</option>
<option>Viewer</option>
</select>
<option>Active</option>
<option>Inactive</option>
</select>
</div>
</div>
</div>
<div style="font-size:10px;font-weight:800;color:#7d6000;margin-
bottom:4px">👑 CHIEF ADMIN PRIVILEGES</div>
<div style="font-size:9px;color:#555;line-height:1.6">
</div>
<div style="margin-top:6px;font-size:9px;font-
weight:700;color:#7d6000">ROLE HIERARCHY: 👑 Chief Admin >
Administrator > 👤 Project Manager > Viewer</div>
</div>
<div id="um-restricted-notice"
style="display:none;background:#fff3cd;border:1px solid #ffc107;border-
radius:4px;padding:8px 10px;margin-bottom:8px;font-
size:9px;color:#7d4a00">
</div>
<thead>
<tr>
<th>#</th>
<th>Full Name</th>
<th>Username</th>
<th>Email</th>
<th>Role</th>
<th>Assigned Project(s)</th>
<th>Password</th>
<th>Status</th>
<th>Date Created</th>
<th>Last Login</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="users-tbody"></tbody>
</table>
</div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:6px;letter-spacing:.3px">🔑 ROLES & PERMISSIONS
MATRIX</div>
<thead><tr><th>Role</th><th>View Dashboard</th><th>Edit
Projects</th><th>Cost Module</th><th>User Mgmt</th><th>Audit
Log</th><th>Export Data</th><th>Settings</th></tr></thead>
<tbody>
<tr><td style="font-weight:700;color:#c0392b">
Administrator</td><td>✅ All</td><td>✅ All</td><td>✅ Full</td><td>✅
Full</td><td>✅ Full</td><td>✅</td><td>✅ Full</td></tr>
<tr><td style="font-weight:700;color:#1e8449">👤 Project
Manager</td><td>✅ Own</td><td>✅ Own Project</td><td>🔒 Read-
only</td><td>❌ None</td><td>✅ Own Activity</td><td>✅</td><td>❌
None</td></tr>
</tbody>
</table>
<div style="margin-top:8px;padding:8px;background:#f0f8f4;border-
radius:4px;border:1px solid #c8d8c8;font-size:9px;color:#555;line-
height:1.7">
<strong style="color:#0a3d1f">Permission
Guidelines:</strong><br>
</div>
</div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:6px;letter-spacing:.3px">📁 PROJECT MANAGER ASSIGNMENTS</div>
<table class="tbl" id="assign-table" style="font-size:9px">
<thead><tr><th>Project</th><th>Project
Manager</th><th>Phase</th><th>Progress</th><th>Status</th></tr><
/thead>
<tbody id="assign-tbody"></tbody>
</table>
</div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:6px;letter-spacing:.3px">🔒 SECURITY & AUDIT LOGS</div>
<thead><tr><th>Timestamp</th><th>User</th><th>Action</th><th>M
odule</th><th>Detail</th></tr></thead>
<tbody id="um-audit-tbody"></tbody>
</table>
<div style="margin-top:6px;text-align:right">
<button
onclick="showPage([Link]('[onclick*=auditlog]'),'auditlog')
" style="background:#0a3d1f;color:#fff;border:none;border-
radius:4px;padding:5px 12px;font-size:9px;font-
weight:700;cursor:pointer;font-family:inherit">📋 View Full Audit Log
→</button>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="wb">
<div style="font-size:10px;font-weight:700;color:#0a3d1f;margin-
bottom:8px">Team Email Addresses</div>
<div id="email-digest-list"></div>
<div style="margin-top:12px;font-size:10px;font-
weight:700;color:#0a3d1f;margin-bottom:6px">Notification
Preferences</div>
<div id="notif-prefs"></div>
</div>
</div>
<div class="wb">
<div id="integrations-list"></div>
<div style="margin-top:12px;padding:10px;background:#f4f9f2;border-
radius:4px;border:1px solid #c8d8c8">
<div style="font-size:10px;font-weight:700;color:#0a3d1f;margin-
bottom:6px">ADMIN CREDENTIALS</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div style="display:flex;gap:6px;align-items:center">
<option>Authentication</option>
<option>Projects</option>
<option>Risks</option>
<option>Resources</option>
<option>Reports</option>
<option>Settings</option>
</select>
<option>Login</option>
<option>Logout</option>
<option>Add</option>
<option>Edit</option>
<option>Delete</option>
<option>Report Generated</option>
<option>Settings Modified</option>
</select>
</div>
</div>
<thead><tr><th>#</th><th>Date &
Time</th><th>User</th><th>Action</th><th>Module</th><th>Detail</t
h></tr></thead>
<tbody id="audit-log-tbody"></tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script>
//
═══════════════════════════════════════════════════════
════════
// DATA
//
═══════════════════════════════════════════════════════
════════
const LOGO_SRC =
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAQDAwQD
AwQEAwQFBAQFBgoHBgYGBg0JCggKDw0QEA8NDw4RExgUERIXEg4PFRwVFx
kZGxsbEBQdHx0aHxgaGxr/
2wBDAQQFBQYFBgwHBwwaEQ8RGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaG
hoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhr/
wgARCAImBQADASIAAhEBAxEB/
8QAHAABAAICAwEAAAAAAAAAAAAAAAcIBQYBAwQC/
8QAGgEBAAIDAQAAAAAAAAAAAAAAAAECAwQFBv/
aAAwDAQACEAMQAAABn8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAB841XKNRwkYZJQ1hWCf/NW/
GRgsXhINMEr4XQkYdn8GHMP38CjjkevKYAtuecjAyzls9Zk7Nrea17lO5MTWdlnd
5C4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB5MIx7Mj3Bxgl5A2EYLHYiuXXGCdcJEpg3/
AAmtow+ryjCAAPo+WTzC+qJFzDPESdsnOWuyyfevWVZvoK1rE4xSCUua/
GHQ2WxLXBDO4ImZpAqz756Fn0ZSPPV7hOYAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAfJ9MZg4xbejTBME0cV7wcYLI4SvhgmbB
Rsa+3YPGowc8CgA9J5mfy7LpKTstOaG0+5hmrblbI9rNAGZmZOaMcxuxmwO
W9CcwLgAAAAAcYfMlYz0Sw6NOqKyMaxzo4d3TGkzGHJnzcqoyFPVmx5vTbqgk
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHLw4Jj2tG2CjXm
b5r7gmCx+BgFGvMWCjpGDaMH4zACh6cstgG6ZhljNMWXnNA3Nj8szVqy9heZ
zQhl5YM0f5jaDNjch9JygsAAAAAAAAAAAAAAABjYqmdGvVT4sbC0cbWxGpnJ2r
b6527RtP3C3dBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPnEq5hp
GvxryugvX2CxmDrx8RrzZgIyNfb8F5cpGHBtwyy0cpcys5YOWFzDNWnJWS+2
WActNCc0WZffDLrOWyCc3z9DIAAAAAAAAAAAAAAODl4cKx7Qj/HRhlFE/
YrKiNMsvurE5Wc/
IWAAAAdfYRE0WWs0uvLgV6vLHI+5ohTlmtaimVbeg5E5gAAAAAAAAAAAAAA
AAAAAAAAAAAAAABwcsXgGLc0X4yMEx+WGOtjk7X8BlWPE4CSMpFIF6LKZFF
aclYpOWC8pMBljPKbwZdcynvTl+foZAAAAAAAAAAAAAAAAB8n0xWDYtxRhgo
15s+a84OMFkMHAJgmLBR0jBtWFx5gBQAABlcUTJG/
V5Tt2t5rrK89Pc3HM7oAAAGAgWzOMjRrI2HXq8NIsdFrVdkBznbv+kTsgAAAAA
AAAAAAAAAAAAAAAAAAAAAMfkCMD49qRi1jJ5Qt1dpNwSAAAAAAAAAAAAA
AAAAAAdeFUzzQcBGvLvEB4Fgsbga+o15jwMdGvs+D8iNcFQB6TzM9mGXSU
mZdlhxPeWnNXDI2U72avmQnNOaE+mcia+4SzvDHVJZfTY1YabLrUaQK7lNFZf
bO7aFp2427YMgAAHlgyfeuNaqqRo5rwGya2Vs9kK0z5bu5oTugAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRr7Hs6NdcjXm3z13wka1hd
dhk1pE1/W0a/
f0duQYsU2fKsuhpPyc5YdTvlGWunosv7WWt+Un5OWF8vKJm0PLbMZfB7fpOUF
gAAAAAAGrbSUr3qtrI6ryYYd/
RHM+5mhYzWuRNK9vQfQnMAABxF0pIw1S4nOEq8Dp93hMFh9nqzOVu3ugno
gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyo9XxgMZGHMaz7
vewx7rk5+9hrN6rLfSteMhO5khfIyuZI6yG6mXXMlkU5OvsGQAAAAAAAAAAAA
AAAAADXIHs3jI0ayNh16vDSHHha1XZAs5W7/oE7IAADV9oKVg8FlYErwcL9/
CNSapEqjLE9eVnHNuqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAOtHY1/
XYwyEhvANewOOrj4o17A+aBzDYrYKq5Jls4jiRbdP6DKAAB5oNnvrjWqqkmNq8
BtGrlbQ+2t0+272UE7gAADw+4iveq2ohavE0ARz5HmOqu8T0p2dHfbsgkAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY9GQ8e
o4WNXP6v7fY1o/
12bvbGGviyOSTWXI2S+mWv+VmtOWKu2UDJCmi2lxka9ZN+xWrRzLU9sBTrb
u+gTsgAAIzkxGKqfzPUHV4HmymLMFkM9V6ebdzaBO+AAA+foRPFVrY/
ryoRdvVHI2meKvZ2d6yLFZW3cBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADphab+I16pbRusSV4doPZXKfbdnIC
dsAABr2wlay4uzkEV4Wtd/
QjSnrdKqTVbsyCJ6YAAAGpwVaHCRoVsZnDV4eTnyuHrnZtG1Ta7d8FwAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpxi
mZafioxSLpet45r6LtWCzFeXPwv6QAAAB5/
QRBei2siivHirlxHMmCTqoynPVltxzbrgAAAeGCLC9MatV2/wCgV4HbN8F/
TJaxG0k39ADKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAABjsZshj03wyAjHG3RKBSK5AyhkCc4AAAAAGgQtajWI5teGRx1
eNKktVTsnbsZkT0wAAAPmKpXRhqim+Fa8DqlWKitreYXmW3oPsTnAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAA1+uNmKz14qbYSnJi3wW74AAAADVtpKVf8NloErwcJJEbowWualtt/
SguAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAcdCPQxOOY9naT4YxyIivwqTEhDxsc9q7eFSy3xWDoilnfLWgpYvxwAUnT
wQ0U2LXXManfZjSZEt2QnogAAAAAMZkytXPJIceU8zvc51tslbrhPRAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdfYRgsftq
MWj9G/
lY588nFYu6ZXIiLiXiIb65oKwl1ziRBvVO4gX5nwiAOuwZEISJtZnCdoAAAAAAAcE
RRfs+sU81m7JwRO9umE9IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfB9ujoV9zE+ZXPtY8sV3Fp
HhUkWNtQ0mNAbfHNkbefn6v6YGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAeZHpYXxxj2ZpWOY5GRb4lJf+IW8bH
NvlhfqUmPyxMUk/yxv8xTf/
AC6T8qbj5NZK57y4cpkPN0Ir8+X2FMZ582VwHGw/
ZrbZOTWm0cmrNsJ1Nvu8TmjidfR9z1wnaAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AA6cfjK9Rz7MKzo1bMKzizHtq3N07G0qzo17McVoFmFZxZj31Yn+dnN/
NfMVGC0HuheaJ6DzemN1ty4rQjl2s831Hk9PduK0I5lrPrzem3ZMRC0a0346unE
c+0frqrIM55pef0T0gSA6+zDqfSs6vIsvzWcWm9FVdynNPDEZeekCzFZSrcadj/
VV2VWvK2M9FX2azHsq3NDHIeL76wslmFZ0admFZxZ/
31SlediVhPSMVDEas2Y2unEc+0Ptqpvs55ueX1T0vN4tPheOdZjKVTtIyeoTvY3r
gnXa8iz31C2UnNJqs6Nay6tAsvzWcWYyNVrJzt9qs6NS0nqjuRLdQGbpx+Hr/
HOswrOjWsx6qu/SbWIYmOel2Cc7q7Y3Ydy+qy/
deZatjclbrurt11HsVnV5Fp+dY9Fun71Z1eZafv07cbdZjsjEEY5J5rN9RzbV4rsgK
d2effViY2GRcfqELJsvla22EZev5rT8xp2bycMTPPRYzurGxWT99WJeYZQ8Xt1Od/
LKzq8m1XZHkh26rH+ms8YLE81m3SNWUa9WFr0wvr5sLGvXxadO7Vma97+p
z1WWoRgqq2XWo5j63OdZ3Krz7tf1O/
WjFZXFV4kjTRDEz27iN5IjdkhkV87aWPJDjy3oIdFfP2m8/
fE9vR6LjH3XzvxzO+3T0KspRi6NPdJ5qlP09DcBbrgMNmcNGOtQr5flNm8z0asp
khuNTJ2MrBKc7Uti3c4q5aOrleV5ZViqVY0pLq/Z+sE7KaIXmiMG7Vhs/
WCc7t6psjThzptVoM7cIffwjm2h580d29HoOIc187xzOW5z0KspYieNPbZ+qpOs
7/
hhiZ4YjXWkq3aOdj1i3Yrnruxa7Ty+75TFzpPSqutPwiqzs645XPMsSfPQqxZDL+
Kd2sYrwpqkSO5Et6MJ2dRr/
YCv9eE+vmxMYK8fNp6+zk1qXIj2KMVjBf0qu02VuryT2+KOVL8n1wsdbuc67s
WutquYr5iwPo8/
ot6Cuwr5+fdx03crelYLOpy1RbTq1PLzP4tUmW3VrXuWm91eXuOkejzplXK7NEl
uppRsVeTNOx8c39PG0NbLrVPPM9jfGw2t51zY7+nr/
qNha9V4OyWJqlYhtYOE9j1yNLmxsVzpO/
q1erC16YGya2jR23nUS8477FspW7oTtV31nZtZp5fdp4geeLdgJ6FZsVlsTTyvry
GEGb8fgAK2ljyQ48t6CHRXz9pa52MrRPW8O56ZIsaE0i/
peqsFpK1V5WGkqNd6jQnRo0bW69glfDHYPDattLYrUK+cnDftB363o1d7EQS19
H2bWc5Xj2SF/U8VctHVyvK8sqxVKsaUl1fs/
WCdlNELzRGDd6wWfrBOdsmto52969hS7cNPlJeW66WJrVbo4na9U3+vMm8X9
N8Vks9XCOXgJBj7dK87c4YmeGGVaOrloJ2PcLdiueu7FrtPL7vO8EztbsuOeJ36rdf
Z108nLkpRbKVvQsdkcdOxWIU8tNUiR3IlvRhOzqNf7AV/
rwlgq+owWegPXU3bHrkuxjlE+L+kiWLsnjKeak3Rpp0OduPrF10kpjmTXdi123ar
mKeYsD6PP6LegrsK+fnzctN3K3pQnPHsJ2mrHXidNnquzgRlrm4afGmz+A21E8
Vhm6Cp3kyxDZtX2YLOxFPTi73+Dfa8DKRdYGv07MlzHWCzU73bAU+60zV22L
XuK8B9fO/rSlnS/
ptWr1YWvVeKmSG5bYtl48ienseX0XcGf1Cc9eNY2bWaeX3aeIHni3YCehWfE5b
E08ruEjafNFuvo+nTTG68MivDtLHkhx5b0EOivn7SwDP2hW7sL7DryvEtbzCe32
7+11m2PWY5SVIusetqEOWO1hnhhM5reDffJ656lahXz84b9Dmx27u9VrzOpRo
Nv1Ca2KQ2heqe3t1WZVieOWlqJZvY9wrBZ+sDOmeGJnjBvFYLPVhnOk6MZOa
u5eH2Y6epCfHPFeFOMebNnJ6sH5zBo5dq/
uD9zt39wrJsmqxy0lxrYpOKgmz9ZWTqsLXrYIwWO6tG0q3W1DxlfPyNNGib3b0
Ljniduq3X2ddPJy5KUWylb0LHZHHTsViFPLTVIkdyJb0YTs6jX+wFf68IWCjBX1v2g
sWxWJqtYielsmnbjBk7miCvnt/w2smZ7/
AYbU4LE5W3o66CvnLA+jz+i3oK7Cvn583KJdgt3t6aNwzb1DEqY9Sum26krwO
zj43lOlcb1oSdw08RIE3artVu/
wBdaJqgKNBs2so52/6ALJ3gjd5zTuLeigXS5PjCnm/
qyddLRzu8i3X1avVi4VrxdebEjR11sQ12yUHzrPQy4t2K76zIOv083lZ4h6YbdYJ3
qz4ncsdTzOzTPFcqW7KN5I0RkgxsPNeBYOPJE0m3dg/nYOa8Kwfd199/
TQNpVqo3ryIdbJ4Y5+JbjJc58JJpPdCcoDDZnFsdZWw8083rrYuTXG8bzObSJx5+J
7NbcRuus14PgZHPq61ZXEbLbt+Gr9oq/
Rra9M8cymw7VWG0MAM2utiRztdbENdbxIM5/
rcfpbuwbodq47ry4YbNj452JbfJU59flUnuIqlXgqkm+Oq8LVWW9bDr21bZKM7/
AN9hbsvn6+U1X69l+KeX3uUY9kK3eY7I+Gc9X2xKeakiRNI3e3fCdnUa/
wBiIYrxdesZCs4p9dbrQx9OzCWyfKvJn6ssjarO1rso6hNKM29C3brXhZc0SnnsrK
sNTJO7XVsSObL/
AKHdbu1wbDzXha62Ia62ISru+pbbb0Nc9dm2NI4muz5GM+tvVq+2sgU03Od0
jtSROXTb0MJaJtHTTznishGMr26fnjCV8E2K3dmeV4E/
e7R94t6OIIwmHQI4mHtHXuwk7vInpgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAf/
EADIQAAAGAQIEBgICAgMAAwAAAAACAwQFBgEQFREUNDUSExYgMDMxYFBw
QEEhIjIkgLD/2gAIAQEAAQUC/
VzrpJhWbj0QrbGJArcgpbXxgewyJwaWfHBzmUNqi6WbAk1IECdokSBK5KYCFsYq
BvJNHX9E5zjAUkWiIUsscmFbi3wFLivkK2aRUCsm8WGTZN/
gtpZ61DW4KlDSeYvP6AOoRMKzLBEK2tgmFLkUK256YKz8isFHKyv+WzmHjEM
LaiqElk1yfuyjlFEKz8ckFLczIFbkcK2mQUCsu+WBjmPn5MFyYJxztYJ1uRUCdPdG
CdNTCdUjyAkBHEG0MRtzQbe0G0Mcg8DHHClVjzhSmkC9TephxGO2vvavV2R4
62JqBNQipP25R82RCtjjkgrcGxQrcV8hWyyKgVkHa4znOfkKQx8pxL5UErMicJU5z
kJ01LATq0eQJwzBIERTTx87mLZuw6p6Jg7gHzT3MZNzHHi7C3kP2fOcYCsg1QCt
ljkgrcUMBW4OTBWxSKoUeOFvkI3WUCcJIKhOqyBwnTVQnTm+AnWY5MJxTJIFT
KTH+S8iGb4PqkskFUjon9kRZlGoQXTcp/
r3HgFX7VEK2WOSCtxQwFbe6MFbDIqhR0ut8WMZyE2DpXKddkVAnUXpgnTAn
UWRQnXo5MJMGqIxjh/
Bu2Ld8SSqiqIMXJDax0qvGKRsohJpfrCrxuiFrHHIha4NyhW4ODBWxSKoVeOF/
hI3WUBISQUCdWkDhOmrZCdNQwE6tHkCcMwSBEU0/
wCNkYZtJFk4VxGZ1buVWisPOpSRf1E6yaQWno9EK25mQLXFXIVs0iqFZB0t7yo
qHCcS+VCdYkThOnushOmlCdTYFCcBHJgjJskOHD+VOXByzFX4DOMlzoQ5kzQd
hw8/
S85xgKyjNAK2mPTC1yC1rfqBaXfLgxjG9hEFVcpwz9UErEicJ091kJ00gTqbEoJXo
4gTYtUhjGMfxCjtBEKWGOSB7cyKM3JMZuYxcyglxb5Cdpj1AjJNHHzzEAlI4cN1G
qun4EFY+P6Ko4SSC1gj0QrcGxQtcHJgrYZFYKuVl84IYwTj3auCQEicEqb8wJTVQ
nTkMBOqx5ASCj0wRk2THDGP4nOcYCsi0QCtmjkgpcUMBW4OTBSxyKoVfOV/
ibyTtqGtvXIGc+ye/LJxSMmk/j1o5bWDsWWoIcpy/wA6tINUAtZ49IKW/
wAQNOTLkZbT7sFq8kqCU5xnBKamCVJiUErsaQEi2SWSpkJ/
GZzwCsi0QCtmjkwrcUsBW3uzBWwSKwUcrLf4bGceMBHWNq9+R6xRfoysQtFq
6ws8pHGRWTcJ/wAyphznJmbpUGgkVQSvxxASOaJjBCl/
kFXjdAK2OOSC1xblCtwdGCthkVQo6XW+XBcmCcc7WCdbkVBipv8AI9IPBmpPs
BStyKYWYOkPfF2JwwDJ+hIJfEugm5SmYJSNNrEzC0WozeJPkf2cxykwtMsUArbW
RAtcjhWzyKgVkXa/
yEbLKBOFfqhOqyBwSmrBOnIYCdXjiBOHYJAiSafwOIxm6DqoIHD2Besva1dqs1Y
eeSki/
EYuDlnK5lt7I6SWjVo6TRkkf2FRZNILT8eiFrg2KFre6MFp6QWB1lFfhTbqq5Thn6oJ
WJEwTp7rITpqYJU2BQnARyYTZN0hjHD/
AAn8C0fiSgXUd7CHMmaDsWHXyTlb8YzjJc6NHirFaImEpRP9bUVTSwtPx6AWuD
coWtzs4Vmn6wMcx8+zCZzAkY8UBK9JHBKk+ME6aoCU1DATqseQEgo9MEZt0
xw4f5f5EtWE3AWROgprBWT5Juvkf4VSOgpoisdupCzxJEv6rnOCheYYtwvbmhAt
cHJgvOSDgeBwuCRjxQEr0icEqkgcEp7rITpgJT2uASrRxASBjkwmwapDBcF/
hpWIRk03zBaPW1g7FlqCmwcvxS8KlKJu2arFbQhzJmg7Dh3+pq+bnCjJ4qD1tJb
JatHFBYCOKCxbIgKgkQcP5F6xRkEZWIWi1dYWePHGRWIun8UhGoySMlGLRq2s
FY+P74rINUAeyRxBi1R+QlOx62SmwfHxLoJuUpqBUjjaxE0rFqNXSTxH4nTRJ4j
MQisYfWCsWWwKbBy/uZjlJhabYIBa3MyBa4r5C1kkVgo8cLe1q/cMjRdpTcD8/
EYuDlnK5lv7IyVWjFmL9GQQ+JRMqpJuumZ+yEnzx+UlSLp/
tyzpFvhxaGCIXuJ8hexSC4UXVWzoVuqcEiHymU61IqBOoOzAtMwM01IOqi6SC7
dVscQlhMyyQ5VC/
FN1vCwMXJDaMH60cvGSiMmj8X5E5Wh+NYiaViztXSTxH9rcczkOIuUcj0fk+cU1
IFqDTAJVI8oLXI0oLDsCArZEnwPWCD9OXhFYw4hZ1SNOisRwn8UzApyJV26jZX
Rq6VZrREylKJ/
HN14r0KJmSPpGSq0YsxfoyCH72omVUk3XTs9IeaVi1GzlN2j8UpEIyiT9gtHLaIrH
bqQk6SRL8cxCJSZHTVVmtoxfrR60XKoyaP75NVrBwYuS5iZdWLWaO0nqPxPWK
L9GWhlotTQhzJmg7Dh78klGIyaUjGLxq2jZyq0Wh5tKTJ+
+TEAlI4ctlWitYeGbyPxqokXTmq8dhnTGeGYKxeb8jpqk8Rl4RWMPokqdFSEnyS
GP3YyhCBSVZJA9mjiA9wa4B7mD3B1kSEmvJGrTUy8n8mcccTdaH41gbF4fkUT
KqSbrp2WpTZLmCsWHH7ssxbOcngY5QGrEcYZqLLIzTm2RmmpgtNL4mLBCPS
+aarpHoVSOippWpvPi+P8AInK2PxrBWP8AoyWhkZQj1kswWBTZIaLd88w+Sbr
xHoVSOifSCsRm2SmwbH9FTDAkgy0qJ+Md8svCoyhHbNVitpW5vKB/
6KkXJWjLSppeCM+aQjkZJGSjFoxbSvSPPsf6CycuAZ2gUGlGRBmdjijNljsA1rYFB7
i3wJSYXlDhBEzhZm3K0bfO+ZJv2zludquKo58qR/
djLJlBpNmQGsEcUGtUdgGuDTANcig9xWBrc9yDWiRMMz8iYHlHpwZ0ucZObPw
Yxk2a7Ccnj/
Bt6GCPhDm8Mp+6GLg+FIhoqD1uPOM1SPyM1FkM09oM01EZpqYzTB6MOPRq
gzTXAzTnQzUHg9JPh6SfD0pID0tIjNXkcD0zIjFbkshCpPFMxsA2jv8ADuRseaIfHil
P6dnnuH0iKq386T/
pywzpUCaVhhyjH+kvFgZVTwOcb4BpNmUb3H4BrBHFGbNHYBrVH4ClvalD+zO
neNIGIzIucY4Y/
oDJsYBnKJBmSZ4GZuPKDWGOIM2iOwDW1hgZuLYGuSYNcsg1xcA1veZBrXIZB
rPImGbDJZBpqQMMyTzIM7cGGVD5HHj8URBLSRm7dNoj+8n80GzIA27BQk7nB
kbCYZYWAwUiZ4wNAzJh6alMg1Zkh6akh6akh6bkhmuyWB6ekh6ekhsEkNgkRs
EiNjkBscgNjkBscgNjkBscgNjkBscgNikcjYJIbBJD0/
JD09JDFcksj03JD01JBCpPVAxq7RrnGMYx/
wDmqqKERJubMbmzG5sxubMbmzG5swqumiTc2Y3NmNzZjc2Q3NmNzZjcmYS
VIsQ0i0Kbc2YReN3BtFnCTfG5sxubIYzxws5Sb43NmNzZDGeONVn7ZuMTkfnKT
lFx8JjYIXc2Y3NmNzZjc2YTWTW9+ZJnjO5swi6RcjOcFxubMbmzCLhJxjOcFxubIb
mzG5sxubMbmzCT1utn2rPWzcb5H8UXSDj2LLpN8bmzG5MxjPHGh37VI25swk
9brnWdoN87mzG5sxubIbmyG5sxubMbmzHjLgm5sxubMIuEnGNVFCIk3NmNz
Zjc2Y3NmEnSC/
uOoVIm5swWRaGNqc5UibmzG5MwkqRYiihUibmzG5swksRcmij5skfc2YxItDZG
5sxubMJKkXIooREm5sxubIYzxwaRaFNubMEkGqh9DyDVM25swkqRYgWdItxub
MbmzBDlULoo9bIm3NmNyZixdn9uPzaOze+s9nk+4Cn9bpcei0b/
AEXLpdEPoEhIoxyMhYXb3PHjoQ5kzRdpVQyisRwn7pXtvsKcxMsLM7aZYSKEil7
HPUCmfl50mlP6J90ftxnOM12eOc+j5+hHoyNjdPM5znOQU5iZjLQu3ygum5SFw
6HRv0+k93cVTu1y6r3r9p0p/
b9bL2f2FNkmYizqImKbBy62535bUFNkhmLnDxppO9p0rfZ5/
s+lY7Ppb2fhVGM+HLBxh2zmmnJyQp7nxNrc58tkIlpzsg8Xw0aGNk5hUWXmO
Q7cYatlFMqqCoO/
EkJ+P59jpU3vnMwqoVFN65M8dCtx3OvbF2fTw5HhyPDkeHPGz9n8OR4c+zw5
HhyKz2eS7gKd1ulx6PRv9Fy6XRD6XjsjJu/
fKyDjThrX5jLBf3SvbdMYzkcOGrB8rHuGboj1vq56gUz8vOk0p/
Qvuj0Kkc45dYGLkmQQ+UztFuYbOXBGiEjIKSTnThrBS5o1xjODYuPRaNun0nu7i
qd2uOOLrwmHhNrjGcjw5HhyF+0aU/
t+tl7Pp4cjhnGtTkcnLrPPOcktKg88SWk52nSt9nn+z6Vjs+kuz56P/
GlQdeY0uDTiUVhx5EpanPnSYpzT/
m3OvLZaQjPko4W535bbSGd8lI6WKP5F+IN7yMiLW98hmMY8WYZhiOY2Ls+kA
UuYjwFHgKPAUZxjI8BR4Cif7uKtjjLeAo8BRjHASfcBTut0uPR6N/
ouXS6IfRbnviWBS5OaIr6DJMyCZy2CvkRJpW3vOR3tle26VIuMxpkUz4ma0mon
pT3n/fVz1Ipn5edJpT+ie9HpT+3C2IJmjtI5PKTC3vf+RjGTZh68i0TyinnE/
XiFS0q77mmFx6LRt0+k93cVTu2S4yPAUZIXgp9gp2MZT8so8BQ/
6HSn9v1svZ9IMpdpMimfE8yKxkRBK5SltJd5yMeGrVR4qIZ3yUjpOdp0rfZ5/
s+lY7PrYGfJyQrTrlpSVa87HhFUyCq6xnCwh2nJx1odcxJiDZ87I6TzznJIOWyjUwg3
nOxono/
cGGkE952NnHvPSIrEfzTwWLs+jedfNUfU0kPUskK1IuJAmtg7wKr3bWT7iEHKzU
28PxvD8OHzh1jRv9Fy6XRv9Est58kKu3wvKaHJhQjlLyHApy3B17ZbtulR7ZpPts
NZUV9TKcvq66kUz8vOk0p/
Qvej0j5tzGo+rH4fSrqR0gYk79yJ1XK0sK43w4ldM4wbD5HlngqK3gkLj0Wjbp9J7
u4qndtP9Kf+xTfr0f8ARaU/
t+tl7PpCuUSRRnrYhZt8WQkBApebLaXB3xOKe28Ssk35V8IN5zsaJztOlb7PP9n0
rHZ9bYz85kEz5TO1Xw5bTjXlJPSFa85JLq4QRWVysqKiz8tsJh3yUeGSHNO7g18O
RUHfgX0scfyT4R0qePRBS5OaJY4j2IsXZ/
bTfq1sHeBVO7ayfcfe3+i5dLo3+h7jg8FPz/8AO1ljYPJip4zullfrsG/
qSSHqSSHqSSFZkXMgJbtulR7Zpa88ZUQ2OMrq56kUz8vOk0p/
RPej90PZsEGM8cSZfDIiomxiR1mzeKVFW7vcei0aZ8TXSd7uKp3XT/Sn2Cm/
Xo/6LSn9v1svZ/dU43KZQY2C4kHWXjwVpty8XbW/lvxUHngcCd7TpW+zz/
Z9Kx2fVZIq6TlAzZwKm686PsrnmJTStuuWlLU68iNCCRl1myBWrcXB5xUFTbebI
WNvzEUGTnLR2Q+FCCcj9wYfjWrR3Mu9LF2fSIgmLqO9NRw9NRwZRrePxrYe8C
qd21k+4ivRyMi59KR49KR4sUM1jW+jf6Ll0uiH0WBvlvKiDeYYyOj90Vk0MbJzC
mt/
+1y6XWmfiW7ZpUe2BRQqSci7516Kyh50toc3hIbPEwphP+rzpNKd0T3o9K5EN
H7P01HB3V2Z0M44ZFVeZcMbI38iVEQ85GQxnBsB24K0bqqZWVFPb+JxakvMit
K+6w5iwofCRHa/MuhT0uLzT/Sn2Cm/Vo/6LSn9v1svZ/
bCIN3MgUuC4FlecrG6J2xyknJzasqmGTnLN0Q+FCTvadK32ef7PpWOz+y3M/
LcivyOI5yofKqhCZUOomZI5DZIafkyyKgqbPznoMbBCyDrL14IuaViiKWx0qnpV3
nMx2llY4aSAKXJjRjLEez0sXZ9IqxM2bD1YwHqxgPVjAN1yuUdLB3gVTu2sn3EU/
rdLj0ejf6Ll0uiH0WuP89vpE2c7MhraxxiWmlZQwIXKholjiPYykUnKp+j2o9HtR6P
aiLh0ooS3bdICcaxzM9uZFxKz68ljSqx+W7WTsW2v0rPHKYmLMio30qSOU4550
mlP6J90eldmGkez9TRoeWpoRHOeORTPzaY/
LpppEWU7EmbaxxiXnFZTIxjJswrDb2Dxvh21VTMioIqVVi1i21jkszYzyBNKqz5eP
0/0p9gpv1aP+i0p/b9bL2fSFbImirNFcouCmyQ0LJYkmYtTzz3/
uq7zmY6d7TpW+zz/Z9IWfaMI/
1ZHj1ZHj1ZHhi9SkEJxnzsdrVmXMyFqZ+Q+1r7Lko0WV5ysb7qu75eR0uX3Bt1
Gti7P7oftelg7wKr3bWT7iKd1ulx6PRv9Fy6XRD6M4wbE7Bmj1PZ+RXILKHvle2
+6Cgjvj4xguJRxzUhq1bHdrtG5WjZ50mlP6J90fvrkcZgy/In4IzI/
trsDkmdLNC5Nn2wkQeSXKXBC6Z/Cn/sU36tH/RaU/
t+tl7PpBdpeNSPWzpsdm4EJJZjXi7kiDZZUy6oqDTB8+SmPJTEs15ORFXectIzva
dK32ef7P7qr2kTjPkpHStsuUjbCy5yN0iGfPSGlqd+e/
Ea25x95CWB5KYt7PGCBM+Ujs3GHbYXL7g26jWcRUcRmxSI2KRGxSI2KRGxSI
2KREYmZGP0mol64k9ikRXYt20kdX8M+Ve7FIisRzpm70tDRd422ORGxSIRx4Ur
QzXeIbFIjYpEI44JAxcHLI1NNXK0BIIZxFvchtWX6+YyvN4/4JFMyrDYpEbFIjYpEbD
IhCqv1QwqzZrnGOGFC+Mj2sPWxjsnKeSMHSga1p+5zFQyEWUOi5O22ORGxyI
rDRZm0dlydrsUiNikRsUiNikRsUiEKq/
VEZW27DOhi4NiRqiS+V4CQQztb3IbVp+4zGVtuwz7JOsIO8r12QQztb3ASgpBb
LCo/wDKSJEE9c/
g8HIZPsUiKuycMk9HhcnabFIjYpEVloszZ6zyCjmM2KRGxSIiEjoRossOZ6TYpEbFI
gxJU8RsUiNikRCM8so7SzxK7pxsUiE4aSSPIlVdw+xSI2KREEgo3jJlE68ZsUiNikRs
UiNikRsUiNikRXW6rWNFnjFHqexSIaV96o5xjBccOIfV94R3sUiKxFKMsBQ2SJrQ8
mursUiK1EuGzvSYac7HbFIjYpEVpN03ai0MHLxXYpEIQkgVb/7x/wD/
xAA7EQACAgEBBgQFAQQJBQAAAAABAgADBBEQEhMxQVEUITIzICJCUGFSIzBA
YgU0Q1NgcYGh8BVwkJGx/9oACAEDAQE/AftBYDnDkVD6oc2oQ5/
ZYc608ocm4/VDY55naGYcjBkWr9UXOsHPziZ1Z5+UV1fzU/
fTYi8zDlUjrDn19BDnt0EOZcesN1jc2+EVu3IQYtx6QYNs8A/
eeAfvDg2xsa5ekII57AxU6iV5rL6/
OV2pb6T91NqLzMOXSOsOevQQ579BDl3HrDY7cz8AqsbksGJcekGDZ1MGAOrQ
YVQgxqR9MCKvIfuCobnHw6m5eUsw7E5eewEqdRKc3pZOf202IvMw5dI6xs9eg
hzn6CHKuPWF2bmdgVjyEGPafpgwrjBgN1MGAnUwYdI6QUVD6YABy/
grcdLecuxnq8+myjJany6RHWwar9mLBecbJpXrDnVjkI2e3QQ5dx6zets7mCi0/
TBh3HpBgP1MGAOrQYNQgxaR9MFaDkP4E2IvMw5VI+qeLp7wZNJ+qBg3L48jD
1+aucpVc1J1EqtW1dV+wNbWvMw5dXTzhyXPpQzfy25DScHKfm0GAx5tBgJ1M
GFSIMakfTBWg5D+DNta8zDmUjrDnr0EOdZ0EOVcesLs3M/CCRyiZdqc/
OVZddnly+LIxhb5jnGUqdDK7GrbVZRetw/P8aRrDUh5wVoOQ/
hi6rzMbKpXrGz06CNnv0EOVc3WF2bmfgFVjclgxLj0gwbOpgwO7QYNU8FVDgJ0
MfCsXl5xlZTodlOU1fkfMRHWwar8N1C3D8yytq20aKxQ6iY+SLfI8/
t7Oq8zGzKV6xs8fSsbNtPKNda3NpoTBTYfpgxLj0gwbesGB3aDAr6mDDpHSCiof
TAAOX7lkVxowl2ER517KrmpOolVq3Lqvw21LaujS6lqToYDp5iY2Vv/
ACvz+1GF36LD4luwhxr39TwYA6tBg194MOkdIMekfTBWg5D+EyMYW+Y5xlKn
Qyuxq21WU3rcPLn8LoHGjS/
HNJ1HLZjZf02ffGvqXm0bNqHKNn9lnjrYuefqErtW0ar8N1C3D8yytqjo0Vih1Ex8
gXDTr8JAI0MyMUp8yctmNlbvyvynP7sTpGst+lI3jG/EOJe/
qMGA3UwYA6tBg1CeEp7SzBU+iAvQ/
Yyi9bh+fhsqW0aNLqGpPnASDqJj5Qs+VufxZGJ9VezHyTV8rcoCGGo+/
XULcPOMlmO8x8gXD8/CyhxoZkYxq8xy2Y2VvfK/
P4sjFFnzLzhBU6GUZDUn8RHVxqv3wso5mHIqH1SzJx3Gjecr94bnxc5kYm781e
zGy/of4r8dbh+Y6NWdGlNzUnUSuxbV1X72a0bmIceo/TPC09olFdZ1UfuMjED/
ADJzhGnkZhXFhuH4raltGjS6lqToZXa1TarKbluGo/
wNn6b4mF73xugcaNL8Y0+fSV2Gpt4RHDqGH3w2oOZhyaR9UOZSOs8dVPHp
2h/
pDss8e36Z46ztDm3RmLHUzDpNa7x5n9wQGGhlqcNyswW1rI+9mms8xPD0/
pnhaf0zwlPaeDp7TwVM8FTPA1TwNU8DX3leLVX5gfur237SRMAaVk/
4K3hOInecar9UOTSPql+ZvDdriKXbdErQVqFH302adDDd/
KYchv7sw5Nn92Ycm7+7nicn9H/2eIyu3+0N+V/
wTi5X5/8AU38k95rf+f8AeaXHv/vNyzsZw37Thv2nCs/TODZ+mJi2v00lOOtI/
P8A428jJNLaATx79p49+0rymdGbTlPHv2nj37Tx79pj5LXPukQ5zA6aSiw2pvGW
vw0LTx79pbYa69+ePftBLslKf84c9+glecreTjSc9rHdUmePftPHv2iZyn1CAhhqN
mTeaNNBKctrLAukycg0EaCUZbWvukTJyDSQAJ49+08e/
aU5odt1hpsuyEp584c9+glecD5ONIDrL8tqn3QJjZBuJ1Gxs5lYjSDKbg8TSePftPH
v2nj37SjJNu9qOU8e/
aVPxEDbMjKal90CePftBnt1WVXLcNV2Wvw0LTx7doDvDURzuqTPHv2nE/Zb/
wCJ49+0rbfQNL7GqTeE8e3aX3mtQyiUZZtfdIl+Wan3QJRebVLMOU8e3aUWNa
m8RMnI4OgEpyzY+6RLCyqSs8e/aVPxEDTJyOBppEzLHYKFmd7glFPGbTWeA/
mleJuKy685/wBP/
mjDdYiUYvGXe1lGLwW3tY3qMwvZmV7LbMn2Dsus4VW9CSx1MTBYjUnSWVtU
260wrv7M7bPQdleHxEDay2pqTo0w7Sr7h5HZ/
SHJZie8Jn+pZh+8Jn+pZTXxX3ZZhbiFtdllvDq3jCSx1MTBZhqTpLamqbdaYVvn
wzMz3jMDm2yz1mUV8XH3fzPAfzbKsPioG1lWPwA3nsxvZXZne7KKeM2msvxTS
N7WUOa7AdmfZySaTCfer07S3222D+rf6bKPaWMoYaGMpRiplf7fFK9ojbjBpY2+
5aP+xxd3vFUsdBFUIoUTIfiWEwEo2sVg6hhMqrh2fgzBs5pMiziWEzBq/
tDM73BFYryM41n6pjEmoE7LfcaYPtbG9RgZhyM3mPXZk+wdmd6FmONbV2Z4
GimY50uWWZaVNukTx9fYziC2ksPzsxvZWZw/Z6yv1jZ/
SHJZie8Jn+pZh+8Jn+pYrFDqI1tjDQmUCsv85mefkEoGtqjZnj5QZQdLVmZ7xm
BzbZZ6zMH2tuL7Ij+k7Mb2V2Z3uyi7gtrpLslrhppMdDZYBsufiWFpbVu4yn/
nnMN9y3TvLfbOwf1b/TZR7S7M6vR9/
vMF9HK95boLDpKtDYNZnPq4XtMKvefe7TIfh1kypd9wszF3bf8AOYL6pu9plVcW
v8xWKnUStDYwURVCjQTO9wTF4e/
+0muJ+JW9Z8k2W+40wfa2N6jMSqt6tWEyKa1qJA2ZPsHZlV79Oo6RWKnURcq
phqTpMq4XN5chMNN6ze7TIxrLLCyzwd3aVoa8fdb87KL6lqAJmVkC3yXlMZN+0
TxFWumszLVsYBekwxrcJn+pZh+8Jn+pZjbnE+flG8Lp02FTbiA9opKnURMuphq
TpMq8XN8vITDr37Ne0zl0cNMa3gvqY+VUq6g6znMVd2kbcX2RH9J2Y3srszvdlF
PGbTWWIa23TMF1816zKfcqOw3WMN0mA6ecL8Sje/Gwf1b/
AE2U31CtQWniKf1S9RdV5RGKNvCIpscLLE4blY7F23jMavh1CZz6kJFYodRHsaz1
GYr7lo2ZAC2sBMBRqTszVZrPIThv2nDftMJWVzqNllb758phAirz2NW+8fKYYIq85
kgmk6Thv2mQCaCJw37QcpfhnXerhRx0leLZZ00lVa1LujbZ6DOG/
acN+0TFtfpKaRSugjo4b5hFrduQmLj8EatzmcrMw0ExEYW+YmcrMw0E4b9pw3
7SvFtfppEQVruiX4Z13q4a3HMSvGss6aSqpal3RLahau6ZZjWV9JuOekow2J1s2
8N+0xQRSNY3pM4b9pjjSpddmarGzyEwlZXOomZTxF3hzEVbEOoEyWe7TQTEq
bi6sJoJbSyuQBMfe4LIROG/aAHw+n4nDftOG/
acN+0o8qll9LLYdBMKohi7CZtRJDKJTQz2AEbLBZY5bSYdW6mpEvr36yJw37Spi6
AmZKObjoJgqV3tR/2i/
8QAIBEAAwEBAAIDAQEBAAAAAAAAAAERECAwUCFAYEFwkP/
aAAgBAgEBPwH1VKXul/
AUpfBCEJzfb0pS9QhCeOE2+wpeoQhPwFKXYQhPq3wz03zkIT61KUvdL+ApS9Q
hCEITb7mlLxCEITyTx310IT0N97SlL9G+5+SEIQhPoT/Gpl/
DTwzF+PYvxFKUpSlxeJe+hCEIQnkX46/
hvk+f+c1LlKXLty7S80peLlylLtLl25Sly8UvF25duUuXbl2jyZOUPHxMXMxYxDEPJ
xMQxcTJy8mvF9FixD6XTx69vD14xD4evGLVq1Y+v4Lti1i1i5fS6ePhZOVjEMQxb
/NYh9rl6vovVqx6tWrqZPIxD2ZMnM8LEPGLxofC5X+Rf//
EAEgQAAEDAQIICwYCCgICAgMAAAEAAgMEEBESISIjMTRxchMgMjNBUXOBgpK
xMEJSYZHBYKEFFCRAQ1BicKLRU2ODsnThgKOw/9oACAEBAAY/
AvwvnJGt2lZVVH3Y1kcJJsCzNL5nLNtij7r1rJbsACyqqXzLCkcXO6zxP2eV8e665Z
NVIsb2v2tWfpmu3XXLO4cO0XrMVDHfK/
8AsTjWdqI2+Jc9hbrVmoJH7cSzUDG7TeudDN1qztTIfEsZv/cczUPu6jjCuq4Q/
wCbcSuZKGO+F+L+wGW8N2lZdVH3G9ZBfJsaszSnxOWbZFH3XrHUubu4lnZX
v2u/
e8zKcH4XYwsGtZwLviGMLDheHt6wfxvnZWM2uWOpad3Gs2ySTuuWZpgN5yy
XMj3WrOVUn1uV73F232tzQSs3TSu8C5jB3nBZ2WNn5rO1LjsbcsoSP2uWqtO3
GtUi8q1aLyLVovIsdJF5VjpW9yyRIzY5ZmpI3mrNGOUfI3LPU72/
O7j4VNK5hQZ+kG8G74xoQfE4Paekfi/
Ozxt2uXP4W6L1mYJH7cSzUDG7TeudDN1qztRK7xrGb/
aXMaTsWRSy+W5c0GbXLOzxtHyxrO1LzsFyymvftcsilj7xes3G1uwfuGfp2E9d1x
V9JM6M9TsYV7ouEb1sx8a+nfi6WnQUGPzM3wnp/
E+NZ2ojb4lzpfutvWap5HbTcs1DGzbjXP4G6LlnZ5H7Xe0ujie7Y1ZNLJ4sSygyPa
5Z2paN0LOzyO2XBc0X7zlkUsQ8KuY0NHyH71n4hhfEMRRdRP4ZvwnSiyVhY4d
DuK2Ktvli+LpCEkDg9h0Efh/
Gs7URt2uXOl+61Zmne7ablmoo2fmtYLN0XLOzPftd7LEL1dHTyu8C1cjaQFlviZ3
3rO1XlYst0r++5asDvG9Zqnjb4Vi/
keDUxh4RfQHhWfB0oteC0jSDxL4Tez3mHQVhQnKHKadI/
DOdmjZtcufw90XrMwSP24lmYY2bca5/A3Rcs7PI/
a72Obie7Y1ZNLJ34ljYxm1yztSxuxt6ztRI7YLljY9+85ZNLH3i9ZuNrdg/
ludbgydDxpV7xhxdDxxBJA8seEGSXR1A0t6/
wlnHtZtKyqlp3cazTJJO65ZinY3eN6xSiMf0tWdqJXeLj5EbnbAsill8q5prN5wWcmj
b9Ss7VE7GrL4R+1yxUzTvY1m4I2+FYv5qWvAc06QUZv0aNsX+kQ4XEWhzCW
uGghCCsIbP0O+L8F4ys7UxjxLJc+TdasxTeZyyMCLY1Zyqk7jcspxO3iXRxvfutW
TSyd4uXNNbtcFnJomj5XlZ2qcd1qyjK/
xLVwdpWbp4m7GLEP5RnZo2bXLHUB26L1kNlf3LFSu8yxUn+ayqQ+dZynkb33
rG98e81Zmojd4vbmSK6Oo6+vanRTtLHjo4gp/0g7H7sh+/
4FzsjGbXLHUB27jWZhkk24lmYY2bca1gs3Rcr5pXybzlkglXx00rtjCsVM4bbgsrg
2+JZ2paN1qztRI7YLllNfJtcsVKw7VkQRN2MH8qx4lnaiNviXOl+61Zqne7ablmoY
2fmufwd0ALOzyP2u9lmJ3tHVfiV1XG2UdbcRVzZODf8L8XtcGUYLxyXjoXBzt2Hr
4gp604UPuu+FBzCHNOgj+fZ6ojb4likdJutV1LSOdtK/
Z6bA2R3rL4e75uwVfJgN3nrLnjbsvWcqXHY1ZRlf4lq4O1xV7KWIeFZDQ3YP5Zj
WdqI2+Jc6X7rVmKd7t43LNRxx/msdS5u7iWdle/a79zAZJhx/A/
Gg2Q8BL1O9oYqht46Pkrn5UR5L+II5b30x6PhTZIXB7HaCP51mjEwfMErLrnNH/
WwBftE9TNvSrVgdpvWRTRDwLJaB3fzDPTRs2uXP4e6L1mYJH7cSzUMbPzWsFu
6Llnpnv3ne1yQSs3TSu8C5jB3nBY+DHiXOw/
UrEYj4lzOFuuCz1PIza3jhkufg6icYXCUz8LrHSPZujnaHsdpBRkivfTHp+HiZOXCe
UxCWndhNP5fii95Ddqy6mPuN6zYkl2C5HgKYDecsUjY91qztRK7xe0yInu2NWTS
yd4uWU1ke1yzlSwbAs7USO2C5Y43P2vKyaWPvCzbGt2D2Gfp2OPXdjV9JK6I9T
sYRLo+EZ8TMfFElO8scFgPzdQPd6/
Zlrxe06QjUUILoveZ8PE4SA4veb1rDgOP3m9I/
EWdkazaVjqGu3cazMMj9uJZmKOPbjWOpc3dxK+R7n7T7G6KN79jVkUsveLlzT
W7XBZyaJo+V5WdqnHY25ZXCP8SxUzTtxrNQRM2MWL9yJLOCk+NiLruFh+NvE
DmEtcNBCbT1pDZvdd8XtDUfo8ZXvR9exXEXG0S07sFw/
NYsiYcpn4cvke1g+ZWOoDj/TjWYge/biWZZHF+ay6l/
diV7yXH58XJa49yyKWY+BasRtIWUYmeJZ2paN1qzlRI7YLllNfJtcsVKw7cayII27G
fvploLo5fg6CjHM0seNIPEbTfpB3ybIfv7QzU1zKj8nIxytLHt0g2tkhcWvboIXBzXM
qB0fF+FryblnKlncb1mWSS/
ksxCyPbjWVUOA6m4leWyyfPSsillPgWrEbSFlCNm1yy5om/VZ2q8rFlyyu/
JY2PftesVKzvxrN08TfCskAfybLyZRyXrg6ht3Ueg8QU9acKH3XfCg5hvadB9nfyJx
yXoxVDcFw/
O0OYS1w0EJtPWHBn6HfF+E8yWt+bhesqvcwf0RgL9oqamba9Y2PdtetWadqya
WLyLJjYPD/ADIxVDbx0HqVzxhRHkv4gimvfTH/
ABTZIXBzHaCPZ8HOMfuu6QsCYZPuv6DxG01e7HobIfv+PM7URt2uXP4W61cp
48CubUsB/
qxK9pBHy9m6OZoex2kFGSG99Men4eJdy4DympstO7CYfZmKobhNKwhnIDod
1beIKeuN8Xuv+FAtN4PT+NL3uDR81l1LL/ljWZZJKdlyzMDG7TeuewB/
SLlnZpH7XcXCppXM+XQhFXXRSfF0H2Za4Xg6QjUUAwo/
eZ1cTCixsPKZ1oS07r+sdXsyyRoc06QUZ6QF8HSPh4giqL303/
qmyRODmO0Efi++aVkY+ZWS90p/pC/ZqcD5vK5/
AH9AuV8sjnn+o23MiedjVk0kvlXMhm84LOSxM/NZdWe5ixVT/
Kr6eRs3y0FFk7HRu6jY2CrJfT9B6WIOYQ5p0EezdUUAuk95nWi1wucNItEsB2jrW
HFieOUzq9o6o/Rzfm6P/XEu5cB0t/
0hLTuwmH8WfspjHzesv9JBg6mMuV81YXHdWVUv7mrKllcsYkftctXv2uKxUsXlW
REweH2GBUswh0HpCv5cB0P/
AN2COW99Mej4U2SFwex2gj2ZkiujqOvr2p0U7Sx7dItbLTuwXhfBOOUz2jp6QBt
R0jociyRpa4aQbcKLGw8pnWhLAdo6vx4WSNDmnSCnT0d74OkdLbLuXAeUz/
SbLA7CY72d0gwZByX9S4Oobd1HoNrZIXFj26CFwc1zKgdHxe0whkTjQ7/
aMVQ3BcLRLTuu6x1rCjyZBymdX49dP+jxc/
3o+vYiHC4jSFe3KiPLYmy07sJp9mYqhuEOj5LHlwnkvtDmEtcNBCbBVkNqOg/
F7TAmGV7rukLAnGT7rug2tlgdgPCwTkVA0s/
HpkizdR19e1GKoYWPCZFfm5sRHz9o6OZoex2kFGamvfT/AJttvGlCmr3Zz3X/
ABe0MVQ3CYVeM5AdDv8AdofE4te04iEIai5lT/7fjfLcG7SsupiHiXOl261ZEUr/
AMlm6X6vWTDE36prqkjJ0XBRvAyYson2txTqj9HN+bov9cRtNXuxaGSH7+0LJG
hzTpBTp6S98HSPhtBabiNBTaeuN0vuv+L8bXzwskPzCx0rO7EsUTm7HlYnSjxLJ
nkHcsVS/
wAqy6olvyauDpm3DpPX7czUtzJ+kdDk5krSx7dINraOqdffzbj6e1dUfo8fN0f+uI
2m/SDvkyQ/
f+xmPImHJejFUNwT0fOwFpuIxhQzdJGPb7UzUtzKjpHQ5FkrSx7dINraetOFDoa/
4UC03g/2LkY4ZbRew9Rte34ZD7a/
kTjkvRiqG4Lh+dopKo5t2Jh+H5f2Lmlf0Ntwj77yfb8HONjukLAmF7TyX9dowzfLH
ku/
sHjIWVNGPEsqqiHjWtMXPX+ErJ4R3hWbgkdtxIcJkRjksFjIoxe55uCigZoY279wd
DMMR0HqUkMvKYbrOC92Vv5/jfKkaO9ZVVEPGtZadgKxOefAsmKU/
RZFKe9yyKdg2lZLIm9y5bG7GLWnLKqpfOsuaQ+JY3E+wuAvK/WatuedyR8I/
copR/EZj7rKS7/kH41uKy2O85WOE+YrRIPGuVKPEsU035LJqZPKFiqneVYqv/
8AX/8Aa1seRa03yrFUR/
QrFPF+axSRHvK0xeZaYvMtEfnXIZ51zbT41zQ8wXMXeILPOZEPqsIDhZfjd+50r
em42Ug/7R/Z6RzDexmS2wP6Imk/2ddS0jr5XYnuHu28K8Zc2Pu/
snpCxvaO9c/H5llVUQ8YWtx/Vay07AVzp8hWJzz4Fm4pH/
kiyL9njPw6bQ+Qfs7DlfP5K4f2BxlZUrBtcsdTF51jq4/
qtZB2ArnHHwLEJT4ViglKyaV3e5ZNL9XrJp4x3lZMcQ+qxGNvhXOtHgC1k/
QLHVy/
VY6mbzrKnkPjWNzvqtPsg54MdP8AF17E2KBuCxuj8dZsN7ysltN5isn9U/
yWTJSjYFz8I2LW2+b/AOljqSdkyypCf/MsbQf/ACLmgfGFzH+QXMf5Bcx/
kFq5PiC1Y+YLVT9QtVd9VqrvqFqrvqFqj1qj1qj1qj1qj1qj1qj1qj1qr1qrvqFqrvqtV
d9QtWPmC1e7xBcx/kFzH+QWdLIhtvQdNfUP/q0fRXDR/
wDzVi+VwY0dJWtReda1F51rUXnWtReda1F51rUXnWHK9rG9ZK1qLzrWovOtai
861qLzrWovOtai861qLzoPicHtPSEWuqIwRpylrUXnRbBMyQjoabQZ5Gxg/
EVrUXnWtRedXhAzyNjB0YRWtReda1F51eOJn542bXK79ajWYlZJun2Jc43NGkrW
ovOtai861qLzrWovOs1I1+6ePcamLzLWovOjwErZLtOCVecQC1qLzrWovOiYJGy
AfCUS7EAtai861qLzrWovOtai861qLzq6KeN56g7jZ+eNm1yu/
Wo1mJWSbruJfPI2Mf1Fa1F51rUXnV40WlslRG1w0guWtRedYEM8b3dQcgJ5WRk
6MIrWovOtai861qLzrWovOtai861qLzrWovOsO8YN1961qLzrWovOiYJGyAfCeIXy
uDGjpK1qLzrWovOtai861qLzrMysfsdxi6Rwa0aSVrUXnQa2oiJOIDC4hdI4NaNJK
1qLzrWovOg+Jwe09IRfI4NaNJK1qLzrWovOsOF4e3rFpZLPGxw0guWtRedACpiJ
OjKs1qLzrWovOsOF4e3rBRfK4MaOkrWovOtai86vGhFrqmIEaRhLWovOgyOojc4
6AHWlr6iNrhpBctai86D4nB7T0iwcPKyO/
RhFa1F51rUXnQcw4TToItwJZ42O6i5azF51rMXnVTsHrx27zfYQ7T6qq7V3rZN2f3
tg7S2PdCpt82x7os4Sodsb0lEMdwEXwtWPHZhRuLT1hBlfnY/j6R/
tNkhcHsdoI49V2R4t7HFp+SAmP6xH/
VpXCU7to6RxZd8+tlX4fup+zPpbN2n2VR2bvTjXg3FCkrHYRPNvPpbwlQ67qHS
UWxHgIupulXk32XsJaesIMrc9F8XvBNlgcHsd02Q9rbFuC2q37BuFU/Zn19hJ/
wDHP/
rbL2v2HEn7vXi3tJB+SbFXnhI9GH0hBzTe06DxI6dpypTedlgc3SDeFFMPfbbVbls
Hf6qq3fvbDtd62xVTfeyXWAjEQoZh77VNGBc0nCbZNAdLHYX1UcI0yO/
KyCLoLr3bFLL0Mbei52k47JKl2iMXDbZLM7Qxt6c9+NzjebJaV3u5TdljsEZ2PKba
6ndyoTi2WOkfia0XlSzu0vdfZwkgvihxn5lVOwetuhaD9FoK0Jm81aD9FoPE0FaC
odp9VVdqfWyfs/vbB2lse6FTb9se6E+abktRlnOwdXGEUp/Z3/
l8+PV9kbcQv4jZoTo0jrUc8XJeOJNvn1sq/
D91P2bvS2btFUdm70tvYxztgXNP8queCD87A5huIN4UMvxsBT5peSwXoyy6Pd
b1DjBrz+zvOV8vmrxjBUHa/a2LcFtVv2DcKp+z+65JWg24gtB+i0FSf/HP/
rbL2v2HEn7vW3QtFrqOU8nGzZxJXA5LMhtstK7Sw4TdltVuWwd/
qqrd+9sO13rbNF7117dtskB0xuvGxQ1LejIdYxvRKMFFg0RNwbJ6p241MgGmV
35WxMPLIwnbbI6ZumQ3nZbDITc2/
Bdstc5gzUuU2yJ7jcx2S6wQNOVMceywAYyUyP3zjftVTsHrbTZI5PUuSPouSPouS
PosYvXJH0XJH0VTd1/axt/wFckfRckfRYlVdq6yfs/
vbB2n2ti3Qqbfti3Qo6VuhmU7bYGsF5OIBNfUMElQdJOO7YsF0bSNidVUQuaOW
y1oeb3xZJ41X2RtdeBzpVz42kbE6agbgSD3BoNstK7Ry28SbfNlX4fup+zd6Wzd
p9lUdm70tk7X7CzhSBwjXDBNtMx2kRhRUjTi5b7ABjJTZKpglnPXoarjG0jYnVVC
3Bwcb2C3g3nLhOD3KDtPtbDuC2q37BuFYxeuSPouSPonbbKm8DSFyR9FyR9FU
9k70tl7X7DiT93rbS5I5HUrnMaRsT44sTHDCA6rKYjpdd9bZpfeuubts4OHlXE2Q
yX5N+C7ZbVblsHf6qq3fvbFtd68SS7kSZbbGA8mUYCni6S3FtsZIzlMN4Ukr+U9
15sgj966921FgOTCMGyJh5DThOtlcDkMyW2NbKMbmhw77IXnlAYLttjg0Z1mUy
2N7jltyXKV4OQ3JbZw8gzcPrZU7B62tihluY3Rkhc8PKFz3+IU5qn4WCRdiu4lVt+
1jdx3Equ1dYXU8joyRde1a3L9VrUvmQFRM+QDRhG2LdCpt+2LcCqX/
wBZFjS7RE3Ctc12NpFxUsXwPIsni6HMv41X2Rtd2ptma3kuyvrZTXdJweJNvn1s
q/D91P2bvS2btFUdm70tMVPgYJN+UF/C8qH6y+8DQ0DFY2R7f2dhvJ6/
lZVE9DsH6WRYWhmXaQcYKniGhjyBY+PoexQdp9rYdwW1W/
YNw8R22yq3hbU9k70tl7X7DiT93rbSh0rAcD4kS6eMAf1J8sfIGS2ymHU6891sN
K3oy3WTzn3RghVEXwvN1kLzygMF22yq3LYO/
wBVVbv3ti2u9eI2dvKhP5WNe3E5pvCimboe29TtHJccJvfbAz3b8J3cpJHcljb0+R/
KebzY+pdplxDZZNKOVdc3bZDCPfeAqaZoxXYBslpnHE8YTdtpewZqXKG2ypjZj
4ZuL5GwNaLycQUcPvaXbbKnYPXjVW8OJU7R6WN3HcSq7V3sIt0Km37YtwKcH/
kNk3Z/fiVRb/yGy/8A6zeoXUr8Bzn3HFetY/wC1j/
ELWP8Qqj9bkw8G67Eqvsja7tTbi6IxZSdoOJNvmyr8P3U/
Zu9LZu0+yqOzd6cdkFaxrGaGvaLleMYVUD/
AMpseOuLiVZHx2M3HKDtPtbAf+seltVv2f8AjPEdtsqt4W1HZu9LZe1+w4k/
d68d1ZKLi4XM2WEnQFNMfedi2WRk6ZctMlGiRv5iyWmdoeMJu2yq3LYO/
wBVVbtsW13rxHxv5LxcVJC/
Sx11hiPKhdd3J4GiIYFsd+iTIXBjTMcGxkTOU91wUcLNDG3WQ0rToy3fawynRE3
81N1x5Yshmb7jr017cYcLxY9jecblM28Q1EgzcOjetqdg9bYJZosJ7hjOEuZ/
yXMnzFOFKzBwtOPiVO0eljdw8Sq7V1kjKm/Bay/
EblyZPOtEnnUT6YOvc643m+2LdCpt+2PdCn6nnDHfZFI7Ew5LrZZ3+6PzRc7S
TfZUTnRiYFTdofTiVfh+6q+yNru1NjnyG5rReSpp+hzsWyyM9EYLrXE9ARPzsq3f
NoU/
Zu9LZu0+yqOzd6WySVMeE4Pu0rmf8k79XaY5LsRvVxsMTze6E3dylPRJlCyGY8
m+52xXjRZJNJyWC9PkdynG82TznQ1uCEXfA4G2H4mDANjnvNzWi8qab43k2T
SdDWXcR22yq3hbUdm70tl7X7DiT93rxo46w5J0DrKAaLgLHgcuXJFrGMhhwWi4
aUxs0bG4BvBbZFM33HXpr2Y2uF4VVuWwd/
qqrd+9sW13rxWVLdEouO2yUyG5joz9U578bnG8oNYL3ONwCcyQXOabiE1zcR
GMKn4M3tbHj3jpsdO7kwjFtsLnYgFNMfedi2WPbDGx2GbyXJzHQxXOFx02hh5UJ
we60vZyJsqwNGk4lHCNI5R6zbU7B62wwy8JhsGO5q/
ieRfxPIv4nkTJY+S8Xi2p2j0sbuO4lV2rrJuz+9sHafa2LdCpt/
7Wx7oTamMXui5W7aIatpljGhw0hYhKT1YKuORCNDLA1gvcTcAo4fe0u2pjJXuZg
G/
EuflXPyrn5VJwL3Pw7r8JVfZG0xVGHhYZOIXrIbK7uXBgcFB8I6dtrqiQZc2jYuAdF
wjMG8kHGsqR0e80p8FDe4vFxfdda55/
iSEqfs3els3afZVHZu9LXx1Ly1xkv0Lnj5CnfqpMsvRiV5squrJQnjF8kPpaIalplhHJI
0hYhKT1YKwbuDgGhvXtsAaLyUyM84cp+1Swu99tydG8XOabjYXR5UbuUxXuEr
T1YKMNO0xw9PWbeFdypjf3cR22yq3hbU9k70tl7X7DiT93rbSl0TCcDpahUQtuh
k0gdBsDmm5wxhNeedbiePnZwLeTCPz44jPKhOD3Kq3LYO/1VVu/
e1kM+HhtJ0NX8XyL+L5F/E8iE0F+BfdjClYOWMpu3icK7kQ4+9cM0ZMw/
PiRg8uTLdY8Dly5I44jJyZhd320u6bId8cSp2D149J2Ytqdo9LG7h4lV2psn7P72w
dp9rY90Km3zbHuhEOxgoywDCpnf48XEhV1guk9xp6OPV9keOJqkFtOP81cMQC
qJb8Rfi4jIYRe5xuUcLNDBcp+zd6Wzdp9lUdm709hfKLpZThEdVhnphfTu0j4OM2
rrG3H+Gw+tprKVt5/iN+/
GBcLqdvKPX8kGtxAaOI7bZVbwtqeyd6Wy9r9hxJ+71tpdxPgl5LgpIZeUw2NcT
mn4nhPnJyGtwk+R+NzzebJ6iRoIGQ29c236Lm2/
RTxdGFeNlgjdyZsnvVVuWwd/qqrd+/
HbvmyVg5LsptrS7ly5RUmCL3x5bbYYvdvvdst4FvJhF3fZBD8Tsexc236Lm2+VQ
VEbQLjgm6xr2YnNN4UUzdD232Uu6bId8evEnjhaXvddcBtWqSLVXrVXrVXrVXr
VXqnZKMF7WAEWzyQ07nsJxEbFqj0JKiB0bMA4zxKh8dM8tdISCtUepXVMLo2ll1
5thbTRmRwffiWqPWqvTAdIaFA2mjMhDrzctUetVemA6cGwteL2nSCi+gdwR+A
6FjpnO+bMa1SbyLLYIW9byg92em+I9HsKhkYvc6MgBapItVetVetVes4GQj5lB9
Qf1h/z0K4aE5t914uvRMLf1hn9On6K59PKPAsinlPgWWzgG9b/
wDSyMuU8p5sma0XksIC1R61R6lbUxmNxffjUzWi8lhAWqvWqvWqvWqvWqvQ
4QMhHzKEkmemHSdAtucLwUX0TuBd8PurV3PHWzGtUm8iyo+BHW9CSXPzDp
OgcUyUx4CQ/
QrmeFH9GNapN5CsmleN7Eg79ISeBiEcLQxg0AcU3Ur9K1V6qBVRGPCIuvtna0X
ksIH0WqvWqvUjKmMxuMl9x4kscDS95uuA2rVHrVXqnjlbgva3GLGz0rcKduIjrC1
V61V6/UXUkl4PK/
pWqvWqvUUb24L9LttsU1JEZDg3OuWqvTXspXhzTeFKGxnhnx8j5rVXrVXqGOd
pY8X3g7VURwtw3uGILVJFqr1qr1qr1qr1qr0I6hhY/
COI2RSUzMOVhuuHUtVeomzwOjjwsonqVw0BY1MKaBz4sLJIWqvUs1UzAkdiAPV
Y5zW4RAxDrT5H0r8J5vK1V6fNVxGO5tzb7Zomi9117dq1V61V6fBWROjwTk32
U5pYnSYLTfctVeoy6lfcHD/85P/
EAC4QAAECAwYGAwEAAwEBAAAAAAEAERAhMUFRYXGh8CCBkbHB8TDR4WB
AUHCAsP/aAAgBAQABPyH+XEuDwQnR4Rf8VT/
Je6q9b6VpoeZH5pY4O3uMLEAS5jnNSoPcRAjc2X7ptb99FrQHc6oI29JVC8k9P+
EgHIAYp4dhVxVt84U54QSCyvP5A7DLvlUE7nog5ixP+BSkimVmFtpFMAXfu6JoL
OIQL0/vwjisAIBu7BGiGPdND1PJ7JxaEUiLh8VqLR/
yzoB6wxrSgBHo6H9uMfJIKQn8B7UMn2RCZY84ttjm6cXINg8SdgsT/
KacGAXeoK63ALSmdANGk2B+TKh5qUAadGgGnRL1JGqPKqIcxC2m+box+vHZ
OxzEtVQuzR1Cz4r2ZAGRzCyQD13Kmhorg/
1zgVQklvqynKzvU1w4+6BEXeTJRxcLyqJuJIi5ixPyAhGbAdGWIzPuQ+eW0R5Wk
vC0q9G45r+Fv3s0CAGLkfOQ9UELms6gICUAwMkh3BVEESMuF8UW0/
IXNCssh/
pwEwAxQAljq4KSDOydTkSPQE3uJHbK4aa9WVnP4zoIzfFUDZPNDQdt2I0yvFKF
T/D9qbCShela/
AHuhYGWMf5Q0zf3qamyH6qri4DHgdjKRwWDM77qoZUfz5AHJk6yO5VMNxipa
bvEr+33l0r+Q01ys/
ERYhYBO5mZULdyaKBqzJOWAA+DD4Ik4LxPJAWyMUAGBh/
o7kfEiYyKc0vlP2pcEgGI4J14ZhEkf+ZE6LgE4SELDI7DECC9eQilzWGmoTlZ/
BqpxQkEIYPJbufJa1V9FoSqa3Kth1mgzA8Ef63SUMi1zmTlzu4LY8AtTZRVOofyQ5
x2GFV3ud2quOh2ww+MjBwIJanhp3rM8WvslBASheW91U9hUWm+i10tldyzsF
3P3ctOYUABgYf7UOMGAcFWDqqHCVQIiQ+LkTBVnYLL9/
xYVxAXlS4vcwnRV2cXygW+fiCkjbMOqcXouZaIq5nE8ck8GYhQCfG1NBgTzORX
roeEGeko7ug/
WWJvY8Xx8oo5jAVFBkP9QPJbKtBa0wj90+PKt9zFfrfleEfwinMgCVqMXwq+N1S
d6fM2y6WVVeYlEEk4kVkvdogL0/hAbhMIKp/
cKyslexXQY6RPwq4BcNHALEK0hw6ZCkGtsN/
uJpePFyOo2IVoiX3QxjW+ibpBmRAE4KEBCgDf6kK5jMnzJyKcADReFaYUjmMbLk
raqmpcokmszj8J8M7G6CjYRJNQ5cQgXp8nP4UQlbXdBvHA/XQLX8ICUXIcH/
eu1U7uYsIJ2BkXx7oBOfdIIoxM33LSQw8IpMM3s6mTsBIYB+wgtUxnhFHBuM8p
4JvahDBsAf6wAOQAxT45CwgpKC8QqvJgI9jFppSIuEdqIdaj/
hnCYMB+Kes20jkfkeZdVpXhMAcyqHPHgcTTNiCG3J6A/
wC6a96TPhcs9qpddAwjK0XjIWcvgC04v9g0BcJ9qXHRwzwwspxkulZDwk1g0/
LpSBW9lrmXgkKuIaB66yCsbnCopXlZZy4ixpBLSBQ4AHsB8Y0pMgOgpK3gPBNJ
zMOoxQP9ReVx/qGgS8mTnPCx7onsFtqaJZdRe7J1attV3naJJrM4/
FktQsKJBu9rXVbkvJ0aORlKLvgIE2fzBMlPa6grZPj4HRyYPUE8oCpS5hOnDqdiwK
EmwJuljHxjwCMQSKtOWCuTDgBXFtMhVLXUq/
0QdwWGFV8u+tVTciyXFHLR5u+tGndjn4Mk5CYxQKi2poOCQUivXQ8ILQ9Bs5ry
zsmYlhfPctDSCAEgA/whwAtgx53p0GlhTMWcBD4uQxBVjgbH9/
IGWawakICgVBETXaq4LirFjM7jD+cxQgIKXXW+tSzE009OtU9i4/
FYgMJ+HTERiLhiTIwJuyNSjFyJoWIVpWf2Q6dY/
hNUiuoWc9eAIBQAP8sgAQQ4KCCVRo+tUNOmNKSOCY2TSQEEOJj4wiWvyIgoG
ApE/ZHQFrZrGIfywxkAtKtW3PdFJzmTFSSsLiTs/
NtkZyOApRizIFLJxbhPJaLjleOzFaXpCCOuXhCJ/
n7kBYRgKHdEH+mZ4tJImPxFz5YUbxwPc0SV/
CHgEcBkfjchhaOhwVnfRsC8RINFyGIKHgqNl+/
5MGBa8eS5IjXC6JCcXrCCo+eEqjPkKCCW3AgAoAP9i+QMwrwnIDZYkc8eB6EK
W4ggcEcivxmkioVcETOjoCTEEiYkU02RAjvT+6JADmi0i1S/
qhRJjniWHmPtQaerScfGAODIO5JmwHgeJz6uoQEtKR2+MW2/
WYhTWl054OA6bTJXNggBhnAGv9pjAAmRIg8LDfonwckOqcRj5kcGww0MOcxz
wht5HTckbFKkB3BAgHBcH4gwhmIJFOk1Q1y4cDyrdGX6TSAalTuPxg1OwDgo3
Wjb/ngKWR1y4IAJHIkf6/
IjGETI5S9VLg+I7Jy5JDPDyYMTSZRJx4hTWzpb3R6ewqLywJug1TKUOIoAQq8oBc
2LQp0QTYyC/
NyHBHxtp17HLcUSEaxBMR7IPG4p9Nsqn8ZABiHC6AHuhBJjIiL9udl4oBbbbsP6
wANgYToEBIMfep1Nls/lW7ZAQbUAFsaclYXZ2o477Fy09wCAApLjJx/
UBTOuZSphA4gE7eIIFUHIr8beJErOFDYQmRKl1uBTbkDU1GHyDqgtjNE3OwExF
zVujL9J5GKHqdx/
vB7nYCRTKKvayg4Tl1KY4kPMJIj45USkCaFmEdG8RJVB0A5op2MQ+SS0enXBD
79diIuMFvQbinUsJxn/AHkhxNX6oCiCNimIKLMiSuWKH06oG4/
GDHarSvCdAupI0OMSHxciYKFUYWf7+STWFGqpypUaMSp7T4KkMFnGuIw/
vW128uFLEwBtyQa/gg/
ILADASKtpWR3cIkERgoXQ2wKD6Dj8g1OlxRu8VTphE4OQRMI5oA5ZP7cQ/
JhVvLmFP7N70rteBN3eECnXMierSJZej175QGA4NQm6BQd0IJMZERzSQ0R3p8Y
NTsBIogDU2v5iRsU4DRMr0yUzY/
22MHH1SNz9iHNABTO2OK8tAhslAgoLttaFefnafU7CaImBgJiMm5J8kEAGIcJ2r0f
dCCTGRhSkk3sCkgLiX/C3zLZHY4Jkm1WBeIOBm4L0+Nnyq/
KFHqNhNEPAwExG0DgrmwQGgTgi3/
hYyDm6kTGqMuYHzOkwkkaFGv01wXiJRpM7teH/
AAs+YAIALyaBVrAt3ZkJfOeTdlVwV3ooSGGUiia+bcf+BO1VQVmUTbPBXaaKuH
yco+z8iu3NqFTLIktFWZc8YMSlAqLC/wAA/szArwhMT5QKcjNDkn/
bh3zsQhbisirecHhaC5LsRh5QxmclF6+ld/
KfKCSyh5VnOQAVVvMtfU1q9H4AAolAAjyQKbsf/
CCjZZoDHSOPrL+1OX2NxZVBb71QhkqlZZCRJQVQbYKyjMiZSOYr9dBsOq+0bO
HDgankgYmyPbF7ZBxsuiVCyQIjFfJRBucUdcdejYO6JkLP8O6YftAoK91/49plFD9g
UqKxxMv+Otlk4UXZxNJR+Wz/
AMTI6i5rVcFGoDywMg1CdWzg8K1vJGjuSHT7EBG/
bwn5qtZwrQcRtoAQGAoP+A0ZGZWgeBOrNsC7QXqvZpeF2ZEtF8ftA+AXhVVi
0FasZdkcloJKClkUWB5fUuwhvZEHKOZarRKoLNCVTjn8VreZhA4wzAP7o5n+Jx4
U11X0w8QPGL5Xhi+kenyGpRFxAgfXVNQGRAdmjAKwCsIrskRuzyiDbar1aKjnrV
61etXrV61etXrV61D8HAT1JAiDdHlWhzKwisAogM/OaJiIXECQWCgH/
wA1auBo7AL0petL1petL1petLIzeC9KXrS9aXqS9aXpS9aVDHR3BREfMBGS9KQ
ABOQTKJChMCw5XpSa+kgCI4NETDjEw69aXqSAIjg0PAbYqLAOmY6yGOAwT8I
8QjkoAvWl60vWk79JBnF4J4yoEQWIIr1pHhuuSyODgBySvSl6UiNCYlxijtAJyTYnv
pL1petL1petLA+KJ4pIRwggdh7NBeiB4AkwlgWA69KXrSCIjlQxplPAEL0pSYG7IlA
Kg4BDr0petL1JepL1petL1pF4CtiTXr1pelIhQmJcD8FcDRWAXpS9aXrS9aWiPHin
RmIYBetIqN2AzPAOI7kMAvSl60qGOjuCganchgF60vWkCEehXEaOEmBC9KR6w
MAGaJaq9KXpSDCPR0FXA0VgF6UiKvRIAiOVCiomYgyK9aVJQ4EmJb8sBBC9KV
DHR3BgfEzdLr1pelIBcFyHBidhGxAr0ZerLfbvFQ+Eey3uJC2xwgFs1y2K6Aqt2ug
XVFKrgjpaILM5lEicnYmAYB6FYpyakkBUB7Rx7rdw4+EJlhBktJU5hq9XHgNOAp
my3o7/
AALbr3EBFAtBVF0ajNE6b7CpcEXXZmmzKcSLEwExTQjFHfO4YoeEnAQ3WBhat
9ujssPiORbwIavwGp7XCCDq0mRMxZD1b0PEI4LRwS5ORMDHsMTFWZ4TgbY6
tHf4lpXZHcr0W7yHnikDlbhwrFxJztWgUIZwuNJkj4mdnJBwQTygmUT8iw6Igjnc8
GI67/kKnaU3zmbEwfZM+crAc8fqhZweo/
UMCmu5sAqoKAXCwQbLSrkBb7diCUIjKDPTIMpuinahs9cqVkYAE0mcF65euQE
O7S4skb/
CAWzXLUe0BVbdcifMHqbk6sJyhuEXWhovczsXtoC8xTi3m6NUMgRIpgjMRmEs
mNxRaXeZG6JpwZM3y9Hd4BbVeiLYmIV7usGFA0GJjEFhXsUQj2s8I0jUOSuouFk
X0zIVDBWDgraYoWrZbo7LCJyMw8yeoXqo1AOQgy96HApqfAaztRBaEcgjWEBiI
viCPnDgmcG5A/
Yv81AjrUd3iWldkdyvRaEOXKKIgkxkRBx780E0aryCDqGdPuE5KW5jMwcAU+wp
zDTWScW7NzSg+xuT8Z5DzCSrCTBTLDaITgDyz+wlvNsmsCALhgEUYtq8lvt2JR
LrtR4Na0FYAYx1IQBgwbAJgBvxGUgAwMMFtF/
GDgWxXLUe0BVblcjncrnqQf8AjYWlAYY4LMKEhXsIqq3gKAXiJXAXLs4t5ui9aNxg
EfkaoIoOMdzpNxRDFjIwKC0w8JiaLc7403y9Hf4FuV6OroZSIzWk7IykBp6I8rM+i
Ai3DABDZU5a+AEfnWwinsO6RF4iabPpC2uKFq2m4R2WET0PzCEna5TU4P8Aj
CirW+3o6nwGs7UTjn9BEJ7qCKB6AmKWQlKB3lJEQAt1ZIKtZlMCBqpsAeD4MLn
Cd6Q1qO7xLS+zjsZ4tqFdYOlYgs7E2Icw5UwiGLGSkHA5wVZtNYrJPaG6smVNa
B56mDLH5CEZnhOUP2AWwa64Hg4B+WkJpnVLuapWUJtAeeFOSPyx+wr5nh7
bMN9uxGvFYCSUCsKp65Gxw4NJ7OLW8XwfLkEaUY0JuVwcaAWxXLUe0LVtFyMf
LgiZCQgFZyOeQERRuQLwUUh9CYGNGQEYg/
vFtN0dguERCAEaICpe3MRNOAam+Xo7vALcr0cWQ5OSw0Vnt2AIVzWQkdyE0
KSykgFhcZLlSIy2DEIOhiHgZzm+oW1xQtW03COyw4ZmpavDeLo7RejqfAaztRF
FwAggqoWi1TBRAjVAgQUHHJpou4kPMsgy+Qc4zKIyy5BUQcE/
LSGtR3eJaX2cdjMnmM9YE/
Y8wKggutNybkKJ8Q4cpMpfZB8gpnxPOgzydycHfN1ZIKtZlFmSgXWoA3m8qkLF
RGCsZfHJbQgO4yJg8/WDgBsC9XaLt51hvt3i3C7is267g3C/
jC2K5aj2gFtFyJKhFXOAgG0+LgojeeBxhQJP7gIxwbFb30rf+tb31p84Hwzvctpujtt
wiMoqBMCACUQ0U7G8xpvl6O/
wLcr3HTUDCDMIAiuUIRpgI7sDGqZuo4AX4iG4XLa4o46dlHdYQpxTUtThvF0duv
R1PgNZ2uOVYL7oEbYDlUnzeCDamMS5o4FBjktEKw1aO7xLS+447BvuTzlWUx
wdm/
UEwhUbOiupiCXgbudNU5kYXkqYBVcDnKmJhhQgHmQM8d+M0lLQdrkfkLLKIY
Wo2LITAwYg/
TFiIJEGREfMKfxHfbsTBHdwsf1Q6JoE3qPwbNchtd3BuF8AfGwCscL2iDAHt1s0Ati
uWo9oCq3a5DMioNr4FNcOYFAghxMQooSxfYCMI5xQJRmdweJA2w3R224QElOF
WBGp9V5BAjXOPbuYiMmBCVjcUMy9wt8vR2+BbleiREdEuEmCx/
UhaNufmeKIaQRCX6OcdEdslg2ddRARiw80khgrkHBgWliUnzl5xnAwRJExJdMkH
PjfMWsNE4iAaBAhsCIQ+5MDfuEYmpa3DcLo7dejqfAaztcR/
Ayq6KA0CYAWQc2360W8p5RVp+A8LC+zC1H4YCYFatHd4lpfZ8FjPdJvyGjGYm
EWZzzCmJ0AWlOFeuBRW3YJimgAZZZAMz7hgQBm5OCpFGbdYgzLxwdOj9kWo
uPd97IjRYDRcbYTESsTd7D3hUx327GneMzwMzOftXAxaO7XIbddwbhfx0YFsVy
1GAVW7XI9N2y2KQaOkvKJSpIuB7KOpgW41AVKkKaHbzqhCgoFdyFuQtyF420L
abokffuuLKcFulRFiK1ItJuhsoIGCMkCU6il3hOpjHIwBhGyMDISW+Xo7/
AtqvRMPYLGZMIWO9QMLwOaIaYTB2WSqKBF9uNaEg3hPVAREXV3eqB8IGAZN
1bqhUxj8ycFODEQGlbI1/
UJFjERAzrO9olMFumqRNS1OG4XR2i9HU+A1naiZnpiG9DfYsBL94OAi4LCiMD9
Mg1kpzmrFk0XQu8di1SO7xLSuyJ7hIGZUkrERiIxFTS4qIyTP3DySzjIST16JvrIcte
BgLdYMHNsX7osmif1lKO43w3u9Ckd9u/
FLdrkN7u4N5v4wcC2a5bFdAVW7XIbQAYg2ok0iTaeEAk02SKuIPOnHj3m7jKdd
wCNmQyEAMAE0ziuUSHBIks+1RH+Zb5ejv8AAtqvcYBJYTyVYqFYsCIAEGYKce5
wCr64cplNNmdgxeImyWFxDty/
rEEEBMAsEai1eG4XR2i9HU+A1najtsSh6uye42FDjZpnjDQLWv5IRwkuvDIg7jzo
M6EYcyvW162miDCWamIOIYf0cFbvEtK7Ph2zxjco/
sWjN040TE7DK6RegP0tVAMGEG8jvWasCMjgPcKAgAbGFetJzwDbpAtzETEKjWo
NxvjkKRGXK8pFsAtmFuwt2Fswt2EeaRKwxGuleE3ITV4OIeAVXlWh1uQmFYloXi
6T2F1oTswih7ACOSIz2CwGW5CHo0QdYABHKA4IjAOCnCrWby3I1APZkiTAvOh7
ahIItJ9AyyD4MRZ0EhbALZhbsIF/
JEBzB9kaEGwGHkgCAwUCm4fMWIQC9QdAcSWhOSGGb1QrLwbxyuEGiTS8tG
ZZjRC4yYlfLyy2YWzC3YWzCBi3bRzmh9kSo0gegIkYgzEG1PRu3MvpFoKAgpg7
nUqN6NoriAD6A4bU+gBpJuDGEhIYuqYgO8PNMvQDcShaRYCQ4KiLJYJNRbsIwD
KvJRZzPLyU3YW7CNaAFww4Dv3vKSA7sIooSDWGFHSSvdhbsIKKAiYUWLdhbsJ
78uPFEjPcmotmEGpJi8JmrWKiS3YWzCwmrlMjZQoHbMLYBbMLdhbsLdhbsIahH
gF/
vG0NbMIoGhckGRsBgEQAiYFPEcNwK3YRZeGyEwo4Q2rkQ5JlC1bMLPduyaxK9i
1wTC3YW7CCxHztgwGhcALdhBeCRJaU0Kf+4//
aAAwDAQACAAMAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAFCMThSThQBzHkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAANHBjRyBAAEPCBPDJCAARXDAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELAOIRTgAFGEMygCxA
AAAAAAQAkABvBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AEADU5CAAMPNaYgCxAAAAAAAAAAAAAAAAACEARBAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAEPAiUjqNI7gTggAAAAAAAAAAAAAAEMDJLJAAA
AABHBzLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGcJvWwwSBgAAAAAA
AAAAAAAAAAAMNDASigAAAQRBIAAAAlACOAAAAAAAAAAAAAAAAAAAAAAA
AAAAAADihAAAAAAAAAAAAAAAAAAAAFLY6xRAANGPNzAhlhIAgJAAAA2CALA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAeBiBKEG+
xgDRAAAAAAAAAHB3OAAAAzjRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAEbrppRBSBgAAAAAAAAAAAAAAAAAARISuAAAAAJAuAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCM
6AyJAAAACDRCAAAAAvAyJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAEPpCaagBCKmAAAACqAgAAAAAGBAJAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyaOAA
AAQARNAAAAAgJFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAANCYaAAAAARDADAAAAAWBzAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxzDiAAAAAAAF
AJAAAAACuyCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAeFAAAAAAQhXAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJFDCBBaCxREBAAAA
AAABLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAARzCyAihBgwBiAAAAAAAAEiJAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANIGLPDAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAFHHMJgUT0AMufPuHHKMLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYDDQjT
TxiCHzSXICTFJAABDhBJAEFwwYDDMAP7kJQoAaRjzjYThAZDHGAFCJAz5DADzVl
YlKqE1UTAImpG/
czgw1BhRAfUaALCDAAWAyGCAuXLDjSvQqlDDTLvAoSDI0pAqABDFXAWABCAr
ALQhJfsYApDZhsTripAjLALpABQzA/
UTXAjGJMDADFHA2XLDDQCWoXAhGr2AooAopBAqABSxHBijEAArArAniCTCfDn
gMCAWgpRQjALpABRhA5UtQKIEONIAAxVPgFrXLRNorBjZctCOhCAopAAqABCLr
GA+BOArAlGLZziiqjEqRAKiAPCCWAmoAGBDCrOhnPdCAARKCBTqHwDVrCCYhj
HQjHPGahUqDFCjAKDgCzVxOzCvKCCqJenQBqZTSKpEAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/
8QALREBAAECAwcEAwEBAQEBAAAAAQARMSFB0VFhcYGRobEQweHwIFDxQD
BgcJD/2gAIAQMBAT8Q/UB1QS/jz4luq8tYes6S0A5V8y+rlhLg9XWKt/
S6hzdZalzx8y0TsmBl7jtpCKBN3720ZzJt3wqwl56EdbOKstIOB/
ZfjrpSKuL+F4XkzZPjQ94i6HP4hnHvHKPRgLI8/
iXRvDGK0FH0rRo7phwo256MErU3Z9P2tqzmTbrgPxD33oaxto6uk2T4AS87zfU
FaEvh0ZsvxSOsHVmmjWX6rz0lpHPHzLQHI/
4FUIm+Y7ibrdJieBuv0iI0YYWjK1OvrrBBUt+tt+cybdcB+IG+8aGsfaOrNk+FCXq
eK+l1HgOkta8eZeAOekfbOS6Q116GsuieKy2jprBaCn+IPDjtL/
eM2q2j32ePRirHY0+0hlqn6YqrDiy6F4Yy+T2ibZxq6TZLgEbh6jLeulPMuAOKfM
bZOrM2ciXKrz0lpHOr7y0pyNP8NszmTInfSfeOktI8eYVVV4fklYFQY7NNIiqMyq5
mTKuuJmfoLLnOCaVcAy77j/I2b0e6xy1z0IhUuj7sFdekuAvOWEefeWFORp/
jtmcyWmrgPxDX3ihrHWDqzZvhQl+nm/ijVUZhio36xGrFv1/
Ie358dYnOiQE1GYLwFz7l/toKVllV4q+8s6cjSBT/
AC4yRxSbU8KsDfehrE2zq6TZnhQl6nivqC2l8OjNl+KR9g6vtD0jVgrq8/iO/
wCvxGXzo6TFmdj31lFKO/0p/
uhw0glqn444wFn7lERUftoFeiQOx58NP19njiywVcD+TVDpMnHLWXU66UgvAX
qyzrpNheKRFwc6+0fQNWAuPQm2nFfiWkdIJQU/
44yBKzjGzPltiI0ZWrhmZMqy4mZ+NDXPMmTXJ2xEJRINOFtbfn9UqFZrdDWG13
GfMPxM0dPmDunppMyPNlkEsKcjSW/xjW/PjrEx0SAmo/
bys8AufcvxTlUZfht7OMtKlG4OuvX92tLywnWviszU8tYus6RVwDp8wrfN3zKkK+
fxxxgLP3KUDY+eEOvRJVjA5bd5+KIKjK7jbGz49Fpfcdnx4ggqftqCtK8JZPzQ8My
NOCnzMSF4qxdnozNnQlyq89CA/N1hSujsbazYY+8yVWYC59y/
Gl7UlL4jJ+5wElEhJg+fzu/KvUuJpp0iJeOXPH43dIYSo/
vqFwuTshJslnJ+7JQjgLnufcPxWnUYvf8AHjrBRqQaX3Hbx3+fyyl7X53xwFElMOK
uaQG1R/eWUOKS7jzGLUcGYKtpUpt+0r+SAox6iwzNnDT0tLwfZ16/
lUFsjrujsqMukMzb8yuL44/u8YF5GkuQ6Rf+9ZhYPX/
hWMLYydGI0KJET4luHx+VH3BzJk1ycmVlfMza5mz/
AMMCpemPtA0U2P5pyqMaox29nGBP67paQf3aheWN6msuA+8ptJyYjary+Y5T
7QPk+I5Y6sXsO+sRZDlEz1WKDp2D5/4OAqM3CMZDJ8lf3SVlhekWyfecVyd9Yr
83WfUsdg9Wcbr8Ti9fib56/
Edu7aRDEO1x+P8AkdjV8YRUM3wf+KRunUidz1NYlcdSXAfeUNcy7pBw4syCv3i
0nwL5iln5fMDbsQNvpymTXfSKW7If6URkn1ui309o3j0ukXuybggtfoMr5+jpN/
6Ok3zozeujFsja4fMwtirv3L/
82z5GpXObj3m4946gU1zm495uPebj3igBhXOPaODvhsqYvaOaVpNx7xCCqB7a
zce8VQZgDjsHvslRg05xjmGWsEFT13Yi9Bm495uvVjlKW8x+YYWo+gyBrW8VJ
B47IMA121gMhWu3KDwa7azce83HvAWKWcvTBMWwfcIhwe8b5gYmsAVLRGR
pTbAwClLV9CicFM4h0qjSmM3HvNx7zce8LQFFc9+k3HvGVKVPQABwrnNx7yq
wKcWZ9C5mehu5eYVcT1YYWGKbkL0m494Jw8cXas3HvEQLgxCdaX4Tc+rD+I
8dlSCTFeMYmacYUwP6Y7H3mENW3CKwVXxDZivG8EiqZTce8EnPznKChVfENB
V4ztvdlSwqFZX/
AB8xMc00tbvKv4+ZuxU6RLbjS0S+4UtO8fLLHFnZe56dme3pvZgHGIEqsH1Ry
pXrPuhjKrvPc9/
Xt3w+ig01NnzOjZyZXRqfPp5HtPL8M7R8ztnxO0fMp1dL9pSiumNvRM+odUjhK
rAtUcqV6z6IY9SYXPcnbHidseX0798sr9dNFJX/
AB8+jYDru+ZVWKpspk+nae76WOB7ytYVCu2A8QtshmzaPB9LDxfaVBXKYvvg
5ZTtHw+n18PTtiI7ThLwA0m+PsxNI4mSM3sLDSze7F7QHeWktABSU0sYHAgA
YIy0AlZUqGYe5KSvE95TyxgcCUBzMD3fadt7sXqw7pvXVjuVcfL6dw+WXOL7en
ePlgtEObrElFPN19OzPb0TR+2IBnb6bZKp2jINsYuU2U1n1DWUBYJ4Pp2GsJOYdY
kc2nk9PI9p5fhnaPmds+J2j5lWNGVU04wjhHZ47CJRyr7QGLVPQtqq+IyjaTtjxO2
PPp375Zd4vt6+f5Z2T4fTtPd9LHA94jGqpSG3QXgmyavAi0mxhcOGUwVxGr9c
pRFbBpO1fD6fTw9O2PShC3kfErZk7nxCDbVgJtqeZSHJ3fiVl28n4lNb2OLN7z/
e0q6WA+3tKu7+D8yoUsxNOcqJo/
SZpEB2idt7sQWClM9tZ9p8QuuYZHp3D5Zc4vt6d4+WCArVhWxD3PTsj29GC5
Q9sYDvGMx6GxgnhN+
+Ps3llCoKNM903bqRJcD3egKxDWIlp3Y5MjF5fMxLImGOEaCpV3io2C9vmdo+Z
2z4naPmYHBgb2ir16KV5el7D4GHjxBN4xgOobGADUb4g5cWkfJE7nxByRwY4q
mQRVK5xyN3Hr6+f5Z2T4fTtPd9LHA94jGihWL7pDVTFjXbu5TDl3A5/
HpXJTZ9IiBcgIM14fT6eHoDAQJukc35nL6wVdIYLrEQyf5FV1lIN3F5/
Eppli8X4lWdGJDUpMWWcHnbv6WyK/
MYu5Q6+glZwyHazf8Ao6Tf+jpHFjDMTP0Y47uTt4RUCmLfl6NSu7k7XdBYKNW
8ARVp7k3vo6QAFWh7Tf8Ao6QYKwKCps2cIpRfR0jWRtftYK/r6hRNj4Zv/R0m/
wDR0jeQ2uHzLuVu7Y2WFdkRo7yYiXnYlUZwbG+F1Ao5OyVRnBsLnN/6Ok3/
AKOkRxobXS8I2CVwMNmmkRovR0j2RtftZ1Eu2N/
4sSxqNpjBlB9HSAiobM3QgU9N/wCjpAEUcfLDUDY+Gb/
0dIxhRp7voLUcCw745MYZjti0P3CHX1NzpHK2gbG7fLKKCAMcSbqNbSuFBt0jKo
oNMHMd23zN/wCjpLCx0zf+jpN/6Ok3/
o6QIEo0IKMlyg58pTgUwK77yuUrg07RIYZ1Gxyi0KxQPF2OkZ8cuZkcYQxjSpxM
Zv8A0dIBVGmPGKqpwdhuhVUWuU2//Iv/
xAAiEQADAQEAAgMBAQEBAQAAAAAAAREQMSAhQVBRMEBgcJD/
2gAIAQIBAT8Q+pqIxRWV+FZRH39RGKK/GMjK0oj8EE79rURiiivwjKKxBF/
JoNtX6+vqIKK/CMrEEEX+NpMamJz6iojFFbIyisQREX+Kogq/g/
xicE79BUVFKI8QQRf5KiMUUV+SZCR+TVxOCd/3Qi/
z1EYrxjKKxBBBWqDvi1RqYnfsIxRXkZRWIIIv5v8AGJwTvi1RqYq+s9keIIIiL/
I1cTgnfJqYv195URisd8WqNTE75NYv19xXinpBAx7QnfFqjUxO+T/
GJz79qntCd8mpif75NXE599UNpi75v8Yv15NUkE4W/d+iIgSS/
g6xvjyao1BOCd/4d1/BqCc+9qKiCCNKKxJ/F+jj7uIiIiCCCCCCBJL+T9s4/
wCMqKhhezn31KV/hWVlZRRWez2RkZGRkZGJT/
5ttzRPwCdwnRuYbi03ML+QNwVDcFQ3NFWNpeA4YndX1fAJ3C943NE7lniX1jo/
WG4KmOBO4Xsbgq10bgmZ0JXCU0lRKDODjOMbmmoN8a+YqGoN8a6x1hK6b
i01Bvg60xKrSpCUxczoSo4F3G+Mb0PmfGLmP0dQvQzi1uvUjG+BusT5OsrFzH
04x5c40u6XRtIg6sXDgXdLuOtVihwLul060zjeN4zoTg3RdxusaDex8z4xc8B9F3
CDcQunRwNVYvedCnyehTH04xiXoaUzjEqxNMbonsabZRIsTUG6dFQ1OsdY6P
WdwmhqdHQnGVLFzeNXM6EqP1huLK86sXMTUKh+0L0L2P0P2JRDfGWnWPuk
9kZHpp04xpnA+EY+EeP8EZQlNfCMjIxKDTIxKCCexCMjKF6GIyhKDVGmiMWox
cyMXM6OhKez2E9417FwjFwjIyMXBr2J8iCXvHWcD9ojENO/+Rv/
xAAuEAEAAgAEBAYCAgMBAQEAAAABABEQITFRQWGh8CBxgZGxwTDRYPFAU
OFwgLD/2gAIAQEAAT8Q/
i6vf35xih1EP3kyF7v5iGAd2+UCddV+WNUB4ETnFP0EyFlVmrzcUEoUhTtHj2IO
9C5UDjSv5pKg598SjKPJo94BLPwD3VPSCOn/
AIRzU0qlT0NXDrOKPb6eEho0Ife4fkfj8BUQC3ib7Rpt2tA9ic6PM/
4ArFIRXvLRZv8Ap6oZRPTS+7ygkUI6J/
P+bZzOsZKnYH84oK1Lh1EyjnJfAyl8FIke7EFecBBO0O5tir/
lFDP9a6RRhdbF+yGrmxm9T+bpARr9ix/
kkz0seV7QoPuwd2Ev4VLQC2BhVNQ3n2pOem3XX8pNL0GWKV5FF4aNxrIxl20
9a7ySKJreV8YECq0+yYPQSBIGDT+mKa9ryhFQAeuzvJl9mu+yvyboGT3EpzWk
Cs1fd64REa8Qr+4izJmyrWleTWBUDZpOSfy51oIUh0gp6XczQGNHviHUxuBAon
iD0npPh/
aZZsipFbrxsfyaIF2p9p6AdPvSGkLiFYBYpwbNeyu4qjnAg+lITm+zxzTSEVHsfnA
oLGU6PmPoTH1fQoXrkf10OpqNR8JG97c83F3hytRdb+T2rfSqcL0V49LjSl7jSCU
zsH7i3AspvSJLSwXtqBeyxVbX42mzcsPYjb5l+mm98zPPay1bFU61PN7/AJwh/
iZWXWG9wu6HGygwPQ/
ylDbDV6IOQsyr3tU1cVaXo+ARKQ0YszoizL6wYtXbD/
H2AAaq1AFULQKdZkuwv1MAdgkfccHDdqTQK2kvrbbB1fxC3TQsZ5aCiWJr3im
9u7YexEE2G37GbmuUH0I5uW+XikO5X6gYhaAUf6N3XlUnlmZPSZSXLhD5GW
SDgj4CjRm2/SwHWxezNk/jChqwO/
Pc9rgVuNifEtSTQQ+9zJgN09I65tiEst1qBeyxVbXjBY7XejkR8U2/
nJV1O5P2gtod1bABZHd5zOXDcfFSvbpx/cQeWaHxpKD/AFjRrSi16/
EmXWS68p4vA848l0bJxGMhmRyfNP4kxOdX5FiVc+L0sBQ5yn3bi5BNQ+iBCjQ
fq2xVzHhUi3afEd/
ebESN9ECKRNeP7SBryOQpZDgQdWMps1BD7E1xub5TDDJ9K/1AAA4B/
tV+CAAeCMfPGa939I/DErkTgjiLZ1WBojBzmGg/
Xyfwt2RapRG+Qr2qzMk2cD6QSjDgb9kAY2qVhav9qpOaglXXEFajlw1HoS7d0+
mEQHgIQacSP0EXYjb5FFPY3H4kbeir8/AoK4hfiDUXyD/
TqGrDhPEQ9FiFLbfFkqShsV94FfK6P1G7zpPCLyfuSAJ2slcbY/
YSpFnCD2OcAbQn5iGAsSuXu840cq+SPEcTKotiZIwtuOPc7fnAIqx/
gnMdfzLBmiaqXSX3ACgfe5UucBT0hpGEXzYz8izra/
wnNyaiCrtgVLb5yx7EZvYyHWoN23cYD7rOfSDXLQlfVmoDIA9ammfkP9TQibqo
EnjW19rm2FX6mE0/F5cipvTSX2VeEzLDNmHtHbbufgCkVNMbeoE4ydN0NI7/
AMkOXJ94BFWP5E5gqLP+zlHvFt9dDwZjVM65bvIOiAAOiJ/
vUFUAREajW3tcT4GxHvQjjgu/
WLKVtNevTc5Wx+1cUCfzvRF+258rKizr+9jY1GoAfaDRR/
RscsLrviclGfCH+s5vKVEouull7XGUY4frYIgDiZ0uCl3BDkYVEf8AEJfVOxt/
w9Sk9lPLjFLlI1n7bBHT8Y/8wOW+ODHan6WTts8Bks0arfdOUvKAaw/
3SSnePPkImRVTP5+ZaUbr0MVGLN2+aYfMdGydJ0FY+P8AXqGrAL7S82Ohpa/
SIIETQJ1uWgo4qzIdsw377Y82Kv5HqR2dleh8Efckqq8+I0VXHO/
E7w+o9TDTUQZQ5E7eGM4iNC3iqCwrR86cUkXJduB+OiIArEm+CQfQ+ABZw7
H4YyYDAeYDg/yhcG6hHWF7vdKXjYQ0aT6qUJ/HumKwrND+bRj0hA9iO23c/
EBWoo+8DQh0Bp60pFiq3N+MAlntrCgnj+3wEtOc+RLBd0BfW4IGnD4E8aDqQ
3jZI6Qw9Z6f2MXT3b62omng4+UDQ7HEmsvy/
YT8a3dWIHUSPZ0c6527l8CMXQ8ozA1QQX5BP5FzHGT1ZchrUFRam5mHW5b
ULiJH0ebM3Ky2vyv4AVoTkI1noQA9g+CMgG2SGd9VBAOcdxawSbePxRXQkX+
qN2hv8ESnbCCv8HWafZgM8mkbY8ch97wAZMqxaIkLyNsy/
XyfjQRHSUP5+XnwHlHPKlcicEx0p6HzAcRizKVc0+X+OFQRqF6sdRxpNRFqq3Q
dblkLNFGDqLti+MfJer118Nfmul7ABHSlcZ3kV3WBOcU+JFr5+TrUuO2PWAZvQ3
0gVs0KLqsBG+iI9idGw/yzZCpHMSc/M0+W/
wAols6pExFYpBsY8gXEPgecNqIWJ+MYxL4PpPOPLJXFGN/
FhUkZkLZD+LK3VElBC0Kf+QvAHgyp95uXRxIfZaRE7Ppl62HVeYeKDkfMszXY2
wq0/N+LNeXliPHeR9x27hsMqKW/6CUAHl+UzkGo/wBQMAnAz/
TKgvHpW78ka/
rZ7cPgXyg515+8hZ1YgdEfxtgqhZvthvnMHALxMQJMqRaIkODgXl+vk/
iZhwG6I8gHzMpRa+yUUWPOL/
qO2nzsctTts45aW78ohQRoqV0h9eWH+xL9niy3xwYoUzQnbZ4Do5o1q+4coC
Vt8A/
jP2EozmFLWtcaDoqDYkGo8mTX8TzgAKsf504UBqsDvltj5ibajs6ldFvQhhC0sfST
ShMVPU/HXGIViQGska/nTn4CiZy9HxsGp+4Hijgn4wR/
pqXBOCRdk0HwA0GhnnI3c8GKa1AdEf5ojJdQg9WaywX9AypLaUE9YpzeCjpRG
gLf9c2x/LCVfAkHNC/mrJlRFsmfn+8MiFYmYn4mV+sQOok1aDnnP38ngKJSaN/
UBsyTudDf8ahDHgvBGZn46z9/
gttXJ1526Dgovgfy9eaFr86wY23n3UlzukX7Q4FNlUUZumr8q4DKDA+h6HxBBn
miPvSZG3cnyYYLk6Q3OJ++XeYK/
uUHvodbSaudVrzNzBoQrPv2SXdFkLiP4tZqQY+XPgcTipKaiONJtMn9KQOEII9Zy
/GpEpSOYkoM+z4v26RyKqkckTEy93d/4GDYDIOa4o4J/
LCDNM6e+YTWwIkexucZFrl1ksYqxz79SZ04cv4EUsbzEU59w/
KABT99UFog8dLSbC76gxvlMD/
gODB7okelDBFvgPxitsQ+s5yh2T5JuOLco1NDxDiMKlzVZvt/
ICsh0fmbc0fyKvIYkLZNOz4gn7+4UN/54nI1kDZiuYjU/
swgV7tFUWfSa4eInBPxpCJa9bO5yi3lrntwY34CNSMVzZyB+TbDlzycpxIrl9HQ8
E4ji1gqPQQg44WrX2c/
54CAsdSVPJeVczY8onXFSUaiMBMvLcg32QLUcy64oOCfjcmLRy3xwYmVXZV9OI
WzqsDRGFUQAy/Xy/
kWmC1fMERWa48MjuwaJxDiMLredIdf+eiILkJXznnE0PSGjdcSLBbuByX+QYqS2
BABU8R9jEmJ4nRE4kZyhZefB/IH9mjquAeCQmsrf/
EcQWgriEoAKDSvjz8v5uqDGqPymS7aM9i44EexVB225g6rGqq3f9Ue7sRXrgRI
MQgs8ENUfynCMiFiRM6Zu1fSORVUjkiYs7vJoTbnQBFCOj+N6hrIGyTOBvWfvxh
0xUlGiJNFG5dydn828oENe87Q7zEbJd/sLHrN2o/
UuHzaKi57t6y69wQYBN21nvji/nM5c15u3NEygrymNq286+D/
ACKRKUjmJOYFxH4HlHJotI5I4CsVYmoUy4h93OACrHR/
8LyOrA8z5YXXmtXfPEwaYRkSBsSWVE9PDK6j8om0cB5u3NEegrimLiVrM+Tu54
GZC1gdEf8AwuyEkags9GqiIph8bhEfmRhRsw+0iSQ0eoOJiFknFXTzP/
C3dnrhkDzYq14sEw0lvIHw/nH6kU/mFENgLlU+HcwFEVRLHUjutflP/
AkagQCx9xJbg7F+4d15+GHKcb/
gJnw+c+oY5ruZsT7LsXzMwL2oh33YEyFPus0WIu7xfVv/
AAC1DujJ6c4lCTYprROThW/Fj5P+bKGrFwY1fnGc8IK/
DB1E7Go1Becl0V+lyKIZuL6htc9+NhVQgrjvf1SyvsdkRe/
RSO35nflhtee7+BzyhfKvAJXbWHtbfm/whSHqDZdKwedXoqt/
NSZWvYvclpmfCcP2vfctPWT9ReNbg/
U+UVy+slkKV5zf3A2YrLdOcFZznNwA23mE1i/
Ily2tRh4zRiR4GRmkfKRAclDCvH6P2SBsJo59F/hnAc3+Sj6w/wCJJt/
46oFsIhWc0dR9cFpxzyVf/HSEsZAfUO/G+AxjrRl9n/
xNL3Aw32Ifcsso1v8AfA7G5/
ujVWeVp27BtFMevH1NSORfyOD1WBQQiIhz4Yq1VnVwTMC0YNDAhGoMgP8Aw
FOm+SQqyeytnOmL/
bMoS9jKd8M7Q5RzyZrF8h8wknrR+4LXeT+pT1XIPqZLIDqnSd/
j5rKItMgr5JxlmG57H1db9xe3d1Y9bcz8QTmbqE7T94lBLxf50YC/
DoAUsh5wYSrk9cbAGEwJR5JNgk5D8ItbNwj0bzGYze9GA9qOa8AAAD3cPnh6Ku
3yi7h+5359zvT7n9Kn9Kn9Kn9Kn9Kn9Kn9Kn9Kj1HQTuz7nZP3HapOf78PTfev
niAA3P8AV6HG6ixBeWiClLQKA/8AzVjLGJOYrNZ3D9ztn7nbP3O2fuds/
cR17nnB7igAudM2dw/c7Z+52z9zun7nbP3O4fudw/
ctbtU1GmkjPbBijUc53D9yxpTKbssaAGCnYFncP3EltXbxgwjWjRGVehRK2LnbP3
Ete55w4RrDRHwJNRgw9LuU4Hmw+I9KNX4V/C5uTNA1VnbP3O2fud4/
cGUI9vGPAjV+FfGgrwGjtrO2fuNDq8YtLqM7AhQBqs7h+53D9yutnp2Go0FClA
M1YaTuec7Z+52z9ztn7nbP3Brvokeg+J1AtRA9Lnu8mviXw+rpH2HwU/
NVbYLOwfudw/cLEUQbExY8lebgLO4fuFHNCsjVoYuvyVBqlzuH7nbP3O6fud0/
c7x+52z9xEtI7eMaiNryK3m2qCljHbxncP3Ku2aFss8GnCTfMLO4fuds/
c7Z+52z9zKXDgz7D4i2bRgc1nbP3C+lRFNAz8GWOAQbrOwfudw/
ctKNU0MskmTAwYbrO2fudo/ca4aCojTmY0qLzFCyxZ3D9wT1ktToGcAqqCdw/
c7h+48CUGauZKQA1tjdZ3D9wSxHbxh6iiGiMbYclQ1HOds/
cSRdPjyDGyBQgbJc7h+5aXapqbJhb1OoZetXO0fudw/
cFRSiB4iYmSQUyHks7Z+53z9+ND1J+JHbtG7w877nxdv2SmZgdPzhoe2mFGZ
yZ3YCJsirQPfY1eurY4Pre2S9SKXfKJhBlesHjVP238JM7bHofMizS1ygiB4ayewHD
wavlO1bsOk/
HZONDovsrJGdZwLb8uIotHPbI4sXruAlNUq6ti4MzW2Q8kmjAeSO9kBbPJ2cOmY
RogoTh8XHvOT8T+DRO9bsagn4WxLYexiPUjlWMw+sgH5M2Joj4BFqB93r8YPw
KHUDYyregfoj3HHsW5+IqQIoRMpec3B6Qi7JmRAxB+1aHuMzqEwNdzIjyv8AkC
p299fnBjEnImVhhzmZD3qMVZXiVtwoXfnb7YNbGxuhke8bfukpbgd1lPfI6qwN6
guatHVIiNYKF7TmzDr84FrSLgFssd9gF6BgQrQ4DwMhLvfhH94n94nOGcUDMP7
xP7zEWgQwdouxH95n95gIUeLLvO7DoOKg3N88Xb9kpnYfT853jZM7rtGraDms
a6uj8riIlqMUfhnofQcoBEtFj4u578R19aJVPSDFUYgesZUMwIufGXMcsdadq3YdJ
+C8REH4m0pg+k7V+o93jq9nBBmXCSbGCZxvzBfmXpdXi1oHNjjLXNOCGNC7
1ihMbgVoCA+EFmI5iYoGidu249lyYvsqhf3Gf2HG1yvmT+8ShOqR2nZbGgZ42b
E2dukOvGhn9d3s1r4EAste/PFwExegnvWPetzHq/
GpAgLbzl58ORsUmGjSR6p1iWqsnJ+28Mufzsjm6nsKDMGj9vFINRJ1rvlgCz7d6l
PTLB/
uNl645Hi+6oIBMGsEPDYf3oMflA3NP5A1M5YPXAPmq6EIBT79e2ngQqKK7JL+rf
qf1b9T+vfqcnogSf1Sf1iEpLLPJgHm6Nk/rE/
rEDB2hRMncZ8Oi4h735Yu17ZTMw+n5zve2AnqicdC4PxPzBZoCGb4IXsOhAgx
S8J5VKjPxYeZ4adUGf2+PF3Pfir6mUsxmLSYT2jVnZaIcEHc0GkcLJ/
l5KHHWnYN+HS/
guHHCmiG3Km0BjvkBWptiVVGdmsti0D7HBwYmfKuQEGjYg5RYHSKWhPKoXIj5
pS35Y5E2LdZb9sTDR4NXZcmL3RSNE2f1iZhotwTsO+F46a4eDP6JFtX9H6hsND
GqBnjZsiKovJugDJR4J7Q9DO9TAhyHzwcWccHNmKtVY2s2zqotOJUf4+bWAAqx
w71uY9X4EQ7Nu8Gcb8nTY9MAetxFnI+QjP7AjudhpIgfq9LJXztIFXRAVCNKY8z9
5AowDCp8+k/VgBphQFlH354PJFJSMPqGZX6wDMu16oM/
SyiLQWNSDUMI8mcu/
UqWwaQd94LSwjhH8NDZAo0MQwwo6gCgjw8vFMNp4Dsm/
DPZMSdjjlyc+NQ3F2vbKZmHNEVdjllzizz/
iMBKmbjAt2h0BSdZqO+9BhQ87aPTxe87/
F3EQPnhbhxlPyXMdadt3YdL+C8RIDVaWqrAn9z/
ccA0mmb0YNzB5eDZAAKIyOb8kDgegiO/
wC5xNEorREpJ0ydirB2WW9UcTDR4NXZcnhP0DOw74d93eL9Qq8bNhBHKo28
4QYLTJ6y/
wCXSjrnD0L5QOLJ3UOyywlfLX2mkdlBhzvwOH1RMr9Yd63Mer8CId+3eDVzb2v
098LWIbZLJpY2NqWnvH01287o45O7lw1kTsavKz6jdWc5q8OndfR64ZOCu3OP
SKtVY2sOlTOxOb0IIoUPccMvq5Oxli2aJ2cC0HcU4HTgaQTqSmgJQo0vzC/
Ah7ju8HdtniA75v8AwO17ZTMw+si7Hhg6o1PNwvOcD5eA1lJe1MPmQwoQdrY
VBukOPgllPCZpRWug2ned/il/Noi4MrbH1fKMRofk4dL+S8cIBhICnk/
T0h5AiixNyN/9t4aTM+nwelT70AfFSoAujcTuuTAq22J0DOw74d93eKxQM/
GzZUllOe31uWAHm3eAFsXpVuQ5H2wqo8lOjoQnFcy8j4rAqC+FL2vDsW5j1fgV
Ls27wGVNjsKhj1zlpofXBLaA9pvH/EE7ubEACTP7uhMgpTy/
oMKXbTmqhA1zloq8FpZw8+Qwzpgb0XSWwvcLn1OGoluxoHqQSQqcQswobzX
x/YMoZ6tEdRMc0RB2Np4iG2WjDbbznb/3O8PuEKVarjTX8RBLvm/
DP1dyyUV7TpFP3v1EQtRQ2OLte2UzsPp+c7/
tjIAxuJmcFldttl36MNKIWJgsJZW42XqNS9qR3Vtwpshd+Gg62HYd/
hlrucigC1gItZGoGT7GGvKz5FMSzsw2Auc7Z7uDDdPZDwfHRvAcDLHKsXJ2/
wDcV/
wRaaAVuEjbRNkwV4SriF9NzK+8tisB8hpFMA8UDMRwHa0XxQyPVjsepwthSN8
4mdBntOHF2xVDu6Rk/GCzkOoAtZrI+gWGHAex53/
WPQM7Lvh3Hd4rFQz8TNrwjcAOjbMDEgagGgYUvo9N1+3ziTWCbBW8QRKGcx
SZrhqhLHtPUhCQU4hYzsW5j1fgRDs27w0enxX98HFhzLy53gAW6WxtuuERoCJ6
dbUmki8Ax1A2MQzB9GYHtgN009jgnbRfoAtYvyrJwcj7YK8zC8hQZJHMdtgVvzx
o38wNT9rxNIsH0eBK0o7q0Q+VV3Ne54kKkhBUNfPnMu7979zn+9+5l3fvfuOW
9c4bn4bAHfN+HTcRMzf8sXa9srmYbT852TZGsWx1Jq+j84k30cvYI6IHZmii+tz
OodfW7vFwGj6xLNASkKofnFByUaWqVxn9x+s/
uP1n9x+szgWsGWaqrzned+J2AjJUDflEjw3R1rDgI3mHGXEKJdR+2vpE6U3WiZ
aTfvd10w/qZUuUttcQJoA8gHx+DxwQD2LCrPUmT2HtLjNrLXimNrbVd1wN/
kPZis74NV04geGsgds9YSlhlkL1mRhq2VuYOwMPZVyAnGnL7x6QPiprwRk+jUW
04/BKcBwECiCcTYQZCZ5o9bilVzuSfGJI9THhldN49AzsO+Hcd3izUy/
GzY8nlSublCRZcj9PA8wnIkGxIcQIDgDodcK23qL6KxtLYlbrF7n7XO6bnj6kHOra1
apcyL6n9z+y/uf2f9xUUI1LVlKeetz1LIiNYgzPR88j26x6cv3AyOinwVn/
ADFD0KwMd9A3V7fONpbGss9+TN49+2Ydo2zR8vxYe07fhsZd134dFxUGd/
yxds2Ym6fnOybI0FglgckYvQrRanj5eEyCloMyxNNgLMvjnc9/
jNyKpKOBALiAUAaBMmz63b4jwJ0K2A4rkTT+q7gzfVv8hDggbFS0EK3BaoBXpn
zDZBUjmJGvo2JXwwVAWR4VfXNo/
DGhstym3nv4hsLdMp1GF5flQBQGPRM7Dvh3nd4v1Azxs26PC0SQGvCOY5y5v
C2PAckwdplc1088G3elyCxXnLC7zmrwOSFRS3/jO/vqd9fWLIZ7PNNeXOeq/
Jj134FI7LuYfY8r9MVRqOeaH2+Ywhkjiuh629sVpc8pnwJBQFGAiAXueAw+xN9JC
KQAOEek78+oRBZ0ZOfWOHJoCqWRvRyvwUzPRvDv2zDtWyaPliD5DWIT68YPc
5zmtdUIDMxS/wD1qoDBQUamuqPBRYcCmSOCgjZpazOKvJasWk/
oSE9yrUAgJryfxyOCr4yPkarggswRZoAB4I6wVttFY82sAmWwWBbqaPxYX7mZe
B4udP8AA+0xtUQPADnFAA9kfXuqbPS8ziSlpcpPEWgKAihs4oWKsmsMR89Tkxs
s6pvjFxxUfZnAnHA83IdDBYBo6owJ/Qk/
oScb492mKkEHVGB7vh57nBwA9EQEuqbPS8zPCVq9PFNQB7A6iQT+aRscjWBT
rYL7YZlid9n6NsSTXUK9PwIJTBZZy9bnwekdpHQ69o1ioghOmPwjE9JE1+WZUA
xA8FsjZiTAsDggG2uQxKgPnVAD3cecradBbTvp4Fkg6iiPxOxMOagw6szLCxrSsH
9xjzhfa2tzh5485US3ERM/
rFBhzrla04OSxFUySyAE8j1Z+WPPVfx6iyHzNZwELurp4we5znFntWzBcsHE81T
UdcOZfMTUDbDVEA0AhNAkR4jFamjqc4MOJBsrLDNffDX6PSBkPOM3/
OIrw4LWbIWvMemPmbuD/IY846BPniPRwLiy6U1MOaDX3AjS/wDuP//Z";
let PROJECTS = [
];
let RISKS = [
];
let TASKS = [
];
let MEMBERS = [
{name:"Taye Abu",role:"Project Manager",projects:"Ayisha Substation /
Maintenance",util:85,tasks:18,status:"Active",email:"[Link]@[Link]"},
];
function hashPw(str) {
let h = 2166136261;
return [Link](16).padStart(8,'0').toUpperCase();
}
let USERS = [
{id:"U001",name:"System
Administrator",username:"sysadmin",role:"Administrator",email:"admin@edr.
et",access:"Admin",assignedProjects:["All
Projects"],status:"Active",dateCreated:"2025-01-01",lastLogin:"2026-06-03
08:15",pw:"edrengpmo@admin"},
{id:"U002",name:"Taye Abu",username:"[Link]",role:"Project
Manager",email:"[Link]@[Link]",access:"Editor",assignedProjects:["Ayisha
Substation Maintenance"],status:"Active",dateCreated:"2025-03-
10",lastLogin:"2026-06-03 07:45",pw:"pm2026"},
{id:"U003",name:"Tewodros
Alemayehu",username:"[Link]",role:"Project
Manager",email:"[Link]@[Link]",access:"Editor",assignedProje
cts:["Indode Link-1 Pavement Constr."],status:"Active",dateCreated:"2025-
03-10",lastLogin:"2026-06-02 08:12",pw:"pm2026"},
{id:"U004",name:"Wakuma Ensermu",username:"[Link]",role:"Project
Manager",email:"[Link]@[Link]",access:"Editor",assignedProjects:
["Dawanle Freight Terminal"],status:"Active",dateCreated:"2025-03-
12",lastLogin:"2026-06-03 09:00",pw:"pm2026"},
{id:"U005",name:"Dawit Diriba",username:"[Link]",role:"Project
Manager",email:"[Link]@[Link]",access:"Editor",assignedProjects:
["AMG OC Construction","AMG FY
Construction"],status:"Active",dateCreated:"2025-03-12",lastLogin:"2026-06-
01 14:30",pw:"pm2026"},
{id:"U006",name:"Nigisti Hailu",username:"[Link]",role:"Project
Manager",email:"[Link]@[Link]",access:"Editor",assignedProjects:["AMG
Link Rail Project"],status:"Active",dateCreated:"2025-04-01",lastLogin:"2026-
06-02 10:15",pw:"pm2026"},
{id:"U007",name:"Viewer
Account",username:"viewer",role:"Viewer",email:"stakeholder@[Link]",acces
s:"Viewer",assignedProjects:[],status:"Active",dateCreated:"2025-06-
15",lastLogin:"2026-05-28 11:00",pw:"view2026"},
];
let REPORT_HISTORY = [
{name:"Weekly Status Report — W19 2026",type:"Status",date:"May 12,
2026",by:"System Administrator",to:"All Project Managers",fmt:"PDF"},
];
//
═══════════════════════════════════════════════════════
════════
// SYSTEM-WIDE AUDIT / ACTIVITY LOG
//
═══════════════════════════════════════════════════════
════════
let AUDIT_LOG = [
{ts:"2026-06-03 08:15",user:"System
Administrator",action:"Login",module:"Authentication",detail:"Admin login
successful"},
{ts:"2026-06-03 08:20",user:"System
Administrator",action:"Edit",module:"Projects",detail:"Updated progress for
Ayisha Substation Maintenance Project"},
{ts:"2026-06-01 10:10",user:"System
Administrator",action:"Add",module:"Risks",detail:"Added Risk R-010: Power
supply instability"},
];
if(!currentUser) return;
const ts = `${[Link]()}-${pad([Link]()+1)}-$
{pad([Link]())} ${pad([Link]())}:${pad([Link]())}`;
if([Link]("audit-log-tbody")) renderAuditLog();
}
//
═══════════════════════════════════════════════════════
════════
// ROLE-BASED AUTHENTICATION
//
═══════════════════════════════════════════════════════
════════
const CREDENTIALS = {
"chief_admin": {
pw: "edrengchief@admin",
role: "chief_admin",
icon: "👑"
},
"admin": {
pw: "edrengpmo@admin",
role: "admin",
icon: ""
},
"guest": {
pw: "edrengpm@guest",
role: "guest",
icon: ""
};
/* ── selectRole ──────────────────────────────────────────────
─────────────────────────────────────────────────────────── */
selectedRole = role;
["chief_admin","admin","guest"].forEach(r => {
});
// Show the password section with the correct role label
if(pwSection) [Link]("visible");
/* ── togglePwVisibility ──────────────────────────────────────
─────────────────────────────────────────────────────────── */
if(!input) return;
/* ── doLogin ─────────────────────────────────────────────────
─────────────────────────────────────────────────────────── */
return;
}
// ── Credentials OK ──────────────────────────────────────
editMode = isAdmin; // only Admins and Chief Admin start in edit mode
[Link]("login-overlay").[Link]("open");
[Link]("main-hdr").[Link] = "";
[Link]("main-nav").[Link] = "";
[Link]("pages-wrap").[Link] = "";
if(adminBar) [Link]("open");
["ov-action-th","port-action-th","res-action-th","risk-action-th"].forEach(id
=> {
const el = [Link](id);
});
} else if(isAdmin) {
["ov-action-th","port-action-th","res-action-th","risk-action-th"].forEach(id
=> {
const el = [Link](id);
});
// Update header badge
} else {
["ov-action-th","port-action-th","res-action-th","risk-action-th"].forEach(id
=> {
const el = [Link](id);
});
applyGuestNavRestrictions();
renderAll();
/* ── applyGuestNavRestrictions ────────────────────────────────
─────────────────────────────────────────────────────────── */
function applyGuestNavRestrictions() {
// Hide the Settings and Audit Log nav tabs from Guest users
[Link](tab => {
});
[Link]('.add-btn,
button[onclick*="openModal"]').forEach(btn => {
[Link] = "none";
});
[Link]("keydown", function(e) {
});
/* ── doLogout ─────────────────────────────────────────────────
─────────────────────────────────────────────────────────── */
function doLogout() {
currentUser = null;
isAdmin = false;
editMode = false;
selectedRole = null;
[Link]("main-hdr").[Link] = "none";
[Link]("main-nav").[Link] = "none";
[Link]("pages-wrap").[Link] = "none";
[Link]("admin-bar").[Link]("open");
[Link]("login-overlay").[Link]("open");
[Link]("login-err").[Link] = "none";
["chief_admin","admin","guest"].forEach(r => {
if(card) [Link]("selected");
});
const pwSection = [Link]("pw-section");
if(pwSection) [Link]("visible");
setEditMode(false);
/* ── openLoginOverlay ─────────────────────────────────────────
Opens the login overlay (e.g. when clicking the header badge
─────────────────────────────────────────────────────────── */
function openLoginOverlay() {
[Link]("login-overlay").[Link]("open");
}
/* ── toggleEditMode ──────────────────────────────────────────
─────────────────────────────────────────────────────────── */
function toggleEditMode() {
editMode = !editMode;
setEditMode(editMode);
/* ── setEditMode ─────────────────────────────────────────────
─────────────────────────────────────────────────────────── */
function setEditMode(on) {
if(btn) {
["ov-action-th","port-action-th","res-action-th","risk-action-th"].forEach(id
=> {
const el = [Link](id);
renderAll();
//
═══════════════════════════════════════════════════════
════════
// NAV
//
═══════════════════════════════════════════════════════
════════
function showPage(tab, id) {
[Link](".nav-
tab").forEach(t=>[Link]("active"));
[Link](".page").forEach(p=>[Link]("active")
);
[Link]("active");
[Link]("page-"+id).[Link]("active");
//
═══════════════════════════════════════════════════════
════════
// RENDER ALL
//
═══════════════════════════════════════════════════════
════════
function renderAll() {
renderOverview();
renderPortfolio();
renderSchedule();
populatePCActivityFilter();
renderPCMilestones();
renderPCActivityByProject();
renderCost();
renderResources();
renderRisks();
renderSettings();
renderReportHistory();
initRptModule();
//
═══════════════════════════════════════════════════════
════════
// OVERVIEW
//
═══════════════════════════════════════════════════════
════════
function renderOverview() {
// KPIs
[Link]("kpi-projects").textContent = [Link];
const avgProgress =
[Link]([Link]((s,p)=>s+[Link],0)/[Link](PROJECTS.l
ength,1));
if([Link]("kpi-total-budget"))
[Link]("kpi-total-budget").textContent =
(totalBudget/1e9).toFixed(2)+"B";
if([Link]("kpi-budget-util"))
[Link]("kpi-budget-util").textContent = utilPct+"%";
if([Link]("kpi-portfolio-progress"))
[Link]("kpi-portfolio-progress").textContent =
avgProgress+"%";
if([Link]("kpi-safety")) [Link]("kpi-
safety").textContent = [Link]("kpi-safety").textContent ||
"2";
if([Link]("kpi-pending"))
[Link]("kpi-pending").textContent =
[Link]("kpi-pending").textContent || "5";
// Project table
if(!tbody) return;
[Link] = [Link]((p,i)=>`<tr>
<td>${i+1}</td>
<td><span class="${editMode?"editable":""}" $
{editMode?'contenteditable="true"
onblur="PROJECTS['+i+'].manager=[Link]"':''}>${[Link]}</
span></td>
<td style="color:#555;font-size:9px">${[Link]}</td>
<td style="color:#555;font-size:9px">${[Link]}</td>
<td><div style="display:flex;align-items:center;gap:5px"><div
class="pbar" style="flex:1;min-width:50px"><div class="pbar-f"
style="width:${[Link]}%;background:${[Link]}"></div></div><span
style="font-size:9px;font-weight:700">${[Link]}%</span></div></td>
</tr>`).join("");
const tb = [Link]("ov-task-breakdown");
if(tb) {
// Activity counts
const actCompleted = [Link](a => [Link] ===
"completed").length;
// Milestone counts
[Link]().includes([Link]().split(" ")[0]) ||
[Link]().includes([Link]().split(" ")[0])
) || "";
: [Link];
<div style="display:flex;justify-content:space-between;align-
items:center;margin-bottom:3px">
</div>
<div style="display:flex;gap:8px;font-size:8px;flex-wrap:wrap">
</div>
</div>`;
}).join("");
[Link] = `
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:5px;letter-spacing:.4px">PORTFOLIO — ACTIVITY SUMMARY</div>
<div style="background:#d4efdf;border-radius:3px;padding:5px
8px;text-align:center"><div style="font-size:16px;font-
weight:800;color:#1e8449">${actCompleted}</div><div style="font-
size:8px;color:#555;font-weight:700">Completed</div></div>
<div style="background:#d6eaf8;border-radius:3px;padding:5px
8px;text-align:center"><div style="font-size:16px;font-
weight:800;color:#1a5276">${actInProgress}</div><div style="font-
size:8px;color:#555;font-weight:700">Ongoing</div></div>
<div style="background:#fadbd8;border-radius:3px;padding:5px
8px;text-align:center"><div style="font-size:16px;font-
weight:800;color:#c0392b">${actDelayed}</div><div style="font-
size:8px;color:#555;font-weight:700">Delayed</div></div>
<div style="background:#eaecee;border-radius:3px;padding:5px
8px;text-align:center"><div style="font-size:16px;font-
weight:800;color:#555">${actUpcoming}</div><div style="font-
size:8px;color:#555;font-weight:700">Upcoming</div></div>
</div>
<div style="margin-top:5px;font-size:8px;color:#888;border-top:1px
solid #c8d8c8;padding-top:4px">
</div>
</div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:4px;letter-spacing:.3px">BY PROJECT</div>
${projStatusRows}`;
let OV_MILESTONES = [
];
// ── Active status filter for critical milestones ──────────────
function renderMilestonesOv() {
const ml = [Link]("ov-milestones");
if (!ml) return;
const MONTH_MAP =
{Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11}
;
function parseMonthYear(str) {
return null;
function calcDays(dateStr) {
const d = parseMonthYear(dateStr);
}
// ── Build flat list of milestones linked to projects & activities ──
[Link](window.MILESTONE_DATA_BY_PROJECT ||
{}).forEach(([schedKey, msList]) => {
[Link]().includes([Link]().split(" ")[0]) ||
[Link]().includes([Link]().split(" ")[0])
);
[Link](ms => {
const isDelayed = (forecastDays !== null && baselineDays !== null &&
forecastDays > baselineDays);
[Link]({
msName: ms.m,
majorActivity,
baselineDate: [Link],
forecastDate,
baselineDays,
forecastDays,
isDelayed,
variance,
status: ms.s,
actPct: [Link] || 0,
planPct: [Link] || 0,
critical: [Link],
});
});
});
// Sort by nearest forecast due date
// Summary badge
if (![Link]) {
return;
const fd = [Link];
// Row class
const rowClass = isOverdue ? "cms-row-overdue"
: isDue30 ? "cms-row-due30"
: [Link] ? "cms-row-critical"
: "";
? `▲ ${[Link](fd)}d overdue`
: "—";
// Status badge
const statusCfg = {
};
: [Link] < 0
: "";
// Critical flag
<td style="min-width:160px">
<div style="display:inline-block;max-width:155px;overflow:hidden;text-
overflow:ellipsis;white-space:nowrap;
padding:2px 7px;border-radius:3px;font-size:8px;font-
weight:800;background:${chipBg};
</td>
<td style="min-width:150px">
<div style="font-size:9px;color:#1a6b3a;font-weight:700;line-
height:1.3">${[Link]}</div>
</td>
<td style="min-width:170px">
${critFlag}<span class="cms-ms-name">${[Link]}</span>
</td>
<td class="cms-date-col">
<div class="cms-date-normal">${[Link]}</div>
</td>
<td class="cms-date-col">
<div class="${forecastClass}">${[Link]}</div>
${varianceHtml}
</td>
<td style="min-width:80px">
<span class="cms-days-badge
${daysBadgeClass}">${daysLabel}</span>
</td>
<td>
</td>
</tr>`;
}).join("");
[Link] = `
<div class="cms-filter-bar">
<span style="font-size:8.5px;font-weight:800;color:#0a3d1f;letter-
spacing:.3px">FILTER:</span>
<span style="display:flex;align-items:center;gap:4px;font-
size:8px;color:#555;margin-left:4px">
<span style="width:10px;height:10px;background:#fdf0ef;border:1px
solid #e74c3c;border-radius:2px;display:inline-block"></span>Overdue
<span style="width:10px;height:10px;background:#fffbf0;border:1px
solid #f39c12;border-radius:2px;display:inline-block;margin-left:6px"></
span>Due ≤30d
<span style="width:10px;height:10px;background:#fff8f6;border:1px
solid #e8a090;border-radius:2px;display:inline-block;margin-left:6px"></
span>Delayed
</span>
<span style="margin-left:auto;font-size:8px;color:#888;font-
style:italic">Sorted by nearest forecast date · 🚩 = Critical path
milestone</span>
</div>
<table class="cms-table">
<thead>
<tr>
<th>Project</th>
<th>Major Activity</th>
<th>Critical Milestone</th>
<th>Baseline Date</th>
<th>Forecast Date</th>
<th>Days Remaining</th>
<th>Status</th>
</tr>
</thead>
<tbody>${tableRows}</tbody>
</table>`;
function renderActivityOv() {
const ac = [Link]("ov-activity");
if(!ac) return;
[Link]().includes([Link]().split(" ")[0]) ||
[Link]().includes([Link]().split(" ")[0])
);
[Link](act => {
[Link]({
projName,
actName: [Link],
status: typeLabel,
statusColor: typeColor,
icon: typeIcon,
physPct: [Link],
variance: [Link] || 0,
});
});
[Link](ms => {
[Link]({
date: [Link],
projName,
statusColor: "#8e44ad",
icon: "🏁",
physPct: 100,
variance: 0,
sortDate: [Link],
isMilestone: true
});
}
});
});
// Show top 15
if(![Link]) {
return;
[Link] = `
<thead>
<tr>
<th>Date</th>
<th>Project</th>
<th>Activity / Milestone</th>
<th>Responsible</th>
<th>Progress</th>
<th>Status</th>
</tr>
</thead>
<tbody>
${[Link](e => {
return `<tr>
<td style="white-space:nowrap;color:#555;font-size:9px">${[Link]
|| "—"}</td>
<td style="max-width:140px;overflow:hidden;text-
overflow:ellipsis;white-space:nowrap;font-size:9px" title="${[Link]}">$
{[Link]>22?[Link](0,20)+"…":[Link]}</td>
<td style="max-width:200px;font-size:9px">${[Link]}</td>
<td style="font-size:9px;color:#1a5276">${[Link]}</td>
</tr>`;
}).join("")}
</tbody>
</table>`;
function addActivityOv() {
}
//
═══════════════════════════════════════════════════════
════════
// PORTFOLIO
//
═══════════════════════════════════════════════════════
════════
//
═══════════════════════════════════════════════════════
════════
// PROJECT CONTROL — CRITICAL MILESTONES BY PROJECT
//
═══════════════════════════════════════════════════════
════════
// Milestone filter state: null / "overdue" / "duesoon" / "delayed"
window._msStatusFilter = null;
function setMilestoneFilter(filter) {
["all","overdue","duesoon","delayed"].forEach(f => {
if (!btn) return;
renderPCMilestones();
function renderPCMilestones() {
if (!wrap) return;
const MONTH_MAP =
{Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11}
;
function parseMonthYear(str) {
return null;
function calcDays(dateStr) {
const d = parseMonthYear(dateStr);
if (titleEl) {
[Link] = isAllProjects
[Link](window.MILESTONE_DATA_BY_PROJECT ||
{}).forEach(([schedKey, msList]) => {
[Link]().includes([Link]().split(" ")[0]) ||
[Link]().includes([Link]().split(" ")[0])
);
if (!isAllProjects) {
const keyMatch = schedKey === selectedProj ||
[Link]().includes([Link]().split(" ")
[0]) ||
[Link]().includes([Link]().split(" ")
[0]);
if (!keyMatch) return;
[Link](ms => {
const isDelayed = (forecastDays !== null && baselineDays !== null &&
forecastDays > baselineDays);
if (statusFilter) {
});
});
// Summary badge
if (![Link]) {
const msg = isAllProjects
return;
const statusCfg = {
};
</tr>`;
}).join("");
<div style="display:flex;align-items:center;gap:10px;padding:7px
12px;background:${projColor}18;border-left:4px solid ${projColor};border-
bottom:2px solid ${projColor}40;border-radius:4px 4px 0 0">
<span style="font-size:10px;font-weight:800;color:${projColor}">● $
{projName}</span>
<span style="font-size:9px;color:#666;font-weight:600">Project
Manager: ${manager}</span>
<span style="margin-left:auto;background:${projColor}20;border:1px
solid ${projColor}40;border-radius:3px;padding:2px 8px;font-size:8px;font-
weight:700;color:${projColor}">${[Link]} milestone$
{[Link]>1?"s":""}</span>
</div>` : `
<div style="display:flex;align-items:center;gap:10px;padding:7px
12px;background:${projColor}18;border-left:4px solid ${projColor};border-
bottom:2px solid ${projColor}40;border-radius:4px 4px 0 0">
<span style="font-size:10px;font-weight:800;color:${projColor}">● $
{projName}</span>
<span style="font-size:9px;color:#666;font-weight:600">Project
Manager: ${manager}</span>
<span style="margin-left:auto;background:${projColor}20;border:1px
solid ${projColor}40;border-radius:3px;padding:2px 8px;font-size:8px;font-
weight:700;color:${projColor}">${[Link]} ${showAll ? "upcoming" :
"critical"} milestone${[Link]>1?"s":""}</span>
<span style="background:#e8f5e9;color:#1b5e20;border-
radius:3px;padding:2px 8px;font-size:8px;font-weight:700">✔ Selected
Project</span>
</div>`;
${projHeader}
<div style="overflow-x:auto">
<table class="cms-table">
<thead><tr>
<th>Major Activity</th>
<th>Critical Milestone</th>
<th>Baseline Date</th>
<th>Forecast Date</th>
<th>Days Remaining</th>
<th>Status</th>
</tr></thead>
<tbody>${tableRows}</tbody>
</table>
</div>
</div>`;
}).join("");
<span style="display:flex;align-items:center;gap:4px;font-
size:8px;color:#555">
<span style="width:10px;height:10px;background:#fdf0ef;border:1px
solid #e74c3c;border-radius:2px;display:inline-block"></span>Overdue
<span style="width:10px;height:10px;background:#fffbf0;border:1px
solid #f39c12;border-radius:2px;display:inline-block;margin-left:6px"></
span>Due ≤30d
<span style="width:10px;height:10px;background:#fff8f6;border:1px
solid #e8a090;border-radius:2px;display:inline-block;margin-left:6px"></
span>Delayed
</span>
<span style="margin-left:auto;font-size:8px;color:#888;font-
style:italic">${footerNote}</span>
</div>
${html}
</div>`;
//
═══════════════════════════════════════════════════════
════════
// PROJECT CONTROL — ACHIEVEMENTS & ACTIVITY LOGS BY PROJECT
//
═══════════════════════════════════════════════════════
════════
function renderPCActivityByProject() {
if (!wrap) return;
// Activity section follows the global project selector (no separate filter)
if (projLabel) {
[Link] = projFilter === "ALL" ? "📂 All Projects" : "📂 " +
([Link] > 30 ? [Link](0,28)+"…" : projFilter);
[Link](window.SCHEDULE_ACTIVITIES || {}).forEach(([schedKey,
acts]) => {
[Link]().includes([Link]().split(" ")[0]) ||
[Link]().includes([Link]().split(" ")[0])
);
[Link]([Link](" ")[0]) ||
[Link]([Link](" ")[0]) ||
[Link]([Link](" ")[0]);
if (!matched) return;
}
[Link]({
actName: [Link],
physPct: [Link],
variance: [Link] || 0,
type: "activity"
});
});
[Link]({
date: [Link],
actName: "🏁 Milestone: " + ms.m,
owner: manager,
statusColor: "#8e44ad",
icon: "🏁",
physPct: 100,
variance: 0,
type: "milestone"
});
});
});
if (![Link]) {
return;
return `<tr>
<td style="white-space:nowrap;color:#555;font-size:9px">${[Link] ||
"—"}</td>
<td style="max-width:220px;font-size:9px">${[Link]}</td>
<td style="font-size:9px;color:#1a5276">${[Link]}</td>
</tr>`;
}).join("");
<div style="display:flex;align-items:center;gap:10px;padding:8px
12px;background:${projColor}15;border-left:4px solid ${projColor}">
<span style="font-size:10px;font-weight:800;color:${projColor}">● $
{projName}</span>
<span style="font-size:9px;color:#666;font-weight:600">Project
Manager: ${manager}</span>
<div style="margin-left:auto;display:flex;gap:6px;flex-wrap:wrap">
<span style="background:#d4efdf;border-radius:3px;padding:2px
7px;font-size:8px;font-weight:700;color:#1e8449">✓ ${completed}
Done</span>
<span style="background:#d6eaf8;border-radius:3px;padding:2px
7px;font-size:8px;font-weight:700;color:#1a5276">▶ ${inProgress}
Ongoing</span>
</div>
</div>
<div style="overflow-x:auto">
<thead><tr>
<th>Date</th>
<th>Activity / Milestone</th>
<th>Responsible</th>
<th>Progress</th>
<th>Status</th>
</tr></thead>
<tbody>${rows}</tbody>
</table>
</div>
</div>`;
}).join("");
[Link] = html;
function populatePCActivityFilter() {
const sel = [Link]("pc-activity-proj-filter");
if (!sel) return;
[Link](p => {
[Link] = [Link];
[Link](opt);
});
function renderPortfolio() {
const pb = [Link]("port-progress-bars");
if(pb) {
<div style="font-size:9px;font-weight:800;color:${barColor}">$
{[Link]}%</div>
<div style="height:${maxH}px;display:flex;align-items:flex-
end;width:100%">
<div style="width:100%;height:${barH}px;background:$
{barColor};border-radius:3px 3px 0 0;transition:height .4s;position:relative"
title="${[Link]} — ${[Link]}% (${[Link]})">
</div>
</div>
<div style="font-size:8px;text-align:center;color:#555;word-
break:break-word;line-height:1.2;width:100%;padding:0 1px" title="$
{[Link]}">${shortName}</div>
</div>`;
}).join("");
[Link] = `
<div style="display:flex;gap:4px;margin-bottom:6px;flex-wrap:wrap">
<div style="display:flex;align-items:center;gap:3px"><div
style="width:9px;height:9px;background:#27ae60;border-radius:2px"></
div><span style="font-size:8px;color:#555;font-weight:700">On
Track</span></div>
<div style="display:flex;align-items:center;gap:3px"><div
style="width:9px;height:9px;background:#f39c12;border-radius:2px"></
div><span style="font-size:8px;color:#555;font-weight:700">At
Risk</span></div>
<div style="display:flex;align-items:center;gap:3px"><div
style="width:9px;height:9px;background:#e74c3c;border-radius:2px"></
div><span
style="font-size:8px;color:#555;font-weight:700">Delayed</span></div>
</div>
const bb = [Link]("port-budget-bars");
if(bb) {
<div style="font-size:9px;font-weight:800;color:${barColor}">$
{utilPct}%</div>
<div style="height:${maxH}px;display:flex;align-items:flex-
end;gap:2px;width:100%">
<div style="flex:1;height:$
{budgetH}px;background:#d6eaf855;border:1px solid #aed6f1;border-
radius:3px 3px 0 0" title="Budget: ETB
${([Link]/1e6).toFixed(0)}M"></div>
<div style="flex:1;height:${spentH}px;background:$
{barColor};border-radius:3px 3px 0 0;transition:height .4s" title="Spent: ETB
${([Link]/1e6).toFixed(0)}M (${utilPct}%)"></div>
</div>
<div style="font-size:8px;text-align:center;color:#555;word-
break:break-word;line-height:1.2;width:100%;padding:0 1px" title="$
{[Link]}">${shortName}</div>
</div>`;
}).join("");
[Link] = `
<div style="display:flex;gap:10px;margin-bottom:6px;flex-wrap:wrap">
<div style="display:flex;align-items:center;gap:3px"><div
style="width:9px;height:9px;background:#d6eaf855;border:1px solid
#aed6f1;border-radius:2px"></div><span style="font-
size:8px;color:#555;font-weight:700">Allocated</span></div>
<div style="display:flex;align-items:center;gap:3px"><div
style="width:9px;height:9px;background:#2980b9;border-radius:2px"></
div><span style="font-size:8px;color:#555;font-weight:700">Utilized
(Normal)</span></div>
<div style="display:flex;align-items:center;gap:3px"><div
style="width:9px;height:9px;background:#f39c12;border-radius:2px"></
div><span style="font-size:8px;color:#555;font-weight:700">Utilized
(>75%)</span></div>
<div style="display:flex;align-items:center;gap:3px"><div
style="width:9px;height:9px;background:#e74c3c;border-radius:2px"></
div><span style="font-size:8px;color:#555;font-weight:700">Utilized
(>90%)</span></div>
</div>
}
//
═══════════════════════════════════════════════════════
════════
// SCHEDULE
//
═══════════════════════════════════════════════════════
════════
// Master project schedule data for 2026 Gantt
const GANTT_PROJECTS_2026 = [
];
const STATUS_COLORS_2026 = {
"On Track":"#27ae60","Delayed":"#f39c12","Critical":"#e74c3c","At
Risk":"#d35400","Completed":"#2980b9"
};
const MONTH_LABELS =
["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
//
═══════════════════════════════════════════════════════
════════
// S-CURVE — PER-PROJECT PROGRESS DATA
// Add any new project here and the dropdown will automatically include it.
//
═══════════════════════════════════════════════════════
════════
(function buildSCurveData() {
sharpness = sharpness || 8;
return vals;
lag = lag || 0;
});
return result;
const TODAY_MONTH = 4;
const projectDefs = [
];
[Link] = {};
[Link](function(def) {
return [Link](function(p, i) {
});
[Link][[Link]] = {
lag: [Link]
};
});
window._scurveState = {
view: "monthly"
};
})();
// S-Curve data (cumulative %) — legacy globals kept for backward
compatibility
// Milestone data
const MILESTONES_2026 = [
];
// Phase data
const PHASES_2026 = [
];
// Delay data
const DELAY_ITEMS_2026 = [
];
[Link] = [Link] ||
MILESTONES_2026.map((m,i)=>({id:i+1,...m}));
//
═══════════════════════════════════════════════════════
════════
// SCHEDULE v7 — PROJECT-BASED ACTIVITY & MILESTONE DATA
//
═══════════════════════════════════════════════════════
════════
window.SCHEDULE_ACTIVITIES = {
{id:"AYS-001",name:"Site Mobilisation",start:"2026-01-05",finish:"2026-01-
25",physPct:100,finPct:100,status:"completed",variance:0,owner:"Eng.
Tesfaye"},
{id:"AYS-002",name:"Foundation Excavation",start:"2026-01-
20",finish:"2026-02-28",physPct:100,finPct:98,status:"completed",variance:-
2,owner:"Eng. Kebede"},
{id:"AYS-006",name:"Transformer Installation",start:"2026-06-
01",finish:"2026-07-
31",physPct:10,finPct:5,status:"upcoming",variance:0,owner:"Eng. Dawit"},
],
{id:"DFT-002",name:"Foundation Works",start:"2026-02-20",finish:"2026-
04-30",physPct:60,finPct:50,status:"delayed",variance:-22,owner:"Eng.
Solomon"},
{id:"DFT-005",name:"Roofing System",start:"2026-08-01",finish:"2026-10-
31",physPct:0,finPct:0,status:"upcoming",variance:0,owner:"Eng. Almaz"},
],
"Indode Link-1 Pavement Constr.": [
{id:"ILP-001",name:"Subgrade Preparation",start:"2026-02-
01",finish:"2026-03-
15",physPct:100,finPct:100,status:"completed",variance:0,owner:"Eng.
Berhane"},
{id:"ILP-006",name:"Drainage Completion",start:"2026-07-
15",finish:"2026-08-
31",physPct:0,finPct:0,status:"upcoming",variance:0,owner:"Eng. Yonas"},
],
{id:"ILR-001",name:"Topographic Survey",start:"2026-04-01",finish:"2026-
04-30",physPct:100,finPct:100,status:"completed",variance:0,owner:"Eng.
Girma"},
{id:"ILR-002",name:"Land Acquisition",start:"2026-04-01",finish:"2026-06-
30",physPct:55,finPct:40,status:"delayed",variance:-18,owner:"Eng. Alem"},
{id:"ILR-003",name:"Earthworks — Embankment",start:"2026-05-
01",finish:"2026-07-31",physPct:28,finPct:22,status:"delayed",variance:-
12,owner:"Eng. Girma"},
],
{id:"ILX-002",name:"Subgrade Earthworks",start:"2026-03-
15",finish:"2026-05-31",physPct:80,finPct:75,status:"in-
progress",variance:2,owner:"Eng. Mekdes"},
{id:"ILX-003",name:"Ballast Laying",start:"2026-05-01",finish:"2026-07-
31",physPct:35,finPct:30,status:"in-progress",variance:1,owner:"Eng.
Tadesse"},
{id:"ILX-005",name:"Signalling Installation",start:"2026-09-
01",finish:"2026-10-
31",physPct:0,finPct:0,status:"upcoming",variance:0,owner:"Eng. Mekdes"},
],
"AMG OC Construction": [
],
"AMG FY Construction": [
{id:"AFY-003",name:"Embankment Construction",start:"2026-06-
01",finish:"2026-09-30",physPct:10,finPct:8,status:"critical",variance:-
9,owner:"Eng. Leul"},
{id:"AFY-004",name:"Bridge Superstructure",start:"2026-08-
01",finish:"2026-11-
30",physPct:0,finPct:0,status:"upcoming",variance:0,owner:"Eng. Tigist"},
],
{id:"SPL-006",name:"Final Energisation",start:"2026-10-01",finish:"2026-
10-31",physPct:0,finPct:0,status:"upcoming",variance:0,owner:"Eng. Yeshi"},
],
};
[Link] = {};
(function buildFinancialData() {
const offsets = {
};
function buildForecast(actual,upTo){const
r=[Link](()=>null);if(upTo<0)return r;const lv=actual[upTo];const
rem=[Link]-1-upTo;r[upTo]=lv;for(let i=upTo+1;i<[Link];i++){const f=(i-
upTo)/rem;r[i]=[Link](lv+(100-lv)*f);}return r;}
[Link]([Link]||{}).forEach(name=>{
const def=offsets[name]||{lag:0,startFrac:.04,endFrac:.95};
const mP=sCurve(12,[Link],[Link],8);
const mA=addNoise(mP,4,[Link]);
const mF=buildForecast(mA,4);
const wP=sCurve(52,[Link],[Link],8);
const wA=addNoise(wP,20,[Link]);
const wF=buildForecast(wA,20);
const dP=sCurve(365,[Link],[Link],8.8);
const dA=addNoise(dP,140,[Link]);
const dF=buildForecast(dA,140);
function pack(p,a,f){return
[Link]((v,i)=>({planned:v,actual:a[i],forecast:f[i]}));}
[Link][name]={monthly:pack(mP,mA,mF),weekly:pack
(wP,wA,wF),daily:pack(dP,dA,dF),lag:[Link]};
});
})();
window.MILESTONE_DATA_BY_PROJECT = {
"Ayisha Substation Maintenance": [
],
],
{id:"M2",m:"Earthworks Complete",majorActivity:"Earthworks —
Embankment",due:"Aug 2026",forecastDue:"Sep
2026",s:"planned",actPct:0,planPct:0,daysLeft:80,activities:["ILR-003","ILR-
004"],critical:true},
],
],
"AMG OC Construction": [
],
"AMG FY Construction": [
],
],
};
window.DELAY_DATA_BY_PROJECT = {
{actId:"DFT-002",activity:"Foundation Works",plannedFinish:"2026-04-
30",forecastFinish:"2026-05-22",delay:22,severity:"critical",type:"Critical
Path",progress:60,owner:"Eng. Solomon"},
],
{actId:"ILR-002",activity:"Land Acquisition",plannedFinish:"2026-06-
30",forecastFinish:"2026-07-18",delay:18,severity:"critical",type:"Critical
Path",progress:55,owner:"Eng. Alem"},
{actId:"ILR-003",activity:"Earthworks —
Embankment",plannedFinish:"2026-07-31",forecastFinish:"2026-08-
12",delay:12,severity:"warning",type:"Near-Critical",progress:28,owner:"Eng.
Girma"},
],
"AMG OC Construction": [
],
"AMG FY Construction": [
{actId:"AFY-003",activity:"Embankment
Construction",plannedFinish:"2026-09-30",forecastFinish:"2026-10-
09",delay:9,severity:"critical",type:"Critical Path",progress:10,owner:"Eng.
Leul"},
],
};
function _initGlobalProjectSelector() {
[Link](name => {
[Link] = name;
[Link] = name;
[Link](opt);
});
const sc = [Link]("scurve-project-select");
[Link](name => {
[Link] = name;
[Link] = name;
[Link](opt);
});
function onScheduleProjectChange() {
const sc = [Link]("scurve-project-select");
const sv = [Link]("scurve-view-select");
_renderSCurve();
_renderFinancialSCurve();
_renderActivityDashboard();
_renderMilestonesV7();
_renderDelayAnalysisV7();
_renderSchedKPIsV7();
_updateProjectTags();
renderPCMilestones();
renderPCActivityByProject();
}
function _updateProjectTags() {
if (projData) {
const ds = [Link];
if (projData) {
const ds = [Link];
if ([Link]) {
spi = (avgP>0?(avgA/avgP).toFixed(2):"—");
if (el("sched-proj-status-tag")) el("sched-proj-status-tag").textContent =
statusText;
if (el("sched-proj-progress-tag")) el("sched-proj-progress-tag").textContent
= physPct + " Physical";
if (el("phys-scurve-proj-label")) el("phys-scurve-proj-label").textContent =
proj;
function _getSelectedProject() {
function _getSelectedView() {
function _renderSchedKPIsV7() {
if (projData) {
const ds = [Link];
if ([Link]) {
if(el("sk-milestones")) el("sk-milestones").textContent =
completedMS+"/"+[Link];
function _renderFinancialSCurve() {
if (!svg) return;
const n = [Link];
const MONTH_LABELS2 =
["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
function getLabel(i) {
const ms=[0,31,59,90,120,151,181,212,243,273,304,334];
}
const todayIdx = viewMode==="monthly"?4:viewMode==="weekly"?
20:140;
const W=720,H=155,padL=42,padR=14,padT=14,padB=28;
// Grid lines
let gridH="",gridV="";
for(let v=0;v<=100;v+=25) {
const y=toY(v);
for(let i=0;i<n;i+=gridStep) {
if(lbl){
gridV+=`<line x1="${x}" y1="${padT}" x2="${x}" y2="${padT+cH}"
stroke="#d8e8d8" stroke-width="0.5"/>`;
// Planned line
// Actual line
if([Link]>0){
const path=[Link]((p,i)=>(i===0?"M":"L")+toX(p.i)+"
"+toY(p.v)).join(" ");
// Forecast
let forecastSvg="";
if([Link]>0){
const anchor=[Link]>0?actData[[Link]-1]:null;
// Variance fill
let varSvg="";
if([Link]>0){
const lastI=actData[[Link]-1].i;
const planSeg=[Link](0,lastI+1);
const actSeg=[Link](d=>d.v);
// Today marker
const todayX=toX([Link](todayIdx,n-1));
`<defs>`
+`</defs>`
+gridH+gridV
+varSvg+actAreaSvg
+actSvg+forecastSvg+todaySvg;
// Stats
const statsEl=[Link]("fin-scurve-stats");
if(statsEl){
[Link]=
`<div style="flex:1;min-width:80px;text-align:center;border-right:1px
solid #b0cce8;padding:0 8px"><div style="font-size:16px;font-
weight:800;color:#1a5276">${lastPlanVal}%</div><div style="font-
size:8px;color:#666;font-weight:600">PLANNED FINANCIAL ($
{periodLabel})</div></div>`
+`<div style="flex:1;min-width:80px;text-align:center;border-right:1px
solid #b0cce8;padding:0 8px"><div style="font-size:16px;font-
weight:800;color:#27ae60">${lastActVal!==null?lastActVal+"%":"—"}</
div><div style="font-size:8px;color:#666;font-weight:600">ACTUAL
FINANCIAL (${periodLabel})</div></div>`
+`<div style="flex:1;min-width:80px;text-align:center;border-right:1px
solid #b0cce8;padding:0 8px"><div style="font-size:16px;font-
weight:800;color:${variance!==null?
(variance<0?"#e74c3c":"#27ae60"):"#888"}">${variance!==null?
(variance>0?"+":"")+variance+"%":"—"}</div><div style="font-
size:8px;color:#666;font-weight:600">VARIANCE</div></div>`
+`<div style="flex:1;min-width:80px;text-align:center;padding:0
8px"><div style="font-size:12px;font-weight:800;color:$
{variance===null?"#888":variance<-
5?"#e74c3c":variance<0?"#f39c12":"#27ae60"}">${variance===null?"No
Data":variance<-5?"🔴 Behind Spend":variance<0?"🟡 Slightly Behind":"🟢 On
Budget"}</div><div style="font-size:8px;color:#666;font-
weight:600">FINANCIAL STATUS</div></div>`;
function _renderActivityDashboard() {
if (!tbody) return;
});
const varColor =
[Link]===0?"#555":[Link]>0?"#27ae60":"#e74c3c";
const varTxt =
[Link]===0?"0d":[Link]>0?"+"+[Link]+"d":[Link]+"d";
return `<tr>
<td title="${[Link]}">${[Link]>30?
[Link](0,28)+"..":[Link]}</td>
<td style="color:#0a3d1f;font-weight:700">${[Link]}</td>
<td>${[Link]}</td>
<td>${[Link]}</td>
<td>
<div style="display:flex;align-items:center;gap:4px">
<div style="width:50px;height:7px;background:#e8f0e8;border-
radius:3px;overflow:hidden">
<div style="width:${[Link]}%;height:100%;background:$
{[Link]>=80?"#27ae60":[Link]>=40?"#f39c12":"#2980b9"};border-
radius:3px"></div>
</div>
<span
style="font-weight:700;color:#0a3d1f">${[Link]}%</span>
</div>
</td>
<td>
<div style="display:flex;align-items:center;gap:4px">
<div style="width:50px;height:7px;background:#e8eef8;border-
radius:3px;overflow:hidden">
<div style="width:${[Link]}
%;height:100%;background:#1a5276;border-radius:3px"></div>
</div>
<span style="font-weight:700;color:#1a5276">${[Link]}%</span>
</div>
</td>
<td style="color:${varColor};font-weight:700">${varTxt}</td>
<td style="font-size:8px;color:#555">${[Link]||"—"}</td>
</tr>`;
// Summary strip
const strip = [Link]("activity-summary-strip");
if (strip) {
const cfg = [
["completed","✅ Completed","#d4efdf","#1e8449"],
["in-progress","🔵 In Progress","#d6eaf8","#1a5276"],
["upcoming","⬜ Upcoming","#eaecee","#555"],
["delayed","⚠ Delayed","#fdebd0","#d35400"],
["critical","🔴 Critical","#fadbd8","#c0392b"],
];
function _renderMilestonesV7() {
const sm = [Link]("sched-milestones");
if (!sm) return;
if (editMode) {
if (btn) [Link]="";
[Link]((m,idx) => {
// Related activities
<div style="display:flex;align-items:center;gap:7px">
<div class="ms-icon $
{cls==='completed'?'completed':cls==='ongoing'?'in-
progress':'planned'}">${cls==='completed'?'✅':cls==='ongoing'?'🔵':'⬜'}</
div>
<div class="ms-content">
<div class="ms-name">${m.m}</div>
</div>
<span class="ms-status-badge $
{cls==='completed'?'completed':cls==='ongoing'?'in-
progress':'planned'}">$
{cls==='completed'?'Completed':cls==='ongoing'?'In
Progress':'Upcoming'}</span>
</div>
${cls!=='planned'?`<div style="padding-left:33px">
<div style="display:flex;gap:12px;font-size:9px;margin-bottom:4px">
<span>Planned: <b
style="color:#2980b9">${[Link]}%</b></span>
<span>Actual: <b
style="color:#27ae60">${[Link]}%</b></span>
</div>
<div style="height:6px;background:#e8f0e8;border-
radius:3px;overflow:hidden;margin-bottom:4px">
<div style="height:100%;width:${[Link]}%;background:$
{variance<-10?"#e74c3c":"#27ae60"};border-radius:3px"></div>
</div>
${actChips?`<div style="margin-top:3px">${actChips}</div>`:""}
</div>`:`<div style="padding-left:33px;font-
size:8px;color:#888">Planned Start: ${[Link]}${actChips?`<div
style="margin-top:3px">${actChips}</div>`:""}</div>`}
</div>`;
});
return html;
[Link] =
([Link]===0?`<div style="text-
align:center;color:#888;padding:20px;font-size:11px">No milestone data for
this project. Upload a schedule to populate.</div>`:"");
function _renderDelayAnalysisV7() {
const da = [Link]("delay-analysis");
if (!da) return;
const critCount = [Link](d=>[Link]==="critical").length;
<div style="font-size:18px;font-weight:800;color:#c0392b">$
{critCount}</div>
<div
style="font-size:8px;font-weight:700;color:#c0392b">CRITICAL</div>
</div>
<div style="font-size:18px;font-weight:800;color:#d35400">$
{warnCount}</div>
<div
style="font-size:8px;font-weight:700;color:#d35400">WARNING</div>
</div>
<div style="font-size:18px;font-weight:800;color:#0a3d1f">$
{[Link](0,okCount)}</div>
<div style="font-size:8px;font-weight:700;color:#1e8449">ON
TRACK</div>
</div>
</div>`;
if ([Link] === 0) {
} else {
<thead><tr>
<th>Activity</th><th>ID</th><th>Planned Finish</th><th>Forecast
Finish</th>
<th>Delay</th><th>Criticality</th><th>Progress</th><th>Owner</th>
</tr></thead><tbody>
${[Link](d=>`<tr>
<td style="font-size:8px;max-width:120px;overflow:hidden;text-
overflow:ellipsis;white-space:nowrap"
title="${[Link]}">${[Link]}</td>
<td style="font-weight:700;color:#7b241c">${[Link]}</td>
<td>${[Link]}</td>
<td style="color:#c0392b;font-weight:700">${[Link]}</td>
<td><span style="background:$
{[Link]==="critical"?"#fadbd8":"#fdebd0"};color:$
{[Link]==="critical"?"#c0392b":"#d35400"};border-
radius:8px;padding:2px 7px;font-weight:800;font-size:8px">+$
{[Link]}d</span></td>
<td>
<div style="display:flex;align-items:center;gap:3px">
<div style="width:40px;height:7px;background:#e8f0e8;border-
radius:3px;overflow:hidden">
<div style="width:${[Link]}%;height:100%;background:$
{[Link]==="critical"?"#e74c3c":"#f39c12"};border-radius:3px"></div>
</div>
<span
style="font-size:8px;font-weight:700">${[Link]}%</span>
</div>
</td>
<td style="font-size:8px;color:#555">${[Link]||"—"}</td>
</tr>`).join("")}
</tbody></table></div>`;
[Link] = html;
function importMasterSchedule(input) {
[Link] = "";
_initGlobalProjectSelector();
_renderGantt2026();
_renderSCurve();
_renderFinancialSCurve();
_renderActivityDashboard();
_renderMilestonesV7();
_renderDelayAnalysisV7();
_renderSchedKPIsV7();
_updateProjectTags();
populatePCActivityFilter();
renderPCMilestones();
renderPCActivityByProject();
function _renderSchedKPIs() {
const delayed =
GANTT_PROJECTS_2026.filter(p=>[Link]==="Delayed"||
[Link]==="Critical").length;
const critical =
DELAY_ITEMS_2026.filter(d=>[Link]==="critical").length;
const avgPct =
[Link](GANTT_PROJECTS_2026.reduce((s,p)=>s+[Link],0)/GANTT_PROJE
CTS_2026.length);
const completed =
MILESTONES_2026.filter(m=>m.s==="completed").length;
if(el("sk-total")) el("sk-total").textContent =
GANTT_PROJECTS_2026.length;
if(el("sk-delayed")) el("sk-delayed").textContent = delayed;
if(el("sk-milestones")) el("sk-milestones").textContent =
completed+"/"+MILESTONES_2026.length;
function _renderGantt2026() {
if(hdr) {
[Link] = "g26-hdr";
if(leg) [Link] = `
<div class="g26-leg-item"><div
style="width:12px;height:12px;background:#e74c3c;border-
radius:50%;border:2px solid #fff"></div>Milestone</div>`;
const gc = [Link]("gantt-chart");
if(!gc) return;
// Build rows
GANTT_PROJECTS_2026.forEach((p,i) => {
const blWidthPct=(p.baseline_dur/12*100).toFixed(2);
// Grid lines
}).join("");
${gridLines}
onclick="showG26Tooltip(event,'${[Link]}','${[Link]}',$
{[Link]},'Dec 2026')">
${cpOverlay}
${[Link]>8?[Link]+'%':''}
</div>
${msDots}
</div>
</div>`;
});
[Link](g=>{
const left=([Link]/12*100).toFixed(1);
const width=([Link]/12*100).toFixed(1);
</div>
</div>`;
});
[Link] = html;
if(!tip) return;
const sc = STATUS_COLORS_2026[status]||"#555";
<div>Status: <span
style="color:${sc};font-weight:700">${status}</span></div>
[Link] = "block";
[Link] = ([Link]-40)+"px";
function hideG26Tooltip() {
if(tip) [Link]="none";
//
═══════════════════════════════════════════════════════
════════
// S-CURVE CONTROLS — populate dropdowns & handle changes
//
═══════════════════════════════════════════════════════
════════
function _initSCurveControls() {
[Link]([Link] || {}).forEach(function(name) {
[Link] = name;
[Link] = name;
[Link](opt);
});
if (state) {
[Link] = [Link];
function onSCurveControlChange() {
// Persist selection
window._scurveState.project = [Link];
window._scurveState.view = [Link];
var gp = [Link]("sched-global-project");
var gv = [Link]("sched-global-view");
_renderSCurve();
//
═══════════════════════════════════════════════════════
════════
// _renderSCurve — main chart renderer
//
═══════════════════════════════════════════════════════
════════
function _renderSCurve() {
_initSCurveControls();
if (!svg) return;
if (!projData) return;
var n = [Link];
function getLabel(i) {
} else {
: 140;
var W = 720, H = 180, padL = 42, padR = 14, padT = 16, padB = 32;
function shouldShowTick(i) {
// ── Grid ──────────────────────────────────────────────────
var yy = toY(y);
if (!shouldShowTick(i)) continue;
var xx = toX(i);
gridV += '<line x1="' + xx + '" y1="' + padT + '" x2="' + xx + '" y2="' +
(padT + chartH) + '" stroke="#e8f0e8" stroke-width="1"/>';
if (lbl) {
gridV += '<text x="' + xx + '" y="' + (padT + chartH + 12) + '" text-
anchor="middle" font-size="9" fill="#555">' + lbl + '</text>';
var planAreaPts = padL + "," + (padT + chartH) + " " + planPts + " " +
(padL + chartW) + "," + (padT + chartH);
if ([Link] > 0) {
var actAreaPts = padL + "," + (padT + chartH) + " " + actPts + " " +
toX(lastActPt.i) + "," + (padT + chartH);
if ([Link] > 0) {
if ([Link] > 1) {
var todaySvg = '<line x1="' + todayX + '" y1="' + padT + '" x2="' +
todayX + '" y2="' + (padT + chartH) + '" stroke="#e74c3c" stroke-
width="2" stroke-dasharray="4 3"/>'
dotsSvg = [Link](function(d) {
}).join("");
} else {
if ([Link] > 0) {
// For monthly/weekly the dots are visible; for daily we add a scanline
overlay
[Link] =
'<defs>'
+ '</linearGradient>'
+ '</linearGradient>'
+ '</defs>'
+ gridH + gridV
+ varSvg
+ actAreaSvg
+ actSvg
+ forecastSvg
+ todaySvg
+ dotsSvg
+ tooltipSvg;
svg._scDataset = dataset;
svg._scPadL = padL;
svg._scChartW = chartW;
svg._scPadT = padT;
svg._scChartH = chartH;
svg._scN = n;
svg._scGetLabel = getLabel;
svg._scViewMode = viewMode;
var periodLabel;
} else {
} else {
if (statsEl) {
[Link] =
'<div style="flex:1;min-width:80px;text-align:center;border-right:1px
solid #c8d8c8;padding:0 8px">'
+ '</div>'
+ '<div style="flex:1;min-width:80px;text-align:center;border-right:1px
solid #c8d8c8;padding:0 8px">'
+ ' <div style="font-size:16px;font-weight:800;color:#27ae60">' +
(lastActVal !== null ? lastActVal + "%" : "—") + '</div>'
+ '</div>'
+ '<div style="flex:1;min-width:80px;text-align:center;border-right:1px
solid #c8d8c8;padding:0 8px">'
+ (variance !== null ? (variance > 0 ? "+" : "") + variance + "%" : "—")
+ ' </div>'
+ ' <div
style="font-size:8px;color:#666;font-weight:600">VARIANCE</div>'
+ '</div>'
+ ' <div
style="font-size:8px;color:#666;font-weight:600">STATUS</div>'
+ '</div>';
var d = svg._scDataset[idx];
if (!d) return;
if (!tip) return;
[Link] =
[Link] = "block";
}
function scurveHideTooltip() {
function _renderMilestones2026() {
const sm = [Link]("sched-milestones");
if(!sm) return;
if(editMode) {
if(btn) [Link]="";
[Link] = ([Link]||
MILESTONES_2026).map((m,idx)=>{
const s = m.s||"planned";
<div class="ms-content">
</div>
</div>`;
function _renderPhases2026() {
const pg = [Link]("phase-grid");
if(pg) {
const
statusLabels={completed:"Completed",active:"Active",pending:"Pending",del
ayed:"Delayed"};
const
statusColors={completed:"#2980b9",active:"#27ae60",pending:"#bdc3c7",
delayed:"#e74c3c"};
[Link] = PHASES_2026.map(ph=>`
<div class="phase-card-title">${[Link]}</div>
</div>`).join("");
}
const sp = [Link]("sched-phases");
if(sp) {
const
phaseColors=["#27ae60","#2980b9","#1abc9c","#f39c12","#d35400","#8e
44ad","#e74c3c","#bdc3c7"];
const phaseMap={
"Delayed": [100,80,60,40,20,5,0,0],
"Critical": [100,70,50,30,15,0,0,0],
"Completed": [100,100,100,100,100,100,100,100],
};
[Link] = GANTT_PROJECTS_2026.map(p=>{
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:3px"><span style="color:${STATUS_COLORS_2026[[Link]]||
[Link]}">●</span> ${[Link]}</div>
}).join("");
function _renderDelayAnalysis() {
const da = [Link]("delay-analysis");
if(!da) return;
// Summary badges
const critCount =
DELAY_ITEMS_2026.filter(d=>[Link]==="critical").length;
const warnCount =
DELAY_ITEMS_2026.filter(d=>[Link]==="warning").length;
<div style="font-size:18px;font-weight:800;color:#c0392b">$
{critCount}</div>
<div
style="font-size:8px;font-weight:700;color:#c0392b">CRITICAL</div>
</div>
<div style="font-size:18px;font-weight:800;color:#d35400">$
{warnCount}</div>
<div
style="font-size:8px;font-weight:700;color:#d35400">WARNING</div>
</div>
<div style="flex:1;min-width:70px;background:#f4f9f2;border:1px solid
#c8d8c8;border-radius:4px;padding:6px 8px;text-align:center">
<div style="font-size:18px;font-weight:800;color:#0a3d1f">$
{GANTT_PROJECTS_2026.length-critCount-warnCount}</div>
<div style="font-size:8px;font-weight:700;color:#1e8449">ON
TRACK</div>
</div>
</div>`;
DELAY_ITEMS_2026.forEach(d=>{
const maxDelay=25;
const fillW=[Link](100,[Link]/maxDelay*100);
<div style="flex:1;min-width:0">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;white-
space:nowrap;overflow:hidden;text-overflow:ellipsis">${[Link]}</div>
<div style="font-size:8px;color:#888;margin-bottom:3px">${[Link]} ·
<span style="font-weight:700;color:$
{[Link]==="critical"?"#c0392b":"#d35400"}">${[Link]}</span></
div>
<div style="display:flex;align-items:center;gap:5px">
<span style="font-size:8px;color:#555;white-space:nowrap;font-
weight:700">+${[Link]}d delay</span>
</div>
</div>`;
});
[Link]=html;
function _renderCalendar2026() {
if(!cal) return;
const days=["Su","Mo","Tu","We","Th","Fr","Sa"];
let h=`<table
class="cal"><thead><tr>${[Link](d=>`<th>${d}</th>`).join("")}</tr
></thead><tbody><tr>`;
let d=1,start=5,col=start;
while(d<=31){
const isT=d===28,hasE=[Link](d),isO=[Link](d);
col++;if(col===7&&d<31){h+="</tr><tr>";col=0;}
d++;
h+="</tr></tbody></table>";
[Link]=h;
}
function renderCost() {
_initCostProjectDropdown();
_toggleCostViewMode(val);
_updateProjectCostSummary(filtered);
_updateCostKPIs(filtered);
_renderEVM(filtered);
_renderCostVarianceAnalysis(filtered);
_renderCashFlowForecast(filtered);
if(cbc) {
'<div style="width:'+labelW+'px;font-size:9px;color:#333;font-
weight:600;text-align:right;flex-shrink:0;overflow:hidden;text-
overflow:ellipsis;white-space:nowrap" title="'+[Link]+'">'+
([Link]>22?[Link](0,21)+"…":[Link])+'</div>'+
'<div style="position:relative;flex:1;min-width:0">'+
'<div style="height:'+barH+'px;background:#e8f0e8;border-
radius:3px;overflow:hidden;position:relative">'+
'<div
style="height:100%;width:'+budgetW+'px;background:'+[Link]+'22;border:
1.5px solid
'+[Link]+';border-radius:3px;position:absolute;left:0;top:0"></div>'+
'<div
style="height:100%;width:'+spentW+'px;background:'+[Link]+';border-
radius:3px;position:absolute;left:0;top:0;display:flex;align-
items:center;padding-left:5px">'+
'<span style="font-size:9px;color:#fff;font-weight:700;white-
space:nowrap">ETB '+([Link]/1e6).toFixed(0)+'M</span>'+
'</div>'+
'</div>'+
'</div>'+
'<div style="font-size:9px;color:#555;width:70px;flex-shrink:0;text-
align:right">Budget: ETB '+([Link]/1e6).toFixed(0)+'M</div>'+
'</div>';
}).join("");
[Link] =
'<div style="display:flex;align-items:center;gap:12px;margin-
bottom:6px;margin-left:'+(labelW+5)+'px">'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:14px;height:10px;background:#27ae6022;border:1.5px solid
#27ae60;border-radius:2px"></div><span style="font-
size:9px;color:#555">Budget (outline)</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:14px;height:10px;background:#27ae60;border-
radius:2px"></div><span style="font-size:9px;color:#555">Spent
(filled)</span></div>'+
'</div>'+chartRows;
var ct = [Link]("cost-tbody");
if(ct) {
if ([Link] === 1) {
var actBreakdown = [
];
[Link] = [Link](function(act){
return '<tr>'+
'<td style="font-weight:700;color:#0a3d1f">'+[Link]+'</td>'+
'<td>'+[Link]+'</td>'+
'<td>ETB '+(actBudget/1e6).toFixed(0)+'M</td>'+
'<td>ETB '+(actActual/1e6).toFixed(0)+'M</td>'+
'<td>ETB '+(actForecast/1e6).toFixed(0)+'M</td>'+
'<td style="color:'+(var_>0?"#1e8449":"#c0392b")+';font-
weight:700">'+(var_>0?"+":"-")+'ETB
'+[Link](var_/1e6).toFixed(0)+'M</td>'+
'<td style="color:'+([Link]>=1?"#1e8449":"#c0392b")+';font-
weight:700">'+[Link]+'</td>'+
'</tr>';
}).join("");
} else {
[Link] = [Link](function(p){
var v=[Link]([Link]/[Link]*100);
var var_=[Link];
var dEVM=_getEVMData(p);
var cpi=[Link](2);
return '<tr>'+
'<td>'+([Link]>30?[Link](0,29)+"…":[Link])
+'</td>'+
'<td>Civil Works</td>'+
'<td>ETB '+([Link]/1e6).toFixed(0)+'M</td>'+
'<td>ETB '+([Link]/1e6).toFixed(0)+'M</td>'+
'<td>ETB '+([Link]*0.97/1e6).toFixed(0)+'M</td>'+
'<td style="color:'+(var_>0?"#1e8449":"#c0392b")+';font-
weight:700">'+(var_>0?"+":"-")+'ETB
'+[Link](var_/1e6).toFixed(0)+'M</td>'+
'<td style="color:'+(parseFloat(cpi)>=1?"#1e8449":"#c0392b")
+';font-weight:700">'+cpi+'</td>'+
'</tr>';
}).join("");
//
═══════════════════════════════════════════════════════
════════
// RESOURCE MODULE — Comprehensive Data & Render Engine
//
═══════════════════════════════════════════════════════
════════
const RES_EQUIPMENT = [
{id:"EQ-003",name:"Concrete Batching
Plant",type:"Concrete",project:"Indode Rail Link-1 / Indode Pavement
Construction-1",status:"Operating",util:91,nextMaint:"Jul 1,
2026",hours:1560,fuel:"Electric"},
{id:"EQ-009",name:"Welding Machine
Set",type:"Metalworks",project:"Ayisha Substation Building Maintenance
Project",status:"Idle",util:20,nextMaint:"Aug 1,
2026",hours:410,fuel:"Electric"},
{id:"EQ-010",name:"Backhoe Loader
JCB",type:"Earthworks",project:"Indode Bulk Cargo Construction
Project",status:"Operating",util:65,nextMaint:"Jun 18,
2026",hours:1050,fuel:"Diesel"},
];
const RES_MATERIALS = [
{name:"Ballast (Track
Grade)",unit:"m³",planned:45000,consumed:32000,stock:8500,reorder:1000
0,project:"Indode Rail Link-1 / Indode Pavement Construction-1"},
{name:"Concrete
(C35/45)",unit:"m³",planned:22000,consumed:16800,stock:2200,reorder:300
0,project:"Dawanle Freight Terminal Expansion Project"},
{name:"Sleepers
(Concrete)",unit:"pcs",planned:68000,consumed:41500,stock:12000,reorder:
15000,project:"Indode Rail Link-1 / Indode Pavement Construction-1"},
{name:"Rail (60kg/m
UIC60)",unit:"metres",planned:28000,consumed:18400,stock:3800,reorder:5
000,project:"AMG Link Rail Project"},
{name:"Bitumen (60/70
Pen)",unit:"Tonnes",planned:1200,consumed:880,stock:95,reorder:200,projec
t:"Ayisha Substation Building Maintenance Project"},
{name:"Structural
Steel",unit:"Tonnes",planned:850,consumed:610,stock:180,reorder:200,proje
ct:"Dawanle Freight Terminal Expansion Project"},
{name:"Electrical
Cable",unit:"metres",planned:35000,consumed:21000,stock:8000,reorder:50
00,project:"Ayisha Substation Building Maintenance Project"},
];
const RES_FUEL = [
{name:"Diesel (B5
Blend)",unit:"Litres",mtdConsumption:128400,mtdCost:18820800,stock:3500
0,efficiency:4.2,activity:"Earthworks & Transport",project:"All Projects"},
{name:"Petrol
(RON95)",unit:"Litres",mtdConsumption:12600,mtdCost:2016000,stock:8000,
efficiency:null,activity:"Light Vehicles",project:"All Projects"},
{name:"Lubricating
Oil",unit:"Litres",mtdConsumption:2400,mtdCost:720000,stock:1200,efficienc
y:null,activity:"Equipment Maintenance",project:"All Projects"},
{name:"LPG
Cylinders",unit:"Cylinders",mtdConsumption:180,mtdCost:108000,stock:60,e
fficiency:null,activity:"Welding & Cutting",project:"All Projects"},
{name:"Hydraulic
Fluid",unit:"Litres",mtdConsumption:840,mtdCost:336000,stock:400,efficienc
y:null,activity:"Heavy Equipment",project:"All Projects"},
];
const RES_MONTHLY = {
months: ["Jan","Feb","Mar","Apr","May","Jun*"],
mpPlanned: [245,248,252,258,262,265],
mpActual: [238,241,249,255,258,null],
matPlanned: [8200,9400,10800,11200,12500,13000],
matConsumed: [7800,9100,10500,10900,12100,null],
fuelCostK: [2850,3100,3380,3210,3650,null],
fuelBudgetK: [3000,3000,3500,3500,3800,3800],
};
const RES_HEATMAP = {
rows: [
{label:"Manpower", values:[74,76,79,82,85,80,77,83]},
{label:"Equipment", values:[68,71,75,78,82,74,69,77]},
{label:"Materials", values:[82,85,88,79,84,90,87,86]},
{label:"Fuel", values:[71,74,78,80,83,76,72,80]},
};
function populateResourceDropdown() {
if(!sel) return;
[Link](p => {
[Link] = String([Link]);
[Link] = [Link] > 45 ? [Link](0,43)+"…" :
[Link];
[Link](opt);
});
[Link] = RES_ACTIVE_PROJECT;
function handleResourceFileUpload(input) {
if(!file) return;
if(status) {
[Link] = "#a8d5b5";
toast("📂 File '" + [Link] + "' loaded. Resource data updated from
upload.");
renderResources();
function filterResourcesByProject(val) {
RES_ACTIVE_PROJECT = val;
renderResources();
}
function setResView(v) {
RES_ACTIVE_VIEW = v;
["summary","detail","forecast"].forEach(name => {
if(btn){
});
renderResources();
function _getFilteredMembers() {
[Link]().includes([Link]().split("/")
[0].trim().toLowerCase()));
});
}
function _getFilteredEquipment() {
[Link]==="All Projects" ||
);
function _getFilteredMaterials() {
[Link]==="All Projects" ||
);
function _utilColor(u) {
function _projLabel() {
const p = [Link](p=>String([Link])===RES_ACTIVE_PROJECT);
if(!svg) return;
[Link] =
}
// ── SVG Pie Helper ───────────────────────────────────────────
if(!svg) return;
[Link](d => {
const x2=cx+r*[Link](startAngle+angle),
y2=cy+r*[Link](startAngle+angle);
const large=angle>[Link]?1:0;
startAngle += angle;
});
if(!el) return;
const mn = [Link](...valid)*0.85;
const x = (i/([Link]-1))*w;
const y = h - ((v-mn)/(mx-mn))*h*0.85 - 4;
return `${x},${y}`;
}).filter(p=>p!==null).join(" ");
${[Link]((v,i)=>{
const x=(i/([Link]-1))*w;
const y=h-((v-mn)/(mx-mn))*h*0.85-4;
}).join("")}
</svg>`;
if(!el) return;
// Manpower alerts
if([Link]) [Link]({type:"r",icon:"🔴",msg:`OVERUTILIZATION:
${[Link](m=>[Link](" ")[0]).join(", ")} exceed 90%
utilization — schedule relief immediately`});
// Equipment alerts
if([Link]) [Link]({type:"o",icon:"🔧",msg:`MAINTENANCE:
${[Link](e=>[Link]).join(", ")} currently under maintenance —
assess impact on schedule`});
// Material alerts
[Link](a=>`<div style="background:${colors[[Link]]};border-
left:3px solid ${borders[[Link]]};border-radius:3px;padding:5px
10px;display:flex;align-items:center;gap:8px">
<span style="font-size:11px">${[Link]}</span>
<span
style="font-size:9px;font-weight:700;color:#333">${[Link]}</span>
</div>`).join("") + `</div>`;
function renderResources() {
populateResourceDropdown();
["mp","eq","mat","fuel","cost","detail","fc"].forEach(id => {
const el = [Link]("res-proj-label-"+id);
});
_renderManpower(members);
_renderEquipment(equipment);
_renderMaterials(materials);
_renderFuel();
_renderHeatmap();
renderPerProjectResources();
_renderForecastView(members);
_renderTrendView();
if(!row) return;
const cards = [
{val:avgUtil+"%",lbl:"Avg MP Utilization",icon:"📊",cls:avgUtil>85?"red-
kpi":avgUtil>70?"orange-kpi":"green-kpi",sub:overloaded+" overloaded"},
{val:eqOperating+"/"+eqTotal,lbl:"Equipment
Operating",icon:"🚧",cls:"green-kpi",sub:"Total "+eqTotal+" units"},
{val:matUtil+"%",lbl:"Material Consumed",icon:"🧱",cls:matUtil>90?"red-
kpi":matUtil>70?"orange-kpi":"green-kpi",sub:"vs planned qty"},
{val:[Link](m=>[Link]<=[Link]).length,lbl:"Low Stock
Alerts",icon:"📦",cls:"red-kpi",sub:"Need reorder"},
];
[Link] = [Link](c=>`
<div style="font-size:18px;margin-bottom:2px">${[Link]}</div>
</div>
<div style="font-size:8px;color:#888;margin-top:3px">${[Link]}</div>
</div>
</div>`).join("");
function _renderManpower(members) {
// KPI grid
if(grid) {
[Link] = [
{v:total,l:"Total",c:"green-kpi"},{v:assigned,l:"Assigned",c:"blue-kpi"},
{v:available,l:"Available",c:"orange-kpi"},{v:avgUtil+"%",l:"Avg
Util",c:avgUtil>85?"red-kpi":"green-kpi"}
}
// Planned vs Actual bar chart
const pa = [Link]("mp-planned-actual");
if(pa) {
[Link]((m,i)=>{
const pH = [Link]((plan[i]/max)*45);
<div style="display:flex;align-items:flex-end;gap:1px;height:45px">
</div>
<div style="font-size:7px;color:${isCur?"#e74c3c":"#555"};font-
weight:${isCur?"800":"600"};white-space:nowrap">${m}</div>
</div>`;
}).join("") +
`</div><div style="display:flex;gap:8px;font-size:7px;color:#555">
<span><span style="display:inline-
block;width:8px;height:6px;background:#d6eaf8;vertical-
align:middle;margin-right:2px"></span>Planned</span>
<span><span style="display:inline-
block;width:8px;height:6px;background:#27ae60;vertical-
align:middle;margin-right:2px"></span>Actual</span>
<span><span style="display:inline-
block;width:8px;height:6px;background:#fdebd0;vertical-
align:middle;margin-right:2px;opacity:.8"></span>Forecast</span>
</div>`;
// Productivity
if(prod) {
const items = [
{lbl:"Civil Engineers",val:87},
{lbl:"Electrical Eng.",val:82},
{lbl:"QA Inspectors",val:74},
{lbl:"Site Supervisors",val:91},
];
</div>`).join("");
}
// Upcoming demand
if(upd) {
const wks = [
{wk:"Wk 1",demand:268,avail:258},
{wk:"Wk 2",demand:275,avail:258},
{wk:"Wk 3",demand:260,avail:263},
{wk:"Wk 4",demand:270,avail:263},
];
[Link] = [Link](w=>{
<span
style="width:28px;font-weight:700;color:#0a3d1f">${[Link]}</span>
</div>`;
}).join("");
// Team table
const gi = [Link](m);
const productivity = [Link](100,[Link]([Link]*0.95+
([Link]()*10-5)));
return `<tr>
<td style="font-size:8px;color:#555">${[Link]}</td>
<td style="font-size:8px;color:#555;max-
width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap"
title="${[Link]}">${[Link](0,20)}$
{[Link]>20?"…":""}</td>
<td><div style="display:flex;align-items:center;gap:3px"><div
class="pbar" style="width:50px"><div class="pbar-f" style="width:$
{[Link]}%;background:${_utilColor([Link])}"></div></div>${editMode?
`<input type="number" min="0" max="100" value="${[Link]}"
onchange="MEMBERS[${gi}].util=+[Link];renderResources()"
style="width:32px;font-size:8px;border:1px solid #c8d8c8;border-
radius:2px;padding:1px;font-family:inherit">%`:`<span style="font-
size:9px;font-weight:700;color:${_utilColor([Link])}">${[Link]}%</
span>`}</div></td>
<td style="text-align:center">${[Link]}</td>
<td><span class="bdg $
{[Link]==="Active"?"g":[Link]==="Overloaded"?"r":"o"}">$
{[Link]}</span></td>
</tr>`;
}).join("");
}
// ── Equipment Panel ──────────────────────────────────────────
function _renderEquipment(equipment) {
// KPI grid
if(grid) {
[Link] = [
{v:operating,l:"Operating",c:"green-kpi"},{v:idle,l:"Idle",c:"blue-kpi"},
{v:maint,l:"Maintenance",c:"red-kpi"},{v:avgUtil+"%",l:"Avg
Util",c:avgUtil>85?"red-kpi":"green-kpi"}
// Status list
const sl = [Link]("eq-status-list");
if(sl) {
const statuses = [
{s:"Operating",c:"#27ae60"},
{s:"Idle",c:"#2980b9"},
{s:"Under Maintenance",c:"#e74c3c"},
];
[Link] = [Link](st=>{
<div class="hbr-num">${pct}%</div>
</div>`;
}).join("");
// Equipment table
<td style="font-weight:700">${[Link]}</td>
<td style="font-size:8px;color:#555">${[Link]}</td>
<td style="font-size:8px;color:#555;max-
width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap"
title="${[Link]}">${[Link](0,18)}$
{[Link]>18?"…":""}</td>
<td><span class="bdg $
{[Link]==="Operating"?"g":[Link]==="Idle"?"b":"r"}">${[Link]}</
span></td>
<td style="font-size:8px;color:#555">${[Link]}</td>
</tr>`).join("");
function _renderMaterials(materials) {
// KPI grid
if(grid) {
[Link] = [
{v:[Link](),l:"Total Planned",c:"blue-kpi"},
{v:[Link](),l:"Total Consumed",c:"green-kpi"},
{v:[Link](),l:"Remaining Stock",c:"orange-kpi"},
{v:lowStock,l:"Low Stock",c:"red-kpi"}
if(sbEl) {
[Link] = [Link](0,5).map(m=>{
const remainPct =
[Link]([Link]([Link],[Link])/maxV*100);
<div style="flex:1;height:16px;background:#e8f0e8;border-
radius:2px;overflow:hidden;position:relative;display:flex">
<div style="height:100%;background:#27ae60;width:${consPct}
%;display:flex;align-items:center;justify-content:center">
<span style="font-size:7px;color:#fff;font-weight:700">${consPct}
%</span>
</div>
<div style="height:100%;background:$
{lowAlert?"#e74c3c":"#2980b9"};width:${remainPct}%;display:flex;align-
items:center;justify-content:center">
<span style="font-size:7px;color:#fff;font-weight:700">$
{remainPct}%</span>
</div>
</div>
${lowAlert?`<span style="font-size:8px;color:#e74c3c;font-
weight:800;margin-left:4px">⚠</span>`:`<span
style="width:12px"></span>`}
</div>`;
}).join("") +
`<div style="display:flex;gap:8px;font-size:7px;color:#555;margin-
top:3px">
<span><span style="display:inline-
block;width:8px;height:6px;background:#27ae60;margin-right:2px;vertical-
align:middle"></span>Consumed</span>
<span><span style="display:inline-
block;width:8px;height:6px;background:#2980b9;margin-right:2px;vertical-
align:middle"></span>Remaining Stock</span>
<span><span style="display:inline-
block;width:8px;height:6px;background:#e74c3c;margin-right:2px;vertical-
align:middle"></span>Low Stock Warning</span>
</div>`;
_drawSparkline("mat-trend-chart", RES_MONTHLY.matConsumed,
"#27ae60", [Link](...RES_MONTHLY.matPlanned)*1.05);
// Material table
return `<tr>
<td style="font-weight:700;font-size:8px">${[Link]}</td>
<td style="font-size:8px;color:#555">${[Link]}</td>
<td style="font-size:8px">${[Link]()}</td>
<td style="color:${low?"#e74c3c":"#1e8449"};font-weight:700;font-
size:8px">${[Link]()}</td>
<td
style="font-size:8px;color:#555">${[Link]()}</td>
</tr>`;
}).join("");
function _renderFuel() {
// KPI grid
if(grid) {
const totalCostK =
[Link](RES_FUEL.reduce((s,f)=>s+[Link],0)/1000);
const criticalFuel =
RES_FUEL.filter(f=>[Link]<[Link]*0.3).length;
[Link] = [
{v:[Link]()+"L",l:"Diesel MTD",c:"orange-kpi"},
{v:"ETB "+totalCostK+"K",l:"Total Cost MTD",c:"red-kpi"},
{v:efficiency+"L/Hr",l:"Efficiency",c:"blue-kpi"},
{v:criticalFuel,l:"Critical Low",c:"red-kpi"}
// Fuel by activity
if(fac) {
const activities = [
{act:"Earthworks",pct:42,color:"#d35400"},
{act:"Track Laying",pct:23,color:"#784212"},
{act:"Concrete Works",pct:15,color:"#e67e22"},
{act:"Transport",pct:14,color:"#f39c12"},
{act:"Other",pct:6,color:"#aaa"},
];
</div>`).join("");
// Efficiency trend
_drawSparkline("fuel-efficiency-chart", [4.8,4.6,4.5,4.3,4.2,null], "#d35400",
5.5);
// Cost trend
_drawSparkline("fuel-cost-chart", RES_MONTHLY.[Link]((v,i)=>v!
==null?[Link](v):null), "#e74c3c");
// Fuel table
return `<tr>
<td style="font-weight:700;font-size:8px">${[Link]}</td>
<td style="font-size:8px;color:#555">${[Link]}</td>
<td style="font-size:8px">${[Link]()}</td>
<td style="font-size:8px;color:#555">${[Link]!==null?
[Link]+" L/Hr":"—"}</td>
</tr>`;
}).join("");
const el = [Link]("util-heatmap");
if(!el) return;
return "#d6eaf8";
};
// Header
[Link](w=>`<div style="flex:1;text-align:center;font-size:8px;font-
weight:700;color:#0a3d1f">${w}</div>`).join("") +
`</div>`;
[Link](row => {
<div style="width:68px;font-size:8px;font-weight:700;color:#333;text-
align:right;padding-right:4px;flex-shrink:0">${[Link]}</div>` +
[Link](v=>`<div style="flex:1;height:22px;background:$
{cellColor(v)};border-radius:2px;display:flex;align-items:center;justify-
content:center">
<span style="font-size:8px;font-weight:800;color:#fff;text-shadow:0
1px 2px rgba(0,0,0,.3)">${v}%</span>
</div>`).join("") +
`</div>`;
});
// Legend
.map(i=>`<span style="display:flex;align-items:center;gap:3px;font-
size:8px;color:#555">
<span style="display:inline-block;width:10px;height:10px;background:$
{i.c};border-radius:2px"></span>${i.l}
</span>`).join("") +
`</div>`;
[Link] = html;
const costData = [
{label:"Labour",val:45,color:"#0a3d1f"},
{label:"Equipment",val:28,color:"#2980b9"},
{label:"Materials",val:18,color:"#27ae60"},
{label:"Fuel",val:9,color:"#d35400"},
];
_drawPie("res-cost-pie", costData);
<span style="display:inline-block;width:9px;height:9px;background:$
{[Link]};border-radius:2px"></span>
</div>`).join("");
if(cmc) {
const h = 80;
[Link]((m,i)=>{
const bH = [Link]((budgets[i]/max)*h*0.9);
const cH = costs[i]!==null?[Link]((costs[i]/max)*h*0.9):0;
<div style="display:flex;align-items:flex-end;gap:1px;height:$
{h*0.9}px">
`<div style="width:10px;background:#fdebd0;opacity:.7;border-
radius:2px 2px 0 0;height:${[Link](bH*0.93)}px"></div>`}
</div>
<div style="font-size:7px;color:#555;margin-top:2px">${m}</div>
</div>`;
}).join("") +
`</div><div style="display:flex;gap:8px;font-
size:7px;color:#555;margin-top:3px">
<span><span style="display:inline-
block;width:8px;height:6px;background:#d6eaf8;border:1px solid
#2980b9;vertical-align:middle;margin-right:2px"></span>Budget</span>
<span><span style="display:inline-
block;width:8px;height:6px;background:#0a3d1f;vertical-
align:middle;margin-right:2px"></span>Actual</span>
<span><span style="display:inline-
block;width:8px;height:6px;background:#fdebd0;vertical-
align:middle;margin-right:2px"></span>Forecast</span>
</div>`;
// Cost summary
const cs = [Link]("res-cost-summary");
if(cs) {
[Link] = [
].map(r=>`<div style="display:flex;justify-content:space-
between;padding:3px 0;border-bottom:1px solid #e8f0e8;font-size:$
{[Link]?"10":"9"}px;font-weight:${[Link]?"800":"600"}">
<span style="color:#555">${[Link]}</span>
<span style="color:${r.c}">${[Link]}</span>
</div>`).join("");
const el = [Link]("res-detail-content");
if(!el) return;
[Link] = `
<div>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:6px;letter-spacing:.3px">👷 MANPOWER — PLANNED vs
ACTUAL</div>
<tbody>${[Link](m=>{
return `<tr>
<td>${plannedH}</td>
<td>${[Link](actualH)}</td>
<td style="color:${varH>0?"#e74c3c":"#1e8449"};font-
weight:700">${varH>0?"+":""} ${varH} hrs</td>
<td><span class="bdg $
{[Link]==="Active"?"g":[Link]==="Overloaded"?"r":"o"}">$
{[Link]}</span></td>
</tr>`;
}).join("")}</tbody>
</table>
</div>
<div>
<div style="font-size:9px;font-weight:800;color:#0e6655;margin-
bottom:6px;letter-spacing:.3px">🚧 EQUIPMENT — OPERATING HOURS vs
PLANNED</div>
<thead><tr><th>Equipment</th><th>Planned Hrs</th><th>Actual
Hrs</th><th>Util %</th><th>Status</th></tr></thead>
<tbody>${[Link](e=>{
return `<tr>
<td style="font-weight:700;font-size:8px">$
{[Link](0,20)}</td>
<td>${plannedH}</td>
<td>${[Link]}</td>
<td><span class="bdg $
{[Link]==="Operating"?"g":[Link]==="Idle"?"b":"r"}">$
{[Link](0,8)}</span></td>
</tr>`;
}).join("")}</tbody>
</table>
</div>
<div>
<div style="font-size:9px;font-weight:800;color:#1e8449;margin-
bottom:6px;letter-spacing:.3px">🧱 MATERIALS — PLANNED vs CONSUMED vs
STOCK</div>
<thead><tr><th>Material</th><th>Planned</th><th>Consumed</th><t
h>Stock</th><th>Reorder</th><th>Health</th></tr></thead>
<tbody>${[Link](m=>{
return `<tr>
<td style="font-weight:700;font-size:8px">$
{[Link](0,18)}</td>
<td>${[Link]()}</td>
<td>${[Link]()}</td>
<td style="color:${low?"#e74c3c":"#1e8449"};font-weight:700">$
{[Link]()}</td>
<td style="font-size:8px;color:#555">$
{[Link]()}</td>
</tr>`;
}).join("")}</tbody>
</table>
</div>
<div>
<div style="font-size:9px;font-weight:800;color:#d35400;margin-
bottom:6px;letter-spacing:.3px">⛽ FUEL & CONSUMABLES — MONTHLY
DETAIL</div>
<thead><tr><th>Item</th><th>Consumption</th><th>Cost
MTD</th><th>Stock</th><th>Status</th></tr></thead>
<tbody>${RES_FUEL.map(f=>{
return `<tr>
<td style="font-weight:700;font-size:8px">$
{[Link](0,16)}</td>
<td>${[Link]()} ${[Link]}</td>
<td>ETB ${([Link]/1000).toFixed(0)}K</td>
<td style="color:${low?"#e74c3c":"#1e8449"};font-weight:700">$
{[Link]()}</td>
}).join("")}</tbody>
</table>
</div>
</div>`;
function _renderForecastView(members) {
const el = [Link]("res-forecast-content");
if(!el) return;
const demandData = {
manpower: [268,275,260,270],
equipment: [8,9,8,9],
materials: [2850,3100,2900,3200],
fuelK: [980,1050,920,1100],
};
const avail = {
manpower: [258,258,263,263],
equipment: [8,7,9,9],
};
[Link] = `
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:8px">4-WEEK DEMAND vs AVAILABILITY FORECAST</div>
<tbody>
<tr style="background:#f0f8f0">
${[Link]((v,i)=>{const gap=v-
[Link][i];return `<td><b>${v}</b> <span style="font-
size:8px;color:${gap>0?"#e74c3c":"#27ae60"};font-weight:700">$
{gap>0?"▲+"+gap:"✓"}</span></td>`}).join("")}
</tr>
<tr>
${[Link](v=>`<td
style="color:#2980b9">${v}</td>`).join("")}
</tr>
<tr style="background:#f0f8f8">
${[Link]((v,i)=>{const gap=v-
[Link][i];return `<td><b>${v}</b> <span style="font-
size:8px;color:${gap>0?"#e74c3c":"#27ae60"};font-weight:700">$
{gap>0?"▲+"+gap:"✓"}</span></td>`}).join("")}
</tr>
<tr>
${[Link](v=>`<td
style="color:#2980b9">${v}</td>`).join("")}
</tr>
<tr style="background:#f8f0f0">
${[Link](v=>`<td><b>$
{[Link]()}</b></td>`).join("")}
</tr>
<tr style="background:#fff8f0">
${[Link](v=>`<td><b>${v}</b></td>`).join("")}
</tr>
</tbody>
</table>
<div style="padding:8px;background:#fef9e7;border-
radius:4px;border:1px solid #f1c40f">
<div style="font-size:9px;font-weight:800;color:#784212;margin-
bottom:4px">⚡ FORECAST ACTIONS REQUIRED</div>
<div style="font-size:8px;color:#555;line-height:1.6">
</div>
</div>`;
}
// ── Trend Analysis View ──────────────────────────────────────
function _renderTrendView() {
const el = [Link]("res-trend-content");
if(!el) return;
[Link] = `
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:6px">MONTHLY RESOURCE UTILIZATION TREND — JAN–JUN
2026</div>
<tbody>
${[Link]((m,i)=>{
<td style="font-weight:700;color:${isCur?"#e74c3c":"#0a3d1f"}">$
{m}</td>
<td>${RES_MONTHLY.mpActual[i]!==null?
RES_MONTHLY.mpActual[i]:`<span style="color:#888">$
{RES_MONTHLY.mpPlanned[i]}*</span>`}</td>
<td>${mpU!==null?`<span style="color:${_utilColor(mpU)};font-
weight:700">${mpU}%</span>`:'<span
style="color:#888">Fcst</span>'}</td>
<td>${eqU!==null?`<span style="color:${_utilColor(eqU)};font-
weight:700">${eqU}%</span>`:'<span
style="color:#888">Fcst</span>'}</td>
<td>${RES_MONTHLY.matConsumed[i]!==null?
RES_MONTHLY.matConsumed[i].toLocaleString():`<span
style="color:#888">${RES_MONTHLY.matPlanned[i].toLocaleString()}*</
span>`}</td>
<td>${RES_MONTHLY.fuelCostK[i]!==null?`ETB $
{RES_MONTHLY.fuelCostK[i]}K`:'<span
style="color:#888">Fcst</span>'}</td>
</tr>`;
}).join("")}
</tbody>
</table>
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:4px">WEEKLY UTILIZATION — CURRENT WEEK SNAPSHOT</div>
<div style="display:grid;grid-template-columns:repeat(5,1fr);gap:4px">
${["Mon","Tue","Wed","Thu","Fri"].map((d,i)=>{
const c = _utilColor(vals[i]);
<div
style="font-size:11px;font-weight:800;color:#fff">${vals[i]}%</div>
<div style="font-size:8px;color:rgba(255,255,255,.85)">${d}</div>
</div>`;
}).join("")}
</div>
<div style="font-size:8px;color:#888;margin-top:4px">* Current week
overall resource utilization across all resource types</div>`;
function renderPerProjectResources() {
if(!container) return;
});
const projEquipment = RES_EQUIPMENT.filter(e => [Link]==="All
Projects" ||
[Link](k=>[Link]().includes([Link]())));
const eqOperating =
[Link](e=>[Link]==="Operating").length;
const lowStockCount =
[Link](m=>[Link]<=[Link]).length;
<span>📁 ${[Link]()}</span>
</div>
<div class="wb">
<div style="display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap">
<div class="kpi $
{[Link](m=>[Link]==="Overloaded").length>0?"red-
kpi":"green-kpi"}" style="min-width:80px;padding:5px 8px"><div
class="kpi-val" style="font-size:14px">$
{[Link](m=>[Link]==="Overloaded").length}</div><div
class="kpi-lbl">Overloaded</div></div>
</div>
<div style="display:flex;gap:8px;flex-wrap:wrap">
<div style="flex:2;min-width:250px">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:4px">TEAM ALLOCATION</div>
<thead><tr><th>Name</th><th>Role</th><th>Utilization</th><th>Tas
ks</th><th>Status</th>${editMode?"<th>Edit</th>":""}</tr></thead>
<tbody>${[Link]((m,mi)=>{
const gi=[Link](m);
return `<tr>
<td>${[Link](" ")[0]}</td>
<td style="font-size:8px;color:#555">${[Link]}</td>
<td><div style="display:flex;align-items:center;gap:3px"><div
class="pbar" style="width:50px"><div class="pbar-f" style="width:$
{[Link]}%;background:${_utilColor([Link])}"></div></div>${editMode?
`<input type="number" min="0" max="100" value="${[Link]}"
onchange="MEMBERS[${gi}].util=+[Link];renderResources()"
style="width:32px;font-size:8px;border:1px solid #c8d8c8;border-
radius:2px;padding:1px;font-family:inherit">%`:`<span style="font-
size:8px;color:${_utilColor([Link])}">${[Link]}%</span>`}</div></td>
<td style="text-align:center">${[Link]}</td>
<td><span class="bdg $
{[Link]==="Active"?"g":[Link]==="Overloaded"?"r":"o"}">$
{[Link]}</span></td>
${editMode?`<td><button class="edit-btn"
onclick="openModal('edit-member',${gi})">✏</button></td>`:""}
</tr>`;
}).join("")}</tbody>
</table>
</div>
<div style="flex:1;min-width:140px">
<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:4px">UTILIZATION CHART</div>
</div>`).join("")}
<div style="font-size:9px;font-
weight:800;color:#0e6655;margin:8px 0 4px">EQUIPMENT STATUS</div>
${[Link](0,3).map(e=>`<div style="display:flex;align-
items:center;gap:5px;margin-bottom:2px;font-size:8px">
<span class="bdg $
{[Link]==="Operating"?"g":[Link]==="Idle"?"b":"r"}" style="font-
size:7px">${[Link](0,4)}</span>
<span style="color:#333;overflow:hidden;text-
overflow:ellipsis;white-space:nowrap">${[Link](0,18)}</span>
</div>`).join("")}
${editMode?`<div style="margin-top:6px"><textarea
onblur="[Link]='1'" style="width:100%;height:36px;font-
size:8px;border:1px solid #c8d8c8;border-radius:3px;padding:3px;font-
family:inherit;resize:none" placeholder="Add resource
notes..."></textarea></div>`:""}
</div>
</div>
</div>
</div>
</div>`;
});
[Link] = html;
//
═══════════════════════════════════════════════════════
════════
// RISKS
//
═══════════════════════════════════════════════════════
════════
function renderRisks() {
const open=[Link](r=>[Link]==="Open").length;
const high=[Link](r=>[Link]==="High"&&[Link]==="Open").length;
const
med=[Link](r=>[Link]==="Medium"&&[Link]==="Open").length;
const low=[Link](r=>[Link]==="Low"&&[Link]==="Open").length;
const mit=[Link](r=>[Link]==="Mitigated").length;
const tbody=[Link]("risk-tbody");
if(!tbody) return;
[Link]=[Link]((r,i)=>`<tr>
<td style="font-weight:700;color:#0a3d1f">${[Link]}</td>
<td>${[Link]}</td>
<td style="font-size:9px">${[Link](0,25)}...</td>
<td><span class="bdg $
{[Link]==="High"?"r":[Link]==="Medium"?"o":"g"}">${[Link]}</span></td>
<td>${[Link]}</td>
<td>${[Link]}</td>
<td><span class="bdg
${[Link]==="Open"?"r":"g"}">${[Link]}</span></td>
<td>${[Link](" ")[0]}</td>
<td style="font-size:9px;color:#555">${[Link]}</td>
<td style="font-size:9px;color:#555;max-
width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap"
title="${[Link]}">${[Link]}</td>
</tr>`).join("");
//
═══════════════════════════════════════════════════════
════════
// SETTINGS
//
═══════════════════════════════════════════════════════
════════
// User Management Tab switcher
function showUMTab(tab) {
["users","roles","assign","audit"].forEach(t => {
if (btn) {
});
// Populate the selected panel
function _renderAssignments() {
const tb = [Link]("assign-tbody");
if (!tb) return;
return `<tr>
<td style="font-weight:700;color:#0a3d1f;max-
width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap"
title="${[Link]}">${[Link]>28?
[Link](0,26)+"…":[Link]}</td>
<td><div style="display:flex;align-items:center;gap:4px"><div
class="pbar" style="flex:1;min-width:40px"><div class="pbar-f"
style="width:${[Link]}%;background:${[Link]}"></div></div><span
style="font-size:9px;font-weight:700">${[Link]}%</span></div></td>
</tr>`;
}).join("");
function _renderUMAudit() {
const tb = [Link]("um-audit-tbody");
const sm = [Link]("um-audit-summary");
if (!tb) return;
const actionColors =
{"Login":"#d6eaf8","Logout":"#eaecee","Add":"#d4efdf","Edit":"#fff3cd","D
elete":"#fadbd8","Report Generated":"#e8daef","Settings
Modified":"#fdebd0"};
return `<tr>
<td style="font-size:9px;white-space:nowrap;color:#555">${[Link]}</td>
<td style="font-weight:600;font-size:9px">${[Link]}</td>
<td style="font-size:9px;color:#0a3d1f;font-weight:700">$
{[Link]}</td>
<td style="font-size:9px;color:#555;max-
width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap"
title="${[Link]}">${[Link]}</td>
</tr>`;
if (sm) {
[Link] = [
["🔐 Logins",loginCount,"#2980b9"],
["✏ Changes",editCount,"#27ae60"],
<div style="font-size:15px;font-weight:800;color:${c}">${v}</div>
<div style="font-size:8px;color:#555;font-weight:700;white-
space:nowrap">${l}</div>
</div>`).join("");
function canManageUsers() {
function renderUsersTable() {
const ut = [Link]("users-tbody");
if (!ut) return;
// Access-restriction notice
// Filters
const q = ([Link]("um-search")||{}).value||"";
<td style="color:#888;font-size:9px">${i+1}</td>
<td style="font-weight:700;color:#0a3d1f;white-space:nowrap">$
{[Link]}${isMe?' <span style="font-
size:8px;background:#d4efdf;color:#1e8449;padding:1px 5px;border-
radius:8px;font-weight:600">you</span>':''}</td>
<td style="font-size:9px;color:#555;font-family:monospace">$
{[Link]}</td>
<td style="font-size:8px;color:#555;max-width:120px;white-
space:nowrap;overflow:hidden;text-overflow:ellipsis" title="${projects}">$
{projects}</td>
<td style="font-family:monospace;font-size:9px;color:#333">$
{pwHash}</td>
<td style="font-size:9px;color:#555;white-space:nowrap">$
{[Link]||"—"}</td>
<td style="font-size:9px;color:#555;white-space:nowrap">$
{[Link]||"—"}</td>
<td style="white-space:nowrap">
</td>
</tr>`;
// Footer count
// KPI strip
if (kpi) {
[Link] = [
<div style="font-size:15px;font-weight:800;color:${c}">${v}</div>
<div style="font-size:7.5px;color:#555;font-weight:700;white-
space:nowrap;text-align:center">${l}</div>
</div>`).join("");
function renderSettings() {
renderUsersTable();
// Email digest
const ed=[Link]("email-digest-list");
<div style="width:110px;font-size:9px;font-weight:700;color:#0a3d1f;flex-
shrink:0">${[Link](" ").slice(0,2).join(" ")}</div>
<label style="display:flex;align-items:center;gap:3px;font-
size:9px;cursor:pointer"><input type="checkbox" checked/> Digest</label>
<label style="display:flex;align-items:center;gap:3px;font-
size:9px;cursor:pointer"><input type="checkbox" $
{[Link]("Manager")||[Link]("Director")||
[Link]("Chief")?"checked":""}/> Alerts</label>
</div>`).join("");
// Notification prefs
const np=[Link]("notif-prefs");
if(np) [Link]=[
].map(([l,s])=>`<div class="notif-row">
<span style="font-size:10px">${l}</span>
</div>`).join("");
// Integrations
const il=[Link]("integrations-list");
if(il) [Link]=[
function renderReportHistory() {
const tb=[Link]("report-history-tbody");
if(!tb) return;
[Link]=REPORT_HISTORY.map((r,i)=>`<tr>
<td style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-
space:nowrap;" title="${[Link]}">${[Link]}</td>
<td>${[Link]}</td><td>${[Link]}</td>
<td style="font-size:9px;color:#555">${[Link]}</td>
<td><span
class="rpt-ver-badge">v${(REPORT_HISTORY.length-i)}</span></td>
<td style="white-space:nowrap;display:flex;gap:3px;flex-wrap:wrap;">
</tr>`).join("");
function _rptStatusBadge(pct){
// Sort state
function _getRptProjects(){
}
function initRptModule(){
_buildRptFilters();
renderRptKPIs();
renderRptExecSummary();
renderRptCharts();
renderRptTable();
renderRptPhiGrid();
function _buildRptFilters(){
var ps=[Link]("rptf-project");
var ms=[Link]("rptf-manager");
function applyRptFilters(){
var proj=[Link]("rptf-project").value;
var stat=[Link]("rptf-status").value;
var phase=[Link]("rptf-phase").value;
var bud =[Link]("rptf-budget").value;
_rptFiltered=[Link](p=>{
if(bud){
var bM=[Link]/1e6;
return true;
});
rptPage=1;
function clearRptFilters(){
["rptf-project","rptf-status","rptf-manager","rptf-phase","rptf-
budget"].forEach(id=>{var
el=[Link](id);if(el)[Link]="";});
_rptFiltered=null; rptPage=1;
}
function renderRptKPIs(){
var totBudget=[Link]((s,p)=>s+([Link]||0),0);
var remaining=totBudget-totSpent;
var overBudget=[Link](p=>[Link]>[Link]).length;
[Link]=`
`;
function renderRptExecSummary(){
var totBudget=[Link]((s,p)=>s+([Link]||0),0);
var overBudget=[Link](p=>[Link]>[Link]);
var avgCPI
=[Link]((s,p)=>s+([Link]>0?([Link]/100*[Link])/[Link]),
0)/[Link];
[Link]=`
<div class="rpt-exec-summary-hdr">📝 Automated Executive
Summary</div>
<div class="rpt-exec-summary-text">
${warnTxt}
</div>`;
var incomplete=[Link](p=>![Link]||![Link]||isNaN([Link])||
isNaN([Link]));
var wEl=[Link]("rpt-data-warn");
var wTxt=[Link]("rpt-data-warn-text");
if(wEl&&wTxt){
if([Link]>0){[Link]="flex";[Link]=`Data
quality: ${[Link]} project(s) have missing or invalid
budget/expenditure data. Some values shown as N/A.`;}
else{[Link]="none";}
function renderRptCharts(){
var maxB=[Link](null,[Link](p=>[Link]([Link]||
0,[Link]||0)));
[Link]=[Link](p=>{
var pct=[Link]>0?[Link]([Link]/[Link]*100):0;
var col=pct>90?"#e74c3c":pct>70?"#f39c12":"#27ae60";
var nm=[Link]>32?[Link](0,30)+"…":[Link];
<div class="rpt-bar-lbl">${nm}</div>
<div style="flex:1;display:flex;flex-direction:column;gap:2px;">
</div>
</div>`;
}).join("")+`<div style="display:flex;gap:12px;margin-top:6px;font-
size:8px;"><span><span style="display:inline-
block;width:10px;height:6px;background:#27ae6033;border:1px solid
#27ae60;border-radius:1px;margin-right:3px;vertical-align:middle;"></
span>Budget</span><span><span style="display:inline-
block;width:10px;height:6px;background:#27ae60;border-radius:1px;margin-
right:3px;vertical-align:middle;"></span>Actual</span></div>`;
var pct=totBudget>0?[Link](totSpent/totBudget*100):0;
var col=pct>90?"#e74c3c":pct>70?"#f39c12":"#27ae60";
var dash=circ*pct/100;
[Link]=`<div class="rpt-donut-wrap">
</svg>
<div class="rpt-donut-legend">
</div>
</div>`;
// 3. Monthly trend
var
months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","
Dec"];
var planned=[240,280,310,330,360,350,380,390,400,390,360,340];
var maxV=[Link](null,planned);
[Link]=`<div class="rpt-trend-row">${[Link]((m,i)=>{
var pw=[Link]((planned[i]||0)/maxV*100);
var aw=actual[i]!=null?[Link](actual[i]/maxV*100):0;
var col=actual[i]!=null?
(actual[i]>planned[i]?"#e74c3c":"#27ae60"):"#c8d8c8";
<div style="display:flex;align-items:flex-end;gap:1px;height:72px;">
<div class="rpt-trend-lbl">${m}</div>
</div>`;
}).join("")}</div>
<div style="display:flex;gap:12px;margin-top:4px;font-size:8px;justify-
content:center;">
<span><span style="display:inline-
block;width:8px;height:8px;background:#27ae6033;border:1px solid
#27ae60;border-radius:1px;margin-right:2px;vertical-align:middle;"></
span>Planned</span>
<span><span style="display:inline-
block;width:8px;height:8px;background:#27ae60;border-radius:1px;margin-
right:2px;vertical-align:middle;"></span>Actual</span>
</div>`;
// 4. Variance chart
[Link]=[Link](p=>{
var maxV2=[Link](null,[Link](x=>[Link](([Link]||0)-
([Link]||0))));
var w=maxV2>0?[Link]([Link](v)/maxV2*50):0;
var col=v<0?"#e74c3c":v<[Link]*0.1?"#f39c12":"#27ae60";
var nm=[Link]>20?[Link](0,18)+"…":[Link];
<div class="rpt-var-lbl">${nm}</div>
<div class="rpt-var-track">
<div class="rpt-var-zero"></div>
</div>
</div>`;
}).join("");
function renderRptTable(){
var projs=_getRptProjects();
// search filter
var q=([Link]("rpt-tbl-search")||{}).value||"";
if(q)
{ projs=[Link](p=>[Link]().includes([Link]())||
[Link]().includes([Link]())); }
// sort
if(_rptSortCol>=0){
projs=[...projs].sort((a,b)=>{
var va,vb;
if(_rptSortCol===0){va=[Link];vb=[Link];}
else if(_rptSortCol===1){va=[Link]||0;vb=[Link]||0;}
else if(_rptSortCol===2){va=[Link]||0;vb=[Link]||0;}
else
if(_rptSortCol===3){va=[Link]>0?[Link]/[Link];vb=[Link]>0?
[Link]/[Link];}
else if(_rptSortCol===4){va=([Link]||0)-([Link]||0);vb=([Link]||
0)-([Link]||0);}
else
if(_rptSortCol===5){va=[Link]>0?([Link]/100*[Link])/[Link];vb
=[Link]>0?([Link]/100*[Link])/[Link];}
else if(_rptSortCol===6){va=[Link];vb=[Link];}
return _rptSortAsc?va-vb:vb-va;
});
// paginate
var total=[Link],
pages=[Link](1,[Link](total/rptRowsPerPage));
if(rptPage>pages) rptPage=pages;
var start=(rptPage-1)*rptRowsPerPage,
end=[Link](start+rptRowsPerPage,total);
var pg=[Link](start,end);
[Link]=[Link](p=>{
var pct=bud>0?[Link](spt/bud*100):NaN;
var cpi=spt>0?parseFloat((([Link]/100*bud)/spt).toFixed(2)):1.00;
var
spi=parseFloat(([Link]/100/([Link]([Link]/100+0.05,1))).toFixed(
2));
var eac=cpi>0?[Link](bud/cpi):bud;
var
vcol=variance<0?"#c0392b":variance<bud*0.1?"#d35400":"#1e8449";
var cpicol=cpi>=1?"#1e8449":"#c0392b";
return `<tr>
<td title="${[Link]}">${[Link]>35?
[Link](0,33)+"…":[Link]}</td>
<td>${_rptFmt(bud)}</td>
<td>${_rptFmt(spt)}</td>
<td><div style="display:flex;align-items:center;gap:4px;">
<div style="flex:1;height:8px;background:#e8f0e8;border-
radius:3px;overflow:hidden;min-width:40px;"><div
style="height:100%;width:${[Link](isNaN(pct)?0:pct,100)}
%;background:${pct>90?"#e74c3c":pct>70?"#f39c12":"#27ae60"};border-
radius:3px;"></div></div>
<span style="font-size:9px;font-weight:700;color:$
{pct>90?"#c0392b":pct>70?"#d35400":"#1e8449"}">${isNaN(pct)?"N/
A":pct+"%"}</span>
</div></td>
<td style="color:${vcol};font-weight:700">${isNaN(variance)||!
bud?"N/A":(variance>=0?"+":"")+vM+"M"}</td>
<td
style="color:${cpicol};font-weight:700">${isNaN(cpi)||!spt?"N/A":cpi}</td>
<td style="font-weight:700">${isNaN(spi)?"N/A":spi}</td>
<td>${_rptStatusBadge(pct)}</td>
<td style="font-size:9px">${_rptFmt(eac)}</td>
<td style="font-size:9px;color:#555">${[Link]||"N/A"}</td>
</tr>`;
// pager
// sort arrows
[Link](".rpt-cost-tbl th").forEach((th,i)=>{
[Link]("sorted",i===_rptSortCol);
var arr=[Link](".sort-arrow");
if(arr) [Link]=i===_rptSortCol?(_rptSortAsc?"↑":"↓"):"↕";
});
function sortRptTable(col){
if(_rptSortCol===col) _rptSortAsc=!_rptSortAsc;
renderRptTable();
function renderRptPhiGrid(){
var totBudget=[Link]((s,p)=>s+([Link]||0),0);
var cpi=totSpent>0?parseFloat((totEV/totSpent).toFixed(2)):1.00;
var
spi=totSpent>0?parseFloat((totEV/(totBudget*([Link]((s,p)=>s+[Link]
gress,0)/[Link]/100+0.05))).toFixed(2)):1.00;
var
avgProg=[Link]([Link]((s,p)=>s+[Link],0)/[Link]);
[Link]=[
["CPI",[Link](2),cpi>=1?"#1e8449":"#c0392b"],
["SPI",[Link](2),spi>=0.95?"#1e8449":spi>=0.85?"#d35400":"#c0392b
"],
["Avg Progress",avgProg+"%","#1a5276"],
["EV","ETB "+[Link](totEV/1e9*100)/100+"B","#0e6655"],
["Utilization",[Link](totSpent/totBudget*100)+"%",totSpent/totBudget>
0.9?"#c0392b":totSpent/totBudget>0.7?"#d35400":"#27ae60"],
function exportRptTableCSV(){
var projs=_getRptProjects();
[Link](p=>{
var pct=[Link]>0?[Link]([Link]/[Link]*100):0;
var
cpi=[Link]>0?parseFloat((([Link]/100*[Link])/[Link]).toFixed(2)):1;
[Link]([[Link],[Link],[Link],pct+"%",([Link]-
[Link]),cpi,[Link],pct>90?"Critical":pct>70?"Warning":"Healthy",Math.r
ound([Link]/cpi),[Link]]);
});
var csv=[Link](r=>[Link](c=>`"${c}"`).join(",")).join("\n");
[Link]="EDR_Cost_Report_"+new Date().toISOString().split("T")
[0]+".csv"; [Link]();
function setActiveRptBtn(btn){
[Link](".rpt-type-
btn").forEach(b=>[Link]("active"));
if(btn) [Link]("active");
downloadReportFromHistory(name, [Link]);
return;
const typeMap =
{Status:"status",Cost:"cost",Risk:"risk",Resource:"resource",Schedule:"sched
ule",Executive:"executive",KPI:"kpi"};
const rtype = typeMap[type] || "status";
<div style="font-size:14px;font-weight:800;color:#0a3d1f">ETHIO-
DJIBOUTI RAILWAY S.C.</div>
<div
style="font-size:12px;font-weight:700;color:#1a6b3a">${name}</div>
if(rtype==="status"||rtype==="executive") {
if(rtype==="risk"||rtype==="executive") {
content+=`<h3 style="font-size:11px;color:#0a3d1f">RISK
REGISTER</h3><table><thead><tr><th>ID</th><th>Risk</th><th>Sev
erity</th><th>Status</th><th>Owner</th></tr></thead><tbody>$
{[Link](r=>`<tr><td>${[Link]}</td><td>${[Link]}</td><td>$
{[Link]}</td><td>${[Link]}</td><td>${[Link]}</td></
tr>`).join("")}</tbody></table>`;
}
if(rtype==="cost"||rtype==="executive") {
content+=`<h3 style="font-size:11px;color:#0a3d1f">COST
SUMMARY</h3><table><thead><tr><th>Project</th><th>Budget</th><
th>Spent</th><th>% Used</th></tr></thead><tbody>$
{[Link](p=>`<tr><td>${[Link]}</td><td>ETB
${([Link]/1e6).toFixed(0)}M</td><td>ETB
${([Link]/1e6).toFixed(0)}M</td><td>${[Link]([Link]/[Link]*100
)}%</td></tr>`).join("")}</tbody></table>`;
if(rtype==="resource") {
content+=`<h3 style="font-size:11px;color:#0a3d1f">RESOURCE
UTILIZATION</h3><table><thead><tr><th>Name</th><th>Role</th><t
h>Utilization</th><th>Tasks</th><th>Status</th></tr></
thead><tbody>${[Link](m=>`<tr><td>${[Link]}</td><td>$
{[Link]}</td><td>${[Link]}%</td><td>${[Link]}</td><td>$
{[Link]}</td></tr>`).join("")}</tbody></table>`;
if(rtype==="schedule"||rtype==="kpi") {
content+=`<h3 style="font-size:11px;color:#0a3d1f">SCHEDULE
STATUS</h3><table><thead><tr><th>Task</th><th>Project</th><th>A
ssignee</th><th>Completion</th></tr></thead><tbody>$
{[Link](t=>`<tr><td>${[Link]}</td><td>${[Link]}</td><td>$
{[Link]}</td><td>${[Link]}%</td></tr>`).join("")}</tbody></table>`;
downloadReportFromHistory(name, content);
//
═══════════════════════════════════════════════════════
════════
// REPORTS
//
═══════════════════════════════════════════════════════
════════
function generateReport(type) {
const area=[Link]("report-preview-area");
<img src="${LOGO_SRC}"
style="height:45px;margin-bottom:6px"/><br/>
<div style="font-size:14px;font-weight:800;color:#0a3d1f">ETHIO-
DJIBOUTI RAILWAY S.C.</div>
<div style="font-size:12px;font-weight:700;color:#1a6b3a">$
{titles[type]}</div>
</div>`;
if(type==="status"||type==="executive") {
content+=`<div style="font-size:11px;font-
weight:700;color:#0a3d1f;margin-bottom:6px">PROJECT STATUS
SUMMARY</div>
<thead><tr><th>Project</th><th>Project
Manager</th><th>Progress</th><th>Status</th><th>Budget
Used</th></tr></thead>
<tbody>${[Link](p=>`<tr><td>${[Link]}</td><td>$
{[Link]}</td><td>${[Link]}%</td><td>${[Link]}</td><td>$
{[Link]([Link]/[Link]*100)}%</td></tr>`).join("")}</tbody>
</table>`;
if(type==="risk"||type==="executive") {
content+=`<div style="font-size:11px;font-
weight:700;color:#0a3d1f;margin:10px 0 6px">TOP RISKS</div>
<thead><tr><th>ID</th><th>Risk</th><th>Project</th><th>Severity</
th><th>Status</th><th>Owner</th></tr></thead>
<tbody>${[Link](0,5).map(r=>`<tr><td>${[Link]}</td><td>$
{[Link]}</td><td>${[Link](0,25)}...</td><td>${[Link]}</
td><td>${[Link]}</td><td>${[Link]}</td></tr>`).join("")}</tbody>
</table>`;
if(type==="cost"||type==="executive") {
content+=`<div style="font-size:11px;font-
weight:700;color:#0a3d1f;margin:10px 0 6px">COST SUMMARY</div>
<thead><tr><th>Project</th><th>Budget</th><th>Spent</th><th>
% Used</th><th>Variance</th></tr></thead>
<tbody>${[Link](p=>`<tr><td>${[Link](0,30)}</td>
<td>ETB ${([Link]/1e6).toFixed(0)}M</td><td>ETB
${([Link]/1e6).toFixed(0)}M</td><td>${[Link]([Link]/[Link]*100
)}%</td><td style="color:${[Link]>[Link]?"green":"red"}">ETB $
{(([Link])/1e6).toFixed(0)}M</td></tr>`).join("")}</tbody>
</table>`;
}
if(type==="resource") {
content+=`<div style="font-size:11px;font-
weight:700;color:#0a3d1f;margin-bottom:6px">RESOURCE
UTILIZATION</div>
<thead><tr><th>Name</th><th>Role</th><th>Utilization</th><th>Tas
ks</th><th>Status</th></tr></thead>
<tbody>${[Link](m=>`<tr><td>${[Link]}</td><td>$
{[Link]}</td><td>${[Link]}%</td><td>${[Link]}</td><td>$
{[Link]}</td></tr>`).join("")}</tbody>
</table>`;
if(type==="schedule"||type==="kpi") {
content+=`<div style="font-size:11px;font-
weight:700;color:#0a3d1f;margin-bottom:6px">SCHEDULE STATUS</div>
<thead><tr><th>Task</th><th>Project</th><th>Assigned
To</th><th>Completion</th></tr></thead>
<tbody>${[Link](t=>`<tr><td>${[Link]}</td><td>$
{[Link]}</td><td>${[Link]}</td><td>${[Link]}%</td></
tr>`).join("")}</tbody>
</table>`;
content+=`<div style="margin-top:14px;padding-top:10px;border-top:1px
solid #c8d8c8;font-size:9px;color:#888;display:flex;justify-content:space-
between">
[Link]=content;
REPORT_HISTORY.unshift({name:`${titles[type]} — $
{now}`,type:titles[type].split(" ")[0],date:now,by:"System
Administrator",to:"Executive Leadership",fmt:"HTML",html:content});
renderReportHistory();
function printReport() {
const c=[Link]("printable-report");
const w=[Link]("","_blank");
[Link](`<html><head><title>EDR
Report</title><style>body{font-family:Segoe UI,Arial,sans-serif;font-
size:11px;color:#1a2a1a}table{width:100%;border-
collapse:collapse}th{background:#0a3d1f;color:#fff;padding:4px 7px;font-
size:9px}td{padding:3px 7px;border-bottom:1px solid #dde8d0}tr:nth-
child(even) td{background:#f4f9f2}.tbl{width:100%;border-
collapse:collapse}</style></head><body>${[Link]}</body></
html>`);
[Link]();[Link]();
function downloadReport() {
const c = [Link]("printable-report");
body{font-family:"Segoe UI",Arial,sans-serif;font-
size:11px;color:#1a2a1a;margin:20px;background:#fff}
table{width:100%;border-collapse:collapse;margin-bottom:10px}
th{background:#0a3d1f;color:#fff;padding:5px 7px;font-size:9px;font-
weight:700;text-align:left}
tr:nth-child(even) td{background:#f4f9f2}
.bdg{display:inline-block;padding:2px 7px;border-radius:10px;font-
size:9px;font-weight:700}
.g{background:#d4efdf;color:#1e8449}.r{background:#fadbd8;color:#c0
392b}
.o{background:#fdebd0;color:#d35400}.b{background:#d6eaf8;color:#1
a5276}
@media print{body{margin:0}}
</style></head><body>$
{[Link]}<script>[Link]=function(){[Link]()}<\/
script></body></html>`;
const a = [Link]("a");
setTimeout(()=>[Link](url), 2000);
toast("✅ Report downloaded: " + filename);
body{font-family:"Segoe UI",Arial,sans-serif;font-
size:11px;color:#1a2a1a;margin:20px;background:#fff}
table{width:100%;border-collapse:collapse;margin-bottom:10px}
th{background:#0a3d1f;color:#fff;padding:5px 7px;font-size:9px;font-
weight:700;text-align:left}
tr:nth-child(even) td{background:#f4f9f2}
@media print{body{margin:0}}
setTimeout(()=>[Link](url), 2000);
function showPageById(id) {
[Link](".page").forEach(p=>[Link]("active")
);
[Link]("page-"+id).[Link]("active");
[Link](".nav-
tab").forEach((t,i)=>{if([Link]("onclick")&&[Link]("onclick").in
cludes(id)) [Link]("active"); else [Link]("active");});
//
═══════════════════════════════════════════════════════
════════
// MODALS
//
═══════════════════════════════════════════════════════
════════
function projOptions() { return
[Link](p=>`<option>${[Link]}</option>`).join(""); }
const body=[Link]("modal-body");
if(type==="add-project") {
} else if(type==="edit-project") {
<div class="mf-row"><div
class="mf"><label>MANAGER</label><input id="m-pmgr" value="$
{[Link]}"/></div><div class="mf"><label>PHASE</label><select
id="m-pphase"><option${[Link]==="Initiation"?"
selected":""}>Initiation</option><option${[Link]==="Planning"?"
selected":""}>Planning</option><option${[Link]==="Execution"?"
selected":""}>Execution</option><option${[Link]==="Monitoring &
Controlling"?" selected":""}>Monitoring & Controlling</option><option$
{[Link]==="Closing / Testing & Commissioning"?" selected":""}>Closing /
Testing & Commissioning</option></select></div></div>
} else if(type==="add-risk") {
<div class="mf-row"><div
class="mf"><label>SEVERITY</label><select id="m-
rsev"><option>High</option><option>Medium</option><option>Low</
option></select></div><div
class="mf"><label>PROBABILITY</label><select id="m-
rprob"><option>Almost
Certain</option><option>Likely</option><option>Possible</option><opti
on>Unlikely</option><option>Rare</option></select></div></div>
} else if(type==="edit-risk") {
<div class="mf-row"><div
class="mf"><label>SEVERITY</label><select id="m-rsev"><option$
{[Link]==="High"?" selected":""}>High</option><option$
{[Link]==="Medium"?" selected":""}>Medium</option><option$
{[Link]==="Low"?" selected":""}>Low</option></select></div><div
class="mf"><label>STATUS</label><select id="m-rstat"><option$
{[Link]==="Open"?" selected":""}>Open</option><option$
{[Link]==="Mitigated"?" selected":""}>Mitigated</option><option$
{[Link]==="Closed"?"
selected":""}>Closed</option></select></div></div>
} else if(type==="add-member") {
} else if(type==="add-user") {
openUserModal('add');
return;
} else if(type==="edit-user") {
openUserModal('edit', id);
return;
} else if(type==="add-task") {
<div class="mf-row"><div
class="mf"><label>ASSIGNEE</label><select id="m-
tassign"><option>Taye Abu</option><option>Tewodros
Alemayehu</option><option>Wakuma Ensermu</option><option>Dawit
Diriba</option><option>Nigisti Hailu</option></select></div><div
class="mf"><label>COMPLETION %</label><input id="m-tpct"
type="number" value="0" min="0" max="100"/></div></div>
[Link]("modal-bg").[Link]("open");
// SAVE FUNCTIONS
function saveProject() {
const name=[Link]("m-pname").[Link]();
const
colors=["#27ae60","#2980b9","#e74c3c","#f39c12","#8e44ad","#1abc9c",
"#d35400","#16a085"];
[Link]({id:nextId+
+,name,manager:[Link]("m-
pmgr").value,phase:[Link]("m-
pphase").value,start:[Link]("m-
pstart").value||"2025",end:[Link]("m-
pend").value||"2026",budget:+[Link]("m-pbgt").value||
0,spent:0,progress:0,status:[Link]("m-
pstat").value,color:colors[[Link]%[Link]]});
function updateProject(id) {
[Link]=[Link]("m-pname").value;
[Link]=[Link]("m-pmgr").value;
[Link]=[Link]("m-pphase").value;
[Link]=+[Link]("m-pprog").value;
[Link]=[Link]("m-pstat").value;
[Link]=+[Link]("m-pbgt").value;
[Link]=+[Link]("m-pspent").value;
[Link]=[Link]("m-pstart").value;
[Link]=[Link]("m-pend").value;
closeModal();renderAll();logAudit("Edit","Projects","Project updated:
"+[Link]);toast("✅ Project updated!");
function deleteProject(id) {
const p=[Link](x=>[Link]===id);
PROJECTS=[Link](p=>[Link]!
==id);closeModal();renderAll();logAudit("Delete","Projects","Project deleted:
"+pname);toast("🗑 Project deleted");
function saveRisk() {
const txt=[Link]("m-rtxt").[Link]();
[Link]({id:"R-
0"+String([Link]+1).padStart(2,"0"),text:txt,project:[Link]
mentById("m-rproj").value,sev:[Link]("m-
rsev").value,prob:[Link]("m-
rprob").value,impact:[Link]("m-
rimp").value,status:[Link]("m-
rstat").value,owner:[Link]("m-
rown").value,due:[Link]("m-
rdue").value||"TBD",mitigation:[Link]("m-
rmit").value||"TBD"});
closeModal();renderRisks();logAudit("Add","Risks","Risk added:
"+[Link](0,50));toast("✅ Risk added!");
function updateRisk(idx) {
const r=RISKS[idx];
[Link]=[Link]("m-rtxt").value;
[Link]=[Link]("m-rsev").value;
[Link]=[Link]("m-rstat").value;
[Link]=[Link]("m-rmit").value;
[Link]=[Link]("m-rown").value;
closeModal();renderRisks();logAudit("Edit","Risks","Risk updated:
"+[Link]);toast("✅ Risk updated!");
function deleteRisk(idx) {
const r=RISKS[idx];
[Link](idx,1);closeModal();renderRisks();logAudit("Delete","Risks","Risk
deleted: "+(r?[Link]:""));toast("🗑 Risk deleted");
}
function saveMember() {
const name=[Link]("m-mname").[Link]();
[Link]({name,role:[Link]("m-
mrole").value,projects:[Link]("m-mproj").value,util:
+[Link]("m-mutil").value||
80,tasks:0,status:"Active",email:[Link]("m-
memail").value});
//
═══════════════════════════════════════════════════════
════════
// USER MANAGEMENT — Full CRUD with RBAC
//
═══════════════════════════════════════════════════════
════════
function roleToAccess(role) {
return "Viewer";
function nextUserId() {
function projectCheckboxes(selected) {
</label>`;
[Link] = `
</div>
<div class="mf-row">
</div>
<div class="mf-row">
<option>Project Manager</option>
<option>Administrator</option>
<option>Viewer</option>
</select>
</div>
</div>
<div class="mf-row">
<div class="mf"><label>PASSWORD <span
style="color:#e74c3c">*</span></label>
<div style="position:relative">
<span onclick="[Link]('um-
pw').type=[Link]('um-
pw').type==='password'?'text':'password'"
style="position:absolute;right:6px;top:50%;transform:translateY(-
50%);cursor:pointer;font-size:11px">👁</span>
</div>
</div>
</div>
<div class="mf"><label>STATUS</label>
<option>Active</option><option>Inactive</option>
</select>
</div>
${projectCheckboxes([])}
</div>
</div>
<div id="um-val-msg" style="color:#e74c3c;font-size:9px;min-
height:14px;margin-bottom:4px"></div>
<div class="mbtns">
</div>`;
[Link]("modal-bg").[Link]("open");
umRoleChanged();
[Link] = `
<div class="mf-row">
</div>
<div class="mf-row">
<div class="mf"><label>ROLE</label>
<option${[Link]==="Administrator"?"
selected":""}>Administrator</option>
<option${[Link]==="Viewer"?" selected":""}>Viewer</option>
</select>
</div>
</div>
<div class="mf-row">
<div style="position:relative">
<span onclick="[Link]('um-
pw').type=[Link]('um-
pw').type==='password'?'text':'password'"
style="position:absolute;right:6px;top:50%;transform:translateY(-
50%);cursor:pointer;font-size:11px">👁</span>
</div>
</div>
<div class="mf"><label>STATUS</label>
<option${[Link]==="Active"?" selected":""}>Active</option>
<option${[Link]==="Inactive"?" selected":""}>Inactive</option>
</select>
</div>
</div>
<div class="mf" id="um-proj-wrap"><label>ASSIGNED
PROJECT(S)</label>
${projectCheckboxes([Link]||[])}
</div>
</div>
</div>
<div class="mbtns">
</div>`;
[Link]("modal-bg").[Link]("open");
umRoleChanged();
function umRoleChanged() {
const role = ([Link]("um-role")||{}).value || "";
function getSelectedProjects() {
return [Link]([Link]('input[name="um-
proj"]:checked')).map(c => [Link]);
function saveUserNew() {
const pw = ([Link]("um-pw")||{}).value||"";
[Link]({
});
closeModal();
renderSettings();
function updateUserNew(idx) {
const pw = ([Link]("um-pw")||{}).value||"";
[Link] = name;
[Link] = email;
[Link] = role;
[Link] = roleToAccess(role);
[Link] = projs;
[Link] = stat;
closeModal();
renderSettings();
function toggleUserStatus(idx) {
if (!canManageUsers()) { toast("❌ Access denied"); return; }
renderSettings();
logAudit("Edit","User Management",`User $
{[Link]==="Active"?"activated":"deactivated"}: ${[Link]}`);
function deleteUserConfirm(idx) {
[Link](idx, 1);
closeModal();
renderSettings();
function saveUser() {
const name=[Link]("m-uname")?.value?.trim()||"";
[Link]({
access: [Link]("m-uaccess")?.value||"Viewer",
pw: [Link]("m-upw")?.value||""
});
function updateUser(idx) {
[Link]=[Link]("m-uname")?.value||[Link];
[Link]=[Link]("m-uemail")?.value||[Link];
[Link]=[Link]("m-urole")?.value||[Link];
[Link]=[Link]("m-uaccess")?.value||[Link];
[Link]=[Link]("m-ustat")?.value||[Link];
function deleteUser(idx) {
function saveTask() {
const name=[Link]("m-tname").[Link]();
const colors=["#0a3d1f","#27ae60","#2980b9","#f39c12","#8e44ad"];
[Link]({id:nextId++,task:name,project:[Link]("m-
tproj").value,start:+[Link]("m-tstart").value,dur:
+[Link]("m-
tdur").value,assignee:[Link]("m-tassign").value,pct:
+[Link]("m-tpct").value,color:colors[[Link]
%[Link]]});
// MILESTONE MANAGEMENT
function editMilestone(idx) {
const m=MILESTONES[idx];
if(newTitle===null)return;
if(newDate===null)return;
if(newStatus===null)return;
m.m=[Link]()||m.m;
m.d=[Link]()||m.d;
m.s=[Link]()||m.s;
function addMilestone() {
if(!title)return;
if(!date)return;
if(!status)return;
if(!MILESTONES)MILESTONES=[];
const nextId=[Link](...[Link](m=>[Link]||0),0)+1;
[Link]({id:nextId,m:title,d:date,s:status});
function deleteMilestone(idx) {
[Link](idx,1);
//
═══════════════════════════════════════════════════════
════════
// UTILS
//
═══════════════════════════════════════════════════════
════════
function exportCostCSV() {
[Link](p=>{
const pct=[Link]([Link]/[Link]*100);
const v=[Link];
csv+=`"${[Link]}","${[Link]}","${[Link]}","${pct}%","${v}","$
{[Link]}"\n`;
});
const
a=[Link]("a");[Link]="data:text/csv,"+encodeURICompon
ent(csv);[Link]="EDR_Cost_Report.csv";[Link]();
function exportScheduleCSV() {
[Link](t=>csv+=`"${[Link]}","${[Link]}","${[Link]}","$
{[Link]}","${[Link]}","${[Link]}%"\n`);
const
a=[Link]("a");[Link]="data:text/csv,"+encodeURICompon
ent(csv);[Link]="EDR_Schedule.csv";[Link]();
function importScheduleCSV(input) {
const file=[Link][0];if(!file)return;
[Link]=function(e){
const lines=[Link]("\n").filter(l=>[Link]());
const colors=["#0a3d1f","#27ae60","#2980b9","#f39c12","#8e44ad"];
let added=0;
for(let i=1;i<[Link];i++){
const cols=lines[i].match(/(".*?"|[^,]+)(?=\s*,|\s*$)/g);
if(!cols||[Link]<6)continue;
const clean=[Link](c=>[Link](/^"|"$/g,"").trim());
const task=clean[0],project=clean[1],assignee=clean[2];
const start=parseInt(clean[3])||1,dur=parseInt(clean[4])||1;
const pct=parseInt((clean[5]||"0").replace("%",""))||0;
if(!task)continue;
[Link]({id:nextId+
+,task,project,start,dur,assignee,pct,color:colors[[Link]
%[Link]]});
added++;
[Link]="";
};
[Link](file);
function showMSPHelp(){[Link]('msp-help-
overlay').[Link]='flex';}
function importMSProject(input) {
toast("❌ .mpp files cannot be read in the browser. Please export as XML
from MS Project first.");
if(![Link]().endsWith('.xml')) {
[Link] = function(e) {
const colors =
["#0a3d1f","#27ae60","#2980b9","#f39c12","#8e44ad","#c0392b","#16a0
85"];
let added = 0;
try {
const ns = "[Link]
if(![Link]) tasks =
[Link]([Link]("Task"));
if(![Link]) { toast("❌ No tasks found. Ensure the file is an MS
Project XML export."); [Link]=""; return; }
// Helper: get text content of first matching child tag (tries ns then plain)
};
if(projNode) {
if(!name) return;
// Duration: MS Project stores as PT#H#M#S or in minutes (480 mins =
1 day)
let durDays = 1;
if(durRaw) {
let startOffset = 1;
if(startRaw) {
// Status badge
const status = pct >= 100 ? "Done" : pct > 0 ? "In Progress" : isCrit ?
"Critical" : "Not Started";
[Link]({
id: nextId++,
task: name,
project: "MS-Import",
start: startOffset,
dur: durDays,
assignee,
pct,
status,
});
added++;
});
[Link] = "";
} catch(err) {
[Link] = "";
};
[Link](file);
}
function importExcelSchedule(input) {
const file=[Link][0];if(!file)return;
[Link]=function(e){
try {
const workbook=[Link](data,{type:"array"});
const sheet=[Link][[Link][0]];
const json=[Link].sheet_to_json(sheet);
const colors=["#0a3d1f","#27ae60","#2980b9","#f39c12","#8e44ad"];
let added=0;
[Link](row=>{
const project=row["Project"]||"Imported-Excel";
const assignee=row["Assignee"]||row["Resource"]||"TBD";
const dur=parseInt(row["Duration"])||1;
if(!task)return;
[Link]({id:nextId+
+,task,project,start,dur,assignee,pct,color:colors[[Link]
%[Link]]});
added++;
});
[Link]="";
if(added>0){renderSchedule();toast("✅ "+added+" Excel task(s)
imported!");}
};
[Link](file);
function exportTable() {
let csv="Project,Manager,Phase,Start,End,Budget,Spent,Progress,Status\n";
[Link](p=>csv+=`"${[Link]}","${[Link]}","$
{[Link]}","${[Link]}","${[Link]}","${[Link]}","${[Link]}","$
{[Link]}%","${[Link]}"\n`);
const
a=[Link]("a");[Link]="data:text/csv,"+encodeURICompon
ent(csv);[Link]="EDR_Projects.csv";[Link]();
function exportRisks() {
let
csv="ID,Description,Project,Severity,Probability,Impact,Status,Owner,Mitigati
on\n";
[Link](r=>csv+=`"${[Link]}","${[Link]}","${[Link]}","${[Link]}","$
{[Link]}","${[Link]}","${[Link]}","${[Link]}","${[Link]}"\n`);
const
a=[Link]("a");[Link]="data:text/csv,"+encodeURICompon
ent(csv);[Link]="EDR_Risks.csv";[Link]();
function changePass() {
const p=[Link]("new-pass").value;
const c=[Link]("conf-pass").value;
//
═══════════════════════════════════════════════════════
════════
// NEW FEATURES: Excel Upload, Photos, Completed Projects, Upcoming
Works
//
═══════════════════════════════════════════════════════
════════
function importProjectReport(input) {
const file=[Link][0];if(!file)return;
[Link]=function(e){
try {
const workbook=[Link](data,{type:"array"});
const sheet=[Link][[Link][0]];
const json=[Link].sheet_to_json(sheet);
let added=0;
[Link](row=>{
const reportName=row["Report Name"]||row["Name"]||"Imported
Report";
const reportType=row["Type"]||"Custom";
if(reportName){
const historyTable=[Link]("report-history-tbody");
const tr=[Link]("tr");
[Link]=`<td>${reportName}</td><td>${reportType}</td><td>$
{dateStr}</td><td>${currentUser?.name||'System'}</
td><td>Stakeholders</td><td>📊 Excel</td><td><button class="edit-btn"
onclick="downloadReport()">📥 Download</button></td>`;
[Link](tr);
added++;
});
[Link]="";
};
[Link](file);
function addProjectPhoto(input) {
const file=[Link][0];if(!file)return;
const gallery=[Link]("photo-gallery");
if([Link]===1){[Link]="";}
const photoDiv=[Link]("div");
[Link]=function(){[Link]="scale(1.05)"};
[Link]=function(){[Link]="scale(1)"};
const img=[Link]("img");
[Link]=[Link];
[Link]="width:100%;height:120px;object-fit:cover";
[Link]=function(){[Link]([Link])};
[Link](img);
const caption=[Link]("div");
[Link]="padding:5px;background:#f4f9f2;font-
size:8px;text-align:center;color:#555";
[Link]=new Date().toLocaleDateString();
[Link](caption);
[Link](photoDiv);
[Link]="";
};
[Link](file);
// Completed Projects
let COMPLETED_PROJECTS=[
{name:"Ambo BarWaaq Secondary School
Project",status:"Completed",year:2024,budget:2500000000,spent:24800000
00,manager:"Eng. Solomon",reports:"PDF,Excel"},
{name:"Ayisha Health
Center",status:"Completed",year:2025,budget:850000000,spent:840000000,
manager:"Eng. Metakal",reports:"PDF,Excel"},
];
function renderCompletedProjects() {
const filter=[Link]("completed-filter").value;
const filtered=filter==="All"?
COMPLETED_PROJECTS:COMPLETED_PROJECTS.filter(p=>[Link]==filter);
let html="";
[Link](p=>{
const spent=[Link]([Link]/[Link]*100);
<div style="font-size:10px;font-weight:700;color:#0a3d1f">$
{[Link]}</div>
</div>`;
});
[Link]("completed-projects-
list").innerHTML=html||"<div style='text-
align:center;color:#888;padding:20px;font-size:11px'>No completed projects
for selected year.</div>";
let UPCOMING_WORKS=[
{id:1,item:"Stadium Development",start:"2026-08-15",end:"2027-12-
31",scope:"Sports complex with 80,000
capacity",budget:3500000000,status:"🔵 Planned"},
];
function renderUpcomingWorks() {
const tbody=[Link]("upcoming-works-tbody");
[Link]=UPCOMING_WORKS.map(w=>`<tr>
<td>${[Link]}</td>
<td>${[Link]}</td>
<td>${[Link]}</td>
<td style="font-size:8px">${[Link]}</td>
<td>${([Link]/1000000).toFixed(0)}M</td>
<td>${[Link]}</td>
</tr>`).join("");
function showUpcomingWorksModal() {
const newWork={
start:new Date().toISOString().split("T")[0],
end:"",
status:"🔵 Planned"
};
if([Link]&&[Link]){
UPCOMING_WORKS.push({id:[Link](...UPCOMING_WORKS.map(w=>[Link]||
0),0)+1,...newWork});
renderUpcomingWorks();
function downloadPageHTML() {
const html=[Link];
const a=[Link]("a");
[Link]="data:text/html,"+encodeURIComponent(html);
[Link]="EDR_Reports_Page_"+new Date().toISOString().split("T")
[0]+".html";
[Link]();
function downloadPageExcel() {
if(![Link]){
return;
const wb=[Link].book_new();
[Link]("#report-history-tbody tr").forEach(tr=>{
const cells=[];
[Link]("td").forEach((td,idx)=>{
if(idx<6)[Link]([Link]);
});
if([Link]>0)[Link](cells);
});
[Link].book_append_sheet(wb,[Link].aoa_to_sheet(historyData),"Rep
ort History");
COMPLETED_PROJECTS.forEach(p=>{
const spent=[Link]([Link]/[Link]*100);
[Link]([[Link],[Link],[Link],[Link],[Link],spent+"%",p.
manager]);
});
[Link].book_append_sheet(wb,[Link].aoa_to_sheet(completedData),"
Completed Projects");
UPCOMING_WORKS.forEach(w=>{
[Link]([[Link],[Link],[Link],[Link],[Link],[Link]]);
});
[Link].book_append_sheet(wb,[Link].aoa_to_sheet(upcomingData),"U
pcoming Works");
[Link](wb,"EDR_Reports_"+new Date().toISOString().split("T")
[0]+".xlsx");
[Link]("load",function(){
if([Link]("upcoming-works-
tbody"))renderUpcomingWorks();
if([Link]("completed-projects-
list"))renderCompletedProjects();
});
//
═══════════════════════════════════════════════════════
════════
// COST MODULE ENHANCEMENTS v10
//
═══════════════════════════════════════════════════════
════════
function _initCostProjectDropdown() {
if (!sel) return;
[Link](function(p) {
[Link] = [Link];
[Link] = [Link];
[Link](opt);
});
[Link] = prevVal;
function onCostProjectChange() {
if (!sel) return;
} else {
if (p) {
if (tagPhase) { [Link] = "📌 " + [Link] + " Phase";
[Link] = ""; }
_toggleCostViewMode(val);
renderCost();
function _toggleCostViewMode(val) {
// All main cost sections are always visible — they are filtered by selection
[Link](function(id){
var el = [Link](id);
});
_updateCostSectionHeaders(val);
function _updateCostSectionHeaders(val) {
if (!isAll) {
function _getCostFilteredProjects() {
var id = parseInt([Link]);
// ── EVM Data helper (derives EVM metrics from project data) ──────
function _getEVMData(p) {
// CV = Cost Variance = EV - AC
var cv = ev - ac;
// SV = Schedule Variance = EV - PV
var sv = ev - pv;
// CPI = EV / AC
// SPI = EV / PV
return { bac:bac, pv:pv, ev:ev, ac:ac, cv:cv, sv:sv, cpi:cpi, spi:spi, eac:eac,
vac:vac };
function _updateProjectCostSummary(projects) {
var d = _getEVMData(p);
});
if (aggCPI >= 1.0 && aggSPI >= 1.0) { overallStatus = "✅ HEALTHY";
statusClass = "healthy"; }
else if (aggCPI >= 0.9 && aggSPI >= 0.85) { overallStatus = "⚠ WARNING";
statusClass = "warning"; }
if (titleEl) {
}
// Update status badge
if (badgeEl) {
[Link] = overallStatus;
var cpiColor =
aggCPI>=1?"#1e8449":aggCPI>=0.9?"#d35400":"#c0392b";
var spiColor =
aggSPI>=1?"#1e8449":aggSPI>=0.9?"#d35400":"#c0392b";
setCell("pcs-bac", fmt(totBAC));
setCell("pcs-ac", fmt(totAC));
setCell("pcs-ev", fmt(totEV));
setCell("pcs-pv", fmt(totPV));
setCell("pcs-cpi", [Link](2));
setCell("pcs-spi", [Link](2));
setCell("pcs-eac", fmt(eac));
setCell("pcs-vac", (vac>=0?"+":"")+fmt([Link](vac)));
setCell("pcs-util", utilPct+"%");
function importCostExcel(input) {
try {
var colors =
["#0a3d1f","#27ae60","#2980b9","#f39c12","#8e44ad","#e74c3c","#16a0
85","#d35400"];
[Link](function(row) {
if (!name) return;
if (existing) {
updated++;
[Link]({id:nextId+
+,name:name,manager:mgr,phase:phase,start:"2026-01",end:"2026-
12",budget:budget,spent:spent||[Link](budget*0.3),progress:prog||
30,status:stat,priority:"Medium",risks:0,color:colors[[Link]
%[Link]]});
added++;
});
[Link] = "";
_initCostProjectDropdown();
renderCost();
};
[Link](file);
function importCostMSP(input) {
try {
var ns = "[Link]
if(![Link]) tasks =
[Link]([Link]("Task"));
var added = 0;
var colors =
["#27ae60","#2980b9","#f39c12","#8e44ad","#e74c3c","#16a085"];
[Link](function(t) {
if(isSummary) {
if(budgetRaw>0) {
else { [Link]({id:nextId+
+,name:name,manager:"TBD",phase:"Build",start:"2026-01",end:"2026-
12",budget:[Link](budgetRaw),spent:[Link](actualRaw)||
[Link](budgetRaw*0.3),progress:pct||30,status:"On
Track",priority:"Medium",risks:0,color:colors[[Link]
%[Link]]}); added++; }
});
[Link] = "";
_initCostProjectDropdown();
renderCost();
};
[Link](file);
function _renderEVM(projects) {
if (!tbody) return;
var isSingle = [Link] === 1;
if (evmTbl) {
[Link](function(p){
var d = _getEVMData(p);
});
if (grid) {
[Link] =
'<div class="evm-kpi bac"><div class="evm-kpi-val"
style="color:#0a3d1f">'+fmt(totBAC)+'</div><div class="evm-kpi-
lbl">BAC</div><div class="evm-kpi-sub">Budget at
Completion</div></div>'+
if (isSingle) {
var p = projects[0];
var d = _getEVMData(p);
var activities = [
];
rows = [Link](function(act){
return '<tr>'+
'<td style="font-weight:700;color:#0a3d1f">'+[Link]+'</td>'+
'<td>'+fmt(actBac)+'</td>'+
'<td>'+fmt(actPv)+'</td>'+
'<td>'+fmt(actEv)+'</td>'+
'<td>'+fmt(actAc)+'</td>'+
'<td style="color:'+cvColor+';font-weight:700">'+(actCv>=0?"+":"")
+fmt([Link](actCv))+'</td>'+
'<td style="color:'+svColor+';font-weight:700">'+(actSv>=0?"+":"")
+fmt([Link](actSv))+'</td>'+
'<td style="color:'+cpiC+';font-weight:800">'+actCpi+'</td>'+
'<td style="color:'+spiC+';font-weight:800">'+actSpi+'</td>'+
'<td>'+fmt(actEac)+'</td>'+
'<td style="color:'+vacColor+';font-weight:700">'+(actVac>=0?"+":"")
+fmt([Link](actVac))+'</td>'+
'</tr>';
});
[Link]('<tr style="background:#f0f8f0;font-weight:800;border-top:2px
solid #0a3d1f">'+
'<td>'+fmt([Link])+'</td>'+
'<td>'+fmt([Link])+'</td>'+
'<td>'+fmt([Link])+'</td>'+
'<td>'+fmt([Link])+'</td>'+
'<td style="color:'+([Link]>=0?"#1e8449":"#c0392b")+';font-
weight:800">'+([Link]>=0?"+":"")+fmt([Link]([Link]))+'</td>'+
'<td style="color:'+([Link]>=0?"#1e8449":"#c0392b")+';font-
weight:800">'+([Link]>=0?"+":"")+fmt([Link]([Link]))+'</td>'+
'<td style="color:'+
([Link]>=1?"#1e8449":[Link]>=0.9?"#d35400":"#c0392b")+';font-
weight:800">'+[Link]+'</td>'+
'<td style="color:'+
([Link]>=1?"#1e8449":[Link]>=0.9?"#d35400":"#c0392b")+';font-
weight:800">'+[Link]+'</td>'+
'<td style="font-weight:800">'+fmt([Link])+'</td>'+
'<td style="color:'+([Link]>=0?"#1e8449":"#c0392b")+';font-
weight:800">'+([Link]>=0?"+":"")+fmt([Link]([Link]))+'</td>'+
'</tr>');
} else {
rows = [Link](function(p){
var d = _getEVMData(p);
return '<tr>'+
'<td title="'+[Link]+'">'+sname+'</td>'+
'<td>'+fmt([Link])+'</td>'+
'<td>'+fmt([Link])+'</td>'+
'<td>'+fmt([Link])+'</td>'+
'<td>'+fmt([Link])+'</td>'+
'<td style="color:'+cvColor+';font-weight:700">'+([Link]>=0?"+":"")
+fmt([Link]([Link]))+'</td>'+
'<td style="color:'+svColor+';font-weight:700">'+([Link]>=0?"+":"")
+fmt([Link]([Link]))+'</td>'+
'<td style="color:'+cpiC+';font-weight:800">'+[Link]+'</td>'+
'<td style="color:'+spiC+';font-weight:800">'+[Link]+'</td>'+
'<td>'+fmt([Link])+'</td>'+
'<td style="color:'+vacColor+';font-weight:700">'+([Link]>=0?"+":"")
+fmt([Link]([Link]))+'</td>'+
'</tr>';
});
[Link] = [Link]("");
//
═══════════════════════════════════════════════════════
════════
// PROJECT COST VIEW — renders single-project cost details
//
═══════════════════════════════════════════════════════
════════
function _renderProjectCostView(projects) {
var p = projects[0];
var d = _getEVMData(p);
// Derived values
// ── KPI tiles ──
if (kpiGrid) {
[Link] =
// ── Budget vs Actual ──
if (baEl) {
[Link] =
'<div style="margin-bottom:12px">'+
'<div style="display:flex;justify-content:space-between;margin-
bottom:4px">'+
'<span style="font-size:10px;font-weight:800;color:#0a3d1f">Budget
Utilization</span>'+
'<span style="font-size:11px;font-
weight:800;color:'+utilColor+'">'+utilPct+'%</span>'+
'</div>'+
'<div style="height:14px;background:#e8f0e8;border-
radius:7px;overflow:hidden">'+
'<div
style="height:100%;width:'+barW+'%;background:'+utilColor+';border-
radius:7px;transition:width .4s"></div>'+
'</div>'+
'<div style="display:flex;justify-content:space-between;margin-
top:4px;font-size:9px;color:#777">'+
'<span>ETB 0</span><span>'+fmt([Link])+'</span>'+
'</div>'+
'</div>'+
'<div style="font-size:15px;font-
weight:800;color:#0a3d1f">'+fmt([Link])+'</div>'+
'<div style="font-size:8px;color:#777;font-weight:700">APPROVED
BUDGET</div>'+
'</div>'+
'<div style="font-size:15px;font-
weight:800;color:#2980b9">'+fmt([Link])+'</div>'+
'</div>'+
'</div>'+
'<div style="margin-top:8px;font-
size:9px;color:#555;background:#fafafa;border:1px solid #e8f0e8;border-
radius:3px;padding:5px 8px">'+
'</div>';
[Link] =
'<div style="font-size:9px;font-weight:800;color:#0a3d1f;margin-
bottom:6px;letter-spacing:.3px">BUDGET vs ACTUAL COST
BREAKDOWN</div>'+
'<div class="hbr-num">100%</div>'+
'</div>'+
'</div>'+
'<div class="hbr-num"
style="color:#d35400">'+forecastPct+'%</div>'+
'</div>'+
'<div style="margin-top:8px;padding:6px
8px;background:#f4f9f2;border-radius:4px;border:1px solid #c8d8c8;font-
size:9px">'+
'<span style="color:'+([Link]>=0?"#1e8449":"#c0392b")
+';font-weight:800">'+
([Link]>=0?"+":"")+fmt([Link]([Link]))+
'</span>'+
'</div>';
// ── Variance ──
if (varEl) {
[Link] =
'<div style="margin-bottom:10px">'+
'<div style="font-size:9px;font-weight:800;color:#555;margin-
bottom:3px">COST VARIANCE (CV = EV - AC)</div>'+
'<div style="font-size:20px;font-weight:800;color:'+cvColor+'">'+
(cv>=0?"+":"")+fmt([Link](cv))+'</div>'+
'</div>'+
'<div>'+
'<div style="font-size:9px;font-weight:800;color:#555;margin-
bottom:3px">SCHEDULE VARIANCE (SV = EV - PV)</div>'+
'<div style="font-size:20px;font-weight:800;color:'+svColor+'">'+
(sv>=0?"+":"")+fmt([Link](sv))+'</div>'+
'</div>';
// ── CPI panel ──
if (cpiEl) {
[Link] =
'<div style="margin-bottom:12px">'+
'<div style="display:flex;justify-content:space-between;align-
items:center;margin-bottom:3px">'+
'<span style="font-size:18px;font-
weight:800;color:'+cpiColor+'">'+[Link](2)+'</span>'+
'</div>'+
'<div style="height:8px;background:#e8f0e8;border-
radius:4px;overflow:hidden">'+
'<div
style="height:100%;width:'+cpiBarW+'%;background:'+cpiColor+';border-
radius:4px"></div>'+
'</div>'+
'<div style="font-size:8px;color:'+cpiColor+';margin-top:2px">'+
([Link]>=1?"Efficient — for every ETB 1 spent, ETB "+[Link](2)+" of
value earned":"Cost overrun — "+(([Link])*100).toFixed(0)+"% over plan
per ETB spent")+'</div>'+
'</div>'+
'<div>'+
'<div style="display:flex;justify-content:space-between;align-
items:center;margin-bottom:3px">'+
'<span style="font-size:18px;font-
weight:800;color:'+spiColor+'">'+[Link](2)+'</span>'+
'</div>'+
'<div style="height:8px;background:#e8f0e8;border-
radius:4px;overflow:hidden">'+
'<div
style="height:100%;width:'+spiBarW+'%;background:'+spiColor+';border-
radius:4px"></div>'+
'</div>'+
'<div style="font-size:8px;color:'+spiColor+';margin-top:2px">'+
([Link]>=1?"On / ahead of schedule":"Behind schedule — "+((1-
[Link])*100).toFixed(0)+"% slower than planned")+'</div>'+
'</div>';
// ── EAC panel ──
if (eacEl) {
[Link] =
'<div style="text-align:center;padding:8px 0">'+
'<div style="font-size:9px;font-weight:800;color:#555;margin-
bottom:4px">ESTIMATE AT COMPLETION (EAC = BAC / CPI)</div>'+
'<div style="font-size:26px;font-
weight:800;color:#d35400">'+fmt([Link])+'</div>'+
'<div style="font-size:9px;color:#777;margin-top:2px">Original
Budget: '+fmt([Link])+'</div>'+
'</div>'+
'<div style="background:'+([Link]>=0?"#d4efdf":"#fadbd8")
+';border:1px solid '+([Link]>=0?"#a9dfbf":"#f1948a")+';border-
radius:4px;padding:8px;text-align:center;margin-top:4px">'+
'<div style="font-size:14px;font-weight:800;color:'+vacColor+'">'+
([Link]>=0?"▼ UNDER BUDGET":"▲ OVER BUDGET")+' BY
'+eacPct+'%</div>'+
'<div style="font-size:10px;font-weight:700;color:'+vacColor+'">VAC =
'+([Link]>=0?"+":"")+fmt([Link]([Link]))+'</div>'+
'</div>';
if (pcfEl) {
var months =
["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
});
var f; if(i<2) f=0.050; else if(i<4) f=0.080; else if(i<5) f=0.085; else
f=null;
});
var planH=[Link]((plan/maxV2)*chartH2);
var actH=actual!==null?[Link]((actual/maxV2)*chartH2):0;
'<div style="display:flex;align-items:flex-
end;gap:2px;height:'+chartH2+'px">'+
(isPast?'<div style="width:12px;background:'+
(actual>plan?'#e74c3c':'#27ae60')+';border-radius:3px 3px 0
0;height:'+actH+'px" title="Actual: ETB '+actual+'M"></div>':
'<div style="width:12px;background:#fdebd0;border-radius:3px
3px 0 0;height:'+[Link](planH*0.9)+'px;opacity:.7"
title="Forecast"></div>')+
'</div>'+
'<div class="cf-amt">'+plan+'M</div>'+
'</div>';
}).join("");
[Link] =
'<div style="display:flex;align-items:center;gap:12px;margin-
bottom:8px;flex-wrap:wrap">'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#d6eaf8;border-radius:2px"></
div><span
style="font-size:9px;color:#555;font-weight:600">Planned</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#27ae60;border-radius:2px"></
div><span style="font-size:9px;color:#555;font-weight:600">Actual
(on/under)</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#e74c3c;border-radius:2px"></
div><span style="font-size:9px;color:#555;font-weight:600">Actual
(over)</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#fdebd0;border-radius:2px"></
div><span
style="font-size:9px;color:#555;font-weight:600">Forecast</span></div>'+
'<span style="font-size:9px;color:#e74c3c;font-weight:700;margin-
left:auto">* Current Month (May 2026)</span>'+
'</div>'+
'<div class="cf-chart-wrap">'+barsHtml2+'</div>'+
'<div style="font-size:8px;color:#888;margin-top:6px;border-top:1px
solid #e8f0e8;padding-top:4px">'+
'</div>';
// ── Breakdown chart ──
if (pvBc) {
var maxB2=[Link];
var bW2=[Link](([Link]/maxB2)*(cW2-lW2-60));
var sW2=[Link](([Link]/maxB2)*(cW2-lW2-60));
[Link] =
'<div style="display:flex;align-items:center;gap:12px;margin-
bottom:6px;margin-left:'+(lW2+5)+'px">'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:14px;height:10px;background:'+[Link]+'22;border:1.5px solid
'+[Link]+';border-radius:2px"></div><span style="font-
size:9px;color:#555">Budget (outline)</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:14px;height:10px;background:'+[Link]+';border-
radius:2px"></div><span style="font-size:9px;color:#555">Spent
(filled)</span></div>'+
'</div>'+
'<div style="display:flex;align-items:center;gap:5px;margin-
bottom:5px">'+
'<div style="width:'+lW2+'px;font-size:9px;color:#333;font-
weight:600;text-align:right;flex-shrink:0;overflow:hidden;text-
overflow:ellipsis;white-space:nowrap" title="'+[Link]+'">'+
([Link]>22?[Link](0,21)+"…":[Link])+'</div>'+
'<div style="position:relative;flex:1;min-width:0">'+
'<div style="height:'+bH2+'px;background:#e8f0e8;border-
radius:3px;overflow:hidden;position:relative">'+
'<div
style="height:100%;width:'+bW2+'px;background:'+[Link]+'22;border:1.5p
x solid
'+[Link]+';border-radius:3px;position:absolute;left:0;top:0"></div>'+
'<div
style="height:100%;width:'+sW2+'px;background:'+[Link]+';border-
radius:3px;position:absolute;left:0;top:0;display:flex;align-
items:center;padding-left:5px">'+
'</div>'+
'</div>'+
'</div>'+
'<div style="font-size:9px;color:#555;width:70px;flex-shrink:0;text-
align:right">Budget: ETB '+([Link]/1e6).toFixed(0)+'M</div>'+
'</div>';
// ── Breakdown table ──
if (pvTbody) {
var v2=[Link]([Link]/[Link]*100);
var var2=[Link];
var cpi2=([Link]/[Link]).toFixed(2);
[Link] = '<tr>'+
'<td>'+([Link]>30?[Link](0,29)+"…":[Link])+'</td>'+
'<td>Civil Works</td>'+
'<td>ETB '+([Link]/1e6).toFixed(0)+'M</td>'+
'<td>ETB '+([Link]/1e6).toFixed(0)+'M</td>'+
'<td>ETB '+(forecast/1e6).toFixed(0)+'M</td>'+
'<td style="color:'+(var2>0?"#1e8449":"#c0392b")+';font-
weight:700">'+(var2>0?"+":"-")+'ETB
'+[Link](var2/1e6).toFixed(0)+'M</td>'+
'<td style="color:'+(parseFloat(cpi2)>=1?"#1e8449":"#c0392b")+';font-
weight:700">'+cpi2+'</td>'+
'<td>'+eacFmt+'</td>'+
'</tr>';
//
═══════════════════════════════════════════════════════
════════
function _renderCostVarianceAnalysis(projects) {
var el = [Link]("cost-variance-analysis");
if (!el) return;
if (isSingle) {
var p = projects[0];
var activities = [
];
else if (pct <= 95) { status = "⚠ Warning"; statusClass = "warn"; color =
"#d35400"; [Link]++; }
'</div>';
});
'<div style="display:flex;gap:8px;margin-bottom:10px;flex-
wrap:wrap">'+
'<div style="font-size:18px;font-
weight:800;color:#1e8449">'+[Link]+'</div>'+
'<div style="font-size:8px;font-weight:700;color:#1e8449">WITHIN
BUDGET</div></div>'+
'<div style="font-size:18px;font-
weight:800;color:#d35400">'+[Link]+'</div>'+
'<div style="font-size:8px;font-
weight:700;color:#d35400">WARNING</div></div>'+
'<div style="font-size:18px;font-
weight:800;color:#c0392b">'+[Link]+'</div>'+
'<div style="font-size:8px;font-weight:700;color:#c0392b">OVER
BUDGET</div></div>'+
'</div>';
return;
if (pct <= 80) { status = "✅ Within Budget"; statusClass = "ok"; color =
"#27ae60"; [Link]++; }
else if (pct <= 95) { status = "⚠ Warning"; statusClass = "warn"; color =
"#d35400"; [Link]++; }
else { status = "🔴 Over Budget"; statusClass = "over"; color = "#e74c3c";
[Link]++; }
'</div>';
}).join("");
'<div style="font-size:18px;font-
weight:800;color:#1e8449">'+[Link]+'</div>'+
'<div style="font-size:8px;font-weight:700;color:#1e8449">WITHIN
BUDGET</div></div>'+
'<div style="font-size:8px;font-
weight:700;color:#d35400">WARNING</div></div>'+
'<div style="font-size:18px;font-
weight:800;color:#c0392b">'+[Link]+'</div>'+
'<div style="font-size:8px;font-weight:700;color:#c0392b">OVER
BUDGET</div></div>'+
'</div>';
function _renderCashFlowForecast(projects) {
var el = [Link]("cash-flow-forecast");
if (!el) return;
var months =
["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
});
var factor;
else factor=null;
});
'<div style="display:flex;align-items:flex-
end;gap:2px;height:'+chartH+'px">'+
'</div>'+
(isPast?'<div style="width:12px;background:'+
(actual>plan?'#e74c3c':'#27ae60')+';border-radius:3px 3px 0
0;height:'+actH+'px" title="Actual: ETB '+actual+'M"></div>':
'<div style="width:12px;background:#fdebd0;border-radius:3px
3px 0 0;height:'+[Link](planH*0.9)+'px;opacity:.7" title="Forecast: ETB
'+([Link](plan*0.9))+'M"></div>')+
'</div>'+
'<div class="cf-amt">'+plan+'M</div>'+
'</div>';
}).join("");
[Link] =
'<div style="display:flex;align-items:center;gap:12px;margin-
bottom:8px;flex-wrap:wrap">'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#d6eaf8;border-radius:2px"></
div><span
style="font-size:9px;color:#555;font-weight:600">Planned</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#27ae60;border-radius:2px"></
div><span style="font-size:9px;color:#555;font-weight:600">Actual
(on/under)</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#e74c3c;border-radius:2px"></
div><span style="font-size:9px;color:#555;font-weight:600">Actual
(over)</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#fdebd0;border-radius:2px"></
div><span
style="font-size:9px;color:#555;font-weight:600">Forecast</span></div>'+
'<span style="font-size:9px;color:#e74c3c;font-weight:700;margin-
left:auto">* Current Month (May 2026)</span>'+
'</div>'+
'<div class="cf-chart-wrap">'+barsHtml+'</div>'+
'</div>';
function _renderBudgetCommitmentActual(projects) {
var el = [Link]("budget-commitment-actual");
if (!el) return;
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#27ae6022;border:1px solid
#27ae60;border-radius:2px"></div><span style="font-size:9px;font-
weight:700;color:#0a3d1f">Approved Budget</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#8e44ad;border-radius:2px"></
div><span style="font-size:9px;font-weight:700;color:#8e44ad">Committed
Cost</span></div>'+
'<div style="display:flex;align-items:center;gap:4px"><div
style="width:12px;height:9px;background:#2980b9;border-radius:2px"></
div><span style="font-size:9px;font-weight:700;color:#2980b9">Actual
Expenditure</span></div>'+
'</div>';
if (isSingle) {
var p = projects[0];
var activities = [
];
'<div class="bca-bars">'+
'</div>'+
'</div>';
});
return;
'<div class="bca-bars">'+
'</div>'+
'</div>';
}).join("");
function _updateCostKPIs(projects) {
// Aggregate CPI
if(budgetBar){ [Link]=utilPct+"%";
[Link]=utilPct>90?"#e74c3c":utilPct>75?"#f39c12":"
#27ae60"; }
if(spentBar) [Link]=utilPct+"%";
if(eacLbl){
[Link] = (eacDiff>=0?"▼ "+eacDiffPct+"% under budget":"▲
"+eacDiffPct+"% over budget");
[Link] = eacDiff>=0?"#27ae60":"#e74c3c";
if(varEl){
[Link] = (totalVariance>=0?"+":"")
+fmt([Link](totalVariance));
[Link] = totalVariance>=0?"#1e8449":"#c0392b";
if(cpiLbl){
[Link] = aggCPI>=1?"#27ae60":"#e74c3c";
//
═══════════════════════════════════════════════════════
════════
// AUDIT LOG RENDER
//
═══════════════════════════════════════════════════════
════════
function renderAuditLog() {
if(!tbody) return;
const q = ([Link]("audit-search")||{}).value||"";
// Summary strip
if(strip) {
const editCount =
AUDIT_LOG.filter(e=>["Add","Edit","Delete"].includes([Link])).length;
[Link] = [
["🔐 Logins",loginCount,"#2980b9"],
["📊 Reports",rptCount,"#8e44ad"],
["⚙ Settings",settCount,"#d35400"],
<div style="font-size:16px;font-weight:800;color:${c}">${v}</div>
<div style="font-size:8px;color:#555;font-weight:700;white-
space:nowrap">${l}</div>
</div>`).join("");
const actionColors = {
"Login":"#d6eaf8","Logout":"#eaecee","Add":"#d4efdf","Edit":"#fff3cd",
"Delete":"#fadbd8","Report Generated":"#e8daef","Settings
Modified":"#fdebd0"
};
const ac = actionColors[[Link]]||"#f4f9f2";
return `<tr>
<td style="color:#888;font-size:9px">${i+1}</td>
<td style="font-size:9px;white-space:nowrap;color:#555">${[Link]}</td>
<td style="font-weight:600;font-size:9px">${[Link]}</td>
<td style="font-size:9px;color:#0a3d1f;font-weight:700">$
{[Link]}</td>
<td style="font-size:9px;color:#555">${[Link]}</td>
</tr>`;
function exportAuditLog(){
const
a=[Link]("a");[Link]="data:text/csv,"+encodeURICompon
ent(csv);
[Link]="EDR_Audit_Log_"+new Date().toISOString().split("T")
[0]+".csv";[Link]();
//
═══════════════════════════════════════════════════════
════════
// TOAST
function toast(msg) {
const wrap=[Link]("toast-wrap");
const el=[Link]("div");
[Link]="toast";
[Link]=msg;
[Link](el);
setTimeout(()=>[Link](),3500);
}
// HEADER DATE
/* ── Flush queued login calls now that all functions are defined ── */
window._selectRoleReady = true;
(window._loginQueue||[]).forEach(function(item){
if(item[0]==='selectRole') window._selectRoleImpl(item[1]);
});
window._loginQueue = [];
</script>
</body>
</html>