SOURCE / PINNED RELEASE
Made of little things.
Nostr Bubbles
- Release
- 7cbe667aeaf1…
- Author-recorded commit
- Not provided
- License
- Check the original source
The hash-verified playable HTML, which may contain bundled or minified code. This view does not execute it.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" /><title>Nostr Bubbles</title><meta name="description" content="Live Nostr activity from your contacts or popular relays as bouncing profile-picture bubbles."><meta name="napplet-id" content="nostr-bubbles"><meta name="napplet-requires" content="identity outbox"><meta name="napplet-optional" content="common config relay resource theme"><link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAABfc0lEQVR42u29d5wc13UlfG5Vd09P6AnIaQYAEQgCIAjmpECQFCmKSZGyEuUgrbVWsOi1ZclyopO8tnelz7uyvbb3t5JoWRYlSyIlS6JkMUeQIECARCBIImcMMHmmu6ve/f6o9N6rV9U9iNODuvg1uqfDhKo6554b3n3EzGg0I1qTmzevbaHF4nxiWsbAUlg8n5g6GGgFoRWMTgBtAPLILLMTtyqAIRD6wBgmYJiJ+yFoFxG2MXibIGvb3r1DO5gfcRoOS41AAPPn39bFjvVWAq8hEtcx6IIM2JlNNKIg8BZm61GGeJhy9PiuXT86nhHACVpPzx2Xg8VdxLgewGoAVnaNZdZAJkBYD9DDcPnbu/b/aF1GADWsu/v2uRbEe8H4ZR/0mWU2WWwrCN+mqv31nQcf3JERQBjPE/XMueU2EH0WwHWZp89s0isD0CMAf2X3vh//B59lAJ41AiC61+qZ89ytAP0hCJdl10Vm56BtAvhvdu9r+ybz/e45QQBE91rdc9febQFfYGBpdg1klhm2AfSl3fsuv4/5j8SkJYAFc++4RJD7VQBXZec8s8x04xcF8Mm9e3/87KQigIUL39XpVCr3EvBJAHZ2ojPLLDlHwIRvCrZ/a9++B482PAF0z731gwR8BcD07NxmllmdWgA4TKDf3L3vR//WkASwcOGaolNp+e8E/kx2OjPL7ASJgPi+qiP+68GDDw03DAHMnXvL+TbofgCrslOYWWYnbVvgWnftPvijl0/1Nz7lNff5c279iA1al4E/s8xOmV0AWzzTPeeWD09oApg/9x2/y8TfANCanbPMMjul1kZE93XPfcdfTrgQgIioe/bb/wZEv5Wdp8wyO+2Zga/u2X/VZ05Fz8BJE8DKlXcVBo4PfR3AL2UnJrPMzph93y6MfnDHjkfGzhoBeOAffBDAzdn5yCyzM24PtXeV7nj55fsrZzwHQHSvNXB88L4M/Jlldtbs5oHjA98gutc64wQwb+5z/xPAXdk5yCyzs2n0/u45z/zvM0oA3XPf8YfE/JvZwc8sswlBAv+1Z87bf++M5ADmz3n7R5joG9lBzyyzCWUM4EO79/3kW6eNAObNu3UpsXgBQCk73pllNuFsyGb7ip37f7TllBOA19vf9CyAi7LjnFlmEzUawMug9iv27Ll/tJ635+r9vs5Y01dBGfgzy2yCBwIrCf1fBvCJU6YAuue+/YNgfDM7upll1iA8wHj/3gM/vf+kCWD+/Nu6RNXZhmw9f2aZNZAQwKF8U3nZjh2P9KW9r2YZkKvVL2XgzyyzRksFYKYz1vSnJ6UA5s+5+VIBeg7ZGK/MMmtEE2BcvefAT9eOWwEQ3WsJoq9m4M8ss4Y1C4T/ndYqnFgF6J711N3MdGV2DDPLrKHt8nmzn/oggH+pWwEQ3WUzWV/Ijl1mmU2KjMAXk1SA8cnuOf3vBTjbtCOzzCaHLZs3+5l31UUARERgfC47ZpllNpmMf5+IqCYBzJlz020MXJIdsMwym1S2et6st91SkwAs4LPZscoss0mYCSC6J/ac3AfQ3X3DXLj2LmSlv8wym4wm2MrN37v3x3uDJ5QyILv2RzPwZ5bZpDWLXfcDAP7aGAIw8MHsGGWW2WSOA/ijxhCgZ/aNlwtYa7MjlFlmk9xsXLx37882KAqAYWcDPjPL7BwwFvT+WAjA4BuyQ5NZZudCFMDXKyFAd/fbp7AjjuA0bBaaWWaZTThz88XqtB07HunzqgCueCvAGfgzmxwezrbQsvQ8tC5egELPHBS75yA/ZyaoWASV2sDFAgQAZ6SM6sAQnLExjO07hMqefXD2HEDltZ1wX9sBCDFZD5FdGS28GcAPcwAgmNdQdt1k1sDWNGMapq+5Gp2Xr0L76hWwW5vB8GZlC/YWxnv3gOvf2+055EqtcAAUzuuBw5fDZcBhRnVwBOWNW1BZvxHuY8+Ce49NLpKEWAPgh8TMmDf7bS8BWJVdRpk1kllNTZh5/dWY/Y41mHLZKpBFCNraGAAzewQQkkAAfobLCMHuAnAYcJnhMPyb97jKgOO6cNZthPvzxyCeXAtUq41/8Bgb9h78+cUEXJebOys3AiCfXVKZNYLlWoqYe8eNOO8j70Zx+hQQAJKAHxKABHzBrHh/NwA8IiLQwe8wewTAQJUZLATEsT64Dz4E8eBPgeHRRj6MlX0HnVaaO/eGpXBp26QJbpqL6LhkJUoXno9izxxY06aCW5pRZUZ5cBSjR3sxunMvxl55FfzSK+CxcoaoRpGtuRwWfuB2LP7oe9DU0QYCReDXGCDw/OwDPwQ/A66vABz/cRz4MvjVe3ZdwHHB/f1wv/0AxI9/AThuYyooIRbTnJk33U4kHmz0i6N5zgx033kTZrzpMthNBf/kA1X/BFcEo8LAGDPKgjEqGGOjVThProX70MPA4aMZwiawTVm9HBd+/hPoWDQfNnl4twAQRdiHIv+hyX9WvL/DPglAlf5VzftXlccMVzDYdcGOA7guxO59EP/0TfCmLY1HqKBb7VJp/h0E3NSwcWChgPM+/E6s/M1fxtTFPSgWbBQsIG8BOQJyRLBAsCz/ggGBybtK2LYgFnQD11wGytng13dO5sxvw57fFf/t41j9u59Ay9RO5Ck4r4BtEXJEsCm6V24gWARY5J13CxQSBgX/FPkQPWbpOQ5JhTzHAoCCRXRtrbDefAXQ0gJ+ZWtjXT+EdXapdN6vUIOu/2+ePQOX/vFnMe+qi9BiWyhahCayUCBCnoC85V0IwQUQnFMG+SeV4TKBiYAF3aDzFgCbXwUqlQx5E8BaZs/ElV/5fcy7/mrkiTzg+6DP+V/bMiFoN4u8qZgWkaQWAvgHIKAQDVH+ICIBT0lQRAJSngEBETCAxfOBi5YDr2wDhkcaJRG40y61LvoUCIsa7eJoW9iNy+79LXTNmYZmi9BkUXhfsMi7YBBcABHlMXmSUJaHDlkAC6C9DbxiGfjVNxrnJE5Sm3bFRbj2//wF2rtn+16fQhLI60QgKQEruEdw72Hc8/4k+XjJ60skELj8COxkvPfex+E9MUCd7aBrLoN4YxdwpLcRFECvXSot/CSAeY10cRRnz8Cl9/4W2rvaUPSB32wRiraFgkQAgQcgAEySjCO5LMRwQGAhwEIAhRx48UJg42agUs2QeBZs1nVX48q/+jyKLUVPyQXe3yeCnPy1Fff+VnAP+N7f9/sU+X5NByjeXwW8HAJIjkMiAQrIgBnI52BdeTFw4BCw7+BEJ4DDdqntvHsAzGiYmDCfx4V/8Gl0zZ6Ook0oEqHZJhRtSQFQRADeiMPgxPmloCARhCAT7BEBuwIkBJC3wfNmAxu3ZDmBM2w977wZl9x7Dwr5nAR4hCogAH3e9/yJ8T9FMb+nAiLIUyjxZSVgALwWAgiJHIIKgwJ+OTdw8YXA8T5g976JfLj77FLreZ8D0NkoF0j3h96J2VdejKIFNJHlgZ4IzeSrAPIUQI4iORfVfX3AC/JKPsIv+QjvNbgu4LpgV4Cbi+BqFbRrX4bKM2Qzr7sKl9z7WRRylgr4MASAQgpRMhAqCQBh8s8KioWkS3/Z+xtkvhQGCEkBCOU5ioM/+CAYuHCZpwL2H56oh3w0B3CpUS6QptkzMfsda/yTS2ECKE9AgYAmC2j2vX5FMJgITnihsCcREVUDyE/3UKgPpYuDCLhiNfDixkZv+GgIm3LZKlzyF7+NnG3DBmAjAnmQz8n55zy8IUjwqm0ATB6AXV/1yec78vbsAz7qEwibhgAIIrhgL5fADBcEi7yvLfa+pxtcM2SBSHjJZOlGlgV87APgkVFgy/aJeNhLFoC2RrlIpt/5Nli2HZ7wCK5e8icHoGARWizPWwSAj8o+at6HiOJ1ZPmJQgF85aUZOk+ztfTMxqV/80XkC3kN4EAOnkeXQ4G8H+LlQ/In7eaVgQsBeVgm5RCQCYWEE3wdqIfAWURqQv7aSzB6QFeBD/ITjkRALgd8/IPgaVMmLAEUGiL2by6i8+rLEsoxUc93lYGy8Jo5hCTf1OKNn+n1e8WVV5TNUhm8YglQyLqkT1seKp/Hqj//HAqtzQoI5XtTKBAQQVTyBQrBLSQIChVElEikkFzCm1I2rAF8aE1Ifm5BBT/U51qaQb/2fiA34cZtFhpmCXDLxSuApoKSkRV+XF8FUBWMsgBGBGNYMMp+95/X3slhsi8iBZaIQE3kBI+ZAeRzED1zM6SeJlt6z6+i8/xFCthkUMq3nATiPBHylq8ApMRvQAgFiSS88MGbgKt7e1vy5lHjEPmgpzCBGIYRYWNR0IJMUS+y7PnDBiP/uZ554DtvnniOtWHi/+XnK4m8KjMcMKrMqAjGGHvtvSMuY9j1SGBUAOWwnTNY8RX1f7uISIGFAAckIEJWAAsGz52ZIfU0WMdFy9H9nndEDTvwwed/bQJrTsr75EPQI7wFDWB66dAjFTI0CkFLGvoeXsKx3HKsEIHi+aUko0wCUg8K3nwlsGh+RgAn9Iv2zPV7tqNlmhUGysLz9KO+5w9uIz4pjAmv978CRlVEq7tc7QYhPK8vBJhFpAiYgSmdGVpPtfS3bSz93K/DIgqBpchtCZSqVCc1FPBLgkH/R5ADkGN+VUmo3l3++UEu2JJyTLK3lzGt1BJIA330V/oVCAq/mXjPLWDbzghg3BfMtKm+1AcqzKgIL9b3PD8w6nqgH/YVwIjLGHGFRwAhEXifrUq3YD04C/bKgEIAQVOQ6z0Wba0ZYk+xzfmlO9C2eEEMXGHnnhJ7k08EqiqI4vuoEpS31K5BOZ9gGWL7yNsHREAxoCs3jRAgEwEi2R9XAP5rs2YC11w2Yc5DLpYcm6BWbW5CRTByFmALwLYBEt6qHibAsYCcG11AwbLPirQSsBwqhkhBVAX8lV1OCHwZ/MwCIm+jUY5TI5jdXET33e+JvGjMy0YNO5ZEDJbU5aeUCn1CID+cc/xzJS8DDj5PrHl7TgI6hU095H9OXzJEOvA10BPkZiOp7+DGa0HPvTgh1pzkGuWiqQggx4DNAAn22NcC2CW4FiPPgE0MiyjM8Lvwmnwq7Hn+sq8ayuzdqoJRhbfG21vi6d3guiERsOsCws1QewptxntuRa6jZAASqc9RHGyyNA9Lhb4aID+nwyAIv3ZP8K4J4qjngzjunMOfxzrI1SdNTt24JtmgDcIPtzRDXLka1hNrMwKoWwGMjKKSy3nsbRHgejPeXMsDeeAFLPKLfhy1/FaZw7AhmAdQ9isFXK2Ga7sDsLPreorAVwU0lq0OPGWhXKGA2e+/rRZU4oAjM94ClZDzwwQWHCXtYl5bbgaC4t3r+V3SIM71vEkyfvOVwDMvAo5zdgmgUYStOHAYY6WSp+3hzTAWfgtv3vK9ASNc+cfSYp9qEAbAuy8LxpgAXMfxwO844KoDdjwy4KAd2BWeKugfyAKAU2RTbrgW+anmphhOeE5/ntlb3OW9zmD2uvYEkLhsN/H7J5zY8ZxvPpE3lVohli8BbTy7g0QaRgGInbthLejGWKEACIYAwSUOY/8cRXGeTgAOfBUgolDAcV0P9NVqqAK8EMABqg7gVMGuRwbW0eMZck+Rdd18nRGYUbMWKb0eIGklHkm9+AxvVSe8RV3MnicPzrm35JvDRTvB/AcTOSg/L/Y8pxMSp7CIjnz9+69enhFA3Sy7dTvEtVfAAjCWz3t1fcuTMF7bL4cZ3JA0OJr9Fox1qjAgHAn4IfirkgJwwnwAOw7o4JEMuafiYps+FW2XrFJB53/BCtA5WoEnvRb26lMEdJL6+QF55Fc0AzBs/uJoFkT4vTVQR2TAquJIIA31TZyAd+nd0g/kxQvB7W2ggaGzSQCNIW7FK1tgDw9DtLSABKOas+HkcsiBw1qvBQ6HPsCfA+9KF4QQwgO4LPd9EhDVKrjqhwPSDeUy7AOHkFUBTt7a11wD2Jbi0VkCZ+jhw8esJPRs8pWfD3y/BgTBBDda/OkNeQm6P30noCz0gToUJgC8CEMKGJYGG8iAVeIIH5kYI0FT8PmLQM9vOIsE0CjX9VgF7tr1sK+53C/T2WDXRdWy4Ng2YFl+eYdjTO693w2z/Qi9vkcGoloBV6tAtQJR8QnBVwTWG7uAalYFOBXWcukq31tT1M5NmkcmbY6/n+mXy3kkhQseoL2JPMHqXCGTAKLBnx4RcLRRCOSv46pAaIBPJAaD9w/BzgaZIQc9C7uBtWeTABrIxMNPAhevhFVo8hZWuC7YskA+ATCRluAJqN9VSUDz8lytApWKGhZUHaBSQW7L6xlyT4GRbaHlwuURwHxvzswQRD4gyZ/f7+V3bMn7W/7SXPKBD837E7wcQDTqjZVhLw6i1u9QEbCqCIQ28Ude/688DlUCK2tIlK8VQpB1P9T1JwvmeYkrwRkB1LTeY+DHnoF469UgNweyPfAzUUQAahLAm/XHHHl/AwmgWg09fwj+ahX25u2gbBbAKbHCkkVAqVUd1U3xdfihx/fBG3TvUajuAuEfef9IFURgdQMVADUPFKwFcaVkoQj3DohUAXMQgkSvR0nFiCjiC8g04LOuAlT9wE1N4JnTQAeOZARQVzLwPx8Hz5sNmt/tEYBlA7al9lxLiZlABbDw2nzZiQgAQcJPAn7wmA4dgb35tQy5p8jyixdEXlQHPnmAjYDvD94ImngQxfzgAPzBeDfyuvlIjdGFlAPSd/uJFoVJC8KkdSG6KlDCAy2pqKwk9X+4SQmwDPzwOf/vmZERQP3musC//QD8qx8Ad3V4U1csy7v3xKaalglyAMKv6/sqAG5U9gvCAFGteuW/wSEUnlkPElni71SZ3T0nlPku+/Ke/OReIPsD4MsLcjg4q1JlIAwXvMYv+X2QEntBzK9v/yVvDOJKqkDUQQR6eACWVpFKN5bDAJbzAdJz7BcmuzqzHMC4bHgE/O0fAO+9DdzRDiILLE9lkbUgC2+hDwf9/VEykKtOFA4E4O8fROGpF0DZlmGn9kLrngeXfS8fePwg0Qd58Q/DYtnrqzG/LP1dyOPd1PRbKOtDFaCGAjE1IC0VD7+/TxB6eBAkEc2Ar/WcIh28mZVTOs7aqrxco5a36PBR4P99G+L2G4HuOQBZaggQ1GmEz74B+AX7DT4iKvm5LuBUQYeOovDMBlD5zIPftmzMap+HWe3zMK1tJqa1zcKU1hlozZfQ1tSO1kIHcmTDtvMoWEWwAMrVUThuFY7rYqjSj6GxQQyV+3Fs+AiOjhxE78ghHB7ah8PDe+Hy2a1kWLOm+WBn2Ew+gPU5e6T1/EcxvyfmPNXgAdFXCgyQ1ssrx+hBnK/vACz3CsTUgKYAXENPgQhkPXO0lNx3OGGskEYMEoFwewlnC4e5hnYro6OwvvtjiMsvAl+yEsjllD4AlkiAhfDUgDz513W8jR4rFdhb30Bu6+veWPDTTV4gzOnsweKZy7F05nL0TF2EOZ3zkbPycuQSxYmQM8dRh1yRmsHcDDCjvbkT3O5dncF1GLy36lSxf2An9vW/gdf6XsGO41tweHhPrMvtdJpobVVKe+HSXJYTfSwNa5WZXJP+CPIE/udYfTeHyTtIKkAFflQi9BeNQZ4ToRJCmG+QS4mAv3q0FgmI2uqg6eyNnGtsAgAA4cJ67kVg4xa4l66EOH9xNHstTAKKMBTgYM2/64IrVVg79qCw7Q3QyOnN9rcXO3Fh96VYPf9KrJx7CdqKHVC6w6CCPbhRPHHsPS9Nn/Y6avyr3YLanSKAfC6Pns4l6OlYgqvm3QxmxmC5H1uOrMPmoy9g27F1GKr2n97z1FyMYnyWknxQk3yB1yelLTgCfpDcsyhK/pG0kx/LeYC0TUH9CoG8G7ArEYILjg2NCRWBD341xNRJQAO8SCGBfEYAp0QN2E8+Dzy7AaJ7FsSsGeCudqCtBSKf91b1lSuggUHQsT5Yh3thHzjqrfg7Tdba1I5LFlyJKxa/BRd1Xw7bsjWpSspVS2EGGYbeVMONpIwXa2lwIHbPweo4QSg1deDyOdfjslnXQwiBHX1bseHw41h/5FEMVvpOPU83F6N1+ajX68stweyXDcmvGHigt/zjIH82vjOwYVvwQAEopCDnCaARgZQTYERzI0LnIiISEAyWiSEoRUtl6UAhsL+b0FkjgEmX53aqoB17YO/YU/Otp+NvJ7Kwct5qXL/iVly28Brk7FysMAGpXsExsJLk+TmdAHSSgKQGZMBLbpGtiAQ89AAWLJzXuRwLO5bjjvM+ju39L+GZAz/Gy0efOWW5A5fZl/vBmg3Z62sxP6skEGzCIdf9XZb2BGD14MqHJ5DrtbcGZ2lupEoIcrlQHh+HYI6kMk5ODgF8EhBpJOA/nymAxraWplbcsOJW3HzRnZhWmhEhvAb7kEn6K9IeNfpQDY8DcAchQXCfQgLBa7Zl4/zOi7G04yIcGzuEJ/b/EM8dfAhj7sltluqMjMHqKCjlPSv0+uaYX24bFmC/TyAAPiuz+/RDK3fvRaU8ltaGsKFHQCcCrYGI2WsSkr1/kAfwPX+UF5BIQHockADLJFA+e/Mmctkil5OzzpYpuOOyu7BmxTvQ0tSiunftISeRgBTPJ8X86nK5GgSAKCQI969LI4Fgckb4uvfFlOJM3LHw1/C27vfjmYM/xWP7vo+h6omFB2J4FE57SZH7ck+/qdwXtd16oFeTf+T92qQO6JQX7YTde5L3l5N5qgKIqwCTGlCBrz72gC7lmwLgKyFBBPwwB1AuZ1WARrNSsQN3XH4Xbr7oTjTli8rUGnl6Texr05oRmAFNHK1zZ9YSfgw16ec/ZuFVRCPvL3l5nQRC0PsAFNBG8HggLOZacd3cd+PqWbfgyf0/xOP7f4ARZ3B8BDA4BHfWjNDr14r5Zenvat4/KP1ZkBuFzIdTLd2x0vXnaIrASegTCNQAGwbGKsBX1ID0Xj0kYDWEsMbOqgLIbFwHzM7hpgvvwPuu+Shai63h1Ucm8CeEAAoRmFQAG8ICIRMBqetRE5J+YfLPJ4FQCZBKBCD46yn0djqKxl4DaLKLuH7ee3HVzJvxyL5/x5MHfgiX60ui8sFDwKIFcPyOTdn7Q3nM6k687LUD66U/iynm/U05AJYagiIVEGX4ZRWgEAGklYSIS38OFpilqgEN9EpeQEoa9vefRQLIIoC6bfWCK/Araz6J2VPmRqBXN4FBmI+uY6ickvVHSmwfy/gH76HUrL/q8QlsReWyGBHIz+lTOVndQrs514Zbeu7GZdPW4MGd/4zt/RtrK4Dde8BXeeOwXcuKeX9Z+gvpcZDxd9kf7c3B7H6OhQCmHIC8rNeV1geIQN5DlfyO1DMQxv9B+VhaTIYENaDmAlRlwPJrQYs6M3Cs/6xF4pkCqMNaiyV86E0fw40X3Qp5K7hoBHzk9mPgpxqlB6kUSCxNoqmV8JNjfQEl6ReGASYSCOZiB7+a0AAvj8wNQohwygJJc3sZ01rm4Vcu+ENs6n0aD+z4p9SwgPcc8C5435t7SsAQ8/vLg9n3vLavBixNAYQbvrLhmCtr+lmZERB2B0LaMl5WBHp5ULAi/WOP3YTn5ZCA9XKh+jUdP5sKILNUu3zRtfj1m+9BR0snYEle3we9QgS1wF8jARh59YSsf4JKYHjdcHKCIUYCRtkPFex6Ki34HKvAhxLBEy6ccg0WlC7A93f8A7YeX2dWADt2ed5T+hWqlj8dKCb9vccWk79ugKMNO33QB5UAOaRKqwSwngNANDIu1iYMDfzSUvKgixSu/7zwx8YrwI+HB2lVAzp6LKsCTDQr5JrwwTd/DO+49N3RGiPLB36C/NcTgZSOfZUEYgA3EIGWE1C6/gSiwRJWRAIgnQik3TGQJv/1UCACvqwFguRdW74TH17yOaw/+hh+uPOfURHqegp+fQd4YBDUXoqm6PhKIE36C58IXD9FYUnJv2A3n8QkoLT7cywZKOUE1AYhTxEIIa0fcV3N07tKDiAEtytqA5+jDWdYCNBYGdbRY1kVYCLZ3Kk9+J07/gRzp3VLez2SpgDU5B9RAvgNIUDoYw2xezzzT+rk2VjN35f9YUZcJQEjEQTvSd3/Sn2dETQoqcCHUtAjrJ76FsxuWYBvvfY/0Tt2QCIYAfHyFlhXXhor17FthdN9glmAFgOCIiKQ+/6jBiCONuaVDzFrLcFANCVYzgFoKiBQAIqkd6WNYuQcgK8CWLoP1AD7S88TE4Sy99+7v8ZU4dNrdlvr/D/OIB/ZZYuuxhfe/SVMbZ/m4cDyNiLx7lNuFD0OVyZb2r6RpL4f0ufkTWVhuAcFG01KlQZDCpz0OKSeHWvqeZ2lra0Mo7JlD9Zit2P1lLegd+wAjozti75jewnW6lVQhRKH5BGJG9IkPMUGc0Rr80lZw++G28Bz2L0XynpESb6oAqCuCwgkP+SdoQJwB/I/rAK4oRpQwgAlKehGsyiCr4PHrgv7pS2wjvRmBHC2jYjw3qvvxsffdg+a8gUJ+HHwW9p9jASSwG+41QJ+PMeQkHDUMF91+rDv8L+hf2gDWorzYVvN9WM/IWHJxufY+Dhn5XBB15UQ7GL30DbvyaPHYL3jxih/IlVDQqFACUSgPSekWQLBvWv6WgK/K9f9oSYABfuS33WVATLqPEl1nkRMAbjCECroasCNCMJ1UHj0GW8fiiwJePbMtmz82vWfwY2rb5MATKqX1h+bQIooR1BXFUCv5evSPikJCFJDAi3RV6724vF1N2O0vBcA8Prer+LaVT9DzurS4n2D1Nc34OPodeJgHy1d/ntxe5CI9Gf0wALhhjl3YUrTTPxo9/+Fe7wP7qZXYF+00gtxbHl1nM+olgXh3yxmP/aPGoDCCUBhHgDGLEAsh6rlAOQ1/aZ6fpThd6VQwPf8IfhdKR+gqwHXrAYkgrB27wNGxs7utX+uK4CmXBG/c+ef4poL1pjBX9eNopumAizd41taOOB/QRbVzC0oeQZfAph6DjZt/T309j0dfu24A2guzkVH28XjDwV0j8/J/t/4PzNmNc/HrOYF2Nq3Diwc0OWrYz899luwusNvtLqPYvP9XdNNUgJhbV9SBFEZz40DPwb+wPNHHjwEfFI+oA41kFu7Adax/rN6/efO5RpAU76Iz935Z7hwwcUSKMkYo5sVACUqgaQqAOlAMi7+YWOLMDNAcl2ffU8sot+vt28t9hz8dhzH7CrhRK0bJyQEiVQvH67b52hRD8sLfMj7HZd0rMaHFv02vvXC/4Y42gtMnQJiG2wzSFobT0KAfSUAIcJpz+HEZ4LSAJTUCQgYiihy842+mk8qz7FWyksLBQIlYFYA0mNXUwNDI7B27D3rNbhztgzYXGjB77/nr7B0zvJ4sk/2/kYCoCirbvLWNaoAsWK1VgGou9U3KOtZfrnLdbBx8+eVba0Ca2tdIlUBlBW3xlCA0kiB5YEdPthJAz6rYQKD0dN2Pj7Q/Rn8608eAT7wTh/0kfQny/LALxOBEN73lmQUE0nNVykKJhy/BcNwjviS3pqhgOk+AL/UH8AmNaCVBXMbXj6tsyiyHECKFXJN+N07/swDvyzjKRn8IdiD8EAnAEmOE9VQ16wuA1YX+8h9Adqkn2AVX6yxxwPwG7v+L/oHNxt/ZHvb8jjALZkEDGCHShByRSIEO2vAD/IDhBD4QfmQQehuWYz3vcG4v38AaC+F3p+kEe5kaeC31Iyqx0GE1GYLSWYlT+gR0tRojjr16ggFYiGB1BgklwNVQvGbiUZGYG+dGCPnzzkCyNl5/Pbtf4IVPaslOU8RoKy0kp2kEGRlQGmxeo3YusawD+ZoHj4kUaAv7BkrH8GWV/+HmfDyU1FsmuFd9HVL/YT3KdzmtRaHjzlqGJZJgSl47KmHhfnFuPCJHdj09hZpsCYDlvBUgLAAy49rglAgAH9APlTD+yvHzDygU16kE63o4xgJpBFAJO998Cv5AFfbkMb3/us2ndXM/zlLAESE/3LDb2H1wsuVuVSJtXrF+5NKCEkEUKMjUFbnuufX6l1ap5805IM8JRB+HwG89PIfoOoMmL1/6/njl/pA/H2QXjfF/IoygEQCiMIFfxLQzVsWYMfKQxic0xp5fLZCIoAgnww08JMecyE5CxCGUdEs/ogERCIJ1BcKSK3A0vNy23BAHMr37D0Ge8vE2XDmnCKA9155N65bcbMGeDI39cgy2ZDdTyIAkjyTyUHFJwDVmPSTNMFHat09eORx7Nn7g8S/u710QWICkA3PEUyEEJEHyWEAyzCX/vd39IESIkT/2wzc/ngX/vW9I2Db0qS/Dn7LBz+0LCxCxSFXAZVGJWaNCKJQI5zYq8h/QyiglfLCmN6NSoRyTkAuAaoKwEH+qRc8IpgwBHCO5AAvW3QN3nPl3fVlwRV1QKkdfEkVAaOD0seAyYt/hLpxZOosP6mXX7gVvLjhC6l/e3vbBea/E7oCiOJ3EyGYwoAgFid/co8U+YekEQKf1de6D+Rx8focXlxd9cDPftwfgt/ylZdQY/7gZ4arlckQXsnxv4EAYiQglF2kaocCKgFE925c/vuEYG/aBvssbQF2TlcBZnd145M3fwGWlOgLvX9qpx7FVYHm/cPwIGGNQGIVQE8AEqn7UQPGMV6h+c5x66t/j8HBdEmpKgAKW++4BiHooYApDJABTeQ/ZlJoIGQ/kkjPf23N00XsnTmGwzPJywGQBbZ88Ft+ElCo7ZKRAkmot7IaBsT36kshASUfEE8Kyq3AaiighQRSCMCugHXwMHLPb8BEw9ukDwGa8kX8zm1/hpZCa2zBS03wG/ICUNQAxSsBpp6AtCqAcX0/q0t39WW9PoiHRvZi8+av1Mx7lNqWGhWAAnYYyAAaEchhAGQSUGjAmzkQkFtCaBBUOXKuhTseKuHr7z2OStH2438f/EIt/0VJQKhsRElJ1sj7s7Ynn0cC6nReJR8golV7iIE/ORQwhgSjY8g//DTIFRMOH5OeAO5+86cwZ0pPYh++SfYbb2QGv7KQxzJ7f3nn2lgPgDHpR2DB8fX8GoG98MLvwXHSp/U2F+chny+FKwLDlX1yMhDQSnycHAIoXCCDnWqCXdEEFFUNpgzYeNePS/jOrf0QeVsDf7TlW5gEVGquaVUWVvMAwWackveXx3irY7zik330UEBXACYioEoV+V88CRoanphVsUkd9y+8FjesvDXWoQdtEU5N7x+rDFBcERj6AvQ8gHEEeMLy3oAEYmO7fNu/72Hs2/tQzWPQUbogXeYjOQxgaCGAgQgisHM03CQF7ApFhP1OhJ4DBdz+szY8cNMAYFvg8KAKrQKA+gjAVAWAoRyYRALGYZ+uIRTQQwDp3nGQe/RpWPsPTdyy+GQFf6nYgY9f/9tx0CMCeFISsN68AMhULjQMC5Gu0tAjJi70UUkA+rReAlx3DGuf/Xxdx6G9/QJlw2R9kH4S2IPX2FBpI8S7AjnEoxnspvhfDiuIgSW7mvCWRyw89lbXCwUsvfav1/8peTGQIQyAtD13KP8TScCcCIwrgoRQwHWRe2It7J17JzROJi0B3P3mT6O9pVNJHJuUAGnXFclN5jVulNIuHCYGY9dmwmYfSBjjZajdb3rpKxga3Bk/mTkLjiO0BOCyCGfS38/y940RQZQojHl9idwYBiWQAPawYhCWDTWl4JPJ5dunoP/4eqy/dTqQz2u1f2k9gP9LcFqmNYz/NSUQawwScRKQ5vsnJQQV0Euen6pV5B59FvbOPRMeJ5OSAC7quQLXLr1BrhipV6paTYqtKjF6/qTBILEEIaUnAmM9/6wk+likk87A4A68sumrsb95ycp2HNo7ioE+lQA62i+Ib5/j/26MeKWCktQApH4AxBOBdYM9RQkQeWC9/sgq7Lvv2zh811Xg5maFoSPgpy24kD2/HPsjZZdedZNPcyjAah7A1fsFXPBYGYX/fALWwSMNgRWr9uZzjXWz7Rw+cu2nU4BPxtdCeY9xhgYKESRPDlKGh9iGpcSmXIMVz0msfer34LrqvD07Z+Hmd87FQF9VPblWHqW280Cx0eUR2ClB+iNB+seOm9KQY/qAAaDSLL+AGpSXYeHWkbfC/so/gd/YBXYcsOMCjhM+ZuNj7eZG9wje5xpuwffX3+86nod33NjP8V6XR4Q5oMNHUXzgIVgHDzcMXibdcuCbV74bc7rmpXt8HfioQwmgRmggrSQ0lgahTQCOJf3MGX+5Vr/j9Qewd/cvYn/z9bfOguPGz2SpbTEsqxDNBDTlARLUQOTxazwfLzzKwYAHdmXzy/ScgC8cMKUwC6t4FV78p2+A33496KrL/EVBevIvlpE0qADJ+8dKgnI3YEI5kJMag6IpwPbLW2G/sNFTBQ2El0kVApSaOvCuSz9cl+dCgldMJAXJO6ZWDSzzjL9Y+U++PoU51pe9cbU6hOee/MPY39w1tYA1t87G2sePxisA7ctPXPqnkIARd9L6gBREqs/EX47yDwxcPfUWbB5ci7H/+DmwaTP4tpuAWTNgnIRiGgighQEyEcQWBoUlwPjuPWpPAMd6+/NPvQDr8NGGxMykIoDbVn8ALYW22uBPkrNJjkUGMxJCAytl4CcSCMC0E49EArL3f3Ht32Bk+EDsb37XR+aj0GTh4L54P0BHxzKlMScVd6n+HHV8Xi8Fmj6geXulWBi3ot2KS7uux1NHfwTs3gf6h6+Dr7gY/OargJbmKHRImbmgzANAUhIwTgJs2gJcBv7oGOwXX0Zu23bvMw1qk4YAOpun4KYVd6Z6qvRYNh4LR/KdjHFyYtXAsJIwAr+a9AvW9jIll+iO9W7FKxv+KfY3r7i4E8sv7gQAHNwzalAAyxKPg1y/T1MBdT82EEI6vFMDh9Au7lyD9ccfw4g76K0TeHYdaN1L4NUXgq++DCi1pXQCRioglgSEvjBI/lrEScB/TCMjsDZvR+7lbUC12vC4mTQEcNtFH0AhV4xdVKYLLfESrIcUYFjko5Ua9cqBUgaUxniZ2nL1GJ2Z8fTDvwsh1IstX7Bw54d6Qud2cJ+JAC6Ix/7jBvJ4VEDyC3IzUF3fyA8p8lTAJZ1r8GTvg9FrVQf0/HrQixvByxaDVy4Dz+/x+gZ06a+0A6cpAcn7GxYHWXv2wdq+E9auvSDXnTSqeVIsBmrOt+KtS29JR3vKYxrHz6I6FQWk3AAsqQtQaACn9Fh8+yv3Y//ep2O/x413zMGU6U0AgOO9ZYyNqhdlLteG5uZ54z69iSoAp87b1wpE9FdWdVyL54//DGWhkZzrgF7ZCnplK9DaAj5/EUR3N7h7DlAsaPE/6isHBpJ/rAxr30HY+w/A2rEHNDqKyWiTYjnwmvNvR3OhdZwXbe3L80QJRSEFSRGENX45E54CgEp5EM89+aex16fPbMJbb5kZfm2U/x0X+F4Xp/GAnBkrWEUsb78K648/kvymoRHQuk2w120CLAJPmwpMnwrR1Ql0toM7Sl5jUaEA5GwP5JUqUK4AlTKofxDUNwCrrx909Djo2PGzumNPFgLUaRZZeNsF7zYmgE65MWr/HKkJjTimQmNLVdN+zHOP/xlGhuJ95O/8yHzkclF20Sj/Oy6YVBfq6vY3Y8Pxx/zdAmuYYNDho8Dho7CRWSp+Gv0PuHDO5ZjaNmN8gOXkt50IjzDDOO03nDwloiG0rLakx35Y4HSOHHwJW9Z/PQ6EK6fg/As7lOcOGBRAZ/uJEQCPl/D8F/nkflLNV9rzU9DdsiRDbEYAql13/u3jupA48QmOXfBJAGXTzH4YAM4cbQXv+iGA4IThn3KoKvDEQ5+HYDWubyrauP0D3bG/6cBecwkw7e+olxzHLaqSVA3z+HjAsA/ZitLVGWIzAois1NSJi+ZdrXjOei5uNjyfBBI2zedXAMuJQz09z+8NnvS2m+ZERSB/dvP6b+DQ/hdif+/b3zMXHV0FNQ/mMo4cLMc9plwCTMTdCcRLnIjPk6GNun6fha0rULRbM9Se2hxA4yY6Lp//Vthk1wQ71fl8uH7dAHbIc/pYlfmxwR4BtQqoqw/l0EAKDyAixTA6cgzPPfqXsb911rxmXHNDPNQ5vH8UrrYCsNg8C02FKZ7qMOQbksiS+USAnqCg6vjYeAIHBmCTjfNaVmLz4LMZcjMFAFyxYE1Nz17X85qkZy2WR3xzGQ3ErHp1Ybj5IYAQKvB1EnnqP/8IY6PqdtFEwLvu7oFtx1PxpgRgV/sFhsTj+MFfr4LiREhzLMzimgzB2sfUH7Sk9aIMtadWATSu/F8yfVXixUlJHj8B7PprrIGfmKW9+0w3BgSpDTeGwaCsKYeIOBj79zyHVzfF9/W77E3TsOj8duNxOJBQAuTEcObkSIHrTq5E36QWKYxHNcwtLkbRbsWYO5yh91QQQKMGACvnXAGLrGiEtu5pmJQyXAR2bzurGBGE8TxFZJBECImyn/2x3dIFTfqsGgMBMEM4Dp746RdiybLm1hxuvas78Tgc2Dtqjv+13z09xxHHJtedOzF77PTQgbVvw6nJP5mpiSzMKy7B9uENGXrP5RDgwtlXJnsq/UI2gF15zfQ6m5J0bC7xKbKfFckvjZWLPR8kCFkAL639Zxw9tCn2d976vrloa08WauY1AMvNwE8jBW3NTL1hVC3AsknMc+0cgrLxuPYz5jcvy5B7LocABMLKWZcZL1xKIIJgEo9OFLospgTvbuqFhyW198pJP/Im35BpcKXSl+4RwfDQYbzw5F/H/s7uhS244q3TE49DecxF37Gyli+wUSotCbfDTgY+m8nS9BrDWC5N8uKcRApQlVhMFSV9Rvu6u3kpxremMbNJRQCz2+ejtdARbZJpIgLD9F2WrnRKiOe5nlg/eF1oa+aNu++wKSxW5gA++fMvolJW9/Uji/CuuxfAsihV/uvl9bbWBbCtopdkBPRZmMn9Bym9DTHShDp0U0kCsp4SZOlvTuqYSgkPlO/n/d9il9CRm4p+52iG4JMngMZj0SVTV0QJJh+MFAN7BFQjGZgu+lABmEkg9PYB9ZiSfdrIbdP+gHIicO/Ox/H6lh/E3nP1mhnoOS+95m2S/50dy6MmpATQy6QwrtAJ8cqCrCaY6wcxEkkkrkBM3292cT76h45kCD4XcwDnTV2R3JiT4PmTmm5MIDeX+qCU7ViwvMmsufQXi/m9LeKDx261gid/Hh/v3daewy3vmVPzOJg6AEulZbX/NtToRuTkMCoW+5tYoU4QpycP06sHswoLMvSeqyFAT9eS0NvoMTsbPbrJ+/teXkjeW4n7OXLtlvpaJPtZGvgH41zBpHwXAGxY+3foO7Y99vLt7+9Bc2vtU3Nwz5ghAXiBcc0Bc7oSYHnprIE4dcCzFuvHegFCEHMiiOMlwFrJw+i7TSvMydB7SgigwSIA27Ixu3WBcgEjsVMvChFMNzKV8iTAs04SutwPGIjhLUGVRmXX2hx0sH8v1j/35djft3BpCZdcO7WuY3Fwv6EEWFqeuOW4cTESJ6ulNDUle2mWXpRjfSMpMBte4fhKSZ0UtORhV36GsglJZueIApjZ1gPbzseTcjDLe0qV++kJPwoqABbiLb5K1h/Rnt7+iDA2zReUrtWnHvk8nKoq4W2b8O6PzjfmDXQb6KtieFCdEkRE2Lv/ARBbasORMDQgaeVMSHkDKM+p77XRhilNd8JGZyz+V5J+8v81SQF1kIKqJGzk0WFPQ5+T5QHOLQJo7U7o1MPJZ/VNSkCw52lkEkjL+ku77cRHBXkX7+4dP8PuN+L7+r3pppmYPa+5Pu9vaABiZryy5Uun/Rzss/4OK7p+CpvaJfCyJBZYPf7jJQWYSEH7LBgd+akZAZw8ATSWhJrWOssIYq7Dkytxvg52SN4+tqhHI4FUAlDjf9Im8jrOGJ5+7Ivx2L2rgJveWX9ce2j/2RtRVRZ7caz8AKYXPxKHL0dDOI3QTiMFKROpflL/rJ/wtKcg6wU4xxTA1JZZJy71dcBbcRWgyH6lySfsRU0lANZG1usz8Dc8/xUMDeyK/V13frAbTcX659fYZ3nUTQhwZc5+zI9779K354bhfVIm0lgVMJBCW64zQ/BJWsOVAbuK0xNBzkllvFo3uYVXjpuNN04u+cllPzf+fP+x1/Hyhvi+fktXtmPVFVPGdRxWXzkVXVObzo7XoC5Mabrd4Ollbx0nhZhXl8ljvKQAoGRnBHDOKYDWfFdiLZ9Sa/zmWJ91JSCi0h8JKQEoy3+Lw918goy/7Pk5YYORZ5/6Qmxfv1zOwrs+Mn/cx6GlLYd7/mQ5Xlp7DMd6K6flWG9cewy9h+PDRnra/gA2dXkbaYRxeZKn1x5LiUYgSeqnkIIUZjRZLRmCT5YAuOEIoN28Go9qJPwSavsUePtQE0kkoJXyAqB7ZT8p4UfxjUNYWwKwc8cD2L/30djfs+bWWZg+q3hCx6KlLYerr59xWo7z/j0jePwnB2PPl/JXY0rTe6Vx2npMb4B+zNPLusF/zMlSP0lRNFnNWQbgXFMALbk2swKoNSzWEO/LiT6FCMgnirSknwJ4aU8/qUU4IIFqdQgvPJe8r99EMxaMf/9/u+BqG45aaMLC0pdAAIQEYKUfQM8JcGI6MCQQuWlI/55ppFDMFMC5RwA5q1Bjx+MaZT/F28M8xitM+lHk9XUC4KQEIMfmAby04a8xMpK8r99Esyd+dgi7Xh+KPT+37R402Ys86S8BnaWl0ok5AejvNYA9fJ+pTBgnBQv5DMEnTwCNJaJylD/p2j7J03tk4EPaGUdu9fVfZ3m334Tyn14F6O/fhm1b/jn2d8j7+k0kO95bwUPf32dQXhdgVvHXJfDGga6u/otUANcl/6OQQlUV/tcGUrDJQlYGPMcUgIV8zQU9yeU+KNN7iClaNqsn+0L5r5X/apX+ZO8PxgtrP5+6r99Es+/ftwvlMe0AkoWFpS8BlAOzCOv1zGagM2thgQp3Q+kwSf5LeQbDd7Mn1+bWGQHUZULyzkn7VVmqCmBd5ktJQbIkEkha3gs14adk/in+uYAQduy4H4cOp+/rN5Fsw3O92Ly+L/b8rOIvozV3mQf+AOQS45qBjniisFaYwLr8hyFM0JOPmZ1TBOCIKiyrqUYeIAC5H8dLwI95fLC3h54EYDLs0htr9ZUVAbQFQAAqziA2bvrz2O+v7+s3UWxs1MWD39oTez5vzcDc1t+Jl/lkb28EutmrqwuHTNn/pPfKeQbvfS6cDMHnHAG4VRTspuQWYGFQAoJkNWuQ/f57krL+QErPP8XfB2Djpj/H6Fjtff0mij34rT0YOB7f735B6S9hU1vo9ePeG0r8z0pFgA2JQtYWDtXOCXCC0nBERgAnTwANpqIqbgXNSp+/FgqES3nVeF9uBVZIQJb4gfvXV/ohLenHoef3pD+hb2Aj3tjxjdjvbtrXbyLY69sG8fzj8UU1U5rega7CTaH01z1/qvdnHbAJikBPFKblBDT576Kc5QBPXgE01hEcqvSjvTAlMd4PQe6/pozxsii+os8HeyT7WfHqTP5TVg1C8J8T7OLFlz4PrnNfv7OuqByB731tZ2y2oG2V0FP6EzB0zy+DmZO9P1TvH08UQqsmaIlCwKweJFIYc0eRMcA5FgIMV/uUeX/GLbm06T0IPX5EAjEVYGkJRj3O1+r+SQnAHXvuw7Hj62K/9+x5zXjxqd5TfjyKLTYuumIKWtpO7FT+4sEDOLQ/Plmou/X3UKCZMY8f9/xJz8FIGGkVASVRyKYyoxomZJuDnIMEMFTp9926urqPLcOKP9MgD32MF9JiflYHfJChF0BKAFYqvdi87S+Nv/fO14aw87Wh03JMHv7RQdzzJ8vHTQIH943i4f8wtftejhlNH0oBO1QvXosITGXCxIoAEvsJ9NJhmUczBJ+kNdxqwL6xQ9qFKMl8wYmbdkAe3ulv2420YZ6GzTvSBn4KF9h74EFUqsfP+DE53lvGhufGpy68dt+dsY1FiQpYUPrvYNA45H88IciG9+reP14R4BprDNQy45DblyH4XFMAvaMH/QvD79YR2uBO0wQfC4YZ/lKsX1fST+r39xVEbPafOHvHRbjje/+zjx3Bju1xRTKn5TdQtJckSv+kZKAJvGo2P0HmM8ey/LFHCYnGwYwATp4AGi2F0ls+qCSJQiSmTfAxJP2QNtXXSAAwL/6RPj97+juxffdXMTq294wfl3k19hCQbeB4Ff/x7fjv2GwvwuyWT4VSKZUEEtSAWSnA+P6a3j+2mEglikHnWJYCPHkF0FiH8PDw7qgDLCjdCagZfhMJ6GSQ1uqbRgBQ8wCMqAyYszvx5ot/jgNHH8BIeV8dOjz8L3qqxr585coR7D+q7iCcyxPmLah/Zdz3/2UXxkZVyUAgLCh9CcSFOCBN/1KSgclKAXV4fxgShzBWBAaco8iqAOdYCHBkdC+qbhl5uylCdrhNXJwE9B18jFt5QUv4wbzoJ/a8IXGYszvRPfOj5nmgtYCu70YsP/bv9x/9bowAuhe21d1ctOWlPmx6IZ6nmFb8JbTlrlKA6f0TBpCLuqoCtZ5no/dnc/igVQQcOBhwj2UIPtcIwGUXB4Z3oqe0VEVP+EglARIMDtRBzU4/jhjCgnHaT/LwTzXUYPlLaSw4G1UA1E1NoO0fKBFA31C8xLhgSVtdx6485uLfvxafR5i3pqG75fck8Ivapb8U+V9fWBBfS5AWPqi/B3C8esiwmWhmk54AAGDf8GvoLi3xARIgWxW0auyvxfo1k34coTppBaAGehMJoJZAZYMi0Dbs0JVA39DzJ0wAP/7OXvQdi48P62m9Fxa1hx7fHPcLLXbncfUIpCUQ60keyt6fweitHsjQewqsIfcG3Nn3SnRBSpI0vGC0sh1qlfPGWwJ0UXswaD3v0fcLTBkoKlygWh3A8NjWOIAX1SaA3W8M45mH4+2+nYU16CrcpsT1Mamvxf0RcIUZ6HV0DaIu9WD2/mDGoeruDL3nqgLYMfBKlIkO438RuffgOXmBj5L0o/Fl/aUSIPtTgmqqgDqNDftpqht2Rr0N/UMvgqEm76bPbEKpPf00Cter+Quh6hGbmtHT8qc+uEWix0+rBhgBnVr2Q3JCMKnDUPP+DMbhSkYA5ywBHBndi6FKH9oKnQrgPWhrIYGghBl+NA4CkPMA8s4/8S3CGWrecTzgj55jo/zvH3kh9j3m1yH/H/nxQezbHd9JeE7LbyNvzUsGvzHpJwzVAJHaH1Bf/0AdROCTxog7hEH3eIbeU0MAjZdIYTC2HV+HS2ZcH3l+sqQ/RUgjfH1VIJA44AOob9yXiQzMsT+lEoFa/ePELbj1RKCJABYsLqWT5cEy/vPB/bHnW3OrML3po4aYPwX8dSiC1NIhavcPyOXApPfvK29HVv47VQTQoMdx67HncfH0NbLQTUlpSAP99ASg1geg9/wbKwBaBSG+DwDXlwSUPX9SRSAsAwr0j64flwJgBr73jZ2oVrR2X+TQ0/IXAFtxsKeBX1cChrg/WuRzYonCpHUHskLYX3ktw/+5HAIAwLa+dXCFA9uS/gQSqteXMEZ6SEApiqCm5zdsAZawGUg94NerALGqAAND5a1wxYDy8WKzjVlzkvcUeOHJo9j+ykDs+RnFX0PRXh6T8PWDnxNUQZ39ATixRCHAECywv/J6htxznQCGq/14Y2AjFnesBmAZJgQKFeVySBC4d3mpr4XkST8pjT9IIoE0IuD6E4HB44FRQ/y/uA1kmX/I8KC53bdgzcWs5k+Hu/rEgFkX+OUEoUhNEEbgFRGgx5kfkL8+UNmBshg7qWtn8bSZuGrh+Vgxew4Wds1Ad+dUdDQ1ocUuAC5jeGwMfcPD2NfXi9ePHcHmw/vwzL7X8Ubf0YwAJpJtOPo4FrVfpIHdUgDI6ph+iShYdeWckvknUuP8hBHgRhKoJQDq7AgcGDXU/xcny/8H/nUPhgbjI77mtdwL4mKUwU8DuvE5kZ4HQPp7UNdiouTnd469fELXyvI53XjfpVfh9osuw6z2zjDxCL9sDMGAy4AQ6Mzn0NHSgvld03BNzxLAEYAjsH/gOH706kv47msbsPX4wYwAzra90vs07lz4CdjIS/JbDgPSb4pqYEovA/p5ghjoTc0/VKcASOv716oC/eX6OwC3vdyPF5+OLw/uKrwT7bnr1BKeUf6bwQ+pLVhaW+0n/UTtkmGs/398iUKXHeypbK37+iAi3HjBKnz6be/AJQvOi1SdVIIEszdWTjDYEoBLAAkQefcsncTZ7V34+Oq34GMrr8XzB3fgqy89jsf2v97QHYm5Rs6mDFf7seXYWqyYcrUxAaiHBfLX7FX0fSIgIxHElvuGRICQBdJif64zBIgnAlmR/1WnF2Vnp/IRyyJ0G1YAVsoC3/t6vEZuW52YU/yCMd6HKf6PEYIwrwfQkn5p79E7DetJFMqJwD3lrSiL+oaArO5ZiL9474exasFCKdzTerLZ9/z+jSwCLOG1jpNQ+CI4vcwMYguXzZiPf1zzS1h/aBf+ZN1DeOX4ocYkgEZPpq499FMsn3KV3/Ine3cKAW76OurcYe093qRh0mr85gQgpyQAawUCXF8VAMBAOS7/Z3e3oNhsx57/2Q/2o/dwPEaeW/yCv6MvxwkAprhfBTKQAGxDn4A03L8uVRAjgoRlxK+Ora/pror5PH7/jrvw0bdeD9u2vVWiliEukwiAA/lveeVjIqGOiUc0lpyEBWbAEjZsFlg9vRvfuuFu/Murz+PLLz+ByngHM2QhwMnZq/3rcXzsELqa6p+1H/P+7E/3VVy+N2LMGwpKyZK/jlJgXRyQkgg0EcCCJXHvv3/PCJ54KB6bttlXoCN3p9qwA02SpyUDldfTwB+vDKTOFkiS/ob3DjnHcLCyI/VwLpoxC//wq7+B5d09IJsi8FukNm0Fxzrw/MIDP7sGz69sN2d572cCCwuWsGHZAjlh48OLL8Xqrln43As/wZ7h/obBj9XoBMAs8PTBH/oXoncT0mPT18FFJcILWH5O+4zg8F5I6wKEobdfBM/XWgsgvS703n9Xe44Zg1VDBUDr/0/a0ZdQwJzme5U6ukiNz7XjVLfn1/MAIu7lE0KBeioCm0fXpsbaF89fiAfu+SJW9PSAchaQs4C8Hd6oYIPy/q1gg/IWoNzs6HP+zfuaAJtAtgXYBNiWRyg2wbItWJYF27JhWRYu6JqFr1/7XlzUOTMjgDNpzx/+GUad4boSUCYyEDFyEBoZxJ+LCIFjC3yEDnT9JjSykMhBBIuZ/J/piDEMO5tqJgCTdvSd2fQpFGiB9jfHb0IjQj0EEPWAv1Y5kEXNuN+0vqDMI3htbEPi+b9+2YX47mc+jykdJR/4PqDzVgh65C2gYHu3gBSC10LCsFQSCIHvgV4mAfKVhWXZIMsjAossdBSa8bdX3Iorp8zNCOBMWdkdxfOHH4q8G9jo/UXd3p81MtC/DyuPFfD4pCBq3MKVhvrPEOrXw5WNYC4rf2+pI6/sLZi0o2/RWoqp+Y8avb6oK1ufRAq1wC/UkmBq3C8Spw0F73t1dB0crhjP/SU95+H//Np/RXOxKe69Q+CrakD92opIwAe74u11z6/cfOBbVkQCloVmu4Avrb4RqzqmZwRwpuyJA9/DmDMcA7X54pW9v+rhQhIQEtiF9JrQPKIwEcH4buFnRQT84GcNOvH4f+FS1fsn7eg7p+mPAM6lhEL1hUqphJAG/rRzUNdsAYGqKGPL6HOJMf83P/FZtDQ3+1LdB7DsxfOa9A9DAV8p5GxJ7uue3wM6SaAnSyYCr7Jgkef9ici/WWi28/iLlddjbnNpohNAPbtsTvzbsDOAZw7/JFHuCwPo47JfaB4uSUXEwwH5dVGThDh8n/49hPazh50X4/JfagBK2tF3au4DKFoXpf4uwpAMTCdNrg1+JFcHGOOYLeD/2zz6LMbEcOx8N+Vs/N2HPo72Vr8b0vKBG3jyQAn44YAn/aPwICIG6b0xb2/y+giTiuSvLSGfJMiyQBIRdBSK+ONlb0LBsiYsbiaNAgCApw9+HyPVgZjcH5f3F0J6Xo/9WVEHqreOf28Z5PpN+X1E8Lz8nPd5EwEEC4CSdvTN0XRMy3/KGO6YVYAe6xtehxw2iPGtIuT6yoF6JWDMHUn0/n942/uwsnt+mJBTE3RW3KvLRBDkARTga57fVj1/rJoQPiYf9LICiAhicVsXfq3nwiwEOBM24gzh0f3fiYFdJIJeAqIQcZKQyCAAZPh9hPp5ERIDj0P++zkBQ1JSsEDZ3YmqUKf45HIW5s73JgAn7eg7q/BFELemAJ1r5EI4ZUJQHTmB2BJiMY7ZAlHsv3HkUVQ43tOwau58fOSqNRoofcDapCbvguReXpX/oee3I9kPWwO6LP2DRiJLW0cSgD74p5EAiHDnzCVY2to1QQlgckQA4e25wz/GwdFd8YtUmKS5IfaPef96E4ARMQihhwJxxRC8zxhu+M8PGbx/93mtyOWsxB19S9aNaLXWpCY9hVEJpaglaO+FgRAwziXE4NQxZH3VI9g+tj52fgmEv7zzQ7BtK1zjpRNB+HWQsbfjZcFQIehxvvw9wtWhah8BKc9LvR/SujOJEmBbFj7RfZHXNzbBbpNKAXi9HQI/3f21lPKW9pxIzgPEQoCUBKBJPbAQCdn/WolA9uP/9cbyX9KOvha1Ykb+c8bKRlqJLykxWTuROt5VhJywijCeWHxu+CcQHN9q6calF+Ki7vkqOGUAaiAmOSTIW6CClPHXQe8DOhHgEfpjzWAy4JWVpL4ta+vCJe3TsxDgTNgbAxvxUu9jCjDVZJusCAzeX47xRa0EoObZjXI4PeYWbAgnmDHimgkgaUffabnfhIVpicAXKXX/+gCfFgLUuYS4VvcgGNtHN+BwdZfx3H76LW+PP6lt9kryfzIxBEQQ8+56Z2dCG7dh4VfstZTn75q5ZMJhJTdZR6s8tPdrWFRahdZ8p3IWOOz4J2k9YLQeOFwPIL0etQ57C1OISOooJZCy5pjGuTqMlYdB/7vLQyiL7fHafouNRww7+hZpJTrwLqm3X9pdF3L7L5RWYMTWBKheHQmVAiQtGkqrDiT1GkjEMOoOYv3wf8J0Xa6cNQ+XdC8wtYMqh1JZ8q1sIe//3kL6nDaIxbRbk+lUncjpXdbahflNbdhVHswUwJlICP5g198bYnE2dgEKQzggpASh0fufVAJQ88DazxhxN8QmAE+dUcRPv7sPTmxH3zxm5P4QAiSpFoMKEOmKpHZzUB1KIAX8+hJifXkxs8CzQ/9hTPwBwHsuvFLBe/R9oPXsByv8EK31dwS46oKrAnBcf+2/dJPIIJxYDBNBmElD3b0omTDe2jl7YimAyTxabfvAerxw5Oe4bPrbxu/9/Wmf3iukfNpbJxR8D8nzS0qAjDqQ49cHx68YBjDqvhT7e/qPl40r/brobuSxUFq1h9oqAGwcClL/QiFZMYjEVYQxxZCy4nDryPPYW9meeD5vX36xCnId9MzRNvHCG+4RrO8HGBBWBGJXgP0BIOGKQJ0MhOFnQdqhWD9/2mRjvcIBZlzTPhNfP/TqRAoBJrf9fN996Gk7H9OL3SGQ1YEgwfJflRBUkmBJ3vuEwCwN/iDElvcSpbsC5gS16P0/IjbEXneq8c/kqQcd1q94CTP2fVAIXCQCXyUAqPI+iQCQtkSYE2cMoo7qwDHnEF4cfTjxPC6aOhOzWjti4GRmD98+iEkIQBDYFX6s7y/tDc4x+QB2PRKAI7x7EZGBSgS+klAGoajEYxyBpr/f/8jUfBGz8s04WB2dEPiwJjsBVLmC+3f8z7BNWCT0/QtDI4ww9ugn1+2Vi1qI9FtaItB1MCY21fzbCISp9LtSuy8bQx1TlUKkLJCqvZrSUD5EnX0ChgRhWYzi8cHvQrCT+LdeM2+xEsfrwzwgj/VyBeAy2B/lhaoLVF0vBKi4QEUAVRGO+uKQCNhXBayqAi2sUL7WvX4sbxJ/fUVzZ6YAzqQdKx/EA7v/Hu9b+FlQNP3THxioj/7lSN57wwCixJ6eAAyVQ8DwpHh7qi83FEsEjvFrEBiq+Xe10e0o4hLf+0tT9Q0hQOTxZYWgXqhJYUF6MrD2SLG0uYMCLp4aeqDmRh/Lp83xPLw0xCMc5RV4e0v4U5wIweaQzOz1AQhtHkA4CESENw4fRyQSUwTS12FC1UR8InlZdHehNasCnGl7deAFPHrgO7hu1l3eRUHxjH80NUh+DtLAsOBdiEKFkEMoDdb1JYx9wI7xhprvtdGFTnwyqpVLSaj6gI/kKkAC6JGwbiBODiLBI8br/euHH8a+lLg/DAG6pkce3vKn9/igh0UeYP3SHpPwZ7J4cT8LVmv6gKYaIjUQkUGQQ2CfGLyfzQbVIYSI+juEnBA2l0ln55swUXB3TiiAwJ46/ABKuS5cMvVGQE8C+t4+mg8YjfphisqApgQgh0ohKfmXrAHiA0IZY2Jjzb+lC/d47b6Sp1PuJaCnAh/SzryaKkhNCI5npBgMm4hC4LWx9dg8+kxd5667rQsQAiwo7vlJ8vwkeX5/gg9ceSwYSXkED+Ss5QPY0ZSAAnhhAH88jEvrCZmeK2YhwFlLCh64D+35qVjUvlqr8Eve35f2USIQkt8PFIKWAAyTf/GsP6UqAtYjAIxxevzfjKvQjDWh91c20NTlv5LY05OAqFkFqCshOK6RYh7491S2Ye3wT+o+b6Vck+qxLZ90Lcnzw+D5rWB4h3YmGKo3d6V8gKspAUUVqPmBsO1b6fwMcj3SYylv0jSBUm/nHAG47OJ7u/8W71vw37CgdbmUBzB4/yDrL3n4qEQYhQTRJyiq7VEdoYDk9aMxdcfhYG9K1rYJnXyP1CYrAVvJ/CflBNK8PeprDjLE+0hqAjJUAg5Ud+CJwe8bW30TSc/Kh4M7mQjkAz8W88P3/OHu0OxP+YW6dTPHk4ch+IPkoKIEopAgUAUe4F0I17/3v9YVgUcQUYjQBMoI4Gyaw1V8d9dX8P75/w3zWpZG0JcSgHJpMAJ55P1lUtATgPXOBFXf5sf/eCndE/LHQDzTL8PpYJfUgF76M4QE4Z57OhnEvDuS6/+p48XVUWDMjMPVPXhs4H4IOOM7aYrnF2Ar6tlnEv6p8AZ3sl8WJH0Zr5yqkcKAKBkoeXtHyguEyoAVVeC6EejV+0ARuNJjdQFYRgBnuzwoxvDtnX+Dd/d8GgvaVighAGSgx3IB0KoC8QQgp+YB0pmhjE2JqYM8n49m8e5E8IcAN1YA9Cx/EvBhrgLUkwuokQw85OzEo4PfgYPquM/XSHkUhVwu9PxRz74U84fzbdjrBQgGeoT5AVUAxFWAlPRzDNUBJwJ/6PVdF65/H5GATgRC6fQccZ0JRADn8C6rVS7j33f/f3jnvE/ivNIqLR9gSACGr8UTgMnJP67f/zNQtl9OzPu3u/f4P1NI0YMB9DGAI6U5KKlbMKFzMJEARGrX4J7yNjw59P3UWn+a9Y+NoLPYKo1fD2J+jjy/79FJBCv9OPT+TDCPBZdIgF1NCcg9AhohuK7j3YTjg99VFYFBHQREMOJWJ0zxLXeu77PsiAq+t+cruGHWh7G6a41WDdASgOFr8QQgK5sCcF1RHmuJQEYFFZjbRFvEe5HjxRL4TVn/tJyAQf4bKwIwVwHq7A0wEcBroy/i+ZGfjCvm121X/1H0lKZIW7cHKs3z+sR68k9f4284+KwlA4OMv9xIpOcEHE/6m26RIhBxQpDuD1dHszLgRDLBjJ8fuA8DlV68aca7YcmtwvUmAMO+YK5D6JuYgFGhVwHEp99aPButzodDSR05f05PBCaEADWBH4v3Mf7mIH8r7/XDv8CW0WdP+hy9fvwwrp51HnJyoMZWxJ/+rj2w/Z5/i9Tkn5wElPv49QYfORkoKwGfDELP79+EiQg0JeBq+YGJ0gacEYBmz/X+GEfKe3HLnI+h2W6BsfEnJQEYJv/GtT1wRBYVa5s58ed8CuC8mvmXLuTEXECsOajeXABOqjkIzKjwGJ4ZfBB7KttOybl5pfcAXNfxJuwgF27XRcG6AEG+J7dAgfRXxnfpGzdybPVguEWYnBSUwgDXdeA4DlwnIADXJwE/DPDzAdHzan4gUAm7KxOIADjDvepphjbimzv/DHfM/Q1Mb5priPOTE4Dxph5KyQiYFgjFmaNJXI+8ewmEtFd4DPwx0Cd4e0MuIHV+gKGBqJ6E4DHnIJ4Y/G7N9t5xkfPhnXAdJ/ybbc7B4oAEgm27yN/lNwI/yQ1AFCcAZqm/XwkDWMn8u44Dx3WUe9fxCcEHfEQG/nMh+KVwwHWxzRmaMIG3XWya+ccZ7FUbc4fx8sBTKFATZhXnS15XXgguSWPlFgs0jfvf6e8BGJaYjbL9GJiGfek/A6XKFwEuaIBnyburj1naggtsSg7G6/1m4KPuwSFyD8CrYy/iiYHvYYyHT+k56auM4t3zL0Rrvikc9kFh7O/9rsSGASBCWiLsSjcRT/h5934yMFwc5IPb9/ohCThRGOC4qiIwvT947nB1BD8cOTxhrvWMAJLUOQvsHH4FB8d2Y17zUhSoINGAMgnCuJttvTf1UQFN1Rtg8wwU3MvQUvkEiEsRkBXA10gEJmb+gbRZAcpwC1OJMMHrj4lBPD74fWwdfS5sTz7VNq2pBaunzJaok8PQiziK70laqaesEkxYNajU/qX433Xc0NPL4A7AL4cDjpwbcOJkELz+2HAvtjrDE4kAZmQEkOZ5qofwcv+TaLJbMaMwT7n4IkDqz9b/D/L3YI8ELLEEtlgCIK/G61o8LwM5DnrWwgNd9iMO/LTyX2LLsMAbYxvx6MD96HMPndZzcWxsGO+Zf6EUcknHwAc+6Yk9ZpDLRgUgt/mGi31c4Sf2DMAOAe36nr0qhQOuRAiu4TPe9/rW0D4MspMRQCOZyw52DG/EvtHXMLNpAZrtVs2DS2vGU0OCBIXAMh2on43AjkTAq51+42sKiquABOlvGBzS5xzGEwP/jq1jz8E9geae8VpveQRXTe3GjGJr9Lcbmo4C709CnxAEaVJQFAawn+iLkngeoGUp7+oy39HDgapPGG78vf77tpcH8LNy74S6tjMCGIcNOL3YNPAEBqvHMau4ADkqxOP8cG19EuChlK70HXEUJcFazkEHfGonYHL8nxgaGIGPWHPQGI9gw/Av8OzwDzEk+s7oOThaHsJNs5ZoOQxt+rO2QIdFtLzXe+y/FpTsAqAKGbhuJO8dE6DdGuGAG1MN3xzZj6OiOqGu6awMOE4TLPDywFPYNrgOqzrejMu7bkbBKipZ/wiAdWcc4o9Yf04eLRUHvHE9QK2FQomjwvTwwLuvijK2jr2AzSNPJQ7uPN321OHd2NC7D6umzAYLAct2IYQNy7KVnXrljTqDak2sGhPbAl1a4OPX7F05ix+CWgV3AP5YdcAPDVzHxWuVwQkV+4d1qs72lVkl8CSs2W7DxR3XY2X7m9Fknfg6b6WQaFglGAN8yBFpoDd4+8RQIAn4QFmMYvvYC9g88izKPHLWj/n5pan45yvejXzOA75t2cr23GRZsHzwe1t36fCvRQBC7eCTSnoqARjCAbcaEoDjeI8rThV/PbgDe0V5QhJAGUAhg/LJWZ6KWNF+FVa1vxWl3BRFDyT7e2P5wagJWBshHM8F6KCHWjFIzQmYB4cMusexdfQ5vDa2Hg5XJtTx/sziK3FXz0pYduT5LbJBFnkkIG3WCUSj3JIJQNoUJggh/AU/rr/kN+j7NxGAKRxw3Cocx8EvRo7gB5WjE/GyrVBn+8peAFMyCJ8iRgVhXnEJLmi/BgubL4RNdl3SX1X52mgxVvsGTICP4nwzEdSXE2A47OJA5TW8MfYSdle2jnOTkzNnBcvG/1p9C5a1T1PlP1mwLNIIgIyNgDCNMfc3a9UVQNTMI7f9qvmAeDhQxe7KML48ugdVnpDHsZc621fsBDA/g+6ptyarGQtaVmJRy2p0F8+HlUAGzOZqAWvhgOy51FxAeiJQJYA4EQgWOFrdg53lV7Cz/DLGxHBDHN+5xRK+etHb0VFolqS/D/wgD+Bv9qfv+GUmAGnLOC0MiOUC9GqBXvN3HPQ7ZXx5eDeOcnWiHsKd1Fla8TKAFRlcT68VrVbMKy5Fd8syzCuejxa7ZNwURJeo40oEJuUCDDmBMXcIeyvbsb+yHQfKb6DMow15XJe1TcVfrbgeLbmCJ//Jl/8WJROAdAzlqcXy7lCiZi4gOR/gug5Gq1V8dWQPdoqxiXz4NlFHaeUzBL4qg+iZtc7cdMxoWoBZTQswtTAXU3IzYFG+RiKQY2FCPYlAV1Rx3D2M3up+HKnsxpHqHgy4vZPmWF7aPgt/sPQaNOfyUuafohCAyJiPUXIf0vbu4b2sAFITgmq9f8x18H+H92KrmPCk+jR1ta14iAk3ZZA8+7mDjtw0tOeno2R1oZTrQqvdiaLViiariKLVCgs5EBHy1ORlcMSYP3uuijExgjExijExhGExgCHnGAbd4xh0j2LAOTZhY/lTZUtbuvDHS65GR75ZAb+cCEwKvUw5AHmKj5wHCMMB1/X7BlQ1MFit4J9G9010zx+4kJ9SR2nFPwL4eAbBzBrd5jS14nd6LsXi1s7I84dhQAIBKPMONQJgdaRXOPQjlgvwCGBXdQRfHz04kWN+zevwP9jNTdOXApQpgMwa3gbdKh7p24smEM4rlADW43jpJkt5LbMvXLnxR4v3nfjCn6rj4JGxXtxXPoQhdhtHdRJ9k0qllbdZED/MLp/MJpMtbGrHx2Ytw9KWzqgJSGsFVHoBwOr+j1oykLU8QKACXq8O47vlw9g3AZt8aoYAhHdQe/sFS4jp1eySyWwy2sUtU/HOKQuwtNiOiAXUkqp5M9Nolr865dd7vL0yhJ+Ve7FVjDTuwbHsRQRcl+soHR5G1g2Y2SS27kIL3tQ6E1e0TsNUuyCpALUUGO2WrG37JQSOumNYXx7A2uoADjSgx9es0j+4uYWYGZ3tKzYAuCi7TDI7F2xmrojzCyX05FowM9eEKXYBrbBRAHnDTdjBoFtFr1PGIWcMe8UYXnVGJtxKvpNLAGB9X/8rl+QAgBiPMWUEkNm5YYecMRxyxs7pY8CMRwB/y0QQP5JdFplldg4RAKxHgGAegN30KNyyC8DODk1mmU16c20792SoAI4fX98HrrErZWaZZTZZ7IXjx9f3RSGAlxT4RXZcMsvsXDB6OHgUEYAl7s8OTGaZnQPwF/Tt8LG8Fr2ztHwTgJXZIcoss8lpDLzSP7h5ZVwBeHTwr9khyiyzSez9CV9XIS8pgJaW8+fmbXsXsmpAZplNRhM5Nz+/d+SlvUYCAICO0rL/BOiG7Fhlltmks5/3D25RVv5asRiB6CvZccoss8no/8WXYyGBaSBlR+mCdQAuyY5YZplNFuMNA0PbLmEN8JYxUQD+79kByyyzyWMW6E/Z4O2NCoCIrPa2ZZsBnJ8duswya3SjLQNDW1Yys4gTg0ksMAtmfCk7cJllNhnUv/hzE/gTFUCoAlqXPQ3iK7MjmFlmjer88fzA4LarkgjASiQNZkGMTwJws6OYWWYNaa7lur+eBP5UAgCAvuEt6wD8Y3YcM8usIe2rx4e3r097g1VTQdiFLwI4nB3LzDJrqMD/kJUr/1Gtd9UkgL6+jccB/s3sgGaWWSOF/vSp48d39J00AQBA/+C2fyPgn7PDmllmDWF/3ze49bt1EQXXuW850cJie2vTMwBWZ8c3s8wmqufHpv7h4SuZ94yeUgIAgI6O5UvguusAlLJDnVlmEy3sxxDbuHxgYNvWugljPAQAAB1tyz7M4G/AuN1iZplldrbgz4QPDg5u+7fxfMga70/pH9r6L8z8B9nxziyzCSX+vzBe8J+QAgis1Lb0ywT6bHbgM8vsLEOf8Xf9w9s+eWKfPUECICIqtS79GoC7s1OQWWZnCfzAvw0Mv/qhtG6/UxoCRAEH8+Bw/uMMfig7DZlldlbspwPD+Y+eKPhPSgFESmBloa218jUCPpCdj8wyO0PG+N7gSPVDzDtOapPDkyaAKBxY8lcAfjs7M5lldpqxz/hfQyPbP3synv+kQwA9HBgYevV3CPgsAM5OUWaZnR7sE9G9g8OvfuZUgP+UKQDZOtqWfoAZ/whCW3a+MsvslNkgE/2XEyn1nVECAID29guWknC/zVnbcGaZnQrbzMR3DQ5uf+VUf2PrdPy2AwNbXh0Yrl7NwN9m5y6zzE7KR99XGh6+/HSA/7QpANlKpSV3EeNvAczMTmZmmdVtB5nwmcHB7d85nT/EOt1/xeDg9vvtvLOMwX+LbLxYZpnVMgHgPli5lacb/GdEAcjW1rZ0tcX8dwCuzs5zZpnFbB2x9Rv9I9vWnrEA40wSAOBNG25tXfwhYnwBwAXZOc8sM2xmwl8MD7/2rVNV3puwBCATQall8a0A/QGDL8+ugczOPaONTOJ/DA+//k1mPivh8VkjAIkIqKXlvFss0D0AXX8m8hKZZXaWY/xfCIivjIy88RM+ywA86wQgW2vrsjnE4n1EfDeyzUkzm2QyH8B3ciL3teOjW3ZOGA0ykQhAJYMlFxPjLov4BvbIwM6uocwayFwGrQPEL0D87aGhN16akEHIRCUA2aZMWdThlK23MOF6sLgOoOUACtk1ltkEsgqAV4j4UbD1SL6Ix3p7tw9M+CxEIxCAIW9gdzQtXlC1xfnE1jIiXgpgAYB2AK0A2gB0+Y8zosjsZIE9DOA4gCH/8QCAncz0KhNvybv0an/5tZ1nK5F3Mvb/A0nyd8Zer58sAAAAAElFTkSuQmCC" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script type="module" crossorigin>function e(){let e=window;if(!e.napplet)throw Error(`window.napplet is unavailable -- runtime did not inject the napplet namespace`);return e.napplet}function t(t){let n=e()[t];if(!n)throw Error(`window.napplet.${String(t)} is unavailable -- runtime did not inject this domain`);return n}function n(){let e=window;if(!e.napplet?.theme)throw Error(`window.napplet.theme is unavailable -- runtime did not inject this domain`);return e.napplet.theme}function r(){return n().get()}function i(e){return n().onChanged(e)}var a={subscribe(e,n,r,i){return t(`relay`).subscribe(e,n,r,i)},publish(e,n){return t(`relay`).publish(e,n)},publishEncrypted(e,n,r=`nip44`){return t(`relay`).publishEncrypted(e,n,r)},query(e){return t(`relay`).query(e)}},o={getPublicKey(){return t(`identity`).getPublicKey()},onChanged(e){return t(`identity`).onChanged(e)},getRelays(){return t(`identity`).getRelays()},getProfile(){return t(`identity`).getProfile()},getFollows(){return t(`identity`).getFollows()},getList(e){return t(`identity`).getList(e)},getZaps(){return t(`identity`).getZaps()},getMutes(){return t(`identity`).getMutes()},getBlocked(){return t(`identity`).getBlocked()},getBadges(){return t(`identity`).getBadges()}},s={get(){return t(`config`).get()},subscribe(e){return t(`config`).subscribe(e)},openSettings(e){t(`config`).openSettings(e)},registerSchema(e,n){return t(`config`).registerSchema(e,n)},onSchemaError(e){return t(`config`).onSchemaError(e)},get schema(){return t(`config`).schema}},c={info(){return t(`resource`).info()},bytes(e,n){return t(`resource`).bytes(e,n)},bytesMany(e,n){return t(`resource`).bytesMany(e,n)},bytesAsObjectURL(e){return t(`resource`).bytesAsObjectURL(e)}},l={getEvent(e,n){return t(`outbox`).getEvent(e,n)},query(e,n){return t(`outbox`).query(e,n)},subscribe(e,n){return t(`outbox`).subscribe(e,n)},publish(e,n){return t(`outbox`).publish(e,n)},resolveRelays(e){return t(`outbox`).resolveRelays(e)}},u={encodeNip19(e){return t(`common`).encodeNip19(e)},decodeNip19(e){return t(`common`).decodeNip19(e)},getProfile(e){return t(`common`).getProfile(e)},follows(){return t(`common`).follows()},follow(...e){return t(`common`).follow(...e)},unfollow(...e){return t(`common`).unfollow(...e)},react(e,n,r){return t(`common`).react(e,n,r)},report(e,n,r){return t(`common`).report(e,n,r)}},d={"--hg-color-scheme":`dark`,"--hg-bg-base":`#14110c`,"--hg-bg-surface":`#1a1a1a`,"--hg-bg-elevated":`#242016`,"--hg-bg-overlay":`#080706`,"--hg-border-default":`#4a453c`,"--hg-border-dim":`#3a3a3a`,"--hg-text-primary":`#f5f1e8`,"--hg-text-secondary":`#d8d0c0`,"--hg-text-muted":`#b8b1a4`,"--hg-text-dim":`#776f62`,"--hg-accent-green":`#9be564`,"--hg-accent-amber":`#e5c464`,"--hg-accent-red":`#ff7369`,"--hg-font-body":`ui-monospace, 'JetBrains Mono', SFMono-Regular, Menlo, Consolas, monospace`,"--hg-font-mono":`ui-monospace, 'JetBrains Mono', SFMono-Regular, Menlo, Consolas, monospace`},f={background:`--hg-bg-base`,text:`--hg-text-primary`,primary:`--hg-accent-green`};function p(e){return Math.max(0,Math.min(255,Math.round(e)))}function m(e){if(!e)return null;let t=/^#([0-9a-f]{6})$/i.exec(e.trim());if(!t)return null;let n=t[1];return[parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)]}function h([e,t,n]){return`#${[e,t,n].map(e=>p(e).toString(16).padStart(2,`0`)).join(``)}`}function g(e,t,n){return e.map((e,r)=>e+(t[r]-e)*n)}function _([e,t,n]){let[r,i,a]=[e,t,n].map(e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4});return .2126*r+.7152*i+.0722*a}function v(e){let t=document.documentElement.style;for(let[n,r]of Object.entries(e))t.setProperty(n,r);let n=e[`--hg-color-scheme`];(n===`light`||n===`dark`)&&(document.documentElement.dataset.hgTheme=n);for(let[n,r]of Object.entries(e)){let e=/^#([0-9a-f]{6})$/i.exec(r.trim());if(!e)continue;let i=e[1];t.setProperty(`${n}-rgb`,`${parseInt(i.slice(0,2),16)} ${parseInt(i.slice(2,4),16)} ${parseInt(i.slice(4,6),16)}`)}}function y(e){let t={},n=e.fonts?.body?.name;typeof n==`string`&&n.trim()&&(t[`--hg-font-body`]=n);let r=m(e.colors.background),i=m(e.colors.text),a=m(e.colors.primary);if(r&&i&&a){for(let[n,r]of Object.entries(f)){let i=e.colors[n];typeof i==`string`&&i.trim()&&(t[r]=i)}let n=_(r)>.56,o=n?[255,255,255]:[0,0,0],s=n?[48,42,30]:[255,255,255];t[`--hg-color-scheme`]=n?`light`:`dark`,t[`--hg-bg-surface`]=h(g(r,o,n?.44:.12)),t[`--hg-bg-elevated`]=h(g(r,o,n?.68:.2)),t[`--hg-bg-overlay`]=h(g(r,o,n?.82:.48)),t[`--hg-border-default`]=h(g(r,s,n?.2:.28)),t[`--hg-border-dim`]=h(g(r,s,n?.12:.18)),t[`--hg-text-secondary`]=h(g(i,r,.32)),t[`--hg-text-muted`]=h(g(i,r,.48)),t[`--hg-text-dim`]=h(g(i,r,.64)),t[`--hg-accent-amber`]=h(n?g(a,[245,158,11],.72):g(a,[229,196,100],.72)),t[`--hg-accent-red`]=h(n?g(a,[220,38,38],.76):g(a,[255,115,105],.76))}return t}function b(){if(v(d),!globalThis.napplet?.theme)return{close:()=>void 0};try{r().then(e=>v(y(e))).catch(()=>void 0)}catch{}let e=null;try{e=i(e=>v(y(e)))}catch{}return{close:()=>e?.close()}}var ee=b;function te(e){let t=ne.get(e);if(t)return t;let n=document.createElement(`canvas`);n.width=768,n.height=768;let r=n.getContext(`2d`);if(!r)return``;r.textAlign=`center`,r.textBaseline=`middle`,r.font=`512px serif`,r.fillText(e,384,384);let{data:i,width:a,height:o}=r.getImageData(0,0,768,768),s=o,c=0,l=a,u=0;for(let e=0;e<o;e+=1)for(let t=0;t<a;t+=1)i[(e*a+t)*4+3]>25&&(s=Math.min(s,e),c=Math.max(c,e),l=Math.min(l,t),u=Math.max(u,t));if(u<l||c<s)return``;let d=u-l+1,f=c-s+1;d>f?(s=Math.max(0,s-Math.floor((d-f)/2)),f=d):f>d&&(l=Math.max(0,l-Math.floor((f-d)/2)),d=f);let p=document.createElement(`canvas`);p.width=256,p.height=256;let m=p.getContext(`2d`);if(!m)return``;m.drawImage(n,l,s,d,f,0,0,256,256);let h=m.getImageData(0,0,256,256);for(let e=0;e<h.data.length;e+=4)h.data[e]=255,h.data[e+1]=255,h.data[e+2]=255;m.putImageData(h,0,0);let g=p.toDataURL(`image/png`);return ne.set(e,g),g}var ne=new Map,x={sourceMode:`contacts`,bubbleDensityMode:`auto`,bubbleTargetCount:44,enableReactions:!0,includeZaps:!0,includeOnchainZaps:!0,zapBreaksBubbles:!0},re=3e4,ie=.18,ae=[28,74],oe=[34,58],se=[15,28],ce=[18,30],le=1850,ue=Array.from({length:9},(e,t)=>t*Math.PI*2/9);function S(e,t,n){return Math.min(n,Math.max(t,e))}function C(e,t){return e+Math.random()*(t-e)}function de(e,t){return Math.round(S(e*t/45e3,18,72))}function fe(e){return e===`root`?oe:e===`zap`?se:e===`reaction`?ce:ae}function w(e){return e===`note`||e===`reply`||e===`root`}function pe(e){return Math.PI*e*e}function me(e,t,n){let r=t/Math.max(n,1/(re/1e3))*(e===`root`?1.24:e===`zap`?.95:e===`reaction`?.26:1)*1e3;return e===`root`?S(r,14e3,7e4):e===`zap`?S(r,12e3,5e4):e===`reaction`?S(r,3500,12e3):S(r,8e3,6e4)}function he(e,t,n){let r=n*ie,i=t;for(let t of e)w(t.role)&&(i+=pe(t.radius));if(i<=r)return e;let a=e.filter(e=>w(e.role)).sort((e,t)=>e.createdAt-t.createdAt),o=new Set;for(let e of a){if(i<=r)break;o.add(e.id),i-=pe(e.radius)}return o.size>0?e.filter(e=>!o.has(e.id)):e}function ge(e,t){let n=Math.max(1,Math.floor(t)),r=[];for(let t=0;t<e.length;t+=n)r.push(e.slice(t,t+n));return r}var _e=9735,ve=8333,ye=/^[0-9a-f]{64}$/i;function T(e){return typeof e==`string`&&ye.test(e)}function be(e){if(typeof e==`string`&&e.trim())try{let t=new URL(e.includes(`://`)?e:`wss://${e}`);return t.protocol!==`wss:`&&t.protocol!==`ws:`?void 0:(t.hash=``,t.search=``,t.toString().replace(/\/$/,``))}catch{return}}function xe(e){let t=e[1];if(!T(t))return;let n=e[4];return{eventId:t.toLowerCase(),relayHint:be(e[2]),authorHint:T(n)?n.toLowerCase():void 0}}function Se(e){let t=e.tags.filter(e=>e[0]===`e`&&T(e[1])),n=t.find(e=>e[3]===`root`)??t[0],r=t.find(e=>e[3]===`reply`)??t.at(-1),i=n?xe(n):void 0,a=r?xe(r):void 0;if(t.length!==0)return i?{root:i,reply:a?.eventId===e.id?void 0:a}:void 0}function Ce(e){if(e)try{let t=new URL(e);return t.protocol===`https:`?t.toString():void 0}catch{return}}function we(e){let t=e.tags.filter(e=>e[0]===`e`&&T(e[1]));return(t.find(e=>e[3]===`root`)??t.find(e=>e[3]===`reply`)??t.find(e=>e[3]===`mention`)??t.at(-1))?.[1]?.toLowerCase()}function Te(e){let t=e.trim();return!t||t===`+`?`❤️`:t===`-`?`👎`:Array.from(t).slice(0,4).join(``)||`❤️`}function Ee(e){let t=E(e,`P`);if(T(t))return t.toLowerCase();let n=E(e,`description`);if(typeof n==`string`)try{let e=JSON.parse(n);return T(e.pubkey)?e.pubkey.toLowerCase():void 0}catch{return}}function De(e){let t=[E(e,`amount`)],n=E(e,`description`);if(typeof n==`string`)try{let e=JSON.parse(n).tags;if(Array.isArray(e)){let n=e.find(e=>Array.isArray(e)&&e[0]===`amount`&&typeof e[1]==`string`);t.push(n?.[1])}}catch{}for(let e of t){if(typeof e!=`string`)continue;let t=Number.parseInt(e,10);if(Number.isFinite(t)&&t>0)return Math.max(1,Math.round(t/1e3))}return je(E(e,`bolt11`))}function Oe(e){let t=E(e,`amount`);if(typeof t!=`string`)return;let n=Number.parseInt(t,10);return Number.isFinite(n)&&n>0?n:void 0}function ke(e){return e.tags.some(([t,n])=>t===`p`&&n===e.pubkey)}function Ae(e){return e.replace(/\s+/g,` `).trim()||`Empty note`}function je(e){if(typeof e!=`string`)return;let t=e.toLowerCase().match(/^ln(?:bc|tb|bcrt)(\d+)([munp]?)/);if(!t)return;let n=Number.parseInt(t[1],10);if(!Number.isFinite(n)||n<=0)return;let r=t[2],i=r===`m`?n*1e5:r===`u`?n*100:r===`n`?n/10:r===`p`?n/1e4:n*1e8;return Math.max(1,Math.round(i))}function E(e,t){return e.tags.find(e=>e[0]===t)?.[1]}var D=`data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 160 160%22%3E%3Cdefs%3E%3CradialGradient id=%22g%22 cx=%2235%25%22 cy=%2225%25%22 r=%2275%25%22%3E%3Cstop offset=%220%25%22 stop-color=%22%23f0f9ff%22/%3E%3Cstop offset=%2245%25%22 stop-color=%22%239be564%22/%3E%3Cstop offset=%22100%25%22 stop-color=%22%23e5c464%22/%3E%3C/radialGradient%3E%3C/defs%3E%3Crect width=%22160%22 height=%22160%22 rx=%2280%22 fill=%22url(%23g)%22/%3E%3Ccircle cx=%2280%22 cy=%2265%22 r=%2228%22 fill=%22white%22 fill-opacity=%22.9%22/%3E%3Cpath d=%22M36 134c8-28 26-43 44-43s36 15 44 43%22 fill=%22white%22 fill-opacity=%22.78%22/%3E%3C/svg%3E`,Me=500,Ne=400,Pe=800,Fe=8,Ie=200,O=[`wss://relay.ditto.pub`,`wss://relay.primal.net`,`wss://relay.damus.io`],Le=ee(),k={app:G(`#app`),effects:G(`#effects`),bubbleLayer:G(`#bubbleLayer`),footerBar:G(`#footerBar`),status:G(`#status`),message:G(`#message`),contactCount:G(`#contactCount`),noteCount:G(`#noteCount`),satsCount:G(`#satsCount`),orbCount:G(`#orbCount`),settingsOverlay:G(`#settingsOverlay`),closeSettingsButton:G(`#closeSettingsButton`),openSettingsButton:G(`#openSettingsButton`),restartButton:G(`#restartButton`),emptyState:G(`#emptyState`)},Re=null,ze=null,A=[],j=0,M=0,Be=0,Ve,N=performance.now(),P=`connecting`,F=0,He=0,Ue=0,I=0,L={...x},R=[],z=new Map,B=new Set,V=new Map,H=new Set,U=new Set,W=[];function G(e){let t=document.querySelector(e);if(!t)throw Error(`Missing required element: ${e}`);return t}function K(e){return!!globalThis.napplet?.[e]}function We(e){let t=e.bubbleDensityMode===`manual`?`manual`:`auto`;return{sourceMode:e.sourceMode===`contacts`?`contacts`:`popular`,bubbleDensityMode:t,bubbleTargetCount:S(Number(e.bubbleTargetCount??x.bubbleTargetCount),8,96),enableReactions:e.enableReactions!==!1,includeZaps:e.includeZaps!==!1,includeOnchainZaps:e.includeOnchainZaps!==!1,zapBreaksBubbles:e.zapBreaksBubbles!==!1}}function q(e,t){P=e,k.status.className=`footer-status status-${e}`,k.status.textContent=e.replace(`-`,` `),k.message.textContent=t}function J(){k.contactCount.textContent=F.toLocaleString(),k.noteCount.textContent=He.toLocaleString(),k.satsCount.textContent=I.toLocaleString(),k.orbCount.textContent=R.length.toLocaleString(),k.emptyState.classList.toggle(`hidden`,R.length>0||P===`live`)}function Ge(){let e=k.app.getBoundingClientRect();return{width:Math.max(160,e.width),height:Math.max(160,e.height)}}function Ke(e,t){return L.bubbleDensityMode===`auto`?de(e,t):L.bubbleTargetCount}function qe(){for(let e of A)e.close();A=[],j=0}function Je(){qe(),U.clear(),B.clear(),H.clear(),V.clear(),W=[],R=[],He=0,Ue=0,I=0,J()}async function Y(){let e=++M;if(Je(),F=0,q(`connecting`,L.sourceMode===`contacts`?`Reading shell identity and follows...`:`Opening popular relay streams...`),J(),L.sourceMode!==`contacts`){Xe(e);return}if(!K(`identity`)||!K(`outbox`)){q(`error`,`This shell did not grant NAP-IDENTITY and NAP-OUTBOX.`);return}let t=``;try{t=await o.getPublicKey()}catch(e){q(`error`,e instanceof Error?e.message:`Identity lookup failed.`);return}if(e!==M)return;if(!t){q(`no-identity`,`Connect an identity in the shell to watch your one-hop contact orbit.`);return}let n=[];try{n=[...new Set(await o.getFollows())]}catch(e){q(`error`,e instanceof Error?e.message:`Could not load follows from NAP-IDENTITY.`);return}if(e!==M)return;if(F=n.length,J(),n.length===0){q(`no-contacts`,`Your identity has no contacts to watch.`);return}let r=[1,7];L.includeZaps&&r.push(_e),L.includeOnchainZaps&&r.push(ve);let i=Math.floor(Date.now()/1e3)-Fe,a=ge(n,Ie);q(`connecting`,`Opening ${a.length.toLocaleString()} contact batch stream${a.length===1?``:`s`}...`);for(let t of a){if(e!==M)return;Ye(t,r,i,e)}}function Ye(e,t,n,r){let i=[{kinds:t,authors:e,since:n,limit:60}],a={authors:e,timeoutMs:5e3},o=l.subscribe(i,a);j+=1,o.on(`event`,e=>{r===M&&(q(`live`,`Watching ${F.toLocaleString()} one-hop contacts through NAP-OUTBOX.`),Qe(e.event))}),o.on(`closed`,()=>{r===M&&(j=Math.max(0,j-1),j===0&&q(`offline`,`The live stream closed. Try restarting.`))}),A.push(o),(async()=>{try{let{events:e}=await l.query(i,a);if(r!==M)return;for(let t of e)Qe(t.event);q(`live`,`Watching ${F.toLocaleString()} one-hop contacts through NAP-OUTBOX.`)}catch{r===M&&P===`connecting`&&q(`offline`,`Initial OUTBOX scan failed; waiting for live events.`)}})()}function Xe(e){if(!K(`relay`)){q(`error`,`This shell did not grant NAP-RELAY for popular relay mode.`);return}let t=[1,7];L.includeZaps&&t.push(_e),L.includeOnchainZaps&&t.push(ve);let n=[{kinds:t,since:Math.floor(Date.now()/1e3)-Fe,limit:120}];F=O.length,J();for(let t of O){let r=a.subscribe(n,t=>{e===M&&(q(`live`,`Watching ${O.length.toLocaleString()} popular relays through NAP-RELAY.`),Qe(t.event))},()=>{e===M&&P===`connecting`&&q(`live`,`Watching ${O.length.toLocaleString()} popular relays through NAP-RELAY.`)},{relay:t});A.push(r)}}function Ze(e){if(U.has(e))return!1;for(U.add(e);U.size>Pe;){let e=U.values().next().value;if(!e)break;U.delete(e)}return!0}function Qe(e){Ze(e.id)&&(e.kind===1?$e(e):e.kind===7&&L.enableReactions?et(e):e.kind===9735&&L.includeZaps?tt(e):e.kind===8333&&L.includeOnchainZaps&&nt(e))}function $e(e){He+=1,J();let t=Se(e),n=t?`reply`:`note`,r=fe(n),i=C(r[0],r[1]);X(e,{role:n,radius:i,rootEventId:t?.root.eventId,replyEventId:t?.reply?.eventId}),t?.root&&t.root.eventId!==e.id&&at(t.root,{role:`root`,maxRadius:i}),t?.reply&&t.reply.eventId!==e.id&&t.reply.eventId!==t.root.eventId&&at(t.reply,{role:`reply`,rootEventId:t.root.eventId,maxRadius:i})}function et(e){let t=we(e);t&&R.some(e=>e.eventId===t&&e.role!==`reaction`&&e.role!==`zap`)&&X({...e,content:Te(e.content)},{role:`reaction`,rootEventId:t})}function tt(e){let t=Ee(e),n=De(e);t&&n&&(Ue+=1,I+=n,J(),X({...e,pubkey:t,content:``},{role:`zap`,zapAmountSats:n}))}function nt(e){let t=Oe(e);t&&!ke(e)&&(Ue+=1,I+=t,J(),X({...e,content:``},{role:`zap`,zapAmountSats:t}))}async function X(e,t={}){let n=z.get(e.pubkey),r=t.role===`zap`?`${wt(t.zapAmountSats??0)} sats`:Ae(e.content);if(n)Z(e,n.imageUrl,n.shape,r,t);else if(B.has(e.pubkey)&&!t.reuseExisting)Z(e,D,void 0,r,t);else{B.add(e.pubkey);try{let n=await u.getProfile(e.pubkey),i=typeof n.profile?.picture==`string`?n.profile.picture:void 0,a=typeof n.profile?.shape==`string`?n.profile.shape:void 0,o=await rt(i);o.shape=a,it(e.pubkey,o),Z(e,o.imageUrl,a,r,t)}catch{let n={imageUrl:D};it(e.pubkey,n),Z(e,D,void 0,r,t)}finally{B.delete(e.pubkey)}}}async function rt(e){let t=Ce(e);if(!t||!K(`resource`))return{imageUrl:D};try{let e=await c.bytes(t),n=URL.createObjectURL(e);return{imageUrl:n,objectUrl:n}}catch{return{imageUrl:D}}}function it(e,t){for(z.set(e,t);z.size>Me;){let e=z.keys().next().value;if(!e)break;let t=z.get(e);t?.objectUrl&&URL.revokeObjectURL(t.objectUrl),z.delete(e)}}async function at(e,t){let n=V.get(e.eventId);if(n)X(n,{...t,reuseExisting:!0});else if(!(n===null||H.has(e.eventId))){H.add(e.eventId);try{let n=(await l.getEvent(e.eventId,{author:e.authorHint,timeoutMs:3e3})).result?.event;for(V.set(e.eventId,n??null);V.size>Ne;){let e=V.keys().next().value;if(!e)break;V.delete(e)}n&&X(n,{...t,reuseExisting:!0})}finally{H.delete(e.eventId)}}}function Z(e,t,n,r,i={}){let{width:a,height:o}=Ge(),s=i.role??`note`,c=fe(s),l=Math.min(i.radius??C(c[0],c[1]),i.maxRadius??1/0),u=performance.now(),d=Ke(a,o);W=[...W,u].filter(e=>u-e<=re);let f=me(s,d,W.length/(re/1e3))*C(.88,1.12),p=Math.min(112,d+12);if(i.reuseExisting){let i=R.find(t=>t.eventId===e.id&&t.role===s);if(i){i.expiresAt=Math.max(i.expiresAt,u+f),i.messagePreview=r,i.imageUrl=t,i.shape=n,J();return}}let m=R;if(s===`root`){let e=m.filter(e=>e.role===`root`);e.length>=18&&(m=m.filter(t=>t.id!==e[0]?.id))}let h=w(s)?pe(l):0;m=h>0?he(m,h,a*o):m;let g=Math.random()>.5,_=s===`root`?C(36,96):s===`zap`?C(620,1040):s===`reaction`?C(360,720):C(70,210),v=s===`zap`?C(-Math.PI*.32,Math.PI*.32):s===`reaction`?C(-Math.PI*.11,Math.PI*.11):C(0,Math.PI*2),y=g?v:Math.PI-v,b=s===`zap`?g?-l*C(2.6,6):a+l*C(2.6,6):s===`reaction`?g?-l*C(3.2,8):a+l*C(3.2,8):C(l,Math.max(l,a-l)),ee=s===`zap`||s===`reaction`?C(l+80,Math.max(l+80,o-l)):C(l+84,Math.max(l+84,o-l)),te={id:`${e.id}-${s}-${u}-${Math.random().toString(36).slice(2)}`,eventId:e.id,pubkey:e.pubkey,imageUrl:t,shape:n,messagePreview:r,x:b,y:ee,vx:Math.cos(s===`zap`||s===`reaction`?y:v)*_,vy:Math.sin(s===`zap`||s===`reaction`?y:v)*_,radius:l,createdAt:u,expiresAt:u+f,hue:s===`root`?C(34,62):s===`zap`?C(42,55):s===`reaction`?C(280,340):C(88,210),role:s,rootEventId:i.rootEventId,replyEventId:i.replyEventId,zapAmountSats:i.zapAmountSats,trail:s===`zap`?[{x:b,y:ee,time:u}]:void 0,enteredViewport:s!==`zap`&&void 0,targetSpeed:s===`zap`?_:void 0};R=[...m.slice(Math.max(0,m.length-p+1)),te],J()}function ot(e){let t=Math.min(.032,(e-(Ve??e))/1e3);Ve=e,N=e;let{width:n,height:r}=Ge(),i=R.filter(t=>t.expiresAt>e).map(e=>({...e,trail:e.trail?[...e.trail]:void 0}));for(let a of i)if(a.x+=a.vx*t,a.y+=a.vy*t,a.role===`reaction`){let t=Math.max(180,a.radius*8);(a.x<-t||a.x>n+t||a.y<-t||a.y>r+t)&&(a.expiresAt=e)}else if(a.role===`zap`){let i=a.x-a.radius>=0&&a.x+a.radius<=n&&a.y-a.radius>=0&&a.y+a.radius<=r;if(a.enteredViewport||=i,a.enteredViewport&&st(a,n,r),a.targetSpeed&&a.enteredViewport){let e=Math.hypot(a.vx,a.vy);if(e>.1&&e<a.targetSpeed){let n=e+(a.targetSpeed-e)*(1-Math.exp(-.5*t));a.vx*=n/e,a.vy*=n/e}}a.trail=[...a.trail??[],{x:a.x,y:a.y,time:e}].filter(t=>e-t.time<=le).slice(-34)}else st(a,n,r);ct(i,e),R=i,ut(),Be=window.requestAnimationFrame(ot)}function st(e,t,n){e.x-e.radius<0?(e.x=e.radius,e.vx=Math.abs(e.vx)):e.x+e.radius>t&&(e.x=t-e.radius,e.vx=-Math.abs(e.vx)),e.y-e.radius<0?(e.y=e.radius,e.vy=Math.abs(e.vy)):e.y+e.radius>n&&(e.y=n-e.radius,e.vy=-Math.abs(e.vy))}function ct(e,t){for(let n=0;n<e.length;n+=1)for(let r=n+1;r<e.length;r+=1){let i=e[n],a=e[r];if(i.role===`reaction`||a.role===`reaction`||i.explodingAt!==void 0||a.explodingAt!==void 0)continue;let o=a.x-i.x,s=a.y-i.y,c=Math.hypot(o,s)||.001,l=i.radius+a.radius;if(c>=l)continue;let u=o/c,d=s/c,f=l-c,p=i.radius*i.radius+a.radius*a.radius,m=i.role===`zap`?0:a.radius*a.radius/p,h=a.role===`zap`?0:i.radius*i.radius/p;i.x-=u*f*m,i.y-=d*f*m,a.x+=u*f*h,a.y+=d*f*h;let g=(a.vx-i.vx)*u+(a.vy-i.vy)*d;if(g>=0)continue;let _=i.role===`zap`||a.role===`zap`?1.08:.96,v=i.radius*i.radius,y=a.radius*a.radius,b=-(1+_)*g/(1/v+1/y);lt(i,a,t),i.vx-=b*u/v,i.vy-=b*d/v,a.vx+=b*u/y,a.vy+=b*d/y}}function lt(e,t,n){if(!L.zapBreaksBubbles)return;let r=e.role===`zap`?e:t.role===`zap`?t:null,i=r===e?t:r===t?e:null;if(!r||!i||!w(i.role))return;let a=Math.hypot(r.vx,r.vy);r.targetSpeed==null||a<r.targetSpeed*.9||(i.cracks=(i.cracks??0)+1,i.cracks>=2&&(i.explodingAt=n,i.expiresAt=n+560,i.vx*=.18,i.vy*=.18))}function ut(){dt(),ht(),J()}function dt(){let e=mt(),t=R.filter(e=>e.role===`zap`&&e.trail&&e.trail.length>1);k.effects.replaceChildren(Q(`defs`,{},[Q(`linearGradient`,{id:`thread-string-gradient`,x1:`0`,x2:`1`,y1:`0`,y2:`0`},[Q(`stop`,{offset:`0%`,"stop-color":`rgba(229,196,100,.85)`}),Q(`stop`,{offset:`100%`,"stop-color":`rgba(155,229,100,.72)`})])]),...t.flatMap(ft),...e.map(pt))}function ft(e){let t=e.trail??[],n=Q(`g`,{opacity:String(Math.min(.86,Math.max(0,(e.expiresAt-N)/1200)))});for(let r=1;r<t.length;r+=1){let i=t[r-1],a=t[r],o=r/(t.length-1);n.append(Q(`line`,{x1:i.x,y1:i.y,x2:a.x,y2:a.y,stroke:`hsla(${e.hue}, 96%, 63%, ${.03+o*.22})`,"stroke-linecap":`round`,"stroke-width":e.radius*(.28+o*1.08)}),Q(`line`,{x1:i.x,y1:i.y,x2:a.x,y2:a.y,stroke:`hsla(${e.hue}, 100%, 72%, ${.08+o*.72})`,"stroke-linecap":`round`,"stroke-width":Math.max(2.5,e.radius*(.08+o*.4))}))}return[n]}function pt({from:e,to:t,relation:n,id:r}){let i=Math.min(Math.min(1,Math.max(0,(e.expiresAt-N)/2200)),Math.min(1,Math.max(0,(t.expiresAt-N)/2200)),n===`root`?.82:.68),a=(e.x+t.x)/2,o=(e.y+t.y)/2-Math.min(88,Math.hypot(t.x-e.x,t.y-e.y)*.12);return Q(`g`,{opacity:i,"data-id":r},[Q(`path`,{d:`M ${e.x} ${e.y} Q ${a} ${o} ${t.x} ${t.y}`,fill:`none`,stroke:n===`root`?`url(#thread-string-gradient)`:`rgba(168,85,247,.72)`,"stroke-linecap":`round`,"stroke-width":n===`root`?2.5:2,"stroke-dasharray":n===`root`?`7 9`:`3 8`}),Q(`circle`,{cx:e.x,cy:e.y,r:n===`root`?4:3.5,fill:n===`root`?`rgba(229,196,100,.9)`:`rgba(168,85,247,.8)`}),Q(`circle`,{cx:t.x,cy:t.y,r:3,fill:`rgba(155,229,100,.8)`})])}function mt(){let e=new Map,t=new Map;for(let n of R)n.role===`root`&&e.set(n.eventId,n),n.role!==`zap`&&n.role!==`reaction`&&t.set(n.eventId,n);return R.flatMap(n=>{if(n.role!==`reply`)return[];let r=[],i=n.rootEventId?e.get(n.rootEventId):void 0,a=n.replyEventId&&n.replyEventId!==n.rootEventId?t.get(n.replyEventId):void 0;return i&&i.id!==n.id&&r.push({id:`${i.id}-${n.id}-root`,from:i,to:n,relation:`root`}),a&&a.id!==n.id&&r.push({id:`${a.id}-${n.id}-reply`,from:a,to:n,relation:`reply`}),r})}function ht(){k.bubbleLayer.replaceChildren(...R.map(gt))}function gt(e){let t=N-e.createdAt,n=Math.min(1,Math.max(0,(e.expiresAt-N)/2200)),r=Math.min(1,t/450),i=Math.min(r,n),a=document.createElement(`div`);return a.className=`bubble bubble-${e.role}`,a.style.width=`${e.role===`reaction`?e.radius*5.4:e.radius*2}px`,a.style.height=`${e.role===`reaction`?e.radius*2.45:e.radius*2}px`,a.style.transform=`translate3d(${e.x-e.radius}px, ${e.y-e.radius}px, 0)`,a.style.opacity=`${e.role===`reaction`?i*.82:i}`,a.style.filter=`drop-shadow(0 0 ${Math.round(e.radius*(e.role===`zap`?1.25:e.role===`reaction`?1.9:.62))}px hsla(${e.hue}, 95%, 62%, ${e.role===`zap`||e.role===`reaction`?`.9`:`.55`}))`,e.role===`reaction`?_t(a,e):vt(a,e),a}function _t(e,t){let n=yt(t,`Nostr reaction avatar`),r=document.createElement(`div`);r.className=`reaction-emoji`,r.textContent=t.messagePreview.slice(0,4),e.append(n,r)}function vt(e,t){let n=t.explodingAt!==void 0,r=n?Math.min(1,Math.max(0,(N-(t.explodingAt??N))/560)):0,i=yt(t,`Nostr ${t.role} orb`);i.classList.add(`orb-core`),i.style.setProperty(`--hue`,String(t.hue)),(t.cracks??0)>0&&i.append(St(t.cracks??0)),n?(i.style.opacity=`${Math.max(0,(1-r)*.85)}`,i.style.transform=`scale(${1+r*.18})`,e.append(i,Ct(t,r))):e.append(i,xt(t))}function yt(e,t){let n=document.createElement(`div`);if(n.className=e.shape?`avatar avatar-shaped`:`avatar`,e.shape){let t=te(e.shape);t&&(n.style.maskImage=`url(${t})`,n.style.webkitMaskImage=`url(${t})`)}let r=document.createElement(`img`);return r.src=e.imageUrl,r.alt=t,r.draggable=!1,r.addEventListener(`error`,()=>{r.src=D}),n.append(r,bt()),n}function bt(){let e=document.createElement(`div`);return e.className=`avatar-gloss`,e}function xt(e){let t=document.createElement(`div`);return t.className=`bubble-label label-${e.role}`,e.role===`zap`?t.innerHTML=`<span class="label-kicker">zap</span><strong>${wt(e.zapAmountSats??0)}</strong><span>sats</span>`:t.textContent=e.messagePreview,t}function St(e){let t=Q(`svg`,{class:`cracks`,viewBox:`0 0 100 100`,preserveAspectRatio:`none`});return t.append(Q(`path`,{d:`M 8 52 L 30 44 L 42 56 L 56 38 L 70 52 L 92 46`}),Q(`path`,{d:`M 30 44 L 24 30`}),Q(`path`,{d:`M 56 38 L 60 22`})),e>=2&&t.append(Q(`path`,{d:`M 48 8 L 56 30 L 42 44 L 58 60 L 44 78 L 52 92`}),Q(`path`,{d:`M 56 30 L 70 24`}),Q(`path`,{d:`M 58 60 L 76 64`})),t}function Ct(e,t){let n=document.createElement(`div`);n.className=`explosion`,n.style.setProperty(`--hue`,String(e.hue));let r=document.createElement(`div`);r.className=`explosion-ring`,r.style.width=`${e.radius*2*(1+t*1.7)}px`,r.style.height=r.style.width,r.style.opacity=`${1-t}`,n.append(r);for(let r=0;r<ue.length;r+=1){let i=ue[r],a=document.createElement(`div`);a.className=`explosion-particle`;let o=e.radius*(1.05+t*2.3),s=Math.max(2,e.radius*.22*(1-t*.5));a.style.width=`${s}px`,a.style.height=`${s}px`,a.style.transform=`translate(${Math.cos(i)*o-s/2}px, ${Math.sin(i)*o-s/2}px)`,a.style.opacity=`${1-t}`,n.append(a)}return n}function Q(e,t={},n=[]){let r=document.createElementNS(`http://www.w3.org/2000/svg`,e);for(let[e,n]of Object.entries(t))r.setAttribute(e,String(n));return r.append(...n),r}function wt(e){return new Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(e)}function Tt(){k.footerBar.addEventListener(`click`,Ot),k.closeSettingsButton.addEventListener(`click`,$),k.openSettingsButton.addEventListener(`click`,()=>{try{s.openSettings()}catch{q(`error`,`This shell did not grant NAP-CONFIG settings.`)}}),k.settingsOverlay.addEventListener(`click`,e=>{e.target===k.settingsOverlay&&$()}),k.settingsOverlay.addEventListener(`keydown`,Et),k.restartButton.addEventListener(`click`,()=>{Y()})}function Et(e){if(k.settingsOverlay.classList.contains(`hidden`))return;if(e.key===`Escape`){e.preventDefault(),$();return}if(e.key!==`Tab`)return;let t=Dt();if(t.length===0)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}function Dt(){return Array.from(k.settingsOverlay.querySelectorAll(`button:not([disabled]), input:not([disabled]), select:not([disabled])`)).filter(e=>e.offsetParent!==null)}function Ot(){k.settingsOverlay.classList.remove(`hidden`),k.footerBar.setAttribute(`aria-expanded`,`true`),Dt()[0]?.focus()}function $(){k.settingsOverlay.classList.add(`hidden`),k.footerBar.setAttribute(`aria-expanded`,`false`),k.footerBar.focus()}async function kt(){if(Tt(),K(`config`))try{L=We(await s.get()),ze=s.subscribe(e=>{let t=We(e);JSON.stringify(t)!==JSON.stringify(L)&&(L=t,J(),Y())})}catch{L={...x}}if(K(`identity`))try{Re=o.onChanged(()=>{Y()})}catch{}Be=window.requestAnimationFrame(ot),await Y()}window.addEventListener(`pagehide`,()=>{M+=1,qe(),Re?.close(),ze?.close(),Le.close(),window.cancelAnimationFrame(Be);for(let e of z.values())e.objectUrl&&URL.revokeObjectURL(e.objectUrl)}),kt().catch(e=>{q(`error`,e instanceof Error?e.message:`Nostr Bubbles failed to start.`)});</script>
<style rel="stylesheet" crossorigin>*,:before,:after{box-sizing:border-box;border-style:solid;border-width:0;border-color:var(--un-default-border-color,#e5e7eb)}:before,:after{--un-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html,body,#app{width:100%;height:100%;margin:0}:root{color-scheme:var(--hg-color-scheme,dark);--napplet-text-selection:none}*{box-sizing:border-box}:where(html,body,body *){-webkit-user-select:var(--napplet-text-selection,none);user-select:var(--napplet-text-selection,none)}button{font:inherit}.bubble-stage{isolation:isolate;background:rgb(var(--hg-bg-base-rgb,20 17 12));width:100%;height:100%;color:rgb(var(--hg-text-primary-rgb,245 241 232));font-family:var(--hg-font-body,ui-monospace, monospace);position:relative;overflow:hidden}.space-backdrop,.space-backdrop:before,.space-backdrop:after{pointer-events:none;position:absolute;inset:0}.space-backdrop{z-index:-3;background:radial-gradient(circle at 18% 22%, rgba(var(--hg-accent-green-rgb,155 229 100) / .2), transparent 30%), radial-gradient(circle at 78% 18%, #a855f738, transparent 28%), radial-gradient(circle at 52% 80%, rgba(var(--hg-accent-amber-rgb,229 196 100) / .17), transparent 34%), linear-gradient(135deg, rgb(var(--hg-bg-overlay-rgb,8 7 6)) 0%, rgb(var(--hg-bg-base-rgb,20 17 12)) 52%, #030303 100%)}:root[data-hg-theme=light] .space-backdrop{background:radial-gradient(circle at 14% 18%, rgba(var(--hg-accent-green-rgb,34 197 94) / .28), transparent 30%), radial-gradient(circle at 82% 16%, #818cf838, transparent 30%), radial-gradient(circle at 50% 86%, rgba(var(--hg-accent-amber-rgb,245 158 11) / .24), transparent 34%), linear-gradient(135deg, rgb(var(--hg-bg-overlay-rgb,255 255 255)) 0%, rgb(var(--hg-bg-base-rgb,248 250 252)) 58%, rgb(var(--hg-bg-surface-rgb,241 245 249)) 100%)}.space-backdrop:before{content:"";opacity:.24;background-image:radial-gradient(circle,#ffffff73 0 1px,#0000 1px);background-size:34px 34px}.space-backdrop:after{content:"";background:linear-gradient(#000000ad,#0000 26% 72%,#000000b8)}:root[data-hg-theme=light] .space-backdrop:before{opacity:.38;background-image:radial-gradient(circle at center, rgba(var(--hg-text-primary-rgb,15 23 42) / .14) 0 1px, transparent 1px)}:root[data-hg-theme=light] .space-backdrop:after{background:linear-gradient(#ffffffbd,#0000 26% 72%,#ffffffc7)}.effects-layer,.bubble-layer{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.effects-layer{z-index:0}.bubble-layer{z-index:1}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.footer-bar:focus-visible,.controls button:focus-visible,.setting-row input:focus-visible,.setting-row select:focus-visible,.setting-row:focus-visible,.icon-button:focus-visible{outline:2px solid rgb(var(--hg-accent-green-rgb,155 229 100));outline-offset:2px}.eyebrow,.title{display:block}.eyebrow{color:rgba(var(--hg-accent-green-rgb,155 229 100) / .82);letter-spacing:.18em;text-transform:uppercase;font-size:.72rem;font-weight:800}.footer-bar{z-index:4;border:1px solid rgba(var(--hg-border-default-rgb,74 69 60) / .62);background:rgba(var(--hg-bg-overlay-rgb,8 7 6) / .68);min-height:2.45rem;color:rgba(var(--hg-text-secondary-rgb,216 208 192) / .9);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:clamp(.45rem,2vmin,1rem);padding:.42rem .7rem;font-size:clamp(.68rem,1.7vmin,.86rem);display:flex;position:absolute;bottom:clamp(.45rem,2vmin,1rem);left:clamp(.45rem,2vmin,1rem);right:clamp(.45rem,2vmin,1rem);box-shadow:0 1rem 3rem #00000061}.footer-bar strong{color:rgb(var(--hg-text-primary-rgb,245 241 232));font-size:1.08em;font-weight:950}.footer-brand,.footer-settings{color:rgb(var(--hg-accent-green-rgb,155 229 100));text-transform:uppercase;letter-spacing:.08em;font-weight:950}.footer-settings{color:rgb(var(--hg-accent-amber-rgb,229 196 100))}.footer-status{white-space:nowrap;text-transform:uppercase;border:1px solid #0000;border-radius:999px;padding:.28rem .55rem;font-size:.72em;font-weight:900}.status-connecting,.status-idle{border-color:rgba(var(--hg-accent-amber-rgb,229 196 100) / .4);background:rgba(var(--hg-accent-amber-rgb,229 196 100) / .14);color:rgb(var(--hg-accent-amber-rgb,229 196 100))}.status-live{border-color:rgba(var(--hg-accent-green-rgb,155 229 100) / .44);background:rgba(var(--hg-accent-green-rgb,155 229 100) / .14);color:rgb(var(--hg-accent-green-rgb,155 229 100))}.status-offline,.status-error,.status-no-identity,.status-no-contacts{border-color:rgba(var(--hg-accent-red-rgb,255 115 105) / .42);background:rgba(var(--hg-accent-red-rgb,255 115 105) / .13);color:rgb(var(--hg-accent-red-rgb,255 115 105))}.message{color:rgba(var(--hg-text-secondary-rgb,216 208 192) / .82);margin:0;font-size:.86rem;line-height:1.45}.controls{flex-wrap:wrap;gap:.5rem;display:flex}.controls button{border:1px solid rgba(var(--hg-border-default-rgb,74 69 60) / .75);background:rgba(var(--hg-bg-elevated-rgb,36 32 22) / .74);color:rgb(var(--hg-text-primary-rgb,245 241 232));cursor:pointer;border-radius:999px;padding:.55rem .8rem}.controls button:hover{background:rgba(var(--hg-accent-green-rgb,155 229 100) / .18)}.settings-overlay{z-index:5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0000006b;place-items:end center;padding:clamp(.75rem,3vmin,1.5rem);display:grid;position:absolute;inset:0}:root[data-hg-theme=light] .settings-overlay{background:rgba(var(--hg-bg-base-rgb,248 250 252) / .48)}.settings-overlay.hidden{display:none}.settings-card{border:1px solid rgba(var(--hg-border-default-rgb,74 69 60) / .75);background:rgba(var(--hg-bg-overlay-rgb,8 7 6) / .88);width:min(34rem,100%);max-height:min(34rem,100% - 1rem);color:rgb(var(--hg-text-primary-rgb,245 241 232));border-radius:1.35rem;padding:clamp(.7rem,2.2vmin,1rem);overflow:auto;box-shadow:0 1.5rem 5rem #0000008c}.settings-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}.settings-head h2{text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:1rem;line-height:1.2}.icon-button{border:1px solid rgba(var(--hg-border-default-rgb,74 69 60) / .8);width:2rem;height:2rem;color:rgb(var(--hg-text-primary-rgb,245 241 232));cursor:pointer;background:#ffffff14;border-radius:999px;place-items:center;display:grid}.settings-summary{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.42rem;margin:.65rem 0;display:grid}.setting-row{border:1px solid rgba(var(--hg-border-dim-rgb,58 58 58) / .72);width:100%;color:inherit;text-align:left;background:#fff1;border-radius:.95rem;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.45rem;padding:.5rem .62rem;display:grid}.setting-row:focus-within,.setting-row:hover{background:rgba(var(--hg-accent-green-rgb,155 229 100) / .12)}.setting-row span{color:rgba(var(--hg-text-secondary-rgb,216 208 192) / .88);font-weight:800}.setting-row input,.setting-row select{border:1px solid rgba(var(--hg-border-default-rgb,74 69 60) / .78);background:rgba(var(--hg-bg-elevated-rgb,36 32 22) / .84);min-width:0;color:rgb(var(--hg-text-primary-rgb,245 241 232));border-radius:999px;padding:.32rem .5rem}.setting-row input[type=number]{width:5.1rem}.setting-row input[type=checkbox]{width:1.35rem;height:1.35rem;accent-color:rgb(var(--hg-accent-green-rgb,155 229 100))}.empty-state{z-index:2;text-align:center;pointer-events:none;place-content:center;padding:1.5rem;display:grid;position:absolute;inset:0}.empty-state.hidden{display:none}.empty-state>*{max-width:34rem}.spark{border:1px solid rgba(var(--hg-accent-green-rgb,155 229 100) / .32);background:rgba(var(--hg-bg-overlay-rgb,8 7 6) / .34);width:3.5rem;height:3.5rem;color:rgb(var(--hg-accent-green-rgb,155 229 100));box-shadow:0 0 2rem rgba(var(--hg-accent-green-rgb,155 229 100) / .22);border-radius:999px;place-items:center;margin-inline:auto;font-size:2rem;display:grid}.empty-state h2{margin:1rem 0 .35rem;font-size:clamp(1.4rem,5vmin,2.5rem)}.empty-state p{color:rgba(var(--hg-text-secondary-rgb,216 208 192) / .76);margin:0}.bubble{pointer-events:none;will-change:transform;position:absolute}.bubble-note,.bubble-reply,.bubble-root{z-index:2}.bubble-zap{z-index:3}.bubble-reaction{z-index:1;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000038;border:1px solid #ffffff29;border-radius:999px;align-items:center;gap:.35rem;padding:.2rem;display:flex}:root[data-hg-theme=light] .bubble-reaction{border-color:rgba(var(--hg-border-default-rgb,203 213 225) / .38);background:#ffffff85}.avatar{background:#00000059;border:2px solid #ffffffb8;border-radius:999px;width:100%;height:100%;position:relative;overflow:hidden;box-shadow:inset 0 0 1.1rem #ffffff75}:root[data-hg-theme=light] .avatar{box-shadow:inset 0 0 1.2rem #ffffffb8, 0 .45rem 1.4rem rgba(var(--hg-text-primary-rgb,15 23 42) / .16);background:#ffffff94;border-color:#ffffffeb}.avatar-shaped{border:0;border-radius:0;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.avatar img{object-fit:cover;width:100%;height:100%}.avatar-gloss{border-radius:inherit;background:radial-gradient(circle at 32% 24%,#ffffffb8,#0000 18%),linear-gradient(135deg,#ffffff3d,#0000 45%,#00000061);position:absolute;inset:0}.orb-core:before{content:"";z-index:-1;border-radius:inherit;background:hsl(var(--hue) 95% 58% / .38);filter:blur(.5rem);position:absolute;inset:-.5rem}.bubble-root .avatar{border-color:rgb(var(--hg-accent-amber-rgb,229 196 100));box-shadow:0 0 2rem rgba(var(--hg-accent-amber-rgb,229 196 100) / .24), inset 0 0 1.1rem #ffffff75}.bubble-reply .avatar{border-color:rgba(var(--hg-accent-green-rgb,155 229 100) / .88)}.bubble-zap .avatar{border-color:rgba(var(--hg-accent-amber-rgb,229 196 100) / .92);box-shadow:0 0 1.6rem rgba(var(--hg-accent-amber-rgb,229 196 100) / .48), inset 0 0 1.1rem #ffffff75}.bubble-reaction .avatar{aspect-ratio:1;border-width:1px;width:auto}.reaction-emoji{background:#ffffff1f;border:1px solid #ffffff24;border-radius:999px;place-items:center;min-width:2rem;padding:.25rem .45rem;font-size:1.1rem;font-weight:950;display:grid}.bubble-label{width:min(14rem,max(7.25rem,310%));color:rgba(var(--hg-text-primary-rgb,245 241 232) / .86);text-align:center;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0000007a;border:1px solid #ffffff24;border-radius:.8rem;-webkit-box-orient:vertical;padding:.45rem .6rem;font-size:.68rem;font-weight:700;line-height:1.25;display:-webkit-box;position:absolute;top:calc(100% + .45rem);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 .75rem 1.5rem #00000047}:root[data-hg-theme=light] .bubble-label{border-color:rgba(var(--hg-border-default-rgb,203 213 225) / .38);color:rgba(var(--hg-text-primary-rgb,15 23 42) / .9);box-shadow:0 .75rem 1.8rem rgba(var(--hg-text-primary-rgb,15 23 42) / .16);background:#ffffffb8}.label-zap{border-color:rgba(var(--hg-accent-amber-rgb,229 196 100) / .34);width:min(7rem,max(4.5rem,410%));color:rgb(var(--hg-text-primary-rgb,245 241 232));-webkit-line-clamp:unset;background:#281c00b8;display:grid}:root[data-hg-theme=light] .label-zap{background:rgba(var(--hg-accent-amber-rgb,245 158 11) / .18);color:rgb(var(--hg-text-primary-rgb,15 23 42))}.label-zap strong{font-size:.95rem}.label-kicker,.label-zap span:last-child{color:rgba(var(--hg-accent-amber-rgb,229 196 100) / .86);letter-spacing:.16em;text-transform:uppercase;font-size:.55rem;font-weight:950}.cracks{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.cracks path{stroke:#fffffff5;stroke-width:2.3px;stroke-linecap:round;stroke-linejoin:round;fill:none;filter:drop-shadow(0 0 1.2px #000000d9)}.explosion{pointer-events:none;position:absolute;top:50%;left:50%}.explosion-ring,.explosion-particle{border-radius:999px;position:absolute;top:0;left:0}.explosion-ring{border:.18rem solid hsl(var(--hue) 100% 72%);box-shadow:0 0 2rem hsl(var(--hue) 100% 70% / .55);transform:translate(-50%,-50%)}.explosion-particle{background:hsl(var(--hue) 100% 70%);box-shadow:0 0 .8rem hsl(var(--hue) 100% 72% / .85)}@media (width<=360px),(height<=300px){.footer-bar{scrollbar-width:none;justify-content:start;overflow-x:auto}.footer-bar::-webkit-scrollbar{display:none}.footer-status,.footer-brand,.bubble-label{display:none}}@media (height<=220px){.settings-overlay,.empty-state p{display:none}}
/*$vite$:1*/</style>
</head>
<body>
<main id="app" class="bubble-stage" aria-label="Nostr Bubbles">
<div class="space-backdrop" aria-hidden="true"></div>
<svg id="effects" class="effects-layer" aria-hidden="true"></svg>
<div id="bubbleLayer" class="bubble-layer" aria-hidden="true"></div>
<header class="visually-hidden" aria-labelledby="app-title">
<h1 id="app-title">Nostr Bubbles</h1>
</header>
<section id="emptyState" class="empty-state">
<div class="spark">*</div>
<h2>Waiting for Nostr activity</h2>
<p>Notes become profile bubbles. Zaps become fast comets.</p>
</section>
<button
id="footerBar"
class="footer-bar"
type="button"
aria-haspopup="dialog"
aria-controls="settingsOverlay"
aria-expanded="false"
>
<span class="footer-brand">Nostr Bubbles</span>
<output id="status" class="footer-status status-idle">Booting</output>
<span><strong id="contactCount">0</strong> sources</span>
<span><strong id="noteCount">0</strong> notes</span>
<span><strong id="satsCount">0</strong> sats</span>
<span><strong id="orbCount">0</strong> orbs</span>
<span class="footer-settings">settings</span>
</button>
<section
id="settingsOverlay"
class="settings-overlay hidden"
role="dialog"
aria-modal="true"
aria-labelledby="settingsTitle"
>
<div class="settings-card">
<div class="settings-head">
<h2 id="settingsTitle">Settings</h2>
<button
id="closeSettingsButton"
class="icon-button"
type="button"
aria-label="Close settings"
>
x
</button>
</div>
<p id="message" class="message">Loading shell identity...</p>
<div class="controls">
<button id="openSettingsButton" type="button">Open shell settings</button>
<button id="restartButton" type="button">Restart stream</button>
</div>
</div>
</section>
</main>
</body>
</html>
