Notification-System-Design-diagram.excalidraw

==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==

Notification System — End-to-End Architecture Diagram

Text Elements

Service A ^svcA Service B ^svcB Service C ^svcC notification event ^evt1 notification event ^evt2 notification event ^evt3 Notification Service API ^apibox Validation + Dedup ^validbox checks user preferences, rate limits, dedup by idempotency key ^validnote Priority Queue (Kafka) ^kafkabox P0 critical · P1 high · P2 normal ^kafkanote Notification Workers ^workersbox consume from priority queues ^workersnote Push (APNs / FCM) ^pushbox mobile push notifications ^pushnote Email (SES / SendGrid) ^emailbox email delivery ^emailnote SMS (Twilio) ^smsbox SMS delivery ^smsnote User Device / Inbox ^userdevice User Preferences DB ^prefsdb opt-in channels, quiet hours, frequency caps ^prefsnote Notification Log DB ^logdb delivery status, retry tracking ^lognote Retry + DLQ ^dlqbox exponential backoff; dead-letter after N failures ^dlqnote Event-driven pipeline; priority queues; channel-specific adapters; retry with DLQ for reliability ^annotation

Excalidraw Data

Text Elements

Service A ^zLZ8mXd9

Service B ^JDWJ18lc

Service C ^YHlyQCNE

Notification Service API ^api-text

Validation + Dedup ^6ZQs8i9W

user prefs · rate limits · dedup key ^6SoNYlRo

Priority Queue (Kafka) ^vqwMyF2s

P0 critical · P1 high · P2 normal ^3JkhtZpl

Notification Workers ^n1kO11Nv

consume from priority queues ^mZBQLSOY

Push (APNs / FCM) ^MKkI87Ba

Email (SES / SendGrid) ^VOsnavyp

SMS (Twilio) ^sms-text

User Device / Inbox ^wYvzgxIM

User Preferences DB ^ButmCDLA

opt-in channels, quiet hours, freq caps ^9ZDGduGa

Notification Log DB ^6lea5HxR

delivery status, retry tracking ^log-note

Retry + DLQ ^dlq-text

exponential backoff; DLQ after N failures ^dlq-note

Event-driven pipeline; priority queues; channel-specific adapters; retry with DLQ for reliability ^1beEhvNw

%%

Drawing

N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebR4ARniaOiCEfQQOKGZuAG1wMFAwYogSbghTbABBFOLIWERywOwojmVg2pLMbgAWAAZ+EphuADYBgsgKEnVuBITxuqkEQmVp
 
Xp7BgShSNgBrBABhNnw2UnKAYgSEK6vOyE1cbF3lHaEOYiOTs4lzgDME34AZl+AFY7hBfoR8PgAMqwDoSQQecHMbZ7BAAdWmkm4fAmEFeqw44RyaASmwgbDgjzUwzJfQWJUYLHYXDQeMWzNYnAAcpwxNwAOx9foJHogkGAimEd5Ycq4PrgwjMAAiaSgCGI3F+BDCFNRO32cJgCPQSLKFOs7XEqEZAgQmtmFJewjgAEliKTULkALoU37kDIe7gcIT
 
Qimvd7E5he0Ph/GaYTvACiwQyWS9vopQjgxFwGq1ZMFgp64p4PBLAE4AByVilEDi7ENh/AUyShAAqWCgABkZU20Dr8Hr8Scno7B7qEAUAL6DIolMoSIw9gBa1f0AA1iJXwQ0bdBu+DumgJRS6agSxSpsQZmgRoDtKXi5LK30RjwQW3lqsoLNBdoX74hqmB/hIMJMGYYioDU/qcFAMKEEYNpinBWQAGK4PoUIXuSwHdlURDKGy6BiFkTDgsyUDmAQ
 
hErCREDYcQxAdPqaL7J8pwXDc1xIBSDxPC6bwfMcXESNs1jMNSgRZOCkLQsapoVMcFr4ga6JYreOJkhGwhEiSTr4lSNKwLMDIUnoWS4DKTDBmgcatkZpArDKBBdqB5QQaQUEIDB4K4EIUBsAASuESE2tsQgIPWNkABI/msZLxEBnJMNyJEckyaWsnyHACkWfQgjwPQJJWczSrKJ7oLgCRKqq6oTqgQ4jos6lGvCB7mlqlptKadoVA6haoHhixCe6
 
np5H6+IBlhCB2agDm6cJ0axi2/FJsQqbpJk2STdmub5o1CTFqWRUVj0NZ1qO/bNvGiztsw7m9jdk7DtFo5sOOQ3Ne9izkBQT3lBAs7zviS5mvQ2AAEJ7vAB7NK01rHr0/W4f017YrM8zfisiWoKWbGGoconfOgly8bc/GPM8kYiV8Fz/ECoJyVCsIdeUXUouxmKY+yS36TGhmLMZ2C0mZ/VcqyuIUpLvL8jaIzVv0ILViKI2LpV8o8HVarBAW2pT
 
oT6KKZ1KndfiVp9fqg1CyUY0epmU2LDNQZDYt+K0ytt2OYsibCVt6a7WgWb4jmeb60WJZludl0xY23ttp23Z9vHr0tSUY77N9U4gwUC6QODEAAFIqhiRcJNW+DYLDjTiUeFJVWe+K4SCGz4jed6oCMPRPiVgogoKPB9IkPRK2390JWBw0ASlJQgVPEBeT5qAw2hCHhbM48lL88GYdh+C4RS890cR5RkRqZwy0w1HuCfDFMSxfFqdznGkxA5M8eCA
 
k0xtr/lBJHApK4Bkn+f0rMTYczNlzImmlO7q0gISSQXsdJGWpKLUy9J+qWSiDZUg813bC2cv4NyR5wKQXML5VeFtAohTCshbgkVfoZzipPWYyUr4sk4NLfEssOC5XyvjAeCRPw9AfBVYgcoJC4EBDrBq2c3pG3aiaU2yIepIzQP1MIR1nSvHGo7f0gY5puzWh7DayCFomN9htAOO19GhwOhHaeUczpVlrHHAcFi7olAek9FOHifr1k+lnA2CiPaU
 
EBhIYGxQ5x5zBkNCokMDg13hggFolsn6LCqujZuuIh4Yy0ljfqkhWFoAJs/Imf8fg8UpgmamQl3iVLJozYEYIwEKXZoiKBiieYFL5qYvwSCDIoOFmgsWmCOHpW4alThfD5bcBBH0asJZhGCilGDTWUieiyL1o1AJ5TjYdLNF0i2vUbSaJtsMu2uiHZ7WmoY/BliSieyGZ4n2JQ/YpjTLY25iww6HSGsdZx5ZXFXUWA2DxBDvFJ1An4kJ6dICZ12T
 
naJoNFiFwAJqxQPgARQODyZMyT/713xI3WekALw8EBFvSYvMu6PgrJWfuojATVhGIKCu/cca/n/IBI+pD0BLwoagJJa9EL0LJNSiEu8sI4VtvUAiREGLnwohwm+tFFXlAfqxfZHESbcQphk95dTaaNOgOQQB0kdos3acoyBqidU9LgfzQZgtLmQBFmM4a5l8TYOssSPBxivHuqIa5fAESBXkOgiK6hQVQqsHFagRhccEDxVxlPJIn4JlSz6dM9K/
 
CbSMufCVPoay0UbOqq0sG9UdnyPhRUbmEDOn2sWOk7g5ztH4nthNYOTtt73MDW8hBZiXmQvuNYr5GYfklD+Y4wFp1gUXTcddVOrzE6PWTi9JqhsPpfThUwhB4T+UQCiWAGJxR86lHibgOAhBnCJm6EfOGTRUmI21Zk3EgJUazE/fkuBYwuV43/Q601lxGUJGwNrKmgkTV6p+AgQUoJfi/GtWzW1TbVKtW5rA7SvBnXmPgZSUZGCvUS2ylwnNWUZn
 
5u4ICAeYw+jCIIzKCRVUIC4BGNshAji9mYaJo2o5zaSito0dbDto1rndu9L2yALsjEJ36VGEdjyx3+wnUHKT+1w5HROtHEF7j5P3Whc9FdPGM5BKRW9XO564nyhvc4eehK64eQbriHomVyWzCKr+nDCRW7aEVuyiukph6rLKRPNNswRjsPwh5CQfJqKQjwNRTgqBBXQSqAABTdHJeCYqUKlu3tK/eh8YtQDvmfHaKqeHXxovgcrEgtWGq2BU2DZN
 
Srsog1/Y1v9Wtmskpa2SbTUNKU5t07DcqCR6RdV6AjHriPzCwfBP1tkB0UlOC5DgJDYvoHi4QRL+ZWSpcjb5TL2XLQ0LjRvNASbl0ppKcNaLubs24eq1RuZ7ISpLOrAkNl4jJHVUFJx7j27eMHLQwJjDQnTlttEwCnRrobk9oMbNB5QbJvLSU2jj5m01N2N+Q47TQKY5LrBZu0dUgjOwrTvuiAiLa00/+uG49VnCg2akaQHYFBnCVCqM4a9hBHPV
 
Q52wKgLmyQLPPNwas7mIAdxw4KasAGp4K+6SB6pTWIDf3qXTMS6AAFAJASh/jylBPNY0rSgjiD8NraI7hb1iw4BsBlOp/IdQwCu7d3aYofQJhgGk+733YAVeB4V77n0ExpP1uAWV4XFBim4FW/iTIxAqix/j1e2P4J8C4E0EEbg+d5XbYgBwNgCWaLJY4KgBAjBBu+6lVkPLZlNhm91fTKpBqT2nqzeRl7T25Z5RQoyms1Ylk8FBRrFj8pqxA4s3
 
WtqCBjejZOeo20sOJtdrx32lHie/rDtdauhM47tqTqR/YrTAKdMuMXePhFZPlMU/XTCzdpmEXmfp2xaPUNmMymUAZkoyev93gf9vYWcL1C5gFOdudIYoY+cb1Bc2NM8xdhoJcckyQPxvMpcil7tNEX5esP5eIutoMes289dzUDcrUhtF9jlQd9hxs3V0cBYZsbcTI7d+pHdndMxfcPc6gvcwAfc3d/duDihVZm8+Cw8I8P9SAY9Od08/9IBk9U8Z
 
CQgM9Ocs8c8880AC9Dwi8S8y8ktDtq8KC68d4G8rsvVm960WsSD351dO8z1KNJkKNIBeFqMixSxCp3xfM/tWNcBdxpRq0uNZ8ad58qDTc2NocRM1ILlhp4ccxEcNM7lt85D0dFN99ydscbET8Ej8dz9/wic9Nl0IV78fEN0TMQczNd1qdJCoBADHA2hkiADv96j7IWxQC2chdIDKgDhYCBdH1a4OiRdkZxcv0PsZc5chRFd8RikIs0BpdVc8DbCo
 
Mf5hJTV9cBtQFppwFDkTdIcW9HUfM8MXlZtbdxYKR2CsihChC+DRD+C6hBCQ9Ji3cwBnBpdxC7jqjFCRdZCWi0cFC09lD5REDRx1D8B8868HMJBdC9ty8DCa8Ni3d6914E1sY69581cO8Jh7DnCyMMpu9ZkB9N4EhAQeA2VBQRgb9Shy02NYIq1dZAj38HVQjdjwiV9204dO0JNN8ZN+1kjnk0j78Mjccp1IAZ1Cd51icKTwVkiSin8yjQkwU389
 
1qjajgCfjB0MB3gVTmjXk2i0V4l6ACASA702AH1gIn0JAEZW0kDRERiSMMCyQRCpj7sgMaDiZrDQMOtINakiCVi8DiBc8egkMjdtil9XS6De8nkptrdUEWDTjXtHCIzsS3sCS0BVlW5AQiTqwCsC4qTcAqE0UAjgd5SSgQiQzqCodWS196CN9hSIQeS1SlpUjVoscj9A4uSIBRSL98jr99MGypjKdn9yjX9Kit1LMUVYk9TygRhVxsVmBqxCBKwM
 
R4CHNrTB5JcyRyx7Thoh5tB+5hRVY+gFdhEyUlgZjhootM1StygAA1Q08OQ7AAalQDVGIBzBy1MOROzMRL3llXoOPg1QkGVUvlezVTqwAvQEa2gXRDVzA06yWO11WLIPWODPBx2PNjDIt0OP32ONjPGR9SW1wVR3VPW2ITDSPVvI8AOxSyfJfLfPO1jToQilICimTVTW5SSkvL71xPjJyne14HmFoyWVoy/OY3+zY2jQLLpKLLnwbTLLCOE1XyiL
 
EyuQR0kxDmdnrIP13wx35JbNU2Pxd0j07LyPFIKNJxXXJxlOM38SHNp0VKqLCQBiPRPXsLAPiRGBhDYB5HRXwGCjYGXOJXfVKRdKGEixGC3OOii3mErDfDfDo2Ohl2mPYu3N5SvIkCEDCFIFQDgECF+GYFQAAHbUByANRUAiBsJshCrUAJFXy4BUB9hhhRUzCUTnYitfyYjSt6tSJKtgLplQKuroAqQoLW9dd34LoFkB5CDliGles1jgEjDnYtjU
 
LQySysNML+lGCJs5tWCLICL/UiK1sQ1NsyKi8MqmBsrcr8qiqSrfJyq1ArrqrNQcx6qEBGqY1aF40mKWLbs2K8YM0TzeEpkHDeKUyu5R5P1mUmNcyVQZ8GTXSmT0KKyrYlL2TxNVL2zZMDqFNiBzF0jWzvlT8cj/kTLdMezCjpSBy5S606clTHKmcXLUVFwVCRcejnADSwj9xATVCkDAQ3x1zzz+pxj7xHjvF7sf1gMFiO94KYNrC5rDdKC5LmT5
 
9wyZcrcjjmD0Edr8RziXcuDA9eDbjih7injFZRDnBP03ijaPj/iE8Gj3hPi48AT2duaeKe8ZcXC+K5hvthEegqUTzRKfCCV/CpKgjukEb/IIjFLWpoiCMazCat9XZeS99mz1TBSDL2zjLI5TKybzKii0crKqdRzqb7Ki7giogpCtTf8+zFhGigDtSHJdSmbyhdhcBfgW7jTTTFhOaLSX0rSSVegQqPMPtBaLdHTwtkrB7LDoK8DsBKweBcB56pqE
 
K8CkNENK1FqbURtyy9iVasKmCYzNa4yuKgaky80+KFlh82VfbvD5R0JYbab4bFbEbIAFK2T19OTazMad9IydKU71p9K2zazM6nFs7Y5ybq6oVH9rKH6KjglqdG6C59SABHCgAAWRgHQh4ByD6IPBXP7tKTXNQN4HQPbgt3FG0AYxBHmA/AY2OgrhFsgCSr+ovJPIhPQAy2cnW1gFQGxSiiilQAAAoABpVulugASnfKRPyzXh/IPgm3/Pogq3Il6s
 
o36vAsYhIEfmGrdNGvOFnvnsXuluINGrloWu3iWq3rCOVvWu0s2voO2qPpKF9UIu/uDQ2y2wXg4fYGcm4d4YQH4eEdEdwAkfoo+rMJu3MruzPP+rxJPoYBxNcPxmJJHx+04onzEtwAAHF76HLH7lrt6WTkbo7lLIA47siE65MIGh1f7ki07AH46RSCcuzQGSdmELLijKabLizhy4HS6IxD0i8GaJym6JBAQi5dhpBVwfAArnN8H8ZJ6LxP1wrSHe
 
lkDqx/NyTKxAR2VARtnax3wldZg4hWGj0Ms+hUBsAfHasqqMsEhUBJBcYbmeAFpTh9ACBJHG96QZGZU5G/yFVFHAKerKIatb51Ggo4BtGQNxrCpAcjHfTZakL5ra8N7hsVEla1rVnLcoz1aD7PUFtdqrIXHkiSLQ0mczmLmrn3Abm7mHnVgnmXnSA3nQTQnLsE0Im2monkqYnXbuKuLEmRgiTh5JRaMb6pFYocm+nGSn6I7KyUb370bP7NLyc+S/
 
7D8AGCbynGncis7SawHc6KaoHC6X87KRzjXGdnKEHL0uaWb2ajSW627cB4CIDBikCJRbSfsR7VmsCzzg9XT0TP44WZqEX+skX4TzHN60Xn6p7aDaVVbsXsKNa8X7cSgdbOC3criDaw9m8M3RDQ8BCJDn5o8HbvitL/97abbmbRceW4mPbQa5gAsQQYqtnRXqoztaS5EYG9jw61EimSyY7Yi9FFWkiqmUicbMdU78aLijKmmSar89W2m871SC7Bzu
 
mTXenjXURP8miq7S35DNTt2QDxzrNJyJAKBTh9gWAO74DLTodrSFmaMx6SghbhpH3GHnScCrDdGr6Egdwl6ZbdGmY+ggyFb8mrGMXO442BloyRlcK7Tq2nD4nkyBE2VDzCpxqW22Mi4JWN3ZLQPmTX6qyOq0a4i1LI8v6k6amR26mNX1Lp0Z2dW53Wnb92n87OnO212gjLXC4OAEhdgAB5OYHkegGZsNyALJQhxYC8foMYi3HgdZ79iuNWGKzcp0
 
6JlhvlIvXbfbCvVADEc9tKD55qr8kwqAWRkrLu/50+QF5R4FqQ2rAayC+Y907939wNnXN+Ux5F8N1Fu1dFmBGxn+uxojkoBxvCxYZx/a1xykI6jx8oLTmElLPT0gC97B961lr6mnBsTlv6x7YGt2vExJn7MUdlWsQUDD3AIR7D2y0svDqNgjuV6sj+hpus4d3d0d3GgUydwyzTYmhjhded5jxdtdXxFd4u012y81wZrj+JfQVcKGbFHsGEPj9FET
 
oY+Z200sSVZ9sUJIMUGK4eKlbZk8ph9NY5jTheSyZgIQDIJqHYfQC67x2kVAJBvh8IQz5E/qEzsz+RyzpVIF1VezsFoapz3R6FyatzxCkN+WzYiN3zqN6xzFverak4sLpxvalbYlmLk6i7zgK7m7gMAwB7rhmAZ7171LltC7RihhZizLlhaJ3L0+57d2hJz20qY6b7dD9ZSfKRHsKr1dmryx/DyOt+xrhV5r8jkdlV2prrjO+jkB3Vpj2nO/Vjw1
 
0bzLkus1gZheIZ49kZgYrne19us95LgznB61qtoK1AN1/mz9T1zub15K311az9t+fAmpX2breFkxxF6HlF7th1Xeja6bZH2D/F7Wp3C4vWp4zNgQ7N/W3N6sS2v3a2pQ22kdv41Pyt2zhM5npDlCckz8aXIqKG7n6qVBvnmSvjaVnts5Qj2OprzVlrxOyX5O6X9Vqdnr2dS/frxXqUkd5dqm9X8b/n8umog99P/duundhuo91nE99AOADKyQK9s3
 
nutJW9uZweW0qlO3nzSek7+ZGXNEvAngX4SsBAUsP94x13hATQX4XPDXeSHz9DeH8DnDSDoLnCw+1Hxn/Lnlwrh8K3CzIloS+GTHkBXzLpV9auMrXtvaBKYQAymtHbkq12Vat8qOMvIBnLznQK9JSyvJdmx1yawNOOs/NyuUFQZCNdgboJZFDEdar89cgVLoEKGJI28VYEVSlIBDKiHkwMbPfoMs3HrMMGe2hTxkv0EaZYeQ+VBQKgHQgHBUGITa
 
aLliM7fNisP3UCANSAq2c1GALCCpozfTO9p67pU/uf0v4Q9ZqPvMxjJgsaRttG4ZLFlBxxYwdv+cHcLujwDSY93G2PcoBlhEECMxBEgqQTILkEU8GKn1ant9Uia/V00ggwGgh1rbIdDyxfD8P7VzJ8cIBYdavsvlgEDR4BiAsjkq3vxS90B7fbrmfl67y9GOuAljvgNV6D9Akw/OtJN217Tdyg6QayPgBX5ml+iBIXuhv0t5b9+aJUPgU+wtz797
 
sXmCWu6QQCkkGQV/L3q71XqVh/SKFQXq/386rMP+wfexijycF5deWOwwrgrnZSiItmSQ0vmxgyypCpW0AmvjDga7BdSmDfJAU30qZtcChbXajh3xKFd9uyA3JXpUOG6lEumY3ddsii7zDNEGN5PjswE2z0B4Aq3JAqshlxScqUEVURNoFZTzAsyNYX2pylU5ct1OaVdAMmDeZQhBGMIZMDCFQCSCII7wTJs5GICBDCsH5aRvIIwg/NzOc8X7kowv
 
gaDAeWgjRsxF0F7EQMkw4sNMJMHBsLUobJYVYLGwBdqmn/RNvNmTaQAIuGPEdiS2OpM4iRrQ0keSMpFHYaRdIhkS/Up4hDrsNPVivdm5bH0YhLPUGqrH6D9wB4ZXLnhk2xQXC8mywmAbX1uH18xejfCXi8LQFvCMBzXYBtgPKG9k2uA/QEUP2BGrsGhQMJoYiH0DMB2hXdc0ugBvZIx4ReSIhhdBk6YsRhZ5MYX6zwIijhQiocUQByQyAgEAVYmH
 
s/whwrDzcawpHpsND7KjEOOfArnxSHhjAh4woMRK6J8LBQPRegpRF6OuGRFimqNFSiRwxp5C0crwvGkUNl7asyhPfCoUN37LVDYxtQ+MWEGTFmhUx9mBgfUEzFCC1uCI/mlQ135CgosqyOKpWFLDS43MpUQ5mgUEFsNF4qDCkQIw7BTAiAbAY0YiU+bDRjObVX5ncKEFqD/uIFXkVZ20ECiNcx/CYVMIbEe8fSQbb3lD3MEQhLBcPawXKIYIbCYJ
 
oXbYSqJcFY1CE7gpnDCD/GCNAJUIdgKBICjBDwmFon6laKiE4ka2dogRL7VHjS4lYoAnwjCHHFdt0hLaYXnXwHbxFHhgY1AZRxDFrjMBG4iMVuKjGWUCBkrBUnUIZxa8kxJA9oggUgLG8Uu3gJfk6yBKW9u4G3Lsc+yd5vszyyI8Ybo0WLelpq7nf+GYK84WDYeL/YiYjyD7QcQuWwsPg7gj661028ffWlmyj5u5nJxQc2j0CT6R5N2UhYtk7Ta4
 
Z8viOUsyS63g6JluxINARHRkrAqxAs5XDsJJOjYL5pJSNH0bOPlYLih2zfIMSpNXGfJ066k0oZpIlLaSOme49jjTUIFbAt2U/O2sQErqHtQRuvcEc7RZoWS0orgYkcyw6EHhnWFvRgfeGySSdegLVIYas1fanlkqzA9ya708lYTvJkPSUb7287+8MKIU2xmRK/5Js2C0UtNnUBzbxTY+iUuoK+2KDEl0pKffKWn1ynltM+5vbPkz17F1tVYjbMqH
 
3HK4ABVOqQLxlEZDmpfbbIQ8NyEoD8hwY7qTjl6lhisB3fQaeA2jG6TjWY0vSatUml1Fp+9+WuszLmmuVTJ205wCtMvbMBUxNkl2nZP2mhVSkFcLcs5LOl/UuxaEjyVLS8nL0JR5BfyQRMCnNjgpTqUKfYPCmdjPpHBPIADO9w3EEpsUp4slLAALZQZhbLKRW2mnZSIZhUnab/12HOzEm/YkUMAMqnldryGM3DlOOxk3CWpovNqeLyXHqkVxnXNS
 
eTI0mUyzKC7A1iNxqE7pDxZdJmaqUhkzTx+OpEyfPw7KZVnAEiHyNe26E5i5mL4jbj9hREO88YpYicToyunyybpisgDtWDP46hpRRE2UW2K1kJtcWSo0jDMn4l58pcJYYkqkxOEZMlywdDtuNPqlPSmpgc3GXOPuH+jFJYcxsmO10oTso5jfcMbHJzrxz++tM2yvTJ+jHjZc6KegEYGUCYA3Q5fOgVeKQKVTERvQNyYsG25j40RpYBbM/LFBjxPx
 
55b8UelRmZVny1eIVJILdAcB7073Zka1VZHKC/mqg9RuoIB6gs+RjnS6fqgDYKz/2HnPyaJ1VlNi0KGsg4j3P3oOCPpBLHBJFzcGkUmcIC86mqGXiQLoFJpfyKaM4lhCOWEQthGk2dlDyz6oNIeJ+gvpLIKSAdeUJuF9lQD/ZMk2VkHJgk5DkcHU5SU2Tb49T6mu8imd8N754D/hspfccnNDp00LWOcvXo7KsnMBl+Z1FRheM6HbS1uI+bfiMEGE
 
0pVmxYiepKllmu9DBF/LZNWPwV4SVZT/eeTvRIlq1e5lC/uWcS+kGzTZnuY2f9ISV1BB6xQbuFbMwxFtbZE/FPDkv16wy/+fLT2t/NKiLISo5XFbtPJrTsdMZncgOTOKXmtTB2ocwmcuOJmRzNFNHadjHN0XbiE5AI0aRr2q6j9ZpuSsZdnPmlz8LF3MloVCGcC2LBZRUy3s4v6FuYtynivGB+30G6MKxYo3Bdf18nBLCFoSxqeEpemBc3piorWl
 
FP1nBxDZ1xP6e8QeVpKxC+bZ5VkptnQzcl9srPrE1tHDz2QRJYsHPSRnldVwMisHHIoXmNK4By8hAfjJUXPC1Fm81VlYh3mPC95fSoaSr0TlGL9JKc5UlnPJxsz05M/KZaQKWlc5+ZaYxZQ/McVIFVlRDKhgw1ly0pNlU8Sej4ouB7LMJRqbCT5PEgEKO5QUruZrNelhT3UEUrsam3iU/S4p0fE2fKpNq8FnAYwTJYzK+XgyoueUx2g7IZXFTc+Q
 
igRLRlHiLIawE8nwrQPbY1LZ5dS0VQ0qjpNLg5LSgMevOxodc9KXSj4UTS+EtN+lR8kabPNPkjK059dVmZP3Zlqlz5OVBAHlQLmaB4CQQIgHIA1xVRKUDk+8RKmrmcrtlI1K6bBS9JNy8FPKhDCCGA6Niwl9UwPhKu1lSrdZ/ykqbEJtCqxio5YIkpavlCJrql9JWpX7KxnyLMhWieFcosSKqKiZXUzpaTK0WYqdF/qnFVULxVDKDJ58qGIFH0AH
 
AVQPYGkhmM6F4NLeba/oSp3fkW4xQ2gOejsznrS5ywIwEEG4qlnppHwOIizkXkYVZUOGcapgJkDED5UVQ+ZRkVIyxhKD2qBGBRkhIgCoKEJ6C8DZgrLHul2s4GItfytummDjlIq9WWKrIW1qolOsxwZFLR6EtaF6orHgwtAUfrfgX6gfL+v/UmiOJbLLieEJ4n8LSpRSvYZ7WFAsoS0n4F0WWlOGPBIVk4gdTCqdVwrmlCkgmeOvaWTqvV067pZ3
 
zFI4CF1Bi6BsGuGUJijJkSc+ZWFXAqhMmr5TJtat3W4NzxEAdNV2Kk7dwIqtYeIH0GHyiJfaEoHoDxtFrRMzuBIwjFAGcAygLm7YDgMSGHDUBSehALjPc2EAsBAtAYBAEgwubXpyeAG8CUdJkxQT2RheMrCgvgl9VEJDEcFpCzwJg9YWBy2YUcvun4TTlVwgPhEvjYULcNVC/CoRrVFtcNRsXCQFSE83ebsAvm/zcwEC0vdgtUAULSIG623cotMW
 
uQBwro0ZdLR9PZjdEKbUCSbQiQGFlQzZ7lco2yoEOnDTrlVr6uiiv0SHLdVtLw5HSmTZkWKG+qFNkY6mTpKDUMyemJiv6BpvQA69pli0/Xt4Eups07ySyp2aZpozCh+h4tE9asz5q4i8YtvEHgWs9IzCcJQSkrSEsIkOrnp4qy5ZKrnnbE8w1ix0NcscaQBZV9ylJUbKeVW0HlIOp4ubQZAaqJpWqvVTqqhnaqYZjao1WVIW0MYwMgIRIeVw1zra
 
Z5t2wpjjNE0urxNSKmiT/XUWFDvVZ2ujr0vnVXbhpS61TQZKJVTTxlxK1ouYte12VlACapNdCEICpq1uGa28XmKB1wIRZLkienmvrncRC10OwVWTHgyIZkMIHaFecog7tjyJ0qgeT2P/59iiS2zfoE5rEnygndNq3tXav7X1LB1/OrISOsRVjrkVE6sXapIl3rj+p+8n4X3xpk3a6Zamo8erqtYSARgwQXACCFiiYAxxD8/dbtN4DrLmVtek3T5k
 
WQUMSovmMfK3HmC+Z71B/MkE+pOaadS80JfQilh7BsBlAz5GjWBOaoEYvubIlQWlr5GQbMt0G++DoNQm4F4NNuwJcVuVknKEdGGirRcvlFXK+5NygjTQoa3k4mtHguLAPu06HYR9Y+v9eNrCb0buFzHbLpEJm18SAVxqlCE6IWQklO1UiX/D2ukqQCoVQml+rJN9HyTSOwuqLhHJO1Clo5ae7FbLtxWDKFdhK0xVN3z2FwTgWu3Qhrm7r0DZmB68
 
zfMiVgRUFkgEXmls3LAX0ySd6gBcIlSovqF4EiIgMyBJ6bsoAGVQLYEG2Ak8JITwYAk1Q+7AboJoGzkdZ25FoL1UfInLRDouD5bbdd0nfehpIWYaJskS6rfWrw1djVRrg4jXRKPScHCA3B1ALwf4PFUuMpAYQ+QFEP1EWWVPc0W/t+Ef6+FANb/XNsBXnl2disQ8uVxxCgH7tW2s5XzsXkC6lFcejSodo3mert5KevqX6sU3oHF1mB3nSGvU1OVc
 
DFKrmbHh5n6dL2BB77WtxtJrKs1qAUnS5q5aJb6pMFKHVvqFVobndkB6tZVrsE4apJqFDHcUijYUT8NuOuJfjuVWJKidyfB5c4BqN1A5ghtP3AW0+XSF6dPy/JY7MKUuyWN+JARGzzvWfZvs5XXoqHrAPTiRNMesTXAfj0i7qmSekmadtT2pHLt+rQNfLqyO57U5FdVXb8UjVkq1d+R3OSxCQbpi54l47MYKN+3BVbSrcKo4pwAW1yhRM9OegvUM
 
3Ibm5cwpDOWvXqPSIjCPN3eQpD4GGvdcMn3XW3FCLIWUVDCRbmQABWAmhqeVqj1RHzjguy43Eck1HbpNSR2TT6ql2oGZdzxrPa8Zz0rq8D8SQE2eLIMgm91Jm8Ti/NPCsCVmncLMtoGOjKxKxisWjC+JYP4j2D5QUKEIdQA0Uew7o8Q3AoA3fckF8+8DYvtUZZbNUq+3Le6X0bIm1DqGuHbvrVlaGD9yOo/ajsGOGHqJUXK/Uzn1P2HDTz5Y08/v
 
S6hDaexIXhRxW8ODyf9zO2YFmXJIwtEg5XJsKEc209GXdkR2FcyZiOryJNCeqTbcanX3GUjF2rSekeU1GsT57x/prkcaGinyg4pog3CLmbuFbxlYe9c+yHiVhe4+3V8G60lnd6UqfeheFgEdzEgsgVgfAKgG/hsAkMAAbgjPYpUArdC+KgB5BbooQIgN7qaabwsjTOs+y03BJs7yGwKih4Hlgp+CqHmjpBVo5WpxNv8dDVWgk7VucH1bjDjWkjUe
 
hnOcAdoC5pc9TBXO/B1zW6zc9ufOp7mdQB5wIHFto0v7Jt3E6bYme93FKEZlKdlAKw/Ejj5QG0ySjzpw6yL2jO251cWf21rz4jHq8dv/WSMoHHjtZgU9dqFONnFdOB1s/8ZmWFHeZaYwE2UddYoEDppSMLMdPt4AKtT95smM6cMaFaYd2+5Cm0cj11ybB7ugjPavQB9GsdJ+nHRADx3egHlMfD5WMZ4KiEXxlOqPNTpLYkq6dNOhnYavhkCJVYmp
 
4sNWCAPVR9AdUyi9Eb22uraL7JhIwxbVZMXtF0utI2xbl2ZHhT2BpYxMvsuZzldkyzmbnISC55kwkgegDyB+0kHH53Z20vZK3IAHz1F0d8AKw/DRVJUE5okruSnPlBkwcJAuc5BrzZU9dQQGyOuZyqPduGL3fxuEHXMdbrA/m7nIgFFiJYtzeYOABfGYDrnBDYZqYOoA3NNRTgthogDnhYmmRjzZIafclrn0DVggvwQhVRDtPiQ7zcG3RqymrAIA
 
+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=

%%