Repository: sebp/scikit-survival (language: python)

Issue:
KM_variance_estimator
<!--
Thanks for contributing a pull request! Please ensure you have taken a look at
the contribution guidelines: https://scikit-survival.readthedocs.io/en/latest/contributing.html#making-changes-to-the-code
-->

**Checklist**
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

- [x] py.test passes
- [x] tests are included
- [x] code is well formatted
- [ ] documentation renders correctly

**What does this implement/fix? Explain your changes**

Hi @sebp,
I added the Greenwood's estimation of KM variance to nonparametric.py (this is a prerequesite for implementing some goodness-of-fit tests).
NB:  I ran tox -e py310-docs but for some reason the new function does not not appear in the API doc. 
Best,


Discussion / hints:

Fix patch:
diff --git a/doc/user_guide/00-introduction.ipynb b/doc/user_guide/00-introduction.ipynb
index 72b98010..e81138c6 100644
--- a/doc/user_guide/00-introduction.ipynb
+++ b/doc/user_guide/00-introduction.ipynb
@@ -90,7 +90,9 @@
   {
    "cell_type": "code",
    "execution_count": 1,
-   "metadata": {},
+   "metadata": {
+    "tags": []
+   },
    "outputs": [
     {
      "data": {
@@ -175,7 +177,9 @@
   {
    "cell_type": "code",
    "execution_count": 2,
-   "metadata": {},
+   "metadata": {
+    "tags": []
+   },
    "outputs": [
     {
      "data": {
@@ -264,7 +268,9 @@
   {
    "cell_type": "code",
    "execution_count": 3,
-   "metadata": {},
+   "metadata": {
+    "tags": []
+   },
    "outputs": [
     {
      "data": {
@@ -278,14 +284,12 @@
     },
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
      },
-     "metadata": {
-      "needs_background": "light"
-     },
+     "metadata": {},
      "output_type": "display_data"
     }
    ],
@@ -294,8 +298,12 @@
     "import matplotlib.pyplot as plt\n",
     "from sksurv.nonparametric import kaplan_meier_estimator\n",
     "\n",
-    "time, survival_prob = kaplan_meier_estimator(data_y[\"Status\"], data_y[\"Survival_in_days\"])\n",
+    "time, survival_prob, conf_int = kaplan_meier_estimator(\n",
+    "    data_y[\"Status\"], data_y[\"Survival_in_days\"], conf_type=\"log-log\"\n",
+    ")\n",
     "plt.step(time, survival_prob, where=\"post\")\n",
+    "plt.fill_between(time, conf_int[0], conf_int[1], alpha=0.25, step=\"post\")\n",
+    "plt.ylim(0, 1)\n",
     "plt.ylabel(\"est. probability of survival $\\hat{S}(t)$\")\n",
     "plt.xlabel(\"time $t$\")"
    ]
@@ -321,7 +329,9 @@
   {
    "cell_type": "code",
    "execution_count": 4,
-   "metadata": {},
+   "metadata": {
+    "tags": []
+   },
    "outputs": [
     {
      "data": {
@@ -355,12 +365,14 @@
   {
    "cell_type": "code",
    "execution_count": 5,
-   "metadata": {},
+   "metadata": {
+    "tags": []
+   },
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "<matplotlib.legend.Legend at 0x7fd9af20c550>"
+       "<matplotlib.legend.Legend at 0x7f3d7de38490>"
       ]
      },
      "execution_count": 5,
@@ -369,27 +381,29 @@
     },
     {
      "data": {
-      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEICAYAAABBBrPDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAn30lEQVR4nO3deZhU9ZX/8fexZRUUBdxYBB1GARtbbGk0kJ+EaFxCMA5ERRNBjSJqEp1kNM9kFBOTuEUniQsyIGokbkQjJhiNCjGCEFARZNGgQGxsFUFZFGTx/P64t9qiqK7ue7uqa+nP63nqqbq37nJuA3347ubuiIiI1GWPfAcgIiKFTYlCREQyUqIQEZGMlChERCQjJQoREcloz3wHkG2dOnXyHj165DsMEZGi8vLLL3/o7p3TfVdyiaJHjx4sWLAg32GIiBQVM1td13eqehIRkYyUKEREJKO8Jgozu8fMPjCz1+v43szsN2a2wswWmVn/po5RRKS5y3cbxb3A7cD9dXx/CtArfFUBd4XvIs3W9u3bqa6uZuvWrfkORYpQ69at6dq1Ky1atGjwOXlNFO7+gpn1yHDIcOB+DyakmmtmHczsIHevaZoIRQpPdXU17du3p0ePHphZvsORIuLurFu3jurqanr27Nng8wq9jaIL8E7SdnW4bxdmdpGZLTCzBWvXrm2y4ETyYevWrXTs2FFJQiIzMzp27Bi5NFroiSLdv4Tdprt194nuXunulZ07p+0GLFJSlCQkrjh/d/LdRlGfaqBb0nZX4N1c3ey6J5ew9N2NDK/owqiq7rm6jYhIUSn0EsV04Dth76eBwIZct0/MW7meJxauyeUtRIraunXrqKiooKKiggMPPJAuXbrUbm/bti3WNWfNmsWcOXOyHGnT3+fee+/l3Xez93/ZE044oVEDiGfNmsXXv/71RseR1xKFmT0InAB0MrNq4FqgBYC7TwBmAKcCK4BPgTG5jOfaYX1Z+u7GXN5CpOh17NiRhQsXAjB+/HjatWvHD3/4w9rvd+zYwZ57RvvVMmvWLNq1a8fxxx+fzVCb/D733nsvRx55JAcffHBOrl+fnTt3UlZWlvXr5rvX09n1fO/ApU0UDjx1NedtqOG+fcY22S1FSsHo0aPZb7/9ePXVV+nfvz/jxo3j0ksvZe3atbRt25b/+7//44gjjuDJJ5/k+uuvZ9u2bXTs2JGpU6eyZcsWJkyYQFlZGQ888AC//e1vmTx5Mm3atGH58uWsXr2aKVOmcN999/HSSy9RVVXFvffeC8AzzzzDtddey2effcZhhx3GlClTaNeuHT169OC8887jySefZPv27Tz66KO0bt16t/sMHjw41vPu3LmTCy64gAULFmBmnH/++XTr1o0FCxZwzjnn0KZNG1566SVuvvlmnnzySbZs2cLxxx/P3XffjZlxwgknUFVVxcyZM/n444+ZPHkygwcPZsuWLYwZM4alS5fSu3dvtmzZUnvPSy65hPnz57NlyxZGjBjBddddBwTTFp1//vk888wzXHbZZXTo0IEf/OAHdOrUif79szP0rNDbKJrWe4s5ZMeGfEch0mCJdrVs6nPw3lw7rG/k8958802effZZysrKGDp0KBMmTKBXr17MmzePcePG8fzzzzNo0CDmzp2LmTFp0iRuuukmfvWrXzF27NhdSiaTJ0/mo48+4vnnn2f69OkMGzaM2bNnM2nSJI499lgWLlxI165duf7663n22WfZa6+9uPHGG7n11lu55pprAOjUqROvvPIKd955J7fccguTJk3a7T7JZs6cyRVXXLHb/rZt2+5WXbVw4ULWrFnD668HY4U//vhjOnTowO23384tt9xCZWUlAJdddlltPN/+9rf505/+xLBhw4Cg5PWPf/yDGTNmcN111/Hss89y11130bZtWxYtWsSiRYt2+UX/85//nP3224+dO3cydOhQFi1aRL9+/YBgbMSLL77I1q1b6dWrF88//zz/9m//xplnnhn5zzEdJQoRyYqRI0dSVlbG5s2bmTNnDiNHjqz97rPPPgOCMSBnnnkmNTU1bNu2LWNf/mHDhmFmlJeXc8ABB1BeXg5A3759WbVqFdXV1SxdupQvfelLAGzbto3jjjuu9vwzzjgDgGOOOYbHHnus3viHDBlSW6VWn0MPPZS3336byy+/nNNOO42TTjop7XEzZ87kpptu4tNPP2X9+vX07du3NlEkx7dq1SoAXnjhBb73ve8B0K9fv9pEAPDII48wceJEduzYQU1NDUuXLq39PpEQli9fTs+ePenVqxcA5557LhMnTmzQM2WiRJGi77bFHPqvR/n9PPV8ksIX53/+ubLXXnsB8Pnnn9OhQ4e0v3Qvv/xyrrzySr7xjW8wa9Ysxo8fX+f1WrVqBcAee+xR+zmxvWPHDsrKyjjxxBN58MEHM55fVlbGjh076o0/Soli33335bXXXuPpp5/mjjvu4JFHHuGee+7Z5ZitW7cybtw4FixYQLdu3Rg/fvwu4xfqii9d99WVK1dyyy23MH/+fPbdd19Gjx69y7USP/u6zm+sQu/11LTKRwAwvGyOej6JxLT33nvTs2dPHn30USAYDfzaa68BsGHDBrp0CcbM3nfffbXntG/fnk2bNkW6z8CBA5k9ezYrVqwA4NNPP+XNN9/MeE6m+yRKFKmvdL2kPvzwQz7//HP+4z/+g5/97Ge88soru10/8Yu8U6dObN68mWnTptX7TF/+8peZOnUqAK+//jqLFi0CYOPGjey1117ss88+vP/++zz11FNpzz/iiCNYuXIlb731FkCdSTQqJYpklWPgkEG0b62ClkhjTJ06lcmTJ3PUUUfRt29fnnjiCSDoJTVy5EgGDx5Mp06dao8fNmwYjz/+OBUVFfz9739v0D06d+7Mvffey9lnn02/fv0YOHAgy5cvz3hOnPuks2bNGk444QQqKioYPXo0v/zlL4GgUX/s2LFUVFTQqlUrvvvd71JeXs7pp5/OscceW+91L7nkEjZv3ky/fv246aabGDBgAABHHXUURx99NH379uX888+vrW5L1bp1ayZOnMhpp53GoEGDOOSQQ2I/YzILOhaVjsrKSm/UwkVTTmNJzQZ+2vFmHr74uPqPF2liy5Yto3fv3vkOQ4pYur9DZvayu1emO14lChERyUiJQkREMlKiSKPvtsUM/XRGvsMQESkIShSpwp5PX9oyM8+BiIgUBiWKVJVjWNKyPN9RiIgUDCUKERHJSIlCRCLRNOOBX/ziF7HPzfZ05LmmRCEikSSmGV+4cCFjx47liiuuqN1u2bJlg6bLSKVEUdiUKOrQd9ti5j36q3yHIVIURo8ezZVXXsmQIUO46qqreOuttzj55JM55phjGDx4cO2I6SeffJKqqiqOPvpovvrVr/L++++zatUqJkyYwG233VY7Ynr06NFccsklDBkyhEMPPZS//e1vnH/++fTu3ZvRo0fX3veZZ57huOOOo3///owcOZLNmzcDwdTb1157Lf3796e8vJzly5envU9cV199NVu2bKGiooJzzjkHgAceeIABAwZQUVHBxRdfzM6dO9m5cyejR4/myCOPpLy8nNtuu41p06bVTkdeUVGxy1TihUpzVaSxudc3Ycli2v3zceA/8x2OSN2euhreW5zdax5YDqfcEPm05jTN+A033MDtt99eO/HhsmXLePjhh5k9ezYtWrRg3LhxTJ06lb59+zZoOvJCp0SRRtXI/2TJPx/PdxgiRaU5TTOe6rnnnuPll1+unc9py5Yt7L///gwbNqxB05EXOiWKDPpuWwwLpgSTBYoUohj/88+V5jTNeCp357zzzqudHDBZfdORFwO1UdRhdpshwYfF9U8NLCJfaA7TjAO0aNGC7du3AzB06FCmTZvGBx98AMD69etZvXp1g6YjLwZKFHV4ru2pGngnElOpTzMOcNFFF9GvXz/OOecc+vTpw/XXX89JJ51Ev379OPHEE6mpqWnQdOTF0JitacbrcObdL3HNuh/R96B9YMyfsxCZSHZomnFpLE0zLiIiWdWoRGFme5lZWbaCERGRwhMpUZjZHmY2ysz+bGYfAMuBGjNbYmY3m1mv3ISZR6tfDHo+iRSQUqsylqYT5+9O1BLFTOAw4MfAge7ezd33BwYDc4EbzOzcyFEUKPV8kkLUunVr1q1bp2Qhkbk769ato3Xr1pHOizqO4qvuvt3MDnH3z5Nuvh74A/AHM2sR8ZoF6xfvD2T4wXM4IN+BiCTp2rUr1dXVrF27Nt+hSBFq3bo1Xbt2jXROpETh7tvDj48D/ZO/M7OB7j436ZiiNryiC/NWrufDzZ9xQPto2Vckl1q0aJFxRLNItkVto/iWmd0AtDez3ikN2ROzG1p+jarqTlXP/fIdhohI3kWtepoNtAYuBG4FDjezj4F3gcIfNRLDpq07eH/TVlU/iUizFbXqaQ1wv5m95e6zAcxsP6AnQQ+okjK8ogusIah+yncwIiJ5ErXqyQASSSL8vN7dX3b3T5KPKQWjqrrTvrXmTRSR5i1y91gzu9zMuifvNLOWZvYVM7sPOK+hFzOzk83sDTNbYWZXp/l+HzN70sxeC8dqaBpXEZEmFvW/yycD5wMPmllP4GOgDUHCeQa4zd0XNuRCYUP4HcCJQDUw38ymu/vSpMMuBZa6+zAz6wy8YWZT3T3ewrwiIhJZ1DaKrcCdwJ3heIlOwBZ3/zjGvQcAK9z9bQAzewgYDiQnCifoYWVAO2A9EH1BXhERiS1j1ZOZ9TGzB5K2nzOzvlA7puJY4DIzGxDj3l2Ad5K2q8N9yW4HehP0qloMfD95oF9SXBeZ2QIzW6BBSCIi2VVfG8VzwE+Stru6+xIAMzse+B3QHbjXzL4Z8d7pGr1T5yT4GrAQOBioAG43s713O8l9ortXuntl586dI4ZRv9qV7kREmqH6EsVJwM+Ttjcmff4OMMHdLwJOAK6KeO9qoFvSdleCkkOyMcBjHlgBrASOiHifRtF8TyLS3GVMFO6+2N3PSdq1wsxGmNn+wOnAE+FxHwCt0lwik/lALzPraWYtgbOA6SnH/AsYCmBmBwCHA29HvE+jPNf2VOZ+3pv3N21tytuKiBSMqN1jrwAuBtYAr7j7HICwYbtdlAu5+w7gMuBpYBnwiLsvMbOxZjY2POxnwPFmtpigGuwqd/8wYsyNMrwiaDY5YP0CVT+JSLMUtdfTe8CJZrZHSqPyEIIpyCNx9xnAjJR9E5I+v0tQ/ZU3o6q6M3HOiQzcsCyofqrUUA4RaV5irXCX2vPI3Z8J2ypK0nNtT2VJy/J8hyEikhdaM1tERDJSohARkYyUKBpo09YdLKnZwO/n/SvfoYiINKmos8duMrONaV6bzGxj/VcoTsMrutC+9Z5s2rqDJxauyXc4IiJNKmqvp/a5CqSQjarqDkv3YUnNhnyHIiLS5GJXPZnZvmY2wMy+nHhlM7BCNW/lelU/iUizEitRmNmFwAsEg+WuC9/HZy+swtSpXTD4XNVPItKcxC1RfJ9g5tjV7j4EOBoo+WlbD2jfmqqe++U7DBGRJhU3UWwN16bAzFq5+3KCeZhERKTExF0QutrMOgB/BP5qZh+x+8yvIiJSAmIlCndPrD0x3sxmAvsAf8laVCIiUjDiNmZfYWZdAdz9b+4+vVmsY736RYZ+OkM9n0SkWYnbRrE38LSZ/d3MLg3Xiiht5SMAGF42B1DPJxFpPuLOHnudu/cFLiVYpvRvZvZsViMrNJVj4JBB6vkkIs1OY+d6+gB4D1gH7N/4cIpAWP20tGYjZ979kqqgRKTkxW2juMTMZhGsOtcJ+K6798tmYAUpqfqpz0F7s7Rmo6qgRKTkxS1RHAL8wN37uvu17r40m0EVrKTqp4cvPo4+B+2d74hERHIubvfYq7MdSLFKVEFBMMvsqKrueY5IRCS7IiUKM3vR3QeZ2SbAk78C3N2b1X+xh1d0qf28tCaYZV2JQkRKTdRpxgeF781yuvFUo6q61yaGRKlCRKTUNGbAXZf6jxQRkWLXmAF3zzSrAXciIs2UBtyJiEhGGnAXx+oXYcGU3XZrDigRKUUacBdVOOiOxdN22Z3oAaUBeCJSaiKPozAzAyoJBtwtzHpEha5yzG5JAoIeUEoSIlKKIpco3N2Bo5tlkkj23mKYclraKigRkVISt43iJTM7NquRFJPyEXBgeZAs0pQuRERKSdxEMQSYa2ZvmdkiM1tsZouyGVhBqxwDY/4cJAsRkRIXd83sU7IaRTFL9ICqHJPvSEREciJuieK8Ol6RmNnJZvaGma0ws7QTDZrZCWa20MyWmNnfYsabG3X0gBIRKSVxE8UnSa+dBCWMHlEuYGZlwB3huX2As82sT8oxHYA7gW+EA/xGxow3N8Jpx5NpLIWIlJq4I7N/lfT6OXACEHXupwHACnd/2923AQ8Bw1OOGQU85u7/Cu/7QZx4m4rGUohIKWrsyOyEtsChEc/pAryTtF3N7snm34F9zWyWmb1sZt9pRIw5N6qqu9bTFpGSE6sx28wW88V6FGVAZ+CnUS+TZp+nbO8JHAMMBdoQdMud6+5vpsRzEXARQPfu+V8PIrGYkRYyEpFSELfX09eTPu8A3nf3HRGvUQ10S9ruCryb5pgP3f0T4BMzewE4CtglUbj7RGAiQGVlZWqyyb2knk+J6ictZCQipSJu1dMAYL27rwbGAI+YWf+I15gP9DKznmbWEjgLmJ5yzBPAYDPb08zaAlXAspgx50ZKz6dRVd21nraIlJS4ieJ/3H2TmQ0CvgbcB9wV5QJhCeQy4GmCX/6PuPsSMxtrZmPDY5YBfwEWAf8AJrn76zFjzo00PZ8SElVQ6gUlIsUsbtXTzvD9NOAud3/CzMZHvYi7zwBmpOybkLJ9M3BzzDjzRlVQIlIq4pYo1pjZ3cC3gBlm1qoR1ypJqoISkVIRt0TxLeBk4BZ3/9jMDgJ+lL2wSkuiCgpQTygRKTqxEoW7fwo8lrRdA9RkK6iiVMecT4kqKFA1lIgUJ1UXZUOGOZ8SVVCqhhKRYhW36kmS1bHqXTqqhhKRYhOpRGFmvwvfv5+bcErb8IoutaWKpTUbNSeUiBSFqCWKY8zsEOB8M7uflGk43H191iIrQaOquteWIBKlChGRQhe1jWICwQC4I4CXU14Lshta6dOU5CJSDCIlCnf/jbv3Bu5x90PdvWfSK+rssc2apiQXkWIRt3vsJWZ2FDA43PWCuzefNbOzYFRVdyUJESkKsbrHmtn3gKnA/uFrqpldns3Amot5K9drPigRKWhxu8deCFSF039jZjcCLwG/zVZgzUGi+mneyqAPgLrKikghijvgzvhiYkDCz+kWIpIMEoPxtCqeiBSyuIliCjDPzMaHs8bOBSZnLapmSD2gRKRQxUoU7n4rwYJF64GPgDHu/r9ZjKs4JeZ7ikg9oESkkMWe68ndXwm7y/7a3V/NZlBFKcN8T/UZVdVd1U8iUrA0KWC2ZFjpTkSkmClRZNt7i2HKabGqoEREClHccRSXmdm+2Q6m6JWPgAPLg2QRowpKRKQQxS1RHAjMN7NHzOxkM1PXWAiqn8b8OUgWIiIlIm6vp58AvQi6xI4G/mlmvzCzw7IYW3FLVEElXg2oikqsVaFusiJSSGIvXOTubmbvAe8BO4B9gWlm9ld3/69sBViUEj2gEt5bHLynLJOaLNFFVsulikihMXePflIw19N5wIfAJOCP7r7dzPYA/unueStZVFZW+oIFBTbj+ZTTgmRxYHmQRDIkjMQ6FQ9ffFxTRScigpm97O6V6b6LW6LoBJzh7quTd7r752b29ZjXLF2JEkYDShbwRRWUlkoVkUIQtzG7VWqSCCcGxN2XNTqqUhOhkTuxXKqWShWRQhE3UZyYZt8pjQlEAomJAhNra4uI5FukqiczuwQYBxxqZskLFbUHZmczMBERKQxR2yh+DzwF/BK4Omn/Jndfn7WoRESkYERdM3uDu69y97PdfXXSS0mioWLOMCsiki+REoWZvRi+bzKzjUmvTWa2MTchlpBGzDArIpIvkaqe3H1Q+N4+N+GUuMoxShIiUnQ0e2w+qPpJRIpI1KqnTUlVTamvyFVP4YSCb5jZCjO7OsNxx5rZTjMbUdcxRSNC9ZPmfhKRQhC16ilrVU5mVgbcQTAmo5pgNtrp7r40zXE3Ak9n69551cDqJ839JCKFIluN2RtjlCgGACvc/W133wY8BAxPc9zlwB+ADyJev7DVU/2kgXciUiiido+tbcx2971TXxHv3QV4J2m7OtxXy8y6AN8EJmS6kJldZGYLzGzB2rVrI4aRBxF7P81buV7VTyKSN/lszE632FHqVLb/C1zl7jszXcjdJ7p7pbtXdu7cOVvx5U6E9bUTVVCa90lE8iXW7LFm1ppgKo9BBL/cXwTucvetES5TDXRL2u4KvJtyTCXwULiAXifgVDPb4e5/jBN3MRpV1V1JQkTyKm6J4n6gL/Bb4HagN/C7iNeYD/Qys55m1hI4C5iefIC793T3Hu7eA5gGjCupJKFusiJSBOImisPd/QJ3nxm+LgL+PcoF3H0HcBlBb6ZlwCPuvsTMxprZ2JhxFY+I7RTqKisi+RJ34aJXzWygu88FMLMqYswe6+4zgBkp+9I2XLv76BhxFq4Io7TVVVZE8ilq99jF4fTiVcAcM1tlZquAl4Av5yC+0vfe4mCpVHWVFZECFbVEoWVOsyniEqmgZVJFpOlFHZldu/ypme0L9AJaJx2yereTpG6VY4LXlNMadLiqoEQkH2I1ZpvZhcALBA3R14Xv47MXlqSjKigRyYe4vZ6+DxwLrHb3IcDRQBEMiS4dGq0tIk0lbqLYmhhcZ2at3H05cHj2wpJMNFpbRJpS3O6x1WbWAfgj8Fcz+4jdR1VLFKtf/KKtonxExoZtjdYWkaYUK1G4+zfDj+PNbCawD/CXrEXV3JQnLbMRoQeUiEhTyOZcT1otL65E7ydocA8oEZGmErfq6X5gE8FcTwBnE8z1NDIbQYmISOGImygOd/ejkrZnmtlr2QhIREQKS9zqolfNbGBiI+5cT9I4mihQRJpCpBKFmS0maJNoAXzHzBK/oboDS+s8UbJOo7RFpKlorqdClFinop4usqOqunPm3S81YWAi0hxFXTN7deIFdACGha8OyfNASSNEXKcCNEpbRHIr7lxP3wemAvuHrwfM7PJsBtZsRVhPGzRKW0RyL26vpwuAKnf/BMDMbiRYk+K3Gc+ShkusU5EqZdS2RmmLSK7F7fVkwM6k7Z3hPsmG8hFwYPnu+99bXGeVlKqfRCRX4pYopgDzzOzxcPt0YHJWIpJdR2onq2PU9vCKLsxbuZ4nFq5R7ycRybq4cz3damazCKbwMGCMu7+azcCk4VT9JCK5FLnqyQLd3P0Vd/+Nu/9aSaIJZVhjWwPwRCQXIpco3N3N7I/AMdkPRzLKsMa2BuCJSK7Ebcyea2bHZjUSqV/lGBjz57QN3VomVURyJW5j9hBgrJmtAj4haKdwd++XrcCkHnV0n71m3QZmtxkCHNf0MYlISYqbKE7JahQSTfJCRyl6bH+7CQMRkeYgbqJ4n90XLrorW0FJPerqPgus+kXDR3WLiDSEFi4qQT22v133Snn1rMctIpJKCxeVmNlthvDptp20rdlQu69Tu1Yc0L611uMWkVjiJopXzWygu88FLVxUSNod/11uWXhq7fbSmo30abU3D485Tutxi0gscRNFFbsvXLQssbCRej/lT2KdigStVyEijRU3UZyc1SgkpxIjtq9Zt4Ee29/epcG7U7tWHHD8uaqOEpE6xZ3rKSuLFJnZycCvgTJgkrvfkPL9OcBV4eZm4BJ3V1tIBIkR20A4vuILn27bSbuPlgUz0ipRiEgd4pYoGs3MyoA7gBOBamC+mU139+S1t1cC/8/dPzKzU4CJBNVe0kC7VkXtOggvKGX8iL5NH5aIFJG8JQpgALDC3d8GMLOHgOFAbaJw9zlJx88FujZphM1FXYskJVO3WpFmK2uJwswOdPf3IpzSBXgnabuazKWFC4Cn6rj3RcBFAN27azK8KKZtOw5aAum60yaoW61Is5bNEsVkIEr/y3Qr4nnaA82GECSKtMOO3X0iQbUUlZWVaa8huxte0YUnOIOfckbtvl260yaoW61Is5a1ROHuUX+bVAPdkra7Au+mHmRm/YBJwCnuvi5+hJIqtSstZOhOm1w9pWookWYlVqIwsxvd/ar69tVjPtDLzHoCa4CzgFEp1+wOPAZ8293fjBOrRJfoTptw5X5foerAcEPVUCLNTtz1KE5Msy/SjLLuvgO4DHgaWAY84u5LzGysmY0ND7sG6AjcaWYLzWxBzHilgYZXdNllTYulNRu5df3xwToYdayFISKlLVKJwswuIZg19jAzW5T0VXtgTvqz6ubuM4AZKfsmJH2+ELgw6nUlPo3sFpFUUauefk/Q8+iXwNVJ+ze5+/qsRSWFrSHdaVOpXUOkaEVKFO6+AdhgZo8B6919k5n9BOhvZj9z91dzEqXkVXKbxdBP+/Ml31DbnXa3rrTpqF1DpKjF7fX0P+7+qJkNAr4G3AJMQKOmS07yFCAAz7U9lefaBrPTpu1Km46614oUtbiJYmf4fhpwl7s/YWbjsxOSFJJ0XWgT1H4h0jzETRRrzOxugt5PN5pZK+L3oJLmIE67Riq1c4jkRdxE8S2CqcZvcfePzewg4EfZC0uKRXL7xfCKLulLH+UjGn8jtXOI5E3cRLEF2ItgreyfAi2Aj7MUkxSJ5PaLpTUbAdInisoxjf8Fr3YOkbyJmyjuBD4HvkKQKDYBfwCOzVJcUgSS2y+apL0iXfWVqqNEci72Uqju3t/MXgUI14tomcW4pAilTv0BGaqjokpXfaXqKJEmETdRbA8XHnIAM+tMUMKQZiq1Gy3UUx0VVbrqK1VHiTSJuIniN8DjwP5m9nNgBPCTrEUlRSfSTLQiUlTirpk91cxeBoYSrCtxursvy2pkIg2Rqdut2i9EsiL2ehTuvhxYnsVYpAQ1qPtsXJm63ar9QiRr8rlmtpS4BnefjStTt1u1X4hkjRKF5EyTd58VkZxQopAmk677bLKsV01p+VaRrFCikCaRrvtssqxXTSW3X6i9QqRRlCikSWSahRZyUDWV3H6h9gqRRlGikOYhG7PXZqKqLSlhShRSMOprw4hjeEUXRmVj9tpMVLUlJU6JQgpCfW0YcdS2e1ychdlrM1HVlpQ4JQopCPW1YcShLrki2aFEISUtpyPDk+W6DSQqtZlIFilRSMnK+cjwhFy3gUSlNhPJMiUKKVlNNjI8Gyv4ZVMhlWykJOyR7wBERKSwqUQhzUZd3W9z2naRL4XWZiK5leM2KSUKaRbq6n6b07aLfCm0NhPJrSZok1KikGahru63JdmFttDaTCS3mqDkqEQhzV4uRoTnSklWk0njJaoac1QFpUQhzVouRoTnSklWk0njJaoac1gFlddEYWYnA78GyoBJ7n5DyvcWfn8q8Ckw2t1fafJApWTlYkR4rhRLqUeaWKKqMYdVUHnrHmtmZcAdwClAH+BsM+uTctgpQK/wdRFwV5MGKSIieR1HMQBY4e5vu/s24CFgeMoxw4H7PTAX6GBmBzV1oCIizVk+q566AO8kbVcDVQ04pgtQk3yQmV1EUOKge/fiqEYQiarPwXvnOwQpZAeW5+zS+UwUlmafxzgGd58ITASorKzc7XuRUnDtsL75DkEK2Sk31H9MTPmseqoGuiVtdwXejXGMiIjkUD4TxXygl5n1NLOWwFnA9JRjpgPfscBAYIO716ReSEREcidvVU/uvsPMLgOeJugee4+7LzGzseH3E4AZBF1jVxB0j9VwUxGRJpbXcRTuPoMgGSTvm5D02YFLmzouERH5gqYZFxGRjJQoREQkIyUKERHJSIlCREQysqC9uHSY2VpgdczTOwEfZjGcYqBnbh70zM1DY575EHfvnO6LkksUjWFmC9y9Mt9xNCU9c/OgZ24ecvXMqnoSEZGMlChERCQjJYpdTcx3AHmgZ24e9MzNQ06eWW0UIiKSkUoUIiKSkRKFiIhkpEQRMrOTzewNM1thZlfnO55sMbNuZjbTzJaZ2RIz+364fz8z+6uZ/TN83zfpnB+HP4c3zOxr+Ys+PjMrM7NXzexP4XZJPy+AmXUws2lmtjz88z6ulJ/bzK4I/06/bmYPmlnrUnxeM7vHzD4ws9eT9kV+TjM7xswWh9/9xszSLQyXnrs3+xfBNOdvAYcCLYHXgD75jitLz3YQ0D/83B54E+gD3ARcHe6/Grgx/NwnfP5WQM/w51KW7+eI8dxXAr8H/hRul/Tzhs9yH3Bh+Lkl0KFUn5tgSeSVQJtw+xFgdCk+L/BloD/wetK+yM8J/AM4jmDl0KeAUxoag0oUgQHACnd/2923AQ8Bw/McU1a4e427vxJ+3gQsI/hHNpzgFwvh++nh5+HAQ+7+mbuvJFgLZECTBt1IZtYVOA2YlLS7ZJ8XwMz2JviFMhnA3be5+8eU9nPvCbQxsz2BtgSrX5bc87r7C8D6lN2RntPMDgL2dveXPMga9yedUy8likAX4J2k7epwX0kxsx7A0cA84AAPVwsM3/cPDyuFn8X/Av8FfJ60r5SfF4LS8FpgSljlNsnM9qJEn9vd1wC3AP8CaghWv3yGEn3eNKI+Z5fwc+r+BlGiCKSrqyupfsNm1g74A/ADd9+Y6dA0+4rmZ2FmXwc+cPeXG3pKmn1F87xJ9iSonrjL3Y8GPiGokqhLUT93WCc/nKB65WBgLzM7N9MpafYVzfNGUNdzNur5lSgC1UC3pO2uBMXYkmBmLQiSxFR3fyzc/X5YHCV8/yDcX+w/iy8B3zCzVQRViF8xswco3edNqAaq3X1euD2NIHGU6nN/FVjp7mvdfTvwGHA8pfu8qaI+Z3X4OXV/gyhRBOYDvcysp5m1BM4Cpuc5pqwIezZMBpa5+61JX00Hzgs/nwc8kbT/LDNrZWY9gV4EjWBFwd1/7O5d3b0HwZ/j8+5+LiX6vAnu/h7wjpkdHu4aCiyldJ/7X8BAM2sb/h0fStD+VqrPmyrSc4bVU5vMbGD48/pO0jn1y3eLfqG8gFMJegS9Bfx3vuPJ4nMNIihiLgIWhq9TgY7Ac8A/w/f9ks757/Dn8AYRekYU2gs4gS96PTWH560AFoR/1n8E9i3l5wauA5YDrwO/I+jpU3LPCzxI0A6znaBkcEGc5wQqw5/VW8DthDNzNOSlKTxERCQjVT2JiEhGShQiIpKREoWIiGSkRCEiIhkpUYiISEZKFCIikpEShYiIZKREIRJRuO7DuKTtOTm6T1czOzMX1xaJQolCJLoOQG2icPfjc3SfoQTzNYnklRKFSHQ3AIeZ2UIzu9nMNkMwjXu4utykcNW1qWb2VTObHa5EVrv+gZmda2b/CK9xt5mVJd/AzAYBtwIjwmN6NukTiiTRFB4iEYXrevzJ3Y8Mtze7e7tw/wqCNT+WEEw2+RrB3DzfAMa4++lm1ptghbIz3H27md0JzHX3+1Pu8xfgh+7+OiJ5tGe+AxApMSvdfTGAmS0BnnN3N7PFQI/wmKHAMcD8cNniNnwxTXSywwkmdhPJKyUKkez6LOnz50nbn/PFvzcD7nP3H9d1ETPrSLBq2/acRCkSgdooRKLbBLRvxPnPEbQ97A9gZvuZ2SEpx/SkuBfWkRKiRCESkbuvA2aHDdY3xzh/KfAT4BkzWwT8FTgo5bDlQKfwHrnqVSXSIGrMFhGRjFSiEBGRjJQoREQkIyUKERHJSIlCREQyUqIQEZGMlChERCQjJQoREcno/wPJZSjb8K5juQAAAABJRU5ErkJggg==\n",
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAERCAYAAABl3+CQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAz+klEQVR4nO3deVRUV7o28KcEDEojihNCKYOoDBaigorGKCHOinFKTDTOl4hGb+JNWnN7pTN5o4nd1zbRDk1iG+1Evcavo9EEjEG0pREVNZoGNLQCsXAGRByY9/cHqQpDUXAOp6jp+a3Faqo4dc570i5ezn73frdKCCFARETUiDbmDoCIiCwbEwURERnFREFEREYxURARkVFMFEREZBQTBRERGWXWRLFo0SJ069YN/fv3N/hzIQRWrlwJf39/hISE4OzZs60cIRERmTVRLFiwAImJiY3+PCEhAdnZ2cjOzkZ8fDxiY2NbMToiIgLMnCieeOIJuLu7N/rz/fv3Y968eVCpVBg2bBju3r2L69evt2KERERk0TWK/Px89OzZU/9arVYjPz/fjBEREdkfR3MHYIyh7iIqlarBe/Hx8YiPjwcAXLx4EQEBAbKv+aCsEi6PWfR/FiIixeXm5uLOnTsGf2bRvxHVajWuXr2qf63VauHp6dnguJiYGMTExAAAwsLCkJ6eLvuaJy4XIKJ3Z9mfJyKyRmFhYY3+zKKHnqKjo7Fjxw4IIZCWlgY3Nzf06NHDZNd7+0AG3jmYgZ0nfzbZNYiIrI1Znyiee+45HD16FHfu3IFarcbbb7+NiooKAMDSpUsxceJEfPvtt/D390f79u2xbds2k8eUdb0Ef0vLxfNDe5n8WkRE1sCsiWLXrl1Gf65SqbBly5ZWigZ4c0ow0i/morLVrkhEZPksukZBRA1VVFRAq9WitLTU3KGQFXJ2doZarYaTk1OzP8NEUVvCGiwpy0Fc2+XmjoSoUVqtFq6urvDx8TE4C5CoMUIIFBQUQKvVwtfXt9mfs+hidqu78SP8qvPgWF5i7kiIGlVaWorOnTszSZBkKpUKnTt3lvw0ykRBZIWYJEguOf92mCjq0VRnof/dJE6RJWpEQUEBQkNDERoaCg8PD3h5eelfl5eXyzrn0aNHkZqaqnCkrX+dzz77DNeuXVPsfKNHj27RurCjR49i8uTJLY6DiaI2zUwAwFSHVOz/ga1CiAzp3LkzfvjhB/zwww9YunQpXnnlFf3rtm3borJS+rxBJgplVFVVmeS8LGbXFrYQD/75F7gUAw/vFZo7GiKrsWDBAri7u+PcuXMYNGgQli1bhuXLl+P27dto3749PvnkEwQEBODAgQNYu3YtysvL0blzZ3zxxRd49OgR4uLi4ODggM8//xwfffQRtm7dinbt2uHixYvIy8vDtm3bsH37dpw4cQJDhw7FZ599BgD47rvv8Oabb6KsrAy9e/fGtm3b8Jvf/AY+Pj6YP38+Dhw4gIqKCnz55ZdwdnZucJ2RI0fKut+qqiosXrwY6enpUKlUWLRoEXr27In09HTMmTMH7dq1w4kTJ7BhwwYcOHAAjx49wvDhw/GXv/wFKpUKo0ePxtChQ5GcnIy7d+9i69atGDlyJB49eoSFCxciMzMTgYGBePTokf6asbGxOH36NB49eoSZM2fi7bffBgD4+Phg0aJF+O677/DSSy+hY8eOePnll9GlSxcMGjSoxf/fAgCEjRk8eHCLPn//T0PFhbeHiskfHFQoIiJlZWZmmjsEvTfffFNs2LBBzJ8/X0yaNElUVlYKIYR48sknxU8//SSEECItLU1ERkYKIYQoLCwU1dXVQgghPvnkE7Fq1ao659GZP3++ePbZZ0V1dbXYt2+fcHV1FRcuXBBVVVVi0KBB4ty5c+L27dti5MiR4v79+0IIIdavXy/efvttIYQQ3t7e4sMPPxRCCLFlyxaxePFig9ep7ciRI2LAgAENviIiIhocm56eLp566in966KiIiGEEKNGjRKnT5/Wv19QUKD/fu7cueLrr7/WH6e792+++UZERUUJIYT44x//KBYuXCiEEOL8+fPCwcFBfz7duSorK8WoUaPE+fPn9ff6/vvvCyGEePTokVCr1eKnn34S1dXVYtasWWLSpEkN4jf0b8jY704+URiTcxzwlfcXB1FrePtABjKv3VP0nEGeHfDmlGDJn5s1axYcHBxw//59pKamYtasWfqflZWVAaiZ2vvss8/i+vXrKC8vNzpFc8qUKVCpVNBoNOjevTs0Gg0AIDg4GLm5udBqtcjMzMSIESMAAOXl5YiIiNB/fvr06QCAwYMH4+9//3uT8UdGRuKHH35o1r36+fnhypUrWLFiBSZNmoSxY8caPC45ORkffPABHj58iMLCQgQHB2PKlCkN4svNzQUA/OMf/8DKlSsBACEhIQgJCdGfa8+ePYiPj0dlZSWuX7+OzMxM/c+fffZZADVNUX19fdGnTx8AwNy5c/UNU1uCiYKIFOHi4gIAqK6uRseOHQ3+0l2xYgVWrVqF6OhoHD16FG+99Vaj53vssccAAG3atNF/r3tdWVkJBwcHjBkzptEOD7rPODg4NKtukpycjFdeeaXB++3bt29Q1+jUqRPOnz+PQ4cOYcuWLdizZw/++te/1jmmtLQUy5YtQ3p6Onr27Im33nqrzrTUxuIzNCspJycHf/jDH3D69Gl06tQJCxYsqHMu3X/7xj7fUkwUBmiqszCuIgnANHOHQmSUnL/8Ta1Dhw7w9fXFl19+iVmzZkEIgQsXLmDAgAEoLi6Gl5cXAGD79u36z7i6uuLePWlPRsOGDcPy5cvx73//G/7+/nj48CG0Wi369u3b6GeMXUfKE8WdO3fQtm1bzJgxA71798aCBQv05y8pqVmHpftF3qVLF9y/fx979+7FzJkzjZ73iSeewBdffIHIyEj861//woULFwAA9+7dg4uLC9zc3HDz5k0kJCRg9OjRDT4fEBCAnJwcXL58Gb17926yTVJzcdZTPcUewwEAoypNPwODyFZ98cUX2Lp1KwYMGIDg4GDs378fAPDWW29h1qxZGDlyJLp06aI/fsqUKfjqq68QGhqK48ePN+saXbt2xWeffYbnnnsOISEhGDZsGC5evGj0M3KuY0h+fj5Gjx6N0NBQLFiwAOvWrQNQU9RfunQpQkND8dhjj+E//uM/oNFo8PTTTyM8PLzJ88bGxuL+/fsICQnBBx98gCFDhgAABgwYgIEDByI4OBiLFi3SD7fV5+zsjPj4eEyaNAmPP/44vL29Zd9jbSohDOwOZMVauh9Fxj+/QXXSuwAAzQsbWKMgi5OVlYXAwEBzh0FWzNC/IWO/O/lE0ZQc+X91EBHZAiYKIiIyionCiAyFpx0SEVkjJgoiIjKKiaKeYM8OAGqmyOafTzJzNERE5sdEYcD1LjVTZHvcSeXwExHZPSYKA7wGROHHNpx+SGQI24zXeO+992R/1txdZqViojBCU52FTloOPxHVxjbjNZgoCMcca4af3G5whTZRUxYsWIBVq1YhMjISq1evxuXLlzF+/HgMHjwYI0eO1K+YPnDgAIYOHYqBAwfiqaeews2bN5Gbm4u4uDhs3LhRv2J6wYIFiI2NRWRkJPz8/HDs2DEsWrQIgYGB+nYZQE2b8YiICAwaNAizZs3C/fv3AdS03n7zzTcxaNAgaDQaXLx40eB15FqzZg0ePXqE0NBQzJkzBwDw+eefY8iQIQgNDcWLL76IqqoqVFVVYcGCBejfvz80Gg02btyIvXv36tuRh4aG1mklbrEa7StrpVraZlxc+Yf4V8pBMfmDg+LC20PF/T8NVSYwIoWwzbj524wLIYSLi4v++8zMTDF58mRRXl4uhBAiNjZWbN++vdntyFsb24ybAtuNk6VKWAPc+FHZc3pogAnrJX/MntqM15eUlIQzZ87o+zk9evQI3bp1w5QpU5rVjtzSMVHU5zsSwTgOgLOdiKSwpzbj9QkhMH/+fH1zwNqaakduDZgomiHj2j0EN/6HD5H5yPjL39Tsoc04ADg5OaGiogJOTk6IiorC1KlT8corr6Bbt24oLCxESUkJXFxcmmxHbg1YzG4uNgckajZbbzMOADExMQgJCcGcOXMQFBSEtWvXYuzYsQgJCcGYMWNw/fr1ZrUjt4ZiNtuMG5JzHFP23sN7j96FpjoL1wIXw3PINNYpyCKwzTi1FNuMK4hTZImImCiM+sO9KFxtx7/ciMi+MVE0YlRNvQ13y8wbBxGRubUoUTx48ABVVVVKxWJRJngDms6/vs64dg8nLheYLyCiWmystEitSM6/HUmJorq6Gjt37sSkSZPQrVs3BAQEoEePHggODsZrr72G7OxsyQFYJBatyYI5OzujoKCAyYIkE0KgoKAAzs7Okj4naR1FZGQknnrqKaxbtw79+/dHmzY1eaawsBDJyclYs2YNpk2bhrlz50oKwpI9qAQKS399feJyASJ6d278A0QmplarodVqcfv2bXOHQlbI2dkZarVa0mckJYrvv/8eTk5OyMvL0ycJAHB3d8eMGTMwY8YMVFRUSArAko3yAnCxpk7BYg5ZCicnJ6OtL4iUJun3n5OTEwBg2rRpDX6WlpZW5xhbMMEbcOHadSKyc5ISxZ49e7BmzRqUlJQgKyurTiE7JiZG8sUTExPRr18/+Pv7Y/36hq0IiouLMWXKFP3qzm3btkm+BhERtYykv5dHjBiB0tJSfPrpp1i1ahUuXbqEjh07wtPTE+3atZN04aqqKixfvhyHDx+GWq1GeHg4oqOjERQUpD9my5YtCAoKwoEDB3D79m3069cPc+bMQdu2bSVdi4iI5JOUKLy8vDBv3jz07t1b39q3sLAQOTk5CAgIkHThU6dOwd/fH35+fgCA2bNnY//+/XUShUqlQklJCYQQuH//Ptzd3eHoyLEgIqLWJGnoSTcdT5ckgJpC9uDBg/Uthps7ZS8/Px89e/bUv1ar1cjPz69zzEsvvYSsrCx4enpCo9Fg06ZNdYroOvHx8QgLC0NYWFirzAThegoisieSEkVkZCQ++ugj/Pzzz3XeLy8vx5EjRzB//vw6rYONMZRQVCpVndeHDh1CaGgorl27hh9++AEvvfSSwRbBMTExSE9PR3p6Orp27SrhjhoXPGKS/nvd3tkdbqQpcm4iImsiKVEkJibCwcEBzz33HDw9PREUFARfX1/06dMHu3btwiuvvFJnP1tj1Go1rl69qn+t1Wrh6elZ55ht27Zh+vTpUKlU8Pf3h6+vb5NthJXGxoBEZO8kDfg7Oztj2bJlWLZsGSoqKnDnzh20a9cOHTt2lHzh8PBwZGdnIycnB15eXti9ezd27txZ55hevXohKSkJI0eOxM2bN3Hp0iV9TaO1HHKKQlhpKrx+WXTX4UYa7nkM0w8/cfEdEdk6o08UmZmZdVZZR0VFISMjA0DNeonTp09j8+bNOHXqlOQLOzo6YvPmzRg3bhwCAwPxzDPPIDg4GHFxcYiLiwMAvPHGG0hNTYVGo0FUVBTef//9OpudtAZdc8Cej2qGn4iI7I3RjYt69OiBEydOwMfHBwDQr18/XLp0CQCQmpqKCRMm4Nlnn0VKSgr+53/+x+BCvNamyMZFvzhxuQAdbqQh+VgSXirfigedApEb9gbueQzTH8MnCiKyBbI3Lvruu+/wu9/9Tv+6Q4cO+u937NiBpUuXIj4+HkePHsX777+vULiW55BTFH5sY3hfihOXC/RfRES2yGii0Gg0+OKLL/Sv/f39sXfvXty6dQv79u3D1KlTAQDdunVDWRk3biAiskWSZj1t3LgRf/nLX+Dl5YVBgwZh+PCaGUEVFRW4f/++SQIkIiLzkjTrycPDA4cPH0Z1dXWdhW/JycmIjIxUPDgiIjI/Wf0w6q+OHjt2LMaOHatIQJbqQSVwpRg4lAeM8DB3NERErYfbLDTDKK+aduMPKoFj+Y0fx4I2EdkiJopmmOAN+Ln9ujcFW3kQkT1homhC7TUTAPBjAZCQZ6ZgiIjMQFKNwtXVtUHjPqCmwZ9KpTLYsM+WdHwMwMOa4acRTR5NRGQbJCWKkpISU8VhFdydAc0vC7F1w0/1nziIiGyN7F2AioqKkJ2djdLSUv17TzzxhCJBWYqI3p1ZoCYiuycrUXz66afYtGkTtFotQkNDkZaWhoiICBw5ckTp+IiIyMxkFbM3bdqE06dPw9vbG8nJyTh37pxiGwZZG86AIiJbJytRODs7w9nZGQBQVlaGgIAAfVdZW8PusERk72QlCrVajbt37+Lpp5/GmDFjMHXq1Aa709kil6IsjKtIMjpFljUNIrI1smoUX331FQDgrbfeQmRkJIqLizF+/HhFA7M0xR7D4VKUhakOqfgDonAsv2YhHhGRrZP1RLFx40ZotVoAwKhRoxAdHY22bdsqGpilKVJH4UGnwDpTZImI7IGsRHHv3j2MGzcOI0eOxJYtW3Dz5k2l47J4V4qBNamGh6C4kRER2RJZieLNN99ERkYGtmzZgmvXrmHUqFF46qmnlI7NIrkUZWGFSxL83GqSxbF8znwiItvWol5P3bp1g4eHBzp37oxbt24pFZPFKvao2ahpREUq1g+vaRRIRGTrZCWKjz/+GKNHj0ZUVBTu3LmDTz75BBcuXFA6Noujq1PUphuCeudgBpKy6g7BcQiKiGyBrFlPeXl5+NOf/oTQ0FCFw7Euo7x+/T6v4CGAO4gK7G62eIiITEFWoli/fr3ScVi0ex7DDNYhJnj/OkX21fT2rRwVEVHrkJQoHn/8caSkpDRoN24vbcblqj38xJXeRGRtJCWKlJQUAPbXbjyid2dk3DB+jGN5CSrburZOQERErUj2grv8fCObR9sg7jtBRPZKVo3i3r17GDt2LNzd3TF79mzMnDkT3buziNscHIYiImvDBXcyuBRloZM2qcH7WddLGkyRJSKydlxwJ5Fu0Z3bjdQ67+umyv7z8p3WDomIyKS44E4iQ4vugJppsoE9pBWzuRiPiKyB5BqFEALp6elccEdEZCckP1GoVCqcO3fO7pJERO/OCPbsoH/tXJIHn/R3DdYqiIhsiayhp4iICJw+fVrpWKxGscdwlLp6w7kkr0GtgojI1siaHpucnIy4uDj4+PjAxcVFvzLbnuoUReoo+KS/2+Jz6eoUnCpLRJZKVqJISEhQOg6rpZsqW6SOMncoREQmIStRbN++3eD7v//97yWdJzExEf/5n/+JqqoqLFmyBGvWrGlwzNGjR/Hyyy+joqICXbp0wbFjx+SErJhgzw7IuFbT00q3j7bbjVQmCiKyWbJqFC4uLvovBwcHJCQkIDc3V9I5qqqqsHz5ciQkJCAzMxO7du1CZmZmnWPu3r2LZcuW4euvv0ZGRga+/PJLOeGaTP2pso7lJbIX3XGqLBFZKllPFP/1X/9V5/Wrr76K6OhoSec4deoU/P394efnBwCYPXs29u/fj6CgIP0xO3fuxPTp09GrVy8ANQv8LNkoL+DHgppFd9yXgohsRYtWZus8fPgQV65ckfSZ/Px89OzZU/9arVY3aDT4008/oaioCKNHj8bgwYOxY8cOJcI1GTmL7oiILJ2sJwqNRqPfj6Kqqgq3b9+WXJ8QQjR4r/YeFwBQWVmJM2fOICkpCY8ePUJERASGDRuGvn371jkuPj4e8fHxAIDbt29LikNpjuX21YKdiGyfrERx8ODBX0/g6Iju3bvD0VHaqdRqNa5evap/rdVq4enp2eCYLl266OshTzzxBM6fP98gUcTExCAmJgYAEBYWJvV2Wqz+zKcrxTV7aI/o3YVDUERk9WQNPZ06dQru7u7w9vbGtm3b8Mwzz+Ds2bOSzhEeHo7s7Gzk5OSgvLwcu3fvblDnmDp1Ko4fP47Kyko8fPgQJ0+eRGBgwz5L5lS/SeAoL8DPrWYPbTYIJCJbICtRvPvuu3B1dUVKSgoOHTqE+fPnIzY2VtI5HB0dsXnzZowbNw6BgYF45plnEBwcjLi4OMTFxQEAAgMDMX78eISEhGDIkCFYsmQJ+vfvLydkRdVu5VF/5tMEb2D9cMC7s/Q9tE9cLuDsJyKyOCphqFjQhIEDB+LcuXN4/fXXodFo8Pzzz+vfM7ewsDCkp6eb7gI5xwFAv5YCgH6Fdm7YG/r31qTWDEH5udU8ZYwY2vwd8rhKm4ham7HfnbKeKLy8vPDiiy9iz549mDhxIsrKylBdXd2iIG2NbgjqSjFwzL52jSUiGyMrUezZswfjxo1DYmIiOnbsiMLCQmzYsEHp2CxasGeHOkNQ9emGoPzcWjEoIiITkDXrqX379pg+fbr+dY8ePdCjRw/FgrJoviP1w0/NdaUYeO/vaQCAoYG+Tc6EYqNAIrIkiiy4o8b30dYNQQE1CYMzoYjI2jBRKKCxfbSBX4egOAxFRNZKUqJ44YUXAACbNm0ySTDWKNizAzyHTAO6m3/aLhGRKUiqUZw5cwZ5eXn461//innz5jVow+Hu7q5ocLYor+Ah3jmYAQBcuU1EVkFSoli6dCnGjx+PK1euYPDgwXUShUqlktwY0N6M8gIqb9csxMsreAiAXWaJyPJJGnpauXIlsrKysGjRIly5cgU5OTn6LyaJpk3wBv4QVoLfTw6WtXKbiMgcZE2P/fjjj3H+/HkcP14zTfSJJ55ASEiIooHZA90mR3yqICJLJmvW04cffog5c+bg1q1buHXrFubMmYOPPvpI6dhs2ojeXQBwuiwRWT5ZTxSffvopTp48CRcXFwDA6tWrERERgRUrViganLVxaevQrOM63EhDVOAwJgkisgqyniiEEHBw+PWXooODg8GNiGyW70jFTpV1vQTvHMwwuM82u8kSkSWQ9USxcOFCDB06FNOmTQMA7Nu3D4sXL1Y0MHugG37Kul6zKx5rFURkiWQlilWrVmH06NFISUmBEALbtm3DwIEDlY7N5kUFdkdUYHf9ugoiIkskK1EAwKBBgzBo0CAlY7ErHW6k4Z7Hr3tUGJsBdeJyARsEEpHZsNeTXL4jG9Yqbv7LYGPApnAGFBFZMiYKpfiNBmC4MWBTogK7I7CHq8IBEREpQ1ai2Lx5M4qKipSOxbr1HS+5MWCHG2kmCoaISDmyEsWNGzcQHh6OZ555BomJifY1Nba+esNPziV58El/V9YQlDGcKktE5iIrUaxduxbZ2dlYvHgxPvvsM/Tp0wf//d//jcuXLysdn3XxG41SV284l+TJGoIiIrJEsmsUKpUKHh4e8PDwgKOjI4qKijBz5kz89re/VTI+69J3PFyiN6DU1dvckRARKUbW9NgPP/wQ27dvR5cuXbBkyRJs2LABTk5OqK6uRp8+ffDBBx8oHafV0Q1B6RR7DEeROqrBcb/WKVz1e1VwnwoisiSyEsWdO3fw97//Hd7edf9ybtOmDQ4ePKhIYNZMtzWqjnNJHgAYTBQ6NVNk7zS5T4WuTsF1FUTUWmQNPZWVlTVIEqtXrwYABAYGtjwqK1ekjkJu2Bv6r+YMRUUFduc+FURkkWQlisOHDzd4LyEhocXBWK16M5+CPTsg2LODmYIhIlKWpETx8ccfQ6PR4NKlSwgJCdF/+fr6cuOiJkiZNqurVRjqKKvDqbJE1Fok1Sief/55TJgwAa+//jrWr1+vf9/V1RXu7u6KB2crdDULJWsVREStRVKicHNzg5ubG3bt2mWqeGyKbvgpA1EoUkfVmQXVGHaUJSJLIylRPP7440hJSYGrqytUKpX+fSEEVCoV7t27p3iA9qJ2O4/aXWWJiMxNUqJISUkBAJSUlJgkGCIisjyy96Og5tPPgGrrgAflVeYNhohIIkmJQjfkZKgJoN0PPfmOBHKON3mYS1EWOmmTjBa0iYgsiaREwSGnFvIbDdz8F9xupDJREJHVkLSO4vHHHwdQ82TRoUOHBl/UhF/2rHBp66DIgjy2Hiei1iApUdQuZt+7d6/Bl1SJiYno168f/P3966zLqO/06dNwcHDA3r17JV+DiIhaxmxboVZVVWH58uVISEhAZmYmdu3ahczMTIPHrV69GuPGjTNDlCZy81/AT4mN/lg3VbY5K7SJiExNVqIoLS3F//7v/2L69OmYMWMGNm7ciNLSUknnOHXqFPz9/eHn54e2bdti9uzZ2L9/f4PjPvroI8yYMQPdunWTE6rl+WVvbVw5anT4aUTvLvDu3B55BQ/xz8t3jJ6Sw09EZEqyEsW8efOQkZGBFStW4KWXXkJWVhZeeOEFSefIz89Hz5499a/VajXy8/MbHPPVV19h6dKlcsK0TM3cW5vdZInIUshaR3Hp0iWcP39e/zoyMhIDBgyQdI7GptjW9vLLL+P999+Hg4OD0XPFx8cjPj4eAHD79m1JcZiNbvjpN8ObPpaIyIxkPVEMHDgQaWm/tpw4efIkRowYIekcarUaV69e1b/WarXw9PSsc0x6ejpmz54NHx8f7N27F8uWLcO+ffsanCsmJgbp6elIT09H165dpd2MOdQafmpMhxtp6HAjDY7lJci6XoJ/nkyr0+aDiKi1SHqi0Gg0UKlUqKiowI4dO9CrVy8AwM8//4ygoCBJFw4PD0d2djZycnLg5eWF3bt3Y+fOnXWOycnJ0X+/YMECTJ48GU8//bSk61ikvuP1SULfOPCa4Vljo7yAHwuAY/nABCP7H524XMBd74jIJCQlCiW3OXV0dMTmzZsxbtw4VFVVYdGiRQgODkZcXBwA2FZdojG64ae+4xs9ZIJ3TZIgIjIXSYmi9vanRUVFyM7OrjPbqf72qE2ZOHEiJk6cWOe9xhLEZ599JuncFu+XVdq4ctRootC5UgysSQWGBt7kHhVE1KpkFbM//fRTbNq0CVqtFqGhoUhLS0NERASOHDmidHzWpZn9ngDUGX4CaoagjA0/ATXJAlk5mNYph63IiajVyCpmb9q0CadPn4a3tzeSk5Nx7tw56ygiW6kJ3sD64YCfm/Hj2NKDiExBVqJwdnaGs7MzAKCsrAwBAQG4dOmSooHZjcIcIHGN0ZXaRETmJGvoSa1W4+7du3j66acxZswYdOrUqcHUVrvlO7Lmf5szBKWbJlv4y+yukKbXVLBWQUStTVai+OqrrwAAb731FiIjI1FcXIzx45suyFI9fcfXfCWuadbhhmoVBvWepEx8RESQmShKS0vx5z//GSkpKVCpVHj88cdRXV2tdGxUzwTvmq81qeaOhIjsiaxEMW/ePLi6umLFihUAgF27duGFF17Al19+qWhwVk03BKXT3NlQREQWxmy9nqihplZp1/ZjAZCQZ3y1NhGREmQlCl2vp2HDaubyy+n1RPI12dbD2NNL/ScdIqImmK3Xk91pajbUzX/pi9qd3Ica3VO7qbYe9Z9IlNh2lYjsl9l6PVEtummyAFCYA08AnkOmNWsIiojI1GT3ejp//jyOH6/563jkyJGsUbSEbpos0OypskRErUV2C485c+bg1q1buHXrFubOnYuPPvpI6djIFHKON/wiIjJCVjF769atOHnyJFxcXAAAq1evRkREhH66LFkWY0NYrF8QUVNkPVEIIepsT+rg4GBwa1MyLV07j4Q8c0dCRLZM1hPFwoULMXToUEybNg0AsG/fPixevFjRwGyWlFbkRtRp5wGupyAi05GVKFatWoXRo0cjJSUFQghs27YNAwcOVDo2+6Xb+e43jTcJVLSdR3MSF9dfENktyYlCCAGtVotBgwZh0KBBpojJvtXe+a4Z3WRbylD9gnULIqpNco1CpVLh6aefNkEoBKBmmmz3/pI+omvnQURkCrKK2cOGDcPp06eVjsV+KDiMo6tVGFupTUTUErJqFMnJyYiLi4OPjw9cXFwghIBKpcKFCxeUjs9+FeYg+MJ7AIAH5VX6t4s9htdp79FUOw/F1K5jsF5BZFdkJYqEhASl46Daarf0qMW5pGZ8yVAfKCW7ybJXFBHVJitRdO/evcHGRbGxsUrHZtuMTZOt3dIDQO4vv7h90t81eHiT3WSJiFpAVo1i3rx5yMjIwIoVK/DSSy8hKysLL7zwgtKx0S+a+ot+gjeg6dxKwRCR3eHGRVbGuSQPPunvNqhVEBGZCjcuMieJq7SLPWrWVTRWq9C19BjlZeIhKDkry1kAJ7JashLFyZMnG2xcFBgYqN/YiLOflBfs2QHwnIaMa1EGaxWmbOnBpoJE9k1WokhMTFQ6DpJINwSlEwsgti1wpS1wrGI4AA5LEZEyZCWK2hsYUQs1tUWqAbohKIOnq84DKgEmCiJSiqxEQeZTewjKkOokw1NozU6JDZJY5yAyCyYKapHa9QvWK4hsk2KJ4saNG/Dw8FDqdNQCvtV5UDWyOI/TaolIKlkL7gzhxkWtq7G/3o85Dkem8MaVYui/CktrfuZckge3G0psYEFE9kSxJ4pvvvlGqVNRC5T6ROHd/F+fGK4UA37tgPVhjbcAISIyRtYTxerVq5v1HkngO/LXrxaY4A2sH/7rl5+bQvFZgpzjDb+IyORkPVEcPnwY77//fp33EhISGrxHlqf++gtAuboFd8sjsk2Snig+/vhjaDQaXLx4ESEhIfovX19faDQayRdPTExEv3794O/vj/Xr1zf4+RdffKG/xvDhw+v0l6Lm07X22PZgODKr69YvHIpZtyAi4yQ9UTz//POYMGECXn/99Tq/2F1dXeHu7i7pwlVVVVi+fDkOHz4MtVqN8PBwREdHIygoSH+Mr68vjh07hk6dOiEhIQExMTE4efKkpOvYO11rDwA45BSFQ0516xe7274LPzPERUTWQ1KicHNzg5ubG6ZPnw53d3e4urpi7dq1OHv2LN544w0MHDiw2ec6deoU/P394edX82tq9uzZ2L9/f51EMXz4ryuQhw0bBq1WKyVcQk3NorG+T2tSATxq1XCIyArJqlG8++67mDVrFlJSUnDo0CG8+uqrWLp0qaS/9vPz89GzZ0/9a7VabfTzW7duxYQJEwz+LD4+HvHx8QCA27dvNzsGa6cb/zfWtK85DNUt6rPY9RfGCtpcyU2kCFmznhwcHADUTImNjY3F1KlTUV5eLukcQogG76lUKoPHJicnY+vWrY0Wy2NiYpCeno709HR07dpVUhz27v9VNKxb6NZd6LRk/UXGtXv6LyKyTrKeKLy8vPDiiy/i8OHDWL16NcrKylBdXS3pHGq1GlevXtW/1mq18PT0bHDchQsXsGTJEiQkJKBzZzvZxk3iPhVyjfICjiEKZ2B43YUO118Q2TdZiWLPnj1ITEzEq6++io4dO+L69evYsGGDpHOEh4cjOzsbOTk58PLywu7du7Fz5846x/z888+YPn06/va3v6Fv375yQrULwZ4dZP3Fbqh+saaRB4faw1MWOwxFRCYha+ipXbt2ePDgAXbt2gUAqKioQMeOHSWdw9HREZs3b8a4ceMQGBiIZ555BsHBwYiLi0NcXBwA4J133kFBQQGWLVuG0NBQhIWFNXFWMoVij+Eoda3JKFbVBoQL84gUoRKGigVNiI2NRZs2bXDkyBFkZWWhqKgIY8eOxenTp00RoyRhYWFIT083dxim08gvPaVqAGtSfxl+qrWiu/bWqrqnitywNxS5Xm0mXZzHwjaRUcZ+d8p6ojh58iS2bNkCZ2dnAECnTp0kF7NJWUr9kh3lVTdJXCkGjuUrcmoislKyahROTk6oqqrSz1K6ffs22rRRrBEtmVH9uoWhmkVzptPWx7oGkfWSlShWrlyJadOm4datW/jd736HvXv3Yu3atUrHRobI2Dq1pXQtQABgXMVwjKoGUFzzuuNjgLuz8c87l+QBABMFkZWSlSjmzJmDwYMHIykpCUII7Nu3D4GBgUrHRhIptQCvttotQIC6bUAMTaU1hNNriayb7P0oAgICEBAQoGQsZIGabAGiIFMsytPXbkz9BMZiOdkw7pltrYz9YrpmeZtIyalr1Mc6B5F5MFFQi9SuX9SeRltbscfwhm9KxDoHkfkwUZBstesXV34pbhtKFEXqqBb/gmedg8h8mChs0D2PYY3+rMONNMWuU7t+oXS9gogsBxOFDYroXbd54onLBWaKRFmm3Ma1xSytTQiL66QgJgpSTO16hU5jdQupDNU5mlO3qD2Tivt3E8nDRGFnDA1LKTEcVX+9BWC8biGVoToH6xZErYOJwg7UH4qqTalhKSkty4nIujBRkFUztj7DYuoXRFaOiYKMzpLSkTs81Zx1FnIZW59h9+suLK24TqZl4skLTBR2ztCwlFLDUc1dZyGXsfUZhp4yGmsRwiI3kXFMFGQyXGdBZBuYKKhZag9PKbloj4gsHxMFNWCqBXuG1lnUpnQNo3ahm4VtIvmYKKhVGFpnUZvSNYzahW67L2wTtRATBUnWnFlS9U1AmtEkoHQNo3ahmwvzyObpZrmZaPYTEwU1qTUW7JmTKTZMMhXO0CJzYKIgi9FUDUOOUV5ALJTZOMkY1kDIljFRUKtoarhqaOBNVF6+g0ojxziWl0i6pq7u8Xyvlm+cZAxrIGTrmCioRWoPS7VkGCoqsDuiArsbPUbqtFzd04kSGycZwxoI2bo25g6AiIgsG58oSDGmbAcCyGuRbspeU7WZugai19ahecf5jQb6jjdpKGQ/mCjIZpm615SOseaEZlGYU/O/TBSkECYKslmt1WvK1DWQ2po1PTZxjekDIbvCREEmpVSxuzHGZlOxJxWRMpgoyG40tk7DlLULsynM4ZOFPTFxTYqJglqNsRXegPJPHLWfNkZ5GX66MGXtwmz8Rps7AmpNrVCTYqIgu2BoT2/ARvfJ6DuehWx70gpPjkwUZBcaq2VUts345efBLTo/6yFky5goyGI0NTQlR3OGs/IKHuKdgxktuo5jeYs+3mzPBZXj+aC2rXMxsh66mlT4EiBsoeKnN+vK7MTERPTr1w/+/v5Yv359g58LIbBy5Ur4+/sjJCQEZ8+eNUOUZMtG9O4C787tzR1Gs1wpBvb/u8LcYZCl8RsNuPvWJIsf95rkEmZ7oqiqqsLy5ctx+PBhqNVqhIeHIzo6GkFBQfpjEhISkJ2djezsbJw8eRKxsbE4efKkuUImK9TU9Nzm9JiyFO8czACcnQDfiKYP1u1PQLZPV5MyYa3CbIni1KlT8Pf3h5+fHwBg9uzZ2L9/f51EsX//fsybNw8qlQrDhg3D3bt3cf36dfTo0cNcYZMVa2xoyxb21GjARBvYkIUy8R8GZksU+fn56Nmzp/61Wq1u8LRg6Jj8/HwmClKUKWojptDB2cncIZCl8h0JOHc02enNliiEEA3eU6lUko8BgPj4eMTHxwMALl68iLCwMFkx3b59G127dpX1WWvFe7Y+YZ9I/4y137McdnvPW+T9/svNzW30Z2ZLFGq1GlevXtW/1mq18PT0lHwMAMTExCAmJqbFMYWFhSE9Pb3F57EmvGf7wHu2D6a6Z7PNegoPD0d2djZycnJQXl6O3bt3Izo6us4x0dHR2LFjB4QQSEtLg5ubG4ediIhamdmeKBwdHbF582aMGzcOVVVVWLRoEYKDgxEXFwcAWLp0KSZOnIhvv/0W/v7+aN++PbZt22aucImI7JZZF9xNnDgREydOrPPe0qVL9d+rVCps2bKl1eJRYvjK2vCe7QPv2T6Y6p5VwlDFmIiI6BfcM5uIiIxiovhFU+1ErNXVq1cRGRmJwMBABAcHY9OmTQCAwsJCjBkzBn369MGYMWNQVFSk/8y6devg7++Pfv364dChQ+YKvUWqqqowcOBATJ48GYDt3y8A3L17FzNnzkRAQAACAwNx4sQJm77vjRs3Ijg4GP3798dzzz2H0tJSm7zfRYsWoVu3bujfv7/+PTn3eebMGWg0Gvj7+2PlypUGlx80SpCorKwUfn5+4vLly6KsrEyEhISIjIwMc4eliGvXrokzZ84IIYS4d++e6NOnj8jIyBCvvfaaWLdunRBCiHXr1onf/va3QgghMjIyREhIiCgtLRVXrlwRfn5+orKy0mzxy/XHP/5RPPfcc2LSpElCCGHz9yuEEPPmzROffPKJEEKIsrIyUVRUZLP3rdVqhY+Pj3j48KEQQohZs2aJbdu22eT9Hjt2TJw5c0YEBwfr35Nzn+Hh4SI1NVVUV1eL8ePHi2+//bbZMTBRCCFSU1PF2LFj9a/fe+898d5775kxItOJjo4W3333nejbt6+4du2aEKImmfTt21cI0fDex44dK1JTU80Sq1xXr14VTz75pEhKStInClu+XyGEKC4uFj4+PqK6urrO+7Z631qtVqjValFQUCAqKirEpEmTxKFDh2z2fnNycuokCqn3ee3aNdGvXz/9+zt37hQxMTHNvj6HntB4qxBbk5ubi3PnzmHo0KG4efOmfk1Kjx49cOvWLQC28d/i5ZdfxgcffIA2bX79523L9wsAV65cQdeuXbFw4UIMHDgQS5YswYMHD2z2vr28vPDqq6+iV69e6NGjB9zc3DB27Fibvd/6pN5nfn4+1Gp1g/ebi4kCzW8VYs3u37+PGTNm4E9/+hM6dOjQ6HHW/t/i4MGD6NatGwYPHtys4639fnUqKytx9uxZxMbG4ty5c3BxcTFaa7P2+y4qKsL+/fuRk5ODa9eu4cGDB/j8888bPd7a77e5GrvPlt4/EwWa3yrEWlVUVGDGjBmYM2cOpk+fDgDo3r07rl+/DgC4fv06unXrBsD6/1v885//xNdffw0fHx/Mnj0bR44cwdy5c232fnXUajXUajWGDh0KAJg5cybOnj1rs/f9/fffw9fXF127doWTkxOmT5+O1NRUm73f+qTep1qthlarbfB+czFRoHntRKyVEAKLFy9GYGAgVq1apX8/Ojoa27dvBwBs374dU6dO1b+/e/dulJWVIScnB9nZ2RgyZIhZYpdj3bp10Gq1yM3Nxe7du/Hkk0/i888/t9n71fHw8EDPnj1x6dIlAEBSUhKCgoJs9r579eqFtLQ0PHz4EEIIJCUlITAw0Gbvtz6p99mjRw+4uroiLS0NQgjs2LFD/5lmkVdasT3ffPON6NOnj/Dz8xNr1641dziKOX78uAAgNBqNGDBggBgwYID45ptvxJ07d8STTz4p/P39xZNPPikKCgr0n1m7dq3w8/MTffv2lTQzwtIkJyfri9n2cL/nzp0TgwcPFhqNRkydOlUUFhba9H3//ve/F/369RPBwcFi7ty5orS01Cbvd/bs2cLDw0M4OjoKLy8v8emnn8q6z9OnT4vg4GDh5+cnli9f3mDigzFcmU1EREZx6ImIiIxioiAiIqOYKIiIyCgmCiIiMoqJgoiIjGKiICIio5goiIjIKCYKIonu3r2LP//5z/rXw4cPN8l1tFot/u///s8k5yaSgomCSKL6iSI1NdUk10lKSsLZs2dNcm4iKZgoiCRas2YNLl++jNDQULz22mv4zW9+A6CmjXtAQACWLFmC/v37Y86cOfj+++8xYsQI9OnTB6dOndKf4/PPP8eQIUMQGhqKF198EVVVVXWukZKSglWrVmHv3r0IDQ1FTk5Oq94jUR0KtiQhsgv1N5FxcXHRv+/g4CAuXLggqqqqxKBBg8TChQtFdXW12Ldvn5g6daoQQojMzEwxefJkUV5eLoQQIjY2Vmzfvr3BdcaNGyd+/PFH098QURMczZ2oiGyJr68vNBoNACA4OBhRUVFQqVTQaDTIzc0FUDOkdObMGYSHhwMAHj16pG8TXdulS5fQr1+/VoudqDFMFEQKeuyxx/Tft2nTRv+6TZs2qKysBFDT+n3+/PlYt25do+cpKCiAm5sbnJycTBswUTOwRkEkkaurK0pKSmR/PioqCnv37tVvX1lYWIi8vLw6x+Tk5Fj1xjpkW5goiCTq3LkzRowYgf79++O1116T/PmgoCCsXbsWY8eORUhICMaMGaPfrUwnICAAd+7cQf/+/U02q4qoubgfBRERGcUnCiIiMoqJgoiIjGKiICIio5goiIjIKCYKIiIyiomCiIiMYqIgIiKjmCiIiMio/w92pSbw4fLAYwAAAABJRU5ErkJggg==",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
      },
-     "metadata": {
-      "needs_background": "light"
-     },
+     "metadata": {},
      "output_type": "display_data"
     }
    ],
    "source": [
     "for treatment_type in (\"standard\", \"test\"):\n",
     "    mask_treat = data_x[\"Treatment\"] == treatment_type\n",
-    "    time_treatment, survival_prob_treatment = kaplan_meier_estimator(\n",
+    "    time_treatment, survival_prob_treatment, conf_int = kaplan_meier_estimator(\n",
     "        data_y[\"Status\"][mask_treat],\n",
-    "        data_y[\"Survival_in_days\"][mask_treat])\n",
+    "        data_y[\"Survival_in_days\"][mask_treat],\n",
+    "        conf_type=\"log-log\",\n",
+    "    )\n",
     "    \n",
     "    plt.step(time_treatment, survival_prob_treatment, where=\"post\",\n",
     "             label=\"Treatment = %s\" % treatment_type)\n",
+    "    plt.fill_between(time_treatment, conf_int[0], conf_int[1], alpha=0.25, step=\"post\")\n",
     "\n",
+    "plt.ylim(0, 1)\n",
     "plt.ylabel(\"est. probability of survival $\\hat{S}(t)$\")\n",
     "plt.xlabel(\"time $t$\")\n",
     "plt.legend(loc=\"best\")"
@@ -416,12 +430,14 @@
   {
    "cell_type": "code",
    "execution_count": 6,
-   "metadata": {},
+   "metadata": {
+    "tags": []
+   },
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "<matplotlib.legend.Legend at 0x7fd9af219e20>"
+       "<matplotlib.legend.Legend at 0x7f3d75d069e0>"
       ]
      },
      "execution_count": 6,
@@ -430,25 +446,26 @@
     },
     {
      "data": {
-      "image/png": "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\n",
+      "image/png": "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",
       "text/plain": [
        "<Figure size 432x288 with 1 Axes>"
       ]
      },
-     "metadata": {
-      "needs_background": "light"
-     },
+     "metadata": {},
      "output_type": "display_data"
     }
    ],
    "source": [
     "for value in data_x[\"Celltype\"].unique():\n",
     "    mask = data_x[\"Celltype\"] == value\n",
-    "    time_cell, survival_prob_cell = kaplan_meier_estimator(data_y[\"Status\"][mask],\n",
-    "                                                           data_y[\"Survival_in_days\"][mask])\n",
+    "    time_cell, survival_prob_cell, conf_int = kaplan_meier_estimator(\n",
+    "        data_y[\"Status\"][mask], data_y[\"Survival_in_days\"][mask], conf_type=\"log-log\"\n",
+    "    )\n",
     "    plt.step(time_cell, survival_prob_cell, where=\"post\",\n",
     "             label=\"%s (n = %d)\" % (value, mask.sum()))\n",
+    "    plt.fill_between(time_cell, conf_int[0], conf_int[1], alpha=0.25, step=\"post\")\n",
     "\n",
+    "plt.ylim(0, 1)\n",
     "plt.ylabel(\"est. probability of survival $\\hat{S}(t)$\")\n",
     "plt.xlabel(\"time $t$\")\n",
     "plt.legend(loc=\"best\")"
@@ -1272,7 +1289,7 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python 3",
+   "display_name": "Python 3 (ipykernel)",
    "language": "python",
    "name": "python3"
   },
@@ -1286,7 +1303,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.10.5"
+   "version": "3.10.9"
   }
  },
  "nbformat": 4,
diff --git a/sksurv/nonparametric.py b/sksurv/nonparametric.py
index ccb608dd..14dac3bf 100644
--- a/sksurv/nonparametric.py
+++ b/sksurv/nonparametric.py
@@ -10,8 +10,12 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
+import numbers
+
 import numpy as np
+from scipy import stats
 from sklearn.base import BaseEstimator
+from sklearn.utils._param_validation import Interval, StrOptions
 from sklearn.utils.validation import check_array, check_consistent_length, check_is_fitted
 
 from .util import check_y_survival
@@ -151,7 +155,7 @@ def _compute_counts_truncated(event, time_enter, time_exit):
     for i in range(1, len(uniq_times)):
         ti = uniq_times[i]
 
-        while idx_enter < n_samples and s_time_enter[idx_enter] <= ti:
+        while idx_enter < n_samples and s_time_enter[idx_enter] < ti:
             idx_enter += 1
 
         while idx_exit < n_samples and s_time_exit[idx_exit] < ti:
@@ -171,7 +175,41 @@ def _compute_counts_truncated(event, time_enter, time_exit):
     return uniq_times, event_counts, total_counts
 
 
-def kaplan_meier_estimator(event, time_exit, time_enter=None, time_min=None, reverse=False):
+def _ci_logmlog(prob_survival, sigma_t, z):
+    """Compute the pointwise log-minus-log transformed confidence intervals"""
+    eps = np.finfo(prob_survival.dtype).eps
+    log_p = np.zeros_like(prob_survival)
+    np.log(prob_survival, where=prob_survival > eps, out=log_p)
+    theta = np.zeros_like(prob_survival)
+    np.true_divide(sigma_t, log_p, where=log_p < -eps, out=theta)
+    theta = np.array([[-1], [1]]) * theta * z
+    ci = np.exp(np.exp(theta) * log_p)
+    ci[:, prob_survival <= eps] = 0.0
+    ci[:, 1.0 - prob_survival <= eps] = 1.0
+    return ci
+
+
+def _km_ci_estimator(prob_survival, ratio_var, conf_level, conf_type):
+    if conf_type not in {"log-log"}:
+        raise ValueError("conf_type must be None or a str among {{'log-log'}}, but was {!r}".format(conf_type))
+
+    if (
+        not isinstance(conf_level, numbers.Real)
+        or not np.isfinite(conf_level)
+        or conf_level <= 0
+        or conf_level >= 1.0
+    ):
+        raise ValueError("conf_level must be a float in the range (0.0, 1.0), but was {!r}".format(conf_level))
+
+    z = stats.norm.isf((1.0 - conf_level) / 2.0)
+    sigma = np.sqrt(np.cumsum(ratio_var))
+    ci = _ci_logmlog(prob_survival, sigma, z)
+    return ci
+
+
+def kaplan_meier_estimator(
+    event, time_exit, time_enter=None, time_min=None, reverse=False, conf_level=0.95, conf_type=None,
+):
     """Kaplan-Meier estimator of survival function.
 
     See [1]_ for further description.
@@ -199,6 +237,15 @@ def kaplan_meier_estimator(event, time_exit, time_enter=None, time_min=None, rev
         Only available for right-censored data, i.e. `time_enter` must
         be None.
 
+    conf_level : float, optional, default: 0.95
+        The level for a two-sided confidence interval on the survival curves.
+
+    conf_type : None or {'log-log'}, optional, default: 'log-log'.
+        The type of confidence intervals to estimate.
+        If `None`, no confidence intervals are estimated.
+        If "log-log", estimate confidence intervals using
+        the log hazard or :math:`log(-log(S(t)))` as described in [2]_.
+
     Returns
     -------
     time : array, shape = (n_times,)
@@ -208,23 +255,40 @@ def kaplan_meier_estimator(event, time_exit, time_enter=None, time_min=None, rev
         Survival probability at each unique time point.
         If `time_enter` is provided, estimates are conditional probabilities.
 
+    conf_int : array, shape = (2, n_times)
+        Pointwise confidence interval of the Kaplan-Meier estimator
+        at each unique time point.
+        Only provided if `conf_type` is not None.
+
     Examples
     --------
     Creating a Kaplan-Meier curve:
 
-    >>> x, y = kaplan_meier_estimator(event, time)
+    >>> x, y, conf_int = kaplan_meier_estimator(event, time, conf_type="log-log")
     >>> plt.step(x, y, where="post")
+    >>> plt.fill_between(x, conf_int[0], conf_int[1], alpha=0.25, step="post")
     >>> plt.ylim(0, 1)
     >>> plt.show()
 
+    See also
+    --------
+    sksurv.nonparametric.SurvivalFunctionEstimator
+        Estimator API of the Kaplan-Meier estimator.
+
     References
     ----------
     .. [1] Kaplan, E. L. and Meier, P., "Nonparametric estimation from incomplete observations",
            Journal of The American Statistical Association, vol. 53, pp. 457-481, 1958.
+    .. [2] Borgan Ø. and Liestøl K., "A Note on Confidence Intervals and Bands for the
+           Survival Function Based on Transformations", Scandinavian Journal of
+           Statistics. 1990;17(1):35–41.
     """
     event, time_enter, time_exit = check_y_survival(event, time_enter, time_exit, allow_all_censored=True)
     check_consistent_length(event, time_enter, time_exit)
 
+    if conf_type is not None and reverse:
+        raise NotImplementedError("Confidence intervals of the censoring distribution is not implemented.")
+
     if time_enter is None:
         uniq_times, n_events, n_at_risk, n_censored = _compute_counts(event, time_exit)
 
@@ -245,13 +309,30 @@ def kaplan_meier_estimator(event, time_exit, time_enter=None, time_min=None, rev
     )
     values = 1.0 - ratio
 
+    if conf_type is not None:
+        ratio_var = np.divide(
+            n_events,
+            n_at_risk * (n_at_risk - n_events),
+            out=np.zeros(uniq_times.shape[0], dtype=float),
+            where=(n_events != 0) & (n_at_risk != n_events),
+        )
+
     if time_min is not None:
         mask = uniq_times >= time_min
         uniq_times = np.compress(mask, uniq_times)
         values = np.compress(mask, values)
 
-    y = np.cumprod(values)
-    return uniq_times, y
+    prob_survival = np.cumprod(values)
+
+    if conf_type is None:
+        return uniq_times, prob_survival
+
+    if time_min is not None:
+        ratio_var = np.compress(mask, ratio_var)
+
+    ci = _km_ci_estimator(prob_survival, ratio_var, conf_level, conf_type)
+
+    return uniq_times, prob_survival, ci
 
 
 def nelson_aalen_estimator(event, time):
@@ -331,10 +412,33 @@ def ipc_weights(event, time):
 
 
 class SurvivalFunctionEstimator(BaseEstimator):
-    """Kaplan–Meier estimate of the survival function."""
+    """Kaplan–Meier estimate of the survival function.
 
-    def __init__(self):
-        pass
+    Parameters
+    ----------
+    conf_level : float, optional, default: 0.95
+        The level for a two-sided confidence interval on the survival curves.
+
+    conf_type : None or {'log-log'}, optional, default: 'log-log'.
+        The type of confidence intervals to estimate.
+        If `None`, no confidence intervals are estimated.
+        If "log-log", estimate confidence intervals using
+        the log hazard or :math:`log(-log(S(t)))`.
+
+    See also
+    --------
+    sksurv.nonparametric.kaplan_meier_estimator
+        Functional API of the Kaplan-Meier estimator.
+    """
+
+    _parameter_constraints = {
+        "conf_level": [Interval(numbers.Real, 0.0, 1.0, closed="neither")],
+        "conf_type": [None, StrOptions({"log-log"})],
+    }
+
+    def __init__(self, conf_level=0.95, conf_type=None):
+        self.conf_level = conf_level
+        self.conf_type = conf_type
 
     def fit(self, y):
         """Estimate survival distribution from training data.
@@ -350,15 +454,22 @@ def fit(self, y):
         -------
         self
         """
+        self._validate_params()
         event, time = check_y_survival(y, allow_all_censored=True)
 
-        unique_time, prob = kaplan_meier_estimator(event, time)
+        values = kaplan_meier_estimator(event, time, conf_level=self.conf_level, conf_type=self.conf_type)
+        if self.conf_type is None:
+            unique_time, prob = values
+        else:
+            unique_time, prob, conf_int = values
+            self.conf_int_ = np.column_stack((np.ones((2, 1)), conf_int))
+
         self.unique_time_ = np.r_[-np.infty, unique_time]
         self.prob_ = np.r_[1., prob]
 
         return self
 
-    def predict_proba(self, time):
+    def predict_proba(self, time, return_conf_int=False):
         """Return probability of an event after given time point.
 
         :math:`\\hat{S}(t) = P(T > t)`
@@ -368,12 +479,27 @@ def predict_proba(self, time):
         time : array, shape = (n_samples,)
             Time to estimate probability at.
 
+        return_conf_int : bool, optional, default: False
+            Whether to return the pointwise confidence interval
+            of the survival function.
+            Only available if :meth:`fit()` has been called
+            with the `conf_type` parameter set.
+
         Returns
         -------
         prob : array, shape = (n_samples,)
-            Probability of an event.
+            Probability of an event at the passed time points.
+
+        conf_int : array, shape = (2, n_samples)
+            Pointwise confidence interval at the passed time points.
+            Only provided if `return_conf_int` is True.
         """
         check_is_fitted(self, "unique_time_")
+        if return_conf_int and not hasattr(self, "conf_int_"):
+            raise ValueError(
+                "If return_conf_int is True, SurvivalFunctionEstimator must be fitted with conf_int != None"
+            )
+
         time = check_array(time, ensure_2d=False, estimator=self, input_name="time")
 
         # K-M is undefined if estimate at last time point is non-zero
@@ -395,7 +521,13 @@ def predict_proba(self, time):
         idx[~exact] -= 1
         Shat[valid] = self.prob_[idx]
 
-        return Shat
+        if not return_conf_int:
+            return Shat
+
+        ci = np.empty((2, time.shape[0]), dtype=float)
+        ci[:, extends] = np.nan
+        ci[:, valid] = self.conf_int_[:, idx]
+        return Shat, ci
 
 
 class CensoringDistributionEstimator(SurvivalFunctionEstimator):


Test patch:
diff --git a/tests/test_nonparametric.py b/tests/test_nonparametric.py
index 14c645f9..886a04ac 100644
--- a/tests/test_nonparametric.py
+++ b/tests/test_nonparametric.py
@@ -32,16 +32,21 @@ def data_all_uncensored(self):
         time = self.time
         event = np.repeat(True, len(time))
         true_y = np.array([0.9375, 0.8125, 0.6875, 0.5625, 0.4375, 0.375, 0.3125, 0.25, 0.125, 0.0625, 0])
-
-        return time, event, self.true_x, true_y
+        km_ci = np.array([
+            [0.632345441738904, 0.524604310826649, 0.404603278696107, 0.295426730710439, 0.198117175236982,
+             0.154226191252824, 0.113871208031829, 0.0775371047405283, 0.0206750254850577, 0.00409816532132047, 0],
+            [0.990953141744666, 0.935352257965829, 0.856279177922122, 0.76223865703927, 0.6556436847056,
+             0.597718461149743, 0.536497040068499, 0.471616563850962, 0.327984354552463, 0.246994462218279, 0]
+        ])
+        return time, event, self.true_x, true_y, km_ci
 
     def data_all_censored(self):
         time = self.time
         event = np.repeat(False, len(time))
         true_x = self.true_x
         true_y = np.ones(true_x.shape[0])
-
-        return time, event, true_x, true_y
+        km_var = np.ones((2, true_x.shape[0]))
+        return time, event, true_x, true_y, km_var
 
     def data_first_censored(self):
         time = self.time
@@ -51,8 +56,14 @@ def data_first_censored(self):
             1, 0.866666666666667, 0.733333333333333, 0.6, 0.466666666666667, 0.4,
             0.333333333333333, 0.266666666666667, 0.133333333333333, 0.0666666666666667, 0,
         ])
+        km_var = np.array([
+            [1.0, 0.563912005708952, 0.436208202355272, 0.317586910207385, 0.212259381879575, 0.164939278037332,
+             0.121545719743796, 0.0825808249254053, 0.0218732094519415, 0.00430036344937564, 0],
+            [1.0, 0.964884495916472, 0.89051993143724, 0.796522795577473, 0.687454424870113, 0.627586046596913,
+             0.563999542746448, 0.49633566553142, 0.345732210952466, 0.260321963072145, 0]
+        ])
 
-        return time, event, self.true_x, true_y
+        return time, event, self.true_x, true_y, km_var
 
     def data_last_censored(self):
         time = self.time
@@ -61,8 +72,15 @@ def data_last_censored(self):
         true_y = np.array(
             [0.9375, 0.8125, 0.6875, 0.5625, 0.4375, 0.375, 0.3125, 0.25, 0.125, 0.0625, 0.0625]
         )
-
-        return time, event, self.true_x, true_y
+        km_var = np.array([
+            [0.632345441738904, 0.524604310826649, 0.404603278696107, 0.295426730710439,
+             0.198117175236982, 0.154226191252824, 0.113871208031829, 0.0775371047405283,
+             0.0206750254850577, 0.00409816532132047, 0.00409816532132047],
+            [0.990953141744666, 0.935352257965829, 0.856279177922122, 0.76223865703927,
+             0.6556436847056, 0.597718461149743, 0.536497040068499, 0.471616563850962,
+             0.327984354552463, 0.246994462218279, 0.246994462218279]
+        ])
+        return time, event, self.true_x, true_y, km_var
 
     def data_first_and_last_censored(self):
         time = self.time
@@ -73,8 +91,15 @@ def data_first_and_last_censored(self):
             1, 0.866666666666667, 0.733333333333333, 0.6, 0.466666666666667, 0.4,
             0.333333333333333, 0.266666666666667, 0.133333333333333, 0.0666666666666667, 0.0666666666666667,
         ])
-
-        return time, event, self.true_x, true_y
+        km_var = np.array([
+            [1.0, 0.563912005708952, 0.436208202355272, 0.317586910207385, 0.212259381879575,
+             0.164939278037332, 0.121545719743796, 0.0825808249254053, 0.0218732094519415,
+             0.00430036344937564, 0.00430036344937564],
+            [1.0, 0.964884495916472, 0.89051993143724, 0.796522795577473, 0.687454424870113,
+             0.627586046596913, 0.563999542746448, 0.49633566553142, 0.345732210952466,
+             0.260321963072145, 0.260321963072145]
+        ])
+        return time, event, self.true_x, true_y, km_var
 
 
 class SimpleDataNACases(FixtureParameterFactory):
@@ -131,6 +156,225 @@ def data_first_and_last_censored(self):
         return time, event, self.true_x, true_y
 
 
+class Whas500CIData(FixtureParameterFactory):
+    def data_loglog_ci_95(self):
+        true_ci = np.array([
+            [
+                0.96826186, 0.9482958, 0.94106981, 0.93630832, 0.93158523, 0.91991943, 0.9061371, 0.89931822,
+                0.89029004, 0.8858006, 0.88356159, 0.87909448, 0.87241954, 0.86577333, 0.86135743, 0.85695281,
+                0.85475457, 0.85255896, 0.84817541, 0.84161846, 0.83943752, 0.83725886, 0.83508242, 0.83290818,
+                0.8307361, 0.82856612, 0.82639822, 0.82423236, 0.81990662, 0.81774667, 0.81558863, 0.81343247,
+                0.80912565, 0.80482599, 0.80267878, 0.80053328, 0.79838947, 0.79624733, 0.79410682, 0.79196793,
+                0.78983064, 0.78769492, 0.78556076, 0.78342813, 0.78129702, 0.7791674, 0.77703926, 0.77491258,
+                0.77278735, 0.77066353, 0.76854113, 0.76642012, 0.76430048, 0.76218221, 0.76006528, 0.75583541,
+                0.75372243, 0.75161075, 0.74950034, 0.7473912, 0.7452833, 0.74107122, 0.736864, 0.73476219,
+                0.73266155, 0.73056209, 0.72846379, 0.72636664, 0.72427062, 0.72008198, 0.71798933, 0.71589778,
+                0.71380732, 0.71171795, 0.70962965, 0.70545626, 0.70337114, 0.70128706, 0.69920402, 0.69712201,
+                0.69504101, 0.69296103, 0.69088206, 0.68880408, 0.6846511, 0.68257608, 0.68257608, 0.68257608,
+                0.68257608, 0.68257608, 0.68045678, 0.67833853, 0.67833853, 0.67833853, 0.67620125, 0.67406505,
+                0.67406505, 0.67406505, 0.67406505, 0.67406505, 0.67188843, 0.66971297, 0.66971297, 0.66971297,
+                0.66971297, 0.66971297, 0.66971297, 0.66971297, 0.66748794, 0.66748794, 0.66525672, 0.66525672,
+                0.66525672, 0.66525672, 0.66525672, 0.66525672, 0.66525672, 0.66297306, 0.66297306, 0.66065074,
+                0.66065074, 0.66065074, 0.66065074, 0.66065074, 0.66065074, 0.66065074, 0.66065074, 0.65823649,
+                0.65823649, 0.65581505, 0.6533953, 0.6533953, 0.6533953, 0.65095919, 0.65095919, 0.65095919,
+                0.64850644, 0.64850644, 0.64850644, 0.64850644, 0.64850644, 0.64850644, 0.64850644, 0.64850644,
+                0.64850644, 0.64850644, 0.64850644, 0.64850644, 0.64591859, 0.64591859, 0.64331202, 0.64069705,
+                0.63808425, 0.63808425, 0.63808425, 0.63808425, 0.63540803, 0.63540803, 0.63272287, 0.63004007,
+                0.63004007, 0.63004007, 0.63004007, 0.63004007, 0.63004007, 0.63004007, 0.63004007, 0.63004007,
+                0.6272408, 0.62444424, 0.62444424, 0.62444424, 0.62162521, 0.6188089, 0.6159953, 0.61318435,
+                0.61037605, 0.61037605, 0.61037605, 0.6075444, 0.60471541, 0.60471541, 0.60187583, 0.59903891,
+                0.59620461, 0.59620461, 0.59335944, 0.59051688, 0.58767692, 0.58483951, 0.58200465, 0.57917229,
+                0.57634242, 0.57351502, 0.57069006, 0.56786752, 0.56504738, 0.56504738, 0.56504738, 0.56504738,
+                0.56504738, 0.56504738, 0.56504738, 0.56504738, 0.56504738, 0.56504738, 0.56504738, 0.56504738,
+                0.56504738, 0.56504738, 0.56504738, 0.56196974, 0.56196974, 0.56196974, 0.56196974, 0.5588094,
+                0.5588094, 0.55563482, 0.55563482, 0.55563482, 0.55563482, 0.55563482, 0.55239024, 0.55239024,
+                0.55239024, 0.54911132, 0.54911132, 0.54911132, 0.54911132, 0.54911132, 0.54911132, 0.54911132,
+                0.54911132, 0.54911132, 0.54563039, 0.54563039, 0.54563039, 0.54563039, 0.54208727, 0.54208727,
+                0.54208727, 0.54208727, 0.53847936, 0.53482859, 0.53482859, 0.53482859, 0.53482859, 0.53482859,
+                0.53482859, 0.53482859, 0.53482859, 0.53482859, 0.53482859, 0.53482859, 0.53482859, 0.53482859,
+                0.53482859, 0.53482859, 0.53482859, 0.53482859, 0.5306807, 0.5306807, 0.5306807, 0.5306807,
+                0.5306807, 0.5306807, 0.5306807, 0.5306807, 0.52627071, 0.52627071, 0.52627071, 0.52627071,
+                0.52627071, 0.52627071, 0.52627071, 0.52627071, 0.52627071, 0.52627071, 0.52627071, 0.52627071,
+                0.52130092, 0.52130092, 0.52130092, 0.52130092, 0.52130092, 0.51102842, 0.51102842, 0.51102842,
+                0.51102842, 0.51102842, 0.51102842, 0.51102842, 0.51102842, 0.51102842, 0.51102842, 0.51102842,
+                0.51102842, 0.51102842, 0.51102842, 0.51102842, 0.51102842, 0.51102842, 0.51102842, 0.51102842,
+                0.51102842, 0.50468416, 0.49837386, 0.49209611, 0.48584963, 0.47963325, 0.47344589, 0.46728656,
+                0.46115437, 0.45504847, 0.44896809, 0.44291252, 0.43688109, 0.43688109, 0.43688109, 0.43688109,
+                0.43688109, 0.43688109, 0.43688109, 0.43688109, 0.43688109, 0.43688109, 0.43688109, 0.43688109,
+                0.43688109, 0.43688109, 0.43688109, 0.43688109, 0.43688109, 0.43688109, 0.43688109, 0.42854576,
+                0.42854576, 0.42854576, 0.42854576, 0.42854576, 0.42854576, 0.42854576, 0.42854576, 0.42854576,
+                0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375,
+                0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375,
+                0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375,
+                0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375,
+                0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.41864375, 0.3450851,
+                0.3450851, 0.3450851, 0.3450851, 0.3450851, 0.3450851, 0.3450851, 0.3450851, 0.3450851, 0.08979757,
+                0.0116598, 0.0,
+            ],
+            [
+                0.99196624, 0.98027286, 0.97559252, 0.97241258, 0.96919211, 0.96099266, 0.95092943, 0.9458237,
+                0.93895115, 0.93548982, 0.93375334, 0.93026935, 0.9250173, 0.9197362, 0.91620041, 0.91265323,
+                0.91087555, 0.90909521, 0.9055268, 0.90015569, 0.89836059, 0.89656319, 0.89476355, 0.89296171,
+                0.89115771, 0.88935158, 0.88754337, 0.88573312, 0.8821066, 0.88029041, 0.87847231, 0.87665232,
+                0.87300683, 0.86935416, 0.8675252, 0.86569453, 0.86386217, 0.86202814, 0.86019247, 0.85835518,
+                0.85651629, 0.85467583, 0.85283381, 0.85099026, 0.8491452, 0.84729863, 0.84545059, 0.8436011,
+                0.84175016, 0.83989779, 0.83804402, 0.83618886, 0.83433233, 0.83247443, 0.83061519, 0.82689274,
+                0.82502956, 0.82316508, 0.82129934, 0.81943233, 0.81756408, 0.81382388, 0.81007883, 0.80820451,
+                0.80632902, 0.80445237, 0.80257455, 0.80069559, 0.7988155, 0.79505195, 0.7931685, 0.79128396,
+                0.78939834, 0.78751163, 0.78562385, 0.78184512, 0.77995419, 0.77806221, 0.77616921, 0.77427518,
+                0.77238014, 0.77048409, 0.76858704, 0.766689, 0.76288997, 0.760989, 0.760989, 0.760989, 0.760989,
+                0.760989, 0.75905303, 0.75711604, 0.75711604, 0.75711604, 0.75516296, 0.75320884, 0.75320884,
+                0.75320884, 0.75320884, 0.75320884, 0.75122263, 0.74923533, 0.74923533, 0.74923533, 0.74923533,
+                0.74923533, 0.74923533, 0.74923533, 0.74720917, 0.74720917, 0.74517631, 0.74517631, 0.74517631,
+                0.74517631, 0.74517631, 0.74517631, 0.74517631, 0.74310255, 0.74310255, 0.74099808, 0.74099808,
+                0.74099808, 0.74099808, 0.74099808, 0.74099808, 0.74099808, 0.74099808, 0.73882421, 0.73882421,
+                0.73664242, 0.73445913, 0.73445913, 0.73445913, 0.73226128, 0.73226128, 0.73226128, 0.73004862,
+                0.73004862, 0.73004862, 0.73004862, 0.73004862, 0.73004862, 0.73004862, 0.73004862, 0.73004862,
+                0.73004862, 0.73004862, 0.73004862, 0.72773618, 0.72773618, 0.72540711, 0.72306869, 0.72072841,
+                0.72072841, 0.72072841, 0.72072841, 0.71833975, 0.71833975, 0.71594113, 0.71354053, 0.71354053,
+                0.71354053, 0.71354053, 0.71354053, 0.71354053, 0.71354053, 0.71354053, 0.71354053, 0.71105436,
+                0.70856593, 0.70856593, 0.70856593, 0.70605767, 0.70354713, 0.70103434, 0.69851933, 0.6960021,
+                0.6960021, 0.6960021, 0.69346434, 0.69092435, 0.69092435, 0.68837277, 0.68581896, 0.68326294,
+                0.68326294, 0.68069513, 0.67812512, 0.67555291, 0.67297853, 0.67040201, 0.66782334, 0.66524256,
+                0.66265967, 0.6600747, 0.65748765, 0.65489855, 0.65489855, 0.65489855, 0.65489855, 0.65489855,
+                0.65489855, 0.65489855, 0.65489855, 0.65489855, 0.65489855, 0.65489855, 0.65489855, 0.65489855,
+                0.65489855, 0.65489855, 0.65212108, 0.65212108, 0.65212108, 0.65212108, 0.64928059, 0.64928059,
+                0.64642468, 0.64642468, 0.64642468, 0.64642468, 0.64642468, 0.64351454, 0.64351454, 0.64351454,
+                0.64057471, 0.64057471, 0.64057471, 0.64057471, 0.64057471, 0.64057471, 0.64057471, 0.64057471,
+                0.64057471, 0.63749077, 0.63749077, 0.63749077, 0.63749077, 0.63435761, 0.63435761, 0.63435761,
+                0.63435761, 0.63117333, 0.6279523, 0.6279523, 0.6279523, 0.6279523, 0.6279523, 0.6279523, 0.6279523,
+                0.6279523, 0.6279523, 0.6279523, 0.6279523, 0.6279523, 0.6279523, 0.6279523, 0.6279523, 0.6279523,
+                0.6279523, 0.62440189, 0.62440189, 0.62440189, 0.62440189, 0.62440189, 0.62440189, 0.62440189,
+                0.62440189, 0.6206771, 0.6206771, 0.6206771, 0.6206771, 0.6206771, 0.6206771, 0.6206771, 0.6206771,
+                0.6206771, 0.6206771, 0.6206771, 0.6206771, 0.61660741, 0.61660741, 0.61660741, 0.61660741,
+                0.61660741, 0.60821176, 0.60821176, 0.60821176, 0.60821176, 0.60821176, 0.60821176, 0.60821176,
+                0.60821176, 0.60821176, 0.60821176, 0.60821176, 0.60821176, 0.60821176, 0.60821176, 0.60821176,
+                0.60821176, 0.60821176, 0.60821176, 0.60821176, 0.60821176, 0.60333709, 0.59843545, 0.59350802,
+                0.58855584, 0.58357986, 0.57858095, 0.57355989, 0.5685174, 0.56345413, 0.55837069, 0.55326763,
+                0.54814545, 0.54814545, 0.54814545, 0.54814545, 0.54814545, 0.54814545, 0.54814545, 0.54814545,
+                0.54814545, 0.54814545, 0.54814545, 0.54814545, 0.54814545, 0.54814545, 0.54814545, 0.54814545,
+                0.54814545, 0.54814545, 0.54814545, 0.54180033, 0.54180033, 0.54180033, 0.54180033, 0.54180033,
+                0.54180033, 0.54180033, 0.54180033, 0.54180033, 0.53469408, 0.53469408, 0.53469408, 0.53469408,
+                0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408,
+                0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408,
+                0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408,
+                0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408, 0.53469408,
+                0.53469408, 0.53469408, 0.53469408, 0.52716703, 0.52716703, 0.52716703, 0.52716703, 0.52716703,
+                0.52716703, 0.52716703, 0.52716703, 0.52716703, 0.53337398, 0.43538693, 0.0,
+            ]
+        ])
+        return 0.95, "log-log", true_ci
+
+    def data_loglog_ci_99(self):
+        true_ci = np.array([
+            [
+                0.96069455, 0.9399525, 0.93243483, 0.92748604, 0.92258173, 0.91048906, 0.89623994, 0.88920432,
+                0.87990263, 0.8752826, 0.87297976, 0.86838778, 0.86153226, 0.85471307, 0.85018585, 0.84567295,
+                0.84342168, 0.84117376, 0.83668769, 0.82998206, 0.82775286, 0.82552657, 0.82330315, 0.82108253,
+                0.81886467, 0.81664951, 0.81443702, 0.81222714, 0.80781506, 0.80561278, 0.80341295, 0.80121553,
+                0.79682777, 0.79244924, 0.79026334, 0.78807965, 0.78589814, 0.78371877, 0.78154151, 0.77936635,
+                0.77719324, 0.77502217, 0.7728531, 0.77068602, 0.76852089, 0.7663577, 0.76419641, 0.76203702,
+                0.75987948, 0.75772379, 0.75556993, 0.75341786, 0.75126758, 0.74911906, 0.74697228, 0.74268388,
+                0.74054223, 0.73840224, 0.73626391, 0.73412722, 0.73199215, 0.72772682, 0.72346779, 0.72134061,
+                0.71921495, 0.71709082, 0.7149682, 0.71284706, 0.71072741, 0.7064925, 0.70437722, 0.70226337,
+                0.70015094, 0.69803991, 0.69593029, 0.6917152, 0.6896097, 0.68750557, 0.68540278, 0.68330133,
+                0.68120121, 0.6791024, 0.6770049, 0.67490871, 0.67072018, 0.66862783, 0.66862783, 0.66862783,
+                0.66862783, 0.66862783, 0.6664896, 0.66435276, 0.66435276, 0.66435276, 0.66219635, 0.66004137,
+                0.66004137, 0.66004137, 0.66004137, 0.66004137, 0.65784454, 0.65564922, 0.65564922, 0.65564922,
+                0.65564922, 0.65564922, 0.65564922, 0.65564922, 0.65340254, 0.65340254, 0.65114973, 0.65114973,
+                0.65114973, 0.65114973, 0.65114973, 0.65114973, 0.65114973, 0.64884252, 0.64884252, 0.64649531,
+                0.64649531, 0.64649531, 0.64649531, 0.64649531, 0.64649531, 0.64649531, 0.64649531, 0.64405235,
+                0.64405235, 0.64160234, 0.6391546, 0.6391546, 0.6391546, 0.63669021, 0.63669021, 0.63669021,
+                0.63420891, 0.63420891, 0.63420891, 0.63420891, 0.63420891, 0.63420891, 0.63420891, 0.63420891,
+                0.63420891, 0.63420891, 0.63420891, 0.63420891, 0.63158651, 0.63158651, 0.6289451, 0.6262955,
+                0.62364883, 0.62364883, 0.62364883, 0.62364883, 0.62093623, 0.62093623, 0.61821494, 0.61549681,
+                0.61549681, 0.61549681, 0.61549681, 0.61549681, 0.61549681, 0.61549681, 0.61549681, 0.61549681,
+                0.61265704, 0.60982092, 0.60982092, 0.60982092, 0.60696197, 0.60410669, 0.60125505, 0.598407,
+                0.59556249, 0.59556249, 0.59556249, 0.59269426, 0.58982961, 0.58982961, 0.58695464, 0.58408323,
+                0.58121536, 0.58121536, 0.57833686, 0.57546188, 0.57259038, 0.56972232, 0.56685766, 0.56399638,
+                0.56113844, 0.5582838, 0.55543244, 0.55258433, 0.54973943, 0.54973943, 0.54973943, 0.54973943,
+                0.54973943, 0.54973943, 0.54973943, 0.54973943, 0.54973943, 0.54973943, 0.54973943, 0.54973943,
+                0.54973943, 0.54973943, 0.54973943, 0.54662584, 0.54662584, 0.54662584, 0.54662584, 0.54342646,
+                0.54342646, 0.54021321, 0.54021321, 0.54021321, 0.54021321, 0.54021321, 0.53692756, 0.53692756,
+                0.53692756, 0.533607, 0.533607, 0.533607, 0.533607, 0.533607, 0.533607, 0.533607,
+                0.533607, 0.533607, 0.53007513, 0.53007513, 0.53007513, 0.53007513, 0.5264792, 0.5264792,
+                0.5264792, 0.5264792, 0.52281653, 0.5191103, 0.5191103, 0.5191103, 0.5191103, 0.5191103,
+                0.5191103, 0.5191103, 0.5191103, 0.5191103, 0.5191103, 0.5191103, 0.5191103, 0.5191103,
+                0.5191103, 0.5191103, 0.5191103, 0.5191103, 0.51487966, 0.51487966, 0.51487966, 0.51487966,
+                0.51487966, 0.51487966, 0.51487966, 0.51487966, 0.51037292, 0.51037292, 0.51037292, 0.51037292,
+                0.51037292, 0.51037292, 0.51037292, 0.51037292, 0.51037292, 0.51037292, 0.51037292, 0.51037292,
+                0.50527132, 0.50527132, 0.50527132, 0.50527132, 0.50527132, 0.49472548, 0.49472548, 0.49472548,
+                0.49472548, 0.49472548, 0.49472548, 0.49472548, 0.49472548, 0.49472548, 0.49472548, 0.49472548,
+                0.49472548, 0.49472548, 0.49472548, 0.49472548, 0.49472548, 0.49472548, 0.49472548, 0.49472548,
+                0.49472548, 0.48815787, 0.48163641, 0.4751592, 0.4687245, 0.46233071, 0.45597637, 0.44966012,
+                0.44338073, 0.43713705, 0.43092802, 0.42475265, 0.41861004, 0.41861004, 0.41861004, 0.41861004,
+                0.41861004, 0.41861004, 0.41861004, 0.41861004, 0.41861004, 0.41861004, 0.41861004, 0.41861004,
+                0.41861004, 0.41861004, 0.41861004, 0.41861004, 0.41861004, 0.41861004, 0.41861004, 0.40999634,
+                0.40999634, 0.40999634, 0.40999634, 0.40999634, 0.40999634, 0.40999634, 0.40999634, 0.40999634,
+                0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945,
+                0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945,
+                0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945,
+                0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945,
+                0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.3996945, 0.31589426,
+                0.31589426, 0.31589426, 0.31589426, 0.31589426, 0.31589426, 0.31589426, 0.31589426, 0.31589426,
+                0.05095117, 0.0030451, 0.0
+            ],
+            [
+                0.9935331, 0.98306404, 0.97877429, 0.97583977, 0.9728543,
+                0.96520344, 0.9557383, 0.95091126, 0.94439222, 0.94110059, 0.93944733, 0.93612663, 0.93111211,
+                0.92606022, 0.9226729, 0.91927093, 0.91756465, 0.91585496, 0.91242561, 0.90725769, 0.90552894,
+                0.90379723, 0.90206262, 0.90032516, 0.89858491, 0.89684191, 0.89509622, 0.89334788, 0.88984344,
+                0.88808742, 0.88632893, 0.884568, 0.88103899, 0.87750068, 0.87572813, 0.87395335, 0.87217639,
+                0.87039727, 0.86861601, 0.86683266, 0.86504724, 0.86325977, 0.86147028, 0.85967881, 0.85788537,
+                0.85608999, 0.85429269, 0.8524935, 0.85069244, 0.84888952, 0.84708479, 0.84527824, 0.84346992,
+                0.84165982, 0.83984798, 0.83621914, 0.83440218, 0.83258354, 0.83076325, 0.82894132, 0.82711777,
+                0.82346586, 0.81980765, 0.81797623, 0.81614327, 0.81430879, 0.81247281, 0.81063534, 0.8087964,
+                0.80511413, 0.80327083, 0.8014261, 0.79957996, 0.79773241, 0.79588347, 0.79218146, 0.79032841,
+                0.788474, 0.78661826, 0.78476119, 0.7829028, 0.78104309, 0.77918209, 0.77731979, 0.77359136,
+                0.77172523, 0.77172523, 0.77172523, 0.77172523, 0.77172523, 0.76982544, 0.7679243, 0.7679243,
+                0.7679243, 0.7660075, 0.76408934, 0.76408934, 0.76408934, 0.76408934, 0.76408934, 0.76214028,
+                0.76018979, 0.76018979, 0.76018979, 0.76018979, 0.76018979, 0.76018979, 0.76018979, 0.75820197,
+                0.75820197, 0.75620739, 0.75620739, 0.75620739, 0.75620739, 0.75620739, 0.75620739, 0.75620739,
+                0.75417354, 0.75417354, 0.75211012, 0.75211012, 0.75211012, 0.75211012, 0.75211012, 0.75211012,
+                0.75211012, 0.75211012, 0.7499805, 0.7499805, 0.74784288, 0.74570335, 0.74570335, 0.74570335,
+                0.74354953, 0.74354953, 0.74354953, 0.74138119, 0.74138119, 0.74138119, 0.74138119, 0.74138119,
+                0.74138119, 0.74138119, 0.74138119, 0.74138119, 0.74138119, 0.74138119, 0.74138119, 0.73911808,
+                0.73911808, 0.73683869, 0.73454987, 0.73225867, 0.73225867, 0.73225867, 0.73225867, 0.72992126,
+                0.72992126, 0.72757382, 0.72522385, 0.72522385, 0.72522385, 0.72522385, 0.72522385, 0.72522385,
+                0.72522385, 0.72522385, 0.72522385, 0.72279272, 0.72035872, 0.72035872, 0.72035872, 0.71790534,
+                0.71544907, 0.71298994, 0.71052796, 0.70806316, 0.70806316, 0.70806316, 0.70557832, 0.70309063,
+                0.70309063, 0.7005913, 0.69808913, 0.69558413, 0.69558413, 0.6930673, 0.69054766, 0.68802523,
+                0.68550002, 0.68297207, 0.68044139, 0.67790801, 0.67537194, 0.6728332, 0.67029182, 0.66774781,
+                0.66774781, 0.66774781, 0.66774781, 0.66774781, 0.66774781, 0.66774781, 0.66774781, 0.66774781,
+                0.66774781, 0.66774781, 0.66774781, 0.66774781, 0.66774781, 0.66774781, 0.66502561, 0.66502561,
+                0.66502561, 0.66502561, 0.66224336, 0.66224336, 0.65944567, 0.65944567, 0.65944567, 0.65944567,
+                0.65944567, 0.65659618, 0.65659618, 0.65659618, 0.65371784, 0.65371784, 0.65371784, 0.65371784,
+                0.65371784, 0.65371784, 0.65371784, 0.65371784, 0.65371784, 0.65070395, 0.65070395, 0.65070395,
+                0.65070395, 0.64764294, 0.64764294, 0.64764294, 0.64764294, 0.64453302, 0.64138749, 0.64138749,
+                0.64138749, 0.64138749, 0.64138749, 0.64138749, 0.64138749, 0.64138749, 0.64138749, 0.64138749,
+                0.64138749, 0.64138749, 0.64138749, 0.64138749, 0.64138749, 0.64138749, 0.64138749, 0.63793702,
+                0.63793702, 0.63793702, 0.63793702, 0.63793702, 0.63793702, 0.63793702, 0.63793702, 0.63432516,
+                0.63432516, 0.63432516, 0.63432516, 0.63432516, 0.63432516, 0.63432516, 0.63432516, 0.63432516,
+                0.63432516, 0.63432516, 0.63432516, 0.63039956, 0.63039956, 0.63039956, 0.63039956, 0.63039956,
+                0.62230531, 0.62230531, 0.62230531, 0.62230531, 0.62230531, 0.62230531, 0.62230531, 0.62230531,
+                0.62230531, 0.62230531, 0.62230531, 0.62230531, 0.62230531, 0.62230531, 0.62230531, 0.62230531,
+                0.62230531, 0.62230531, 0.62230531, 0.62230531, 0.61765802, 0.61297663, 0.60826262, 0.60351733,
+                0.59874198, 0.59393766, 0.58910537, 0.58424603, 0.57936047, 0.57444944, 0.56951366, 0.56455375,
+                0.56455375, 0.56455375, 0.56455375, 0.56455375, 0.56455375, 0.56455375, 0.56455375, 0.56455375,
+                0.56455375, 0.56455375, 0.56455375, 0.56455375, 0.56455375, 0.56455375, 0.56455375, 0.56455375,
+                0.56455375, 0.56455375, 0.55853254, 0.55853254, 0.55853254, 0.55853254, 0.55853254, 0.55853254,
+                0.55853254, 0.55853254, 0.55853254, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229,
+                0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229,
+                0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229,
+                0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229,
+                0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229, 0.55187229,
+                0.55187229, 0.55187229, 0.55369988, 0.55369988, 0.55369988, 0.55369988, 0.55369988, 0.55369988,
+                0.55369988, 0.55369988, 0.55369988, 0.60116676, 0.52790258, 0.0
+            ]
+        ])
+        return 0.99, "log-log", true_ci
+
+
 @pytest.fixture()
 def make_channing():
     def _make_channing(sex):  # pylint: disable=unused-argument
@@ -185,11 +429,11 @@ def _make_aids(kind):
             f = AIDS_ADULTS_FILE
         else:
             raise ValueError('unknown kind {!r}'.format(kind))
-        data = pd.read_csv(f, comment="#")
+        data = pd.read_csv(f, comment="#").query("(8 - DIAG) > INF")
 
         event = np.repeat(True, data.shape[0])
-        time_enter = 8 - data["INF"]
-        time_exit = data["DIAG"]
+        time_enter = data["INF"]
+        time_exit = 8 - data["DIAG"]
         return event, time_enter, time_exit
     return _make_aids
 
@@ -203,6 +447,13 @@ def truncated_failure_data():
     return event, time_exit, time_enter
 
 
+@pytest.fixture()
+def random_survival_data():
+    event = np.ones(10, dtype=bool)
+    event[:5] = False
+    return Surv.from_arrays(event=event, time=np.random.rand(10))
+
+
 @pytest.fixture()
 def whas500_true_x():
     return np.array([
@@ -232,23 +483,30 @@ def whas500_true_x():
 class TestKaplanMeier:
 
     @staticmethod
-    @pytest.mark.parametrize("time,event,true_x,true_y", SimpleDataKMCases().get_cases())
-    def test_simple(time, event, true_x, true_y):
+    @pytest.mark.parametrize("time,event,true_x,true_y,km_ci", SimpleDataKMCases().get_cases())
+    def test_simple(time, event, true_x, true_y, km_ci):
         x, y = kaplan_meier_estimator(event, time)
 
         assert_array_equal(x, true_x)
         assert_array_almost_equal(y, true_y)
 
+        x, y, ci = kaplan_meier_estimator(event, time, conf_type="log-log")
+        assert_array_equal(x, true_x)
+        assert_array_almost_equal(y, true_y)
+        assert_array_almost_equal(ci, km_ci)
+
         ys = Surv.from_arrays(event, time)
-        est = SurvivalFunctionEstimator().fit(ys)
+        est = SurvivalFunctionEstimator(conf_type="log-log").fit(ys)
         assert_array_equal(est.unique_time_[1:], true_x)
         assert_array_almost_equal(est.prob_[1:], true_y)
-        prob = est.predict_proba(true_x)
+        assert_array_almost_equal(est.conf_int_[:, 1:], km_ci)
+        prob, ci = est.predict_proba(true_x, return_conf_int=True)
         assert_array_almost_equal(prob, true_y)
+        assert_array_almost_equal(ci, km_ci)
 
     @staticmethod
-    @pytest.mark.parametrize("time,event,true_x,true_y", SimpleDataKMCases().get_cases())
-    def test_wrong_dtype(time, event, true_x, true_y):  # noqa: F821 undefined name
+    @pytest.mark.parametrize("time,event,true_x,true_y,km_var", SimpleDataKMCases().get_cases())
+    def test_wrong_dtype(time, event, true_x, true_y, km_var):  # noqa: F821 undefined name
         ys = Surv.from_arrays(event, time)
         est = SurvivalFunctionEstimator().fit(ys)
         with pytest.raises(
@@ -263,6 +521,50 @@ def test_wrong_dtype(time, event, true_x, true_y):  # noqa: F821 undefined name
         ):
             est.predict_proba(np.random.randn(10, 9, 5))
 
+    @staticmethod
+    @pytest.mark.parametrize("conf_level", [None, -1, 1.0, 3.0, np.inf, np.nan])
+    def test_estimator_invalid_conf_level(random_survival_data, conf_level):
+        msg = r"The 'conf_level' parameter of SurvivalFunctionEstimator must be a float in the range \(0\.0, 1\.0\)\."
+        with pytest.raises(ValueError, match=msg):
+            SurvivalFunctionEstimator(conf_level=conf_level, conf_type="log-log").fit(random_survival_data)
+
+    @staticmethod
+    @pytest.mark.parametrize("conf_level", [None, -1, 1.0, 3.0, np.inf, np.nan])
+    def test_invalid_conf_level(random_survival_data, conf_level):
+        msg = r"conf_level must be a float in the range \(0\.0, 1\.0\)"
+        with pytest.raises(ValueError, match=msg):
+            kaplan_meier_estimator(
+                random_survival_data["event"],
+                random_survival_data["time"],
+                conf_level=conf_level,
+                conf_type="log-log",
+            )
+
+    @staticmethod
+    @pytest.mark.parametrize("conf_type", ["None", -1, "", "not"])
+    def test_estimator_invalid_conf_type(random_survival_data, conf_type):
+        msg = r"The 'conf_type' parameter of SurvivalFunctionEstimator must be None or a str among \{.+\}\."
+        with pytest.raises(ValueError, match=msg):
+            SurvivalFunctionEstimator(conf_type=conf_type).fit(random_survival_data)
+
+    @staticmethod
+    @pytest.mark.parametrize("conf_type", ["None", -1, "", "not"])
+    def test_invalid_conf_type(random_survival_data, conf_type):
+        msg = r"conf_type must be None or a str among \{.+\}"
+        with pytest.raises(ValueError, match=msg):
+            kaplan_meier_estimator(
+                random_survival_data["event"],
+                random_survival_data["time"],
+                conf_type=conf_type,
+            )
+
+    @staticmethod
+    def test_estimator_fit_without_ci(random_survival_data):
+        est = SurvivalFunctionEstimator().fit(random_survival_data)
+        msg = "If return_conf_int is True, SurvivalFunctionEstimator must be fitted with conf_int != None"
+        with pytest.raises(ValueError, match=msg):
+            est.predict_proba(np.unique(random_survival_data["time"]), return_conf_int=True)
+
     @staticmethod
     def test_truncated_enter_larger_exit_error(truncated_failure_data):
         with pytest.raises(ValueError, match="exit time must be larger start time for all samples"):
@@ -349,22 +651,114 @@ def test_whas500(make_whas500, whas500_true_x):
 
         assert_array_almost_equal(y, true_y)
 
+    @staticmethod
+    @pytest.mark.parametrize("conf_level,conf_type,true_ci", Whas500CIData().get_cases())
+    def test_ci_whas500(make_whas500, conf_level, conf_type, true_ci):
+        whas500 = make_whas500(with_mean=False, with_std=False)
+        time = whas500.y['lenfol']
+        event = whas500.y['fstat']
+
+        _, _, ci = kaplan_meier_estimator(event, time, conf_level=conf_level, conf_type=conf_type)
+
+        assert_array_almost_equal(ci, true_ci)
+
+    @staticmethod
+    def test_left_truncated_simple1():
+        time_enter = np.array([4, 3, 4, 2, 1, 5, 6, 7])
+        time_exit = np.array([6, 7, 8, 10, 9, 9, 10, 11])
+        event = np.array([0, 1, 0, 0, 1, 1, 1, 0], dtype=bool)
+
+        x, y, km_ci = kaplan_meier_estimator(
+            event, time_exit, time_enter, conf_type="log-log"
+        )
+
+        true_x = np.arange(1, 12)
+        assert_array_almost_equal(x, true_x)
+
+        true_y = np.array([
+            1., 1., 1., 1., 1., 1., 0.833333, 0.833333, 0.5, 0.333333, 0.333333
+        ])
+        assert_array_almost_equal(y, true_y)
+
+        true_ci = np.array([
+            [1., 1., 1., 1., 1., 1., 0.273123, 0.273123, 0.110948, 0.046082, 0.046082],
+            [1., 1., 1., 1., 1., 1., 0.974712, 0.974712, 0.803709, 0.675564, 0.675564],
+        ])
+        assert_array_almost_equal(km_ci, true_ci)
+
+    @staticmethod
+    def test_left_truncated_simple2():
+        time_enter = np.array([1, 4, 3, 4, 2, 1, 5, 6, 7])
+        time_exit = np.array([4, 6, 7, 8, 10, 9, 9, 10, 11])
+        event = np.array([1, 0, 1, 0, 0, 1, 1, 1, 0], dtype=bool)
+
+        x, y, km_ci = kaplan_meier_estimator(
+            event, time_exit, time_enter, conf_type="log-log"
+        )
+
+        true_x = np.arange(1, 12)
+        assert_array_almost_equal(x, true_x)
+
+        true_y = np.array([
+            1., 1., 1., 0.75, 0.75, 0.75, 0.625, 0.625, 0.375, 0.25, 0.25
+        ])
+        assert_array_almost_equal(y, true_y)
+
+        true_ci = np.array([
+            [1., 1., 1., 0.127947, 0.127947, 0.127947, 0.141853, 0.141853, 0.069678, 0.03165, 0.03165],
+            [1., 1., 1., 0.960549, 0.960549, 0.960549, 0.893051, 0.893051, 0.696882, 0.573177, 0.573177],
+        ])
+        assert_array_almost_equal(km_ci, true_ci)
+
+    @staticmethod
+    def test_left_truncated_simple3():
+        time_enter = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 9])
+        time_exit = np.array([11, 12, 13, 14, 15, 16, 17, 18, 19, 19])
+        event = np.array([0, 1, 0, 0, 1, 1, 1, 1, 0, 1], dtype=bool)
+
+        x, y, km_ci = kaplan_meier_estimator(
+            event, time_exit, time_enter, conf_type="log-log"
+        )
+
+        true_x = np.concatenate((np.arange(1, 10), np.arange(11, 20)))
+        assert_array_almost_equal(x, true_x)
+
+        true_y = np.array([
+            1, 0.888889, 0.888889, 0.888889, 0.740741, 0.592593, 0.444444, 0.296296, 0.148148
+        ])
+        assert_array_almost_equal(y[9:], true_y)
+
+        true_ci = np.array([
+            [1., 0.432965, 0.432965, 0.432965, 0.289212, 0.185919, 0.103865, 0.043129, 0.00736],
+            [1., 0.983564, 0.983564, 0.983564, 0.929976, 0.849818, 0.747981, 0.624575, 0.475977],
+        ])
+        assert_array_almost_equal(km_ci[:, :9], np.ones((2, 9)))
+        assert_array_almost_equal(km_ci[:, 9:], true_ci)
+
     @staticmethod
     def test_truncated_male(make_channing, channing_male_true_x):
         time_enter_m, time_exit_m, event_m = make_channing('Male')
 
-        x, y = kaplan_meier_estimator(event_m, time_exit_m, time_enter_m)
+        x, y, km_ci = kaplan_meier_estimator(event_m, time_exit_m, time_enter_m, conf_type="log-log")
 
         assert_array_equal(x, channing_male_true_x)
 
         assert_array_equal(y[:3], np.array([1., 1., .5]))
         assert (y[3:] == 0).all()
 
+        assert_array_almost_equal(
+            km_ci[:, :3],
+            np.array([
+                [1.0, 1.0, 0.00598309,],
+                [1.0, 1.0, 0.91041008,],
+            ])
+        )
+
     @staticmethod
     def test_truncated_male_older_68(make_channing, channing_male_true_x):
         time_enter_m, time_exit_m, event_m = make_channing('Male')
 
-        x, y = kaplan_meier_estimator(event_m, time_exit_m, time_enter_m, time_min=68 * 12)
+        x, y, km_ci = kaplan_meier_estimator(event_m, time_exit_m, time_enter_m, time_min=68 * 12, conf_type="log-log")
 
         x_true = channing_male_true_x[6:]
 
@@ -373,26 +767,84 @@ def test_truncated_male_older_68(make_channing, channing_male_true_x):
         assert (y[:18] == 1).all()
 
         y_true = np.array([
-            0.958333, 0.958333, 0.920000, 0.920000, 0.884615, 0.884615, 0.884615, 0.884615, 0.884615, 0.884615,
-            0.884615, 0.884615, 0.858597, 0.833344, 0.833344, 0.808092, 0.808092, 0.808092, 0.784324, 0.761256,
-            0.738187, 0.738187, 0.738187, 0.738187, 0.738187, 0.738187, 0.738187, 0.738187, 0.718236, 0.698285,
-            0.698285, 0.698285, 0.698285, 0.698285, 0.678889, 0.678889, 0.659492, 0.659492, 0.659492, 0.659492,
-            0.659492, 0.641173, 0.641173, 0.641173, 0.641173, 0.641173, 0.624300, 0.624300, 0.608692, 0.608692,
-            0.593085, 0.593085, 0.593085, 0.593085, 0.593085, 0.593085, 0.593085, 0.577877, 0.577877, 0.563060,
-            0.563060, 0.548623, 0.519748, 0.519748, 0.504898, 0.504898, 0.504898, 0.504898, 0.504898, 0.504898,
-            0.488611, 0.488611, 0.458073, 0.458073, 0.458073, 0.458073, 0.458073, 0.458073, 0.458073, 0.441713,
-            0.441713, 0.424724, 0.424724, 0.407735, 0.390746, 0.372139, 0.354418, 0.354418, 0.354418, 0.338308,
-            0.321393, 0.321393, 0.321393, 0.321393, 0.321393, 0.303538, 0.285682, 0.285682, 0.266637, 0.247591,
-            0.247591, 0.247591, 0.247591, 0.247591, 0.225083, 0.202575, 0.202575, 0.151931, 0.151931, 0.151931,
-            0.151931, 0.101287, 0.050644, 0.050644,
+            0.95833333, 0.95833333, 0.920, 0.920, 0.88320, 0.88320, 0.88320, 0.88320, 0.88320, 0.88320, 0.88320,
+            0.88320, 0.85643636, 0.83048375, 0.83048375, 0.80453113, 0.80453113, 0.80453113, 0.78086845, 0.75720577,
+            0.73426014, 0.73426014, 0.73426014, 0.73426014, 0.73426014, 0.73426014, 0.73426014, 0.73426014,
+            0.71441527, 0.69457040, 0.69457040, 0.69457040, 0.69457040, 0.69457040, 0.67527678, 0.67527678,
+            0.65598316, 0.65598316, 0.65598316, 0.65598316, 0.65598316, 0.63776140, 0.63776140, 0.63776140,
+            0.63776140, 0.63776140, 0.62052461, 0.62052461, 0.60419501, 0.60419501, 0.58829514, 0.58829514,
+            0.58829514, 0.58829514, 0.58829514, 0.58829514, 0.58829514, 0.57321065, 0.57321065, 0.55851294,
+            0.55851294, 0.54419210, 0.51555041, 0.51555041, 0.50082040, 0.50082040, 0.50082040, 0.50082040,
+            0.50082040, 0.50082040, 0.48466490, 0.48466490, 0.45437335, 0.45437335, 0.45437335, 0.45437335,
+            0.45437335, 0.45437335, 0.45437335, 0.43814573, 0.43814573, 0.42129397, 0.42129397, 0.40444221,
+            0.38759045, 0.36913376, 0.35067707, 0.35067707, 0.35067707, 0.33473721, 0.31800035, 0.31800035,
+            0.31800035, 0.31800035, 0.31800035, 0.30033366, 0.28266697, 0.28266697, 0.26382251, 0.24497804,
+            0.24497804, 0.24497804, 0.24497804, 0.24497804, 0.22270731, 0.20043658, 0.20043658, 0.15032744,
+            0.15032744, 0.15032744, 0.15032744, 0.10021829, 0.05010915, 0.05010915,
         ])
         assert_array_almost_equal(y[18:], y_true)
 
+        km_var_true = np.array([
+            [
+                0.73920615, 0.73920615, 0.71639034, 0.71639034, 0.68030206,
+                0.68030206, 0.68030206, 0.68030206, 0.68030206, 0.68030206,
+                0.68030206, 0.68030206, 0.65976749, 0.63750998, 0.63750998,
+                0.61378156, 0.61378156, 0.61378156, 0.59262859, 0.57096047,
+                0.54998014, 0.54998014, 0.54998014, 0.54998014, 0.54998014,
+                0.54998014, 0.54998014, 0.54998014, 0.53275695, 0.51533230,
+                0.51533230, 0.51533230, 0.51533230, 0.51533230, 0.49843790,
+                0.49843790, 0.48145069, 0.48145069, 0.48145069, 0.48145069,
+                0.48145069, 0.46565617, 0.46565617, 0.46565617, 0.46565617,
+                0.46565617, 0.45092306, 0.45092306, 0.43714048, 0.43714048,
+                0.42377890, 0.42377890, 0.42377890, 0.42377890, 0.42377890,
+                0.42377890, 0.42377890, 0.41124825, 0.41124825, 0.39908967,
+                0.39908967, 0.38729481, 0.36365220, 0.36365220, 0.35139832,
+                0.35139832, 0.35139832, 0.35139832, 0.35139832, 0.35139832,
+                0.33765257, 0.33765257, 0.31239834, 0.31239834, 0.31239834,
+                0.31239834, 0.31239834, 0.31239834, 0.31239834, 0.29868502,
+                0.29868502, 0.28437251, 0.28437251, 0.27014867, 0.25601996,
+                0.24027913, 0.22471176, 0.22471176, 0.22471176, 0.21192818,
+                0.19843250, 0.19843250, 0.19843250, 0.19843250, 0.19843250,
+                0.18411660, 0.16997889, 0.16997889, 0.15483230, 0.13996103,
+                0.13996103, 0.13996103, 0.13996103, 0.13996103, 0.12185686,
+                0.10440547, 0.10440547, 0.06652640, 0.06652640, 0.06652640,
+                0.06652640, 0.02653795, 0.00474936, 0.00474936,
+            ],
+            [
+                0.99402372, 0.99402372, 0.97937059, 0.97937059, 0.96074504,
+                0.96074504, 0.96074504, 0.96074504, 0.96074504, 0.96074504,
+                0.96074504, 0.96074504, 0.94388370, 0.92622382, 0.92622382,
+                0.90763582, 0.90763582, 0.90763582, 0.88963893, 0.87108191,
+                0.85249376, 0.85249376, 0.85249376, 0.85249376, 0.85249376,
+                0.85249376, 0.85249376, 0.85249376, 0.83560540, 0.81842984,
+                0.81842984, 0.81842984, 0.81842984, 0.81842984, 0.80139052,
+                0.80139052, 0.78411879, 0.78411879, 0.78411879, 0.78411879,
+                0.78411879, 0.76743643, 0.76743643, 0.76743643, 0.76743643,
+                0.76743643, 0.75133510, 0.75133510, 0.73580135, 0.73580135,
+                0.72048374, 0.72048374, 0.72048374, 0.72048374, 0.72048374,
+                0.72048374, 0.72048374, 0.70572056, 0.70572056, 0.69117856,
+                0.69117856, 0.67686200, 0.64796535, 0.64796535, 0.63303724,
+                0.63303724, 0.63303724, 0.63303724, 0.63303724, 0.63303724,
+                0.61681870, 0.61681870, 0.58576866, 0.58576866, 0.58576866,
+                0.58576866, 0.58576866, 0.58576866, 0.58576866, 0.56919114,
+                0.56919114, 0.55198609, 0.55198609, 0.53465574, 0.51719803,
+                0.49831695, 0.47926018, 0.47926018, 0.47926018, 0.46209746,
+                0.44413886, 0.44413886, 0.44413886, 0.44413886, 0.44413886,
+                0.42526910, 0.40622026, 0.40622026, 0.38604558, 0.36562364,
+                0.36562364, 0.36562364, 0.36562364, 0.36562364, 0.34244801,
+                0.31876245, 0.31876245, 0.26581883, 0.26581883, 0.26581883,
+                0.26581883, 0.23266803, 0.18728970, 0.18728970,
+            ]
+        ])
+
+        assert_array_almost_equal(km_ci[:, :18], np.ones((2, 18)))
+        assert_array_almost_equal(km_ci[:, 18:], km_var_true)
+
     @staticmethod
     def test_truncated_female(make_channing, channing_female_true_x):
         time_enter_f, time_exit_f, event_f = make_channing('Female')
 
-        x, y = kaplan_meier_estimator(event_f, time_exit_f, time_enter_f)
+        x, y, km_ci = kaplan_meier_estimator(event_f, time_exit_f, time_enter_f, conf_type="log-log")
 
         assert_array_equal(x, channing_female_true_x)
 
@@ -400,113 +852,306 @@ def test_truncated_female(make_channing, channing_female_true_x):
 
         y_true = np.array([
             0.952381, 0.952381, 0.952381, 0.952381, 0.952381, 0.952381, 0.952381, 0.952381, 0.952381, 0.952381,
-            0.952381, 0.952381, 0.952381, 0.952381, 0.952381, 0.927318, 0.927318, 0.927318, 0.927318, 0.927318,
-            0.927318, 0.927318, 0.907588, 0.907588, 0.907588, 0.907588, 0.907588, 0.907588, 0.907588, 0.907588,
-            0.907588, 0.892710, 0.892710, 0.892710, 0.892710, 0.892710, 0.879386, 0.879386, 0.879386, 0.879386,
-            0.879386, 0.879386, 0.879386, 0.879386, 0.879386, 0.879386, 0.879386, 0.879386, 0.879386, 0.879386,
-            0.879386, 0.869930, 0.869930, 0.869930, 0.869930, 0.869930, 0.869930, 0.861317, 0.861317, 0.861317,
-            0.861317, 0.861317, 0.853267, 0.853267, 0.853267, 0.853267, 0.853267, 0.853267, 0.853267, 0.853267,
-            0.846097, 0.839161, 0.839161, 0.839161, 0.839161, 0.839161, 0.839161, 0.839161, 0.839161, 0.839161,
-            0.839161, 0.833167, 0.833167, 0.827258, 0.827258, 0.827258, 0.827258, 0.821669, 0.821669, 0.821669,
-            0.810786, 0.810786, 0.810786, 0.799829, 0.799829, 0.799829, 0.794532, 0.794532, 0.794532, 0.794532,
-            0.789236, 0.789236, 0.789236, 0.789236, 0.784077, 0.784077, 0.784077, 0.784077, 0.779115, 0.779115,
-            0.779115, 0.774275, 0.774275, 0.769375, 0.769375, 0.764536, 0.759697, 0.754858, 0.754858, 0.750199,
-            0.750199, 0.745707, 0.745707, 0.745707, 0.741103, 0.736529, 0.736529, 0.736529, 0.727708, 0.727708,
-            0.727708, 0.727708, 0.723298, 0.723298, 0.723298, 0.723298, 0.723298, 0.718805, 0.718805, 0.718805,
-            0.718805, 0.718805, 0.714368, 0.714368, 0.714368, 0.714368, 0.709847, 0.709847, 0.709847, 0.705296,
-            0.705296, 0.705296, 0.696589, 0.692235, 0.692235, 0.692235, 0.692235, 0.687854, 0.683473, 0.683473,
-            0.679035, 0.679035, 0.679035, 0.670216, 0.665778, 0.665778, 0.665778, 0.661249, 0.661249, 0.661249,
-            0.656657, 0.638028, 0.633405, 0.628815, 0.628815, 0.619567, 0.610180, 0.596099, 0.596099, 0.591330,
-            0.586523, 0.581715, 0.576867, 0.576867, 0.572020, 0.567213, 0.562406, 0.552625, 0.552625, 0.552625,
-            0.552625, 0.547646, 0.542528, 0.532095, 0.526878, 0.521610, 0.516287, 0.516287, 0.510852, 0.499983,
-            0.489114, 0.483427, 0.477602, 0.477602, 0.465810, 0.459838, 0.459838, 0.454017, 0.454017, 0.448196,
-            0.442299, 0.442299, 0.442299, 0.436069, 0.436069, 0.436069, 0.436069, 0.436069, 0.436069, 0.436069,
-            0.410035, 0.390815, 0.390815, 0.384301, 0.377675, 0.370931, 0.370931, 0.370931, 0.370931, 0.370931,
-            0.370931, 0.370931, 0.355476, 0.355476, 0.355476, 0.355476, 0.355476, 0.347012, 0.338337, 0.338337,
-            0.320530, 0.311867, 0.311867, 0.302956, 0.294046, 0.284857, 0.284857, 0.275362, 0.265866, 0.246876,
-            0.237001, 0.237001, 0.226696, 0.226696, 0.215901, 0.215901, 0.205620, 0.205620, 0.205620, 0.205620,
-            0.205620, 0.191912, 0.191912, 0.177150, 0.162387, 0.147625, 0.147625, 0.147625, 0.132862, 0.132862,
-            0.116255, 0.099647, 0.099647, 0.074735, 0.024912, 0.024912,
+            0.952381, 0.952381, 0.952381, 0.952381, 0.952381, 0.925926, 0.925926, 0.925926, 0.925926, 0.925926,
+            0.925926, 0.925926, 0.905797, 0.905797, 0.905797, 0.905797, 0.905797, 0.905797, 0.905797, 0.905797,
+            0.905797, 0.890180, 0.890180, 0.890180, 0.890180, 0.890180, 0.876692, 0.876692, 0.876692, 0.876692,
+            0.876692, 0.876692, 0.876692, 0.876692, 0.876692, 0.876692, 0.876692, 0.876692, 0.876692, 0.876692,
+            0.876692, 0.866842, 0.866842, 0.866842, 0.866842, 0.866842, 0.866842, 0.858086, 0.858086, 0.858086,
+            0.858086, 0.858086, 0.849914, 0.849914, 0.849914, 0.849914, 0.849914, 0.849914, 0.849914, 0.849914,
+            0.842523, 0.835383, 0.835383, 0.835383, 0.835383, 0.835383, 0.835383, 0.835383, 0.835383, 0.835383,
+            0.835383, 0.829241, 0.829241, 0.823275, 0.823275, 0.823275, 0.823275, 0.817558, 0.817558, 0.817558,
+            0.806510, 0.806510, 0.806510, 0.795537, 0.795537, 0.795537, 0.790233, 0.790233, 0.790233, 0.790233,
+            0.784929, 0.784929, 0.784929, 0.784929, 0.779697, 0.779697, 0.779697, 0.779697, 0.774762, 0.774762,
+            0.774762, 0.769920, 0.769920, 0.765016, 0.765016, 0.760143, 0.755301, 0.750490, 0.750490, 0.745648,
+            0.745648, 0.741102, 0.741102, 0.741102, 0.736527, 0.731924, 0.731924, 0.731924, 0.723105, 0.723105,
+            0.723105, 0.723105, 0.718586, 0.718586, 0.718586, 0.718586, 0.718586, 0.714067, 0.714067, 0.714067,
+            0.714067, 0.714067, 0.709631, 0.709631, 0.709631, 0.709631, 0.705112, 0.705112, 0.705112, 0.700562,
+            0.700562, 0.700562, 0.691914, 0.687589, 0.687589, 0.687589, 0.687589, 0.683237, 0.678829, 0.678829,
+            0.674392, 0.674392, 0.674392, 0.665577, 0.661169, 0.661169, 0.661169, 0.656641, 0.656641, 0.656641,
+            0.652081, 0.633582, 0.628957, 0.624332, 0.624332, 0.615014, 0.605696, 0.591610, 0.591610, 0.586877,
+            0.582105, 0.577334, 0.572523, 0.572523, 0.567671, 0.562819, 0.558009, 0.548304, 0.548304, 0.548304,
+            0.548304, 0.543320, 0.538242, 0.527891, 0.522559, 0.517333, 0.511944, 0.511944, 0.506556, 0.495778,
+            0.485000, 0.479360, 0.473585, 0.473585, 0.461892, 0.455893, 0.455893, 0.449972, 0.449972, 0.444203,
+            0.438359, 0.438359, 0.438359, 0.432185, 0.432185, 0.432185, 0.432185, 0.432185, 0.432185, 0.432185,
+            0.406382, 0.387031, 0.387031, 0.380580, 0.374019, 0.367340, 0.367340, 0.367340, 0.367340, 0.367340,
+            0.367340, 0.367340, 0.352034, 0.352034, 0.352034, 0.352034, 0.352034, 0.343652, 0.335061, 0.335061,
+            0.317426, 0.308609, 0.308609, 0.299791, 0.290707, 0.281622, 0.281622, 0.272235, 0.262847, 0.244073,
+            0.234310, 0.234310, 0.224122, 0.224122, 0.213450, 0.213450, 0.203285, 0.203285, 0.203285, 0.203285,
+            0.203285, 0.189733, 0.189733, 0.175138, 0.160543, 0.145949, 0.145949, 0.145949, 0.131354, 0.131354,
+            0.114934, 0.098515, 0.098515, 0.073886, 0.024629, 0.024629
         ])
         assert_array_almost_equal(y[19:], y_true)
 
+        km_ci_true = np.array([
+            [
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.707207, 0.707207, 0.707207, 0.707207,
+                0.707207, 0.707207, 0.707207, 0.707207, 0.707207, 0.707207, 0.707207, 0.707207, 0.707207, 0.707207,
+                0.707207, 0.723846, 0.723846, 0.723846, 0.723846, 0.723846, 0.723846, 0.723846, 0.720466, 0.720466,
+                0.720466, 0.720466, 0.720466, 0.720466, 0.720466, 0.720466, 0.720466, 0.714723, 0.714723, 0.714723,
+                0.714723, 0.714723, 0.708062, 0.708062, 0.708062, 0.708062, 0.708062, 0.708062, 0.708062, 0.708062,
+                0.708062, 0.708062, 0.708062, 0.708062, 0.708062, 0.708062, 0.708062, 0.703256, 0.703256, 0.703256,
+                0.703256, 0.703256, 0.703256, 0.698571, 0.698571, 0.698571, 0.698571, 0.698571, 0.693837, 0.693837,
+                0.693837, 0.693837, 0.693837, 0.693837, 0.693837, 0.693837, 0.689374, 0.684836, 0.684836, 0.684836,
+                0.684836, 0.684836, 0.684836, 0.684836, 0.684836, 0.684836, 0.684836, 0.680918, 0.680918, 0.676987,
+                0.676987, 0.676987, 0.676987, 0.673132, 0.673132, 0.673132, 0.665427, 0.665427, 0.665427, 0.657441,
+                0.657441, 0.657441, 0.653503, 0.653503, 0.653503, 0.653503, 0.649504, 0.649504, 0.649504, 0.649504,
+                0.645513, 0.645513, 0.645513, 0.645513, 0.641741, 0.641741, 0.641741, 0.638011, 0.638011, 0.634187,
+                0.634187, 0.630356, 0.626521, 0.622684, 0.622684, 0.618791, 0.618791, 0.615143, 0.615143, 0.615143,
+                0.611447, 0.607704, 0.607704, 0.607704, 0.600519, 0.600519, 0.600519, 0.600519, 0.596798, 0.596798,
+                0.596798, 0.596798, 0.596798, 0.593061, 0.593061, 0.593061, 0.593061, 0.593061, 0.589388, 0.589388,
+                0.589388, 0.589388, 0.585621, 0.585621, 0.585621, 0.581812, 0.581812, 0.581812, 0.574581, 0.570949,
+                0.570949, 0.570949, 0.570949, 0.567280, 0.563548, 0.563548, 0.559780, 0.559780, 0.559780, 0.552271,
+                0.548504, 0.548504, 0.548504, 0.544613, 0.544613, 0.544613, 0.540685, 0.524653, 0.520629, 0.516600,
+                0.516600, 0.508460, 0.500301, 0.487926, 0.487926, 0.483757, 0.479547, 0.475334, 0.471079, 0.471079,
+                0.466781, 0.462481, 0.458220, 0.449609, 0.449609, 0.449609, 0.449609, 0.445169, 0.440634, 0.431366,
+                0.426573, 0.421888, 0.417037, 0.417037, 0.412187, 0.402490, 0.392797, 0.387696, 0.382458, 0.382458,
+                0.371843, 0.366384, 0.366384, 0.361010, 0.361010, 0.355798, 0.350512, 0.350512, 0.350512, 0.344887,
+                0.344887, 0.344887, 0.344887, 0.344887, 0.344887, 0.344887, 0.321302, 0.303706, 0.303706, 0.297859,
+                0.291906, 0.285840, 0.285840, 0.285840, 0.285840, 0.285840, 0.285840, 0.285840, 0.271660, 0.271660,
+                0.271660, 0.271660, 0.271660, 0.263799, 0.255739, 0.255739, 0.239235, 0.231051, 0.231051, 0.222914,
+                0.214526, 0.206191, 0.206191, 0.197576, 0.189024, 0.172116, 0.163353, 0.163353, 0.154204, 0.154204,
+                0.144620, 0.144620, 0.135715, 0.135715, 0.135715, 0.135715, 0.135715, 0.123075, 0.123075, 0.109553,
+                0.096498, 0.083916, 0.083916, 0.083916, 0.071824, 0.071824, 0.058340, 0.045735, 0.045735, 0.026248,
+                0.002340, 0.002340,
+            ],
+            [
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.993152, 0.993152, 0.993152, 0.993152,
+                0.993152, 0.993152, 0.993152, 0.993152, 0.993152, 0.993152, 0.993152, 0.993152, 0.993152, 0.993152,
+                0.993152, 0.981840, 0.981840, 0.981840, 0.981840, 0.981840, 0.981840, 0.981840, 0.970583, 0.970583,
+                0.970583, 0.970583, 0.970583, 0.970583, 0.970583, 0.970583, 0.970583, 0.960507, 0.960507, 0.960507,
+                0.960507, 0.960507, 0.951072, 0.951072, 0.951072, 0.951072, 0.951072, 0.951072, 0.951072, 0.951072,
+                0.951072, 0.951072, 0.951072, 0.951072, 0.951072, 0.951072, 0.951072, 0.943644, 0.943644, 0.943644,
+                0.943644, 0.943644, 0.943644, 0.936786, 0.936786, 0.936786, 0.936786, 0.936786, 0.930205, 0.930205,
+                0.930205, 0.930205, 0.930205, 0.930205, 0.930205, 0.930205, 0.924098, 0.918094, 0.918094, 0.918094,
+                0.918094, 0.918094, 0.918094, 0.918094, 0.918094, 0.918094, 0.918094, 0.912808, 0.912808, 0.907610,
+                0.907610, 0.907610, 0.907610, 0.902568, 0.902568, 0.902568, 0.892681, 0.892681, 0.892681, 0.882715,
+                0.882715, 0.882715, 0.877842, 0.877842, 0.877842, 0.877842, 0.872940, 0.872940, 0.872940, 0.872940,
+                0.868074, 0.868074, 0.868074, 0.868074, 0.863446, 0.863446, 0.863446, 0.858879, 0.858879, 0.854237,
+                0.854237, 0.849604, 0.844982, 0.840370, 0.840370, 0.835714, 0.835714, 0.831311, 0.831311, 0.831311,
+                0.826870, 0.822388, 0.822388, 0.822388, 0.813747, 0.813747, 0.813747, 0.813747, 0.809308, 0.809308,
+                0.809308, 0.809308, 0.809308, 0.804858, 0.804858, 0.804858, 0.804858, 0.804858, 0.800475, 0.800475,
+                0.800475, 0.800475, 0.796004, 0.796004, 0.796004, 0.791495, 0.791495, 0.791495, 0.782870, 0.778545,
+                0.778545, 0.778545, 0.778545, 0.774186, 0.769766, 0.769766, 0.765311, 0.765311, 0.765311, 0.756433,
+                0.751982, 0.751982, 0.751982, 0.747411, 0.747411, 0.747411, 0.742802, 0.724054, 0.719349, 0.714638,
+                0.714638, 0.705132, 0.695601, 0.681156, 0.681156, 0.676294, 0.671390, 0.666480, 0.661526, 0.661526,
+                0.656528, 0.651525, 0.646555, 0.636520, 0.636520, 0.636520, 0.636520, 0.631368, 0.626124, 0.615432,
+                0.609930, 0.604522, 0.598955, 0.598955, 0.593381, 0.582214, 0.571021, 0.565182, 0.559210, 0.559210,
+                0.547111, 0.540910, 0.540910, 0.534772, 0.534772, 0.528765, 0.522681, 0.522681, 0.522681, 0.516287,
+                0.516287, 0.516287, 0.516287, 0.516287, 0.516287, 0.516287, 0.489608, 0.469480, 0.469480, 0.462748,
+                0.455904, 0.448942, 0.448942, 0.448942, 0.448942, 0.448942, 0.448942, 0.448942, 0.433270, 0.433270,
+                0.433270, 0.433270, 0.433270, 0.424790, 0.416108, 0.416108, 0.398269, 0.389292, 0.389292, 0.380276,
+                0.371003, 0.361684, 0.361684, 0.352076, 0.342415, 0.322926, 0.312797, 0.312797, 0.302269, 0.302269,
+                0.291290, 0.291290, 0.280597, 0.280597, 0.280597, 0.280597, 0.280597, 0.267473, 0.267473, 0.253459,
+                0.239077, 0.224322, 0.224322, 0.224322, 0.209178, 0.209178, 0.192601, 0.175334, 0.175334, 0.154970,
+                0.103873, 0.103873,
+            ]
+        ])
+        assert_array_almost_equal(km_ci, km_ci_true)
+
     @staticmethod
     def test_truncated_female_older_68(make_channing, channing_female_true_x):
         time_enter_f, time_exit_f, event_f = make_channing('Female')
 
-        x, y = kaplan_meier_estimator(event_f, time_exit_f, time_enter_f, time_min=68 * 12)
+        x, y, km_ci = kaplan_meier_estimator(event_f, time_exit_f, time_enter_f, time_min=68 * 12, conf_type="log-log")
 
         x_true = channing_female_true_x[30:]
         assert_array_equal(x, x_true)
 
         y_true = np.array([
-            1, 1, 1, 1, 0.973684, 0.973684, 0.973684, 0.973684, 0.973684, 0.973684, 0.973684, 0.952968, 0.952968,
-            0.952968, 0.952968, 0.952968, 0.952968, 0.952968, 0.952968, 0.952968, 0.937345, 0.937345, 0.937345,
-            0.937345, 0.937345, 0.923355, 0.923355, 0.923355, 0.923355, 0.923355, 0.923355, 0.923355, 0.923355,
-            0.923355, 0.923355, 0.923355, 0.923355, 0.923355, 0.923355, 0.923355, 0.913426, 0.913426, 0.913426,
-            0.913426, 0.913426, 0.913426, 0.904383, 0.904383, 0.904383, 0.904383, 0.904383, 0.895930, 0.895930,
-            0.895930, 0.895930, 0.895930, 0.895930, 0.895930, 0.895930, 0.888402, 0.881120, 0.881120, 0.881120,
-            0.881120, 0.881120, 0.881120, 0.881120, 0.881120, 0.881120, 0.881120, 0.874826, 0.874826, 0.868621,
-            0.868621, 0.868621, 0.868621, 0.862752, 0.862752, 0.862752, 0.851325, 0.851325, 0.851325, 0.839821,
-            0.839821, 0.839821, 0.834259, 0.834259, 0.834259, 0.834259, 0.828697, 0.828697, 0.828697, 0.828697,
-            0.823281, 0.823281, 0.823281, 0.823281, 0.818070, 0.818070, 0.818070, 0.812989, 0.812989, 0.807844,
-            0.807844, 0.802763, 0.797682, 0.792601, 0.792601, 0.787709, 0.787709, 0.782992, 0.782992, 0.782992,
-            0.778159, 0.773355, 0.773355, 0.773355, 0.764093, 0.764093, 0.764093, 0.764093, 0.759463, 0.759463,
-            0.759463, 0.759463, 0.759463, 0.754745, 0.754745, 0.754745, 0.754745, 0.754745, 0.750086, 0.750086,
-            0.750086, 0.750086, 0.745339, 0.745339, 0.745339, 0.740561, 0.740561, 0.740561, 0.731419, 0.726847,
-            0.726847, 0.726847, 0.726847, 0.722247, 0.717647, 0.717647, 0.712987, 0.712987, 0.712987, 0.703727,
-            0.699067, 0.699067, 0.699067, 0.694311, 0.694311, 0.694311, 0.689489, 0.669929, 0.665075, 0.660255,
-            0.660255, 0.650546, 0.640689, 0.625904, 0.625904, 0.620897, 0.615849, 0.610801, 0.605711, 0.605711,
-            0.600621, 0.595574, 0.590526, 0.580256, 0.580256, 0.580256, 0.580256, 0.575029, 0.569655, 0.558700,
-            0.553222, 0.547690, 0.542101, 0.542101, 0.536395, 0.524982, 0.513570, 0.507598, 0.501482, 0.501482,
-            0.489100, 0.482830, 0.482830, 0.476718, 0.476718, 0.470606, 0.464414, 0.464414, 0.464414, 0.457873,
-            0.457873, 0.457873, 0.457873, 0.457873, 0.457873, 0.457873, 0.430537, 0.410356, 0.410356, 0.403516,
-            0.396559, 0.389478, 0.389478, 0.389478, 0.389478, 0.389478, 0.389478, 0.389478, 0.373250, 0.373250,
-            0.373250, 0.373250, 0.373250, 0.364363, 0.355254, 0.355254, 0.336556, 0.327460, 0.327460, 0.318104,
-            0.308748, 0.299100, 0.299100, 0.289130, 0.279160, 0.259220, 0.248851, 0.248851, 0.238031, 0.238031,
-            0.226696, 0.226696, 0.215901, 0.215901, 0.215901, 0.215901, 0.215901, 0.201508, 0.201508, 0.186007,
-            0.170507, 0.155006, 0.155006, 0.155006, 0.139506, 0.139506, 0.122067, 0.104629, 0.104629, 0.078472,
-            0.026157, 0.026157,
+            1.0, 1.0, 1.0, 1.0, 0.97222222, 0.97222222, 0.97222222, 0.97222222, 0.97222222, 0.97222222,
+            0.97222222, 0.95108696, 0.95108696, 0.95108696, 0.95108696, 0.95108696, 0.95108696, 0.95108696,
+            0.95108696, 0.95108696, 0.93468891, 0.93468891, 0.93468891, 0.93468891, 0.93468891, 0.92052695,
+            0.92052695, 0.92052695, 0.92052695, 0.92052695, 0.92052695, 0.92052695, 0.92052695, 0.92052695,
+            0.92052695, 0.92052695, 0.92052695, 0.92052695, 0.92052695, 0.92052695, 0.91018395, 0.91018395,
+            0.91018395, 0.91018395, 0.91018395, 0.91018395, 0.90099018, 0.90099018, 0.90099018, 0.90099018,
+            0.90099018, 0.89240932, 0.89240932, 0.89240932, 0.89240932, 0.89240932, 0.89240932, 0.89240932,
+            0.89240932, 0.88464924, 0.87715221, 0.87715221, 0.87715221, 0.87715221, 0.87715221, 0.87715221,
+            0.87715221, 0.87715221, 0.87715221, 0.87715221, 0.87070256, 0.87070256, 0.86443851, 0.86443851,
+            0.86443851, 0.86443851, 0.85843547, 0.85843547, 0.85843547, 0.84683499, 0.84683499, 0.84683499,
+            0.83531342, 0.83531342, 0.83531342, 0.82974467, 0.82974467, 0.82974467, 0.82974467, 0.82417591,
+            0.82417591, 0.82417591, 0.82417591, 0.81868141, 0.81868141, 0.81868141, 0.81868141, 0.81349988,
+            0.81349988, 0.81349988, 0.80841550, 0.80841550, 0.80326636, 0.80326636, 0.79815001, 0.79306626,
+            0.78801488, 0.78801488, 0.78293091, 0.78293091, 0.77815694, 0.77815694, 0.77815694, 0.77335350,
+            0.76852004, 0.76852004, 0.76852004, 0.75926077, 0.75926077, 0.75926077, 0.75926077, 0.75451539,
+            0.75451539, 0.75451539, 0.75451539, 0.75451539, 0.74977001, 0.74977001, 0.74977001, 0.74977001,
+            0.74977001, 0.74511305, 0.74511305, 0.74511305, 0.74511305, 0.74036711, 0.74036711, 0.74036711,
+            0.73559055, 0.73559055, 0.73559055, 0.72650918, 0.72196850, 0.72196850, 0.72196850, 0.72196850,
+            0.71739908, 0.71277070, 0.71277070, 0.70811206, 0.70811206, 0.70811206, 0.69885570, 0.69422751,
+            0.69422751, 0.69422751, 0.68947253, 0.68947253, 0.68947253, 0.68468453, 0.66526085, 0.66040493,
+            0.65554902, 0.65554902, 0.64576470, 0.63598039, 0.62119015, 0.62119015, 0.61622063, 0.61121070,
+            0.60620078, 0.60114911, 0.60114911, 0.59605462, 0.59096014, 0.58590920, 0.57571947, 0.57571947,
+            0.57571947, 0.57571947, 0.57048566, 0.56515402, 0.55428567, 0.54868682, 0.54319996, 0.53754162,
+            0.53754162, 0.53188329, 0.52056662, 0.50924996, 0.50332845, 0.49726425, 0.49726425, 0.48498612,
+            0.47868760, 0.47868760, 0.47247088, 0.47247088, 0.46641356, 0.46027654, 0.46027654, 0.46027654,
+            0.45379377, 0.45379377, 0.45379377, 0.45379377, 0.45379377, 0.45379377, 0.45379377, 0.42670160,
+            0.40638248, 0.40638248, 0.39960944, 0.39271962, 0.38570677, 0.38570677, 0.38570677, 0.38570677,
+            0.38570677, 0.38570677, 0.38570677, 0.36963565, 0.36963565, 0.36963565, 0.36963565, 0.36963565,
+            0.36083481, 0.35181394, 0.35181394, 0.33329741, 0.32403915, 0.32403915, 0.31478089, 0.30524208,
+            0.29570326, 0.29570326, 0.28584648, 0.27598971, 0.25627616, 0.24602511, 0.24602511, 0.23532837,
+            0.23532837, 0.22412226, 0.22412226, 0.21344977, 0.21344977, 0.21344977, 0.21344977, 0.21344977,
+            0.19921978, 0.19921978, 0.18389518, 0.16857059, 0.15324599, 0.15324599, 0.15324599, 0.13792139,
+            0.13792139, 0.12068121, 0.10344104, 0.10344104, 0.07758078, 0.02586026, 0.02586026,
         ])
         assert_array_almost_equal(y, y_true)
 
+        km_var_true = np.array([
+            [
+                1.0, 1.0, 1.0, 1.0, 0.81873073, 0.81873073, 0.81873073, 0.81873073, 0.81873073, 0.81873073,
+                0.81873073, 0.81656384, 0.81656384, 0.81656384, 0.81656384, 0.81656384, 0.81656384, 0.81656384,
+                0.81656384, 0.81656384, 0.80735677, 0.80735677, 0.80735677, 0.80735677, 0.80735677, 0.79706777,
+                0.79706777, 0.79706777, 0.79706777, 0.79706777, 0.79706777, 0.79706777, 0.79706777, 0.79706777,
+                0.79706777, 0.79706777, 0.79706777, 0.79706777, 0.79706777, 0.79706777, 0.79016506, 0.79016506,
+                0.79016506, 0.79016506, 0.79016506, 0.79016506, 0.78359570, 0.78359570, 0.78359570, 0.78359570,
+                0.78359570, 0.77708712, 0.77708712, 0.77708712, 0.77708712, 0.77708712, 0.77708712, 0.77708712,
+                0.77708712, 0.77107697, 0.76505042, 0.76505042, 0.76505042, 0.76505042, 0.76505042, 0.76505042,
+                0.76505042, 0.76505042, 0.76505042, 0.76505042, 0.75994158, 0.75994158, 0.75486496, 0.75486496,
+                0.75486496, 0.75486496, 0.74993227, 0.74993227, 0.74993227, 0.74018988, 0.74018988, 0.74018988,
+                0.73021918, 0.73021918, 0.73021918, 0.72534813, 0.72534813, 0.72534813, 0.72534813, 0.72042709,
+                0.72042709, 0.72042709, 0.72042709, 0.71554182, 0.71554182, 0.71554182, 0.71554182, 0.71095222,
+                0.71095222, 0.71095222, 0.70643261, 0.70643261, 0.70181511, 0.70181511, 0.69720598, 0.69260768,
+                0.68802237, 0.68802237, 0.68338274, 0.68338274, 0.67905471, 0.67905471, 0.67905471, 0.67467997,
+                0.67025905, 0.67025905, 0.67025905, 0.66180935, 0.66180935, 0.66180935, 0.66180935, 0.65744535,
+                0.65744535, 0.65744535, 0.65744535, 0.65744535, 0.65307116, 0.65307116, 0.65307116, 0.65307116,
+                0.65307116, 0.64878126, 0.64878126, 0.64878126, 0.64878126, 0.64438840, 0.64438840, 0.64438840,
+                0.63995502, 0.63995502, 0.63995502, 0.63156674, 0.62736299, 0.62736299, 0.62736299, 0.62736299,
+                0.62312314, 0.61881556, 0.61881556, 0.61447102, 0.61447102, 0.61447102, 0.60583368, 0.60150925,
+                0.60150925, 0.60150925, 0.59704632, 0.59704632, 0.59704632, 0.59254516, 0.57422730, 0.56964384,
+                0.56505925, 0.56505925, 0.55580983, 0.54655877, 0.53256033, 0.53256033, 0.52785266, 0.52310229,
+                0.51835301, 0.51355995, 0.51355995, 0.50872216, 0.50388615, 0.49909898, 0.48943583, 0.48943583,
+                0.48943583, 0.48943583, 0.48445737, 0.47937555, 0.46899916, 0.46363677, 0.45840196, 0.45298389,
+                0.45298389, 0.44757133, 0.43676308, 0.42597791, 0.42030520, 0.41448228, 0.41448228, 0.40269697,
+                0.39664110, 0.39664110, 0.39068687, 0.39068687, 0.38491873, 0.37907192, 0.37907192, 0.37907192,
+                0.37285153, 0.37285153, 0.37285153, 0.37285153, 0.37285153, 0.37285153, 0.37285153, 0.34681232,
+                0.32744838, 0.32744838, 0.32102576, 0.31448980, 0.30783467, 0.30783467, 0.30783467, 0.30783467,
+                0.30783467, 0.30783467, 0.30783467, 0.29227567, 0.29227567, 0.29227567, 0.29227567, 0.29227567,
+                0.28365662, 0.27482890, 0.27482890, 0.25678695, 0.24785939, 0.24785939, 0.23899403, 0.22986528,
+                0.22080728, 0.22080728, 0.21145278, 0.20218011, 0.18388277, 0.17441392, 0.17441392, 0.16453907,
+                0.16453907, 0.15420430, 0.15420430, 0.14461956, 0.14461956, 0.14461956, 0.14461956, 0.14461956,
+                0.13101115, 0.13101115, 0.11648197, 0.10248780, 0.08903091, 0.08903091, 0.08903091, 0.07612366,
+                0.07612366, 0.06175318, 0.04834884, 0.04834884, 0.02766766, 0.00244608, 0.00244608,
+            ],
+            [
+                1.0, 1.0, 1.0, 1.0, 0.99603987, 0.99603987, 0.99603987, 0.99603987, 0.99603987, 0.99603987,
+                0.99603987, 0.98766614, 0.98766614, 0.98766614, 0.98766614, 0.98766614, 0.98766614, 0.98766614,
+                0.98766614, 0.98766614, 0.97890750, 0.97890750, 0.97890750, 0.97890750, 0.97890750, 0.97021938,
+                0.97021938, 0.97021938, 0.97021938, 0.97021938, 0.97021938, 0.97021938, 0.97021938, 0.97021938,
+                0.97021938, 0.97021938, 0.97021938, 0.97021938, 0.97021938, 0.97021938, 0.96309354, 0.96309354,
+                0.96309354, 0.96309354, 0.96309354, 0.96309354, 0.95640313, 0.95640313, 0.95640313, 0.95640313,
+                0.95640313, 0.94992074, 0.94992074, 0.94992074, 0.94992074, 0.94992074, 0.94992074, 0.94992074,
+                0.94992074, 0.94385376, 0.93786308, 0.93786308, 0.93786308, 0.93786308, 0.93786308, 0.93786308,
+                0.93786308, 0.93786308, 0.93786308, 0.93786308, 0.93255080, 0.93255080, 0.92731470, 0.92731470,
+                0.92731470, 0.92731470, 0.92222395, 0.92222395, 0.92222395, 0.91222399, 0.91222399, 0.91222399,
+                0.90213532, 0.90213532, 0.90213532, 0.89719642, 0.89719642, 0.89719642, 0.89719642, 0.89222913,
+                0.89222913, 0.89222913, 0.89222913, 0.88729603, 0.88729603, 0.88729603, 0.88729603, 0.88259747,
+                0.88259747, 0.88259747, 0.87795942, 0.87795942, 0.87324801, 0.87324801, 0.86854580, 0.86385386,
+                0.85917314, 0.85917314, 0.85444938, 0.85444938, 0.84997655, 0.84997655, 0.84997655, 0.84546565,
+                0.84091656, 0.84091656, 0.84091656, 0.83213827, 0.83213827, 0.83213827, 0.83213827, 0.82763256,
+                0.82763256, 0.82763256, 0.82763256, 0.82763256, 0.82311658, 0.82311658, 0.82311658, 0.82311658,
+                0.82311658, 0.81866816, 0.81866816, 0.81866816, 0.81866816, 0.81413240, 0.81413240, 0.81413240,
+                0.80956052, 0.80956052, 0.80956052, 0.80080655, 0.79641782, 0.79641782, 0.79641782, 0.79641782,
+                0.79199601, 0.78751440, 0.78751440, 0.78299851, 0.78299851, 0.78299851, 0.77399921, 0.76948916,
+                0.76948916, 0.76948916, 0.76485953, 0.76485953, 0.76485953, 0.76019361, 0.74121997, 0.73645978,
+                0.73169312, 0.73169312, 0.72207614, 0.71243405, 0.69782348, 0.69782348, 0.69290598, 0.68794639,
+                0.68298070, 0.67797171, 0.67797171, 0.67291844, 0.66785897, 0.66283225, 0.65268231, 0.65268231,
+                0.65268231, 0.65268231, 0.64747442, 0.64217326, 0.63136901, 0.62581129, 0.62034441, 0.61471946,
+                0.61471946, 0.60908658, 0.59779711, 0.58647606, 0.58057323, 0.57453743, 0.57453743, 0.56230639,
+                0.55603806, 0.55603806, 0.54982894, 0.54982894, 0.54374732, 0.53758644, 0.53758644, 0.53758644,
+                0.53111716, 0.53111716, 0.53111716, 0.53111716, 0.53111716, 0.53111716, 0.53111716, 0.50411552,
+                0.48370847, 0.48370847, 0.47687598, 0.46992880, 0.46286103, 0.46286103, 0.46286103, 0.46286103,
+                0.46286103, 0.46286103, 0.46286103, 0.44697851, 0.44697851, 0.44697851, 0.44697851, 0.44697851,
+                0.43839103, 0.42959328, 0.42959328, 0.41149538, 0.40237133, 0.40237133, 0.39319691, 0.38375661,
+                0.37425905, 0.37425905, 0.36446164, 0.35459805, 0.33466880, 0.32430100, 0.32430100, 0.31351936,
+                0.31351936, 0.30226943, 0.30226943, 0.29129049, 0.29129049, 0.29129049, 0.29129049, 0.29129049,
+                0.27785651, 0.27785651, 0.26348979, 0.24870485, 0.23349894, 0.23349894, 0.23349894, 0.21786076,
+                0.21786076, 0.20072757, 0.18283978, 0.18283978, 0.16174917, 0.10843019, 0.10843019,
+            ]
+        ])
+        assert_array_almost_equal(km_ci, km_var_true)
+
     @staticmethod
     def test_right_truncated_children(make_aids):
         event, time_enter, time_exit = make_aids('children')
 
-        x, y = kaplan_meier_estimator(event, -time_exit.values, -time_enter.values)
-
+        x, y, km_ci = kaplan_meier_estimator(event, time_exit.values, time_enter.values, conf_type="log-log")
         true_x = np.array([
-            0.25, 0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 2.00, 2.25, 2.50, 2.75, 3.00, 3.25, 3.50, 3.75, 4.00, 4.25, 4.50,
-            5, 5.25, 5.50, 5.75, 6.50, 7,
+            7.75, 7.50, 7.25, 7.0, 6.75, 6.50,
+            6.25, 6.0, 5.75, 5.50, 5.25, 5.00,
+            4.75, 4.50, 4.25, 4.0, 3.75, 3.5,
+            3.0, 2.75, 2.50, 2.25, 1.5, 1.0,
         ])
+        assert_array_almost_equal(x[::-1], true_x, 2)
 
         true_y = np.array([
-            0, 0.02, 0.09, 0.16, 0.22, 0.25, 0.30, 0.35, 0.35, 0.39, 0.43, 0.46, 0.52, 0.56, 0.61, 0.61, 0.61, 0.67,
-            0.67, 0.67, 0.67, 1.00, 1.00, 1.00,
+            0.0, 0.022321, 0.078122, 0.156244, 0.227263, 0.25973,
+            0.311675, 0.370115, 0.370115, 0.416379, 0.442403, 0.474003,
+            0.560185, 0.611111, 0.6667, 0.6667, 0.6667, 0.6667,
+            0.6667, 0.6667, 0.6667, 1.0, 1.0, 1.0,
+        ])
+        assert_array_almost_equal(y[::-1], true_y, 4)
+
+        true_km_var = np.array([
+            [
+                0.0, 0.002822, 0.017862, 0.040298, 0.058612, 0.066127,
+                0.076545, 0.085444, 0.085444, 0.090003, 0.091389, 0.092039,
+                0.08619, 0.074768, 0.054073, 0.054073, 0.054073, 0.054073,
+                0.054073, 0.054073, 0.054073, 1.0, 1.0, 1.0,
+            ],
+            [
+                0.0, 0.085206, 0.19892, 0.34197, 0.461233, 0.512167,
+                0.589283, 0.66924, 0.66924, 0.727018, 0.757314, 0.791658,
+                0.871973, 0.910719, 0.945206, 0.945206, 0.945206, 0.945206,
+                0.945206, 0.945206, 0.945206, 1.0, 1.0, 1.0,
+            ]
         ])
 
-        assert_array_almost_equal(-x[::-1], true_x, 2)
-        assert_array_almost_equal(y[::-1], true_y, 2)
+        assert_array_almost_equal(km_ci[:, ::-1], true_km_var, 6)
 
     @staticmethod
     def test_right_truncated_adults(make_aids):
         event, time_enter, time_exit = make_aids('adults')
 
-        x, y = kaplan_meier_estimator(event, -time_exit.values, -time_enter.values)
+        x, y, km_ci = kaplan_meier_estimator(event, time_exit.values, time_enter.values, conf_type="log-log")
 
         true_x = np.array([
-            0.25, 0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 2.00, 2.25, 2.50, 2.75, 3.00, 3.25, 3.50, 3.75,
-            4.00, 4.25, 4.50, 4.75, 5.00, 5.25, 5.50, 5.75, 6.00, 6.25, 6.50, 6.75, 7, 7.25, 7.75, 8,
+            7.75, 7.5, 7.25, 7, 6.75, 6.5,
+            6.25, 6, 5.75, 5.5, 5.25, 5,
+            4.75, 4.5, 4.25, 4, 3.75, 3.5,
+            3.25, 3, 2.75, 2.5, 2.25, 2.0,
+            1.75, 1.5, 1.25,
+            1.0, 0.75, 0.25, 0.0,
         ])
+        assert_array_almost_equal(x[::-1], true_x, 2)
 
         true_y = np.array([
-            0, 0.003, 0.004, 0.01, 0.02, 0.03, 0.05, 0.06, 0.07, 0.09, 0.11, 0.13, 0.16, 0.18, 0.20,
-            0.21, 0.25, 0.29, 0.31, 0.34, 0.40, 0.49, 0.54, 0.58, 0.61, 0.64, 0.73, 0.8, 0.8, 1, 1,
+            0, 0.003629, 0.004839, 0.013825, 0.024739, 0.03546,
+            0.055989, 0.066794, 0.082874, 0.109563, 0.131793, 0.157752,
+            0.198905, 0.217225, 0.244809, 0.265913, 0.315156, 0.355267,
+            0.384269, 0.430015, 0.516018, 0.582601, 0.683923, 0.738636,
+            0.738636, 0.795455, 0.875,
+            1.0, 1.0, 1.0, 1.0,
+        ])
+        assert_array_almost_equal(y[::-1], true_y, 6)
+
+        true_km_var = np.array([
+            [
+                0, 0.001217, 0.001784, 0.006516, 0.012517, 0.018518,
+                0.030121, 0.036221, 0.045398, 0.060644, 0.073313, 0.08817,
+                0.11157, 0.121917, 0.13762, 0.149678, 0.177624, 0.199998,
+                0.216144, 0.241542, 0.287968, 0.321501, 0.366806, 0.378508,
+                0.378508, 0.393153, 0.387,
+                1.0, 1.0, 1.0, 1.0,
+            ],
+            [
+                0, 0.009059, 0.011216, 0.026215, 0.043981, 0.061083,
+                0.093258, 0.110028, 0.134564, 0.174715, 0.207699, 0.24553,
+                0.304471, 0.330298, 0.368405, 0.397012, 0.462297, 0.514048,
+                0.550376, 0.605732, 0.703548, 0.773203, 0.865965, 0.909856,
+                0.909856, 0.945449, 0.981393,
+                1.0, 1.0, 1.0, 1.0,
+            ]
         ])
 
-        assert_array_almost_equal(-x[::-1], true_x, 2)
-        assert_array_almost_equal(y[::-1], true_y, 2)
+        assert_array_almost_equal(km_ci[:, ::-1], true_km_var, 6)
 
     @staticmethod
     def test_censoring_distribution():
@@ -522,6 +1167,17 @@ def test_censoring_distribution():
 
         assert_array_almost_equal(expected, probs)
 
+    @staticmethod
+    def test_reverse_conf_int(random_survival_data):
+        msg = "Confidence intervals of the censoring distribution is not implemented"
+        with pytest.raises(NotImplementedError, match=msg):
+            kaplan_meier_estimator(
+                random_survival_data["event"],
+                random_survival_data["time"],
+                reverse=True,
+                conf_type="log-log",
+            )
+
     @staticmethod
     def test_truncated_reverse_error(truncated_failure_data):
         with pytest.raises(