// ESI DATA MAP — Extended Data Layer
(function() {
  const d = window.ESI_DATA._default;

  // Canonical source-type taxonomy (drives everything else)
  const SOURCE_TYPES = [
    'Email', 'Cloud Storage', 'Chat', 'File Share',
    'Mobile', 'Laptop', 'SaaS', 'ERP/Finance',
    'Messaging', 'DevOps', 'Archive',
  ];

  // Custodian × source matrix with volume and collection status per cell
  // status: 'collected' | 'in-progress' | 'on-hold' | 'identified' | 'gap'
  d.dataMapExt = {
    sourceTypes: SOURCE_TYPES,

    // Rich per-custodian profiles
    custodianProfiles: [
      {
        name: 'Helen Bishop',   role: 'Former CEO',        org: 'Redstone Capital', priority: 'key',
        entryDate: '2019-03-01', exitDate: null, preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 184.2, riskScore: 92,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange',       volumeGB: 82.4, status: 'collected',    collectedOn: '2026-04-02', risk: 'none'   },
          { srcId: 'SRC-002', type: 'Cloud Storage',name: 'OneDrive',       volumeGB: 48.2, status: 'collected',    collectedOn: '2026-04-02', risk: 'none'   },
          { srcId: 'SRC-003', type: 'Chat',         name: 'Teams',          volumeGB: 12.4, status: 'in-progress',  collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-016', type: 'Mobile',       name: 'iPhone (FI-139)',volumeGB: 22.4, status: 'collected',    collectedOn: '2026-02-26', risk: 'none'   },
          { srcId: 'SRC-018', type: 'Laptop',       name: 'MacBook Pro',    volumeGB: 18.6, status: 'collected',    collectedOn: '2026-02-26', risk: 'none'   },
          { srcId: 'SRC-012', type: 'Messaging',    name: 'Bloomberg Chat', volumeGB: 0.2,  status: 'collected',    collectedOn: '2026-03-25', risk: 'none'   },
        ],
      },
      {
        name: 'Karen Osei',     role: 'Former CFO — APAC', org: 'Redstone Capital', priority: 'key',
        entryDate: '2018-06-01', exitDate: '2024-12-01', preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 92.4, riskScore: 88,
        sources: [
          { srcId: 'SRC-024', type: 'Email',        name: 'Exchange (archived)', volumeGB: 62.4, status: 'in-progress', collectedOn: null,         risk: 'high'  },
          { srcId: 'SRC-002', type: 'Cloud Storage',name: 'OneDrive',           volumeGB: 12.8, status: 'on-hold',      collectedOn: null,         risk: 'medium'},
          { srcId: 'SRC-020', type: 'Chat',         name: 'WhatsApp',           volumeGB: 2.4,  status: 'collected',    collectedOn: '2026-04-12', risk: 'none'  },
          { srcId: 'SRC-012', type: 'Messaging',    name: 'Bloomberg Chat',     volumeGB: 0.4,  status: 'collected',    collectedOn: '2026-03-25', risk: 'none'  },
          { srcId: 'SRC-023', type: 'Archive',      name: 'Legacy tapes',       volumeGB: 14.4, status: 'in-progress',  collectedOn: null,         risk: 'high'  },
        ],
      },
      {
        name: 'Marcus Pryor',   role: 'GC',                org: 'Redstone Capital', priority: 'key',
        entryDate: '2020-02-01', exitDate: null, preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 142.8, riskScore: 78,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange',       volumeGB: 48.4, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-002', type: 'Cloud Storage',name: 'OneDrive',       volumeGB: 24.2, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-003', type: 'Chat',         name: 'Teams',          volumeGB: 8.4,  status: 'on-hold',     collectedOn: null,         risk: 'low'    },
          { srcId: 'SRC-022', type: 'File Share',   name: 'iManage (DMS)',  volumeGB: 48.2, status: 'on-hold',     collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-016', type: 'Mobile',       name: 'iPhone (FI-140)',volumeGB: 13.6, status: 'collected',   collectedOn: '2026-02-28', risk: 'none'   },
        ],
      },
      {
        name: 'James Harrington', role: 'CEO Meridian',    org: 'Meridian Holdings', priority: 'key',
        entryDate: '2017-04-01', exitDate: null, preserved: true, holdDate: '2026-01-20',
        totalVolumeGB: 218.6, riskScore: 95,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange',       volumeGB: 88.4, status: 'in-progress', collectedOn: null,         risk: 'high'   },
          { srcId: 'SRC-002', type: 'Cloud Storage',name: 'OneDrive',       volumeGB: 42.4, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-003', type: 'Chat',         name: 'Teams',          volumeGB: 16.2, status: 'on-hold',     collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-016', type: 'Mobile',       name: 'iPhone (FI-142)',volumeGB: 48.2, status: 'collected',   collectedOn: '2026-03-18', risk: 'none'   },
          { srcId: 'SRC-018', type: 'Laptop',       name: 'MacBook Pro',    volumeGB: 22.2, status: 'on-hold',     collectedOn: null,         risk: 'low'    },
          { srcId: 'SRC-012', type: 'Messaging',    name: 'Bloomberg Chat', volumeGB: 1.2,  status: 'collected',   collectedOn: '2026-03-25', risk: 'none'   },
        ],
      },
      {
        name: 'Julia Matsumoto', role: 'Head of M&A',     org: 'Redstone Capital', priority: 'high',
        entryDate: '2021-01-01', exitDate: null, preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 68.1, riskScore: 62,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange',     volumeGB: 28.4, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-002', type: 'Cloud Storage',name: 'OneDrive',     volumeGB: 18.2, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-003', type: 'Chat',         name: 'Teams',        volumeGB: 6.4,  status: 'on-hold',     collectedOn: null,         risk: 'low'    },
          { srcId: 'SRC-011', type: 'SaaS',         name: 'Intralinks VDR',volumeGB: 15.1, status: 'collected',  collectedOn: '2026-03-18', risk: 'none'   },
        ],
      },
      {
        name: 'David Okonkwo',  role: 'Deputy CFO',        org: 'Redstone Capital', priority: 'high',
        entryDate: '2022-03-01', exitDate: null, preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 52.4, riskScore: 55,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange',  volumeGB: 28.4, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-002', type: 'Cloud Storage',name: 'OneDrive',  volumeGB: 12.4, status: 'in-progress', collectedOn: null,         risk: 'low'    },
          { srcId: 'SRC-010', type: 'ERP/Finance',  name: 'SAP ERP',   volumeGB: 11.6, status: 'on-hold',     collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-016', type: 'Mobile',       name: 'iPhone (FI-143, queued)', volumeGB: null, status: 'identified', collectedOn: null, risk: 'high' },
        ],
      },
      {
        name: 'Thomas Blackwell', role: 'Chief Engineer', org: 'Redstone Capital', priority: 'key',
        entryDate: '2019-09-01', exitDate: null, preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 148.4, riskScore: 72,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange',   volumeGB: 32.4, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-002', type: 'Cloud Storage',name: 'OneDrive',   volumeGB: 18.2, status: 'in-progress', collectedOn: null,         risk: 'low'    },
          { srcId: 'SRC-013', type: 'DevOps',       name: 'GitHub',     volumeGB: 62.4, status: 'collected',   collectedOn: '2026-03-30', risk: 'none'   },
          { srcId: 'SRC-015', type: 'SaaS',         name: 'Confluence', volumeGB: 18.8, status: 'collected',   collectedOn: '2026-03-30', risk: 'none'   },
          { srcId: 'SRC-014', type: 'SaaS',         name: 'Jira',       volumeGB: 4.4,  status: 'collected',   collectedOn: '2026-03-30', risk: 'none'   },
          { srcId: 'SRC-018', type: 'Laptop',       name: 'MacBook Pro',volumeGB: 12.2, status: 'on-hold',     collectedOn: null,         risk: 'low'    },
        ],
      },
      {
        name: 'Priya Raman',    role: 'VP Pricing',        org: 'Redstone Capital', priority: 'key',
        entryDate: '2021-06-01', exitDate: null, preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 86.2, riskScore: 84,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange',  volumeGB: 28.4, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-006', type: 'Cloud Storage',name: 'Box',       volumeGB: 42.4, status: 'on-hold',     collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-005', type: 'Chat',         name: 'Slack',     volumeGB: 6.6,  status: 'on-hold',     collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-017', type: 'Mobile',       name: 'iPhone (FI-137)', volumeGB: 8.8, status: 'collected', collectedOn: '2026-04-02', risk: 'none' },
        ],
      },
      {
        name: 'Arnav Iyer',     role: 'APAC Head',         org: 'Redstone Capital', priority: 'key',
        entryDate: '2020-09-01', exitDate: null, preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 142.6, riskScore: 86,
        sources: [
          { srcId: 'SRC-007', type: 'Email',        name: 'Gmail',         volumeGB: 38.4, status: 'collected',  collectedOn: '2026-04-14', risk: 'none'   },
          { srcId: 'SRC-008', type: 'Cloud Storage',name: 'Google Drive',  volumeGB: 24.8, status: 'collected',  collectedOn: '2026-04-14', risk: 'none'   },
          { srcId: 'SRC-020', type: 'Chat',         name: 'WhatsApp',      volumeGB: 2.4,  status: 'collected',  collectedOn: '2026-04-12', risk: 'none'   },
          { srcId: 'SRC-019', type: 'Laptop',       name: 'Dell (FI-138)', volumeGB: 77.0, status: 'collected',  collectedOn: '2026-02-28', risk: 'none'   },
        ],
      },
      {
        name: 'Elena Vasquez',  role: 'VP Compliance',     org: 'Redstone Capital', priority: 'high',
        entryDate: '2020-08-01', exitDate: null, preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 78.4, riskScore: 48,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange', volumeGB: 38.4, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-002', type: 'Cloud Storage',name: 'OneDrive', volumeGB: 28.4, status: 'on-hold',     collectedOn: null,         risk: 'low'    },
          { srcId: 'SRC-010', type: 'ERP/Finance',  name: 'SAP ERP',  volumeGB: 11.6, status: 'on-hold',     collectedOn: null,         risk: 'medium' },
        ],
      },
      {
        name: 'Felix Wong',     role: 'Dir. Operations',   org: 'Redstone Capital', priority: 'high',
        entryDate: '2021-04-01', exitDate: null, preserved: true, holdDate: '2026-01-14',
        totalVolumeGB: 96.8, riskScore: 58,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange',  volumeGB: 38.4, status: 'in-progress', collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-006', type: 'Cloud Storage',name: 'Box',       volumeGB: 42.4, status: 'on-hold',     collectedOn: null,         risk: 'low'    },
          { srcId: 'SRC-005', type: 'Chat',         name: 'Slack',     volumeGB: 6.2,  status: 'on-hold',     collectedOn: null,         risk: 'low'    },
          { srcId: 'SRC-016', type: 'Mobile',       name: 'iPhone (FI-142)', volumeGB: 9.8, status: 'collected', collectedOn: '2026-04-16', risk: 'none' },
        ],
      },
      {
        name: 'Simon Okafor',   role: 'Sterling GC',       org: 'Sterling Ventures', priority: 'key',
        entryDate: '2018-01-01', exitDate: null, preserved: true, holdDate: '2026-01-20',
        totalVolumeGB: 168.4, riskScore: 74,
        sources: [
          { srcId: 'SRC-001', type: 'Email',        name: 'Exchange',      volumeGB: 82.4, status: 'on-hold',  collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-002', type: 'Cloud Storage',name: 'OneDrive',      volumeGB: 48.2, status: 'on-hold',  collectedOn: null,         risk: 'low'    },
          { srcId: 'SRC-010', type: 'ERP/Finance',  name: 'SAP ERP',       volumeGB: 22.4, status: 'on-hold',  collectedOn: null,         risk: 'medium' },
          { srcId: 'SRC-011', type: 'SaaS',         name: 'Intralinks VDR',volumeGB: 15.4, status: 'collected',collectedOn: '2026-03-18', risk: 'none'   },
        ],
      },
    ],

    // Per-source 26(f) readiness and risk data
    sourceReadiness: [
      { srcId: 'SRC-001', name: 'Exchange',         type: 'Email',        provider: 'Microsoft', volumeGB: 412.0, custodianCount: 12, preserved: true,  collected: false, collectionPct: 61, risk: 'medium', method: 'Graph API', notes: 'Batch in progress — 4 custodians remaining' },
      { srcId: 'SRC-002', name: 'OneDrive',         type: 'Cloud Storage',provider: 'Microsoft', volumeGB: 284.4, custodianCount: 12, preserved: true,  collected: false, collectionPct: 30, risk: 'medium', method: 'Graph API', notes: 'Pending post-email batch' },
      { srcId: 'SRC-003', name: 'Teams',            type: 'Chat',         provider: 'Microsoft', volumeGB: 68.2,  custodianCount: 10, preserved: true,  collected: false, collectionPct: 0,  risk: 'high',   method: 'Compliance export', notes: 'Not yet started — scheduled Q2' },
      { srcId: 'SRC-004', name: 'SharePoint',       type: 'File Share',   provider: 'Microsoft', volumeGB: 148.6, custodianCount: null, preserved: true, collected: true,  collectionPct: 100,risk: 'none',   method: 'Graph API scoped', notes: 'Complete ok — 14 sites collected' },
      { srcId: 'SRC-005', name: 'Slack',            type: 'Chat',         provider: 'Slack',     volumeGB: 42.8,  custodianCount: 8,  preserved: true,  collected: false, collectionPct: 0,  risk: 'high',   method: 'Compliance export', notes: 'On hold only — not yet collected' },
      { srcId: 'SRC-006', name: 'Box',              type: 'Cloud Storage',provider: 'Box',       volumeGB: 196.2, custodianCount: 8,  preserved: true,  collected: false, collectionPct: 0,  risk: 'medium', method: 'API export', notes: 'On hold; collection order pending' },
      { srcId: 'SRC-007', name: 'Gmail',            type: 'Email',        provider: 'Google',    volumeGB: 38.4,  custodianCount: 2,  preserved: true,  collected: true,  collectionPct: 100,risk: 'none',   method: 'Google Vault', notes: 'Complete ok' },
      { srcId: 'SRC-008', name: 'Google Drive',     type: 'Cloud Storage',provider: 'Google',    volumeGB: 24.8,  custodianCount: 2,  preserved: true,  collected: true,  collectionPct: 100,risk: 'none',   method: 'Google Vault', notes: 'Complete ok' },
      { srcId: 'SRC-010', name: 'SAP ERP',          type: 'ERP/Finance',  provider: 'SAP',       volumeGB: 184.0, custodianCount: null, preserved: true, collected: false, collectionPct: 0,  risk: 'high',   method: 'DB table export', notes: 'Scope negotiation with IT underway' },
      { srcId: 'SRC-011', name: 'Intralinks VDR',   type: 'SaaS',         provider: 'Intralinks',volumeGB: 62.4,  custodianCount: 4,  preserved: true,  collected: true,  collectionPct: 100,risk: 'none',   method: 'Portal export', notes: 'Complete ok' },
      { srcId: 'SRC-012', name: 'Bloomberg Chat',   type: 'Messaging',    provider: 'Bloomberg', volumeGB: 18.2,  custodianCount: 3,  preserved: true,  collected: true,  collectionPct: 100,risk: 'none',   method: 'Bloomberg Archive', notes: 'Complete ok' },
      { srcId: 'SRC-013', name: 'GitHub',           type: 'DevOps',       provider: 'GitHub',    volumeGB: 92.6,  custodianCount: 4,  preserved: true,  collected: true,  collectionPct: 100,risk: 'none',   method: 'API export', notes: 'Complete ok' },
      { srcId: 'SRC-016', name: 'Mobile (iPhone)',  type: 'Mobile',       provider: 'Apple',     volumeGB: 118.4, custodianCount: 8,  preserved: true,  collected: false, collectionPct: 88, risk: 'low',    method: 'Cellebrite FFS', notes: '7 of 8 imaged; Okonkwo queued' },
      { srcId: 'SRC-018', name: 'Laptops (macOS)',  type: 'Laptop',       provider: 'Apple',     volumeGB: 1240,  custodianCount: 6,  preserved: true,  collected: false, collectionPct: 50, risk: 'medium', method: 'EnCase E01', notes: '3 of 6 imaged' },
      { srcId: 'SRC-019', name: 'Laptops (Windows)',type: 'Laptop',       provider: 'Dell/Lenovo',volumeGB: 892,   custodianCount: 6,  preserved: true,  collected: true,  collectionPct: 100,risk: 'none',   method: 'FTK Imager E01', notes: 'Complete ok' },
      { srcId: 'SRC-020', name: 'WhatsApp',         type: 'Chat',         provider: 'Meta',      volumeGB: 8.4,   custodianCount: 3,  preserved: true,  collected: true,  collectionPct: 100,risk: 'none',   method: 'Smarsh export', notes: 'Complete ok' },
      { srcId: 'SRC-022', name: 'iManage (DMS)',    type: 'File Share',   provider: 'iManage',   volumeGB: 142.4, custodianCount: null, preserved: true, collected: false, collectionPct: 0,  risk: 'high',   method: 'Native API', notes: 'Pending IT access credentials' },
      { srcId: 'SRC-023', name: 'Archive tapes',    type: 'Archive',      provider: 'Iron Mountain',volumeGB: 418, custodianCount: null, preserved: true, collected: false, collectionPct: 18, risk: 'high',  method: 'Tape restore', notes: 'In progress — expected 2026-04-28' },
    ],

    // Provider concentration
    providers: [
      { name: 'Microsoft', sources: 5, volumeGB: 982.0, custodians: 12, risk: 'medium', notes: 'Dominant provider — Graph API throttle risk on batch' },
      { name: 'Apple',     sources: 2, volumeGB: 1358.4, custodians: 8, risk: 'medium', notes: 'macOS + iPhone — FFS imaging most complete' },
      { name: 'Dell/Lenovo',sources: 1,volumeGB: 892.0,  custodians: 6, risk: 'none',   notes: 'Windows laptops fully imaged' },
      { name: 'Google',    sources: 2, volumeGB: 63.2,   custodians: 2, risk: 'none',   notes: 'Subsidiary only; Vault export complete' },
      { name: 'Box',       sources: 1, volumeGB: 196.2,  custodians: 8, risk: 'medium', notes: 'Collection order pending' },
      { name: 'Slack',     sources: 1, volumeGB: 42.8,   custodians: 8, risk: 'high',   notes: 'Only hold active; collection not started' },
      { name: 'Iron Mountain',sources:1,volumeGB: 418.0, custodians: null, risk: 'high', notes: 'Legacy tape restore — slowest path' },
      { name: 'SAP',       sources: 1, volumeGB: 184.0,  custodians: null, risk: 'high', notes: 'DB scope negotiation underway' },
      { name: 'Meta',      sources: 1, volumeGB: 8.4,    custodians: 3, risk: 'none',   notes: 'WhatsApp via Smarsh — complete' },
      { name: 'iManage',   sources: 1, volumeGB: 142.4,  custodians: null, risk: 'high', notes: 'IT access credentials pending' },
    ],
  };
})();
