[c9d045]: / notebooks / models.ipynb

Download this file

10951 lines (10950 with data), 2.0 MB

{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = pd.read_csv(\"../transformed_data/X_train.csv\")\n",
    "y = pd.read_csv(\"../transformed_data/y_train.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(X.isnull().sum() > 0).sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.naive_bayes import GaussianNB, BernoulliNB\n",
    "from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier\n",
    "from xgboost import XGBClassifier \n",
    "from sklearn.svm import SVC\n",
    "from sklearn.neighbors import KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(7238, 192)\n",
      "(1810, 192)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, train_size=.8, random_state=42)\n",
    "print(X_train.shape)\n",
    "print(X_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## GridSearch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_score, StratifiedKFold\n",
    "\n",
    "def cross_validate_calculate_scores(model, X, y):\n",
    "    scores = ['roc_auc', 'accuracy', 'precision', 'recall', 'f1']\n",
    "    results = []\n",
    "    skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)\n",
    "    for score_name in scores:  \n",
    "        score_results = cross_val_score(model, X, y, cv=skf, scoring=score_name)\n",
    "        results.append(score_results)\n",
    "    \n",
    "    return results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import accuracy_score, recall_score, precision_score, f1_score, roc_auc_score\n",
    "\n",
    "def calculate_scores(X_train, X_test, y_train, y_test, model):\n",
    "    \n",
    "    val_scores = cross_validate_calculate_scores(model, X_test, y_test)\n",
    "    \n",
    "    sns.boxplot(data=val_scores)\n",
    "    plt.title(\"Cross validation scores for \" + str(model.__class__.__name__))\n",
    "    plt.xticks([0, 1, 2, 3, 4], ['roc_auc', 'accuracy', 'precision', 'recall', 'f1'])\n",
    "    \n",
    "    \n",
    "    model.fit(X_train, y_train)\n",
    "    y_predict = model.predict(X_test)\n",
    "    \n",
    "    accuracy = accuracy_score(y_test, y_predict)\n",
    "    recall = recall_score(y_test, y_predict)\n",
    "    precision = precision_score(y_test, y_predict)\n",
    "    f1 = f1_score(y_test, y_predict)\n",
    "    auc = roc_auc_score(y_test, y_predict)\n",
    "    gini = 2 * auc - 1\n",
    "    \n",
    "    score_names = ['roc_auc', 'accuracy', 'precision', 'recall', 'f1', 'gini']\n",
    "    scores = [auc, accuracy, precision, recall, f1, gini]\n",
    "    \n",
    "    plt.figure(figsize=(8, 5))\n",
    "    ax = sns.barplot(x= score_names, y=scores, color='palegreen')\n",
    "    plt.title('Scores on test dataset for ' + str(model.__class__.__name__))\n",
    "    \n",
    "    for i, score in enumerate(scores):\n",
    "        ax.text(i, score, f'{score:.2f}', ha='center', va='bottom')\n",
    "        \n",
    "    plt.show()    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "def optimize_params(model, params_grid, X_train, y_train):\n",
    "    grid = GridSearchCV(estimator=model, param_grid=params_grid, scoring='recall', cv=5, n_jobs=-1)\n",
    "    grid_results= grid.fit(X_train, y_train) \n",
    "\n",
    "    print(\"%s best recall_score: %f, using: %s\" %(model.__class__.__name__, grid_results.best_score_, grid_results.best_params_))\n",
    "    best_params = grid_results.best_params_\n",
    "\n",
    "    if model.__class__.__name__ in (\"LogisticRegression\", \"DecisionTreeClassifier\", \"GradientBoostingClassifier\", \"RandomForestClassifier\", \"SVC\", \"XGBClassifier\"):\n",
    "        model = model.__class__(random_state=42, **best_params)\n",
    "    else:\n",
    "        model = model.__class__(**best_params)\n",
    "    \n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### LogisticRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LogisticRegression best recall_score: 0.963587, using: {'C': 10.0, 'penalty': 'l1', 'solver': 'liblinear'}\n"
     ]
    }
   ],
   "source": [
    "y_train = np.ravel(y_train)\n",
    "\n",
    "lg = LogisticRegression(random_state=42)\n",
    "\n",
    "params_grid = {\"C\":np.logspace(-3,3,7), \"penalty\":[\"l2\", \"l1\"], \"solver\": [\"liblinear\"]}\n",
    "\n",
    "model1 = optimize_params(lg, params_grid, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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zr333stVV13FggULGDZsGAAnnHAC99xzD9OmTWPrrbdmp5126tH69yRPXNSdbDCoO64ZD6L6Hc428+txvca6HDgXLlzItddeyyOPPMKTTz7J4sWL+fa3W/P3uffaay8eeughHnnkEZYuXcrUqVN5z3ves0qZRYsWsXTpUgAuvfRS3vGOdzBgwAAAnn32WQAef/xxrrnmGiZOnNizK9CDPHFp3rp0vy5atIgjjzySnXfemVGjRnH77bf3ZNV7jA0GdUcYRwfjOvz1iYg4MSJmRMSMBQsWdMOim7MuB85bbrmFYcOGMXDgQDbZZBPe+973ctttt/VY3XtS3759ueCCCzjkkEMYNWoUH/jAB9hll12YMmUKU6ZMAWDOnDnssssu7Lzzztx4442ce+65K1//vve9j9GjR3PYYYdx4YUXstVWW5ValfXOE5fmrEv3K8App5zC+PHjeeCBB5g5cyajRo3q6VXoETYY1kxLnuBlZpcPYCgwq5Np3wAmNgw/CGzX1Tz33HPP7CmvvvpqDhs2LB9++OF85ZVXctddd81Zs2atUmbhwoX5yiuvZGbmxRdfnMccc0xmZk6fPj1Hjx6dixcvzhUrVuSkSZPyvPPO67G6q/f66U9/mjvttFMOHz48zzrrrMzMvOiii/Kiiy7KzMzbbrstR4wYkSNHjswjjjgiX3jhhZWv3X///XPUqFG566675i233FKk/j3htttuy4MPPnjl8Nlnn51nn332KmUmTJiQv/rVr1YODx8+PJ9++ul88cUXc+jQoblixYoeq28pzWynRitWrMgdd9wxX3zxxfz+97+fxx9//MppV155ZX7iE59Yr/UtadmyZTl8+PD8wx/+sPJ4fv/9969S5tRTT80zzjgjMzPnzJmT73znO1dOmzRpUl5yySWZmfnKK6/kwoULe6zumZnAjOwgE7vjQtV1wMkRMRXYB3gxM5/qhvl2m8YW3/Llyzn++ONXtvgAJk+ezJw5c5g0aRJ9+vRh9OjRfPOb3wRgn3324cgjj2SPPfagb9++7L777px44oklV0e9xIQJE5gwYcIq4yZPnrzy+X777dfpvyz96le/Wq916y066n694447VinT1v26//77r9L92qdPHwYOHMhxxx3HzJkz2XPPPTn33HN54xvf2NOrsd419rQMGjSIqVOn8t3vfneVMosWLWLTTTelX79+q/S07LDDDkyfPp0lS5bQv39/br31VsaNG1doTda/xuvrwMrr66NHj15ZZvbs2Xzuc58DVr2+3r9/f6ZNm8YVV1wBQL9+/ejXr1+Pr0NHugzjiLgaOBDYNiLmA/8P2AQgM6cANwATgLnAEuC49VXZdbEuB84zzzyTM888c73Wb219Z9F3SlehRx295dFr9Tq3UxnZZPfrKaecwtixY3nb2962svv11Vdf5Z577uH8889nn3324ZRTTuGcc87hi1/8Yk9Vv8fYYGheq57gdRnGmbnai1l1s/ukbquRpJaxJvdrQBXew4YNY9iwYSxZsoTBgwezzz77AHDkkUd2eH2wVbRqg6G7teoJXq/9f4qNqSXTW1oxUndbl+7XAQMGMGTIEB588EFGjhzJrbfeukpXpDZOrXqC12vDWNKGb126XwHOP/98jj76aJYuXcrw4cNXHmB7g42pwQC9p9HQqid4hrGk9Wpdul/Hjh3r755rFa16gmcYS5I2KK14gmcYS1rFxtT92lu6XiXDWJK0XnmC17WN5veMJUnqrQxjSZIKM4wlSSrMMJYkqTDDWJKkwgxjSZIKM4wlSSrMMJYkqTDDWJKkwgxjSZIKM4wlSSrMMJYkqTDDWJKkwgxjSZIKM4wlSSrMMJYkqTDDWJKkwgxjSZIKM4wlSSrMMJYkqTDDWJKkwgxjSZIKM4wlSSrMMJYkqTDDWJKkwgxjSZIKM4wlSSrMMJYkqTDDWJKkwgxjSZIKM4wlSSrMMJYkqTDDWJKkwgxjSZIKM4wlSSrMMJYkqTDDWJKkwpoK44gYHxEPRsTciDi9g+lbRMRPImJmRNwfEcd1f1UlSWpNXYZxRPQBLgQOBUYDEyNidLtiJwGzM3M34EDgPyOiXzfXVZKkltRMy3hvYG5mPpyZS4GpwOHtyiSweUQEsBnwArCsW2sqSVKLaiaMBwHzGobn1+MaXQCMAp4EfgeckpkruqWGkiS1uGbCODoYl+2GDwHuBbYHxgIXRMSA18wo4sSImBERMxYsWLCGVZUkqTU1E8bzgSENw4OpWsCNjgOuycpc4BFg5/YzysyLM3NcZo4bOHDg2tZZkqSW0kwY3wXsFBHD6puyjgKua1fmceBdABHxZmAk8HB3VlSSpFbVt6sCmbksIk4Gbgb6AJdl5v0RMbmePgX4InBFRPyOqlv7tMx8bj3WW5KkltFlGANk5g3ADe3GTWl4/iRwcPdWTZKkjYPfwCVJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklRYU2EcEeMj4sGImBsRp3dS5sCIuDci7o+IX3ZvNSVJal19uyoQEX2AC4GDgPnAXRFxXWbObiizJfB1YHxmPh4Rb1pP9ZUkqeU00zLeG5ibmQ9n5lJgKnB4uzIfAq7JzMcBMvPZ7q2mJEmtq5kwHgTMaxieX49r9FZgq4j434i4OyImdVcFJUlqdV12UwPRwbjsYD57Au8C+gO3R8T0zPz9KjOKOBE4EWCHHXZY89pKktSCmmkZzweGNAwPBp7soMxNmbk4M58DpgG7tZ9RZl6cmeMyc9zAgQPXts6SJLWUZsL4LmCniBgWEf2Ao4Dr2pW5FvjriOgbEZsC+wBzureqkiS1pi67qTNzWUScDNwM9AEuy8z7I2JyPX1KZs6JiJuA+4AVwKWZOWt9VlySpFbRzDVjMvMG4IZ246a0G/4y8OXuq5okSRsHv4FLkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKswwliSpMMNYkqTCDGNJkgozjCVJKqypMI6I8RHxYETMjYjTV1Nur4hYHhFHdl8VJUlqbV2GcUT0AS4EDgVGAxMjYnQn5b4E3NzdlZQkqZU10zLeG5ibmQ9n5lJgKnB4B+U+Bfw38Gw31k+SpJbXTBgPAuY1DM+vx60UEYOAI4Ap3Vc1SZI2Ds2EcXQwLtsNfw04LTOXr3ZGESdGxIyImLFgwYImqyhJUmvr20SZ+cCQhuHBwJPtyowDpkYEwLbAhIhYlpk/biyUmRcDFwOMGzeufaBLkrRRaiaM7wJ2iohhwBPAUcCHGgtk5rC25xFxBXB9+yCWJEkd6zKMM3NZRJxMdZd0H+CyzLw/IibX071OLEnSOmimZUxm3gDc0G5chyGcmceue7UkSdp4+A1ckiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhRnGkiQVZhhLklSYYSxJUmGGsSRJhTUVxhExPiIejIi5EXF6B9OPjoj76sdtEbFb91dVkqTW1GUYR0Qf4ELgUGA0MDEiRrcr9ghwQGbuCnwRuLi7KypJUqtqpmW8NzA3Mx/OzKXAVODwxgKZeVtmLqwHpwODu7eakiS1rmbCeBAwr2F4fj2uMycAN3Y0ISJOjIgZETFjwYIFzddSkqQW1kwYRwfjssOCEX9DFcandTQ9My/OzHGZOW7gwIHN11KSpBbWt4ky84EhDcODgSfbF4qIXYFLgUMz8/nuqZ4kSa2vmZbxXcBOETEsIvoBRwHXNRaIiB2Aa4BjMvP33V9NSZJaV5ct48xcFhEnAzcDfYDLMvP+iJhcT58C/AuwDfD1iABYlpnj1l+1JUlqHc10U5OZNwA3tBs3peH5R4GPdm/VJEnaOPgNXJIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JUmGEsSVJhTYVxRIyPiAcjYm5EnN7B9IiI8+rp90XEHt1fVUmSWlOXYRwRfYALgUOB0cDEiBjdrtihwE7140Tgom6upyRJLauZlvHewNzMfDgzlwJTgcPblTkcuCor04EtI2K7bq6rJEktqZkwHgTMaxieX49b0zKSJKkDkZmrLxDxfuCQzPxoPXwMsHdmfqqhzE+Bf8/MX9fDtwKfzcy7283rRKpubICRwIPdtSLdZFvgudKV2EC4rZrjdmqe26o5bqfm9NbttGNmDmw/sm8TL5wPDGkYHgw8uRZlyMyLgYubWGYRETEjM8eVrseGwG3VHLdT89xWzXE7NWdD207NdFPfBewUEcMioh9wFHBduzLXAZPqu6r3BV7MzKe6ua6SJLWkLlvGmbksIk4Gbgb6AJdl5v0RMbmePgW4AZgAzAWWAMetvypLktRamummJjNvoArcxnFTGp4ncFL3Vq2IXtuF3gu5rZrjdmqe26o5bqfmbFDbqcsbuCRJ0vrl12FKklRYy4VxfRNZy62XNkwRMS4izlvN9O0j4oc9WacNVUQcGxEX1M/PiIhTS9epJ0TEpyNiTkT8d0TcHhGvbCzrvjYi4l8j4t1dlHlPR1/tXFJT14x7u4gYCtwI/ALYD7g3IvYCEjgrM79Xl/sscAywArgxMzt8MyLiY1T/D92P6qa0YzJzSURcAVyfmT+sy72UmZutybxbVUT0zcxlpeuxvkVEn8xc3mz5zJwBzFjN9CeBI7ujbr1VRATVJbEVpeuygfok1VcOLwZ2BP6uaG16ucz8lybKXMdr/yuoqFZqQY4ErgLOovo/592AdwNfjojtIuJQqp14n8zcDfiP1czrmszcqy43BzhhdQtew3n3uIj4cUTcHRH311+80vbjH/dExMz6S1qIiM0i4vKI+F39gx/vq8e/1DCvI+uTEiLiioj4r4j4BfCliNg7Im6LiN/Wf0fW5fpExFca5vupiHhXRPyoYb4HRcQ1PbdVXisihkbEAxFxZV3PH0bEphHxaET8S0T8Gnh/RBxct1DuiYgfRETbCdle9XrPjIg7I2LziDgwIq6vpx8QEffWj9/W04dGxKx6+hsatv9vI+Jv6vHHRsQ1EXFTRDwUEb1q/+pIvV5zIuLrwD3AFyLirnq7ntlQblI9bmZEfKsed1hE3FFvg1si4s2l1qO0iJgCDKcKjqMz8y7g1bK16j0i4gv1Z/bnEXF1RJxaH5eOrKc/GhFn1p/V30XEzvX4lb0svUVLtIxrj2Xm9Ij4KnB13Xp5JiJ+CewFHABcnplLADLzhdXMa0xEnAVsCWxG9W9dq/PuNZh3Ccdn5gsR0R+4KyKuBS4B3pGZj0TE1nW5L1D9j/jbACJiqybm/Vbg3Zm5PCIG1PNcFlU30dnA+6h6GYYBu9fTtgYWAhdGxMDMXED173CXd+M6r62RwAmZ+ZuIuIyqVQLw58zcPyK2Ba6hWufFEXEa8PcRcQ7wPeCDmXlXvS1ebjfvU4GT6nlvBvy53fSTADLzbfVB42cR8dZ62lhgd+AV4MGIOD8z59G7jaR6X39M1frfGwjguoh4B/A88M/A2zPzuYb98NfAvpmZEfFR4LPAP/R05XuDzJwcEeOBv8nM3vhtUsVExDiq48vuVFl2D3B3B0Wfy8w9IuKTVJ/Bj/ZcLZvXSmG8uP4bnUwPqm7rZlwB/F1mzoyIY4ED6/HLqHsTIiKourHXdN4lfDoijqifD6EKx2mZ+QiscvLwbqovdaEev7CJef+godt2C+DKiNiJants0jDfKW3d2G3Lq1tCH46Iy6kuL0xay/XrTvMy8zf1828Dn66ff6/+uy/Vr5f9ptoF6AfcThU8T9UtFzLzjwB1mTa/Af4rIr5D1fsyv930/YHz69c/EBGPUZ3sANyamS/W85xN1V3Z28O47QT5K8DBwG/r8ZtR/cLbbsAP20KmYT8cDHwvqh+b6Qc80rPV1gZif+DazHwZICJ+0km5th63u4H39kTF1kYrdVO3mQZ8sO4aHQi8A7gT+BlwfERsCtBwFt6RzYGnImIT4OiG8Y8Ce9bPD+cvYbMm8+5REXEgVRjuV3eh/xaYSccnD52dVDSOe0O7aYsbnn8R+EVmjgEOayjb2XwvBz4MTKQK9d5wzbl9PduGG0/2fp6ZY+vH6Mw8gSZOyDLzHKqz8v7A9LYuswadnUhC1SJus5wN40S6cZv9e8M2G5GZ36TzbXY+cEHdQ/NxXrvPSbD6z0ujts9Or/7ctGIY/wi4jypw/ofqByuezsybqK67zIiIe6m6KzrzBeAO4OfAAw3jLwEOiIg7gX2oDzZrOO+etgWwsL4BbWeqlt3rqdZjGKxy8vAz4OS2FzZ0Uz8TEaOiukv9CDq3BfBE/fzYhvE/AyZHRN/G5dU3Lz0JfJ6qN6I32CEi9qufT6TqMm00HXh7RIwAiOqa8lup9pPto7pxkPp68Cof/Ih4S2b+LjO/RHVTV/swnkZ98lfPcwd634+prI2bqU5W266tD4qINwG3Ah+IiG3q8W37YeN+9JGerqw2GL8GDqvvtdgM+NvSFVoXvfYsYU1k5qPAmPp5Av9YP9qXOwc4p4n5XQRc1MH4Z6jCrM3n1nTeBdxEFYT3UR3YpwMLqLqqr6kD9lngIKqb3y6sbyhaDpxJ1cVzOnA9VbfoLKpuxo78B1U39d9TnQi1uZSqu/W+iHiV6qSm7eaJ7wADM3N296zuOpsDfCQivgE8RLUfrPyFssxcUF+6uDoiXl+P/nxm/j4iPgicX1+bf5mqR6LRZ6K6KWs5MJvqPwAaf/f768CUiPgd1SWRYzPzlXZd2RuczPxZRIwCbq/X5SXgw/XX6v4b8MuIWE7Va3MscAbwg4h4gmp/HVak4r1MRPwV1UncAGBFRHwGGN12SWRjU9+bcR1Vw+sxqm3zYtlarT2/gUtF1Xc0/rbutixdl6FU/7o2pnRdJHUtIjbLzJfqS4TTgBMz857S9VobLdEyXlsRcSHw9najz83M3nBXb8uLiLupuvo3yjtlJa2ziyNiNNV9BVduqEEMtowlSSquFW/gkiRpg2IYS5JUmGEsSVJhhrEkSYUZxpIkFWYYS5JU2P8He0tZbBGYz+QAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train, X_test, y_train, y_test, model1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DecisionTreeClassifier best recall_score: 0.895109, using: {'ccp_alpha': 0, 'criterion': 'gini', 'max_depth': 9, 'max_features': 'sqrt', 'min_samples_leaf': 3}\n"
     ]
    }
   ],
   "source": [
    "dtc = DecisionTreeClassifier(random_state=42)\n",
    "\n",
    "params_grid = {\"criterion\": [\"gini\", \"entropy\"],\n",
    "               \"max_depth\": np.arange(1, 11),\n",
    "               \"min_samples_leaf\": np.arange(1, 6),\n",
    "               \"max_features\": [\"sqrt\", \"log2\"],\n",
    "               \"ccp_alpha\": [0, 0.05, 0.1]}\n",
    "\n",
    "model2 = optimize_params(dtc, params_grid, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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v/32Eouxyu2xxx48+OCDPPzwwyxcuJArrriCI444Yqky8+bNY+HChQBcfPHF7Lfffmy44YYsWLCAF198EYAFCxZwww03MHz48NW+DJLUE60V3dSNFyYBSy5MarxKeMaMGXz+858Hlr4waYsttqB///4AvPrqq7z66qvLdN32Fn379uX888/n4IMPZvHixXz84x9n55135oILLgBgzJgxzJw5kxNOOIE+ffowbNgwvv/97wPw1FNPcdRRRwGwaNEiPvKRj3DIIYcUWxZJ6knWijBu78KkO+64Y6kybRcm7bPPPktdmLTFFluwePFidt99d2bNmsWpp57KnnvuuboXYbU57LDDOOyww5YaNmbMmCWP9957bx588MFlXrftttsyffr0VV4/SeqN1opu6lYvTHruuecYMWIE55133lIXJvXp04dp06YxZ84cJk+evNSNLiRJWllrRct4RS5Mgiq8hwwZsuTCpDYbb7wxBxxwABMnTlxjzof+aN6PSldhtTpu4+NKV0GSut1a0TJemQuT5s6dy7x58wB4+eWX+c1vfsOOO+64uhdBktSLrRUt45W5MOnJJ5/kYx/7GIsXL+a1117jQx/6EO9973tLLo4kqZeJ9s6nrg4jR45Mf0Jx5dlNLUk9R0TclZnL/JLOWtFNLamclfklsM5eK/UWa2w39drU4rO1p95qZX4JrJXX9iYTJ05k7NixLF68mJNPPplx48YtNf7555/nox/9KI899hiLFi3ijDPO4KSTTgLg3HPP5aKLLiIz+cQnPsFnP/vZAkuglWHLWNIqszK/BNbKa3uLVu4SOH78eIYNG8b06dO55ZZb+NznPsfChQu59957ueiii5g8eTLTp0/n2muvbfdeAFqzGcZSF3XWhfr8889z+OGHL7mvedtX56BqyQwfPpydd96Zb3/726ux1qvXyvwSWCuv7S1aOfCICF588UUyk/nz57PpppvSt29fZs6cyV577cX6669P37592X///bn66qsLLYm6yjCWusCWTGtW5oY7rby2t2jlwOO0005j5syZDBw4kF122YVzzz2XddZZh+HDhzNp0iSeffZZXnrpJa677rql7qugnmGNPWcsrclaud95Ky0ZYElL5swzzyyyLKvSytxw56WXXur0tb1FKwce119/PSNGjOCmm27iz3/+MwceeCD77rsvO+20E2eddRYH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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train, X_test, y_train, y_test, model2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### GaussianNB"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GaussianNB best recall_score: 0.982065, using: {'var_smoothing': 2.310129700083158e-09}\n"
     ]
    }
   ],
   "source": [
    "gnb = GaussianNB()\n",
    "\n",
    "params_grid = {'var_smoothing': np.logspace(0,-9, num=100)}\n",
    "model3 = optimize_params(gnb, params_grid, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train, X_test, y_train, y_test, model3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### BernoulliNB"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BernoulliNB best recall_score: 0.830435, using: {'alpha': 0.03511191734215131, 'binarize': 1, 'fit_prior': False}\n"
     ]
    }
   ],
   "source": [
    "bnb = BernoulliNB()\n",
    "\n",
    "params_grid = {\"alpha\": np.logspace(0,-9, num=100),\n",
    "               \"binarize\": [1],\n",
    "               \"fit_prior\": [False, True]}\n",
    "\n",
    "model4 = optimize_params(bnb, params_grid, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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t9TiJUnqdRHx586G200tSVJhhrHamTVrFqNGjWLkyJGcddZZLxi/cuVK3vWud7H33nuzxx57cMEFFwCwePFixo4du/Zv22235Zxzzunl2kvS5qnYHbjGjRuXdlP3La2trey2225ceeWVtLS0MH78eGbMmMGYMWuf3c7nP/95Vq5cydlnn83y5csZNWoUf/nLXxg0aFC7+QwbNowbb7yRnXbaqbNFSdIWKSJuycxxHYfbMtZaN910EyNHjmTEiBEMGjSIY445hosvvrhdmYjg8ccfJzNZtWoV22+/PQMHtr/0YPbs2bzuda8ziCWpSYax1rrvvvsYPvz5J/e1tLRw333tnzZ48skns2jRIoYOHcpee+3F17/+dV70ova70cyZMzn22GN7pc6S1B9sMWHc3XOhACtWrGDixInsvvvujB49mhtuuKE3q95rOjtlERHt3l9++eWMHTuW+++/n/nz53PyySfz2GOPrR2/evVqLrnkEt7znvds8vpKUn+xRYRxa2srJ510EpdddhkLFy5kxowZLFy4sF2ZadOmMWbMGBYsWMDvfvc7PvGJT7B69WoATjnlFCZMmMAdd9zBggULGD26u49H7dtaWlpYunTp2vfLli1j6ND2T8a74IILOPLII4kIRo4cyS677MIddzz/JMTLLruMfffdl1e/+tW9Vm9J2txtEWG8MedCH3vsMa655hpOOOEEAAYNGsR2221XYC02vfHjx3PnnXdy9913s3r1ambOnMnhhx/ersyOO+7I7NmzAXjwwQdZvHgxI0aMWDt+xowZdlFL0gbaIsJ4Y86FLlmyhCFDhnDcccexzz77MGXKFJ544oneXoVeMXDgQM477zwOOeQQRo8ezdFHH80ee+zB9OnTmT59OgCnn346119/PXvttRdve9vbOPvss9lhhx0AePLJJ7nyyis58sgjS66GJG12it2BqzdtyLnQq666ij/96U8cfPDBvPnNb2bNmjXMmzePc889l/33359TTjmFs846izPPPLO3qt+rDjvsMA477LB2w6ZOnbr29dChQ7niiis6nfZlL3sZDz/88CatnyT1R1tEy3hjzoW2tLTQ0tLC/vvvD8DEiROZN29er9ZfktS/bREt48ZzocOGDWPmzJn8+Mc/blem7Vzom9/85nbnQnfYYQeGDx/O4sWLGTVqFLNnz253E4zSfrTiR6Wr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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train, X_test, y_train, y_test, model4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### GradientBoostingClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GradientBoostingClassifier best recall_score: 0.965217, using: {'criterion': 'friedman_mse', 'loss': 'exponential', 'n_estimators': 100, 'subsample': 0.8}\n"
     ]
    }
   ],
   "source": [
    "gbc = GradientBoostingClassifier(random_state=42)\n",
    "\n",
    "params_grid = {\"loss\": [\"log_loss\", \"exponential\"],\n",
    "               \"criterion\": [\"friedman_mse\", \"squared_error\"],\n",
    "               \"subsample\": [0.8],\n",
    "               \"n_estimators\": [100]}\n",
    "\n",
    "model5 = optimize_params(gbc, params_grid, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEICAYAAABRSj9aAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAiYklEQVR4nO3df5xcVX3/8dc7IT8FDLARIQsE3YikqGgDSlWM8kPi18qPYoXWEn6J+JWkLbVIrX6LrS1o/dq6iM0DS0iwCiqCpXyJQLFIUX4FEyIEMEsIshBoNhAiEMivz/ePc5bcDDM7s5vZnd3r+/l4zGNn7jn33HPOvfdzz5y5O6OIwMzMymtUqytgZmaDy4HezKzkHOjNzErOgd7MrOQc6M3MSs6B3sys5BzoW0TSTEndhdcPSJrZSN4BbGuepC8MdP0ykPRuSSskPS/puFbXp1GSFkj6Un7+XkkPt7pOg2ko27ij51UD5W933kn6lKSn8zG4R/77hsHaftGIC/SS/kjS4txJqyUtkvSeVtdrR0XE70TErTtajqRTJd1eUfbZEfF3O1r2CPe3wDciYueI+FEzCpQ0Q9L1kp6VtE7Sckl/L2m3ZpRfKSL+OyIOaEZZklZJOrLweqqkyOfV8zkgfVPSmGZsr496hKSO3tfNbGMu/1BJN+T984ykuyWd1qzy+1I873I/fg04Oh+Da/PflUNRlxEV6CWdC/wz8A/AnsC+wDeBY2vk32nIKmdN1+T9tx/wQLPqIen3gFuBnwFvjohJwDHAZuBtjZYzDE2KiJ2BtwCHAZ9ucX0GTNJhwE+AnwIdwB7Ap4BZLajOnsB4BngMFg3oOIqIEfEAXgs8D3y0jzwXAFcD/wasB84E9gauA54BuoBPFPIfCizOeZ8GvpaXj89lrAXWAfcAe1bZ3vnA1RXLvg505uenAQ8CvwFWAp8s5JsJdBderwKOzM8nAAuAZ4HlwF9W5D0feCSXuxw4Pi8/EHgJ2JL7al1evgD4UmH9T+S+eCb3zd6FtADOBlbk7V8CqEZ/V+2/nPYe4Oe5/x4HTi3sxyuANcBjwOeBUTntVFLg/Kdcty8B44CvAr/O25gHTMj524Dr8zaeAf67t6yKej4CbAU25H4ZV+e4uICK46hKmbcDF9c5Zqu1542k4LMW6AG+Qwquveu8HfhF3rffA67q3XdVjpm9gR/mvnwUmFvRhu/nvv4NKcDMyGnfruiP84Cped/vVCjjK8ClhdcHki5u63J5H6k4P2vt1w5SsH0ut/l7eflteZsv5Hp8rEobVwGfAZbl9b8HjC+knwesBp4kne8BdBT20SV97J/KbVU9r+q0QXn//k9OWwYcVDzvgDflNkZu508K51pvXfs6zmcC3cBngaeAb/c7fg5mcG7mg22jpZ36yHMBsAk4jvRuZULeOd8kBe+D84F4RM5/B/An+fnOwLvy808C/wFMBEYDvwvsWmV7+wEv9qblvKsL5fwv0okt4H057ztqHGSr2BboLyIFrd2BfYD7K/J+lHSSjyKdHC8AexWCy+0V9VzAtmDxgXygviMfXBcDtxXyBil4TiK9Y1oDHFOjv2v1376kk+VkYAxpJHVwTrsC+HdgF1Jw+RVwRqHum4E5wE55//0zKSDvntf5D+DCnP9C0gkxJj/eS+2L0iv9m1/3dVxcQMVxVFHWa0gX05l1jtlq7ekAjsp9P5kU7P455x9LCpJ/nttzYq7HqwJ9rte9wP/J672BNJj4YKENLwEfIh2XFwJ39tEfUykEetLxdR9wen49hnRB/Fze3gfyPj6ggf16JfDXuc7jgfdUHG8dhdevtLFQz7tzfXYnDZzOLsSEp4DfIZ2r3+4tL7/eAry/j/1Tua2+zquqbQA+mPfDJNJ5fmBhnQWFfbdd/1a2nb6P85mk4+jLpONmQq021WzrUATpZjyAPwaeqpPnArYPWvvknb1LYdmFwIL8/Dbgi0BbRTmnk0ajb22gXrcDp+TnRwGP9JH3R8Cf9nFA9wb6lRSCK3BWMW+VcpcCx+bnp9J3oL8M+EohbWdSMJlaOPiKJ+L3gfNrbLdW//0VcG2V/KOBl4HphWWfBG4t1P3XhTSRTrY3FpYdBjyan/8tKbh0VKtfxbaL/VvvuNjuOKpSVnvupzcXln2FNNJ9Afh8tfbUKOs4YEl+fjhpZKpC+s+pHujfWVl27vfLC234z0LadGBDtf7Ir6fmNq3Lj8jb7h3EvJcUVEcV1rkyb6fefr0CuBRor9L+RgL9xyv6eV5+Pp8cDPPrDrYF+imV+6jKtrfbVp3zqmobSBe8XwHvouLdJA0Geuof5zOBjRTeyfT3MZLm6NcCbQ3MTz1eeL438ExE/Kaw7DHSQQBwBult1UOS7pH04bz828CNwFWSnpT0lT4+lPouaeQK8Ef5NQCSZkm6M38ItI40umqrU//eehfb8VgxUdIpkpbmD5jWAQc1WG5v2a+UFxHPk/p2SiHPU4XnL5IuBtXU6r99SG+BK7WxbdTaq7g/YPt2TyaNzO4ttPXHeTnAP5JGmTdJWinp/Br1rFTvuKisR6VnSVMfe/UuiIjzIs3TX0savVctR9LrJF0l6QlJ60nTQ737bm/gichnd6Fe1ewH7N3bL7lvPkeaC+5VuR/HN3D+tOV2TCRNO/24ULfHI2JrRd2mUH+/nkcKZnfnu8tOr1OHSrWOx8rzpPj8VfuonjrnVdU2RMRPgG+QpjiflnSppF0bbllS7zgHWBMRL/Wz3FeMpEB/B+mt6HF18hVPkieB3SXtUli2L/AEQESsiIiTgdeR3hZdLek1EbEpIr4YEdOB3wM+DJxSY3s/AGZKageOJwd6SeNI86dfJc3vTwJuIB0s9awmBctincnl7gd8CzgH2COXe3+h3GL7q3mSFCR6y3sNaWrliQbqtZ1a/Uc64d5YZZUe0ruH/QrLXtkfVerfQ5pH/p2ImJQfr430YSER8ZuI+IuIeAPw+8C5ko5ooOp9HhdV6rGdiHgBuAs4oYFtVZZzYV721ojYFfg42/bdamCKpOIxsi/VPU4a8U0qPHaJiA81UKdq9do+MWIDaUR6mKQ2Up/tI6kYM3r7rM/9GhFPRcQnImJv0kj/m8U7bXbAatK7q16vnDMR8SIpZvxBIwXVO6/6akNEdEbE75KmkN5E+kytP/o8znub1M8ytzNiAn1EPEeaj7xE0nGSJkoak0fNX6mxzuOkt58XShov6a2kUeh3ACR9XNLkPEpZl1fbIun9kt4iaTTpw7hNpLf61baxhvQB1eWkE+/BnDSWNJ+2BtgsaRZwdIPN/T7wV5J2yxeQOYW015B2+prchtNII49eTwPtksbWKPu7wGmSDs4Xo38A7oqIVQ3W7RW1+o/Uv0dK+kNJO+V7hg+OiC25bX8vaZd8cp1LGtW+Si73W8A/SXpd3uYUSR/Mzz8sqSMHxvV521X3U0W5fR4XDToPOF3S+YW6tQP711lvF/IH5ZKmsH1QuIM0Fzs399sJpA+8q7kbWC/ps5ImSBot6SBJhzRY/6dJ8/pV5WPjT0ij6bWkC9sLwHn5vJtJurheVW+/Svpo7htII+1g237qsx51fJ90LB8oaSIpPhSdB5wq6S8l7ZHr8jZJV1Upq8/zqlYbJB0i6Z35Hf8LbLsZomH1jvNmGDGBHiAivkY6gD5P2iGPk67AP+pjtZNJ82NPkt5W/01E3JzTjgEekPQ86W6Zk/Lbo9eT7rpYT/rw56fUCEbZd4EjKUzb5GmBuaSD8VnStM51DTb1i6S3vo8CN5GmknrLXQ78X1JQeJp0G9zPCuv+hHRHxFOSeioLjohbgC+Q3m2sJo28T2qwXpWq9l9E/Jo0TfUXpLtNlrLtlsM5pBNiJenzje+S5lpr+SxpeubOPNXxn0DvfdbT8uvnSf3xzWj8fxH6Oi7qiojbSfOzhwO/KrzdvpX0AXctXyR9EP4c8P+AawplbiS9SziVdMx8rJhesf0tpEB7MOk46QH+lXT3SyMuBD6fpwo+U1i+Lu/Pp0nzxB+JZCPwEdKtiT2kD7JPiYiH8np97ddDgLtyudeRPqd6NKddACzM9fjDBusOQEQsAjqB/yIdI3fkpJdz+s9J++gDwEpJz5Dm2W+oUla986pWG3YlBelnSefsWtK7+P7q6zjfYdp+OtDMbGSSdCBpumVcRGxudX2GkxE1ojczK5J0vKSxSv+N/GXgPxzkX82B3sxGsk+SpnEfIc2Nf6q11RmePHVjZlZyHtGbmZXcsPySpba2tpg6dWqrq2FmNmLce++9PRExuVrasAz0U6dOZfHixa2uhpnZiCGp1n9Re+rGzKzsHOjNzErOgd7MrOQc6M3MSs6B3sys5OoGeknzJf2PpPtrpEtSp6QuScskvaOQdoykh3Nao98VbmZmTdTIiH4B6VsKa5lF+hbBaaRfQvoXgPwVv5fk9OnAyZKm70hlzcys/+reRx8Rt0ma2keWY4Er8q/i3ClpkqS9SF8B2xURKwHyd0AfS/rRXbOmOP3001m9enW/13v55ZfZunVr/YxNMGrUKMaNG9fv9fbaay/mz+/rG5zNGtOMf5iawvY/4dWdl1Vb/s5ahUg6i/SOgH33rfWjOmbbW7duHc+/+Hz/j+St7OBv9jRuy9YtbNq4qX8rbU5tM2uGZgT6aj+NF30sryoiLiX9KAAzZszwN61ZQ9rb21mjNWydOTSj86Ey6tZRtE9pr5/RrAHNCPTdbP/7pu2kX+0ZW2O5mZkNoWYE+uuAc/Ic/DuB5yJitaQ1wDRJ+5N+JPgk0s/pDanOzk66urr6tU53dzeQRov90dHRwdy5c/u1jpnZYKsb6CVdCcwE2iR1A38DjAGIiHmk31/8EOn3Dl8ETstpmyWdA9wIjAbmR8QDg9CGptuwYUOrq2Bm1jSN3HVzcp30AD5dI+0GqvwQ70AMZGQ+1Lq6ugY0ovc7ATMbTMPya4qr6erqYskvl7N14u6Dvi1tTJ8F3/vIU4O+rVEvPjPo2zCz324jJtCnefOhuRknxu86JNvJW3vlMwEzs8Hg77oxMyu5ETOib29v5+mXd+Kl6R9udVWaavzy62lvf32rq2FmJeYRvZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWck50JuZlZwDvZlZyY2Y++ghfV3A+OXXD/p29NJ6YGj+QzZ9BYLvozezwTNiAn1HR8eQbWvFit8AMO2NQxGAXz+kbTOz3z4jJtAP5bc79m6rs7NzyLZpZjZYPEdvZlZyDvTWp56eHubMmcPatWtbXRUzGyAHeuvTwoULWbZsGQsXLmx1VcxsgBzoraaenh4WLVpERLBo0SKP6s1GKAd6q2nhwoWkX4qErVu3elRvNkI50FtNN998M5s2bQJg06ZN3HTTTS2ukZkNhAO91XTUUUcxZswYAMaMGcPRRx/d4hqZ2UCMmPvoB6qzs5Ourq5+rbNixQqg//fud3R0DOn9/oNt9uzZLFq0CIBRo0Yxe/bsFtfIzAbCI/oqJkyYwIQJE1pdjZZra2tj1qxZSGLWrFnssccera6SmQ1A6Uf0ZRpht8Ls2bNZtWqVR/NmI1jpA73tmLa2Ni6++OJWV8PMdoCnbszMSs6B3sys5BzozcxKzoHezKzkHOjNzErOgd7MrOQc6M3MSs6B3sys5BzozcxKzoHezKzkGgr0ko6R9LCkLknnV0nfTdK1kpZJulvSQYW0P5V0v6QHJP1ZE+tuZmYNqBvoJY0GLgFmAdOBkyVNr8j2OWBpRLwVOAX4el73IOATwKHA24APS5rWvOqbmVk9jYzoDwW6ImJlRGwErgKOrcgzHbgFICIeAqZK2hM4ELgzIl6MiM3AT4Hjm1Z7MzOrq5FAPwV4vPC6Oy8rug84AUDSocB+QDtwP3C4pD0kTQQ+BOxTbSOSzpK0WNLiNWvW9K8VZmZWUyOBXlWWRcXri4DdJC0F5gBLgM0R8SDwZeBm4MekC8LmahuJiEsjYkZEzJg8eXKD1Tczs3oaCfTdbD8KbweeLGaIiPURcVpEHEyao58MPJrTLouId0TE4cAzwIpmVNzMbDjo6elhzpw5rF27ttVVqamRQH8PME3S/pLGAicB1xUzSJqU0wDOBG6LiPU57XX5776k6Z0rm1V5M7NWW7hwIcuWLWPhwoWtrkpNdX9hKiI2SzoHuBEYDcyPiAcknZ3T55E+dL1C0hZgOXBGoYgfStoD2AR8OiKebXYjftt0dna+8qPd/fHiiy8SUTnrNjgkMXHixH6vN2vWLP/8o40YPT09LFq0iIhg0aJFzJ49e1j+tnJDPyUYETcAN1Qsm1d4fgdQ9bbJiHjvjlTQrK51MOrWIfjfv+fz350Hf1Os49W3PNiws3DhwlcGT1u3bmXhwoWce+65La7Vq/k3Y0eguXPnetSbdXR0DGi97u5uNmzY0K91Nryc8k8YNaFf602YMIH29vZ+rcOUgbfNhs7NN9/Mpk2bANi0aRM33XSTA71Zsw30gtfZ2UlXV1e/1unu7gbod9Du6OjwhbmkjjrqKG644QY2bdrEmDFjOProo1tdpao0VHO2/TFjxoxYvHhxq6thZtannp4eTjrpJDZu3Mi4ceO46qqrWjZHL+neiJhRLc1famZmNkBtbW3MmjULScyaNWtYfhALnroxM9shs2fPZtWqVcyePbvVVanJgd7MbAe0tbVx8cUXt7oaffLUjZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWck1FOglHSPpYUldks6vkr6bpGslLZN0t6SDCml/LukBSfdLulLS+GY2wMzM+lY30EsaDVwCzAKmAydLml6R7XPA0oh4K3AK8PW87hRgLjAjIg4CRgMnNa/6ZmZWTyMj+kOBrohYGREbgauAYyvyTAduAYiIh4CpkvbMaTsBEyTtBEwEnmxKzc3MrCGNBPopwOOF1915WdF9wAkAkg4F9gPaI+IJ4KvAr4HVwHMRcVO1jUg6S9JiSYvXrFnTv1aYmVlNjQR6VVkWFa8vAnaTtBSYAywBNkvajTT63x/YG3iNpI9X20hEXBoRMyJixuTJkxutv5mZ1bFTA3m6gX0Kr9upmH6JiPXAaQCSBDyaHx8EHo2INTntGuD3gH/b4ZqbmVlDGhnR3wNMk7S/pLGkD1OvK2aQNCmnAZwJ3JaD/6+Bd0mamC8ARwAPNq/6ZmZWT90RfURslnQOcCPprpn5EfGApLNz+jzgQOAKSVuA5cAZOe0uSVcDvwA2k6Z0Lh2UlpiZWVWKqJxub70ZM2bE4sWLW10NM7MRQ9K9ETGjWpr/M9bMrOQc6M3MSs6B3sys5Bq5vdLMSqyzs5Ourq5+rdPd3Q1Ae3t7v9br6Ohg7ty5/VrHdpwDvZn124YNG1pdhT4N5OIF6QI2VG2bMGFCvy+UMLCLpe+6MbN+6w00nZ2dLa5JdSeccAI9PT2trsagaGtr45prrnnV8r7uuvGI3sxKZ9KkSQMamb/88sts3bq1X+v05h81qn8feY4aNYpx48b1ax1IbesvB3ozK5358+cPaL2yfl7hQG9mlpX1g2LfXmlmVnIO9GZmJedAb2ZWcg70ZmYl50BvZlZyDvRmZiXnQG9mVnIO9GZmJedAb2ZWcg70ZmYl50BvZlZyDvRmZiXnQG9mVnIO9GZmJedAb2ZWcg70ZmYl50BvZlZyDvRmZiXnQG9mVnIO9GZmJedAb2ZWcg70ZmYl50BvZlZyDvRmZiXnQG9mVnIO9GZmJddQoJd0jKSHJXVJOr9K+m6SrpW0TNLdkg7Kyw+QtLTwWC/pz5rcBjMz68NO9TJIGg1cAhwFdAP3SLouIpYXsn0OWBoRx0t6c85/REQ8DBxcKOcJ4NrmNsHMzPrSyIj+UKArIlZGxEbgKuDYijzTgVsAIuIhYKqkPSvyHAE8EhGP7WCdzcysHxoJ9FOAxwuvu/OyovuAEwAkHQrsB7RX5DkJuLLWRiSdJWmxpMVr1qxpoFpmZtaIRgK9qiyLitcXAbtJWgrMAZYAm18pQBoLfAT4Qa2NRMSlETEjImZMnjy5gWqZmVkj6s7Rk0bw+xRetwNPFjNExHrgNABJAh7Nj16zgF9ExNM7VFszM+u3Rkb09wDTJO2fR+YnAdcVM0ialNMAzgRuy8G/18n0MW1jZmaDp+6IPiI2SzoHuBEYDcyPiAcknZ3T5wEHAldI2gIsB87oXV/SRNIdO58chPqbmVkdjUzdEBE3ADdULJtXeH4HMK3Gui8Ce+xAHc3MbAf4P2PNzErOgd7MrOQc6M3MSs6B3sys5BzozcxKzoHezKzkHOjNzErOgd7MrOQa+ocpMxv+Ojs76erqGpJtrVixAoC5c+cOyfY6OjqGbFtl5EBvVhK33nora3t6GFs/6w7r/WraB5cuHfRtbQS6u7sd6HeAA71ZiYwF9mp1JZpsdasrUAIO9GYl0d7ezrqeHs6o+hMSI9dlBJPaK3/HyPrDH8aamZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVXEOBXtIxkh6W1CXp/Crpu0m6VtIySXdLOqiQNknS1ZIekvSgpMOa2QAzM+tb3UAvaTRwCTALmA6cLGl6RbbPAUsj4q3AKcDXC2lfB34cEW8G3gY82IyKm5lZYxoZ0R8KdEXEyojYCFwFHFuRZzpwC0BEPARMlbSnpF2Bw4HLctrGiFjXrMqbmVl9jQT6KcDjhdfdeVnRfcAJAJIOBfYD2oE3AGuAyyUtkfSvkl5TbSOSzpK0WNLiNWvW9LMZZmZWSyOBXlWWRcXri4DdJC0F5gBLgM3ATsA7gH+JiLcDLwCvmuMHiIhLI2JGRMyYPHlyg9U3M7N6dmogTzewT+F1O/BkMUNErAdOA5Ak4NH8mAh0R8RdOevV1Aj0ZmY2OBoZ0d8DTJO0v6SxwEnAdcUM+c6asfnlmcBtEbE+Ip4CHpd0QE47AljepLqbmVkD6o7oI2KzpHOAG4HRwPyIeEDS2Tl9HnAgcIWkLaRAfkahiDnAd/KFYCV55G9mZkOjkakbIuIG4IaKZfMKz+8AptVYdykwY+BVNDOzHeH/jDUzKzkHejOzknOgNzMrOQd6M7OSc6A3Mys5B3ozs5JzoDczKzkHejOzknOgNzMrOQd6M7OSc6A3Mys5B3ozs5JzoDczK7mGvr3SzEaGp4DLXvUDcM23Nv/dY9C3lNo0aQi2U2YO9GYl0dHRMWTbWrNiBQCTplX9dvKmmsTQtq2MHOjNSmLu3LkDWq+zs5Ourq4m16a6jo6OAdfTBs6B3sz6bcKECa2ugvWDA73ZbzmPsMvPd92YmZWcA72ZWck50JuZlZwDvZlZyTnQm5mVnAO9mVnJOdCbmZWcA72ZWckpYvC/AKm/JK0BHmtxNdqAnhbXYbhwX2zjvtjGfbHNcOiL/SJicrWEYRnohwNJiyNiRqvrMRy4L7ZxX2zjvthmuPeFp27MzErOgd7MrOQc6Gu7tNUVGEbcF9u4L7ZxX2wzrPvCc/RmZiXnEb2ZWck50JuZlVypA72SUrfRho6kGZI6+0jfW9LVQ1mn4UzSqZK+kZ9fIOkzra5Ts0iaK+lBST+UdIekl4dz+0oXBCVNzTvgm8AvgMsk3S/pl5I+Vsh3Xl52n6SL+ijvE5Luyfl+KGliXr5A0omFfM/3t+yRSlIpfplM0uj+5I+IxRFR8+eYIuLJiDixVvpI4QFSQ/438CHgU8Bc4KutrU7fyrozDwCuAL4EtANvA44E/lHSXpJmAccB74yItwFf6aOsayLikJzvQeCMvjbcz7KbTtKPJN0r6QFJZ+Vlx0j6Rb7w3JKX7Szp8nxBWibpD/Ly4gXrREkL8vMFkr4m6b+AL0s6VNLPJS3Jfw/I+UZL+mqh3DmSjpB0baHcoyRdM8j9MFXSQ5IW5npcLWmipFWS/o+k24GPSjo6j8h+IekHknbO6x+S23WfpLsl7SJppqTrc/r7JC3NjyU5faqk+3P6+EL/LpH0/rz8VEnXSPqxpBWShvT4qKXKAOkLeYCzTNIXC/lOycvuk/TtvOz3Jd2V2/mfkvZsVTuGgqR5wBuA64A/joh7gE2trVXfSjEyq+KxiLhT0j8BV0bEFuBpST8FDgHeB1weES8CRMQzfZR1kKQvAZOAnYEb62z7yH6UPRhOj4hnJE0A7pH078C3gMMj4lFJu+d8XwCei4i3AEjarYGy3wQcGRFbJO2ay9ws6UjgH4A/AM4C9gfentN2B54FLpE0OSLWAKcBlzexzbUcAJwRET+TNJ80CgN4KSLeI6kNuCa36QVJnwXOze/Cvgd8LCLuyW3dUFH2Z4BP57J3Bl6qSP80QES8RdKbgZskvSmnHQy8HXgZeFjSxRHxeFNbPjAHkPbNj4ATgUMBAddJOhxYC/w18O6I6CkcS7cD74qIkHQmcB7wF0Nd+aESEWdLOgZ4f0S0+msPGlLWQP9C/qsa6QIava90AXBcRNwn6VRgZl6+mfyOSJKAsQMoezDMlXR8fr4PKfDeFhGPwnYXniOBk3pXiohnGyj7B/miCfBaYKGkaaT2jimUOy8iNhe3l0d/H5d0OXAYcMoA29cfj0fEz/LzfyO9xYYUxAHeBUwHfpZ2IWOBO0gBb3UeqRER63MbimX/DPiapO+Q3vV1V6S/B7g4r/+QpMdIF0qAWyLiuVzmcmA/YDgE+t4B0leBo4ElefnOwDTSO+Ore4Nb4VhqB74naS9SHz46tNW2eso6ddPrNuBjeTphMnA4cDdwE3C6ts23795HGbsAqyWNAf64sHwV8Lv5+bFsC3T9KbupJM0kBdrD8rTREuA+ql94al2QisvGV6S9UHj+d8B/RcRBwO8X8tYq93Lg48DJpAvG5r7a0iSV9eh9XRwI3BwRB+fH9Ig4gwYu1hFxEXAmMAG4M4/ai2oNMiCN5HttYfgMuIr9cmGhXzoi4jJq98vFwDfyu8NP8urjxlqs7IH+WmAZKdj9BDgvIp6KiB+T5tcWS1pKehteyxeAu4CbgYcKy78FvE/S3cA7ySdJP8tuttcCz0bEiznwvAsYl+u5P2x34bkJOKd3xcLUzdOSDlT6MO54anst8ER+fmph+U3A2cof2PZuLyKeBJ4EPk96lzQU9pV0WH5+MmmKoehO4N2SOgDyHP6bSPt5b0mH5OW7qOIDaElvjIhfRsSXgcVAZaC/jTwwyGXuCzzcvKYNqhtJg5XezyumSHodcAvwh5L2yMt7j6XisTB7qCtrDYgIP0ryIAX1RaSL2w+AW0lTTbPYNrq/OefdGVgI3J+Xn5CXnwg8ktf9BrAgL18AnFjY1mHAr0hTGH8HrMrLdwK+BizP5Z5TWOck4M4h6oupuQ7zcn/8EJhIeifWVsj3AeCenGcZ8JG8/BDSheC+/Hfn3JfX5/SLC313Ze77qcD9OX187rNf5r5/f15+Kmn027v964GZw+DYeaXu+fWf5rr/kjSd9ca8fHah3b3HxrHASuC/gX8Ebq1sK3AB8JlWt7OJ/bWK9NXErwe6gfXAuvx811bXr/Lhr0CwIaN0T/WSSNMAg72tqaSgfNBgb8tsuBsuc4MtJ+kS4N0Vi78eEUNxd0jpSbqXNL1V2rsxzIYrj+jNzEqu7B/Gmpn91nOgNzMrOQd6M7OSc6A3Mys5B3ozs5L7/391wri087gqAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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MTqEp59+mt12e/MX8fr168fTTz/d7HAz69q6RBg7ZBrTSKtt7ty5vP/97wdgzz335Mknn+TZZ59l3rx5HHTQQWyzzTZ0796dww47jBtvvLHEYnQI9b7ZTlKzw802psHwrW99i2HDhjF8+HDGjBnDa6+95cfXrIPrEmHskGlMI622ESNGcMMN6ZcIZ86cyaJFi1iyZAnDhw9n+vTpvPDCC6xcuZJp06axePFiuqp+/fqts/xLliyhT58+zQ63rm1jGgxPP/003/72t5k1axazZ89mzZo1TJ3a3E+cW0fVahhLukbSc5JmNzNekr4taaGkRyXt2/bV3DgOmcY00mo777zzWL58OSNHjuSyyy5jn332oXv37uy1116ce+65fOADH+CYY45hxIgRdO/edX+H5LjjjmPy5MlEBDNmzKBXr17suuuu7L///ixYsIAnnniCVatWMXXqVI477rjS1bXCNqbBALB69WpeffVVVq9ezcqVK32CtxlqpGV8HelH6JtzLLBHfowDvrPx1WpbDpnGNNJq69mzJ9deey0PP/wwkydPZtmyZQwaNAiA008/nQcffJDp06ez4447sscee7Rr/dvTmDFjOPjgg5k/fz79+vXj6quvZuLEiUycOBGA0aNHs/vuuzN48GA+/elPc8UVVwDQvXt3Lr/8co4++mj22msvPvrRjzJs2LCSi7LJbWj36/z58xk5cuTaR8+ePTvtPRsb02Do27cv55xzDv3792fXXXelV69eHHXUUe1a//bWKfepiGj1AQwEZjcz7kpgTOX1fGDX1srcb7/9or3ce++9cdRRR619fdFFF8VFF13U7PRvvPFGDBgwIF566aW3jPvCF74QEyZM2CT1LO2vf/1rDBo0KB5//PF4/fXXY++9947Zs2evM83y5cvj9ddfj4iISZMmxSmnnLJ23LPPPhsREYsWLYohQ4bEiy++2H6Vtw5p9erVsfvuu8cf//jHtfvUnDlz1pnmnHPOifPPPz8iIubNmxfve9/76pazyy67xJNPPtku9W5vP/rRj+L0009f+3ry5Mlx5plnrjPNSy+9FGPHjo0RI0bEySefHKNGjYqHH344XnzxxTjiiCPiueeei1WrVsXxxx8f3//+99t7EdrN5r5PAbOiTia2xTXjvkC133ZJHvYWksZJmiVp1rJly9pg1o1ppGtwxYoVrFq1CoDv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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train, X_test, y_train, y_test, model5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### RandomForestClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RandomForestClassifier best recall_score: 0.934783, using: {'ccp_alpha': 0, 'criterion': 'gini', 'max_depth': 8, 'max_features': 'sqrt', 'min_samples_leaf': 3}\n"
     ]
    }
   ],
   "source": [
    "rfc = RandomForestClassifier(random_state=42)\n",
    "\n",
    "params_grid = {\"criterion\": [\"gini\", \"entropy\", \"log_loss\"],\n",
    "               \"max_depth\": np.arange(1, 9),\n",
    "               \"min_samples_leaf\": np.arange(1, 6),\n",
    "               \"max_features\": [\"sqrt\", \"log2\"],\n",
    "               \"ccp_alpha\": [0, 0.05, 0.1]}\n",
    "\n",
    "model6 = optimize_params(rfc, params_grid, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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gH322Yf58+fzyiuvALBy5UreeustVq5cybJlyzbpkDnxxBMZN24cEcH06dPZZptt2HnnnTn44IOZO3cu8+bNY/ny5UyYMIETTzyxdHPNrLBazozvJP1z+eYcD+yZH+cA31n/ZlkJtVzPPOCAA7jnnnuAFN4vvfQSdXV19O7dm4suuoi+ffuy8847s80223DMMce0a/vb04gRIzjssMN49tln6dOnD7fddhtjxoxhzJgxAAwfPpzdd9+d/v3785nPfIZbbrkFgK5du3LTTTdx7LHHsu+++3LqqacycODAkrNiZh1Aq2EcEQ8Cf2+hyEnAuEimA9tK2rmtGthW1vVa6LPPPsvgwYNXP3r06MF1113Xzq1vH7Vcz7z00ktZsmQJgwcP5sYbb+T9738/Xbt2ZcmSJdx7773MmzePhQsX8uabb/KDH/ygvZre7saPH8+iRYtYsWIFdXV1nHXWWYwePZrRo0cDabndfPPNvPDCCzz99NMMGTJk9XuHDx/Oc889xwsvvMBll11Wahasg/E+ahMXEa0+gN2Amc2MmwQcXvF6GjCkmbLnADOAGX379o32snLlyth9993jhRdeiHfeeSf233//mDVrVqMyF110UVx++eURETFnzpw48sgjm6xnp512ivnz57dLu9vbQw89FMccc8zq11dddVVcddVVzZZftWpV7LrrrvH666/H3XffHaNGjVo97q677opzzz13g7bXrLPwPmrTAcyIJvKxLX6buqlbQdc8xUrBPxYYCzBkyJAmy2wIlddCgdXXQgcMGLC6zOzZs/nSl74ENL4WutNOO60uM23aNPbYYw923XXX9mp6u6q8ntm7d28mTJjAj370o0Zlli5dylZbbUW3bt249dZbOeKII+jRowd9+/Zl+vTpLFu2jC233JJp06Y1Ohss7YdLf1i6Ce3qk9t+snQTbC14H2VtcTd1HbBLxes+wMI2qLfNrM+10EoTJkxgxIgRG77BhTR3PbPyWuicOXMYOHAg++yzD1OmTOH6668H4JBDDuGUU07hwAMPZL/99mPVqlWcc845JWfHbKPhfZS1xZnxROB8SROAQ4DXI2JRG9TbZqLGa6EXXnghgwcPZr/99lt9LbTB8uXLmThxIldfffUGb29Jw4cPZ/jw4Y2GNVwHBTjssMOYO3duk++94ooruOKKKzZo+8w6I++jrNUwljQe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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train, X_test, y_train, y_test, model6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SVC best recall_score: 0.966304, using: {'C': 1, 'degree': 2, 'gamma': 'auto', 'kernel': 'poly'}\n"
     ]
    }
   ],
   "source": [
    "svc = SVC(random_state=42)\n",
    "\n",
    "params_grid = {'C': [0.1, 1, 5, 10],\n",
    "               'kernel': ['linear', 'poly', 'rbf', 'sigmoid'],\n",
    "               'gamma': ['scale', 'auto'],\n",
    "               'degree': [2, 3, 4]}\n",
    "\n",
    "model7 = optimize_params(svc, params_grid, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train, X_test, y_train, y_test, model7)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### XGBoost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_xg, X_test_xg = X_train.copy(), X_test.copy() \n",
    "\n",
    "X_train_xg.columns = [str(col).replace('[', '').replace(']', '').replace('<', '').replace('>', '') for col in X_train.columns]\n",
    "X_test_xg.columns = [str(col).replace('[', '').replace(']', '').replace('<', '').replace('>', '') for col in X_test.columns]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "XGBClassifier best recall_score: 0.976630, using: {'gamma': 1, 'max_depth': 4, 'reg_alpha': 0, 'reg_lambda': 0.5, 'subsample': 0.8}\n"
     ]
    }
   ],
   "source": [
    "xgb = XGBClassifier(random_state=42)\n",
    "\n",
    "params_grid = param_grid = {'max_depth': np.arange(3, 11),\n",
    "                            'subsample': [0.8],\n",
    "                            'gamma': [0, 0.2, 0.5, 1],\n",
    "                            'reg_alpha': [0, 0.5, 1],\n",
    "                            'reg_lambda': [0, 0.5, 1]}\n",
    "\n",
    "model8 = optimize_params(xgb, params_grid, X_train_xg, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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REREJAsMNURERCQLDDVEREQkCww1REREJAsMNURERCQLDDVEREQkCww1REREJAsMNURERCQLDDVEREQkCww1REREJAsMNURERCQLDDVEREQkCww1REREJAsmjT0AIiKqm1IAgGjkUegTAMr+7/8qAIpGHMvdSht7ANTgGGqIiJqpRY09AKImhoefiIiISBa4p4aIqBnRaDRISkqqt/aEECgpKam39oqLixEcHAwA2Lx5MzQaTb21rVaroVDUzwGt+hwXNR0MNUREzYhCoYBWq6239m7fvo2goKB6a++fKsNNfUlKSqrXZSf54eEnIiIikgXuqSEieoA15OGs+jxcBPCQEd0bQw0R0QOsvg9nAYCZmVm9tkdUWzz8RERERLLAUENERESywFBDREREssBQQ0RERLLAUENERESywFBDREREssBQQ0RERLJQp1ATFxcHV1dXaDQaeHh4YN++fTXWX7FiBdzd3aHVauHm5obExESDOtevX8eUKVNgb28PjUYDd3d37Ny5U3o+OjoaCoVCb2rXrl1dhk9EREQyZPTN9zZv3oywsDDExcXB19cXK1euREBAAE6dOgUnJyeD+vHx8YiIiMDq1avRp08fpKWlYfz48WjdujUCAwMBAKWlpXj66afRtm1bfPnll3BwcMDly5fRsmVLvba6du2K3bt3S4+VSqWxwyciIiKZMjrULF26FGPHjsW4ceMAAMuXL0dSUhLi4+MRExNjUP+zzz7DhAkTpB82e+ihh3Dw4EEsWrRICjUJCQn466+/kJKSApVKBQBwdnY2HKyJiVF7Z0pKSvR+fbaoqKj2C0pERETNilGHn0pLS5GRkQE/Pz+9cj8/P6SkpFQ5T0lJicHvdWi1WqSlpaGsrAwA8M0338Db2xtTpkyBnZ0dunXrhoULF0Kn0+nNl5WVhfbt28PV1RUhISE4f/58jeONiYmBlZWVNDk6OhqzuERERNSMGBVq8vPzodPpYGdnp1duZ2eHvLy8Kufx9/fHmjVrkJGRASEE0tPTkZCQgLKyMuTn5wMAzp8/jy+//BI6nQ47d+7EnDlzEBsbiwULFkjteHl5ITExEUlJSVi9ejXy8vLg4+ODgoKCascbERGBwsJCabp8+bIxi0tERETNSJ1+0PLuX10VQlT7S6yRkZHIy8tDv379IISAnZ0dxowZg/fff186J6aiogJt27bF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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp8AAAHBCAYAAAAvhNASAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEF0lEQVR4nO3de5yN9f7//+cc14wZRgzjNMY4j3PNpJCUMm3KlvrcQuUUSeMQ004kkYq0c6gwCrNlJ9mitmxbJqeccooSihwah5FtlFMMZl6/P/pZX8sszDAuMzzut9t1u1nv631d7/e13tda6+k6jY+ZmQAAAAAH+F7vDgAAAODmQfgEAACAYwifAAAAcAzhEwAAAI4hfAIAAMAxhE8AAAA4hvAJAAAAxxA+AQAA4BjCJwAAABxD+MRNZfXq1WrdurXKly8vl8uliIgINWjQQM8///z17lqBNmzYMH3++efXtI0tW7ZoyJAh2r1791WtZ8iQIfLx8bmiZT/++GONGTPmqtrPS+PHj9eUKVNyXP/w4cNq27atSpYsKR8fHz388MPXrG+HDh1SRESEGjdurKysLI95p0+fVt26dRUdHa1jx455zPv+++/VpUsXVapUScHBwQoODlaVKlX0zDPPaN26dR51z43lucnX11elS5dWixYttGLFCq/9+v7779W5c2dFR0crKChIoaGhuu222/TWW2/p8OHD7nr33HOP7rnnnrx5M67AkiVL5OPjoyVLlniUv/fee6pcubICAwPl4+Oj33//XZ06dVKFChWuSz+BK2LATWLu3Lnm6+trTZs2tenTp9uSJUts+vTp9vzzz1vZsmWvd/cKtJCQEOvYseM1bWPmzJkmyRYvXnxV6xk8eLBd6Vffgw8+aFFRUVfVfl6qWbOmNWnSJMf1+/TpY4GBgfbRRx/ZqlWr7Keffrp2nTOzzz77zCTZ22+/7VHev39/8/HxsUWLFnmUT5gwwfz9/a1mzZr2zjvv2FdffWULFy60sWPHWqNGjUyS/fzzz+7658Zy/vz5tmrVKluxYoVNnz7dbr31VvP397f169d7rP+DDz5wr3/cuHG2ePFiW7BggQ0bNsyio6Pt4Ycfdtdt0qRJrt7bvHbkyBFbtWqVHTlyxF22YcMGk2Rdu3a1ZcuW2apVq+zs2bP2888/27fffnvd+grkFuETN427777bKlWqZGfOnMk2LzMz09G+nDhxwtH2rjXC5/WR2/B5//33W0xMTJ61n5WVZX/88ccl6zz55JMWFBRkW7ZsMTOzlStXmp+fn/Xq1cuj3vLly83X19datmxpGRkZXtf1r3/9y/bt2+d+fW4s//e//3nU27Fjh0myAQMGuMvOtfuXv/zFTp06lW3dGRkZ9u9//9v9+nqHT28++ugjk2SrV6++pu3caN9PyH8In7hp1KxZ0+64444c1582bZrdeeedFhISYiEhIVa3bl2bNGmSR53JkydbnTp1zOVy2S233GIPP/yw+0f2nI4dO1pISIh9//331qxZMwsNDbU777zTzP78wXvttdesWrVqFhgYaOHh4dapUyc7ePCgxzoWLlxoTZo0sWLFillQUJBFRkbaI488ctkficzMTBsxYoR7/SVKlLD27dvbnj17POo1adLEatasaWvWrLG77rrLgoODLTo62oYPH37ZYC4p23T+j3ZaWpp169bNypYtawEBAVahQgUbMmRItv8EjB8/3urUqWMhISEWGhpq1apVc4eHf/zjH17b+cc//nHJvs2dO9fq1q1rgYGBVqFCBfv73//uNXyOHTvWGjdubCVKlLBChQpZrVq1bMSIEXb69GmP98hbH84ZMmSI1a9f32655RYrXLiw3XrrrTZp0iTLysryaCsnY5mT/SIqKipbXy4WjHft2uW17+eCfHp6uj377LNWpkwZCwgIsOjoaHvppZeyhTRJ1qNHD0tKSrLq1atbQECAJSUlXXIMDh8+bGXKlLHbb7/djhw5YlWqVLEqVapk23dbtGhhAQEBtn///kuu73wXC5+HDh0ySfbKK6+4yx566CHz9/e31NTUHK3bW/jMyzG+1P5uZrZ48WKPMfK2/537D1/Hjh2zjX1WVpaNGzfO6tata0FBQVa0aFF79NFHbceOHdm2s2bNmrZ06VJr0KCBBQcHW5s2bXL0HgFXivCJm0bXrl1NkvXq1cu++eYbj2BxoUGDBpkke+SRR2zmzJm2YMECGzVqlA0aNMhdZ9iwYSbJ2rVrZ//5z39s6tSpVrFiRQsLC7Nt27a563Xs2NEduoYPH24LFy60L7/80jIzM+0vf/mLhYSE2KuvvmopKSk2adIkK1u2rNWoUcN9RGnXrl0WFBRkzZo1s88//9yWLFli06ZNs/bt29tvv/12yW3u1q2bSbKePXva/Pnz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r/DwcI8yb8+VDA8PV/HixTV//nyvbRQuXNj978aNG6tx48bKzMzUunXr9N5776lPnz6KiIhQ27ZtL9vHC4O0tz5eC+Hh4apTp47eeOMNr/PLlCnj/nfnzp3VuXNnnThxQl9//bUGDx6shx56SNu2bVNUVFSu2r3lllvk4+OjAwcOZJt3Ydnnn3+uEydOaPbs2R7tbNy4McftffLJJwoICNDcuXM9jrR6e/bp5cYyN/tFXihevLhWr14tM/PYTw8ePKizZ8/maF++lKFDh+r777/XV199paZNm6p79+5688031bp1a912222SJD8/PzVt2lQLFixQWlqaRxiqUaOGJOXq+a6+vr6qWbOmZs6cqYMHD6pkyZK677779N///ld79+695H8sLyYvx1jK2/39QuHh4fLx8dGyZcvkcrmyzb+w7EqfewtcKY584qbhLShK0tatWyX9vyAUHx8vPz8/JSUlXXRdDRo0UHBwsD766COP8r1792rRokW67777Ltufhx56SOnp6crMzFRcXFy2qVq1atmW8fPz0x133OE+Kvftt99edP3nTqNd2Me1a9dq69atOepjTl3sCOlDDz2kH374QZUqVfK6jeeHz3NCQkLUvHlzDRw4UKdPn9bmzZvdbUg5OxIZEhKi+vXra/bs2Tp16pS7/NixY/riiy886p774T3/B9nMNHHixBxvp4+Pj/z9/eXn5+cuO3nypP75z39etI8XG8vc7BdXe2Raku677z4dP348W4iaOnWqe/6VWrdund58800lJCS498e33npL5cqVU6dOnTxOvw8YMECZmZnq3r27zpw5c8VtSlJmZqY2bdokl8vlPuMwYMAAmZmefvppr6f9z5w5k23fOF9ejvH5Lra/X42HHnpIZqZ9+/Z53Ydq16591W0AV4Mjn7hpPPDAAypXrpxatmyp6tWrKysrSxs3btTIkSMVGhqq5557TpJUoUIFvfTSS3rttdd08uRJtWvXTmFhYdqyZYsOHTqkV199VUWLFtWgQYP00ksvqUOHDmrXrp3S09P16quvKigoSIMHD75sf9q2batp06apRYsWeu6551S/fn0FBARo7969Wrx4sVq1aqXWrVtrwoQJWrRokR588EGVL19ep06dUnJysiTp/vvvv+j6q1Wrpm7duum9996Tr6+vmjdvrt27d2vQoEGKjIxU37598+aNlVS7dm0tWbJEX3zxhUqXLq3ChQurWrVqGjp0qFJSUtSwYUP17t1b1apV06lTp7R7927NmzdPEyZMULly5fT0008rODhYjRo1UunSpXXgwAENHz5cYWFhuv322yVJtWrVkiR98MEHKly4sIKCghQdHe31cgFJeu211/SXv/xFzZo10/PPP6/MzEyNGDFCISEhHn/JplmzZgoMDFS7du3Ur18/nTp1SklJSfrtt9+8bufs2bOVlJSk2NhY+fr6Ki4uTg8++KBGjRqlxx9/XN26dVN6errefvvtbEeYcjKWOd0vzvXnk08+0YwZM1SxYkUFBQXlOlh06NBB48aNU8eOHbV7927Vrl1by5cv17Bhw9SiRYtL7mOXkpGRoY4dOyoqKkojRoxwl4eGhio5OVn33XefXnvtNfcp+EaNGmncuHHq1auXbrvtNnXr1k01a9aUr6+v0tLSNGvWLEnKdvmKJK1fv15hYWGS/jzlnJycrB9//FF9+/Z1H6Vs0KCBkpKSlJCQoNjYWD377LOqWbOmzpw5ow0bNuiDDz5QrVq1vF4TLClPxzgn+/vVaNSokbp166bOnTtr3bp1uvvuuxUSEqK0tDQtX75ctWvX1rPPPnvV7QBX7Lre7gQ4aMaMGfb4449blSpVLDQ01AICAqx8+fLWvn37bM/mNDObOnWq3X777RYUFGShoaF26623Znuu5KRJk6xOnToWGBhoYWFh1qpVK/cd3Oece86nN2fOnLG3337b/Sy+0NBQq169uj3zzDO2fft2M/vzztXWrVtbVFSUuVwuK168uDVp0sTmzJlz2W0+95zPqlWrWkBAgIWHh9uTTz550ed8XsjbI1y82bhxozVq1MgKFSqU7Tmf//vf/6x3794WHR1tAQEBVqxYMYuNjbWBAwfa8ePHzczsww8/tHvvvdciIiIsMDDQypQpY4899pj7UTnnjBkzxqKjo83Pzy9Hz/mcM2eOe3zKly9vb775ptfnfH7xxRfuMShbtqy98MIL9t///jfb3caHDx+2//u//7OiRYuaj4+Px3qSk5OtWrVq5nK5rGLFijZ8+HCbPHmySbJdu3aZWc7HMif7hZnZ7t27LT4+3goXLnzJ53yec7FxTk9Pt+7du1vp0qXN39/foqKibMCAARd9zmdOvPDCC+br62vLli3zOj8hIcHrXyHauHGjde7c2aKjo83lcllQUJBVrlzZOnTokO2ObG93uxcrVszuuOMOS05O9vqM2o0bN1rHjh2tfPnyFhgYaCEhIXbrrbfaK6+84vHoLm93u+fVGOdkf7+au93P7+8dd9xhISEhFhwcbJUqVbIOHTrYunXrPLbT2z4BXEs+ZmbXIfMCAADgJsQ1nwAAAHAM4RMAAACOIXwCAADAMYRPAAAAOIbwCQAAAMcQPgEAAOCYAvGQ+aysLO3fv1+FCxfmz4ABAADkQ2amY8eOqUyZMvL1vfjxzQIRPvfv33/Rv7ENAACA/GPPnj0qV67cRecXiPBZuHBhSX9ujLc/rQYAAIDr6+jRo4qMjHTntospEOHz3Kn2IkWKED4BAADysctdIskNRwAAAHAM4RMAAACOIXwCAADAMYRP3NDGjx+v6OhoBQUFKTY2VsuWLbtk/XHjxikmJkbBwcGqVq2apk6d6jH/zJkzGjp0qCpVqqSgoCDVrVtX8+fPv5abcENjfADgJmQFwJEjR0ySHTly5Hp3xatx48ZZhQoVzOVy2W233WZff/31JeuPHTvWqlevbkFBQVa1alX78MMPPeafPn3aXn31VatYsaK5XC6rU6eO/fe//72Wm3BD+uSTTywgIMAmTpxoW7Zsseeee85CQkLsl19+8Vp//PjxVrhwYfvkk09sx44dNn36dAsNDbU5c+a46/Tr18/KlClj//nPf2zHjh02fvx4CwoKsm+//dapzbphMD4AcGPJaV4jfF4lfkDzr/r161v37t09yqpXr279+/f3Wr9Bgwb2t7/9zaPsueees0aNGrlfly5d2saOHetRp1WrVvbEE0/kUa9vHowPcGU44IH8Kqd5jdPuV2nUqFHq0qWLunbtqpiYGI0ZM0aRkZFKSkryWv+f//ynnnnmGbVp00YVK1ZU27Zt1aVLF40YMcKjzksvvaQWLVqoYsWKevbZZ/XAAw9o5MiRTm1WgXf69GmtX79e8fHxHuXx8fFauXKl12UyMjIUFBTkURYcHKw1a9bozJkzl6yzfPnyPOz9jY/xAa7MjBkz1KdPHw0cOFAbNmxQ48aN1bx5c6Wmpnqtn5SUpAEDBmjIkCHavHmzXn31VfXo0UNffPGFu87LL7+s999/X++99562bNmi7t27q3Xr1tqwYYNTm4WbDOHzKvADmn8dOnRImZmZioiI8CiPiIjQgQMHvC7zwAMPaNKkSVq/fr3MTOvWrVNycrLOnDmjQ4cOueuMGjVK27dvV1ZWllJSUvTvf/9baWlp13ybbiSMD3BlOOCBGwHh8yrwA5r/XfigWzO76MNvBw0apObNm+vOO+9UQECAWrVqpU6dOkmS/Pz8JEnvvPOOqlSpourVqyswMFA9e/ZU586d3fORO4xP/pXXN4NJ0pgxY1StWjUFBwcrMjJSffv21alTp67VJtxwOOBRMPDZyYHcns9funSpPfTQQ1a6dGmTZJ999tlll1myZInddttt5nK5LDo62pKSknLVZn695nPfvn0myVauXOlR/vrrr1u1atW8LvPHH39Y586dzd/f3/z8/KxMmTLWr18/k2S//vqrmZkdPHjQWrVqZb6+vubn52dVq1a1hIQECw4OvubbdKPIyMgwPz8/mz17tkd579697e67777ksqdPn7Y9e/bY2bNn3dfoZmZmetQ5efKk7d2717Kysqxfv35Wo0aNPN+GGxnjk79di2vZP/roI3O5XDZt2jTbtWuXffnll1a6dGnr06ePU5tV4J37zVmxYoVH+RtvvGFVq1b1usyAAQOsVKlStm7dOsvKyrK1a9dayZIlTZLt37/fzMzatWtnNWrUsG3btllmZqYtWLDAgoODLTAw8Jpv043mZv/sXLMbjubNm2cDBw60WbNm5Sh87ty50woVKmTPPfecbdmyxSZOnGgBAQH26aef5rjN/Bo++QHN3+rXr2/PPvusR1lMTMxFb2jx5u6777Z27dpddP7p06etUqVKNmDAgCvu582K8cm/rsXNYD169LCmTZt61ElMTLS77rorj3p94+OAR/53s392rtkNR82bN9frr7+uRx55JEf1J0yYoPLly2vMmDGKiYlR165d9dRTT+ntt9/ObdP5TmBgoGJjY5WSkuJRnpKSooYNG15y2YCAAJUrV05+fn765JNP9NBDD8nX13M4goKCVLZsWZ09e1azZs1Sq1at8nwbbmSJiYmaNGmSkpOTtXXrVvXt21epqanq3r27JGnAgAHq0KGDu/62bdv00Ucfafv27VqzZo3atm2rH374QcOGDXPXWb16tWbPnq2dO3dq2bJl+stf/qKsrCz169fP8e0r6Bif/Olandq96667tH79eq1Zs0aStHPnTs2bN08PPvjgNdiKG1N4eLj8/PyyXdZ18ODBbJd/nRMcHKzk5GT98ccf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JLVu3VqFChVSlSpVNGfOHPd8TrvfBD788EP5+/trxYoVGjZsmFq0aKHbb79d3333nZKSkjR58mS9/vrr7voDBgzQiBEjNGjQIG3ZskUff/zxRf/W/YUKFy6sKVOmaMuWLXrnnXc0ceJEjR49Olf9vZr287MTJ04oMTFRa9eu1cKFC+Xr66vWrVsrKytLx48fV5MmTbR//37NmTNH3333nfr166esrCxJ0n/+8x898sgjevDBB7VhwwYtXLhQcXFxue7Diy++qN69e2vr1q164IEHdOrUKcXGxmru3Ln64Ycf1K1bN7Vv394j9F5qPLp27aqPP/5YGRkZ7vrTpk1TmTJldO+9917lO+asc5+T1atX691339Xo0aM1adIk9/y///3vqlWrltavX69BgwZp06ZNeuCBB/TII4/o+++/14wZM7R8+XKPMN6hQwd98sknevfdd7V161ZNmDBBoaGhXtvv0aOHMjIy9PXXX2vTpk0aMWLEReuuX79ejz32mNq2batNmzZpyJAhGjRokPs/G+eMHDlScXFx2rBhgxISEvTss8/qxx9/vPo3qwA4/3vvzTffVJMmTVSvXj2tW7dO8+fP16+//qrHHnvMXf9y3zt58d2G3HnnnXc0dOhQlStXTmlpaVq7du317tJNKzExUStWrNCcOXOUkpKiZcuW6dtvv73kMq+++qoee+wxff/992rRooWeeOIJHT582KEeO8zgoUmTJlavXj3365deesmqVatmWVlZ7rJx48ZZaGioZWZm2tGjR83lctnEiRPzpP233nrLYmNj3a87duxorVq18qjz3HPPWZMmTczM8rz9/OzgwYMmyTZt2mTvv/++FS5c2NLT073WbdCggT3xxBMXXZck++yzzzzKwsLC7B//+IeZme3atcsk2ZgxYy7brxYtWtjzzz9vZpcfj1OnTlmxYsVsxowZ7rJ69erZkCFDLttOftKkSROLiYnx+Fy8+OKLFhMTY2ZmUVFR9vDDD3ss0759e+vWrZtH2bJly8zX19dOnjxpP/30k0mylJQUr20uXrzYJNlvv/1mZma1a9e+6Pt2Yd3HH3/cmjVr5lHnhRdesBo1arhfR0VF2ZNPPul+nZWVZSVLlrSkpKRLvBM3hgu/9wYNGmTx8fEedfbs2WOS7Keffrqi750Lv9sGDx5sdevWdb/29l2H3Bs9erRFRUV5neftew957+jRoxYQEGAzZ850l/3+++9WqFAhe+6558zsz++b0aNHu+dLspdfftn9+vjx4+bj42P//e9/zSz7d1pBl+s/r3kzOP8I2datW9WgQQOP6ywaNWqk48ePa+/evTpw4IAyMjJ03333XVFbn376qcaMGaOff/5Zx48f19mzZ1WkSJEcL79169araj8/27FjhwYNGqRvvvlGhw4dch/VTE1N1caNG3XrrbeqWLFiXpfduHGj+1Tv1bjwaGlmZqbefPNNzZgxQ/v27VNGRoYyMjIUEhIi6fLj4XK59OSTTyo5OVmPPfaYNm7cqO+++65A3gRw5513enwuGjRooJEjRyozM1NS9vdu/fr1+vnnnzVt2jR3mZkpKytLu3bt0qZNm+Tn56cmTZrkqP3evXvr2Wef1YIFC3T//ffr0UcfVZ06dbzW3bp1q1q1auVR1qhRI40ZM0aZmZny8/OTJI/lfXx8VKpUKR08eDBH/Snozh+v9evXa/HixV6PJO/YsUO///77Zb93rva7DSiodu7cqTNnzqh+/frusrCwMFWrVu2Sy53//RMSEqLChQvfsN8/nHb34lyQkP78cbzwAl/7/69r8/HxUXBw8BW3880336ht27Zq3ry55s6dqw0bNmjgwIEeF/v7+vq62zvn/Oumrqb9/K5ly5ZKT0/XxIkTtXr1avep7dOnT192uy8338fH55Lv6znn7wvSn6dlR48erX79+mnRokXauHGjHnjgAfeY5WQ8unbtqpSUFO3du1fJycm67777FBUVddnlCpoL37usrCw988wz2rhxo3v67rvvtH37dlWqVCnX+3LXrl21c+dOtW/fXps2bVJcXJzee+89r3Uv9Tk+X0BAgMdrHx8f9396bnTnj1dWVpZatmzpMVYbN27U9u3b3dfsXkpOvtuAG9X5GcFb+cXcTN8/hM/LqFGjhlauXOmx06xcuVKFCxdW2bJlVaVKFQUHB2vhwoW5XveKFSsUFRWlgQMHKi4uTlWqVNEvv/ziUadEiRJKS0vzKDv/uW1X035+lp6erq1bt+rll1/Wfffdp5iYGP3222/u+XXq1NHGjRsvej1MnTp1LvmeXPi+bt++XX/88cdl+7Vs2TK1atVKTz75pOrWrauKFStq+/bt7vk5GY/atWsrLi5OEydO1Mcff6ynnnrqsu3mR998802211WqVHEfRbzQbbfdps2bN6ty5crZpsDAQNWuXVtZWVlaunRpjvsQGRmp7t27a/bs2Xr++ec1ceJEr/Vq1Kih5cuXe5StXLlSVatWvWh/b2bnxqpChQrZxiokJOSy+3lOvtuAG1WlSpUUEBCgNWvWuMuOHj3q8VtxsyN8XkZCQoL27NmjXr166ccff9S///1vDR48WImJifL19VVQUJBefPFF9evXT1OnTtWOHTv0zTffuO/QvZTKlSsrNTVVn3zyiXbs2KF3331Xn332mUedpk2bat26dZo6daq2b9+uwYMH64cffnDPv5r287NbbrlFxYsX1wcffKCff/5ZixYtUmJiont+u3btVKpUKT388MNasWKFdu7cqVmzZmnVqlWSpMGDB2v69OkaPHiwtm7dqk2bNumtt95yL9+0aVONHTtW3377rdatW6fu3btn+1+nN5UrV1ZKSopWrlyprVu36plnntGBAwfc83M6Hl27dtWbb76pzMxMtW7d+mrfrutiz549SkxM1E8//aTp06frvffe03PPPXfR+i+++KJWrVqlHj16uI+izZkzR7169ZL0592fHTt21FNPPaXPP/9cu3bt0pIlS/Svf/3L6/r69OmjL7/8Urt27dK3336rRYsWKSYmxmvd559/XgsXLtRrr72mbdu26cMPP9TYsWP1t7/97erfiBtQjx49dPjwYbVr105r1qzRzp07tWDBAj311FPKzMy87H6ek+82OOP48ePuI9eStGvXLm3cuFGpqanXt2M3sMKFC6tjx4564YUXtHjxYm3evFlPPfWUfH19b5hHJV2163WxaX7VpEkT9wXB5yxZssRuv/12CwwMtFKlStmLL75oZ86ccc/PzMy0119/3aKioiwgIMDKly9vw4YNy1F7L7zwghUvXtxCQ0OtTZs2Nnr0aAsLC/Oo88orr1hERISFhYVZ3759rWfPnu4bjq62/fwsJSXFYmJizOVyWZ06dWzJkiUeF8zv3r3bHn30UStSpIgVKlTI4uLibPXq1e7lZ82aZfXq1bPAwEALDw+3Rx55xD1v3759Fh8fbyEhIValShWbN2+e1xuONmzY4NGn9PR0a9WqlYWGhlrJkiXt5Zdftg4dOnjcKJGT8Th27JgVKlTIEhIS8vQ9c0qTJk0sISHBunfvbkWKFLFbbrnF+vfv774B6cKL6c9Zs2aNNWvWzEJDQy0kJMTq1Kljb7zxhnv+yZMnrW/fvla6dGkLDAy0ypUrW3Jyspllv+C+Z8+eVqlSJXO5XFaiRAlr3769HTp0yGtdM7NPP/3UatSo4R6Tv//97x5989bnunXr2uDBg6/uzSoAvH3vbdu2zVq3bm1Fixa14OBgq169uvXp08c9xpfbzy/33cYNR9fGhTccnfssXDh17NjxuvXxZnD06FF7/PHHrVChQlaqVCkbNWqU1a9f3/r3729m3m84utRNsDfaDUc+Zpe5CAFAntuzZ48qVKigtWvX6rbbbrve3cm1e+65R/Xq1cvVn4cDgJvViRMnVLZsWY0cOVJdunS53t257rjbHXDQmTNnlJaWpv79++vOO+8skMETAHBpGzZs0I8//qj69evryJEjGjp0qCRle+rGzYprPq+hYcOGKTQ01OvUvHnz6909XAfnbsRYv369JkyYcL27AwC4Rt5++23VrVtX999/v06cOKFly5YpPDz8encrX+C0+zV0+PDhi96NHRwcrLJlyzrcIwAAgOuL8AkAAADHcNodAAAAjiF8AgAAwDGETwAAADiG8AkAAADHED4BAADgGMInAAAAHEP4BAAAgGMInwAAAHDM/wetZrcyVVN5kgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train_xg, X_test_xg, y_train, y_test, model8)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n",
      "/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py:770: UserWarning: Scoring failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/model_selection/_validation.py\", line 761, in _score\n",
      "    scores = scorer(estimator, X_test, y_test)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 216, in __call__\n",
      "    return self._score(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 258, in _score\n",
      "    y_pred = method_caller(estimator, \"predict\", X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/_scorer.py\", line 68, in _cached_call\n",
      "    return getattr(estimator, method)(*args, **kwargs)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_classification.py\", line 214, in predict\n",
      "    neigh_dist, neigh_ind = self.kneighbors(X)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/neighbors/_base.py\", line 752, in kneighbors\n",
      "    chunked_results = list(\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1717, in pairwise_distances_chunked\n",
      "    D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1889, in pairwise_distances\n",
      "    return _parallel_pairwise(X, Y, func, n_jobs, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 1430, in _parallel_pairwise\n",
      "    return func(X, Y, **kwds)\n",
      "  File \"/Users/julia/opt/anaconda3/lib/python3.9/site-packages/sklearn/metrics/pairwise.py\", line 788, in haversine_distances\n",
      "    return DistanceMetric.get_metric(\"haversine\").pairwise(X, Y)\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 406, in sklearn.metrics._dist_metrics.DistanceMetric.pairwise\n",
      "  File \"sklearn/metrics/_dist_metrics.pyx\", line 1016, in sklearn.metrics._dist_metrics.HaversineDistance._validate_data\n",
      "ValueError: Haversine distance only valid in 2 dimensions\n",
      "\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KNeighborsClassifier best recall_score: 0.916304, using: {'leaf_size': 10, 'metric': 'cosine', 'n_neighbors': 2, 'weights': 'distance'}\n"
     ]
    }
   ],
   "source": [
    "knc = KNeighborsClassifier()\n",
    "\n",
    "params_grid = {\"n_neighbors\": np.arange(2, 9),\n",
    "                            \"weights\": [\"uniform\", \"distance\"],\n",
    "                            \"metric\": [\"cosine\", \"euclidean\", \"haversine\", \"manhattan\", \"minkowski\"],\n",
    "                            \"leaf_size\": np.arange(10, 51, 10)}\n",
    "\n",
    "model9 = optimize_params(knc, params_grid, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train, X_test, y_train, y_test, model9)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import ExtraTreesClassifier\n",
    "from sklearn.neural_network import MLPClassifier\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.base import BaseEstimator, TransformerMixin"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "class MLPTransformer(BaseEstimator, TransformerMixin):\n",
    "    def __init__(self, **params):\n",
    "        self.mlp = MLPClassifier(**params)\n",
    "    \n",
    "    def fit(self, X, y=None):\n",
    "        self.mlp.fit(X, y)\n",
    "        return self\n",
    "    \n",
    "    def transform(self, X):\n",
    "        return self.mlp.predict_proba(X)\n",
    "    \n",
    "class CustomClassifierTransformer(BaseEstimator, TransformerMixin):\n",
    "    def __init__(self, classifier):\n",
    "        self.classifier = classifier\n",
    "    \n",
    "    def fit(self, X, y=None):\n",
    "        self.classifier.fit(X, y)\n",
    "        return self\n",
    "    \n",
    "    def transform(self, X):\n",
    "        return self.classifier.predict_proba(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "mlp = MLPTransformer(alpha=0.001, learning_rate_init=0.001, random_state=42)\n",
    "\n",
    "extra_trees = CustomClassifierTransformer(ExtraTreesClassifier(\n",
    "    bootstrap=False,\n",
    "    criterion='gini',\n",
    "    max_features=0.6,\n",
    "    min_samples_leaf=12,\n",
    "    min_samples_split=3,\n",
    "    n_estimators=100,\n",
    "    random_state=42)\n",
    ")\n",
    "\n",
    "gaussianNB = GaussianNB()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('mlp', MLPTransformer()),\n",
       "                ('extra_trees',\n",
       "                 CustomClassifierTransformer(classifier=ExtraTreesClassifier(max_features=0.6,\n",
       "                                                                             min_samples_leaf=12,\n",
       "                                                                             min_samples_split=3,\n",
       "                                                                             random_state=42))),\n",
       "                ('gaussian_nb', GaussianNB())])"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline = Pipeline([\n",
    "    ('mlp', mlp),\n",
    "    ('extra_trees', extra_trees),\n",
    "    ('gaussian_nb', gaussianNB)\n",
    "])\n",
    "\n",
    "pipeline.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_scores(X_train, X_test, y_train, y_test, pipeline)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model comparison"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "def compare_models(models, X_train, X_test, y_train, y_test):\n",
    "    cross_val_scores = []\n",
    "    model_names = []\n",
    "    recall_scores = []\n",
    "    \n",
    "    skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)\n",
    "    for model in models:\n",
    "        if model.__class__.__name__ == \"XGBClassifier\":\n",
    "            \n",
    "            X_train_xg, X_test_xg = X_train.copy(), X_test.copy() \n",
    "            X_train_xg.columns = [str(col).replace('[', '').replace(']', '').replace('<', '').replace('>', '') for col in X_train.columns]\n",
    "            X_test_xg.columns = [str(col).replace('[', '').replace(']', '').replace('<', '').replace('>', '') for col in X_test.columns]\n",
    "            \n",
    "            cross_val_scores.append(cross_val_score(model, X_train_xg, y_train, cv=skf, scoring=\"recall\"))\n",
    "            y_predict = model.predict(X_test_xg)\n",
    "        else:\n",
    "            cross_val_scores.append(cross_val_score(model, X_train, y_train, cv=skf, scoring=\"recall\"))\n",
    "            y_predict = model.predict(X_test)\n",
    "            \n",
    "    \n",
    "        model_names.append(model.__class__.__name__)\n",
    "        recall_scores.append(recall_score(y_test, y_predict))\n",
    "        \n",
    "        \n",
    "    sns.boxplot(data=cross_val_scores)\n",
    "    plt.title(\"Cross validation recall scores comparision\")\n",
    "    plt.xticks(np.arange(0, len(model_names), 1), model_names, rotation=60)\n",
    "    \n",
    "    \n",
    "    plt.figure(figsize=(8, 5))\n",
    "    ax = sns.barplot(x= model_names, y=recall_scores, color='palegreen')\n",
    "    plt.title('Recall scores on test dataset comparision')\n",
    "    plt.xticks(rotation=60)\n",
    "    \n",
    "    for i, score in enumerate(recall_scores):\n",
    "        ax.text(i, score, f'{score:.2f}', ha='center', va='bottom')\n",
    "        \n",
    "    plt.show()  \n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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ZMSIEdOuu+CCC+jSpQtrrrkme+yxBz/++GMlmy71YI7B2MyutdjsesQsrjczu9hio+tXzWyd+m+mVIoOCCKVN2XKFA4//HAGDx7MyJEjueWWWxg5cuQMtznzzDPp3r07r776KjfeeCMDBgwA4KOPPuLiiy9m2LBhjBgxgilTpjBo0KAcT0PqoDY94+uBvrO5fitglfRzKLE3rDRAOiCI5PH888+z8sor06lTJ5o3b87uu+/OPffcM8NtRo4cyWabbQbA6quvzgcffMCnn8ZOj5MnT+aHH35g8uTJTJgwgeWWm9kun1LN5hiM3f1xooD8rGwP3OjhWWLP2mXrq4FSOTogVM68jkC8+eabdO/efdpPq1atuPDCCyvc+oahIb3GH330Ee3bT9uZkXbt2vHRRzPuiLjWWmtx1113AfFd/fDDDxkzZgzLL788Rx99NB06dGDZZZdlscUWo0+fPmVtb0NWtZ8Ld5/jD7GH6YhZXHc/sGHh76FAj1nc9lBi95RhHTp08Lk1ePBgX3XVVX2llVbys84662fXf/nll77DDjt4165dfb311vPXXntt2nXjx4/3nXfe2VdbbTVfffXV/emnn57rx2/sbr/9dj/ooIOm/X3jjTf64YcfPsNtjj/+eP/DH/7g7u7PPfecN2nSxIcNG+bu7hdeeKEvssgi3qZNG99zzz0r1/AGZvLkyd6pUyd/9913/aeffvJu3br566+/PsNtjj76aD/llFPc3X3UqFG+6aabzvR+ll56af/ggw8q0u6GpKG9xrfddtvPvntHHHHEDLf5+uuvff/99/e11lrL9957b+/Ro4cPHz7cv/zyS99kk038s88+84kTJ/r222/vN910U1nb21BVw+cCGOYziY/1kcA1s83iZ1pj092vdPce7t6jbdufLbOarboMoQIMGDCAvn378sYbb/DKK6+wxhpr1HyI+Z7PpDSq2Yxv73HHHcf48ePp3r07l1xyCWuvvTZNmzZl/Pjx3HPPPbz//vuMHTuW77//nptvrsuWsY1XXUcgSoYOHcpKK63ECiusgMyoob3G7dq1Y/To0dP+HjNmzM9Gllq1asV1113H8OHDufHGGxk3bhwdO3bkkUceoWPHjrRt25ZmzZqx00478fTTT5e1vQ1VNX8u6iMYjwHaF/5uR+xHWq/q8iJ+8803PP744xx00EEANG/enNatW9d3Exs8HRAqoy5DkkWDBg1ijz32KH+DG6CG9hqvt956vP3227z//vtMnDiRQYMGsd12281wm6+++oqJEycCcPXVV7PxxhvTqlUrOnTowLPPPsuECRNwd4YOHarOxixU8+eiPoLxvcC+Kat6feBrd/+4Hu53BnV5Ed977z3atm3LAQccwNprr83BBx/M999/X99NbPB0QKiMuoxAlEycOJF7772XX//612Vvb0PU0F7jpk2bcumll7LllluyxhprsOuuu9KlSxcGDhzIwIEDARg1ahRdunRh9dVXZ/DgwVx00UUA9OrVi1122YV11lmHrl27MnXqVA499NCyt7khqubPxRwrcJnZLUBvoI2ZjQFOBpoBuPtA4EGgH/AOMAE4oF5bmNT2RRwwYADdu3ena9eu017ESZMm8dJLL3HJJZfQq1cvBgwYwNlnn81pp51WjqY2WMUDwpQpUzjwwAOnHRAA+vfvz6hRo9h3331p0qQJnTt35pprrgFmPCA0bdqUtddeWweEWZibEQiIz37Hjh3p2LHjtOsHDx7MOuusw9JLL12ZRjcwDfE17tevH/369Zvhsv79+0/7fYMNNuDtt9+e6f899dRTOfXUU8vavsagqj8XM5tIrsTPuuuuO1eT3k8//bT36dNn2t9nnnmmn3nmmbO8/dSpU32FFVbwr7/+2j/++GNfYYUVpl33+OOPe79+/ebq8UXqy6RJk7xjx47+3nvvTUsiGTFixAy3GT9+vP/000/u7n7llVf6PvvsM8P1u+22m1977bUVa3NDo9dYZqYaPhfMIoErW23quVUcQl1++eUZNGgQ//rXv2a4zVdffcXCCy9M8+bNZxhCbdWqFe3bt+fNN99ktdVWY+jQoXTu3DnTM8nrn1/9M3cTZrBX671yN6Hi6jICATBhwgQefvhhrrjiilxPoepV42us715+1fi5KDGfyfBvJfTo0cPndqOIBx98kCOPPHLai3jCCSfM8CI+88wzP3sRF198cQCGDx/OwQcfzMSJE+nUqRPXXXfdtOvmJzogiOSh754AmNmL7t7jZ5c3pGAsdacDQvk1xtd4yJAhDBgwgClTpnDwwQdz3HHHzXD9+PHjOfDAA3n33XdZcMEFufbaa1lzzTWnXT9lyhR69OjB8ssvz/3331/n9kB1vc61eY2rqb2g714lzOw1nlUw1kYRIjJbdV3j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",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "models = [model1, model2, model3, model4, model5, model6, model7, model8, model9, pipeline]\n",
    "compare_models(models, X_train, X_test, y_train, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import metrics \n",
    "def roc_curve_plot(models, X_val, y_val):\n",
    "    plt.figure(0).clf()\n",
    "    plt.figure(figsize=(8, 8))\n",
    "    plt.title(\"ROC Curve for Different Models\")\n",
    "    for model in models:\n",
    "        if model.__class__.__name__ == 'SVC':\n",
    "            y_pred = model.decision_function(X_val)\n",
    "        elif model.__class__.__name__ == 'XGBClassifier':\n",
    "            X_val_xg = X_val.copy()\n",
    "            X_val_xg.columns = [str(col).replace('[', '').replace(']', '').replace('<', '').replace('>', '') for col in X_val.columns]\n",
    "            y_pred = model.predict_proba(X_val_xg)[:, 1]\n",
    "        else:\n",
    "            y_pred = model.predict_proba(X_val)[:, 1]\n",
    "        fpr, tpr, _ = metrics.roc_curve(y_val, y_pred)\n",
    "        auc = round(metrics.roc_auc_score(y_val, y_pred), 4)\n",
    "        model_name = model.__class__.__name__  \n",
    "        plt.plot(fpr, tpr, label=f\"{model_name}, AUC={auc}\")\n",
    "    plt.legend(framealpha=0.0)\n",
    "    plt.savefig('plot.png', transparent=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeMAAAHiCAYAAADbK6SdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAACo30lEQVR4nOzdd3hU1fbw8e+emfRQQpXea0ISepEqUkRBBWkWmqgIWH+iovfarvda36tX6SBF0ICAgAUVAcUuNUCooYQaOoT0ZGb2+8ckQ3oCJDnJyfo8T0jmzJlz1kzCrNnl7KW01gghhBDCOBajAxBCCCHKOknGQgghhMEkGQshhBAGk2QshBBCGEySsRBCCGEwScZCCCGEwSQZC1HCKKV8lFJfK6VilFLLi/G8cUqphrnFoJR6Uyl1QSl1prhiMppSaqFS6s0C7hullLq9qGMS5iTJWBgq7Q0sMS0RnEl78/PPsk8XpdRGpVRsWnL4WinVMss+5ZVSHyqljqcd61Da7Sq5nFcppZ5USkUopeKVUieVUsuVUq2K8vkW0H1AdaCy1nrozR5MKdVTKeVMe13i0p7rF0qp9hn301r7a62P5BSDUqoO8H9AS631LTcb0/VSSmmlVOM87h+Tts9/s2y/J237wiIPUoibIMlYlAQDtdb+QCjQGpiafodSqjOwDlgD1AQaADuB3zO04jyBDUAg0B8oD3QBLgIdcjnn/4CngCeBSkBTYDVw5/UGr5SyXe9j8lEPOKi1thdiLKfTXuNyQCdgP/CrUqp3AWOoB1zUWp+7gZiUUqo43msOA8OzvAajgIPFcG4hbo7WWr7ky7AvIAq4PcPtd4FvM9z+FZiRw+O+Az5N+3k8cBbwL+A5mwAOoEMe+/wMjM9wewzwW4bbGpgERAJHgVnA+1mOsQZ4Nu3nmsBK4Hza/k/mct7XgRQgFYgDHsb1ofkfwDHgHPApUCFt//ppsTwMHAd+yeGYPYGTOWyfBmzN8pwa5xDDY0Ai4Ey7vTBt/07AH8AVXB+QemZ5/f4N/J722MZAc+BH4BJwABiWYf+FwHTgWyAW+BtolHbfL2mxxaedf3gOz2UM8BvwPXBn2rZKwBngvfSY07YPAvakxf0z0CLDfa2B7WkxLAOWAm9muP8uIDztsX8AwTn9LeP6ELgVuIrrb/O/Rv9fk6+S/WV4APJVtr+yvIHVBnYD/0u77YsrafbK4XFjgei0n5cCi67jnBOAY/ns8zP5J+Mf097wfYDuwAlApd0fkJaEauJKptuAVwBPoCFwBOiXy7lfA5ZkuD0OOJT2OH/gS2Bx2n3102L5FPADfHI4Xk9yTsa34UqwfhmeU+NcYsh0DKAWrp6HAWnPr0/a7aoZXr/juHorbECFtNdnbNrtNsAFIDBt/4W4knSHtPs/A5Zmeb0b5/H7GoMrGd8PLEvbNhGYDbzJtQ8QTXEl9T6AB/B82mvrmfZ1DHgm7b77cH0geTPtsW1wfRjqCFiB0bj+fr1y+Fv+E3go7Wd/oJPR/9fkq2R/STe1KAlWK6Vicb1ZnwNeTdteCdcbfXQOj4kG0seDK+eyT26ud//cvKW1vqS1TsTVgtdAt7T77gP+1FqfBtrjSlJvaK1TtGtcdi4wooDneQBXy+qI1joOVzf+iCzdsa9prePTYimo04ACKl7HY9I9CKzVWq/VWju11j/iagkOyLDPQq31Hu3q6u4PRGmtF2it7Vrr7bh6Cu7LsP+XWuvNaft/hmvY4nqtAnoqpSrg6qL+NMv9w3H1vPyotU4F3sf1YaoLrpa+B/Ch1jpVa70C2JLhsY8As7XWf2utHVrrRUBy2uOySgUaK6WqaK3jtNZ/3cBzEWWIJGNREtyjtS6Hq/XVnGtJ9jKulluNHB5TA1fLClwtspz2yc317p+bE+k/aK01rhb6yLRN9+NKKOAab62plLqS/gW8hGuCVEHUxNViS3cMV+sx4+NPcP1q4foAceUGHlsPGJrlOXUl8+t6Isv+HbPs/wCQcTJYxlnaCbhalNcl7cPIt7i69atorX/Pskum11Jr7UyLs1bafafSfpfpMr7u9YD/y/Ic6qQ9LquHcbXC9yultiil7rre5yLKFknGosTQWm/C1V35ftrteFzdfTnNKB6Ga9IWwHqgn1LKr4Cn2gDUVkq1y2OfeFzd5OlymkGcteRZGHCfUqoerq7MlWnbTwBHtdYVM3yV01oPoGBO40oE6eoCdlxjkbnFUhD3AtvTXufrdQJXV3nG5+SntX47l5hOAJuy7O+vtX78Bs6dn09xzfxenMN9mV5LpZTClVBP4eotqZW2LV3dDD+fAP6d5Tn4aq3Dsp5Eax2ptR4JVAPeAVZcx9+nKIMkGYuS5kOgj1IqNO32i8DotMuQyimlAtKu++yMa6IRuN50TwArlVLNlVIWpVRlpdRLSqlsCU9rHQnMAMLSLvvxVEp5K6VGKKVeTNstHBislPJNu6Tm4fwC11rvwDVBax7wg9b6Stpdm4GrSqkX0q7ftSqlgrJeWpSHMOAZpVSDtMu+/oNrXPRGZlsrpVQtpdSruCa+vXS9x0izBBiolOqX9ny8017L2rns/w3QVCn1kFLKI+2rvVKqRQHPdxbXmHlBbMI1JvxxDvd9AdyplOqtlPLAlbSTcU3G+hPXh5wnlVI2pdRgMs/GnwtMUEp1THsd/ZRSdyqlymU9iVLqQaVU1bSW95W0zY4Cxi/KIEnGokTRWp/H1bL5Z9rt34B+wGBcLZdjuGa8dk1Lqmitk4HbcV2u8yOuGaybcXV3/53LqZ7ENZt4Oq43y8O4Wopfp93/Aa4ZxWeBRVzrcs5PWFosn2d4Tg5gIK4x0KO4utfn4ZrUVBDzcX3g+CXt8UnAEwV8bLqaSqk4XLORtwCtcM1+XnedxwFAa30CuBtXMj+P68PQFHJ5T9FaxwJ9cY2Tn8bVJf0O4FXAU74GLErrHh6WT2xaa71Ba30ph/sO4Brv/hjX72EgrkvrUrTWKbj+zsbgGiIZjmuyXPpjt+IaN56Wdv+htH1z0h/Yk/aa/w8YobVOKuBzFWVQ+sxPIYQQQhhEWsZCCCGEwSQZCyGEEAaTZCyEEEIYTJKxEEIIYTBJxkIIIYTBCrvaTIFVqVJF169f36jTCyGEEMVu27ZtF7TWVbNuNywZ169fn61btxp1eiGEEKLYKaWO5bRduqmFEEIIg0kyFkIIIQwmyVgIIYQwmCRjIYQQwmCSjIUQQgiDSTIWQgghDCbJWAghhDCYJGMhhBDCYJKMhRBCCINJMhZCCCEMJslYCCGEMJgkYyGEEMJgkoyFEEIIg0kyFkIIIQyWbzJWSs1XSp1TSkXkcr9SSn2klDqklNqllGpT+GEKIYQQ5lWQlvFCoH8e998BNEn7ehSYefNhCSGEEGWHLb8dtNa/KKXq57HL3cCnWmsN/KWUqqiUqqG1ji6sIMXNS3E6SXQ4jQ5DiCKlNTjjYo0OQ5R2WpOcdIW4xNM0qNcRm4dHkZ8y32RcALWAExlun0zbJsk4iyupdk4npxb5eZKdmqOJyRyMT+JAfBIH45M4mpiMpGIhhLge/mzx3EuduiFFfqbCSMYqh206xx2VehRXVzZ169YthFOXTLtjE4jOknRPJKXwztFortqLLyUqp6ZSYgJV4hPolJCAX4orpvRfToIlEQBfp0+hndOa9tfgyPEvIC0unCAfDcwj/Xed0ztBcZ07IyPiEDdFWRwo5XB9tziwWOwoixNlsafddqCs1/axWK7te+0xru8FoZ1WtNOC02lL+9n15Uz/WVvRDivKYcU3eHARP3uXwkjGJ4E6GW7XBk7ntKPWeg4wB6Bdu3Z5vF2XDFu3bmX37t357ncuNpkLccnEe3qxt2Zt9teoneN+lWOv0v30iUzvFbbUJCz2pGz7eilPPJVHtveVWGsyAOUcXliV69fn0PZM+yjtSsKVEhKw6iwvs1JYMhy0rjOAhs5y+T7H63HeeoqzthO53n9yr2suYO2WQYV6XmGcFrf2JPj2vKaW3LiU48eJ++039+3Lny4mJSoKgAr33IP/bb0AUDYP/Dp1xOLrWyRxlFpagz0JUhMhNSGX7wW/LzU1gbjUeOIcScSRRAIpxJNKktVBss1Css1CqlVhtyocNoXTqlBWBRawWMFqUdgs4GnReFnAU5HpPSk3dg0pTkWqtmDHilNbceIByhNl8cZi8cFq9cPDVg4Pj/J4eVbC26syPt7V8POpip9XFcp5VcXPqzI2q2fRv+7XqTCS8VfAZKXUUqAjEGOG8eKtW7fyzTffAOBnrZzjPqkOJ1e9fDhwSw0op/mzfn0AqsXG0v/APqzOa60/i9ZUi4/DkjU5pt9Wmf8aPSyuVmyqM8V9f/ofrCuBVgTySXwF+O0mWC8SwaH8dyxEtVsGFembtyidHHFxXFq4CJ2c+cPpxbnzcty//ooVeDdriiqG8bwioTU4Um8qMea4LUvi1akJJCtFnFLEWy3EelhIsLm+Ej0sJNsUKVYLKTZXAnXaLDgtgM2CsiosNrB6gs2i8bSAp9J4W671grm6IjyxAr5pX+mcGlK0IlVbsWPDqTxwKi+weJNq9cVh9SfF5o/N5o+nrTxeHhXx8qiAj2cA/l5V8PWqTDnvqvh6BmC1ehfzL6h45ft2rZQKA3oCVZRSJ4FXAQ8ArfUsYC0wADgEJABjiyrYwhb3dzQJ4ef569JBDiefdG+3OOGCNYa/GrXC21oFX53256VTQWfuBtlU29Wq9EibHNXschL//f0cVnJK4NVyjMNq88PqmaV1quGSl42AHrUJ7Fbrxp6gECWQIyaGc++/jzMhMdP2uF9/xXn1KgDKM3PLxa9LF2q+9677tsXPD4t3Eb45O+xgL2DyK3CyTGKmNZ6jygFOBzjt5DKil43NkvaV3rK0WbFZLdisCpvNgs1LoSyARaMsGovFiVV5YFNWPCx+eCtXK9QjSwvUM+0rq2RtIVVbcSgPHMoDrbxAeaOtvqRafdFWP2y2cnh6lMfLVgFvzwB8PAPw9aqMv1cV/L2r4O1REYvFG6Vk3KAglM7aUism7dq101u3bi2y46d3MTuApVXrcwUbDrsTrV3Xc1m41hhNwdXN66FtuP5zaFKtVs6WK4+Hw0nVxPRu4OyDY1opmly9zJDIjdLaE6bjTE7m3LvvkbR3b6EdM3HHDvfPnvXquX/WWmOtWJG6n8zDWi6XoROns1C7XElNTDtelm2OlOt/YsoKnn7g4YP28Mbh5YPd0wuHpxd2Tw/sNitP2A8RYLEQYLXh4U6QGi+LxtOiXT8rjafFiafSeConHqpg79GpWpGKDQc2HMrTlUAt3iiLLxarD1abPx628njayuHpUQEfjwB8vALw9UxPoJXxsJXHavVFKVkPqqgopbZprdtl3V4Y3dQlSnoSPnbsGBqIrtqUCL8AAOpcvIQT16dDC64pRE7txEPbsTicWJ1JOB2uT+veXr7UTrjE/Qc3Y9PXuptzT7h9i/qpCVFstNY4Ll7k5KTJJO7ciW+HDiibNe2+3B7kBO0gMuYIV1Nis8+jSn9gAxtJXvDZXT4keV0CtOuxaNDn4Mturn21TtuW5fsNUWmfvi2u70q5tnmmfSkL4IfN4o+nBbwUaQkybWxTpX/XafenJ0zwUk7XbeXEUznxUk48VTxKxWeL4uGsUSlPbDZ/bFZ/rDa/tO/+2Kx+ru82f6xW/7R90rZl2NdmK4fV6ofV6ofFYrq38zLFNL+9jEkYoFyl2iyqH8S5cq6urI9+j6PKVQvVqvlS8UIyng0qcKbRaX6cOw3IPJkoc8K9pzifhhCFz2G/rtZj9IL1XPn1AADKw0Kt+5tTvqmd1JSrbLFf4THrhQKd9t7YuDzvb5MUB8lW16weiy3tywoWjxy22bJsS79tRVksWNO6ca0WjU1prMqJVWlsFgdWnFhJxUYqVp3q+jnt+7Wf7dhIRRUg2WsUdjxwYMOuPHDg+rIrD+Lx4KrycN/vcP/s6u51Kk8GNRlOg4AW2Gx+WCxeBXothfmZJhnv3r2bk8dP4JGcSqpD8V6Pa70Ak3ado+6lq1gUqEs2Yixw/uQutm38DoA+j0yW7mVxc+IvwIWDhXMsnbErNhGdFEfSwSh0ciI4ksGe7Lrfnvaze1typm0OezJHlB2nvo7LyDR4/1oBgJS2qTgaWYmsdBiuePOydzKnrK5jdbOUp5VHBVfitHq4kqPVw317QOVQ6pWrDR4+4OGb7bvT5oEDBw6dhN0ei8MRj90eh90Rh8Mej90Rh90ehyP9uz0OuyM+7XscDvsl9z5a59KlrAH3FA+F1eqHzcPf9d0WkEtrtFyWlmf6/v5p9/nJOKgoEqZJxgCWpGScpyOZM+pFANpftNP7t9+5nHiA74Aq/l5U87r2SVRm9Zqc03GtFeiejJPxdtpY4fUkq6y0Ew7/BHu+vLFxxgK4EOHPhYjy1/koC+CT4+ScglgfqpjTN/36cw0konB11/6nyyt0qh6K1okZkmN68nQl1URHNHvsh7AnxGVKtq7kGo/TmZjX6a89C4sPNpufu6vWavXD27tWHgnTP0NyzZBsZRxUlHCmScaXTp/DaU9izZ0P47RYqJDi5Kk9iZwbeS9PdzTvAiOlTkETZIaWYe77Zt0/Ie122v1FlByz8fSHtmOgaT9XC7EAkqJOEbclwnXtRzYKrNdamhciPgWg9scfYvErl+0yuJzEpcTx4q9TaRzQiD71bkOTjFYpkPZdq2Q0yaBS0u5LBlLc9wX52/hIJ6GdieBMTPueDGg4PpUtx3M/d07joJ6eVfH1qZ/DOGhOSVXGQUXZY5q/9KS4q0RVq8XJqtUB+HZTPLfc3Rj/jjUMjqwUSF8UIOkqJMdCctbvsWn3XYWUeLJNonHaXUmwKBOk1RNsPmndnN6uLk+bt+u2b6W0n32z3Jf1ts+1L1uGn2/yDV97VyHpyAkS/9hO8tGjecxwcrGfOUvczz/nfUyrxukN2ht0LY1XlzYkt/bE7riYoTWasTs3PlML9LIzmns7xuJn3U4s+V+1oJTVlSDdE4e8sForYcvSbZu5W/fa92utVxkHFeJGmCYZA2xvFAzAC3uTSKrkVXYTceIVuHIMLh+79v3qKVfS1NqVUN3JNi3hOu35Hhabt+vSjazdfcpybUywsBJktoRpLZKX6npprTn71lukpE0UdMbFk7RnDzopCW3RWKqWx+lnxenlRHtpnF4a7eVM+65d2+tY8PhXU6yNauJUya7E6ojPNCaqddY1zDdzctfmLNvUte7ZtERos/qDV3l2nz9GFb9GBNbtK+OgQpQCpkjGe349hdOhcSpoeSGVoSdSqXhvY6PDKjpOB1w8BKfDIXqn6yvxkmv8MjYakmIy7+9VHirUAVvaCKKnP1SsA17lXPd5lXN9eZfPcDvD9vSfbTc6Allyae3E4Ui4Nu6ZnhDTxjdT7XEkRx8h4cAuki+exGlNxeETh7M1UNEH7eVEP6RweoBTpQIX8z2naxz0DNbkuGvjoJ61C20c9L0t7/HZpa2s7jabBhUaFP6LJoQodKZIxgc3nwVclxwAXKniRW0ztIq1hstH4fwBOL8/8/fUBNc+Nm+4pRVUaugaS6zfFSrWg4B61757VyzQOGNpobXG6UzKNNs2Y7ftte+xWWbgxmNPjSX5wgnsyTGuVqonBavqXR2slT2w2D2wOMrhXbUuHuWq5nI9aG7joK4EWpTjoOcSzrHswDLuaniXJGIhShFTJGMALK6RTA+Lolo5E4xZXYiEVRPgVIbxvnI1oWozaDMaaoS4vqo0dU32KQWczmTs9nj3jNprrdG4vMdBs17W4ohH6/yrs2QbB7X6kxJ+ABWTil9ADTx8ArA4PLA6PLA4PF0/OzP8nLbdu05TKt5xF9YKFYrhVbo583bPw+F0MCFkgtGhCCGuQ+l4F8/HxZQoHN6e2JQNnxJfCyofTidsngPrX3WNlfZ/G2q1dSVh7+JPBk6nHYcj3p0YM7c8XUnSdR1oDq1QR+bLXXK9HjSTnMdBPb2qZUiqOV8PSoIT+4HjWPHGgjcW7YlyKNe1pikQ/8efXF4cgU/r9tT7bAnKYq5LXaLjollxcAV3N76bOuXq5P8AIUSJYYpkfNl+CgAvPLB52/ANrWpwRDfoynFYPRGifoUmfWHQx1Dulus+TH7joNm7ddOTaqy71Xpj14NmGOcs5utBE3ft4tgDD6JTs058yhQkFUeOoPpzz5kuEQPM2T0HgMeCHzM4EiHE9TJFMk51OKlk98WmLXjVKY9/SCkbL9YavX0xzh9fwm7VOAa8ir15H+z2ozjOR2RJqrG5tjwzLqxQEDlfD1oNX5+SNQ6aVdKBg1z95hsyXmKVXmbPWqUKdWbOzPFxtsqV8KhZszhCLHYnYk+wOnI1Q5sNpYZ/Kfv7F0KYJxkDoFSxz1PKPA6asRWads1njgkzwzhoagz2pAs4lB3dIW2sO246bJ2e4/myXw/qj81WPlsrNNNi85muB01PpKXvetCU48e5MH0GMWvWANnL7AU89BDVn59Seuvb3oTZO2djtVh5pNUjRocihLgBpkjGkFbUUJG9UkwO0sdB3d22Wbtzi2sc1OmJ7fQBrCmp2Op2w1q3GzZb+WzdvXI9KMT+/DMnJzwOVisedevi16kTNd543eiwSoSomCi+PvI1D7Z4kKq+pXSIRogyzjTJOF1uaSpiz9NcuvQ7DkcCTmdSgY6VdRzUZvXP0AJ1tTxveBw0NRFmdYVUH3joO9cELZGruE2bAKj27DNUfjhrIbqybebOmXhZvRgXNM7oUIQQN8hUyVjn0E3tdNrZET6KK1f+BqBu3fGFOw6qNVw6AomXIe4KJJ52/Zx0xfU9Mf17lm2OZNfjR62RRJyB4+pVnHHXxrydSUkcHz0G+/nzWKtWkUScxaHLh/ju6HeMCxpHZZ/KRocjhLhB5krGZG4ZOxyJbNk6mPh4V2m7zp3W4+tbyAsh/Po+bHwz5/s8y4FPRdeXd0XXNcE+Aa7bNh/XYh0NexZuPKVU6rlzJGzeQvQ//oFOyt5zETDqIfw6dTIgspJtxs4Z+Hr4MiZwjNGhCCFuggmT8bV0fOTIB+5E3KXzz/j4FPK1lynxsO9r18/3L09LvAGuxOtT0VV1R+Qr5eRJjt59D874eDxq1qTKxMczrRhmDQig3G23GRhhybT/0n5+PPYjE0ImUNG7otHhCCFugjmSsSMelCvxpb+FJyef4/iJTwDoeuufeHlVK+RzpsLysXBmNwxfAk37Fu7xy4jE3REcHzMGZ3w8tWdMx7dNG6wVKxodVqkwfcd0ynmW46GWDxkdihDiJpkiGStHAtgqoKxWd4MqOnoFABUqtC2aRPzVExD5A9z1AbQYWLjHNzlnfDxXVqwg+ehR4n76GWd8PJ6NG0nr9zrsPr+bn0/+zBOtn6C8Z3mjwxFC3CRTJGPAdY2x9VqZPWfa2sVtWn9euOeJvwjLR7tWyer1MrSTGazXI+6XXzj9wos4Ll/GWqkSWC3U+uC/lOvXz+jQSpXp4dOp6FWRB1o8YHQoQohCYJ5kzLUJXE6nnaNHPwS4oaUVcxW9C5Y+AHFn4Z5ZEDqy8I5dRsRu3IgzKYn6S8PwCQ01OpxSace5Hfx++neebfssfh5+RocjhCgEJkzGiosXNwLg5VWj8JLxqW2w8C7X5Kxx37mKN4hstNaZLk0CiPnyS85Pmw5a40xOxlqxgiTimzBtxzQqe1dmRPMRRocihCgk5krGyjUJd9fuxwEICZ5dOAdOugorxoFPJXhkI5SrXjjHNaGzb/6by599lm27Z4MG+HfvBoB3UKviDss0NkdvZvOZzbzQ/gV8bD5GhyOEKCSmSMY+Vm88LJ6ZrjP29W1AuXKBhXOCtc+5KiqNWSuJOE3C1q04srSAdWqqOxFXe/GFTPf59+iBVwMpdn8ztNZMC59GNd9qDG021OhwhBCFyBTJ2NviDYDysqIApWxUq9q/cA6+cxnsWgY9p0K9zoVzzFIs5dgxYtas4cKMnCsjKR8f6syehV+HDsUcmfn9cfoPdpzbwT86/gMva+kq8iGEyJspkjFAqjMF5W0tUKGIArt0BL59Fup2hm7PFeaRSyVnQgKH+7k+5FgrVqT2zBkoW+Y/IY8aNbBVqWJEeKamtWbajmnU9KvJ4CaDjQ5HCFHITJOMIW0CV2FVNHKkwsrxYLHC4LlgNdVLdUOurPwSAN/27akzZzYWHxmzLC6bTm4i4mIEr3d5HQ9Z2U0I0zFVhtG6YCUU83XlBKx/1TWDeugiqFjIy2iWQvaLF7kwYwbeIcHUW/yp0eGUKU7tZHr4dOqUq8PARrLAjBBmZK5kzE0m49Qk+PpJ2L0ClAV6vACB9xROcKXc2XfewRkXR803cymKIYrMhuMb2H9pP//p+h88LNIqFsKMTJeM7fZYtLbj1Pbre3BqEix7AA6thzajofuUMtkidsTF47wak2mbMymZ2O9/oOLw4Xg1aWJQZGWTw+lgRvgMGlRowIAGA4wORwhRREyWjDX21EsAlC8XdH0P3vgvOLQBBn4EbUcXQXQln3Y4OHz77TiuXMnx/vJ3SjIobj9E/cChK4d4r/t7WC3W/B8ghCiVzJWMNcTG7gLAz+86WnBOB+xeDs3vLLOJGACHA8eVK5Trczv+PXtmustasaKsmlXM7E47M3fOpElAE/rWl6pgQpiZqZIxgEXZ8PNrip9f04I/6NgfrvWmg4YUXWClgP3iRQB827Wj4pCy/VqUBN8e+Zaoq1F82PNDLIW5xroQosQxzf9wq0ciKfaraGcK5csFXd8lTntWgYcvNC3blYMSIyIA8GnTxuBIRKozlVk7Z9GiUgtuqyulJYUwO9Mk42qN/sZuT0DrVMqXDy34A+0prmTctD94lt0KOI6rVzn33vsob288atUyOpwyb82hNZyMO8nk1pML79p5IUSJZZpu6oCaBwCoWWMwtWtfxxrIh36ExEsQUjbLIWqnk5NPPknyvv2knjrFLa+9iq1SJaPDKtNSHCnM3jWb4CrBdKvVzehwhBDFwDQtY+1UoDywqOuccRr+OfhVhUZlqyvQmZiIIzaW+N//IG79Bjxq1KDyI+OpOHy40aGVeSsjV3Im/gyTWk+SVrEQZYRpWsZaW1AWT9T1LPuRcAkO/gAdHi1Ty11e/e47Tj3zrPu28vKizuxZWPzKbjd9SZFkT2Lurrm0qdaGzjWkMIkQZYXJMpDiuhoSESvBmQqhZaeLOnHnTncirvbCC6DAu2lTScQlxBcHvuB84nne7f6utIqFKENMlYyveznMnWFQPQhuKRvF7p0JCUQNHwFAteefp/LYMcYGJDJJSE3gk4hP6FSjE+1uaWd0OEKIYmS6ZFxg5w+6CkH0Neday6nnznFl6TJ0aqp729XvvwfAo15dKkkiLnHC9odxKekSk1tPNjoUIUQxM1Uy5npGjHctdRWDaDW0KAMqVvaLF7kwcxaOK1dI2rOHlKioTPWGdWoqFn9/GqxYIV2gJUxcShwL9iygW61uhFQNMTocIUQxM1UyLnA9Y6cTdi6DRr2h3C1FHldxSD13jqNDhuC8EoOtZg2UzYPa06dR7rayNUu8tFq8bzExyTFMaj3J6FCEEAYwXzIuyI5Hf4arJ6HP60UbUBFzJiaSsHUb8X/8waUFCwCoM2c2/t27GxyZuB4xyTEs3rOY2+rcRmDlQKPDEUIYwGTJuADd1FrDL++D/y2uwhClUMrJkxwdch/OGFepQ+XhgW/Hjng3b4Zvp04GRyeu16I9i4hNjWVi6ESjQxFCGMRcyVgXoGV8dBMc+x3ueA88fIojrEJ19Yd1nHrqKQDKDxhAhXvvxbddWyw+pe+5CLicdJnP9n1Gv/r9aFapmdHhCCEMYp5krFxzqfMcMtYafnoLyteCNqOKJ65ClHLiBKeeegqvJk2o+vRTlOvd2+iQxE1aELGAJEcSE0OkVSxEWWaa5TChAGPGu5fDib+g2/+Bh3cxRVV4jgy6GwDfzp0kEZvAhcQLhO0PY0CDATSs2NDocIQQBjJZMla5jxpfOQFrp0DtDtB2TLHGVRhSTp5EJyaivLyo/vzzRocjCsEnuz8h1ZnK4yGPGx2KEMJgJkvGubSMEy/DortAO+GemWC5zmISJcCVlSsBqD3t40zXDovS6Uz8Gb448AWDGg2ibvm6RocjhDCY+d7Vc8rGESvhchSM+RaqNC7uiG6a/cIFLs6chUedOvh3k5J6ZjBv9zycOHks5DGjQxFClACmaRkr8ri0ad83UKUp1Lu1mKMqHMfHPwKAT3CwwZGIwnA67jQrI1cyuPFgavnXMjocIUQJYKqWca7d1AkXoHLjfKZalzzO+HiS9u0jef9+AGq8+S+DIxKFYfau2Viw8EjwI0aHIoQoIUyYjEtXwk2nU1JI2LoVnZpKyrHjxP38M/FbtkBaoYeqTz8t1xKbwPGrx1lzaA0jmo/gFj9zLMUqhLh5pkrG6FLX+AVcifjExEnE//abe5tnw4ZUeughfFoFoby88e9aOrvYRWazds7Cw+LB+FbjjQ5FCFGCmCoZ5zpm7HRynZWOi1Xspk3uRFx3wXw86tTBs3Ztg6MShe1IzBG+Pfoto1qOoopPFaPDEUKUICZLxrmkXHtSiV3kI/nQIU49+38ANPnjd2yVKhkckSgqM8Nn4mX1YmzQWKNDEUKUMKaZTQ35JGNbyRxvjV2/HlJTKT9ggCRiEzt4+SDfR33Pgy0epJK3/J6FEJmZKhlDLvWMUxNLbMvYGZ8AQM133jY4ElGUZoTPwN/Dn9GBo40ORQhRApkqGec6ZmxPBlvJS8ZXVq3m4ty5+HbqhPLwMDocUUT2XtzLhuMbGNVyFBW8KhgdjhCiBDJRMtY5d1NrDfbEEpeME7ZtI3rqVDzr1aPW/3vf6HBEEZoePp3ynuV5sOWDRocihCihTJSMXS3jbByprjWpS1g3dczqNQDU/fRTbJUrGxyNKCo7z+/kl5O/MDZoLOU8yxkdjhCihDJVMoYcrjO2J7m+l7SW8ebN+N/eG4/q1YwORRSh6TumU8m7Evc3v9/oUIQQJZhpkrFO+56tbVzCkrHWmrNvvU3KsWN4NWxkdDiiCG07u40/o/9kXNA4fD18jQ5HCFGCmSgZu9JwtilcDtdyklhLxgSppIgILi1ahE+bNlSZPMnocEQR0Vozbcc0qvhUYVizYUaHI4Qo4UyTjNP7p3NfZ6tkrMCVEnUMcBV9sHh6GhyNKCp/n/mbrWe3Mr7VeHxK6DXuQoiSwzTJ2N1NXTJybv5KTaDieqW3im/xu4WhTYcaHY4QohQwUTLOr2VcMjhiYowOQRSx3079xs7zO3k0+FE8rdL7IYTIX4GSsVKqv1LqgFLqkFLqxRzur6CU+loptVMptUcpZcDiuyU7GScdOEDcpk2cffNNACzeJWNCmShcWmumhU+jln8t7ml8j9HhCCFKiXwLRSilrMB0oA9wEtiilPpKa703w26TgL1a64FKqarAAaXUZ1rrlCKJOgfXZlNnSceJl1zfDZpNnbhnD4nbtnP2P/9xb/Pt3AmPGjUMiUcUrY0nNrL34l7+deu/8LCUjEmDQoiSryBVmzoAh7TWRwCUUkuBu4GMyVgD5ZRrYWh/4BJgL+RY85TrmPHxv1zf63UpznDczvzzFZL2ul6qgAceoMI99+DdvJkhsYii5dROpodPp375+tzV8C6jwxFClCIFSca1gBMZbp8EOmbZZxrwFXAaKAcM11o7CyXCAsulmzrxiuu7f/XiDMZNp6bi16M7Nd9+G1tAgCExiOKx7tg6Ii9H8na3t7FZTFWdVAhRxAoyZpzTMKzOcrsfEA7UBEKBaUqp8tkOpNSjSqmtSqmt58+fv85Q85Y1ILfkGFf5RJtxE2ksnl6SiE3O4XQwM3wmjSo0on/9/kaHI4QoZQqSjE8CdTLcro2rBZzRWOBL7XIIOAo0z3ogrfUcrXU7rXW7qlWr3mjMOcp1NnVSDHgXb6Wc1NOnOTJwEIdu603y0aPFem5hjLVH13Ik5ggTQyditViNDkcIUcoUpC9tC9BEKdUAOAWMALIutHsc6A38qpSqDjQDjhRmoPlJr2OcrZ5xUgx4Z2ukF6mLCxeSfPQoFe68E5SiwqCBxXp+UbzsTjuzds6iWUAzbq93u9HhCCFKoXyTsdbarpSaDPwAWIH5Wus9SqkJaffPAv4FLFRK7cbVOH1Ba32hCOPOHmfa9+wt46vF2jJ2xMRwZcVKKtw5gJrvvF1s5xXG+frw1xyPPc5HvT7Cokxz6b4QohgVaJaJ1notsDbLtlkZfj4N9C3c0K5Pnt3UvpWKLY7LYWHohAQCHpTatWVBqiOVWTtnEVQ5iJ51ehodjhCilDLRx/g8krFX8XVTx67fAIBngwbFdk5hnFWHVnE6/jSTWk/KPkQihBAFZJrrL3K9zji5eLqpk48c5fJnn5Fy7Bj+vXtj9fcv8nMKYyU7kpm9azahVUO5teatRocjhCjFzN0y1rrYZlNfmDmTy0uXojw9qTBQJmyVBSsOruBcwjkmt54srWIhxE0xUcs4h3rGSVfAkQJ+VYr03EkHDnL166+pMGQwNf/97yI9lygZEu2JzN01l/a3tKdjjaxr4AghxPUxTcs4x27qK2kLh1WsW6TnToqIAKB8v35Feh5Rcizbv4yLSReZHDrZ6FCEECZgmmSc40JhV467vleok/2+QuSIvQqAV5MmRXoeUTLEp8YzP2I+XWp2oU31NkaHI4QwAZMkY53zpU0xRd8y1qmpXP7sc7xatsB2yy1Fdh5Rcny+73MuJ1+WVrEQotCYJBnnsujHlePg4Qu+lYvsvAk7dpB64gRVHn1UJvGUAbEpsSzcs5AetXvQqmoro8MRQpiEaZKxezZ1xoR45biri7oIk6ROSQXAVs2YqlCieC3eu5irKVeZFDrJ6FCEECZimmScazd1EU/ecqaNF1t8vIv0PMJ4MckxLN67mNvr3k6Lyi2MDkcIYSImSsYu2bqpKxbt5K2LCxcC4Fm/fpGeRxhv4Z6FxKfGMzF0otGhCCFMxjTJONuiH8mxkHi5yFvGjvMXwGbD4uNTpOcRxrqUdInP9n1G//r9aRIgs+aFEIXLNMnY3U2dno3TrzEu4suanElJVLhzQJGeQxhv/u75JDuSeTz0caNDEUKYkIlW4HJxr8BVxJc1OePjuTBnLo5Ll8DDo0jOIUqG8wnnWXpgKXc1vIsGFaQAiBCi8JkmGWfrpk5f8KOIkvHZt9/hyvLllLujP1UnycxaM5u3ex52p50JwROMDkUIYVKmScbZZlNfOQ5WT/CrViTns1+4gPLyotZ//yvXF5vYmfgzLD+4nHsa30Od8kU75CGEKLtMkoyvrcDlzsYxJ1zjxZbCHRaP++134jZuJDE8HP+ePSURm9ycXXPQaB4NftToUIQQJmaSZHxNppZxEVzWdHHePBK2bMFaoQLlbutV6McXJcfJ2JOsilzFkKZDqOlf0+hwhBAmZppknL2b+gQ061+o54j5+msS/voLn3Ztqb9kSaEeW5Q8s3fNxmqxSqtYCFHkTHNpExnrGacmQvw5qFC4k7di1/0IQMCwYYV6XFHyRMVE8dXhrxjWbBjVfItm3oEQQqQzRzJWWeoZx5x03SjEburLS5cR++OPeNarR4VBgwrtuKJkmrlzJl5WLx4OetjoUIQQZYA5kjFZuqmL4LKm5IMHAbjlX28U2jFFyXTo8iG+O/odI5uPpLJP0VX8EkKIdKZJxuSUjAtx9a2EHTvw7dwJvw4dCu2YomSasXMGvh6+jA0ca3QoQogywjTJOFOhiJgTYLFBuRqFdwJ7KtZy5QvveKJE2n9pPz8e+5EHWzxIRe+KRocjhCgjTJSMM9QzvnIcytcEa+FMFk/au5fko1HYbpGaxWY3PXw65TzLMSpwlNGhCCHKEJMkY03mbuoTULFe4RxZa06//A+sARWpOlFK55lZxIUIfj7xM6Nbjqa8p/SCCCGKj0mScQ7d1IU0Xpxy6BDJ+/YRMHQY1ooVC+WYomSaFj6Nil4VebDlg0aHIoQoY0yUjNOW+3Da4erpQptJnXzkKABejRsVyvFEyRR+LpzfT/3O2KCx+Hn4GR2OEKKMMU0ydndTJ14CdKFdY3xl2VIAvJo1K5TjiZJp2o5pVPKuxIhmI4wORQhRBpkmGbu7qeMvuH4ohG5qrTXxf/yJV5MmeDZseNPHEyXTljNb+PvM34xvNR5fD1+jwxFClEEmSsZpLeOEi64NhdBNHf/b7wB4NW8u1ZlMSmvNtB3TqOZTjWHNZJlTIYQxTJOM3d3UCRdcP5evddNHTNj8NwCVx4656WOJkunP03+y/dx2Hgl+BC+rl9HhCCHKKNMkY3c3dVIM+FYCm+dNHe/q9z9wafESPGrVwrtly5sPUJQ4WmumhU+jhl8NBjcZbHQ4QogyzETJOK1l7EgFm89NHy9m9Wp0UhI133/vpo8lSqZfTv7C7gu7eSz4MTytN/fhTQghboYpknHGSsbKkQK2m+tuTD5yhLiff8areXN8W7e+6fhEyaO1Znr4dGr712ZQY6nCJYQwlimSMWTopnamgs37po6VfDASgHK3336TUYmSasPxDey7tI/HQx/Hw+JhdDhCiDLONMm4MFvGcb/+gsXPj8qPjC+MwEQJ49ROpodPp375+tzZ4E6jwxFCCPMkY50pGd94y1inpBC7fgP+vW/D4iWza83oh6gfOHTlEBNDJ2K1WI0ORwghzJSM0zhSb6plnHzkCM6YGPy79yiUuETJYnfamRE+g8YVG9Ovfj+jwxFCCAAKp8ag0VSGqk030TKO+/VXLi1ZAoDF5+bGnUXJtPboWqKuRvFBzw+wKNN8FhVClHLmSMZk6ab2urHLVC7Mnk1SxB68mjTBq5EUhjCbVGcqM8Nn0qJSC3rX7W10OEII4WaapoF7NrUjBW5wJaWUyENUGDSIhl9/hWf9+oUWmygZvjr0FSfjTjIpdJIsbyqEKFFMk4zd3dTOGx8zdsTESM1ik0pxpDB712yCqwTTvXZ3o8MRQohMTJOM9U1e2pS0b5/rOMnJhRqXKBm+jPyS6PhoaRULIUokEyVjF+Wwww0sbWi/4Kr25NuxQyFGJUqCJHsSc3fNpU21NnSu2dnocIQQIhvTJONr3dQpN5SM01kDAgorIFFCLD+4nHOJ55jcerK0ioUQJZJpknHmQhE3MGbsdBRyRKIkSEhNYN7ueXSs0ZH2t7Q3OhwhhMiR+ZIxGqzXt9awMyWFs++9h/LxwaPmzddBFiVH2P4wLiVdYnLoZKNDEUKIXJkkGbvX30pLxtfXMk49doyUQ4ep/sILeFSvVtjBCYPEpcSxYM8CutbqSmi1UKPDEUKIXJkkGV9rGQPX3U197sP/AchlTSazZN8SYpJjpFUshCjxTJOMM7mObmqdkkLchg0A+HXqWFQRiWIWkxzDp3s+pVedXgRWCTQ6HCGEyJNpkrF7zFhfXze1MykJgAqDB0vL2EQ+3fspsamxTAqdZHQoQgiRL9Mk43QKfV3d1I4rVwDwbta0iCISxe1y0mWW7F1C33p9aVapmdHhCCFEvsxXKKIAs6mTDhwgZs1XJGzdStKuXQBYK1cp8hhF8ViwZwGJ9kQmhk40OhQhhCgQ0yRj96IfkG839aX584lZ8xXeIcFUfepJ/Hv2xLtFi6IPURS5C4kXWLp/KQMaDqBRRam8JYQoHUyTjN3LYWoNtrxX4NJOjUfdujRYtqzoAxPF6pPdn5DiSOHxkMeNDkUIIQrMNGPGmbupb3w5TFF6nY0/yxcHvmBgo4HUK1/P6HCEEKLAzJGMlfufG1r0Q5jD3N1zcWonjwU/ZnQoQghxXcyRjMnQTQ35dlML8zkdd5qVkSu5t8m91C5X2+hwhBDiupgoGWe8zliScVkzZ9ccFIpHgx81OhQhhLhupknGyJhxmXXi6glWH1rN0KZDucXvFqPDEUKI62aaZKwz/nQjJRRFqTVr1yxsFhvjW403OhQhhLghpkjGCp1hNjXSMi5DjsQc4Zsj3zCi2Qiq+lY1OhwhhLghpkjGLtcxZux0FkM8ojjMCp+Fl9WLca3GGR2KEELcMNMk42uzqfNOxlprEsPD8awv16GWdpGXI/k+6nseaPEAlbwrGR2OEELcMBMl4wwTuPIYM04+GEnqqVOU79evuEITRWRG+Az8PPwYEzjG6FCEEOKmmCYZX5tNbQGLNde9kiMjAfCoUaNYohJFY9/Ffaw/vp6HWj5EBa8KRocjhBA3xTTJ2N1Nbc17ue3Tzz0HgMXfv4gjEkVpevh0ynuW56GWDxkdihBC3DTTJGN3yziPZJx69iwA1qpV8G7VqliiEoVv1/ldbDq5iTGBYyjnWc7ocIQQ4qaZJhm7x4wtudcy1qmpAFR7+hmUUsUSlyh808OnE+AVwAMtHjA6FCGEKBQFSsZKqf5KqQNKqUNKqRdz2aenUipcKbVHKbWpcMPMn7ubOo9k7GYxzWeQMmf72e38cfoPxgWNw9fD1+hwhBCiUORbz1gpZQWmA32Ak8AWpdRXWuu9GfapCMwA+mutjyulqhVRvLnQpHdTk0c3dfrkLVF6TQufRhWfKgxvPtzoUIQQotAUpInYATiktT6itU4BlgJ3Z9nnfuBLrfVxAK31ucINM3/ubmprzi3jpH37ODlpMh716uLf9dbiDE0Ukr+j/2bLmS2MbzUeH5uP0eEIIUShKUgyrgWcyHD7ZNq2jJoCAUqpn5VS25RSoworwIK61k2dc8s4ad9+cDqpM3MWtqqybGJpo7Xm4x0fU923Ovc1vc/ocIQQolDl202Nu/83E53ltg1oC/QGfIA/lVJ/aa0PZjqQUo8CjwLUrVv3+qMtQJi5tYwdMTGuQCvLSk2l0W+nfmPn+Z38s9M/8bJKIRAhhLkUpGV8EqiT4XZt4HQO+3yvtY7XWl8AfgFCsh5Iaz1Ha91Oa92uaiG3TvPrpnZcjQGlsJSTS2FKG60108OnU8u/Fvc2vtfocIQQotAVJBlvAZoopRoopTyBEcBXWfZZA3RTStmUUr5AR2Bf4YaaB5Vx0Y+c16V2xlzFUr48SmZSlzo/nfiJPRf38FjwY3jk8mFLCCFKs3y7qbXWdqXUZOAHwArM11rvUUpNSLt/ltZ6n1Lqe2AX4ATmaa0jijLw7NJaxp45X+7iTErC4iOTfkobp3YyPXw69crXY2CjgUaHI4QQRaIgY8ZordcCa7Nsm5Xl9nvAe4UX2vVxd1N75rHMpSz0Uer8eOxHDl4+yFvd3sKWy+Q8IYQo7UzTZ3stGfsZHIkoLA6ngxnhM2hUoRF31L/D6HCEEKLImCYZp5NkbB7fRX3HkZgjPB76ONY8KnEJIURpZ5pkrPMZMxali91pZ9bOWTQNaEqfen2MDkcIIYqUaQbhtHs5zMyzqZOPHiVhyxZSjh41ICpxo74+/DXHrh7jf73+h0WZ5jOjEELkyDTJOF3WFbhOT3mepAjXxG7v4GAjQhLXKdWRyuxdswmsHEivOr2MDkcIIYqcaZKxzqGeccqxYyRFRFBl8mQqDr0Pa8WKBkUnrseqQ6s4FXeKlzu+LKUuhRBlgkmS8bWqTUpde0pXf1gHQMXB9+JRvboRgYnrlOxIZs6uOYRUDaFrra5GhyOEEMXCNINx11bgujbrNvXkSaxVquBRs6YxQYnrtuLgCs4mnGVy68nSKhZClBkmSsZpLeOsC0PI+3mpkWhPZN7uebSr3o6Ot3Q0OhwhhCg2pknG5JaMRanxxYEvuJB4QVrFQogyxzTJ+Fo3tRQSKI0SUhP4ZPcndK7RmbbV2xodjhBCFCtTJGNFxm5qWampNPp8/+dcTr7M5NaTjQ5FCCGKnSmSsUt6MpaWcWkTmxLLgogFdK/dneCqci24EKLsMU0ydndTy5hxqbNk7xKuplxlUugko0MRQghDmCgZp034kWRcqsQkx/Dp3k/pXbc3LSu3NDocIYQwhDmSscqw6IdVxoxLk0V7FhGfGs/E0IlGhyKEEIYxRzImYze1jBmXFpeSLrFk3xL61e9H04CmRocjhBCGMVEyTm8ZSzIuLRZELCDZkczjoY8bHYoQQhjKNMkYubSpVLmQeIGl+5dyZ4M7aVihodHhCCGEoUyTjGU2dekyb/c8Up2pTAiZYHQoQghhONMkY3LoptbJySibdFuXNGfiz/DFgS+4u/Hd1C1f1+hwhBDCcKZJxjqHRT/sly9hq1TJqJBELubsmoNG81jwY0aHIoQQJYKJkrGLsl7rpnZcuoxVknGJcjL2JKsiVzGkyRBq+ktpSyGEABMl45yWw7RfuCAt4xJm9q7ZWJSFR1o9YnQoQghRYpgmGbu7qW2ulrH94kXsZ87g1bSJkWGJDI5dPcbXh79mWLNhVPerbnQ4QghRYpgoGadJm02dGB4OgE/r1obEI7KbuXMmnlZPHm71sNGhCCFEiWKaZOzuplaup5S0bz8ohXdgoJFBiTSHrxxm7ZG1jGg+gio+VYwORwghShTTJGN3N3XabfvFC1grVsTi5WVcUMJtRvgMfGw+jA0ca3QoQghR4pgoGbukJ2PHxUsyk7qEOHDpAOuOrePBlg8S4B1gdDhCCFHimCQZZ6jalJaN7ZcuYguQN/6SYHr4dMp5lGNUy1FGhyKEECWSSZJx9m5qnZyC8vUxLiABwJ4Le/jpxE+MChxFBa8KRocjhBAlkomSsYtyp2NREkwLn0YFrwo82OJBo0MRQogSyzTJmCwtY2G88HPh/HbqN8YGjsXf09/ocIQQosQyTTLWWcaMhfGmhU+jknclRjYfaXQoQghRopkjGavss6mFsbac2cLf0X/zcNDD+Hr4Gh2OEEKUaOZIxkDGbmrtcJB6+jTWChUNjais0lozbcc0qvlUY1izYUaHI4QQJZ5pkvG1bmpFytGjOC5exO/WLgZHVTb9Gf0n289tZ3zweLxt3kaHI4QQJZ5pknHGDuoTEycB4N20qVHBlFlaa6bvmM4tfrcwpMkQo8MRQohSwRTJWKFdy35oJwCpx4+DxYJXs2bGBlYG/XrqV3Zd2MVjwY/hafU0OhwhhCgVTJGMwdVNrXC1zAAqP/IIymo1NqgyJn2suLZ/be5ufLfR4QghRKlhmmTsWu5DE7dpk+uWh4fB8ZQ9G49vZN+lfUwImYCHRV5/IYQoKNMkY532b/wffwBQacxoI8Mpc5zaybTwadQvX587G95pdDhCCFGqmCgZpy2EaXdgrVgRq7+s+FSc1kWt49CVQzwe8jg2i83ocIQQolQxTTJO76a+tvyHKC4Op4MZO2fQuGJj+jfob3Q4QghR6pgmGbuKKGpSo89IHeNitvboWo7GHGVi6EQsyjR/UkIIUWxM886Z3k2duGMHPqGhRodTZqQ6U5m5cybNKzWnd93eRocjhBClkmmSsWuBao3jyhV8QkKMDqbM+Prw15yIPcGk0EnSKhZCiBtkmnfP9G5qAGsFKWJfHFIcKczaOYtWVVrRo3YPo8MRQohSy0TJWEnFpmL2ZeSXRMdHMyl0EkpqVwohxA0zTTK+NptaFIckexJzd82ldbXWdKkpBTmEEOJmmCYZa/c/ojgsP7icc4nnmBw6WVrFQghxk0yTjKVlXHwSUhOYt3seHW7pQIcaHYwORwghSj1zJGOl08aMJRkXh6UHlnIp6RKTW082OhQhhDAFcyRj0mdTi6IWnxrPgogF3FrrVlpXa210OEIIYQqmScbSTV08luxdwpXkK0wOlVaxEEIUFtMkY5226AeARYpEFImrKVdZtHcRPev0JKhKkNHhCCGEaZgoGV/rppZFP4rGp3s+JTYlVlrFQghRyEyTjEGhdPoKXOUNjsV8riRdYcm+JfSp14dmlZoZHY4QQpiKaZKxRoEsh1lkFuxZQEJqAhNDJhodihBCmI6JkjGotPlbytvb0FjM5kLiBcL2h3FHgztoHNDY6HCEEMJ0TJOMM82mlhWhCtX8iPkkO5J5PORxo0MRQghTMkky1pm6qUXhOZdwji8OfMHAhgOpX6G+0eEIIYQpmSQZZ+mmlpZxoZm7ay4Op4MJIROMDkUIIUzLNMkYFDg13kFBKA8Po4Mxhei4aFZGruSeJvdQu1xto8MRQgjTMk0yTl+b2lq+nNGhmMbsXbMBeCz4MYMjEUIIczNNMhaF60TsCdYcWsN9Te/jFr9bjA5HCCFMzRTJWKm0lrGWCVyFZdbOWVgtVh5p9YjRoQghhOmZIhkDUkKxEB2NOco3R75heLPhVPWtanQ4QghheqZJxiAlFAvLzJ0z8bJ6MS5onNGhCCFEmWCaZJyxapO4cZGXI/n+6Pfc3/x+KvtUNjocIYQoEwqUjJVS/ZVSB5RSh5RSL+axX3ullEMpdV/hhVgw0k1dOGbunImvhy9jAscYHYoQQpQZ+SZjpZQVmA7cAbQERiqlWuay3zvAD4UdZEFJN/XN2X9pPz8e+5GHWj5ERe+KRocjhBBlRkFaxh2AQ1rrI1rrFGApcHcO+z0BrATOFWJ8BSazqW/e9B3TKedZjodaPmR0KEIIUaYUJBnXAk5kuH0ybZubUqoWcC8wq/BCuz46bQUuz4aNjAqhVNt9fjc/n/yZMYFjKO8p9aCFEKI4FSQZ59T7m7UJ+iHwgtbakeeBlHpUKbVVKbX1/PnzBQyxoFxjxtWen1LIxy0bpoVPo6JXRR5o8YDRoQghRJlTkGR8EqiT4XZt4HSWfdoBS5VSUcB9wAyl1D1ZD6S1nqO1bqe1ble1amFev6pdnw4UWDw9C/G4ZcP2s9v54/QfjAsah5+Hn9HhCCFEmWMrwD5bgCZKqQbAKWAEcH/GHbTWDdJ/VkotBL7RWq8uvDDzJ2PGN25a+DQqe1dmRPMRRocihBBlUr4tY621HZiMa5b0PuALrfUepdQEpVQJqqunZDb1Dfg7+m+2nNnC+Fbj8bH5GB2OEEKUSQVpGaO1XguszbItx8laWusxNx/W9dMg1xlfJ60103ZMo5pvNYY2G2p0OEIIUWaZawUucV1+P/074efDebTVo3hZvYwORwghyizTJGNkBa7rkt4qrulXk8FNBhsdjhBClGmmScaubmpRUD+f+Jk9F/cwIWQCHlYPo8MRQogyzTTJWFrGBefUTqaHT6duuboMbDTQ6HCEEKLMM00ylkIRBbf+2HoOXD7AhJAJ2CwFmsMnhBCiCJkjGSst3dQF5HA6mBE+g4YVGjKgwQCjwxFCCIFZkjEg1xkXzPdR33M45jCPhz6O1WI1OhwhhBCYKBlLN3X+7E47M3fOpGlAU/rW62t0OEIIIdKYKBmL/Hxz5BuOXT3GxNCJWJRpfvVCCFHqmegdWaGUpOTcpDpTmbVzFi0rt+S2OrcZHY4QQogMTJOMXYUijI6i5Fp9aDWn4k4xKXQSSsnouhBClCQmSsayNnVuUhwpzNk1h+CqwXSr1c3ocIQQQmRhmmQss6lzt+LgCs7En2Fy6GRpFQshRAlkmmQss6lzlmRPYt7uebSt3pZONToZHY4QQogcmCgZX/tXXLPswDLOJ56XVrEQQpRgpkjGKu1fSTWZJaQmMD9iPp1qdKLdLe2MDkcIIUQuTJGMIX02tbSMM/p8/+dcSrrE5NaTjQ5FCCFEHkyTjEHWps4oLiWOhXsW0q1WN0KqhhgdjhBCiDyYJhlrFDJmfM3ifYuJSY5hUutJRocihBAiHyZJxjptNrUAiEmOYfGexdxW5zYCKwcaHY4oxfz9/W/6GFu3buXJJ5/M9f6oqCg+//zzAu8PUL9+fVq1akVwcDA9evTg2LFjNx1nYZk1axaffvppkRx71apVKKXYv3+/e9vPP//MXXfdlWm/MWPGsGLFCgBSU1N58cUXadKkCUFBQXTo0IHvvvuuQOdLTk5m+PDhNG7cmI4dOxIVFZXjfsuWLSM4OJjAwECef/559/Zjx47Ru3dvgoOD6dmzJydPnnTf9/zzzxMYGEiLFi148skn0WnDjA888ADNmjUjKCiIcePGkZqaWqBYSzuTJGMXGTN2WbRnEbGpsUwMnWh0KELQrl07Pvroo1zvz5qM89s/3U8//cSuXbvo2bMnb7755k3HqbXG6XTe9HEmTJjAqFGjbvo4OQkLC6Nr164sXbq0wI/55z//SXR0NBEREURERPD1118TGxtboMd+8sknBAQEcOjQIZ555hleeOGFbPtcvHiRKVOmsGHDBvbs2cPZs2fZsGEDAM899xyjRo1i165dvPLKK0ydOhWAP/74g99//51du3YRERHBli1b2LRpE+BKxvv372f37t0kJiYyb968Aj/X0sw0yVhaxi6Xki7x2b7P6Fe/H80qNTM6HGFC4eHhdOrUieDgYO69914uX74MwJYtWwgODqZz585MmTKFoKAgIHPLbdOmTYSGhhIaGkrr1q2JjY3lxRdf5NdffyU0NJQPPvgg0/5xcXGMHTvW3QpeuXJltng6d+7MqVOnADh//jxDhgyhffv2tG/fnt9//929vU+fPrRp04bHHnuMevXqceHCBaKiomjRogUTJ06kTZs2nDhxgvfee4/27dsTHBzMq6++CkB8fDx33nknISEhBAUFsWzZMgBefPFFWrZsSXBwMM899xwAr732Gu+//36er1XPnj154YUX6NChA02bNuXXX3/N93WPi4vj999/55NPPilwMk5ISGDu3Ll8/PHHeHl5AVC9enWGDRtWoMevWbOG0aNHA3DfffexYcMGdws23ZEjR2jatClVq1YF4Pbbb3f/nvbu3Uvv3r0B6NWrF2vWrAFAKUVSUhIpKSkkJyeTmppK9erVARgwYABKKZRSdOjQIVNr2sxsRgdQWGTM2GVBxAKSHElMDJFWsZm8/vUe9p6+WqjHbFmzPK8OvP5hjFGjRvHxxx/To0cPXnnlFV5//XU+/PBDxo4dy5w5c+jSpQsvvvhijo99//33mT59OrfeeitxcXF4e3vz9ttv8/777/PNN98AruSd7l//+hcVKlRg9+7dAO5kltH333/PPffcA8BTTz3FM888Q9euXTl+/Dj9+vVj3759vP7669x2221MnTqV77//njlz5rgff+DAARYsWMCMGTNYt24dkZGRbN68Ga01gwYN4pdffuH8+fPUrFmTb7/9FoCYmBguXbrEqlWr2L9/P0oprly5UuDXCsBut7N582bWrl3L66+/zvr16/N83VevXk3//v1p2rQplSpVYvv27bRp0ybPxxw6dIi6detSvnz5HO8fPnw4Bw4cyLb9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P5gua8nA06dPs3z5cndPRkZPP/0077zzDlZr5vkoly9fZs2aNRw9epTTp08THx/PkiVL8nweonCYpGVsjjHjZEcyc3bPIbRqKLfWvDX/B4gyI68WbFEJDAx0t0ABpk+fzoULF2jXzrWs7gcffED16tXZuXMnTqcTb29XARObzZZpglP6BKAbLSv4z3/+k169erFq1SqioqLo2bOn+770coqQc0nFhx56iLfeeovAwMAcn6NSioEDB/Lxxx/z4osv5vpafP/998TExNCqVSvAVWXI19eXO++8k8qVKxMdHZ1p/9jYWCpWrEhgYGCmyVFZ98mrZdyiRQuuXLmC3W7HZrPlWn4wXdaSgTt27ODQoUM0btzYHXPjxo05dOgQW7duZcSIEQBcuHCBtWvXYrPZSE1NpUGDBlStWhVw1Y7+448/ePDBB3M9rygcpmkZQ+lf9GP5geWcSzjH5NaTpVUsDHfbbbeRlJTEzJkz3dsyzjqOiYmhRo0aWCwWFi9e7G7V1qtXj71795KcnExMTAwbNmwAbrysYExMDLVq1QJwjz0XlIeHB8888wwffvhhrvv89ttvNGrUCIBVq1YxderUbPuEhYUxb948d/nBo0ePsm7dOhISEujevTtfffUVsbGxAHz55ZeEhIRgtVq57bbbSE5OZu7cue5jbdmyhU2bNuXbMlZK0atXL3cyX7RoUY7lBzPGmLFk4J133smZM2fcMfv6+rq77I8ePereft999zFjxgzuuece6taty19//UVCQgJaazZs2ECLFi0K/oKLG2aaZFzaW8aJ9kTm7Z5H+1va07FGR6PDEQKlFKtXr2bTpk00aNCADh06MHr0aN555x0AJk6cyKJFi+jUqRMHDx50F7ivU6cOw4YNIzg4mAceeIDWrVsDrpbgXXfdRXBwMD169MhUVrBVq1YEBQXRvXt3QkJCMsXx/PPPM3XqVG699dYcu7Hz8/DDD2drMS9btozQ0FCCg4PZsWMH//znPwHXB4Py5ctn2jchIYEffviBO++8073Nz8+Prl278vXXXxMcHMzkyZPp2rUroaGhzJo1i3nz5rlfw1WrVvHjjz/SqFEjAgMDee211wo8Keqdd97hv//9L40bN+bixYs8/PDDgGuG9Pjx4937FVbJwI4dO3LffffRpk0bWrVqhdPp5NFHH72pY4qCMUkJxRf4oGNfulw4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QO677z4SEhJuKta8zvfVV1/x9ttv3/Dx8iqxWL9+fS5cuHDTMWeN8/z583Ts2JHWrVvz66+/MmDAAK5cuVIo50kXEhKSbUGRjMU/wHWtc1BQkPv25s2b6d69O82aNaN58+aMHz++wL+777//nmbNmtG4ceNcfx+XL1/m3nvvJTg4mA4dOhAREeG+73//+x9BQUEEBgZmWhs9vZBJaGgo7dq1Y/Pmze5Y00tQhoSE3PT/BzettSFfbdu21YVlztvP6ZobtugX18wotGPerO1nt+ughUH6k92fGB2KEDfE6XTqTp066ZkzZ7q3RUVF6Y8++ijbvqmpqQU+7quvvqrfe++9m45vwYIFetKkSbneHjlypJ4/f/5Nnye349+sF154QY8aNUonJSVprbU+c+aMXrZsmdZa63r16unz588X2rnShYWF6VGjRt3w4+12e5737927VwcFBemaNWvquLg49/YePXroLVu2uG8fPXpUBwYGaq1dz7tu3br6jz/+0Fq7/u6WL1+uz5w5U6B4GjZsqA8fPqyTk5N1cHCw3rNnT7b9nnvuOf3aa69prbXet2+fvu2227TWWu/evVsHBgbq+Ph4nZqaqnv37q0PHjyotda6T58+eu3atVprrb/99lvdo0cPrbV276u11qdPn9ZVq1a9rr9/YKvOISeao2VMyVuBa9qOaVTyrsSIZlITVJROGzduxNPTkwkTrlUXq1evHk888QTgaokOHTqUgQMH0rdvX+Li4ujduzdt2rShVatWrFmzxv24f//73zRr1ozbb78905rMY8aMcS95uW3bNnr06EHbtm3p168f0dHRgKtV9cILL9ChQweaNm3Kr7/+SkpKCq+88grLli0jNDQ0W+EFu91OfHy8u0TisWPH6N27N8HBwfTu3Zvjx4/nuX358uUEBQUREhJC9+7dczzfwoUL3dcnjxkzhieffJIuXbrQsGFD93NyOp1MnDiRwMBA7rrrLgYMGMCKFSuuq8TiPffcQ9u2bQkMDGTOHNfa9g6HgzFjxhAUFESrVq344IMPAPjoo49o2bIlwcHB7nrE6XGm1zZeu3YtoaGhJCYmZmqBL1myhA4dOhAaGspjjz2Gw+EAXKurvfLKK3Ts2JE///wzz7+Zzz//nIceeoi+ffvy1Vdf5blvuunTpzN69Gj3am5KKe677z6qV6+e72M3b95M48aN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Q0OpV68e3bp1y/ZYT09PVqxYwZNPPklMTAx2u52nn36awMDAXOPr1asXb7/9NqGhoUydOhXAPWbsdDqpXbu2e1z3o48+Yty4cbz33ntUrVrV3UrKbfuUKVOIjIxEa03v3r0JCQmhbt262c6XnyFDhrBhwwaCgoJo2rQpHTt2vK4Si/3792fWrFkEBwfTrFkzOnXqBLjqL48dOxan0wnAW2+9hcPh4MEHHyQmJgatNc888wwVK1YsUJwtW7bkzTffpG/fvjidTjw8PJg+fTr16tXLtu/u3buzJbxffvmFWrVqUavWtWJ93bt3Z+/evURHR/Poo4+yf/9+QkJCUErRrl07dyu8evXqLF26lOeee45z585hsVjo3r27e2giLzabjWnTptGvXz8cDgfjxo1z/83MmuVaCmPChAns27ePUaNGYbVaadmyJZ988on7GEOGDOHixYvu55w+6W/u3Lk89dRT2O12vL293ZPnfvvtN95++208PDywWCzMmDHD3cq/GfmWUCwqhVlCcfY7U3i1wwM8FvsHrw+aWCjHvF5O7WT4N8OJT41nzT1r8LB4GBKHEKJkiYuLw9/fn4sXL9KhQwd+//13brnlFqPDumH9+vXjhx9+MDqMUutmSiiWAultYuNmU284voH9l/bzn67/kUQshHC766673N2k//znP0t1IgYkERcRUyRjnZaEjeqmdjgdzAifQYMKDRjQYIBBUQghSqL0cWIh8mKOCVwq07di90PUDxy6coiJIROxWvKfdSiEEEJkZIpknL76lhHJ2O60M3PnTJoENKFv/b4GRCCEEKK0M0UyTmfEClzfHvmWqKtRTAqZhEWZ6uUUQghRTEyRPa6l4OJtG6c6U5m1cxYtKrXgtrq3Feu5hRBCmIcpkjHuburibRmvObSGk3Enmdx6cqEtFi5ESWK1WgkNDSUoKIiBAwcWWrm9jEUWblb9+vVp1aqVu6xdxjWEC1PWEooA3333He3ataNFixY0b96c5557DshcJrIwdOnSxf3zlClTCAwMZMqUKcyaNYtPP/200M4D8MEHH+Dt7U1MTIx7W06/r4xlEePi4njsscdo1KgRgYGBdO/ePcc1onNy6dIl+vTpQ5MmTejTp0+mlboyyq3U4c6dO+ncuTOtWrVi4MCB7uIOALt27aJz584EBgbSqlUr94pwPXv2pFmzZu6/mfSFP4xkimSsDZjAleJIYfau2QRXCaZbreyLGAhhBj4+PoSHhxMREUGlSpWYPn260SHl6KeffnKvzpQxceWlIMtqZpQ1GUdERDB58mSWLFnCvn37iIiIoGHDhtd1zILK+AFj9uzZbN++nffee48JEyYwatSoAh+nIM85LCyM9u3bX1ed3vHjx1OpUiUiIyPZs2cPCxcuLHA95rfffpvevXsTGRlJ7969c6xJHBERwdy5c9m8eTM7d+7km2++ITIy0n3ut99+m927d3Pvvfe61yO32+08+OCDzJo1iz179vDzzz/j4XHtstPPPvvM/TdTrVq1Aj/XomKKZJyuOBunKyNXcib+DJNaT5JWsSgTOnfuzKlTpwBX6bouXbrQunVrunTp4i6LuHDhQgYPHkz//v1p0qQJzz//vPvxCxYsoGnTpvTo0YPff//dvT23MoZjxozh8ccfp1evXjRs2JBNmzYxbtw4WrRowZgxY/KMNa9jPvvss/Tq1YsXXniBw4cP079/f9q2bUu3bt3Yv38/ULASiu+++y4vv/yye6Uxm83GxInZFx2aO3cu7du3JyQkhCFDhriXFM16DnBVykovYxgcHOxOOP7+/gAMGjSI+Ph4OnbsyLJlyzK1wHN7Llmfc14OHz5MXFwcb775pnspy/wcPnyYv//+mzfffBOLxZVSGjZsyJ133lmgx69Zs8ZdtWn06NGsXr062z55lTo8cOCA+/Xr06ePez31devWERwcTEhICACVK1cu0BrbRjHJdcbFO5s6yZ7E3F1zaVOtDZ1rdC6ms4qy7KeFczh37EihHrNavYb0GvNogfZ1OBxs2LDBvaB+8+bN+eWXX7DZbKxfv56XXnrJ/SYYHh7Ojh078PLyolmzZjzxxBPYbDZeffVVtm3bRoUKFejVqxetW7cGci9vCHD58mU2btzIV199xcCBA/n999+ZN28e7du3Jzw8nNDQUMC1NKbVasXLy4u///47z2MePHiQ9evXY7Va6d27N7NmzaJJkyb8/fffTJw4kY0bNxaohOI777zD//3f/+X72g0ePJhHHnkEgH/84x988sknPPHEE9nOAa4lHJ966ikeeOABUlJSslWM+uqrr/D393cXrnjttdfc9z366KM5PpeszzkvYWFhjBw5km7dunHgwAHOnTuXb6txz549hIaG5nrsbt265bim9/vvv8/tt9/O2bNnqVGjBgA1atTIscs4r1KHQUFBfPXVV9x9990sX77cXTji4MGDKKXo168f58+fZ8SIEZk+HI4dO9Zdkeof//iH4Y0qUyRjpdLGiotpac8vDnzB+cTzvNP9HcN/gUIUpcTEREJDQ4mKiqJt27b06dMHcBUwGD16NJGRkSilSE1NdT+md+/e7vWXW7ZsybFjx7hw4QI9e/akatWqgKvU4cGDBwFXGcMvv/wScJUxzPiGOXDgQJRStGrViurVq9OqVSvAVeknKirKnYx/+umnTOsD53XMoUOHYrVaiYuL448//mDo0KHu+5KTk4FrJRSHDRtWoDWS8xIREcE//vEPd+GGfv365XqOzp078+9//5uTJ08yePBgd3GC/OT1XDI+5/wsXbqUVatWYbFYGDx4MMuXL2fSpNx7/wry/vfrr78W4BnkLWOpQ39//0ylDtM/bL3xxhsMGjQIT09XXQC73c5vv/3Gli1b8PX1pXfv3rRt25bevXvz2WefUatWLWJjYxkyZAiLFy++ru7+omCKZHytZVz0iTEhNYFPIj6hY42OtL+lff4PEKIQFLQFW9jSx4xjYmK46667mD59Ok8++ST//Oc/6dWrF6tWrSIqKoqePXu6H5OxlGDGkocF/eCacb/0Y1kslkzHtVgs1zXmm/GY6WUfnU4nFStWzLE8YkFKKKaX/kvvBs3NmDFjWL16NSEhISxcuNC9IldO57j//vvp2LEj3377Lf369WPevHncdlv+V2rk9VwyPue87Nq1i8jISPcHrpSUFBo2bMikSZOylUCEa2UQK1asyM6dO3E6ne5u6ozyaxlXr16d6OhoatSoQXR0dK4t8dxKHTZv3px169YBrtbwt99+C0Dt2rXp0aOH+0PagAED2L59O71793YXtChXrhz3338/mzdvNjwZm2PM2D2Bq+hbxmH7w7iUdInJoYUzE1SI0qBChQp89NFHvP/++6SmphITE+N+Q0uvjJSXjh078vPPP3Px4kVSU1NZvny5+77cyhjejIIcs3z58jRo0MAdi9aanTt3AgUroThlyhT+85//uFv4TqeT//73v9nOExsbS40aNUhNTeWzzz5zb8/pHEeOHKFhw4Y8+eSTDBo0iF27dhXo+eb1XLLKLfGEhYXx2muvuUsgnj59mlOnTnHs2DHat2/P77//zpkzZwDYunUrycnJ1KlTh0aNGtGuXTteffVVd4nEyMhI1qxZA7haxjmVQbz99tsB1zj4okWLAFdpxZzqGkPupQ7TtzudTt58800mTJgAuApa7Nq1i4SEBOx2O5s2baJly5bY7Xb35LLU1FS++eYbgoKCCvQ6FyVTJGN3CcUibhjHpcSxYM8CutbqSmi10KI9mRAlTOvWrQkJCWHp0qU8//zzTJ06lVtvvTXbuGZOatSowWuvvUbnzp25/fbbadOmjfu+jz76iAULFhAcHMzixYvdBd1vRkGP+dlnn/HJJ58QEhJCYGCgO4FMmTKFVq1aERQURPfu3QkJCaFXr17s3bvXPYErODiYDz/8kJEjR9KiRQuCgoKIjo7Odo5//etfdOzYkT59+rgne+V2jmXLlhEUFERoaCj79++/rtZabs8lq+PHj+Pj45Nt+9KlS7n33nszbbv33ntZunQp1atX53//+x8DBgwgNDSUp59+mrCwMHdLeN68eZw5c4bGjRvTqlUrHnnkEWrWrFmguF988UV+/PFHmjRpwo8//siLL74IwOnTpxkw4Npa/0OGDKFly5YMHDgwU6nDsLAwmjZtSvPmzalZsyZjx44FICAggGeffZb27dsTGhpKmzZtuPPOO0lOTqZfv34EBwcTGhpKrVq13GP6RjJFCcWP/99U/t1mOP8X9ytTBj5RKMfMycydM5kRPoOldy4lsErudVaFEKKkmjJlCg899BDBwcFGh1ImmbqEYnF8nIhJjmHxnsX0qtNLErEQotRKvw5XlCym6KZOV5S91Iv2LCI2NZZJoZOK8CxCCCHKIlMkY62K9jrjy0mX+WzfZ/St15dmlZoV0VmEEEKUVaZIxumKKhkviFhAoj2RiaHZV9cRQgghbpYpkrF7NnURjB5fSLxA2P4wBjQcQKOKjQr9+EIIIYQpknG6olj045Pdn5DqTOXxkMcL/dhCCCEEmCQZF1XL+Ez8Gb448AUDGw2kXvl6hXpsIUqDf//73wQGBrqvyfz777957bXXmDp1aqb9wsPDadGiBXDj5fTOnz+Ph4cHs2fPzrQ9vUhCuqzl/D799FN3ab2WLVteV+nCt956i8aNG9OsWTN++OGHHPfJrURfSkoKY8eOpVWrVoSEhLhX1oqNjXWX5gsNDaVKlSo8/fTTQOYCFj179uTkyZMFjlWYmymSMUU0gWve7nk4tZPHgh8r5CMLUfL9+eeffPPNN2zfvp1du3axfv166tSpw8iRI1m2bFmmfZcuXcr9998P3Hg5veXLl9OpU6cCVwsCVz3hDz/8kHXr1rFnzx62b9/uXhc7P3v37mXp0qXs2bOH77//nokTJ+a4gEluJfrmzp0LwO7du/nxxx/5v//7P5xOJ+XKlcu00lS9evXca08/99xzjBo1il27dvHKK69k+1Ajyi5TJOOiuM74dNxpVkau5N4m91K7XO0iOIMQJVt0dDRVqlRxrwldpUoVatasSbNmzahYsWKm1u4XX3zBiBEjbqqcXlhYGP/v//0/Tp486S7VmJ+33nqL999/373ak7e3d4FXU1qzZg0jRozAy8uLBg0a0LhxYzZv3pxtv9xK9O3du5fevXsDUK1aNSpWrEjWhYwiIyM5d+4c3bp1y/aYXr165bpKlih7TLHoR7rCbBnP3jUbheLRYGMW6BcioytfHybldHyhHtOzph8VB+Y+KbFv37688cYbNG3alNtvv53hw4fTo0cPAEaOHMnSpUvp2LEjf/31F5UrV6ZJkyZ89dVXeZbTy82JEyc4c+YMHTp0YNiwYSxbtoxnn30238dFRETQtm3bHO977733Mq0Fna579+589NFHnDp1ik6dOrm3165dO8cPAbmV6AsJCXEn9BMnTrBt2zZOnDhBhw4d3I8NCwtj+PDh7kIVISEhrFy5kqeeeopVq1YRGxvLxYsXqVy5cr7PVZibSVrGhdtNffzqcdYcWsPQpkO5xe+WQjqqEKWLv78/27ZtY86cOVStWpXhw4e7i0KMGDGCFStW4HQ6Wbp0qXvR/hu1dOlShg0b5j52fl3VBakANWXKlBwLFHz00UcA5LQUcE7HnT9/PtOnT6dt27bExsa6S/SNGzeO2rVr065dO55++mm6dOniLuuX8XllfG3ef/99Nm3aROvWrdm0aRO1atXK9hhRNpnir0CnV20qpGw8a+csbBYb41uNL5wDCnGT8mrBFiWr1UrPnj3p2bMnrVq1YtGiRYwZM4Y6depQv359Nm3axMqVK/nzzz8BV1nBvMrp5SYsLIyzZ8+6W7KnT58mMjKSJk2a4OPjQ0pKijsJppfuSz/ftm3bciwzmF/LuHbt2u5WLsDJkydzLG6QW4k+m83GBx984N6vS5cumeoP79y5E7vdnqnlXrNmTXed5bi4OFauXFngMW5hbqZoGae3iVUhDB4fiTnCt0e/ZWTzkVT1rXrzBxSilDpw4ACRkZHu2+mTkdKNHDmSZ555hkaNGrlry+ZXTq93797ZuoIPHDhAfHw8p06dcpfvmzp1qrsEYo8ePViyZAkAiYmJfPHFF/Tq1QuAqVOn8vzzz7tL+yUnJ7tbvvm1jAcNGsTSpUtJTk7m6NGjREZGZupiTpdbib6EhATi411DBz/++CM2m42WLVu6HxcWFpatx+DChQs4nU7ANd49bty4fH8PomwwRTLWhThYPDN8Jl5WL8YGjS28gwpRCsXFxTF69GhatmxJcHAwe/fu5bXXXnPfP3ToUPbs2cOIESMyPS63cnpOp5NDhw5RqVKlTPuHhYVlK903ZMgQd1f1//73P778/+3deVxV1fr48c8SsETUKIdrEqgpgxyZMbkiak44p5mmv1Q0rUwr61pp3crMW9dXZvYNzaupWE5kjhmapjmgIWLiBOYsOZKKE4IKrN8fyA5kOEdBhtPzfr3OS9h7nX2evQSes/ZeZz1Ll+Lj40Pz5s155plnjAlVnTt3ZsSIEbRr1w5PT0/8/f3JyMiw6Pw8PT3p06cPTZo0ITQ0lKlTpxr3uocOHWpMxiqsRF9ycjJ+fn54eHgwceJEvv322zzH/+677/Il440bN+Lm5oarqyvnzp3j3XfftShWYf2sooTip1+8x2deT/PBtc0M7/bqPR/nYMpBnl75NMOaDuNVv3s/jhAiv3379jF79mwmT55c1qEIUWYKK6FoHSPjEprANS1+Gg52DgzyHFT8oIQQeZhMJknEQhTCKpJxjuIk44QLCaxPWs/AJgOp8YBMqBBCCFF6rCIZG7Opi3GMqfFTqV65Os81ea5EYhJCCCEsZRXJ2HCP2Xj3n7vZfHIzg02DqVa5WsnGJIQQQphhFcn4r0IR92bqrqk8/ODD9HfvX1IhCSGEEBazimRMMSZw7Ty3k1/P/MoQ0xDs7exLNiwhhBDCAlaRjO+1hKLWmvBd4dSsUpM+bn1KPjAhKrA//viDBg0acPHiRQBSUlJo0KABJ06cALIX8+jatSuPP/44/v7+tGnThs2bNwPZZQ5r1aqFj48Pnp6e9O7dm+vXrxvHnjRpEu7u7phMJry9vfnmm28AaN26db5iC/cqLi6OV1/N/ojijRs3aNeuHT4+PkRGRjJ06FASEhJK5HVy9OjRg6CgoDzbwsLC+P777/Nsy10S8uDBg3Tu3JlGjRrh4eFBnz59OHfunEWvt3PnTpo2bUqjRo149dVXC1zes7AyjwCRkZF4eXnh6enJW2+9ZWxPSkqiTZs2+Pr64uXlRVRUlLHPxsbGKA3ZvXt3i+IUFtJal8nD399fl5SP/+99XWfDLj3rhyl39bxfT/+qTREmPS9hXonFIoQ1mThxoh42bJjWWusXXnhBf/zxx1prrdPS0nTjxo31ihUrjLZ79+7Vc+bM0VprPWfOHD1ixAhjX79+/fTs2bO11lp/9dVXukOHDvry5ctaa60vXbqkIyIitNZat2rVSu/YsaPEz+PXX3/VISEh9/z8jIyMIvenpKRoJycn7e7uro8ePWpsHzRokF68eHGetlWrVtVaZ/dho0aN9MqVK419GzZs0Hv37rUopsDAQL1t2zadlZWlQ0NDdVRUVL424eHhOiwsTGut9blz57Sfn5/OzMzU58+f14899phOTk7WWms9cOBA/fPPP2uttR42bJieNm2a1lrr/fv3axcXl3yxi3sHxOkCcqJVjIzv5TK1vj0qrmNfh96uve9PWEJUcK+//joxMTFMmTKF6Oho/vWvfwEwf/58goKC8oyOTCYTYWFh+Y6RkZFBamoqjo6OAHz88cdMmzaN6tWrA1CjRg0GDcr/2f7hw4cTEBCAp6cnH3zwgbF9zJgxxqpgo0ePBrJrIeeMsnNW59q4cSNdu3YlOTmZ5557jvj4eHx8fDhy5EieEfjatWsJCgrCz8+PZ555hmvXrgFQv359xo8fT3BwMIsXLy6yn5YsWUK3bt149tlnjWU8zVmwYAFBQUF069bN2NamTRtMJpPZ5545c4YrV64QFBSEUoqBAweyfPnyfO0KK/N49OhRXF1dqVUre8nfdu3aGaUhlVJcuXIFgMuXLxe4XrcoeVZRKCKHuot0HH0qmt1/7ua95u/xgM0D9zEqIYpv9erVxvrLJeUf//gHnTp1KrKNnZ0dn376KaGhoaxdu9Yo1rB//378/PyKfG5kZCTR0dGcOXMGV1dXunXrxtWrV7l69SqPP26+8MV//vMfHn74YTIzM2nbti179uzBycmJZcuWceDAAZRSXLp0CYDx48fz008/Ua9ePWNbjtq1a/P1118zadIkVq1alWff+fPnmTBhAj///DNVq1Zl4sSJTJ48mffffx/Iro8cHR1tNtaFCxfywQcfUKdOHXr37s3YsWPNPqeo8o+///47ffv2LXDfxo0bOXXqlLEeOBRe/rGwMo9PPvkkBw4c4Pjx4zg5ObF8+XJu3rwJwLhx4+jQoQNffvklqamp/Pzzz8bx0tPTCQgIwNbWljFjxvDUU0+ZPU9hGasYGf+1Apdl94y11oTHh1PPoR49G/U0/wQh/sZWr15N3bp12bdvX6FtevbsiclkolevXsa2vn37Eh8fz9mzZ2natCmffvopWmuLyh9C9trOfn5++Pr6sn//fhISEqhevToPPvggQ4cOZenSpdjbZ0+6bNGiBWFhYcycOZPMzEyLzy0mJoaEhARatGiBj48Pc+fONe6J55yDOefOnePw4cMEBwfj6uqKra2t0VcFnasl5+/m5lZgkYv4+Hgeeughi8s/Flbm0dHRka+++oq+ffvSsmVL6tevb5RyXLhwIWFhYZw8eZKoqCgGDBhgFLdISkoiLi6OBQsWMGrUKI4cOWL2XIRlrGxkbJkNf2wg4UIC4/85Hjsbu/sakxAlwdwI9n6Jj49n3bp1xMTEEBwczLPPPkvdunXx9PQ0JmsBLFu2jLi4OOOycW5KKbp168aXX37JmDFjqFq1KkePHqVhw4aFvu6xY8eYNGkSO3bswNHRkbCwMNLT07G1tSU2Npb169ezaNEiwsPD2bBhA9OnT2f79u38+OOP+Pj4EB8fb9H5aa1p3759ofWTq1atavYYkZGRxuQ2gCtXrrBo0SImTJjAI488QkpKitH2zvKPmzZtKvCY5kbGTk5OnDx50thWWPnHoso8duvWzbhEPmPGDKNIxqxZs1izZg0AQUFBpKenc/78eWrXrm28RsOGDWndujW7du2y6CqHMM86RsbK8k8aZ+kspsZPxaW6C90e72a2vRB/V1prhg8fzpQpU3B2dubNN980km3//v3ZunUrK1euNNrnni19p+joaOOP9tixYxkxYoRxX/LKlSvMmDEjT/srV65QtWpVatSowblz51i9ejWQXUnq8uXLdO7cmSlTphhJ98iRIzzxxBOMHz+emjVr5qlTXJTmzZuzdetWDh8+bJzDwYMHC2wbHh5OeHh4vu0LFy5kzZo1RvnHnTt3GveNW7duTWRkpHEJOCIiwij/2L9/f7Zt22bURwZYs2YNe/fuNTsyrlu3LtWqVSMmJgatNd988w09evTIF1tRZR5zSkOmpKQwbdo0hg7Nrt/u7OzM+vXrAUhMTCQ9PZ1atWqRkpLCjRs3gOzL+1u3bs1TMlIUj3WMjJXlE7jWnljLoZRDfNLyE2wrWcfpC3E/zJw5E2dnZ9q3bw/Ayy+/TEREBJs2baJVq1asWrWKN954g1GjRlGnTh2qVavGv//9b+P5OfeMs7KycHJyIiIiAsiemHXt2jUCAwOxs7PDzs7OmBiWw9vbG19fXzw9PWnYsCEtWrQA4OrVq/To0YP09HS01sao78033+TQoUNorWnbti3e3t6Fjjpzq1WrFhEREfTr189INBMmTMDV1TVf2wMHDhhx5Dh+/DhJSUk0b97c2NagQQOqV6/O9u3b6dq1Kzt37sTf3x8bGxsef/xxpk+fDkCVKlVYtWoVo0aNYtSoUdjZ2eHl5cUXX3xhNm6Ar776irCwMNLS0ujUqZNx9WTlypXExcUxfvx4kpOT6dixI5UqVaJevXp5yjy+9tpr7N69G4D333/fOOfPPvuMYcOG8fnnn6OUIiIiAqUUiYmJvPjii1SqVImsrCxjIp0oGVZRQnHC1A8Jb9KDSambea5r4aUPM7My6bWyFwrFku5LsKlkUyKvL4Swfl27dmXp0qXGJDYh7sXfo4SiKvqNRdSxKI5ePspwn+GSiIUQd2XVqlWSiMV9YxXJOEdRH23KyMpg+u7puDq60t6lfSlGJYQQQhTNKpKxMR4uYmT8w5EfSLqaxAifEVRSVnHaQgghrIR1ZKWcCVy64JHxrcxbTN89Hc9HPGnzWJvSjEwIIYQwyyqSsbkPNi07vIzTqacZ4TPC4gUHhBBCiNJiFck4R0Fp9kbmDf6353941/ImuF5wqcckhBBCmGMVyVgXUSji+4Pfk3w9mZG+I2VULMRdyl3uLyoqisaNG5OUlMS4ceOwt7c3Fo64s21hOnfunG/t6DsVVkYxIiKCkSNHWh78XZCSjtnKqqTj1atXjdKMPj4+1KxZk1GjRgGwefNm/Pz8sLW1zRf7W2+9haenJx4eHoW+ZkVh1atepGWkMXPPTALqBPDEP54o63CEqLDWr1/PK6+8wtq1a3F2dgagZs2afPbZZ0ycONHi4+SujVuajDJ1lfKPP6ZPn866deuIjY2levXqXL58ucAKSMUVEBBAQED2x0t37drFrVu3jBXELFkDO7fMzExj+cqCXLp0id9++w0HBweOHTtmLNVZlPT0dLp06cLkyZONZTJ/+eUX/vzzT+rUqWP2+cOHD2fGjBk0b96czp07s2bNmnzLuM6cOROAvXv3kpycTKdOndixYwfVqlXLs4Spv7+/sc65s7MzERERTJo0Kc+xtm3bxtatW9mzZw8AwcHBbNq0idatW5uNtTyyjpFxIStwRR6I5EL6BRkVC1EMW7ZsYdiwYfz444951iEeMmQIkZGRXLx4Md9z5s2bR7NmzfDx8eHFF180ijfUr1+f8+fPA/DRRx/h7u5O+/bt6devX54/tosXL6ZZs2a4urqyZcsWY/sff/xBaGgobm5ufPjhh8b2yZMnYzKZMJlMTJkyBcheHcvDw4OXX34ZPz8//vjjD8LCwjCZTDRt2tRYvUtKOmYry5KOuR06dIjk5GRatmwJZJ+3l5dXvjdSSinS09O5efMmN27c4NatWxa9aSivrGpknDvfpt5KZfa+2QTVDcK/TsFlyoSoKA4e/Iir1xJL9JjVHDxwdX2vyDY3btygR48ebNy4EXd39zz7HBwcGDJkCF988UWexJiYmEhkZCRbt27Fzs6Ol19+mfnz5zNw4ECjTVxcHEuWLGHXrl1kZGTg5+eXp5xgRkYGsbGxREVF8eGHHxpl/GJjY9m3bx/29vYEBgbSpUsXlFLMmTOH7du3o7XmiSeeoFWrVjg6OvL7778zZ84cpk2bxs6dOzl16pRRUenSpUtS0jGXsizp2KxZszyx9+3b1+wAKigoiDZt2lC3bl201owcORIPDw+z51leWUUyLmg29YLEBaTcSGGk7/25xyTE34GdnR3//Oc/mTVrVoFrJr/66qv4+PjkWVt6/fr17Ny5k8DAQADS0tKoXbt2nudFR0fTo0cPqlSpApBnNAYYlyj9/f05fvy4sb19+/Y88sgjRpvo6GiUUvTs2dOosNSrVy+2bNlC9+7dcXFxMdaNbtiwIUePHuWVV16hS5cudOjQgWvXrt1VSccZM2aQkZHBmTNnSEhIoEmTJkZJxy5dutC1a1fgr5KOffr0yVNW0pzcJR0h+x5r7vu+d1vSUSlllHQ0mUzFLulYmLsp6ZiYmEhAQAAuLi5GScfcFi1alGcN7cIcPnyYxMREo3pV+/bt2bx5s3EloqKximScI+f//urNq0Tsj6CVUyu8anmVbVBClABzI9j7pVKlSnz33Xe0a9eOjz/+mHfeeSfP/oceeoj+/fszbdo0Y5vWmkGDBvHJJ58UelxzE20eeOABAGxsbMjIyDC23/kHXilV5LFyl0B0dHRk9+7d/PTTT0ydOpXvvvuO2bNnS0nHclLSEWD37t1kZGQUOkLPbdmyZTRv3tyYgNapUydiYmIqbDK2jnvGt//NWYDr24RvuXLzCiN8RpRZTEJYC3t7e1atWsX8+fOZNWtWvv1vvPEG//vf/4yk2bZtW77//ntjpvXFixc5ceJEnucEBwfzww8/kJ6ezrVr1/KUESzKunXruHjxImlpaSxfvpwWLVoQEhLC8uXLjXKBy5YtM+435nb+/HmysrJ4+umn+eijj/jtt98AKelYXko65sTer18/i/rK2dmZTZs2kZGRwa1bt9i0aZNcpi5zxrtlxeUbl/k24VvaObfD45GK+x8jRHny8MMPs2bNGkJCQoyRVI6aNWvSs2dPY8TTpEkTJkyYQIcOHcjKysLOzo6pU6fi4uJiPCcwMJDu3bvj7e2Ni4sLAQEB1KhRw2wcwcHBDBgwgMOHD9O/f39jdnJYWJhx33Ho0KH4+vrmubwNcOrUKQYPHkxWVhaAMXKXko7lo6QjZN8KuHPG/Y4dO+jZsycpKSn88MMPfPDBB+zfv5/evXuzYcMGmjZtilKK0NDQfLc7KhKrKKH47+kf87VbZ6anbeHEP7KYtXcWS7ovobFjY/NPFkKUiWvXruHg4MD169cJCQlhxowZ+Pn5lXVYFYaUdKyYCiuhaB0j49tuZt1kfmIkofVDJRELUc698MILJCQkkJ6ezqBBgyQR36U7Z2KLis2iZKyUCgW+AGyAr7XW/71jv7q9vzNwHQjTWv9WwrEWKudzxonXkriReYPhPsNL66WFEPdowYIFZR2CEOWG2QlcSikbYCrQCWgC9FNKNbmjWSeg8e3HC8BXJRynRQ6mnqZrw640qGF+tRkhhBCivLBkNnUz4LDW+qjW+iawCLhzmlwP4BudLQZ4SClVt4RjLVTO2tRaZ/KS10ul9bJCCCFEibAkGdcDcs/LP3l72922uX9uT6Z+3L4uj1V/rNReVgghhCgJliTjgpZnuXMKtiVtUEq9oJSKU0rF/fnnn5bEZxH7NEXDjGME1ZKPMgkhhKh4LEnGJ4Hcw00n4PQ9tEFrPUNrHaC1DqhVq9bdxlqof7/2NlvbPUXn9rL0pRAlycbGBh8fH0wmE8888wzXr1/PUwrwXuSsmHT69Gl69+5dUqHm4+3tnW8BiTtLIh4/fjxPIYTY2FhCQkJwc3PD3d2doUOHcv36dYteb82aNbi5udGoUSP++9//FtgmJSWFnj174uXlRbNmzYx1sgG++OILTCYTnp6eRrGLHF9++SVubm54enry1ltvAXDr1i0GDRpE06ZN8fDwKHLFM1EB5JQWK+xB9ozro0ADoDKwG/C8o00XYDXZI+TmQKy54/r7+2shRPlWtWpV4+v+/fvrzz77rESPeb8kJCRok8mkH330UX3t2jVje6tWrfSOHTuM748dO6Y9PT211lqfPXtWOzs7623btmmttc7KytKLFy/WZ8+eNft6GRkZumHDhvrIkSP6xo0b2svLS+/fvz9fu9GjR+tx48ZprbVOTEzUTz75pNZa671792pPT0+dmpqqb926pdu2basPHjyotdZ6w4YNum3btjo9PV1rrfW5c+e01lrPnz9f9+3bV2utdWpqqnZxcdHHjh27q34SpQ+I0wXkRLMjY611BjAS+AlIBL7TWu9XSr2klMqZLRV1O2EfBmYCL5fYuwUhRLnQsmVLDh8+bJQCBBg3bhwDBgzgySefpHHjxka9WoBPP/2UwMBAvLy88pQczJF7VBoREUGvXr0IDQ2lcePGxugPCi8pWJQFCxYwYMAAOnTowMqVKy06v6lTpzJo0CCjMINSit69e1tUli82NpZGjRrRsGFDKleuzLPPPsuKFSvytctdQtDd3Z3jx49z7tw5EhMTad68Ofb29tja2tKqVSuWLVsGZK9sNWbMGGO97pyiG0opUlNTycjIIC0tjcqVKxtlIEXFY9HnjLXWUWQn3Nzbpuf6WgOyELQQ98l7h06y71paiR7T5FCFjxo7mW9IdknD1atXExoamm/fnj17iImJITU1FV9fX7p06cK+ffs4dOgQsbGxaK3p3r272Yo68fHx7Nq1iwceeAA3NzdeeeUVqlSpUmRJwcJERkaybt06fv/9d8LDwy1a73jfvn0F1jEG+OWXX3j99dfzbbe3t2fbtm2cOnWKxx77606dk5MT27dvz9fe29ubpUuXEhwcTGxsLCdOnODkyZOYTCbeffddLly4QJUqVYiKijKW+jx48CBbtmzh3Xff5cEHH2TSpEkEBgbSu3dvVqxYQd26dbl+/Tqff/45Dz/8sNnzFOWTVa3A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",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "roc_curve_plot(models, X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model                         Accuracy    Recall    Precision    F1 Score       AUC      Gini\n",
      "--------------------------  ----------  --------  -----------  ----------  --------  --------\n",
      "LogisticRegression            0.983421  0.9625       0.972002    0.967213  0.997842  0.995684\n",
      "DecisionTreeClassifier        0.945839  0.880435     0.904996    0.892135  0.967191  0.934383\n",
      "GaussianNB                    0.62545   0.979348     0.402707    0.57071   0.748597  0.497193\n",
      "BernoulliNB                   0.863634  0.830978     0.694735    0.756229  0.932058  0.864116\n",
      "GradientBoostingClassifier    0.989777  0.970109     0.989477    0.979667  0.997736  0.995472\n",
      "RandomForestClassifier        0.983144  0.934239     0.999412    0.965686  0.997189  0.994377\n",
      "SVC                           0.982869  0.963043     0.969363    0.966182  0.996626  0.993253\n",
      "XGBClassifier                 0.990467  0.97337      0.989002    0.981089  0.998129  0.996257\n",
      "KNeighborsClassifier          0.969329  0.916304     0.961336    0.93814   0.968248  0.936497\n",
      "Pipeline                      0.983282  0.970652     0.966535    0.970149  0.993639  0.987278\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from tabulate import tabulate\n",
    "\n",
    "def compare_models(models, X_train, X_test, y_train, y_test):\n",
    "    results = []\n",
    "    headers = ['Model', 'Accuracy', 'Recall', 'Precision', 'F1 Score', 'AUC', 'Gini']\n",
    "\n",
    "    skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)\n",
    "    \n",
    "    for model in models:\n",
    "        if model.__class__.__name__ == \"XGBClassifier\":\n",
    "            X_train_xg, X_test_xg = X_train.copy(), X_test.copy() \n",
    "            X_train_xg.columns = [str(col).replace('[', '').replace(']', '').replace('<', '').replace('>', '') for col in X_train.columns]\n",
    "            X_test_xg.columns = [str(col).replace('[', '').replace(']', '').replace('<', '').replace('>', '') for col in X_test.columns]\n",
    "            X_train_temp, X_test_temp = X_train_xg, X_test_xg\n",
    "        else:\n",
    "            X_train_temp, X_test_temp = X_train, X_test\n",
    "        \n",
    "        recall_scores = cross_val_score(model, X_train_temp, y_train, cv=skf, scoring=\"recall\")\n",
    "        accuracy_scores = cross_val_score(model, X_train_temp, y_train, cv=skf, scoring=\"accuracy\")\n",
    "        precision_scores = cross_val_score(model, X_train_temp, y_train, cv=skf, scoring=\"precision\")\n",
    "        f1_scores = cross_val_score(model, X_train_temp, y_train, cv=skf, scoring=\"f1\")\n",
    "        auc_scores = cross_val_score(model, X_train_temp, y_train, cv=skf, scoring=\"roc_auc\")\n",
    "        gini_scores = 2 * auc_scores - 1\n",
    "        \n",
    "        avg_recall = recall_scores.mean()\n",
    "        avg_accuracy = accuracy_scores.mean()\n",
    "        avg_precision = precision_scores.mean()\n",
    "        avg_f1 = f1_scores.mean()\n",
    "        avg_auc = auc_scores.mean()\n",
    "        avg_gini = gini_scores.mean()\n",
    "        \n",
    "        results.append([model.__class__.__name__, avg_accuracy, avg_recall, avg_precision, avg_f1, avg_auc, avg_gini])\n",
    "\n",
    "    print(tabulate(results, headers=headers, tablefmt='simple'))\n",
    "\n",
    "compare_models(models, X_train, X_test, y_train, y_test)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Best models:\n",
    "- XGBClassifier\n",
    "- GradientBoostingClassifier\n",
    "- Pipeline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are choosing XGBClassifier as the best model."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Shap"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Shap plots for the best model - XGBClassifier (train data)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div align='center'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdxJREFUeNq0Vt1Rg0AQJjcpgBJiBWIFkgoMFYhPPAIVECogPuYpdJBYgXQQrMCUkA50V7+d2ZwXuXPGm9khHLu3f9+3l1nkWNvtNqfHLgpfQ1EUS3tz5nAQ0+NIsiAZSc6eDlI8M3J00B/mDuUKDk6kfOebAgW3pkdD0pFcODGW4gKKvOrAUm04MA4QDt1OEIXU9hDigfS5rC1eS5T90gltck1Xrizo257kgySZcNRzgCSxCvgiE9nckPJo2b/B2AcEkk2OwL8bD8gmOKR1GPbaCUqxEgTq0tLvgb6zfo7+DgYGkkWL2tqLDV4RSITfbHPPfJKIrWz4nJQTMPAWA7IbD6imcNaDeDfgk+4No+wZr40BL3g9eQJJCFqRQ54KiSt72lsLpE3o3MCBSxDuq4yOckU2hKXRuwBH3OyMR4g1UpyTYw6mlmBqNdUXRM1NfyF5EPI6JkcpIDBIX8jX6DR/6ckAZJ0wEAdLR8DEk6OfC1Pp8BKo6TQIwPJbvJ6toK5lmuvJoRtfK6Ym1iRYIarRo2UyYHvRN5qpakR3yoizWrouoyuXXQqI185LCw07op5ZyCRGL99h24InP0e9xdQukEKVmhzrqZuRIfwISB//cP3Wk3f8f/yR+BRgAHu00HjLcEQBAAAAAElFTkSuQmCC' /></div><script charset='utf-8'>/*! For license information please see bundle.js.LICENSE.txt */\n",
       "(()=>{var e={486:function(e,t,n){var r;e=n.nmd(e),function(){var a,i=\"Expected a function\",o=\"__lodash_hash_undefined__\",u=\"__lodash_placeholder__\",l=32,s=128,c=1/0,f=9007199254740991,p=NaN,d=4294967295,h=[[\"ary\",s],[\"bind\",1],[\"bindKey\",2],[\"curry\",8],[\"curryRight\",16],[\"flip\",512],[\"partial\",l],[\"partialRight\",64],[\"rearg\",256]],v=\"[object Arguments]\",g=\"[object Array]\",y=\"[object Boolean]\",m=\"[object Date]\",b=\"[object Error]\",_=\"[object Function]\",w=\"[object GeneratorFunction]\",x=\"[object Map]\",k=\"[object Number]\",S=\"[object Object]\",E=\"[object Promise]\",C=\"[object RegExp]\",T=\"[object Set]\",M=\"[object String]\",N=\"[object Symbol]\",P=\"[object WeakMap]\",z=\"[object ArrayBuffer]\",L=\"[object DataView]\",O=\"[object Float32Array]\",A=\"[object Float64Array]\",F=\"[object Int8Array]\",D=\"[object Int16Array]\",R=\"[object Int32Array]\",j=\"[object Uint8Array]\",U=\"[object Uint8ClampedArray]\",I=\"[object Uint16Array]\",$=\"[object Uint32Array]\",B=/\\b__p \\+= '';/g,W=/\\b(__p \\+=) '' \\+/g,V=/(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g,H=/&(?:amp|lt|gt|quot|#39);/g,q=/[&<>\"']/g,Q=RegExp(H.source),Y=RegExp(q.source),G=/<%-([\\s\\S]+?)%>/g,K=/<%([\\s\\S]+?)%>/g,Z=/<%=([\\s\\S]+?)%>/g,X=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,J=/^\\w*$/,ee=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,te=/[\\\\^$.*+?()[\\]{}|]/g,ne=RegExp(te.source),re=/^\\s+/,ae=/\\s/,ie=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,oe=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,ue=/,? & /,le=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,se=/[()=,{}\\[\\]\\/\\s]/,ce=/\\\\(\\\\)?/g,fe=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,pe=/\\w*$/,de=/^[-+]0x[0-9a-f]+$/i,he=/^0b[01]+$/i,ve=/^\\[object .+?Constructor\\]$/,ge=/^0o[0-7]+$/i,ye=/^(?:0|[1-9]\\d*)$/,me=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,be=/($^)/,_e=/['\\n\\r\\u2028\\u2029\\\\]/g,we=\"\\\\ud800-\\\\udfff\",xe=\"\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\",ke=\"\\\\u2700-\\\\u27bf\",Se=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",Ee=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",Ce=\"\\\\ufe0e\\\\ufe0f\",Te=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",Me=\"[\"+we+\"]\",Ne=\"[\"+Te+\"]\",Pe=\"[\"+xe+\"]\",ze=\"\\\\d+\",Le=\"[\"+ke+\"]\",Oe=\"[\"+Se+\"]\",Ae=\"[^\"+we+Te+ze+ke+Se+Ee+\"]\",Fe=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",De=\"[^\"+we+\"]\",Re=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",je=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",Ue=\"[\"+Ee+\"]\",Ie=\"\\\\u200d\",$e=\"(?:\"+Oe+\"|\"+Ae+\")\",Be=\"(?:\"+Ue+\"|\"+Ae+\")\",We=\"(?:['’](?:d|ll|m|re|s|t|ve))?\",Ve=\"(?:['’](?:D|LL|M|RE|S|T|VE))?\",He=\"(?:\"+Pe+\"|\"+Fe+\")?\",qe=\"[\"+Ce+\"]?\",Qe=qe+He+\"(?:\"+Ie+\"(?:\"+[De,Re,je].join(\"|\")+\")\"+qe+He+\")*\",Ye=\"(?:\"+[Le,Re,je].join(\"|\")+\")\"+Qe,Ge=\"(?:\"+[De+Pe+\"?\",Pe,Re,je,Me].join(\"|\")+\")\",Ke=RegExp(\"['’]\",\"g\"),Ze=RegExp(Pe,\"g\"),Xe=RegExp(Fe+\"(?=\"+Fe+\")|\"+Ge+Qe,\"g\"),Je=RegExp([Ue+\"?\"+Oe+\"+\"+We+\"(?=\"+[Ne,Ue,\"$\"].join(\"|\")+\")\",Be+\"+\"+Ve+\"(?=\"+[Ne,Ue+$e,\"$\"].join(\"|\")+\")\",Ue+\"?\"+$e+\"+\"+We,Ue+\"+\"+Ve,\"\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])\",\"\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])\",ze,Ye].join(\"|\"),\"g\"),et=RegExp(\"[\"+Ie+we+xe+Ce+\"]\"),tt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,nt=[\"Array\",\"Buffer\",\"DataView\",\"Date\",\"Error\",\"Float32Array\",\"Float64Array\",\"Function\",\"Int8Array\",\"Int16Array\",\"Int32Array\",\"Map\",\"Math\",\"Object\",\"Promise\",\"RegExp\",\"Set\",\"String\",\"Symbol\",\"TypeError\",\"Uint8Array\",\"Uint8ClampedArray\",\"Uint16Array\",\"Uint32Array\",\"WeakMap\",\"_\",\"clearTimeout\",\"isFinite\",\"parseInt\",\"setTimeout\"],rt=-1,at={};at[O]=at[A]=at[F]=at[D]=at[R]=at[j]=at[U]=at[I]=at[$]=!0,at[v]=at[g]=at[z]=at[y]=at[L]=at[m]=at[b]=at[_]=at[x]=at[k]=at[S]=at[C]=at[T]=at[M]=at[P]=!1;var it={};it[v]=it[g]=it[z]=it[L]=it[y]=it[m]=it[O]=it[A]=it[F]=it[D]=it[R]=it[x]=it[k]=it[S]=it[C]=it[T]=it[M]=it[N]=it[j]=it[U]=it[I]=it[$]=!0,it[b]=it[_]=it[P]=!1;var ot={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},ut=parseFloat,lt=parseInt,st=\"object\"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,ct=\"object\"==typeof self&&self&&self.Object===Object&&self,ft=st||ct||Function(\"return this\")(),pt=t&&!t.nodeType&&t,dt=pt&&e&&!e.nodeType&&e,ht=dt&&dt.exports===pt,vt=ht&&st.process,gt=function(){try{return dt&&dt.require&&dt.require(\"util\").types||vt&&vt.binding&&vt.binding(\"util\")}catch(e){}}(),yt=gt&&gt.isArrayBuffer,mt=gt&&gt.isDate,bt=gt&&gt.isMap,_t=gt&&gt.isRegExp,wt=gt&&gt.isSet,xt=gt&&gt.isTypedArray;function kt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function St(e,t,n,r){for(var a=-1,i=null==e?0:e.length;++a<i;){var o=e[a];t(r,o,n(o),e)}return r}function Et(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}function Ct(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););return e}function Tt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0}function Mt(e,t){for(var n=-1,r=null==e?0:e.length,a=0,i=[];++n<r;){var o=e[n];t(o,n,e)&&(i[a++]=o)}return i}function Nt(e,t){return!(null==e||!e.length)&&Ut(e,t,0)>-1}function Pt(e,t,n){for(var r=-1,a=null==e?0:e.length;++r<a;)if(n(t,e[r]))return!0;return!1}function zt(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a}function Lt(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e}function Ot(e,t,n,r){var a=-1,i=null==e?0:e.length;for(r&&i&&(n=e[++a]);++a<i;)n=t(n,e[a],a,e);return n}function At(e,t,n,r){var a=null==e?0:e.length;for(r&&a&&(n=e[--a]);a--;)n=t(n,e[a],a,e);return n}function Ft(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var Dt=Wt(\"length\");function Rt(e,t,n){var r;return n(e,(function(e,n,a){if(t(e,n,a))return r=n,!1})),r}function jt(e,t,n,r){for(var a=e.length,i=n+(r?1:-1);r?i--:++i<a;)if(t(e[i],i,e))return i;return-1}function Ut(e,t,n){return t==t?function(e,t,n){for(var r=n-1,a=e.length;++r<a;)if(e[r]===t)return r;return-1}(e,t,n):jt(e,$t,n)}function It(e,t,n,r){for(var a=n-1,i=e.length;++a<i;)if(r(e[a],t))return a;return-1}function $t(e){return e!=e}function Bt(e,t){var n=null==e?0:e.length;return n?qt(e,t)/n:p}function Wt(e){return function(t){return null==t?a:t[e]}}function Vt(e){return function(t){return null==e?a:e[t]}}function Ht(e,t,n,r,a){return a(e,(function(e,a,i){n=r?(r=!1,e):t(n,e,a,i)})),n}function qt(e,t){for(var n,r=-1,i=e.length;++r<i;){var o=t(e[r]);o!==a&&(n=n===a?o:n+o)}return n}function Qt(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}function Yt(e){return e?e.slice(0,pn(e)+1).replace(re,\"\"):e}function Gt(e){return function(t){return e(t)}}function Kt(e,t){return zt(t,(function(t){return e[t]}))}function Zt(e,t){return e.has(t)}function Xt(e,t){for(var n=-1,r=e.length;++n<r&&Ut(t,e[n],0)>-1;);return n}function Jt(e,t){for(var n=e.length;n--&&Ut(t,e[n],0)>-1;);return n}var en=Vt({À:\"A\",Á:\"A\",Â:\"A\",Ã:\"A\",Ä:\"A\",Å:\"A\",à:\"a\",á:\"a\",â:\"a\",ã:\"a\",ä:\"a\",å:\"a\",Ç:\"C\",ç:\"c\",Ð:\"D\",ð:\"d\",È:\"E\",É:\"E\",Ê:\"E\",Ë:\"E\",è:\"e\",é:\"e\",ê:\"e\",ë:\"e\",Ì:\"I\",Í:\"I\",Î:\"I\",Ï:\"I\",ì:\"i\",í:\"i\",î:\"i\",ï:\"i\",Ñ:\"N\",ñ:\"n\",Ò:\"O\",Ó:\"O\",Ô:\"O\",Õ:\"O\",Ö:\"O\",Ø:\"O\",ò:\"o\",ó:\"o\",ô:\"o\",õ:\"o\",ö:\"o\",ø:\"o\",Ù:\"U\",Ú:\"U\",Û:\"U\",Ü:\"U\",ù:\"u\",ú:\"u\",û:\"u\",ü:\"u\",Ý:\"Y\",ý:\"y\",ÿ:\"y\",Æ:\"Ae\",æ:\"ae\",Þ:\"Th\",þ:\"th\",ß:\"ss\",Ā:\"A\",Ă:\"A\",Ą:\"A\",ā:\"a\",ă:\"a\",ą:\"a\",Ć:\"C\",Ĉ:\"C\",Ċ:\"C\",Č:\"C\",ć:\"c\",ĉ:\"c\",ċ:\"c\",č:\"c\",Ď:\"D\",Đ:\"D\",ď:\"d\",đ:\"d\",Ē:\"E\",Ĕ:\"E\",Ė:\"E\",Ę:\"E\",Ě:\"E\",ē:\"e\",ĕ:\"e\",ė:\"e\",ę:\"e\",ě:\"e\",Ĝ:\"G\",Ğ:\"G\",Ġ:\"G\",Ģ:\"G\",ĝ:\"g\",ğ:\"g\",ġ:\"g\",ģ:\"g\",Ĥ:\"H\",Ħ:\"H\",ĥ:\"h\",ħ:\"h\",Ĩ:\"I\",Ī:\"I\",Ĭ:\"I\",Į:\"I\",İ:\"I\",ĩ:\"i\",ī:\"i\",ĭ:\"i\",į:\"i\",ı:\"i\",Ĵ:\"J\",ĵ:\"j\",Ķ:\"K\",ķ:\"k\",ĸ:\"k\",Ĺ:\"L\",Ļ:\"L\",Ľ:\"L\",Ŀ:\"L\",Ł:\"L\",ĺ:\"l\",ļ:\"l\",ľ:\"l\",ŀ:\"l\",ł:\"l\",Ń:\"N\",Ņ:\"N\",Ň:\"N\",Ŋ:\"N\",ń:\"n\",ņ:\"n\",ň:\"n\",ŋ:\"n\",Ō:\"O\",Ŏ:\"O\",Ő:\"O\",ō:\"o\",ŏ:\"o\",ő:\"o\",Ŕ:\"R\",Ŗ:\"R\",Ř:\"R\",ŕ:\"r\",ŗ:\"r\",ř:\"r\",Ś:\"S\",Ŝ:\"S\",Ş:\"S\",Š:\"S\",ś:\"s\",ŝ:\"s\",ş:\"s\",š:\"s\",Ţ:\"T\",Ť:\"T\",Ŧ:\"T\",ţ:\"t\",ť:\"t\",ŧ:\"t\",Ũ:\"U\",Ū:\"U\",Ŭ:\"U\",Ů:\"U\",Ű:\"U\",Ų:\"U\",ũ:\"u\",ū:\"u\",ŭ:\"u\",ů:\"u\",ű:\"u\",ų:\"u\",Ŵ:\"W\",ŵ:\"w\",Ŷ:\"Y\",ŷ:\"y\",Ÿ:\"Y\",Ź:\"Z\",Ż:\"Z\",Ž:\"Z\",ź:\"z\",ż:\"z\",ž:\"z\",IJ:\"IJ\",ij:\"ij\",Œ:\"Oe\",œ:\"oe\",ʼn:\"'n\",ſ:\"s\"}),tn=Vt({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"});function nn(e){return\"\\\\\"+ot[e]}function rn(e){return et.test(e)}function an(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function on(e,t){return function(n){return e(t(n))}}function un(e,t){for(var n=-1,r=e.length,a=0,i=[];++n<r;){var o=e[n];o!==t&&o!==u||(e[n]=u,i[a++]=n)}return i}function ln(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}function sn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=[e,e]})),n}function cn(e){return rn(e)?function(e){for(var t=Xe.lastIndex=0;Xe.test(e);)++t;return t}(e):Dt(e)}function fn(e){return rn(e)?function(e){return e.match(Xe)||[]}(e):function(e){return e.split(\"\")}(e)}function pn(e){for(var t=e.length;t--&&ae.test(e.charAt(t)););return t}var dn=Vt({\"&amp;\":\"&\",\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&#39;\":\"'\"}),hn=function e(t){var n,r=(t=null==t?ft:hn.defaults(ft.Object(),t,hn.pick(ft,nt))).Array,ae=t.Date,we=t.Error,xe=t.Function,ke=t.Math,Se=t.Object,Ee=t.RegExp,Ce=t.String,Te=t.TypeError,Me=r.prototype,Ne=xe.prototype,Pe=Se.prototype,ze=t[\"__core-js_shared__\"],Le=Ne.toString,Oe=Pe.hasOwnProperty,Ae=0,Fe=(n=/[^.]+$/.exec(ze&&ze.keys&&ze.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+n:\"\",De=Pe.toString,Re=Le.call(Se),je=ft._,Ue=Ee(\"^\"+Le.call(Oe).replace(te,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),Ie=ht?t.Buffer:a,$e=t.Symbol,Be=t.Uint8Array,We=Ie?Ie.allocUnsafe:a,Ve=on(Se.getPrototypeOf,Se),He=Se.create,qe=Pe.propertyIsEnumerable,Qe=Me.splice,Ye=$e?$e.isConcatSpreadable:a,Ge=$e?$e.iterator:a,Xe=$e?$e.toStringTag:a,et=function(){try{var e=li(Se,\"defineProperty\");return e({},\"\",{}),e}catch(e){}}(),ot=t.clearTimeout!==ft.clearTimeout&&t.clearTimeout,st=ae&&ae.now!==ft.Date.now&&ae.now,ct=t.setTimeout!==ft.setTimeout&&t.setTimeout,pt=ke.ceil,dt=ke.floor,vt=Se.getOwnPropertySymbols,gt=Ie?Ie.isBuffer:a,Dt=t.isFinite,Vt=Me.join,vn=on(Se.keys,Se),gn=ke.max,yn=ke.min,mn=ae.now,bn=t.parseInt,_n=ke.random,wn=Me.reverse,xn=li(t,\"DataView\"),kn=li(t,\"Map\"),Sn=li(t,\"Promise\"),En=li(t,\"Set\"),Cn=li(t,\"WeakMap\"),Tn=li(Se,\"create\"),Mn=Cn&&new Cn,Nn={},Pn=Di(xn),zn=Di(kn),Ln=Di(Sn),On=Di(En),An=Di(Cn),Fn=$e?$e.prototype:a,Dn=Fn?Fn.valueOf:a,Rn=Fn?Fn.toString:a;function jn(e){if(eu(e)&&!Wo(e)&&!(e instanceof Bn)){if(e instanceof $n)return e;if(Oe.call(e,\"__wrapped__\"))return Ri(e)}return new $n(e)}var Un=function(){function e(){}return function(t){if(!Jo(t))return{};if(He)return He(t);e.prototype=t;var n=new e;return e.prototype=a,n}}();function In(){}function $n(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=a}function Bn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=d,this.__views__=[]}function Wn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Vn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Hn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function qn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Hn;++t<n;)this.add(e[t])}function Qn(e){var t=this.__data__=new Vn(e);this.size=t.size}function Yn(e,t){var n=Wo(e),r=!n&&Bo(e),a=!n&&!r&&Qo(e),i=!n&&!r&&!a&&lu(e),o=n||r||a||i,u=o?Qt(e.length,Ce):[],l=u.length;for(var s in e)!t&&!Oe.call(e,s)||o&&(\"length\"==s||a&&(\"offset\"==s||\"parent\"==s)||i&&(\"buffer\"==s||\"byteLength\"==s||\"byteOffset\"==s)||vi(s,l))||u.push(s);return u}function Gn(e){var t=e.length;return t?e[Hr(0,t-1)]:a}function Kn(e,t){return zi(Ca(e),ir(t,0,e.length))}function Zn(e){return zi(Ca(e))}function Xn(e,t,n){(n!==a&&!Uo(e[t],n)||n===a&&!(t in e))&&rr(e,t,n)}function Jn(e,t,n){var r=e[t];Oe.call(e,t)&&Uo(r,n)&&(n!==a||t in e)||rr(e,t,n)}function er(e,t){for(var n=e.length;n--;)if(Uo(e[n][0],t))return n;return-1}function tr(e,t,n,r){return cr(e,(function(e,a,i){t(r,e,n(e),i)})),r}function nr(e,t){return e&&Ta(t,Pu(t),e)}function rr(e,t,n){\"__proto__\"==t&&et?et(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function ar(e,t){for(var n=-1,i=t.length,o=r(i),u=null==e;++n<i;)o[n]=u?a:Eu(e,t[n]);return o}function ir(e,t,n){return e==e&&(n!==a&&(e=e<=n?e:n),t!==a&&(e=e>=t?e:t)),e}function or(e,t,n,r,i,o){var u,l=1&t,s=2&t,c=4&t;if(n&&(u=i?n(e,r,i,o):n(e)),u!==a)return u;if(!Jo(e))return e;var f=Wo(e);if(f){if(u=function(e){var t=e.length,n=new e.constructor(t);return t&&\"string\"==typeof e[0]&&Oe.call(e,\"index\")&&(n.index=e.index,n.input=e.input),n}(e),!l)return Ca(e,u)}else{var p=fi(e),d=p==_||p==w;if(Qo(e))return _a(e,l);if(p==S||p==v||d&&!i){if(u=s||d?{}:di(e),!l)return s?function(e,t){return Ta(e,ci(e),t)}(e,function(e,t){return e&&Ta(t,zu(t),e)}(u,e)):function(e,t){return Ta(e,si(e),t)}(e,nr(u,e))}else{if(!it[p])return i?e:{};u=function(e,t,n){var r,a=e.constructor;switch(t){case z:return wa(e);case y:case m:return new a(+e);case L:return function(e,t){var n=t?wa(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case O:case A:case F:case D:case R:case j:case U:case I:case $:return xa(e,n);case x:return new a;case k:case M:return new a(e);case C:return function(e){var t=new e.constructor(e.source,pe.exec(e));return t.lastIndex=e.lastIndex,t}(e);case T:return new a;case N:return r=e,Dn?Se(Dn.call(r)):{}}}(e,p,l)}}o||(o=new Qn);var h=o.get(e);if(h)return h;o.set(e,u),iu(e)?e.forEach((function(r){u.add(or(r,t,n,r,e,o))})):tu(e)&&e.forEach((function(r,a){u.set(a,or(r,t,n,a,e,o))}));var g=f?a:(c?s?ti:ei:s?zu:Pu)(e);return Et(g||e,(function(r,a){g&&(r=e[a=r]),Jn(u,a,or(r,t,n,a,e,o))})),u}function ur(e,t,n){var r=n.length;if(null==e)return!r;for(e=Se(e);r--;){var i=n[r],o=t[i],u=e[i];if(u===a&&!(i in e)||!o(u))return!1}return!0}function lr(e,t,n){if(\"function\"!=typeof e)throw new Te(i);return Ti((function(){e.apply(a,n)}),t)}function sr(e,t,n,r){var a=-1,i=Nt,o=!0,u=e.length,l=[],s=t.length;if(!u)return l;n&&(t=zt(t,Gt(n))),r?(i=Pt,o=!1):t.length>=200&&(i=Zt,o=!1,t=new qn(t));e:for(;++a<u;){var c=e[a],f=null==n?c:n(c);if(c=r||0!==c?c:0,o&&f==f){for(var p=s;p--;)if(t[p]===f)continue e;l.push(c)}else i(t,f,r)||l.push(c)}return l}jn.templateSettings={escape:G,evaluate:K,interpolate:Z,variable:\"\",imports:{_:jn}},jn.prototype=In.prototype,jn.prototype.constructor=jn,$n.prototype=Un(In.prototype),$n.prototype.constructor=$n,Bn.prototype=Un(In.prototype),Bn.prototype.constructor=Bn,Wn.prototype.clear=function(){this.__data__=Tn?Tn(null):{},this.size=0},Wn.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Wn.prototype.get=function(e){var t=this.__data__;if(Tn){var n=t[e];return n===o?a:n}return Oe.call(t,e)?t[e]:a},Wn.prototype.has=function(e){var t=this.__data__;return Tn?t[e]!==a:Oe.call(t,e)},Wn.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=Tn&&t===a?o:t,this},Vn.prototype.clear=function(){this.__data__=[],this.size=0},Vn.prototype.delete=function(e){var t=this.__data__,n=er(t,e);return!(n<0||(n==t.length-1?t.pop():Qe.call(t,n,1),--this.size,0))},Vn.prototype.get=function(e){var t=this.__data__,n=er(t,e);return n<0?a:t[n][1]},Vn.prototype.has=function(e){return er(this.__data__,e)>-1},Vn.prototype.set=function(e,t){var n=this.__data__,r=er(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Hn.prototype.clear=function(){this.size=0,this.__data__={hash:new Wn,map:new(kn||Vn),string:new Wn}},Hn.prototype.delete=function(e){var t=oi(this,e).delete(e);return this.size-=t?1:0,t},Hn.prototype.get=function(e){return oi(this,e).get(e)},Hn.prototype.has=function(e){return oi(this,e).has(e)},Hn.prototype.set=function(e,t){var n=oi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},qn.prototype.add=qn.prototype.push=function(e){return this.__data__.set(e,o),this},qn.prototype.has=function(e){return this.__data__.has(e)},Qn.prototype.clear=function(){this.__data__=new Vn,this.size=0},Qn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Qn.prototype.get=function(e){return this.__data__.get(e)},Qn.prototype.has=function(e){return this.__data__.has(e)},Qn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Vn){var r=n.__data__;if(!kn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Hn(r)}return n.set(e,t),this.size=n.size,this};var cr=Pa(mr),fr=Pa(br,!0);function pr(e,t){var n=!0;return cr(e,(function(e,r,a){return n=!!t(e,r,a)})),n}function dr(e,t,n){for(var r=-1,i=e.length;++r<i;){var o=e[r],u=t(o);if(null!=u&&(l===a?u==u&&!uu(u):n(u,l)))var l=u,s=o}return s}function hr(e,t){var n=[];return cr(e,(function(e,r,a){t(e,r,a)&&n.push(e)})),n}function vr(e,t,n,r,a){var i=-1,o=e.length;for(n||(n=hi),a||(a=[]);++i<o;){var u=e[i];t>0&&n(u)?t>1?vr(u,t-1,n,r,a):Lt(a,u):r||(a[a.length]=u)}return a}var gr=za(),yr=za(!0);function mr(e,t){return e&&gr(e,t,Pu)}function br(e,t){return e&&yr(e,t,Pu)}function _r(e,t){return Mt(t,(function(t){return Ko(e[t])}))}function wr(e,t){for(var n=0,r=(t=ga(t,e)).length;null!=e&&n<r;)e=e[Fi(t[n++])];return n&&n==r?e:a}function xr(e,t,n){var r=t(e);return Wo(e)?r:Lt(r,n(e))}function kr(e){return null==e?e===a?\"[object Undefined]\":\"[object Null]\":Xe&&Xe in Se(e)?function(e){var t=Oe.call(e,Xe),n=e[Xe];try{e[Xe]=a;var r=!0}catch(e){}var i=De.call(e);return r&&(t?e[Xe]=n:delete e[Xe]),i}(e):function(e){return De.call(e)}(e)}function Sr(e,t){return e>t}function Er(e,t){return null!=e&&Oe.call(e,t)}function Cr(e,t){return null!=e&&t in Se(e)}function Tr(e,t,n){for(var i=n?Pt:Nt,o=e[0].length,u=e.length,l=u,s=r(u),c=1/0,f=[];l--;){var p=e[l];l&&t&&(p=zt(p,Gt(t))),c=yn(p.length,c),s[l]=!n&&(t||o>=120&&p.length>=120)?new qn(l&&p):a}p=e[0];var d=-1,h=s[0];e:for(;++d<o&&f.length<c;){var v=p[d],g=t?t(v):v;if(v=n||0!==v?v:0,!(h?Zt(h,g):i(f,g,n))){for(l=u;--l;){var y=s[l];if(!(y?Zt(y,g):i(e[l],g,n)))continue e}h&&h.push(g),f.push(v)}}return f}function Mr(e,t,n){var r=null==(e=Si(e,t=ga(t,e)))?e:e[Fi(Yi(t))];return null==r?a:kt(r,e,n)}function Nr(e){return eu(e)&&kr(e)==v}function Pr(e,t,n,r,i){return e===t||(null==e||null==t||!eu(e)&&!eu(t)?e!=e&&t!=t:function(e,t,n,r,i,o){var u=Wo(e),l=Wo(t),s=u?g:fi(e),c=l?g:fi(t),f=(s=s==v?S:s)==S,p=(c=c==v?S:c)==S,d=s==c;if(d&&Qo(e)){if(!Qo(t))return!1;u=!0,f=!1}if(d&&!f)return o||(o=new Qn),u||lu(e)?Xa(e,t,n,r,i,o):function(e,t,n,r,a,i,o){switch(n){case L:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case z:return!(e.byteLength!=t.byteLength||!i(new Be(e),new Be(t)));case y:case m:case k:return Uo(+e,+t);case b:return e.name==t.name&&e.message==t.message;case C:case M:return e==t+\"\";case x:var u=an;case T:var l=1&r;if(u||(u=ln),e.size!=t.size&&!l)return!1;var s=o.get(e);if(s)return s==t;r|=2,o.set(e,t);var c=Xa(u(e),u(t),r,a,i,o);return o.delete(e),c;case N:if(Dn)return Dn.call(e)==Dn.call(t)}return!1}(e,t,s,n,r,i,o);if(!(1&n)){var h=f&&Oe.call(e,\"__wrapped__\"),_=p&&Oe.call(t,\"__wrapped__\");if(h||_){var w=h?e.value():e,E=_?t.value():t;return o||(o=new Qn),i(w,E,n,r,o)}}return!!d&&(o||(o=new Qn),function(e,t,n,r,i,o){var u=1&n,l=ei(e),s=l.length;if(s!=ei(t).length&&!u)return!1;for(var c=s;c--;){var f=l[c];if(!(u?f in t:Oe.call(t,f)))return!1}var p=o.get(e),d=o.get(t);if(p&&d)return p==t&&d==e;var h=!0;o.set(e,t),o.set(t,e);for(var v=u;++c<s;){var g=e[f=l[c]],y=t[f];if(r)var m=u?r(y,g,f,t,e,o):r(g,y,f,e,t,o);if(!(m===a?g===y||i(g,y,n,r,o):m)){h=!1;break}v||(v=\"constructor\"==f)}if(h&&!v){var b=e.constructor,_=t.constructor;b==_||!(\"constructor\"in e)||!(\"constructor\"in t)||\"function\"==typeof b&&b instanceof b&&\"function\"==typeof _&&_ instanceof _||(h=!1)}return o.delete(e),o.delete(t),h}(e,t,n,r,i,o))}(e,t,n,r,Pr,i))}function zr(e,t,n,r){var i=n.length,o=i,u=!r;if(null==e)return!o;for(e=Se(e);i--;){var l=n[i];if(u&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i<o;){var s=(l=n[i])[0],c=e[s],f=l[1];if(u&&l[2]){if(c===a&&!(s in e))return!1}else{var p=new Qn;if(r)var d=r(c,f,s,e,t,p);if(!(d===a?Pr(f,c,3,r,p):d))return!1}}return!0}function Lr(e){return!(!Jo(e)||(t=e,Fe&&Fe in t))&&(Ko(e)?Ue:ve).test(Di(e));var t}function Or(e){return\"function\"==typeof e?e:null==e?nl:\"object\"==typeof e?Wo(e)?jr(e[0],e[1]):Rr(e):fl(e)}function Ar(e){if(!_i(e))return vn(e);var t=[];for(var n in Se(e))Oe.call(e,n)&&\"constructor\"!=n&&t.push(n);return t}function Fr(e,t){return e<t}function Dr(e,t){var n=-1,a=Ho(e)?r(e.length):[];return cr(e,(function(e,r,i){a[++n]=t(e,r,i)})),a}function Rr(e){var t=ui(e);return 1==t.length&&t[0][2]?xi(t[0][0],t[0][1]):function(n){return n===e||zr(n,e,t)}}function jr(e,t){return yi(e)&&wi(t)?xi(Fi(e),t):function(n){var r=Eu(n,e);return r===a&&r===t?Cu(n,e):Pr(t,r,3)}}function Ur(e,t,n,r,i){e!==t&&gr(t,(function(o,u){if(i||(i=new Qn),Jo(o))!function(e,t,n,r,i,o,u){var l=Ei(e,n),s=Ei(t,n),c=u.get(s);if(c)Xn(e,n,c);else{var f=o?o(l,s,n+\"\",e,t,u):a,p=f===a;if(p){var d=Wo(s),h=!d&&Qo(s),v=!d&&!h&&lu(s);f=s,d||h||v?Wo(l)?f=l:qo(l)?f=Ca(l):h?(p=!1,f=_a(s,!0)):v?(p=!1,f=xa(s,!0)):f=[]:ru(s)||Bo(s)?(f=l,Bo(l)?f=gu(l):Jo(l)&&!Ko(l)||(f=di(s))):p=!1}p&&(u.set(s,f),i(f,s,r,o,u),u.delete(s)),Xn(e,n,f)}}(e,t,u,n,Ur,r,i);else{var l=r?r(Ei(e,u),o,u+\"\",e,t,i):a;l===a&&(l=o),Xn(e,u,l)}}),zu)}function Ir(e,t){var n=e.length;if(n)return vi(t+=t<0?n:0,n)?e[t]:a}function $r(e,t,n){t=t.length?zt(t,(function(e){return Wo(e)?function(t){return wr(t,1===e.length?e[0]:e)}:e})):[nl];var r=-1;t=zt(t,Gt(ii()));var a=Dr(e,(function(e,n,a){var i=zt(t,(function(t){return t(e)}));return{criteria:i,index:++r,value:e}}));return function(e,t){var r=e.length;for(e.sort((function(e,t){return function(e,t,n){for(var r=-1,a=e.criteria,i=t.criteria,o=a.length,u=n.length;++r<o;){var l=ka(a[r],i[r]);if(l)return r>=u?l:l*(\"desc\"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}));r--;)e[r]=e[r].value;return e}(a)}function Br(e,t,n){for(var r=-1,a=t.length,i={};++r<a;){var o=t[r],u=wr(e,o);n(u,o)&&Kr(i,ga(o,e),u)}return i}function Wr(e,t,n,r){var a=r?It:Ut,i=-1,o=t.length,u=e;for(e===t&&(t=Ca(t)),n&&(u=zt(e,Gt(n)));++i<o;)for(var l=0,s=t[i],c=n?n(s):s;(l=a(u,c,l,r))>-1;)u!==e&&Qe.call(u,l,1),Qe.call(e,l,1);return e}function Vr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var a=t[n];if(n==r||a!==i){var i=a;vi(a)?Qe.call(e,a,1):la(e,a)}}return e}function Hr(e,t){return e+dt(_n()*(t-e+1))}function qr(e,t){var n=\"\";if(!e||t<1||t>f)return n;do{t%2&&(n+=e),(t=dt(t/2))&&(e+=e)}while(t);return n}function Qr(e,t){return Mi(ki(e,t,nl),e+\"\")}function Yr(e){return Gn(Uu(e))}function Gr(e,t){var n=Uu(e);return zi(n,ir(t,0,n.length))}function Kr(e,t,n,r){if(!Jo(e))return e;for(var i=-1,o=(t=ga(t,e)).length,u=o-1,l=e;null!=l&&++i<o;){var s=Fi(t[i]),c=n;if(\"__proto__\"===s||\"constructor\"===s||\"prototype\"===s)return e;if(i!=u){var f=l[s];(c=r?r(f,s,l):a)===a&&(c=Jo(f)?f:vi(t[i+1])?[]:{})}Jn(l,s,c),l=l[s]}return e}var Zr=Mn?function(e,t){return Mn.set(e,t),e}:nl,Xr=et?function(e,t){return et(e,\"toString\",{configurable:!0,enumerable:!1,value:Ju(t),writable:!0})}:nl;function Jr(e){return zi(Uu(e))}function ea(e,t,n){var a=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=r(i);++a<i;)o[a]=e[a+t];return o}function ta(e,t){var n;return cr(e,(function(e,r,a){return!(n=t(e,r,a))})),!!n}function na(e,t,n){var r=0,a=null==e?r:e.length;if(\"number\"==typeof t&&t==t&&a<=2147483647){for(;r<a;){var i=r+a>>>1,o=e[i];null!==o&&!uu(o)&&(n?o<=t:o<t)?r=i+1:a=i}return a}return ra(e,t,nl,n)}function ra(e,t,n,r){var i=0,o=null==e?0:e.length;if(0===o)return 0;for(var u=(t=n(t))!=t,l=null===t,s=uu(t),c=t===a;i<o;){var f=dt((i+o)/2),p=n(e[f]),d=p!==a,h=null===p,v=p==p,g=uu(p);if(u)var y=r||v;else y=c?v&&(r||d):l?v&&d&&(r||!h):s?v&&d&&!h&&(r||!g):!h&&!g&&(r?p<=t:p<t);y?i=f+1:o=f}return yn(o,4294967294)}function aa(e,t){for(var n=-1,r=e.length,a=0,i=[];++n<r;){var o=e[n],u=t?t(o):o;if(!n||!Uo(u,l)){var l=u;i[a++]=0===o?0:o}}return i}function ia(e){return\"number\"==typeof e?e:uu(e)?p:+e}function oa(e){if(\"string\"==typeof e)return e;if(Wo(e))return zt(e,oa)+\"\";if(uu(e))return Rn?Rn.call(e):\"\";var t=e+\"\";return\"0\"==t&&1/e==-1/0?\"-0\":t}function ua(e,t,n){var r=-1,a=Nt,i=e.length,o=!0,u=[],l=u;if(n)o=!1,a=Pt;else if(i>=200){var s=t?null:qa(e);if(s)return ln(s);o=!1,a=Zt,l=new qn}else l=t?[]:u;e:for(;++r<i;){var c=e[r],f=t?t(c):c;if(c=n||0!==c?c:0,o&&f==f){for(var p=l.length;p--;)if(l[p]===f)continue e;t&&l.push(f),u.push(c)}else a(l,f,n)||(l!==u&&l.push(f),u.push(c))}return u}function la(e,t){return null==(e=Si(e,t=ga(t,e)))||delete e[Fi(Yi(t))]}function sa(e,t,n,r){return Kr(e,t,n(wr(e,t)),r)}function ca(e,t,n,r){for(var a=e.length,i=r?a:-1;(r?i--:++i<a)&&t(e[i],i,e););return n?ea(e,r?0:i,r?i+1:a):ea(e,r?i+1:0,r?a:i)}function fa(e,t){var n=e;return n instanceof Bn&&(n=n.value()),Ot(t,(function(e,t){return t.func.apply(t.thisArg,Lt([e],t.args))}),n)}function pa(e,t,n){var a=e.length;if(a<2)return a?ua(e[0]):[];for(var i=-1,o=r(a);++i<a;)for(var u=e[i],l=-1;++l<a;)l!=i&&(o[i]=sr(o[i]||u,e[l],t,n));return ua(vr(o,1),t,n)}function da(e,t,n){for(var r=-1,i=e.length,o=t.length,u={};++r<i;){var l=r<o?t[r]:a;n(u,e[r],l)}return u}function ha(e){return qo(e)?e:[]}function va(e){return\"function\"==typeof e?e:nl}function ga(e,t){return Wo(e)?e:yi(e,t)?[e]:Ai(yu(e))}var ya=Qr;function ma(e,t,n){var r=e.length;return n=n===a?r:n,!t&&n>=r?e:ea(e,t,n)}var ba=ot||function(e){return ft.clearTimeout(e)};function _a(e,t){if(t)return e.slice();var n=e.length,r=We?We(n):new e.constructor(n);return e.copy(r),r}function wa(e){var t=new e.constructor(e.byteLength);return new Be(t).set(new Be(e)),t}function xa(e,t){var n=t?wa(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function ka(e,t){if(e!==t){var n=e!==a,r=null===e,i=e==e,o=uu(e),u=t!==a,l=null===t,s=t==t,c=uu(t);if(!l&&!c&&!o&&e>t||o&&u&&s&&!l&&!c||r&&u&&s||!n&&s||!i)return 1;if(!r&&!o&&!c&&e<t||c&&n&&i&&!r&&!o||l&&n&&i||!u&&i||!s)return-1}return 0}function Sa(e,t,n,a){for(var i=-1,o=e.length,u=n.length,l=-1,s=t.length,c=gn(o-u,0),f=r(s+c),p=!a;++l<s;)f[l]=t[l];for(;++i<u;)(p||i<o)&&(f[n[i]]=e[i]);for(;c--;)f[l++]=e[i++];return f}function Ea(e,t,n,a){for(var i=-1,o=e.length,u=-1,l=n.length,s=-1,c=t.length,f=gn(o-l,0),p=r(f+c),d=!a;++i<f;)p[i]=e[i];for(var h=i;++s<c;)p[h+s]=t[s];for(;++u<l;)(d||i<o)&&(p[h+n[u]]=e[i++]);return p}function Ca(e,t){var n=-1,a=e.length;for(t||(t=r(a));++n<a;)t[n]=e[n];return t}function Ta(e,t,n,r){var i=!n;n||(n={});for(var o=-1,u=t.length;++o<u;){var l=t[o],s=r?r(n[l],e[l],l,n,e):a;s===a&&(s=e[l]),i?rr(n,l,s):Jn(n,l,s)}return n}function Ma(e,t){return function(n,r){var a=Wo(n)?St:tr,i=t?t():{};return a(n,e,ii(r,2),i)}}function Na(e){return Qr((function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]:a,u=i>2?n[2]:a;for(o=e.length>3&&\"function\"==typeof o?(i--,o):a,u&&gi(n[0],n[1],u)&&(o=i<3?a:o,i=1),t=Se(t);++r<i;){var l=n[r];l&&e(t,l,r,o)}return t}))}function Pa(e,t){return function(n,r){if(null==n)return n;if(!Ho(n))return e(n,r);for(var a=n.length,i=t?a:-1,o=Se(n);(t?i--:++i<a)&&!1!==r(o[i],i,o););return n}}function za(e){return function(t,n,r){for(var a=-1,i=Se(t),o=r(t),u=o.length;u--;){var l=o[e?u:++a];if(!1===n(i[l],l,i))break}return t}}function La(e){return function(t){var n=rn(t=yu(t))?fn(t):a,r=n?n[0]:t.charAt(0),i=n?ma(n,1).join(\"\"):t.slice(1);return r[e]()+i}}function Oa(e){return function(t){return Ot(Ku(Bu(t).replace(Ke,\"\")),e,\"\")}}function Aa(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=Un(e.prototype),r=e.apply(n,t);return Jo(r)?r:n}}function Fa(e){return function(t,n,r){var i=Se(t);if(!Ho(t)){var o=ii(n,3);t=Pu(t),n=function(e){return o(i[e],e,i)}}var u=e(t,n,r);return u>-1?i[o?t[u]:u]:a}}function Da(e){return Ja((function(t){var n=t.length,r=n,o=$n.prototype.thru;for(e&&t.reverse();r--;){var u=t[r];if(\"function\"!=typeof u)throw new Te(i);if(o&&!l&&\"wrapper\"==ri(u))var l=new $n([],!0)}for(r=l?r:n;++r<n;){var s=ri(u=t[r]),c=\"wrapper\"==s?ni(u):a;l=c&&mi(c[0])&&424==c[1]&&!c[4].length&&1==c[9]?l[ri(c[0])].apply(l,c[3]):1==u.length&&mi(u)?l[s]():l.thru(u)}return function(){var e=arguments,r=e[0];if(l&&1==e.length&&Wo(r))return l.plant(r).value();for(var a=0,i=n?t[a].apply(this,e):r;++a<n;)i=t[a].call(this,i);return i}}))}function Ra(e,t,n,i,o,u,l,c,f,p){var d=t&s,h=1&t,v=2&t,g=24&t,y=512&t,m=v?a:Aa(e);return function s(){for(var b=arguments.length,_=r(b),w=b;w--;)_[w]=arguments[w];if(g)var x=ai(s),k=function(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}(_,x);if(i&&(_=Sa(_,i,o,g)),u&&(_=Ea(_,u,l,g)),b-=k,g&&b<p){var S=un(_,x);return Va(e,t,Ra,s.placeholder,n,_,S,c,f,p-b)}var E=h?n:this,C=v?E[e]:e;return b=_.length,c?_=function(e,t){for(var n=e.length,r=yn(t.length,n),i=Ca(e);r--;){var o=t[r];e[r]=vi(o,n)?i[o]:a}return e}(_,c):y&&b>1&&_.reverse(),d&&f<b&&(_.length=f),this&&this!==ft&&this instanceof s&&(C=m||Aa(C)),C.apply(E,_)}}function ja(e,t){return function(n,r){return function(e,t,n,r){return mr(e,(function(e,a,i){t(r,n(e),a,i)})),r}(n,e,t(r),{})}}function Ua(e,t){return function(n,r){var i;if(n===a&&r===a)return t;if(n!==a&&(i=n),r!==a){if(i===a)return r;\"string\"==typeof n||\"string\"==typeof r?(n=oa(n),r=oa(r)):(n=ia(n),r=ia(r)),i=e(n,r)}return i}}function Ia(e){return Ja((function(t){return t=zt(t,Gt(ii())),Qr((function(n){var r=this;return e(t,(function(e){return kt(e,r,n)}))}))}))}function $a(e,t){var n=(t=t===a?\" \":oa(t)).length;if(n<2)return n?qr(t,e):t;var r=qr(t,pt(e/cn(t)));return rn(t)?ma(fn(r),0,e).join(\"\"):r.slice(0,e)}function Ba(e){return function(t,n,i){return i&&\"number\"!=typeof i&&gi(t,n,i)&&(n=i=a),t=pu(t),n===a?(n=t,t=0):n=pu(n),function(e,t,n,a){for(var i=-1,o=gn(pt((t-e)/(n||1)),0),u=r(o);o--;)u[a?o:++i]=e,e+=n;return u}(t,n,i=i===a?t<n?1:-1:pu(i),e)}}function Wa(e){return function(t,n){return\"string\"==typeof t&&\"string\"==typeof n||(t=vu(t),n=vu(n)),e(t,n)}}function Va(e,t,n,r,i,o,u,s,c,f){var p=8&t;t|=p?l:64,4&(t&=~(p?64:l))||(t&=-4);var d=[e,t,i,p?o:a,p?u:a,p?a:o,p?a:u,s,c,f],h=n.apply(a,d);return mi(e)&&Ci(h,d),h.placeholder=r,Ni(h,e,t)}function Ha(e){var t=ke[e];return function(e,n){if(e=vu(e),(n=null==n?0:yn(du(n),292))&&Dt(e)){var r=(yu(e)+\"e\").split(\"e\");return+((r=(yu(t(r[0]+\"e\"+(+r[1]+n)))+\"e\").split(\"e\"))[0]+\"e\"+(+r[1]-n))}return t(e)}}var qa=En&&1/ln(new En([,-0]))[1]==c?function(e){return new En(e)}:ul;function Qa(e){return function(t){var n=fi(t);return n==x?an(t):n==T?sn(t):function(e,t){return zt(t,(function(t){return[t,e[t]]}))}(t,e(t))}}function Ya(e,t,n,o,c,f,p,d){var h=2&t;if(!h&&\"function\"!=typeof e)throw new Te(i);var v=o?o.length:0;if(v||(t&=-97,o=c=a),p=p===a?p:gn(du(p),0),d=d===a?d:du(d),v-=c?c.length:0,64&t){var g=o,y=c;o=c=a}var m=h?a:ni(e),b=[e,t,n,o,c,g,y,f,p,d];if(m&&function(e,t){var n=e[1],r=t[1],a=n|r,i=a<131,o=r==s&&8==n||r==s&&256==n&&e[7].length<=t[8]||384==r&&t[7].length<=t[8]&&8==n;if(!i&&!o)return e;1&r&&(e[2]=t[2],a|=1&n?0:4);var l=t[3];if(l){var c=e[3];e[3]=c?Sa(c,l,t[4]):l,e[4]=c?un(e[3],u):t[4]}(l=t[5])&&(c=e[5],e[5]=c?Ea(c,l,t[6]):l,e[6]=c?un(e[5],u):t[6]),(l=t[7])&&(e[7]=l),r&s&&(e[8]=null==e[8]?t[8]:yn(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=a}(b,m),e=b[0],t=b[1],n=b[2],o=b[3],c=b[4],!(d=b[9]=b[9]===a?h?0:e.length:gn(b[9]-v,0))&&24&t&&(t&=-25),t&&1!=t)_=8==t||16==t?function(e,t,n){var i=Aa(e);return function o(){for(var u=arguments.length,l=r(u),s=u,c=ai(o);s--;)l[s]=arguments[s];var f=u<3&&l[0]!==c&&l[u-1]!==c?[]:un(l,c);return(u-=f.length)<n?Va(e,t,Ra,o.placeholder,a,l,f,a,a,n-u):kt(this&&this!==ft&&this instanceof o?i:e,this,l)}}(e,t,d):t!=l&&33!=t||c.length?Ra.apply(a,b):function(e,t,n,a){var i=1&t,o=Aa(e);return function t(){for(var u=-1,l=arguments.length,s=-1,c=a.length,f=r(c+l),p=this&&this!==ft&&this instanceof t?o:e;++s<c;)f[s]=a[s];for(;l--;)f[s++]=arguments[++u];return kt(p,i?n:this,f)}}(e,t,n,o);else var _=function(e,t,n){var r=1&t,a=Aa(e);return function t(){return(this&&this!==ft&&this instanceof t?a:e).apply(r?n:this,arguments)}}(e,t,n);return Ni((m?Zr:Ci)(_,b),e,t)}function Ga(e,t,n,r){return e===a||Uo(e,Pe[n])&&!Oe.call(r,n)?t:e}function Ka(e,t,n,r,i,o){return Jo(e)&&Jo(t)&&(o.set(t,e),Ur(e,t,a,Ka,o),o.delete(t)),e}function Za(e){return ru(e)?a:e}function Xa(e,t,n,r,i,o){var u=1&n,l=e.length,s=t.length;if(l!=s&&!(u&&s>l))return!1;var c=o.get(e),f=o.get(t);if(c&&f)return c==t&&f==e;var p=-1,d=!0,h=2&n?new qn:a;for(o.set(e,t),o.set(t,e);++p<l;){var v=e[p],g=t[p];if(r)var y=u?r(g,v,p,t,e,o):r(v,g,p,e,t,o);if(y!==a){if(y)continue;d=!1;break}if(h){if(!Ft(t,(function(e,t){if(!Zt(h,t)&&(v===e||i(v,e,n,r,o)))return h.push(t)}))){d=!1;break}}else if(v!==g&&!i(v,g,n,r,o)){d=!1;break}}return o.delete(e),o.delete(t),d}function Ja(e){return Mi(ki(e,a,Wi),e+\"\")}function ei(e){return xr(e,Pu,si)}function ti(e){return xr(e,zu,ci)}var ni=Mn?function(e){return Mn.get(e)}:ul;function ri(e){for(var t=e.name+\"\",n=Nn[t],r=Oe.call(Nn,t)?n.length:0;r--;){var a=n[r],i=a.func;if(null==i||i==e)return a.name}return t}function ai(e){return(Oe.call(jn,\"placeholder\")?jn:e).placeholder}function ii(){var e=jn.iteratee||rl;return e=e===rl?Or:e,arguments.length?e(arguments[0],arguments[1]):e}function oi(e,t){var n,r,a=e.__data__;return(\"string\"==(r=typeof(n=t))||\"number\"==r||\"symbol\"==r||\"boolean\"==r?\"__proto__\"!==n:null===n)?a[\"string\"==typeof t?\"string\":\"hash\"]:a.map}function ui(e){for(var t=Pu(e),n=t.length;n--;){var r=t[n],a=e[r];t[n]=[r,a,wi(a)]}return t}function li(e,t){var n=function(e,t){return null==e?a:e[t]}(e,t);return Lr(n)?n:a}var si=vt?function(e){return null==e?[]:(e=Se(e),Mt(vt(e),(function(t){return qe.call(e,t)})))}:hl,ci=vt?function(e){for(var t=[];e;)Lt(t,si(e)),e=Ve(e);return t}:hl,fi=kr;function pi(e,t,n){for(var r=-1,a=(t=ga(t,e)).length,i=!1;++r<a;){var o=Fi(t[r]);if(!(i=null!=e&&n(e,o)))break;e=e[o]}return i||++r!=a?i:!!(a=null==e?0:e.length)&&Xo(a)&&vi(o,a)&&(Wo(e)||Bo(e))}function di(e){return\"function\"!=typeof e.constructor||_i(e)?{}:Un(Ve(e))}function hi(e){return Wo(e)||Bo(e)||!!(Ye&&e&&e[Ye])}function vi(e,t){var n=typeof e;return!!(t=null==t?f:t)&&(\"number\"==n||\"symbol\"!=n&&ye.test(e))&&e>-1&&e%1==0&&e<t}function gi(e,t,n){if(!Jo(n))return!1;var r=typeof t;return!!(\"number\"==r?Ho(n)&&vi(t,n.length):\"string\"==r&&t in n)&&Uo(n[t],e)}function yi(e,t){if(Wo(e))return!1;var n=typeof e;return!(\"number\"!=n&&\"symbol\"!=n&&\"boolean\"!=n&&null!=e&&!uu(e))||J.test(e)||!X.test(e)||null!=t&&e in Se(t)}function mi(e){var t=ri(e),n=jn[t];if(\"function\"!=typeof n||!(t in Bn.prototype))return!1;if(e===n)return!0;var r=ni(n);return!!r&&e===r[0]}(xn&&fi(new xn(new ArrayBuffer(1)))!=L||kn&&fi(new kn)!=x||Sn&&fi(Sn.resolve())!=E||En&&fi(new En)!=T||Cn&&fi(new Cn)!=P)&&(fi=function(e){var t=kr(e),n=t==S?e.constructor:a,r=n?Di(n):\"\";if(r)switch(r){case Pn:return L;case zn:return x;case Ln:return E;case On:return T;case An:return P}return t});var bi=ze?Ko:vl;function _i(e){var t=e&&e.constructor;return e===(\"function\"==typeof t&&t.prototype||Pe)}function wi(e){return e==e&&!Jo(e)}function xi(e,t){return function(n){return null!=n&&n[e]===t&&(t!==a||e in Se(n))}}function ki(e,t,n){return t=gn(t===a?e.length-1:t,0),function(){for(var a=arguments,i=-1,o=gn(a.length-t,0),u=r(o);++i<o;)u[i]=a[t+i];i=-1;for(var l=r(t+1);++i<t;)l[i]=a[i];return l[t]=n(u),kt(e,this,l)}}function Si(e,t){return t.length<2?e:wr(e,ea(t,0,-1))}function Ei(e,t){if((\"constructor\"!==t||\"function\"!=typeof e[t])&&\"__proto__\"!=t)return e[t]}var Ci=Pi(Zr),Ti=ct||function(e,t){return ft.setTimeout(e,t)},Mi=Pi(Xr);function Ni(e,t,n){var r=t+\"\";return Mi(e,function(e,t){var n=t.length;if(!n)return e;var r=n-1;return t[r]=(n>1?\"& \":\"\")+t[r],t=t.join(n>2?\", \":\" \"),e.replace(ie,\"{\\n/* [wrapped with \"+t+\"] */\\n\")}(r,function(e,t){return Et(h,(function(n){var r=\"_.\"+n[0];t&n[1]&&!Nt(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(oe);return t?t[1].split(ue):[]}(r),n)))}function Pi(e){var t=0,n=0;return function(){var r=mn(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(a,arguments)}}function zi(e,t){var n=-1,r=e.length,i=r-1;for(t=t===a?r:t;++n<t;){var o=Hr(n,i),u=e[o];e[o]=e[n],e[n]=u}return e.length=t,e}var Li,Oi,Ai=(Li=Oo((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(\"\"),e.replace(ee,(function(e,n,r,a){t.push(r?a.replace(ce,\"$1\"):n||e)})),t}),(function(e){return 500===Oi.size&&Oi.clear(),e})),Oi=Li.cache,Li);function Fi(e){if(\"string\"==typeof e||uu(e))return e;var t=e+\"\";return\"0\"==t&&1/e==-1/0?\"-0\":t}function Di(e){if(null!=e){try{return Le.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}function Ri(e){if(e instanceof Bn)return e.clone();var t=new $n(e.__wrapped__,e.__chain__);return t.__actions__=Ca(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var ji=Qr((function(e,t){return qo(e)?sr(e,vr(t,1,qo,!0)):[]})),Ui=Qr((function(e,t){var n=Yi(t);return qo(n)&&(n=a),qo(e)?sr(e,vr(t,1,qo,!0),ii(n,2)):[]})),Ii=Qr((function(e,t){var n=Yi(t);return qo(n)&&(n=a),qo(e)?sr(e,vr(t,1,qo,!0),a,n):[]}));function $i(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var a=null==n?0:du(n);return a<0&&(a=gn(r+a,0)),jt(e,ii(t,3),a)}function Bi(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;return n!==a&&(i=du(n),i=n<0?gn(r+i,0):yn(i,r-1)),jt(e,ii(t,3),i,!0)}function Wi(e){return null!=e&&e.length?vr(e,1):[]}function Vi(e){return e&&e.length?e[0]:a}var Hi=Qr((function(e){var t=zt(e,ha);return t.length&&t[0]===e[0]?Tr(t):[]})),qi=Qr((function(e){var t=Yi(e),n=zt(e,ha);return t===Yi(n)?t=a:n.pop(),n.length&&n[0]===e[0]?Tr(n,ii(t,2)):[]})),Qi=Qr((function(e){var t=Yi(e),n=zt(e,ha);return(t=\"function\"==typeof t?t:a)&&n.pop(),n.length&&n[0]===e[0]?Tr(n,a,t):[]}));function Yi(e){var t=null==e?0:e.length;return t?e[t-1]:a}var Gi=Qr(Ki);function Ki(e,t){return e&&e.length&&t&&t.length?Wr(e,t):e}var Zi=Ja((function(e,t){var n=null==e?0:e.length,r=ar(e,t);return Vr(e,zt(t,(function(e){return vi(e,n)?+e:e})).sort(ka)),r}));function Xi(e){return null==e?e:wn.call(e)}var Ji=Qr((function(e){return ua(vr(e,1,qo,!0))})),eo=Qr((function(e){var t=Yi(e);return qo(t)&&(t=a),ua(vr(e,1,qo,!0),ii(t,2))})),to=Qr((function(e){var t=Yi(e);return t=\"function\"==typeof t?t:a,ua(vr(e,1,qo,!0),a,t)}));function no(e){if(!e||!e.length)return[];var t=0;return e=Mt(e,(function(e){if(qo(e))return t=gn(e.length,t),!0})),Qt(t,(function(t){return zt(e,Wt(t))}))}function ro(e,t){if(!e||!e.length)return[];var n=no(e);return null==t?n:zt(n,(function(e){return kt(t,a,e)}))}var ao=Qr((function(e,t){return qo(e)?sr(e,t):[]})),io=Qr((function(e){return pa(Mt(e,qo))})),oo=Qr((function(e){var t=Yi(e);return qo(t)&&(t=a),pa(Mt(e,qo),ii(t,2))})),uo=Qr((function(e){var t=Yi(e);return t=\"function\"==typeof t?t:a,pa(Mt(e,qo),a,t)})),lo=Qr(no),so=Qr((function(e){var t=e.length,n=t>1?e[t-1]:a;return n=\"function\"==typeof n?(e.pop(),n):a,ro(e,n)}));function co(e){var t=jn(e);return t.__chain__=!0,t}function fo(e,t){return t(e)}var po=Ja((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return ar(t,e)};return!(t>1||this.__actions__.length)&&r instanceof Bn&&vi(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:fo,args:[i],thisArg:a}),new $n(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(a),e}))):this.thru(i)})),ho=Ma((function(e,t,n){Oe.call(e,n)?++e[n]:rr(e,n,1)})),vo=Fa($i),go=Fa(Bi);function yo(e,t){return(Wo(e)?Et:cr)(e,ii(t,3))}function mo(e,t){return(Wo(e)?Ct:fr)(e,ii(t,3))}var bo=Ma((function(e,t,n){Oe.call(e,n)?e[n].push(t):rr(e,n,[t])})),_o=Qr((function(e,t,n){var a=-1,i=\"function\"==typeof t,o=Ho(e)?r(e.length):[];return cr(e,(function(e){o[++a]=i?kt(t,e,n):Mr(e,t,n)})),o})),wo=Ma((function(e,t,n){rr(e,n,t)}));function xo(e,t){return(Wo(e)?zt:Dr)(e,ii(t,3))}var ko=Ma((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]})),So=Qr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&gi(e,t[0],t[1])?t=[]:n>2&&gi(t[0],t[1],t[2])&&(t=[t[0]]),$r(e,vr(t,1),[])})),Eo=st||function(){return ft.Date.now()};function Co(e,t,n){return t=n?a:t,t=e&&null==t?e.length:t,Ya(e,s,a,a,a,a,t)}function To(e,t){var n;if(\"function\"!=typeof t)throw new Te(i);return e=du(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=a),n}}var Mo=Qr((function(e,t,n){var r=1;if(n.length){var a=un(n,ai(Mo));r|=l}return Ya(e,r,t,n,a)})),No=Qr((function(e,t,n){var r=3;if(n.length){var a=un(n,ai(No));r|=l}return Ya(t,r,e,n,a)}));function Po(e,t,n){var r,o,u,l,s,c,f=0,p=!1,d=!1,h=!0;if(\"function\"!=typeof e)throw new Te(i);function v(t){var n=r,i=o;return r=o=a,f=t,l=e.apply(i,n)}function g(e){var n=e-c;return c===a||n>=t||n<0||d&&e-f>=u}function y(){var e=Eo();if(g(e))return m(e);s=Ti(y,function(e){var n=t-(e-c);return d?yn(n,u-(e-f)):n}(e))}function m(e){return s=a,h&&r?v(e):(r=o=a,l)}function b(){var e=Eo(),n=g(e);if(r=arguments,o=this,c=e,n){if(s===a)return function(e){return f=e,s=Ti(y,t),p?v(e):l}(c);if(d)return ba(s),s=Ti(y,t),v(c)}return s===a&&(s=Ti(y,t)),l}return t=vu(t)||0,Jo(n)&&(p=!!n.leading,u=(d=\"maxWait\"in n)?gn(vu(n.maxWait)||0,t):u,h=\"trailing\"in n?!!n.trailing:h),b.cancel=function(){s!==a&&ba(s),f=0,r=c=o=s=a},b.flush=function(){return s===a?l:m(Eo())},b}var zo=Qr((function(e,t){return lr(e,1,t)})),Lo=Qr((function(e,t,n){return lr(e,vu(t)||0,n)}));function Oo(e,t){if(\"function\"!=typeof e||null!=t&&\"function\"!=typeof t)throw new Te(i);var n=function(){var r=arguments,a=t?t.apply(this,r):r[0],i=n.cache;if(i.has(a))return i.get(a);var o=e.apply(this,r);return n.cache=i.set(a,o)||i,o};return n.cache=new(Oo.Cache||Hn),n}function Ao(e){if(\"function\"!=typeof e)throw new Te(i);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Oo.Cache=Hn;var Fo=ya((function(e,t){var n=(t=1==t.length&&Wo(t[0])?zt(t[0],Gt(ii())):zt(vr(t,1),Gt(ii()))).length;return Qr((function(r){for(var a=-1,i=yn(r.length,n);++a<i;)r[a]=t[a].call(this,r[a]);return kt(e,this,r)}))})),Do=Qr((function(e,t){var n=un(t,ai(Do));return Ya(e,l,a,t,n)})),Ro=Qr((function(e,t){var n=un(t,ai(Ro));return Ya(e,64,a,t,n)})),jo=Ja((function(e,t){return Ya(e,256,a,a,a,t)}));function Uo(e,t){return e===t||e!=e&&t!=t}var Io=Wa(Sr),$o=Wa((function(e,t){return e>=t})),Bo=Nr(function(){return arguments}())?Nr:function(e){return eu(e)&&Oe.call(e,\"callee\")&&!qe.call(e,\"callee\")},Wo=r.isArray,Vo=yt?Gt(yt):function(e){return eu(e)&&kr(e)==z};function Ho(e){return null!=e&&Xo(e.length)&&!Ko(e)}function qo(e){return eu(e)&&Ho(e)}var Qo=gt||vl,Yo=mt?Gt(mt):function(e){return eu(e)&&kr(e)==m};function Go(e){if(!eu(e))return!1;var t=kr(e);return t==b||\"[object DOMException]\"==t||\"string\"==typeof e.message&&\"string\"==typeof e.name&&!ru(e)}function Ko(e){if(!Jo(e))return!1;var t=kr(e);return t==_||t==w||\"[object AsyncFunction]\"==t||\"[object Proxy]\"==t}function Zo(e){return\"number\"==typeof e&&e==du(e)}function Xo(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=f}function Jo(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)}function eu(e){return null!=e&&\"object\"==typeof e}var tu=bt?Gt(bt):function(e){return eu(e)&&fi(e)==x};function nu(e){return\"number\"==typeof e||eu(e)&&kr(e)==k}function ru(e){if(!eu(e)||kr(e)!=S)return!1;var t=Ve(e);if(null===t)return!0;var n=Oe.call(t,\"constructor\")&&t.constructor;return\"function\"==typeof n&&n instanceof n&&Le.call(n)==Re}var au=_t?Gt(_t):function(e){return eu(e)&&kr(e)==C},iu=wt?Gt(wt):function(e){return eu(e)&&fi(e)==T};function ou(e){return\"string\"==typeof e||!Wo(e)&&eu(e)&&kr(e)==M}function uu(e){return\"symbol\"==typeof e||eu(e)&&kr(e)==N}var lu=xt?Gt(xt):function(e){return eu(e)&&Xo(e.length)&&!!at[kr(e)]},su=Wa(Fr),cu=Wa((function(e,t){return e<=t}));function fu(e){if(!e)return[];if(Ho(e))return ou(e)?fn(e):Ca(e);if(Ge&&e[Ge])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Ge]());var t=fi(e);return(t==x?an:t==T?ln:Uu)(e)}function pu(e){return e?(e=vu(e))===c||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function du(e){var t=pu(e),n=t%1;return t==t?n?t-n:t:0}function hu(e){return e?ir(du(e),0,d):0}function vu(e){if(\"number\"==typeof e)return e;if(uu(e))return p;if(Jo(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=Jo(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=Yt(e);var n=he.test(e);return n||ge.test(e)?lt(e.slice(2),n?2:8):de.test(e)?p:+e}function gu(e){return Ta(e,zu(e))}function yu(e){return null==e?\"\":oa(e)}var mu=Na((function(e,t){if(_i(t)||Ho(t))Ta(t,Pu(t),e);else for(var n in t)Oe.call(t,n)&&Jn(e,n,t[n])})),bu=Na((function(e,t){Ta(t,zu(t),e)})),_u=Na((function(e,t,n,r){Ta(t,zu(t),e,r)})),wu=Na((function(e,t,n,r){Ta(t,Pu(t),e,r)})),xu=Ja(ar),ku=Qr((function(e,t){e=Se(e);var n=-1,r=t.length,i=r>2?t[2]:a;for(i&&gi(t[0],t[1],i)&&(r=1);++n<r;)for(var o=t[n],u=zu(o),l=-1,s=u.length;++l<s;){var c=u[l],f=e[c];(f===a||Uo(f,Pe[c])&&!Oe.call(e,c))&&(e[c]=o[c])}return e})),Su=Qr((function(e){return e.push(a,Ka),kt(Ou,a,e)}));function Eu(e,t,n){var r=null==e?a:wr(e,t);return r===a?n:r}function Cu(e,t){return null!=e&&pi(e,t,Cr)}var Tu=ja((function(e,t,n){null!=t&&\"function\"!=typeof t.toString&&(t=De.call(t)),e[t]=n}),Ju(nl)),Mu=ja((function(e,t,n){null!=t&&\"function\"!=typeof t.toString&&(t=De.call(t)),Oe.call(e,t)?e[t].push(n):e[t]=[n]}),ii),Nu=Qr(Mr);function Pu(e){return Ho(e)?Yn(e):Ar(e)}function zu(e){return Ho(e)?Yn(e,!0):function(e){if(!Jo(e))return function(e){var t=[];if(null!=e)for(var n in Se(e))t.push(n);return t}(e);var t=_i(e),n=[];for(var r in e)(\"constructor\"!=r||!t&&Oe.call(e,r))&&n.push(r);return n}(e)}var Lu=Na((function(e,t,n){Ur(e,t,n)})),Ou=Na((function(e,t,n,r){Ur(e,t,n,r)})),Au=Ja((function(e,t){var n={};if(null==e)return n;var r=!1;t=zt(t,(function(t){return t=ga(t,e),r||(r=t.length>1),t})),Ta(e,ti(e),n),r&&(n=or(n,7,Za));for(var a=t.length;a--;)la(n,t[a]);return n})),Fu=Ja((function(e,t){return null==e?{}:function(e,t){return Br(e,t,(function(t,n){return Cu(e,n)}))}(e,t)}));function Du(e,t){if(null==e)return{};var n=zt(ti(e),(function(e){return[e]}));return t=ii(t),Br(e,n,(function(e,n){return t(e,n[0])}))}var Ru=Qa(Pu),ju=Qa(zu);function Uu(e){return null==e?[]:Kt(e,Pu(e))}var Iu=Oa((function(e,t,n){return t=t.toLowerCase(),e+(n?$u(t):t)}));function $u(e){return Gu(yu(e).toLowerCase())}function Bu(e){return(e=yu(e))&&e.replace(me,en).replace(Ze,\"\")}var Wu=Oa((function(e,t,n){return e+(n?\"-\":\"\")+t.toLowerCase()})),Vu=Oa((function(e,t,n){return e+(n?\" \":\"\")+t.toLowerCase()})),Hu=La(\"toLowerCase\"),qu=Oa((function(e,t,n){return e+(n?\"_\":\"\")+t.toLowerCase()})),Qu=Oa((function(e,t,n){return e+(n?\" \":\"\")+Gu(t)})),Yu=Oa((function(e,t,n){return e+(n?\" \":\"\")+t.toUpperCase()})),Gu=La(\"toUpperCase\");function Ku(e,t,n){return e=yu(e),(t=n?a:t)===a?function(e){return tt.test(e)}(e)?function(e){return e.match(Je)||[]}(e):function(e){return e.match(le)||[]}(e):e.match(t)||[]}var Zu=Qr((function(e,t){try{return kt(e,a,t)}catch(e){return Go(e)?e:new we(e)}})),Xu=Ja((function(e,t){return Et(t,(function(t){t=Fi(t),rr(e,t,Mo(e[t],e))})),e}));function Ju(e){return function(){return e}}var el=Da(),tl=Da(!0);function nl(e){return e}function rl(e){return Or(\"function\"==typeof e?e:or(e,1))}var al=Qr((function(e,t){return function(n){return Mr(n,e,t)}})),il=Qr((function(e,t){return function(n){return Mr(e,n,t)}}));function ol(e,t,n){var r=Pu(t),a=_r(t,r);null!=n||Jo(t)&&(a.length||!r.length)||(n=t,t=e,e=this,a=_r(t,Pu(t)));var i=!(Jo(n)&&\"chain\"in n&&!n.chain),o=Ko(e);return Et(a,(function(n){var r=t[n];e[n]=r,o&&(e.prototype[n]=function(){var t=this.__chain__;if(i||t){var n=e(this.__wrapped__);return(n.__actions__=Ca(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,Lt([this.value()],arguments))})})),e}function ul(){}var ll=Ia(zt),sl=Ia(Tt),cl=Ia(Ft);function fl(e){return yi(e)?Wt(Fi(e)):function(e){return function(t){return wr(t,e)}}(e)}var pl=Ba(),dl=Ba(!0);function hl(){return[]}function vl(){return!1}var gl,yl=Ua((function(e,t){return e+t}),0),ml=Ha(\"ceil\"),bl=Ua((function(e,t){return e/t}),1),_l=Ha(\"floor\"),wl=Ua((function(e,t){return e*t}),1),xl=Ha(\"round\"),kl=Ua((function(e,t){return e-t}),0);return jn.after=function(e,t){if(\"function\"!=typeof t)throw new Te(i);return e=du(e),function(){if(--e<1)return t.apply(this,arguments)}},jn.ary=Co,jn.assign=mu,jn.assignIn=bu,jn.assignInWith=_u,jn.assignWith=wu,jn.at=xu,jn.before=To,jn.bind=Mo,jn.bindAll=Xu,jn.bindKey=No,jn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Wo(e)?e:[e]},jn.chain=co,jn.chunk=function(e,t,n){t=(n?gi(e,t,n):t===a)?1:gn(du(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,u=0,l=r(pt(i/t));o<i;)l[u++]=ea(e,o,o+=t);return l},jn.compact=function(e){for(var t=-1,n=null==e?0:e.length,r=0,a=[];++t<n;){var i=e[t];i&&(a[r++]=i)}return a},jn.concat=function(){var e=arguments.length;if(!e)return[];for(var t=r(e-1),n=arguments[0],a=e;a--;)t[a-1]=arguments[a];return Lt(Wo(n)?Ca(n):[n],vr(t,1))},jn.cond=function(e){var t=null==e?0:e.length,n=ii();return e=t?zt(e,(function(e){if(\"function\"!=typeof e[1])throw new Te(i);return[n(e[0]),e[1]]})):[],Qr((function(n){for(var r=-1;++r<t;){var a=e[r];if(kt(a[0],this,n))return kt(a[1],this,n)}}))},jn.conforms=function(e){return function(e){var t=Pu(e);return function(n){return ur(n,e,t)}}(or(e,1))},jn.constant=Ju,jn.countBy=ho,jn.create=function(e,t){var n=Un(e);return null==t?n:nr(n,t)},jn.curry=function e(t,n,r){var i=Ya(t,8,a,a,a,a,a,n=r?a:n);return i.placeholder=e.placeholder,i},jn.curryRight=function e(t,n,r){var i=Ya(t,16,a,a,a,a,a,n=r?a:n);return i.placeholder=e.placeholder,i},jn.debounce=Po,jn.defaults=ku,jn.defaultsDeep=Su,jn.defer=zo,jn.delay=Lo,jn.difference=ji,jn.differenceBy=Ui,jn.differenceWith=Ii,jn.drop=function(e,t,n){var r=null==e?0:e.length;return r?ea(e,(t=n||t===a?1:du(t))<0?0:t,r):[]},jn.dropRight=function(e,t,n){var r=null==e?0:e.length;return r?ea(e,0,(t=r-(t=n||t===a?1:du(t)))<0?0:t):[]},jn.dropRightWhile=function(e,t){return e&&e.length?ca(e,ii(t,3),!0,!0):[]},jn.dropWhile=function(e,t){return e&&e.length?ca(e,ii(t,3),!0):[]},jn.fill=function(e,t,n,r){var i=null==e?0:e.length;return i?(n&&\"number\"!=typeof n&&gi(e,t,n)&&(n=0,r=i),function(e,t,n,r){var i=e.length;for((n=du(n))<0&&(n=-n>i?0:i+n),(r=r===a||r>i?i:du(r))<0&&(r+=i),r=n>r?0:hu(r);n<r;)e[n++]=t;return e}(e,t,n,r)):[]},jn.filter=function(e,t){return(Wo(e)?Mt:hr)(e,ii(t,3))},jn.flatMap=function(e,t){return vr(xo(e,t),1)},jn.flatMapDeep=function(e,t){return vr(xo(e,t),c)},jn.flatMapDepth=function(e,t,n){return n=n===a?1:du(n),vr(xo(e,t),n)},jn.flatten=Wi,jn.flattenDeep=function(e){return null!=e&&e.length?vr(e,c):[]},jn.flattenDepth=function(e,t){return null!=e&&e.length?vr(e,t=t===a?1:du(t)):[]},jn.flip=function(e){return Ya(e,512)},jn.flow=el,jn.flowRight=tl,jn.fromPairs=function(e){for(var t=-1,n=null==e?0:e.length,r={};++t<n;){var a=e[t];r[a[0]]=a[1]}return r},jn.functions=function(e){return null==e?[]:_r(e,Pu(e))},jn.functionsIn=function(e){return null==e?[]:_r(e,zu(e))},jn.groupBy=bo,jn.initial=function(e){return null!=e&&e.length?ea(e,0,-1):[]},jn.intersection=Hi,jn.intersectionBy=qi,jn.intersectionWith=Qi,jn.invert=Tu,jn.invertBy=Mu,jn.invokeMap=_o,jn.iteratee=rl,jn.keyBy=wo,jn.keys=Pu,jn.keysIn=zu,jn.map=xo,jn.mapKeys=function(e,t){var n={};return t=ii(t,3),mr(e,(function(e,r,a){rr(n,t(e,r,a),e)})),n},jn.mapValues=function(e,t){var n={};return t=ii(t,3),mr(e,(function(e,r,a){rr(n,r,t(e,r,a))})),n},jn.matches=function(e){return Rr(or(e,1))},jn.matchesProperty=function(e,t){return jr(e,or(t,1))},jn.memoize=Oo,jn.merge=Lu,jn.mergeWith=Ou,jn.method=al,jn.methodOf=il,jn.mixin=ol,jn.negate=Ao,jn.nthArg=function(e){return e=du(e),Qr((function(t){return Ir(t,e)}))},jn.omit=Au,jn.omitBy=function(e,t){return Du(e,Ao(ii(t)))},jn.once=function(e){return To(2,e)},jn.orderBy=function(e,t,n,r){return null==e?[]:(Wo(t)||(t=null==t?[]:[t]),Wo(n=r?a:n)||(n=null==n?[]:[n]),$r(e,t,n))},jn.over=ll,jn.overArgs=Fo,jn.overEvery=sl,jn.overSome=cl,jn.partial=Do,jn.partialRight=Ro,jn.partition=ko,jn.pick=Fu,jn.pickBy=Du,jn.property=fl,jn.propertyOf=function(e){return function(t){return null==e?a:wr(e,t)}},jn.pull=Gi,jn.pullAll=Ki,jn.pullAllBy=function(e,t,n){return e&&e.length&&t&&t.length?Wr(e,t,ii(n,2)):e},jn.pullAllWith=function(e,t,n){return e&&e.length&&t&&t.length?Wr(e,t,a,n):e},jn.pullAt=Zi,jn.range=pl,jn.rangeRight=dl,jn.rearg=jo,jn.reject=function(e,t){return(Wo(e)?Mt:hr)(e,Ao(ii(t,3)))},jn.remove=function(e,t){var n=[];if(!e||!e.length)return n;var r=-1,a=[],i=e.length;for(t=ii(t,3);++r<i;){var o=e[r];t(o,r,e)&&(n.push(o),a.push(r))}return Vr(e,a),n},jn.rest=function(e,t){if(\"function\"!=typeof e)throw new Te(i);return Qr(e,t=t===a?t:du(t))},jn.reverse=Xi,jn.sampleSize=function(e,t,n){return t=(n?gi(e,t,n):t===a)?1:du(t),(Wo(e)?Kn:Gr)(e,t)},jn.set=function(e,t,n){return null==e?e:Kr(e,t,n)},jn.setWith=function(e,t,n,r){return r=\"function\"==typeof r?r:a,null==e?e:Kr(e,t,n,r)},jn.shuffle=function(e){return(Wo(e)?Zn:Jr)(e)},jn.slice=function(e,t,n){var r=null==e?0:e.length;return r?(n&&\"number\"!=typeof n&&gi(e,t,n)?(t=0,n=r):(t=null==t?0:du(t),n=n===a?r:du(n)),ea(e,t,n)):[]},jn.sortBy=So,jn.sortedUniq=function(e){return e&&e.length?aa(e):[]},jn.sortedUniqBy=function(e,t){return e&&e.length?aa(e,ii(t,2)):[]},jn.split=function(e,t,n){return n&&\"number\"!=typeof n&&gi(e,t,n)&&(t=n=a),(n=n===a?d:n>>>0)?(e=yu(e))&&(\"string\"==typeof t||null!=t&&!au(t))&&!(t=oa(t))&&rn(e)?ma(fn(e),0,n):e.split(t,n):[]},jn.spread=function(e,t){if(\"function\"!=typeof e)throw new Te(i);return t=null==t?0:gn(du(t),0),Qr((function(n){var r=n[t],a=ma(n,0,t);return r&&Lt(a,r),kt(e,this,a)}))},jn.tail=function(e){var t=null==e?0:e.length;return t?ea(e,1,t):[]},jn.take=function(e,t,n){return e&&e.length?ea(e,0,(t=n||t===a?1:du(t))<0?0:t):[]},jn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?ea(e,(t=r-(t=n||t===a?1:du(t)))<0?0:t,r):[]},jn.takeRightWhile=function(e,t){return e&&e.length?ca(e,ii(t,3),!1,!0):[]},jn.takeWhile=function(e,t){return e&&e.length?ca(e,ii(t,3)):[]},jn.tap=function(e,t){return t(e),e},jn.throttle=function(e,t,n){var r=!0,a=!0;if(\"function\"!=typeof e)throw new Te(i);return Jo(n)&&(r=\"leading\"in n?!!n.leading:r,a=\"trailing\"in n?!!n.trailing:a),Po(e,t,{leading:r,maxWait:t,trailing:a})},jn.thru=fo,jn.toArray=fu,jn.toPairs=Ru,jn.toPairsIn=ju,jn.toPath=function(e){return Wo(e)?zt(e,Fi):uu(e)?[e]:Ca(Ai(yu(e)))},jn.toPlainObject=gu,jn.transform=function(e,t,n){var r=Wo(e),a=r||Qo(e)||lu(e);if(t=ii(t,4),null==n){var i=e&&e.constructor;n=a?r?new i:[]:Jo(e)&&Ko(i)?Un(Ve(e)):{}}return(a?Et:mr)(e,(function(e,r,a){return t(n,e,r,a)})),n},jn.unary=function(e){return Co(e,1)},jn.union=Ji,jn.unionBy=eo,jn.unionWith=to,jn.uniq=function(e){return e&&e.length?ua(e):[]},jn.uniqBy=function(e,t){return e&&e.length?ua(e,ii(t,2)):[]},jn.uniqWith=function(e,t){return t=\"function\"==typeof t?t:a,e&&e.length?ua(e,a,t):[]},jn.unset=function(e,t){return null==e||la(e,t)},jn.unzip=no,jn.unzipWith=ro,jn.update=function(e,t,n){return null==e?e:sa(e,t,va(n))},jn.updateWith=function(e,t,n,r){return r=\"function\"==typeof r?r:a,null==e?e:sa(e,t,va(n),r)},jn.values=Uu,jn.valuesIn=function(e){return null==e?[]:Kt(e,zu(e))},jn.without=ao,jn.words=Ku,jn.wrap=function(e,t){return Do(va(t),e)},jn.xor=io,jn.xorBy=oo,jn.xorWith=uo,jn.zip=lo,jn.zipObject=function(e,t){return da(e||[],t||[],Jn)},jn.zipObjectDeep=function(e,t){return da(e||[],t||[],Kr)},jn.zipWith=so,jn.entries=Ru,jn.entriesIn=ju,jn.extend=bu,jn.extendWith=_u,ol(jn,jn),jn.add=yl,jn.attempt=Zu,jn.camelCase=Iu,jn.capitalize=$u,jn.ceil=ml,jn.clamp=function(e,t,n){return n===a&&(n=t,t=a),n!==a&&(n=(n=vu(n))==n?n:0),t!==a&&(t=(t=vu(t))==t?t:0),ir(vu(e),t,n)},jn.clone=function(e){return or(e,4)},jn.cloneDeep=function(e){return or(e,5)},jn.cloneDeepWith=function(e,t){return or(e,5,t=\"function\"==typeof t?t:a)},jn.cloneWith=function(e,t){return or(e,4,t=\"function\"==typeof t?t:a)},jn.conformsTo=function(e,t){return null==t||ur(e,t,Pu(t))},jn.deburr=Bu,jn.defaultTo=function(e,t){return null==e||e!=e?t:e},jn.divide=bl,jn.endsWith=function(e,t,n){e=yu(e),t=oa(t);var r=e.length,i=n=n===a?r:ir(du(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},jn.eq=Uo,jn.escape=function(e){return(e=yu(e))&&Y.test(e)?e.replace(q,tn):e},jn.escapeRegExp=function(e){return(e=yu(e))&&ne.test(e)?e.replace(te,\"\\\\$&\"):e},jn.every=function(e,t,n){var r=Wo(e)?Tt:pr;return n&&gi(e,t,n)&&(t=a),r(e,ii(t,3))},jn.find=vo,jn.findIndex=$i,jn.findKey=function(e,t){return Rt(e,ii(t,3),mr)},jn.findLast=go,jn.findLastIndex=Bi,jn.findLastKey=function(e,t){return Rt(e,ii(t,3),br)},jn.floor=_l,jn.forEach=yo,jn.forEachRight=mo,jn.forIn=function(e,t){return null==e?e:gr(e,ii(t,3),zu)},jn.forInRight=function(e,t){return null==e?e:yr(e,ii(t,3),zu)},jn.forOwn=function(e,t){return e&&mr(e,ii(t,3))},jn.forOwnRight=function(e,t){return e&&br(e,ii(t,3))},jn.get=Eu,jn.gt=Io,jn.gte=$o,jn.has=function(e,t){return null!=e&&pi(e,t,Er)},jn.hasIn=Cu,jn.head=Vi,jn.identity=nl,jn.includes=function(e,t,n,r){e=Ho(e)?e:Uu(e),n=n&&!r?du(n):0;var a=e.length;return n<0&&(n=gn(a+n,0)),ou(e)?n<=a&&e.indexOf(t,n)>-1:!!a&&Ut(e,t,n)>-1},jn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var a=null==n?0:du(n);return a<0&&(a=gn(r+a,0)),Ut(e,t,a)},jn.inRange=function(e,t,n){return t=pu(t),n===a?(n=t,t=0):n=pu(n),function(e,t,n){return e>=yn(t,n)&&e<gn(t,n)}(e=vu(e),t,n)},jn.invoke=Nu,jn.isArguments=Bo,jn.isArray=Wo,jn.isArrayBuffer=Vo,jn.isArrayLike=Ho,jn.isArrayLikeObject=qo,jn.isBoolean=function(e){return!0===e||!1===e||eu(e)&&kr(e)==y},jn.isBuffer=Qo,jn.isDate=Yo,jn.isElement=function(e){return eu(e)&&1===e.nodeType&&!ru(e)},jn.isEmpty=function(e){if(null==e)return!0;if(Ho(e)&&(Wo(e)||\"string\"==typeof e||\"function\"==typeof e.splice||Qo(e)||lu(e)||Bo(e)))return!e.length;var t=fi(e);if(t==x||t==T)return!e.size;if(_i(e))return!Ar(e).length;for(var n in e)if(Oe.call(e,n))return!1;return!0},jn.isEqual=function(e,t){return Pr(e,t)},jn.isEqualWith=function(e,t,n){var r=(n=\"function\"==typeof n?n:a)?n(e,t):a;return r===a?Pr(e,t,a,n):!!r},jn.isError=Go,jn.isFinite=function(e){return\"number\"==typeof e&&Dt(e)},jn.isFunction=Ko,jn.isInteger=Zo,jn.isLength=Xo,jn.isMap=tu,jn.isMatch=function(e,t){return e===t||zr(e,t,ui(t))},jn.isMatchWith=function(e,t,n){return n=\"function\"==typeof n?n:a,zr(e,t,ui(t),n)},jn.isNaN=function(e){return nu(e)&&e!=+e},jn.isNative=function(e){if(bi(e))throw new we(\"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\");return Lr(e)},jn.isNil=function(e){return null==e},jn.isNull=function(e){return null===e},jn.isNumber=nu,jn.isObject=Jo,jn.isObjectLike=eu,jn.isPlainObject=ru,jn.isRegExp=au,jn.isSafeInteger=function(e){return Zo(e)&&e>=-9007199254740991&&e<=f},jn.isSet=iu,jn.isString=ou,jn.isSymbol=uu,jn.isTypedArray=lu,jn.isUndefined=function(e){return e===a},jn.isWeakMap=function(e){return eu(e)&&fi(e)==P},jn.isWeakSet=function(e){return eu(e)&&\"[object WeakSet]\"==kr(e)},jn.join=function(e,t){return null==e?\"\":Vt.call(e,t)},jn.kebabCase=Wu,jn.last=Yi,jn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return n!==a&&(i=(i=du(n))<0?gn(r+i,0):yn(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):jt(e,$t,i,!0)},jn.lowerCase=Vu,jn.lowerFirst=Hu,jn.lt=su,jn.lte=cu,jn.max=function(e){return e&&e.length?dr(e,nl,Sr):a},jn.maxBy=function(e,t){return e&&e.length?dr(e,ii(t,2),Sr):a},jn.mean=function(e){return Bt(e,nl)},jn.meanBy=function(e,t){return Bt(e,ii(t,2))},jn.min=function(e){return e&&e.length?dr(e,nl,Fr):a},jn.minBy=function(e,t){return e&&e.length?dr(e,ii(t,2),Fr):a},jn.stubArray=hl,jn.stubFalse=vl,jn.stubObject=function(){return{}},jn.stubString=function(){return\"\"},jn.stubTrue=function(){return!0},jn.multiply=wl,jn.nth=function(e,t){return e&&e.length?Ir(e,du(t)):a},jn.noConflict=function(){return ft._===this&&(ft._=je),this},jn.noop=ul,jn.now=Eo,jn.pad=function(e,t,n){e=yu(e);var r=(t=du(t))?cn(e):0;if(!t||r>=t)return e;var a=(t-r)/2;return $a(dt(a),n)+e+$a(pt(a),n)},jn.padEnd=function(e,t,n){e=yu(e);var r=(t=du(t))?cn(e):0;return t&&r<t?e+$a(t-r,n):e},jn.padStart=function(e,t,n){e=yu(e);var r=(t=du(t))?cn(e):0;return t&&r<t?$a(t-r,n)+e:e},jn.parseInt=function(e,t,n){return n||null==t?t=0:t&&(t=+t),bn(yu(e).replace(re,\"\"),t||0)},jn.random=function(e,t,n){if(n&&\"boolean\"!=typeof n&&gi(e,t,n)&&(t=n=a),n===a&&(\"boolean\"==typeof t?(n=t,t=a):\"boolean\"==typeof e&&(n=e,e=a)),e===a&&t===a?(e=0,t=1):(e=pu(e),t===a?(t=e,e=0):t=pu(t)),e>t){var r=e;e=t,t=r}if(n||e%1||t%1){var i=_n();return yn(e+i*(t-e+ut(\"1e-\"+((i+\"\").length-1))),t)}return Hr(e,t)},jn.reduce=function(e,t,n){var r=Wo(e)?Ot:Ht,a=arguments.length<3;return r(e,ii(t,4),n,a,cr)},jn.reduceRight=function(e,t,n){var r=Wo(e)?At:Ht,a=arguments.length<3;return r(e,ii(t,4),n,a,fr)},jn.repeat=function(e,t,n){return t=(n?gi(e,t,n):t===a)?1:du(t),qr(yu(e),t)},jn.replace=function(){var e=arguments,t=yu(e[0]);return e.length<3?t:t.replace(e[1],e[2])},jn.result=function(e,t,n){var r=-1,i=(t=ga(t,e)).length;for(i||(i=1,e=a);++r<i;){var o=null==e?a:e[Fi(t[r])];o===a&&(r=i,o=n),e=Ko(o)?o.call(e):o}return e},jn.round=xl,jn.runInContext=e,jn.sample=function(e){return(Wo(e)?Gn:Yr)(e)},jn.size=function(e){if(null==e)return 0;if(Ho(e))return ou(e)?cn(e):e.length;var t=fi(e);return t==x||t==T?e.size:Ar(e).length},jn.snakeCase=qu,jn.some=function(e,t,n){var r=Wo(e)?Ft:ta;return n&&gi(e,t,n)&&(t=a),r(e,ii(t,3))},jn.sortedIndex=function(e,t){return na(e,t)},jn.sortedIndexBy=function(e,t,n){return ra(e,t,ii(n,2))},jn.sortedIndexOf=function(e,t){var n=null==e?0:e.length;if(n){var r=na(e,t);if(r<n&&Uo(e[r],t))return r}return-1},jn.sortedLastIndex=function(e,t){return na(e,t,!0)},jn.sortedLastIndexBy=function(e,t,n){return ra(e,t,ii(n,2),!0)},jn.sortedLastIndexOf=function(e,t){if(null!=e&&e.length){var n=na(e,t,!0)-1;if(Uo(e[n],t))return n}return-1},jn.startCase=Qu,jn.startsWith=function(e,t,n){return e=yu(e),n=null==n?0:ir(du(n),0,e.length),t=oa(t),e.slice(n,n+t.length)==t},jn.subtract=kl,jn.sum=function(e){return e&&e.length?qt(e,nl):0},jn.sumBy=function(e,t){return e&&e.length?qt(e,ii(t,2)):0},jn.template=function(e,t,n){var r=jn.templateSettings;n&&gi(e,t,n)&&(t=a),e=yu(e),t=_u({},t,r,Ga);var i,o,u=_u({},t.imports,r.imports,Ga),l=Pu(u),s=Kt(u,l),c=0,f=t.interpolate||be,p=\"__p += '\",d=Ee((t.escape||be).source+\"|\"+f.source+\"|\"+(f===Z?fe:be).source+\"|\"+(t.evaluate||be).source+\"|$\",\"g\"),h=\"//# sourceURL=\"+(Oe.call(t,\"sourceURL\")?(t.sourceURL+\"\").replace(/\\s/g,\" \"):\"lodash.templateSources[\"+ ++rt+\"]\")+\"\\n\";e.replace(d,(function(t,n,r,a,u,l){return r||(r=a),p+=e.slice(c,l).replace(_e,nn),n&&(i=!0,p+=\"' +\\n__e(\"+n+\") +\\n'\"),u&&(o=!0,p+=\"';\\n\"+u+\";\\n__p += '\"),r&&(p+=\"' +\\n((__t = (\"+r+\")) == null ? '' : __t) +\\n'\"),c=l+t.length,t})),p+=\"';\\n\";var v=Oe.call(t,\"variable\")&&t.variable;if(v){if(se.test(v))throw new we(\"Invalid `variable` option passed into `_.template`\")}else p=\"with (obj) {\\n\"+p+\"\\n}\\n\";p=(o?p.replace(B,\"\"):p).replace(W,\"$1\").replace(V,\"$1;\"),p=\"function(\"+(v||\"obj\")+\") {\\n\"+(v?\"\":\"obj || (obj = {});\\n\")+\"var __t, __p = ''\"+(i?\", __e = _.escape\":\"\")+(o?\", __j = Array.prototype.join;\\nfunction print() { __p += __j.call(arguments, '') }\\n\":\";\\n\")+p+\"return __p\\n}\";var g=Zu((function(){return xe(l,h+\"return \"+p).apply(a,s)}));if(g.source=p,Go(g))throw g;return g},jn.times=function(e,t){if((e=du(e))<1||e>f)return[];var n=d,r=yn(e,d);t=ii(t),e-=d;for(var a=Qt(r,t);++n<e;)t(n);return a},jn.toFinite=pu,jn.toInteger=du,jn.toLength=hu,jn.toLower=function(e){return yu(e).toLowerCase()},jn.toNumber=vu,jn.toSafeInteger=function(e){return e?ir(du(e),-9007199254740991,f):0===e?e:0},jn.toString=yu,jn.toUpper=function(e){return yu(e).toUpperCase()},jn.trim=function(e,t,n){if((e=yu(e))&&(n||t===a))return Yt(e);if(!e||!(t=oa(t)))return e;var r=fn(e),i=fn(t);return ma(r,Xt(r,i),Jt(r,i)+1).join(\"\")},jn.trimEnd=function(e,t,n){if((e=yu(e))&&(n||t===a))return e.slice(0,pn(e)+1);if(!e||!(t=oa(t)))return e;var r=fn(e);return ma(r,0,Jt(r,fn(t))+1).join(\"\")},jn.trimStart=function(e,t,n){if((e=yu(e))&&(n||t===a))return e.replace(re,\"\");if(!e||!(t=oa(t)))return e;var r=fn(e);return ma(r,Xt(r,fn(t))).join(\"\")},jn.truncate=function(e,t){var n=30,r=\"...\";if(Jo(t)){var i=\"separator\"in t?t.separator:i;n=\"length\"in t?du(t.length):n,r=\"omission\"in t?oa(t.omission):r}var o=(e=yu(e)).length;if(rn(e)){var u=fn(e);o=u.length}if(n>=o)return e;var l=n-cn(r);if(l<1)return r;var s=u?ma(u,0,l).join(\"\"):e.slice(0,l);if(i===a)return s+r;if(u&&(l+=s.length-l),au(i)){if(e.slice(l).search(i)){var c,f=s;for(i.global||(i=Ee(i.source,yu(pe.exec(i))+\"g\")),i.lastIndex=0;c=i.exec(f);)var p=c.index;s=s.slice(0,p===a?l:p)}}else if(e.indexOf(oa(i),l)!=l){var d=s.lastIndexOf(i);d>-1&&(s=s.slice(0,d))}return s+r},jn.unescape=function(e){return(e=yu(e))&&Q.test(e)?e.replace(H,dn):e},jn.uniqueId=function(e){var t=++Ae;return yu(e)+t},jn.upperCase=Yu,jn.upperFirst=Gu,jn.each=yo,jn.eachRight=mo,jn.first=Vi,ol(jn,(gl={},mr(jn,(function(e,t){Oe.call(jn.prototype,t)||(gl[t]=e)})),gl),{chain:!1}),jn.VERSION=\"4.17.21\",Et([\"bind\",\"bindKey\",\"curry\",\"curryRight\",\"partial\",\"partialRight\"],(function(e){jn[e].placeholder=jn})),Et([\"drop\",\"take\"],(function(e,t){Bn.prototype[e]=function(n){n=n===a?1:gn(du(n),0);var r=this.__filtered__&&!t?new Bn(this):this.clone();return r.__filtered__?r.__takeCount__=yn(n,r.__takeCount__):r.__views__.push({size:yn(n,d),type:e+(r.__dir__<0?\"Right\":\"\")}),r},Bn.prototype[e+\"Right\"]=function(t){return this.reverse()[e](t).reverse()}})),Et([\"filter\",\"map\",\"takeWhile\"],(function(e,t){var n=t+1,r=1==n||3==n;Bn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:ii(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),Et([\"head\",\"last\"],(function(e,t){var n=\"take\"+(t?\"Right\":\"\");Bn.prototype[e]=function(){return this[n](1).value()[0]}})),Et([\"initial\",\"tail\"],(function(e,t){var n=\"drop\"+(t?\"\":\"Right\");Bn.prototype[e]=function(){return this.__filtered__?new Bn(this):this[n](1)}})),Bn.prototype.compact=function(){return this.filter(nl)},Bn.prototype.find=function(e){return this.filter(e).head()},Bn.prototype.findLast=function(e){return this.reverse().find(e)},Bn.prototype.invokeMap=Qr((function(e,t){return\"function\"==typeof e?new Bn(this):this.map((function(n){return Mr(n,e,t)}))})),Bn.prototype.reject=function(e){return this.filter(Ao(ii(e)))},Bn.prototype.slice=function(e,t){e=du(e);var n=this;return n.__filtered__&&(e>0||t<0)?new Bn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==a&&(n=(t=du(t))<0?n.dropRight(-t):n.take(t-e)),n)},Bn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},Bn.prototype.toArray=function(){return this.take(d)},mr(Bn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=jn[r?\"take\"+(\"last\"==t?\"Right\":\"\"):t],o=r||/^find/.test(t);i&&(jn.prototype[t]=function(){var t=this.__wrapped__,u=r?[1]:arguments,l=t instanceof Bn,s=u[0],c=l||Wo(t),f=function(e){var t=i.apply(jn,Lt([e],u));return r&&p?t[0]:t};c&&n&&\"function\"==typeof s&&1!=s.length&&(l=c=!1);var p=this.__chain__,d=!!this.__actions__.length,h=o&&!p,v=l&&!d;if(!o&&c){t=v?t:new Bn(this);var g=e.apply(t,u);return g.__actions__.push({func:fo,args:[f],thisArg:a}),new $n(g,p)}return h&&v?e.apply(this,u):(g=this.thru(f),h?r?g.value()[0]:g.value():g)})})),Et([\"pop\",\"push\",\"shift\",\"sort\",\"splice\",\"unshift\"],(function(e){var t=Me[e],n=/^(?:push|sort|unshift)$/.test(e)?\"tap\":\"thru\",r=/^(?:pop|shift)$/.test(e);jn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var a=this.value();return t.apply(Wo(a)?a:[],e)}return this[n]((function(n){return t.apply(Wo(n)?n:[],e)}))}})),mr(Bn.prototype,(function(e,t){var n=jn[t];if(n){var r=n.name+\"\";Oe.call(Nn,r)||(Nn[r]=[]),Nn[r].push({name:t,func:n})}})),Nn[Ra(a,2).name]=[{name:\"wrapper\",func:a}],Bn.prototype.clone=function(){var e=new Bn(this.__wrapped__);return e.__actions__=Ca(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=Ca(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=Ca(this.__views__),e},Bn.prototype.reverse=function(){if(this.__filtered__){var e=new Bn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},Bn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Wo(e),r=t<0,a=n?e.length:0,i=function(e,t,n){for(var r=-1,a=n.length;++r<a;){var i=n[r],o=i.size;switch(i.type){case\"drop\":e+=o;break;case\"dropRight\":t-=o;break;case\"take\":t=yn(t,e+o);break;case\"takeRight\":e=gn(e,t-o)}}return{start:e,end:t}}(0,a,this.__views__),o=i.start,u=i.end,l=u-o,s=r?u:o-1,c=this.__iteratees__,f=c.length,p=0,d=yn(l,this.__takeCount__);if(!n||!r&&a==l&&d==l)return fa(e,this.__actions__);var h=[];e:for(;l--&&p<d;){for(var v=-1,g=e[s+=t];++v<f;){var y=c[v],m=y.iteratee,b=y.type,_=m(g);if(2==b)g=_;else if(!_){if(1==b)continue e;break e}}h[p++]=g}return h},jn.prototype.at=po,jn.prototype.chain=function(){return co(this)},jn.prototype.commit=function(){return new $n(this.value(),this.__chain__)},jn.prototype.next=function(){this.__values__===a&&(this.__values__=fu(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?a:this.__values__[this.__index__++]}},jn.prototype.plant=function(e){for(var t,n=this;n instanceof In;){var r=Ri(n);r.__index__=0,r.__values__=a,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},jn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof Bn){var t=e;return this.__actions__.length&&(t=new Bn(this)),(t=t.reverse()).__actions__.push({func:fo,args:[Xi],thisArg:a}),new $n(t,this.__chain__)}return this.thru(Xi)},jn.prototype.toJSON=jn.prototype.valueOf=jn.prototype.value=function(){return fa(this.__wrapped__,this.__actions__)},jn.prototype.first=jn.prototype.head,Ge&&(jn.prototype[Ge]=function(){return this}),jn}();ft._=hn,(r=function(){return hn}.call(t,n,t,e))===a||(e.exports=r)}.call(this)},448:(e,t,n)=>{\"use strict\";var r=n(294),a=n(840);function i(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,n=1;n<arguments.length;n++)t+=\"&args[]=\"+encodeURIComponent(arguments[n]);return\"Minified React error #\"+e+\"; visit \"+t+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var o=new Set,u={};function l(e,t){s(e,t),s(e+\"Capture\",t)}function s(e,t){for(u[e]=t,e=0;e<t.length;e++)o.add(t[e])}var c=!(\"undefined\"==typeof window||void 0===window.document||void 0===window.document.createElement),f=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,d={},h={};function v(e,t,n,r,a,i,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=o}var g={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(e){g[e]=new v(e,0,!1,e,null,!1,!1)})),[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(e){var t=e[0];g[t]=new v(t,1,!1,e[1],null,!1,!1)})),[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(e){g[e]=new v(e,2,!1,e.toLowerCase(),null,!1,!1)})),[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(e){g[e]=new v(e,2,!1,e,null,!1,!1)})),\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(e){g[e]=new v(e,3,!1,e.toLowerCase(),null,!1,!1)})),[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(e){g[e]=new v(e,3,!0,e,null,!1,!1)})),[\"capture\",\"download\"].forEach((function(e){g[e]=new v(e,4,!1,e,null,!1,!1)})),[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(e){g[e]=new v(e,6,!1,e,null,!1,!1)})),[\"rowSpan\",\"start\"].forEach((function(e){g[e]=new v(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\\-:]([a-z])/g;function m(e){return e[1].toUpperCase()}function b(e,t,n,r){var a=g.hasOwnProperty(t)?g[t]:null;(null!==a?0!==a.type:r||!(2<t.length)||\"o\"!==t[0]&&\"O\"!==t[0]||\"n\"!==t[1]&&\"N\"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case\"function\":case\"symbol\":return!0;case\"boolean\":return!r&&(null!==n?!n.acceptsBooleans:\"data-\"!==(e=e.toLowerCase().slice(0,5))&&\"aria-\"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!f.call(h,e)||!f.call(d,e)&&(p.test(e)?h[e]=!0:(d[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,\"\"+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&\"\":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?\"\":\"\"+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(e){var t=e.replace(y,m);g[t]=new v(t,1,!1,e,null,!1,!1)})),\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(e){var t=e.replace(y,m);g[t]=new v(t,1,!1,e,\"http://www.w3.org/1999/xlink\",!1,!1)})),[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(e){var t=e.replace(y,m);g[t]=new v(t,1,!1,e,\"http://www.w3.org/XML/1998/namespace\",!1,!1)})),[\"tabIndex\",\"crossOrigin\"].forEach((function(e){g[e]=new v(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1),[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(e){g[e]=new v(e,1,!1,e.toLowerCase(),null,!0,!0)}));var _=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,w=Symbol.for(\"react.element\"),x=Symbol.for(\"react.portal\"),k=Symbol.for(\"react.fragment\"),S=Symbol.for(\"react.strict_mode\"),E=Symbol.for(\"react.profiler\"),C=Symbol.for(\"react.provider\"),T=Symbol.for(\"react.context\"),M=Symbol.for(\"react.forward_ref\"),N=Symbol.for(\"react.suspense\"),P=Symbol.for(\"react.suspense_list\"),z=Symbol.for(\"react.memo\"),L=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\"),Symbol.for(\"react.debug_trace_mode\");var O=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\"),Symbol.for(\"react.cache\"),Symbol.for(\"react.tracing_marker\");var A=Symbol.iterator;function F(e){return null===e||\"object\"!=typeof e?null:\"function\"==typeof(e=A&&e[A]||e[\"@@iterator\"])?e:null}var D,R=Object.assign;function j(e){if(void 0===D)try{throw Error()}catch(e){var t=e.stack.trim().match(/\\n( *(at )?)/);D=t&&t[1]||\"\"}return\"\\n\"+D+e}var U=!1;function I(e,t){if(!e||U)return\"\";U=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,\"props\",{set:function(){throw Error()}}),\"object\"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(t){if(t&&r&&\"string\"==typeof t.stack){for(var a=t.stack.split(\"\\n\"),i=r.stack.split(\"\\n\"),o=a.length-1,u=i.length-1;1<=o&&0<=u&&a[o]!==i[u];)u--;for(;1<=o&&0<=u;o--,u--)if(a[o]!==i[u]){if(1!==o||1!==u)do{if(o--,0>--u||a[o]!==i[u]){var l=\"\\n\"+a[o].replace(\" at new \",\" at \");return e.displayName&&l.includes(\"<anonymous>\")&&(l=l.replace(\"<anonymous>\",e.displayName)),l}}while(1<=o&&0<=u);break}}}finally{U=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:\"\")?j(e):\"\"}function $(e){switch(e.tag){case 5:return j(e.type);case 16:return j(\"Lazy\");case 13:return j(\"Suspense\");case 19:return j(\"SuspenseList\");case 0:case 2:case 15:return I(e.type,!1);case 11:return I(e.type.render,!1);case 1:return I(e.type,!0);default:return\"\"}}function B(e){if(null==e)return null;if(\"function\"==typeof e)return e.displayName||e.name||null;if(\"string\"==typeof e)return e;switch(e){case k:return\"Fragment\";case x:return\"Portal\";case E:return\"Profiler\";case S:return\"StrictMode\";case N:return\"Suspense\";case P:return\"SuspenseList\"}if(\"object\"==typeof e)switch(e.$$typeof){case T:return(e.displayName||\"Context\")+\".Consumer\";case C:return(e._context.displayName||\"Context\")+\".Provider\";case M:var t=e.render;return(e=e.displayName)||(e=\"\"!==(e=t.displayName||t.name||\"\")?\"ForwardRef(\"+e+\")\":\"ForwardRef\"),e;case z:return null!==(t=e.displayName||null)?t:B(e.type)||\"Memo\";case L:t=e._payload,e=e._init;try{return B(e(t))}catch(e){}}return null}function W(e){var t=e.type;switch(e.tag){case 24:return\"Cache\";case 9:return(t.displayName||\"Context\")+\".Consumer\";case 10:return(t._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return e=(e=t.render).displayName||e.name||\"\",t.displayName||(\"\"!==e?\"ForwardRef(\"+e+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return t;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return B(t);case 8:return t===S?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"==typeof t)return t.displayName||t.name||null;if(\"string\"==typeof t)return t}return null}function V(e){switch(typeof e){case\"boolean\":case\"number\":case\"string\":case\"undefined\":case\"object\":return e;default:return\"\"}}function H(e){var t=e.type;return(e=e.nodeName)&&\"input\"===e.toLowerCase()&&(\"checkbox\"===t||\"radio\"===t)}function q(e){e._valueTracker||(e._valueTracker=function(e){var t=H(e)?\"checked\":\"value\",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=\"\"+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&\"function\"==typeof n.get&&\"function\"==typeof n.set){var a=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=\"\"+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=\"\"+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=\"\";return e&&(r=H(e)?e.checked?\"true\":\"false\":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Y(e){if(void 0===(e=e||(\"undefined\"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function G(e,t){var n=t.checked;return R({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function K(e,t){var n=null==t.defaultValue?\"\":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=V(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:\"checkbox\"===t.type||\"radio\"===t.type?null!=t.checked:null!=t.value}}function Z(e,t){null!=(t=t.checked)&&b(e,\"checked\",t,!1)}function X(e,t){Z(e,t);var n=V(t.value),r=t.type;if(null!=n)\"number\"===r?(0===n&&\"\"===e.value||e.value!=n)&&(e.value=\"\"+n):e.value!==\"\"+n&&(e.value=\"\"+n);else if(\"submit\"===r||\"reset\"===r)return void e.removeAttribute(\"value\");t.hasOwnProperty(\"value\")?ee(e,t.type,n):t.hasOwnProperty(\"defaultValue\")&&ee(e,t.type,V(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty(\"value\")||t.hasOwnProperty(\"defaultValue\")){var r=t.type;if(!(\"submit\"!==r&&\"reset\"!==r||void 0!==t.value&&null!==t.value))return;t=\"\"+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}\"\"!==(n=e.name)&&(e.name=\"\"),e.defaultChecked=!!e._wrapperState.initialChecked,\"\"!==n&&(e.name=n)}function ee(e,t,n){\"number\"===t&&Y(e.ownerDocument)===e||(null==n?e.defaultValue=\"\"+e._wrapperState.initialValue:e.defaultValue!==\"\"+n&&(e.defaultValue=\"\"+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t[\"$\"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty(\"$\"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=\"\"+V(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return R({},t,{value:void 0,defaultValue:void 0,children:\"\"+e._wrapperState.initialValue})}function ae(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(te(n)){if(1<n.length)throw Error(i(93));n=n[0]}t=n}null==t&&(t=\"\"),n=t}e._wrapperState={initialValue:V(n)}}function ie(e,t){var n=V(t.value),r=V(t.defaultValue);null!=n&&((n=\"\"+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=\"\"+r)}function oe(e){var t=e.textContent;t===e._wrapperState.initialValue&&\"\"!==t&&null!==t&&(e.value=t)}function ue(e){switch(e){case\"svg\":return\"http://www.w3.org/2000/svg\";case\"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function le(e,t){return null==e||\"http://www.w3.org/1999/xhtml\"===e?ue(t):\"http://www.w3.org/2000/svg\"===e&&\"foreignObject\"===t?\"http://www.w3.org/1999/xhtml\":e}var se,ce,fe=(ce=function(e,t){if(\"http://www.w3.org/2000/svg\"!==e.namespaceURI||\"innerHTML\"in e)e.innerHTML=t;else{for((se=se||document.createElement(\"div\")).innerHTML=\"<svg>\"+t.valueOf().toString()+\"</svg>\",t=se.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},\"undefined\"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function pe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var de={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},he=[\"Webkit\",\"ms\",\"Moz\",\"O\"];function ve(e,t,n){return null==t||\"boolean\"==typeof t||\"\"===t?\"\":n||\"number\"!=typeof t||0===t||de.hasOwnProperty(e)&&de[e]?(\"\"+t).trim():t+\"px\"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf(\"--\"),a=ve(n,t[n],r);\"float\"===n&&(n=\"cssFloat\"),r?e.setProperty(n,a):e[n]=a}}Object.keys(de).forEach((function(e){he.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),de[t]=de[e]}))}));var ye=R({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function me(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if(\"object\"!=typeof t.dangerouslySetInnerHTML||!(\"__html\"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&\"object\"!=typeof t.style)throw Error(i(62))}}function be(e,t){if(-1===e.indexOf(\"-\"))return\"string\"==typeof t.is;switch(e){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var _e=null;function we(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,ke=null,Se=null;function Ee(e){if(e=ba(e)){if(\"function\"!=typeof xe)throw Error(i(280));var t=e.stateNode;t&&(t=wa(t),xe(e.stateNode,e.type,t))}}function Ce(e){ke?Se?Se.push(e):Se=[e]:ke=e}function Te(){if(ke){var e=ke,t=Se;if(Se=ke=null,Ee(e),t)for(e=0;e<t.length;e++)Ee(t[e])}}function Me(e,t){return e(t)}function Ne(){}var Pe=!1;function ze(e,t,n){if(Pe)return e(t,n);Pe=!0;try{return Me(e,t,n)}finally{Pe=!1,(null!==ke||null!==Se)&&(Ne(),Te())}}function Le(e,t){var n=e.stateNode;if(null===n)return null;var r=wa(n);if(null===r)return null;n=r[t];e:switch(t){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(r=!r.disabled)||(r=!(\"button\"===(e=e.type)||\"input\"===e||\"select\"===e||\"textarea\"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&\"function\"!=typeof n)throw Error(i(231,t,typeof n));return n}var Oe=!1;if(c)try{var Ae={};Object.defineProperty(Ae,\"passive\",{get:function(){Oe=!0}}),window.addEventListener(\"test\",Ae,Ae),window.removeEventListener(\"test\",Ae,Ae)}catch(ce){Oe=!1}function Fe(e,t,n,r,a,i,o,u,l){var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(e){this.onError(e)}}var De=!1,Re=null,je=!1,Ue=null,Ie={onError:function(e){De=!0,Re=e}};function $e(e,t,n,r,a,i,o,u,l){De=!1,Re=null,Fe.apply(Ie,arguments)}function Be(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function We(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&null!==(e=e.alternate)&&(t=e.memoizedState),null!==t)return t.dehydrated}return null}function Ve(e){if(Be(e)!==e)throw Error(i(188))}function He(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Be(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Ve(a),e;if(o===r)return Ve(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var u=!1,l=a.child;l;){if(l===n){u=!0,n=a,r=o;break}if(l===r){u=!0,r=a,n=o;break}l=l.sibling}if(!u){for(l=o.child;l;){if(l===n){u=!0,n=o,r=a;break}if(l===r){u=!0,r=o,n=a;break}l=l.sibling}if(!u)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e))?qe(e):null}function qe(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=qe(e);if(null!==t)return t;e=e.sibling}return null}var Qe=a.unstable_scheduleCallback,Ye=a.unstable_cancelCallback,Ge=a.unstable_shouldYield,Ke=a.unstable_requestPaint,Ze=a.unstable_now,Xe=a.unstable_getCurrentPriorityLevel,Je=a.unstable_ImmediatePriority,et=a.unstable_UserBlockingPriority,tt=a.unstable_NormalPriority,nt=a.unstable_LowPriority,rt=a.unstable_IdlePriority,at=null,it=null,ot=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(ut(e)/lt|0)|0},ut=Math.log,lt=Math.LN2,st=64,ct=4194304;function ft(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,a=e.suspendedLanes,i=e.pingedLanes,o=268435455&n;if(0!==o){var u=o&~a;0!==u?r=ft(u):0!=(i&=o)&&(r=ft(i))}else 0!=(o=n&~a)?r=ft(o):0!==i&&(r=ft(i));if(0===r)return 0;if(0!==t&&t!==r&&0==(t&a)&&((a=r&-r)>=(i=t&-t)||16===a&&0!=(4194240&i)))return t;if(0!=(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-ot(t)),r|=e[n],t&=~a;return r}function dt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ht(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function vt(){var e=st;return 0==(4194240&(st<<=1))&&(st=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-ot(t)]=n}function mt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-ot(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}var bt=0;function _t(e){return 1<(e&=-e)?4<e?0!=(268435455&e)?16:536870912:4:1}var wt,xt,kt,St,Et,Ct=!1,Tt=[],Mt=null,Nt=null,Pt=null,zt=new Map,Lt=new Map,Ot=[],At=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");function Ft(e,t){switch(e){case\"focusin\":case\"focusout\":Mt=null;break;case\"dragenter\":case\"dragleave\":Nt=null;break;case\"mouseover\":case\"mouseout\":Pt=null;break;case\"pointerover\":case\"pointerout\":zt.delete(t.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":Lt.delete(t.pointerId)}}function Dt(e,t,n,r,a,i){return null===e||e.nativeEvent!==i?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:i,targetContainers:[a]},null!==t&&null!==(t=ba(t))&&xt(t),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Rt(e){var t=ma(e.target);if(null!==t){var n=Be(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=We(n)))return e.blockedOn=t,void Et(e.priority,(function(){kt(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function jt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Gt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=ba(n))&&xt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);_e=r,n.target.dispatchEvent(r),_e=null,t.shift()}return!0}function Ut(e,t,n){jt(e)&&n.delete(t)}function It(){Ct=!1,null!==Mt&&jt(Mt)&&(Mt=null),null!==Nt&&jt(Nt)&&(Nt=null),null!==Pt&&jt(Pt)&&(Pt=null),zt.forEach(Ut),Lt.forEach(Ut)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,Ct||(Ct=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,It)))}function Bt(e){function t(t){return $t(t,e)}if(0<Tt.length){$t(Tt[0],e);for(var n=1;n<Tt.length;n++){var r=Tt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Mt&&$t(Mt,e),null!==Nt&&$t(Nt,e),null!==Pt&&$t(Pt,e),zt.forEach(t),Lt.forEach(t),n=0;n<Ot.length;n++)(r=Ot[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Ot.length&&null===(n=Ot[0]).blockedOn;)Rt(n),null===n.blockedOn&&Ot.shift()}var Wt=_.ReactCurrentBatchConfig,Vt=!0;function Ht(e,t,n,r){var a=bt,i=Wt.transition;Wt.transition=null;try{bt=1,Qt(e,t,n,r)}finally{bt=a,Wt.transition=i}}function qt(e,t,n,r){var a=bt,i=Wt.transition;Wt.transition=null;try{bt=4,Qt(e,t,n,r)}finally{bt=a,Wt.transition=i}}function Qt(e,t,n,r){if(Vt){var a=Gt(e,t,n,r);if(null===a)Vr(e,t,r,Yt,n),Ft(e,r);else if(function(e,t,n,r,a){switch(t){case\"focusin\":return Mt=Dt(Mt,e,t,n,r,a),!0;case\"dragenter\":return Nt=Dt(Nt,e,t,n,r,a),!0;case\"mouseover\":return Pt=Dt(Pt,e,t,n,r,a),!0;case\"pointerover\":var i=a.pointerId;return zt.set(i,Dt(zt.get(i)||null,e,t,n,r,a)),!0;case\"gotpointercapture\":return i=a.pointerId,Lt.set(i,Dt(Lt.get(i)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(Ft(e,r),4&t&&-1<At.indexOf(e)){for(;null!==a;){var i=ba(a);if(null!==i&&wt(i),null===(i=Gt(e,t,n,r))&&Vr(e,t,r,Yt,n),i===a)break;a=i}null!==a&&r.stopPropagation()}else Vr(e,t,r,null,n)}}var Yt=null;function Gt(e,t,n,r){if(Yt=null,null!==(e=ma(e=we(r))))if(null===(t=Be(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=We(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Yt=e,null}function Kt(e){switch(e){case\"cancel\":case\"click\":case\"close\":case\"contextmenu\":case\"copy\":case\"cut\":case\"auxclick\":case\"dblclick\":case\"dragend\":case\"dragstart\":case\"drop\":case\"focusin\":case\"focusout\":case\"input\":case\"invalid\":case\"keydown\":case\"keypress\":case\"keyup\":case\"mousedown\":case\"mouseup\":case\"paste\":case\"pause\":case\"play\":case\"pointercancel\":case\"pointerdown\":case\"pointerup\":case\"ratechange\":case\"reset\":case\"resize\":case\"seeked\":case\"submit\":case\"touchcancel\":case\"touchend\":case\"touchstart\":case\"volumechange\":case\"change\":case\"selectionchange\":case\"textInput\":case\"compositionstart\":case\"compositionend\":case\"compositionupdate\":case\"beforeblur\":case\"afterblur\":case\"beforeinput\":case\"blur\":case\"fullscreenchange\":case\"focus\":case\"hashchange\":case\"popstate\":case\"select\":case\"selectstart\":return 1;case\"drag\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"mousemove\":case\"mouseout\":case\"mouseover\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"scroll\":case\"toggle\":case\"touchmove\":case\"wheel\":case\"mouseenter\":case\"mouseleave\":case\"pointerenter\":case\"pointerleave\":return 4;case\"message\":switch(Xe()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Zt=null,Xt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Xt,r=n.length,a=\"value\"in Zt?Zt.value:Zt.textContent,i=a.length;for(e=0;e<r&&n[e]===a[e];e++);var o=r-e;for(t=1;t<=o&&n[r-t]===a[i-t];t++);return Jt=a.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return\"charCode\"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,a,i){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=i,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(a):a[o]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return R(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():\"unknown\"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():\"unknown\"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,un,ln,sn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=an(sn),fn=R({},sn,{view:0,detail:0}),pn=an(fn),dn=R({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:En,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return\"movementX\"in e?e.movementX:(e!==ln&&(ln&&\"mousemove\"===e.type?(on=e.screenX-ln.screenX,un=e.screenY-ln.screenY):un=on=0,ln=e),on)},movementY:function(e){return\"movementY\"in e?e.movementY:un}}),hn=an(dn),vn=an(R({},dn,{dataTransfer:0})),gn=an(R({},fn,{relatedTarget:0})),yn=an(R({},sn,{animationName:0,elapsedTime:0,pseudoElement:0})),mn=R({},sn,{clipboardData:function(e){return\"clipboardData\"in e?e.clipboardData:window.clipboardData}}),bn=an(mn),_n=an(R({},sn,{data:0})),wn={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},xn={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},kn={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Sn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=kn[e])&&!!t[e]}function En(){return Sn}var Cn=R({},fn,{key:function(e){if(e.key){var t=wn[e.key]||e.key;if(\"Unidentified\"!==t)return t}return\"keypress\"===e.type?13===(e=tn(e))?\"Enter\":String.fromCharCode(e):\"keydown\"===e.type||\"keyup\"===e.type?xn[e.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:En,charCode:function(e){return\"keypress\"===e.type?tn(e):0},keyCode:function(e){return\"keydown\"===e.type||\"keyup\"===e.type?e.keyCode:0},which:function(e){return\"keypress\"===e.type?tn(e):\"keydown\"===e.type||\"keyup\"===e.type?e.keyCode:0}}),Tn=an(Cn),Mn=an(R({},dn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=an(R({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:En})),Pn=an(R({},sn,{propertyName:0,elapsedTime:0,pseudoElement:0})),zn=R({},dn,{deltaX:function(e){return\"deltaX\"in e?e.deltaX:\"wheelDeltaX\"in e?-e.wheelDeltaX:0},deltaY:function(e){return\"deltaY\"in e?e.deltaY:\"wheelDeltaY\"in e?-e.wheelDeltaY:\"wheelDelta\"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Ln=an(zn),On=[9,13,27,32],An=c&&\"CompositionEvent\"in window,Fn=null;c&&\"documentMode\"in document&&(Fn=document.documentMode);var Dn=c&&\"TextEvent\"in window&&!Fn,Rn=c&&(!An||Fn&&8<Fn&&11>=Fn),jn=String.fromCharCode(32),Un=!1;function In(e,t){switch(e){case\"keyup\":return-1!==On.indexOf(t.keyCode);case\"keydown\":return 229!==t.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function $n(e){return\"object\"==typeof(e=e.detail)&&\"data\"in e?e.data:null}var Bn=!1,Wn={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return\"input\"===t?!!Wn[e.type]:\"textarea\"===t}function Hn(e,t,n,r){Ce(r),0<(t=qr(t,\"onChange\")).length&&(n=new cn(\"onChange\",\"change\",null,n,r),e.push({event:n,listeners:t}))}var qn=null,Qn=null;function Yn(e){jr(e,0)}function Gn(e){if(Q(_a(e)))return e}function Kn(e,t){if(\"change\"===e)return t}var Zn=!1;if(c){var Xn;if(c){var Jn=\"oninput\"in document;if(!Jn){var er=document.createElement(\"div\");er.setAttribute(\"oninput\",\"return;\"),Jn=\"function\"==typeof er.oninput}Xn=Jn}else Xn=!1;Zn=Xn&&(!document.documentMode||9<document.documentMode)}function tr(){qn&&(qn.detachEvent(\"onpropertychange\",nr),Qn=qn=null)}function nr(e){if(\"value\"===e.propertyName&&Gn(Qn)){var t=[];Hn(t,Qn,e,we(e)),ze(Yn,t)}}function rr(e,t,n){\"focusin\"===e?(tr(),Qn=n,(qn=t).attachEvent(\"onpropertychange\",nr)):\"focusout\"===e&&tr()}function ar(e){if(\"selectionchange\"===e||\"keyup\"===e||\"keydown\"===e)return Gn(Qn)}function ir(e,t){if(\"click\"===e)return Gn(t)}function or(e,t){if(\"input\"===e||\"change\"===e)return Gn(t)}var ur=\"function\"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function lr(e,t){if(ur(e,t))return!0;if(\"object\"!=typeof e||null===e||\"object\"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!f.call(t,a)||!ur(e[a],t[a]))return!1}return!0}function sr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=sr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=sr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):\"contains\"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=Y();t instanceof e.HTMLIFrameElement;){try{var n=\"string\"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=Y((e=t.contentWindow).document)}return t}function dr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(\"input\"===t&&(\"text\"===e.type||\"search\"===e.type||\"tel\"===e.type||\"url\"===e.type||\"password\"===e.type)||\"textarea\"===t||\"true\"===e.contentEditable)}function hr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&fr(n.ownerDocument.documentElement,n)){if(null!==r&&dr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),\"selectionStart\"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var a=n.textContent.length,i=Math.min(r.start,a);r=void 0===r.end?i:Math.min(r.end,a),!e.extend&&i>r&&(a=r,r=i,i=a),a=cr(n,i);var o=cr(n,r);a&&o&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&((t=t.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(\"function\"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var vr=c&&\"documentMode\"in document&&11>=document.documentMode,gr=null,yr=null,mr=null,br=!1;function _r(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;br||null==gr||gr!==Y(r)||(r=\"selectionStart\"in(r=gr)&&dr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},mr&&lr(mr,r)||(mr=r,0<(r=qr(yr,\"onSelect\")).length&&(t=new cn(\"onSelect\",\"select\",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function wr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[\"Webkit\"+e]=\"webkit\"+t,n[\"Moz\"+e]=\"moz\"+t,n}var xr={animationend:wr(\"Animation\",\"AnimationEnd\"),animationiteration:wr(\"Animation\",\"AnimationIteration\"),animationstart:wr(\"Animation\",\"AnimationStart\"),transitionend:wr(\"Transition\",\"TransitionEnd\")},kr={},Sr={};function Er(e){if(kr[e])return kr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Sr)return kr[e]=n[t];return e}c&&(Sr=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),\"TransitionEvent\"in window||delete xr.transitionend.transition);var Cr=Er(\"animationend\"),Tr=Er(\"animationiteration\"),Mr=Er(\"animationstart\"),Nr=Er(\"transitionend\"),Pr=new Map,zr=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function Lr(e,t){Pr.set(e,t),l(t,[e])}for(var Or=0;Or<zr.length;Or++){var Ar=zr[Or];Lr(Ar.toLowerCase(),\"on\"+(Ar[0].toUpperCase()+Ar.slice(1)))}Lr(Cr,\"onAnimationEnd\"),Lr(Tr,\"onAnimationIteration\"),Lr(Mr,\"onAnimationStart\"),Lr(\"dblclick\",\"onDoubleClick\"),Lr(\"focusin\",\"onFocus\"),Lr(\"focusout\",\"onBlur\"),Lr(Nr,\"onTransitionEnd\"),s(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]),s(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]),s(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]),s(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]),l(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \")),l(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \")),l(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]),l(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \")),l(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")),l(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Fr=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Dr=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Fr));function Rr(e,t,n){var r=e.type||\"unknown-event\";e.currentTarget=n,function(e,t,n,r,a,o,u,l,s){if($e.apply(this,arguments),De){if(!De)throw Error(i(198));var c=Re;De=!1,Re=null,je||(je=!0,Ue=c)}}(r,t,void 0,e),e.currentTarget=null}function jr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var i=void 0;if(t)for(var o=r.length-1;0<=o;o--){var u=r[o],l=u.instance,s=u.currentTarget;if(u=u.listener,l!==i&&a.isPropagationStopped())break e;Rr(a,u,s),i=l}else for(o=0;o<r.length;o++){if(l=(u=r[o]).instance,s=u.currentTarget,u=u.listener,l!==i&&a.isPropagationStopped())break e;Rr(a,u,s),i=l}}}if(je)throw e=Ue,je=!1,Ue=null,e}function Ur(e,t){var n=t[va];void 0===n&&(n=t[va]=new Set);var r=e+\"__bubble\";n.has(r)||(Wr(t,e,2,!1),n.add(r))}function Ir(e,t,n){var r=0;t&&(r|=4),Wr(n,e,r,t)}var $r=\"_reactListening\"+Math.random().toString(36).slice(2);function Br(e){if(!e[$r]){e[$r]=!0,o.forEach((function(t){\"selectionchange\"!==t&&(Dr.has(t)||Ir(t,!1,e),Ir(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,Ir(\"selectionchange\",!1,t))}}function Wr(e,t,n,r){switch(Kt(t)){case 1:var a=Ht;break;case 4:a=qt;break;default:a=Qt}n=a.bind(null,t,n,e),a=void 0,!Oe||\"touchstart\"!==t&&\"touchmove\"!==t&&\"wheel\"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Vr(e,t,n,r,a){var i=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var o=r.tag;if(3===o||4===o){var u=r.stateNode.containerInfo;if(u===a||8===u.nodeType&&u.parentNode===a)break;if(4===o)for(o=r.return;null!==o;){var l=o.tag;if((3===l||4===l)&&((l=o.stateNode.containerInfo)===a||8===l.nodeType&&l.parentNode===a))return;o=o.return}for(;null!==u;){if(null===(o=ma(u)))return;if(5===(l=o.tag)||6===l){r=i=o;continue e}u=u.parentNode}}r=r.return}ze((function(){var r=i,a=we(n),o=[];e:{var u=Pr.get(e);if(void 0!==u){var l=cn,s=e;switch(e){case\"keypress\":if(0===tn(n))break e;case\"keydown\":case\"keyup\":l=Tn;break;case\"focusin\":s=\"focus\",l=gn;break;case\"focusout\":s=\"blur\",l=gn;break;case\"beforeblur\":case\"afterblur\":l=gn;break;case\"click\":if(2===n.button)break e;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":l=hn;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":l=vn;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":l=Nn;break;case Cr:case Tr:case Mr:l=yn;break;case Nr:l=Pn;break;case\"scroll\":l=pn;break;case\"wheel\":l=Ln;break;case\"copy\":case\"cut\":case\"paste\":l=bn;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":l=Mn}var c=0!=(4&t),f=!c&&\"scroll\"===e,p=c?null!==u?u+\"Capture\":null:u;c=[];for(var d,h=r;null!==h;){var v=(d=h).stateNode;if(5===d.tag&&null!==v&&(d=v,null!==p&&null!=(v=Le(h,p))&&c.push(Hr(h,v,d))),f)break;h=h.return}0<c.length&&(u=new l(u,s,null,n,a),o.push({event:u,listeners:c}))}}if(0==(7&t)){if(l=\"mouseout\"===e||\"pointerout\"===e,(!(u=\"mouseover\"===e||\"pointerover\"===e)||n===_e||!(s=n.relatedTarget||n.fromElement)||!ma(s)&&!s[ha])&&(l||u)&&(u=a.window===a?a:(u=a.ownerDocument)?u.defaultView||u.parentWindow:window,l?(l=r,null!==(s=(s=n.relatedTarget||n.toElement)?ma(s):null)&&(s!==(f=Be(s))||5!==s.tag&&6!==s.tag)&&(s=null)):(l=null,s=r),l!==s)){if(c=hn,v=\"onMouseLeave\",p=\"onMouseEnter\",h=\"mouse\",\"pointerout\"!==e&&\"pointerover\"!==e||(c=Mn,v=\"onPointerLeave\",p=\"onPointerEnter\",h=\"pointer\"),f=null==l?u:_a(l),d=null==s?u:_a(s),(u=new c(v,h+\"leave\",l,n,a)).target=f,u.relatedTarget=d,v=null,ma(a)===r&&((c=new c(p,h+\"enter\",s,n,a)).target=d,c.relatedTarget=f,v=c),f=v,l&&s)e:{for(p=s,h=0,d=c=l;d;d=Qr(d))h++;for(d=0,v=p;v;v=Qr(v))d++;for(;0<h-d;)c=Qr(c),h--;for(;0<d-h;)p=Qr(p),d--;for(;h--;){if(c===p||null!==p&&c===p.alternate)break e;c=Qr(c),p=Qr(p)}c=null}else c=null;null!==l&&Yr(o,u,l,c,!1),null!==s&&null!==f&&Yr(o,f,s,c,!0)}if(\"select\"===(l=(u=r?_a(r):window).nodeName&&u.nodeName.toLowerCase())||\"input\"===l&&\"file\"===u.type)var g=Kn;else if(Vn(u))if(Zn)g=or;else{g=ar;var y=rr}else(l=u.nodeName)&&\"input\"===l.toLowerCase()&&(\"checkbox\"===u.type||\"radio\"===u.type)&&(g=ir);switch(g&&(g=g(e,r))?Hn(o,g,n,a):(y&&y(e,u,r),\"focusout\"===e&&(y=u._wrapperState)&&y.controlled&&\"number\"===u.type&&ee(u,\"number\",u.value)),y=r?_a(r):window,e){case\"focusin\":(Vn(y)||\"true\"===y.contentEditable)&&(gr=y,yr=r,mr=null);break;case\"focusout\":mr=yr=gr=null;break;case\"mousedown\":br=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":br=!1,_r(o,n,a);break;case\"selectionchange\":if(vr)break;case\"keydown\":case\"keyup\":_r(o,n,a)}var m;if(An)e:{switch(e){case\"compositionstart\":var b=\"onCompositionStart\";break e;case\"compositionend\":b=\"onCompositionEnd\";break e;case\"compositionupdate\":b=\"onCompositionUpdate\";break e}b=void 0}else Bn?In(e,n)&&(b=\"onCompositionEnd\"):\"keydown\"===e&&229===n.keyCode&&(b=\"onCompositionStart\");b&&(Rn&&\"ko\"!==n.locale&&(Bn||\"onCompositionStart\"!==b?\"onCompositionEnd\"===b&&Bn&&(m=en()):(Xt=\"value\"in(Zt=a)?Zt.value:Zt.textContent,Bn=!0)),0<(y=qr(r,b)).length&&(b=new _n(b,e,null,n,a),o.push({event:b,listeners:y}),(m||null!==(m=$n(n)))&&(b.data=m))),(m=Dn?function(e,t){switch(e){case\"compositionend\":return $n(t);case\"keypress\":return 32!==t.which?null:(Un=!0,jn);case\"textInput\":return(e=t.data)===jn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Bn)return\"compositionend\"===e||!An&&In(e,t)?(e=en(),Jt=Xt=Zt=null,Bn=!1,e):null;switch(e){case\"paste\":default:return null;case\"keypress\":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case\"compositionend\":return Rn&&\"ko\"!==t.locale?null:t.data}}(e,n))&&0<(r=qr(r,\"onBeforeInput\")).length&&(a=new _n(\"onBeforeInput\",\"beforeinput\",null,n,a),o.push({event:a,listeners:r}),a.data=m)}jr(o,t)}))}function Hr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function qr(e,t){for(var n=t+\"Capture\",r=[];null!==e;){var a=e,i=a.stateNode;5===a.tag&&null!==i&&(a=i,null!=(i=Le(e,n))&&r.unshift(Hr(e,i,a)),null!=(i=Le(e,t))&&r.push(Hr(e,i,a))),e=e.return}return r}function Qr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Yr(e,t,n,r,a){for(var i=t._reactName,o=[];null!==n&&n!==r;){var u=n,l=u.alternate,s=u.stateNode;if(null!==l&&l===r)break;5===u.tag&&null!==s&&(u=s,a?null!=(l=Le(n,i))&&o.unshift(Hr(n,l,u)):a||null!=(l=Le(n,i))&&o.push(Hr(n,l,u))),n=n.return}0!==o.length&&e.push({event:t,listeners:o})}var Gr=/\\r\\n?/g,Kr=/\\u0000|\\uFFFD/g;function Zr(e){return(\"string\"==typeof e?e:\"\"+e).replace(Gr,\"\\n\").replace(Kr,\"\")}function Xr(e,t,n){if(t=Zr(t),Zr(e)!==t&&n)throw Error(i(425))}function Jr(){}var ea=null,ta=null;function na(e,t){return\"textarea\"===e||\"noscript\"===e||\"string\"==typeof t.children||\"number\"==typeof t.children||\"object\"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ra=\"function\"==typeof setTimeout?setTimeout:void 0,aa=\"function\"==typeof clearTimeout?clearTimeout:void 0,ia=\"function\"==typeof Promise?Promise:void 0,oa=\"function\"==typeof queueMicrotask?queueMicrotask:void 0!==ia?function(e){return ia.resolve(null).then(e).catch(ua)}:ra;function ua(e){setTimeout((function(){throw e}))}function la(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if(\"/$\"===(n=a.data)){if(0===r)return e.removeChild(a),void Bt(t);r--}else\"$\"!==n&&\"$?\"!==n&&\"$!\"!==n||r++;n=a}while(n);Bt(t)}function sa(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if(\"$\"===(t=e.data)||\"$!\"===t||\"$?\"===t)break;if(\"/$\"===t)return null}}return e}function ca(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if(\"$\"===n||\"$!\"===n||\"$?\"===n){if(0===t)return e;t--}else\"/$\"===n&&t++}e=e.previousSibling}return null}var fa=Math.random().toString(36).slice(2),pa=\"__reactFiber$\"+fa,da=\"__reactProps$\"+fa,ha=\"__reactContainer$\"+fa,va=\"__reactEvents$\"+fa,ga=\"__reactListeners$\"+fa,ya=\"__reactHandles$\"+fa;function ma(e){var t=e[pa];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ha]||n[pa]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ca(e);null!==e;){if(n=e[pa])return n;e=ca(e)}return t}n=(e=n).parentNode}return null}function ba(e){return!(e=e[pa]||e[ha])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function _a(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function wa(e){return e[da]||null}var xa=[],ka=-1;function Sa(e){return{current:e}}function Ea(e){0>ka||(e.current=xa[ka],xa[ka]=null,ka--)}function Ca(e,t){ka++,xa[ka]=e.current,e.current=t}var Ta={},Ma=Sa(Ta),Na=Sa(!1),Pa=Ta;function za(e,t){var n=e.type.contextTypes;if(!n)return Ta;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,i={};for(a in n)i[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function La(e){return null!=e.childContextTypes}function Oa(){Ea(Na),Ea(Ma)}function Aa(e,t,n){if(Ma.current!==Ta)throw Error(i(168));Ca(Ma,t),Ca(Na,n)}function Fa(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,\"function\"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in t))throw Error(i(108,W(e)||\"Unknown\",a));return R({},n,r)}function Da(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ta,Pa=Ma.current,Ca(Ma,e),Ca(Na,Na.current),!0}function Ra(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=Fa(e,t,Pa),r.__reactInternalMemoizedMergedChildContext=e,Ea(Na),Ea(Ma),Ca(Ma,e)):Ea(Na),Ca(Na,n)}var ja=null,Ua=!1,Ia=!1;function $a(e){null===ja?ja=[e]:ja.push(e)}function Ba(){if(!Ia&&null!==ja){Ia=!0;var e=0,t=bt;try{var n=ja;for(bt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}ja=null,Ua=!1}catch(t){throw null!==ja&&(ja=ja.slice(e+1)),Qe(Je,Ba),t}finally{bt=t,Ia=!1}}return null}var Wa=[],Va=0,Ha=null,qa=0,Qa=[],Ya=0,Ga=null,Ka=1,Za=\"\";function Xa(e,t){Wa[Va++]=qa,Wa[Va++]=Ha,Ha=e,qa=t}function Ja(e,t,n){Qa[Ya++]=Ka,Qa[Ya++]=Za,Qa[Ya++]=Ga,Ga=e;var r=Ka;e=Za;var a=32-ot(r)-1;r&=~(1<<a),n+=1;var i=32-ot(t)+a;if(30<i){var o=a-a%5;i=(r&(1<<o)-1).toString(32),r>>=o,a-=o,Ka=1<<32-ot(t)+a|n<<a|r,Za=i+e}else Ka=1<<i|n<<a|r,Za=e}function ei(e){null!==e.return&&(Xa(e,1),Ja(e,1,0))}function ti(e){for(;e===Ha;)Ha=Wa[--Va],Wa[Va]=null,qa=Wa[--Va],Wa[Va]=null;for(;e===Ga;)Ga=Qa[--Ya],Qa[Ya]=null,Za=Qa[--Ya],Qa[Ya]=null,Ka=Qa[--Ya],Qa[Ya]=null}var ni=null,ri=null,ai=!1,ii=null;function oi(e,t){var n=Ls(5,null,null,0);n.elementType=\"DELETED\",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function ui(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,ni=e,ri=sa(t.firstChild),!0);case 6:return null!==(t=\"\"===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,ni=e,ri=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ga?{id:Ka,overflow:Za}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Ls(18,null,null,0)).stateNode=t,n.return=e,e.child=n,ni=e,ri=null,!0);default:return!1}}function li(e){return 0!=(1&e.mode)&&0==(128&e.flags)}function si(e){if(ai){var t=ri;if(t){var n=t;if(!ui(e,t)){if(li(e))throw Error(i(418));t=sa(n.nextSibling);var r=ni;t&&ui(e,t)?oi(r,n):(e.flags=-4097&e.flags|2,ai=!1,ni=e)}}else{if(li(e))throw Error(i(418));e.flags=-4097&e.flags|2,ai=!1,ni=e}}}function ci(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ni=e}function fi(e){if(e!==ni)return!1;if(!ai)return ci(e),ai=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t=\"head\"!==(t=e.type)&&\"body\"!==t&&!na(e.type,e.memoizedProps)),t&&(t=ri)){if(li(e))throw pi(),Error(i(418));for(;t;)oi(e,t),t=sa(t.nextSibling)}if(ci(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if(\"/$\"===n){if(0===t){ri=sa(e.nextSibling);break e}t--}else\"$\"!==n&&\"$!\"!==n&&\"$?\"!==n||t++}e=e.nextSibling}ri=null}}else ri=ni?sa(e.stateNode.nextSibling):null;return!0}function pi(){for(var e=ri;e;)e=sa(e.nextSibling)}function di(){ri=ni=null,ai=!1}function hi(e){null===ii?ii=[e]:ii.push(e)}var vi=_.ReactCurrentBatchConfig;function gi(e,t){if(e&&e.defaultProps){for(var n in t=R({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var yi=Sa(null),mi=null,bi=null,_i=null;function wi(){_i=bi=mi=null}function xi(e){var t=yi.current;Ea(yi),e._currentValue=t}function ki(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Si(e,t){mi=e,_i=bi=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(_u=!0),e.firstContext=null)}function Ei(e){var t=e._currentValue;if(_i!==e)if(e={context:e,memoizedValue:t,next:null},null===bi){if(null===mi)throw Error(i(308));bi=e,mi.dependencies={lanes:0,firstContext:e}}else bi=bi.next=e;return t}var Ci=null;function Ti(e){null===Ci?Ci=[e]:Ci.push(e)}function Mi(e,t,n,r){var a=t.interleaved;return null===a?(n.next=n,Ti(t)):(n.next=a.next,a.next=n),t.interleaved=n,Ni(e,r)}function Ni(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Pi=!1;function zi(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Li(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Oi(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ai(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&Nl)){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,Ni(e,n)}return null===(a=r.interleaved)?(t.next=t,Ti(r)):(t.next=a.next,a.next=t),r.interleaved=t,Ni(e,n)}function Fi(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,mt(e,n)}}function Di(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,i=null;if(null!==(n=n.firstBaseUpdate)){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===i?a=i=o:i=i.next=o,n=n.next}while(null!==n);null===i?a=i=t:i=i.next=t}else a=i=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:i,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ri(e,t,n,r){var a=e.updateQueue;Pi=!1;var i=a.firstBaseUpdate,o=a.lastBaseUpdate,u=a.shared.pending;if(null!==u){a.shared.pending=null;var l=u,s=l.next;l.next=null,null===o?i=s:o.next=s,o=l;var c=e.alternate;null!==c&&(u=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===u?c.firstBaseUpdate=s:u.next=s,c.lastBaseUpdate=l)}if(null!==i){var f=a.baseState;for(o=0,c=s=l=null,u=i;;){var p=u.lane,d=u.eventTime;if((r&p)===p){null!==c&&(c=c.next={eventTime:d,lane:0,tag:u.tag,payload:u.payload,callback:u.callback,next:null});e:{var h=e,v=u;switch(p=t,d=n,v.tag){case 1:if(\"function\"==typeof(h=v.payload)){f=h.call(d,f,p);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(p=\"function\"==typeof(h=v.payload)?h.call(d,f,p):h))break e;f=R({},f,p);break e;case 2:Pi=!0}}null!==u.callback&&0!==u.lane&&(e.flags|=64,null===(p=a.effects)?a.effects=[u]:p.push(u))}else d={eventTime:d,lane:p,tag:u.tag,payload:u.payload,callback:u.callback,next:null},null===c?(s=c=d,l=f):c=c.next=d,o|=p;if(null===(u=u.next)){if(null===(u=a.shared.pending))break;u=(p=u).next,p.next=null,a.lastBaseUpdate=p,a.shared.pending=null}}if(null===c&&(l=f),a.baseState=l,a.firstBaseUpdate=s,a.lastBaseUpdate=c,null!==(t=a.shared.interleaved)){a=t;do{o|=a.lane,a=a.next}while(a!==t)}else null===i&&(a.shared.lanes=0);Rl|=o,e.lanes=o,e.memoizedState=f}}function ji(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,\"function\"!=typeof a)throw Error(i(191,a));a.call(r)}}}var Ui=(new r.Component).refs;function Ii(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:R({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var $i={isMounted:function(e){return!!(e=e._reactInternals)&&Be(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ts(),a=ns(e),i=Oi(r,a);i.payload=t,null!=n&&(i.callback=n),null!==(t=Ai(e,i,a))&&(rs(t,e,a,r),Fi(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ts(),a=ns(e),i=Oi(r,a);i.tag=1,i.payload=t,null!=n&&(i.callback=n),null!==(t=Ai(e,i,a))&&(rs(t,e,a,r),Fi(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ts(),r=ns(e),a=Oi(n,r);a.tag=2,null!=t&&(a.callback=t),null!==(t=Ai(e,a,r))&&(rs(t,e,r,n),Fi(t,e,r))}};function Bi(e,t,n,r,a,i,o){return\"function\"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,o):!(t.prototype&&t.prototype.isPureReactComponent&&lr(n,r)&&lr(a,i))}function Wi(e,t,n){var r=!1,a=Ta,i=t.contextType;return\"object\"==typeof i&&null!==i?i=Ei(i):(a=La(t)?Pa:Ma.current,i=(r=null!=(r=t.contextTypes))?za(e,a):Ta),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=$i,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=i),t}function Vi(e,t,n,r){e=t.state,\"function\"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),\"function\"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&$i.enqueueReplaceState(t,t.state,null)}function Hi(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=Ui,zi(e);var i=t.contextType;\"object\"==typeof i&&null!==i?a.context=Ei(i):(i=La(t)?Pa:Ma.current,a.context=za(e,i)),a.state=e.memoizedState,\"function\"==typeof(i=t.getDerivedStateFromProps)&&(Ii(e,t,i,n),a.state=e.memoizedState),\"function\"==typeof t.getDerivedStateFromProps||\"function\"==typeof a.getSnapshotBeforeUpdate||\"function\"!=typeof a.UNSAFE_componentWillMount&&\"function\"!=typeof a.componentWillMount||(t=a.state,\"function\"==typeof a.componentWillMount&&a.componentWillMount(),\"function\"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&$i.enqueueReplaceState(a,a.state,null),Ri(e,n,a,r),a.state=e.memoizedState),\"function\"==typeof a.componentDidMount&&(e.flags|=4194308)}function qi(e,t,n){if(null!==(e=n.ref)&&\"function\"!=typeof e&&\"object\"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=r,o=\"\"+e;return null!==t&&null!==t.ref&&\"function\"==typeof t.ref&&t.ref._stringRef===o?t.ref:(t=function(e){var t=a.refs;t===Ui&&(t=a.refs={}),null===e?delete t[o]:t[o]=e},t._stringRef=o,t)}if(\"string\"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Qi(e,t){throw e=Object.prototype.toString.call(t),Error(i(31,\"[object Object]\"===e?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":e))}function Yi(e){return(0,e._init)(e._payload)}function Gi(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=As(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function u(t){return e&&null===t.alternate&&(t.flags|=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=js(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function s(e,t,n,r){var i=n.type;return i===k?f(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===i||\"object\"==typeof i&&null!==i&&i.$$typeof===L&&Yi(i)===t.type)?((r=a(t,n.props)).ref=qi(e,t,n),r.return=e,r):((r=Fs(n.type,n.key,n.props,null,e.mode,r)).ref=qi(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Us(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function f(e,t,n,r,i){return null===t||7!==t.tag?((t=Ds(n,e.mode,r,i)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if(\"string\"==typeof t&&\"\"!==t||\"number\"==typeof t)return(t=js(\"\"+t,e.mode,n)).return=e,t;if(\"object\"==typeof t&&null!==t){switch(t.$$typeof){case w:return(n=Fs(t.type,t.key,t.props,null,e.mode,n)).ref=qi(e,null,t),n.return=e,n;case x:return(t=Us(t,e.mode,n)).return=e,t;case L:return p(e,(0,t._init)(t._payload),n)}if(te(t)||F(t))return(t=Ds(t,e.mode,n,null)).return=e,t;Qi(e,t)}return null}function d(e,t,n,r){var a=null!==t?t.key:null;if(\"string\"==typeof n&&\"\"!==n||\"number\"==typeof n)return null!==a?null:l(e,t,\"\"+n,r);if(\"object\"==typeof n&&null!==n){switch(n.$$typeof){case w:return n.key===a?s(e,t,n,r):null;case x:return n.key===a?c(e,t,n,r):null;case L:return d(e,t,(a=n._init)(n._payload),r)}if(te(n)||F(n))return null!==a?null:f(e,t,n,r,null);Qi(e,n)}return null}function h(e,t,n,r,a){if(\"string\"==typeof r&&\"\"!==r||\"number\"==typeof r)return l(t,e=e.get(n)||null,\"\"+r,a);if(\"object\"==typeof r&&null!==r){switch(r.$$typeof){case w:return s(t,e=e.get(null===r.key?n:r.key)||null,r,a);case x:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case L:return h(e,t,n,(0,r._init)(r._payload),a)}if(te(r)||F(r))return f(t,e=e.get(n)||null,r,a,null);Qi(t,r)}return null}function v(a,i,u,l){for(var s=null,c=null,f=i,v=i=0,g=null;null!==f&&v<u.length;v++){f.index>v?(g=f,f=null):g=f.sibling;var y=d(a,f,u[v],l);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&t(a,f),i=o(y,i,v),null===c?s=y:c.sibling=y,c=y,f=g}if(v===u.length)return n(a,f),ai&&Xa(a,v),s;if(null===f){for(;v<u.length;v++)null!==(f=p(a,u[v],l))&&(i=o(f,i,v),null===c?s=f:c.sibling=f,c=f);return ai&&Xa(a,v),s}for(f=r(a,f);v<u.length;v++)null!==(g=h(f,a,v,u[v],l))&&(e&&null!==g.alternate&&f.delete(null===g.key?v:g.key),i=o(g,i,v),null===c?s=g:c.sibling=g,c=g);return e&&f.forEach((function(e){return t(a,e)})),ai&&Xa(a,v),s}function g(a,u,l,s){var c=F(l);if(\"function\"!=typeof c)throw Error(i(150));if(null==(l=c.call(l)))throw Error(i(151));for(var f=c=null,v=u,g=u=0,y=null,m=l.next();null!==v&&!m.done;g++,m=l.next()){v.index>g?(y=v,v=null):y=v.sibling;var b=d(a,v,m.value,s);if(null===b){null===v&&(v=y);break}e&&v&&null===b.alternate&&t(a,v),u=o(b,u,g),null===f?c=b:f.sibling=b,f=b,v=y}if(m.done)return n(a,v),ai&&Xa(a,g),c;if(null===v){for(;!m.done;g++,m=l.next())null!==(m=p(a,m.value,s))&&(u=o(m,u,g),null===f?c=m:f.sibling=m,f=m);return ai&&Xa(a,g),c}for(v=r(a,v);!m.done;g++,m=l.next())null!==(m=h(v,a,g,m.value,s))&&(e&&null!==m.alternate&&v.delete(null===m.key?g:m.key),u=o(m,u,g),null===f?c=m:f.sibling=m,f=m);return e&&v.forEach((function(e){return t(a,e)})),ai&&Xa(a,g),c}return function e(r,i,o,l){if(\"object\"==typeof o&&null!==o&&o.type===k&&null===o.key&&(o=o.props.children),\"object\"==typeof o&&null!==o){switch(o.$$typeof){case w:e:{for(var s=o.key,c=i;null!==c;){if(c.key===s){if((s=o.type)===k){if(7===c.tag){n(r,c.sibling),(i=a(c,o.props.children)).return=r,r=i;break e}}else if(c.elementType===s||\"object\"==typeof s&&null!==s&&s.$$typeof===L&&Yi(s)===c.type){n(r,c.sibling),(i=a(c,o.props)).ref=qi(r,c,o),i.return=r,r=i;break e}n(r,c);break}t(r,c),c=c.sibling}o.type===k?((i=Ds(o.props.children,r.mode,l,o.key)).return=r,r=i):((l=Fs(o.type,o.key,o.props,null,r.mode,l)).ref=qi(r,i,o),l.return=r,r=l)}return u(r);case x:e:{for(c=o.key;null!==i;){if(i.key===c){if(4===i.tag&&i.stateNode.containerInfo===o.containerInfo&&i.stateNode.implementation===o.implementation){n(r,i.sibling),(i=a(i,o.children||[])).return=r,r=i;break e}n(r,i);break}t(r,i),i=i.sibling}(i=Us(o,r.mode,l)).return=r,r=i}return u(r);case L:return e(r,i,(c=o._init)(o._payload),l)}if(te(o))return v(r,i,o,l);if(F(o))return g(r,i,o,l);Qi(r,o)}return\"string\"==typeof o&&\"\"!==o||\"number\"==typeof o?(o=\"\"+o,null!==i&&6===i.tag?(n(r,i.sibling),(i=a(i,o)).return=r,r=i):(n(r,i),(i=js(o,r.mode,l)).return=r,r=i),u(r)):n(r,i)}}var Ki=Gi(!0),Zi=Gi(!1),Xi={},Ji=Sa(Xi),eo=Sa(Xi),to=Sa(Xi);function no(e){if(e===Xi)throw Error(i(174));return e}function ro(e,t){switch(Ca(to,t),Ca(eo,e),Ca(Ji,Xi),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:le(null,\"\");break;default:t=le(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Ea(Ji),Ca(Ji,t)}function ao(){Ea(Ji),Ea(eo),Ea(to)}function io(e){no(to.current);var t=no(Ji.current),n=le(t,e.type);t!==n&&(Ca(eo,e),Ca(Ji,n))}function oo(e){eo.current===e&&(Ea(Ji),Ea(eo))}var uo=Sa(0);function lo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||\"$?\"===n.data||\"$!\"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var so=[];function co(){for(var e=0;e<so.length;e++)so[e]._workInProgressVersionPrimary=null;so.length=0}var fo=_.ReactCurrentDispatcher,po=_.ReactCurrentBatchConfig,ho=0,vo=null,go=null,yo=null,mo=!1,bo=!1,_o=0,wo=0;function xo(){throw Error(i(321))}function ko(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function So(e,t,n,r,a,o){if(ho=o,vo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,fo.current=null===e||null===e.memoizedState?uu:lu,e=n(r,a),bo){o=0;do{if(bo=!1,_o=0,25<=o)throw Error(i(301));o+=1,yo=go=null,t.updateQueue=null,fo.current=su,e=n(r,a)}while(bo)}if(fo.current=ou,t=null!==go&&null!==go.next,ho=0,yo=go=vo=null,mo=!1,t)throw Error(i(300));return e}function Eo(){var e=0!==_o;return _o=0,e}function Co(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===yo?vo.memoizedState=yo=e:yo=yo.next=e,yo}function To(){if(null===go){var e=vo.alternate;e=null!==e?e.memoizedState:null}else e=go.next;var t=null===yo?vo.memoizedState:yo.next;if(null!==t)yo=t,go=e;else{if(null===e)throw Error(i(310));e={memoizedState:(go=e).memoizedState,baseState:go.baseState,baseQueue:go.baseQueue,queue:go.queue,next:null},null===yo?vo.memoizedState=yo=e:yo=yo.next=e}return yo}function Mo(e,t){return\"function\"==typeof t?t(e):t}function No(e){var t=To(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=go,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var u=a.next;a.next=o.next,o.next=u}r.baseQueue=a=o,n.pending=null}if(null!==a){o=a.next,r=r.baseState;var l=u=null,s=null,c=o;do{var f=c.lane;if((ho&f)===f)null!==s&&(s=s.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var p={lane:f,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===s?(l=s=p,u=r):s=s.next=p,vo.lanes|=f,Rl|=f}c=c.next}while(null!==c&&c!==o);null===s?u=r:s.next=l,ur(r,t.memoizedState)||(_u=!0),t.memoizedState=r,t.baseState=u,t.baseQueue=s,n.lastRenderedState=r}if(null!==(e=n.interleaved)){a=e;do{o=a.lane,vo.lanes|=o,Rl|=o,a=a.next}while(a!==e)}else null===a&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Po(e){var t=To(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var u=a=a.next;do{o=e(o,u.action),u=u.next}while(u!==a);ur(o,t.memoizedState)||(_u=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function zo(){}function Lo(e,t){var n=vo,r=To(),a=t(),o=!ur(r.memoizedState,a);if(o&&(r.memoizedState=a,_u=!0),r=r.queue,Vo(Fo.bind(null,n,r,e),[e]),r.getSnapshot!==t||o||null!==yo&&1&yo.memoizedState.tag){if(n.flags|=2048,Uo(9,Ao.bind(null,n,r,a,t),void 0,null),null===Pl)throw Error(i(349));0!=(30&ho)||Oo(n,t,a)}return a}function Oo(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=vo.updateQueue)?(t={lastEffect:null,stores:null},vo.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Ao(e,t,n,r){t.value=n,t.getSnapshot=r,Do(t)&&Ro(e)}function Fo(e,t,n){return n((function(){Do(t)&&Ro(e)}))}function Do(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!ur(e,n)}catch(e){return!0}}function Ro(e){var t=Ni(e,1);null!==t&&rs(t,e,1,-1)}function jo(e){var t=Co();return\"function\"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Mo,lastRenderedState:e},t.queue=e,e=e.dispatch=nu.bind(null,vo,e),[t.memoizedState,e]}function Uo(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=vo.updateQueue)?(t={lastEffect:null,stores:null},vo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Io(){return To().memoizedState}function $o(e,t,n,r){var a=Co();vo.flags|=e,a.memoizedState=Uo(1|t,n,void 0,void 0===r?null:r)}function Bo(e,t,n,r){var a=To();r=void 0===r?null:r;var i=void 0;if(null!==go){var o=go.memoizedState;if(i=o.destroy,null!==r&&ko(r,o.deps))return void(a.memoizedState=Uo(t,n,i,r))}vo.flags|=e,a.memoizedState=Uo(1|t,n,i,r)}function Wo(e,t){return $o(8390656,8,e,t)}function Vo(e,t){return Bo(2048,8,e,t)}function Ho(e,t){return Bo(4,2,e,t)}function qo(e,t){return Bo(4,4,e,t)}function Qo(e,t){return\"function\"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Yo(e,t,n){return n=null!=n?n.concat([e]):null,Bo(4,4,Qo.bind(null,t,e),n)}function Go(){}function Ko(e,t){var n=To();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ko(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Zo(e,t){var n=To();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ko(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Xo(e,t,n){return 0==(21&ho)?(e.baseState&&(e.baseState=!1,_u=!0),e.memoizedState=n):(ur(n,t)||(n=vt(),vo.lanes|=n,Rl|=n,e.baseState=!0),t)}function Jo(e,t){var n=bt;bt=0!==n&&4>n?n:4,e(!0);var r=po.transition;po.transition={};try{e(!1),t()}finally{bt=n,po.transition=r}}function eu(){return To().memoizedState}function tu(e,t,n){var r=ns(e);n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},ru(e)?au(t,n):null!==(n=Mi(e,t,n,r))&&(rs(n,e,r,ts()),iu(n,t,r))}function nu(e,t,n){var r=ns(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(ru(e))au(t,a);else{var i=e.alternate;if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var o=t.lastRenderedState,u=i(o,n);if(a.hasEagerState=!0,a.eagerState=u,ur(u,o)){var l=t.interleaved;return null===l?(a.next=a,Ti(t)):(a.next=l.next,l.next=a),void(t.interleaved=a)}}catch(e){}null!==(n=Mi(e,t,a,r))&&(rs(n,e,r,a=ts()),iu(n,t,r))}}function ru(e){var t=e.alternate;return e===vo||null!==t&&t===vo}function au(e,t){bo=mo=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function iu(e,t,n){if(0!=(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,mt(e,n)}}var ou={readContext:Ei,useCallback:xo,useContext:xo,useEffect:xo,useImperativeHandle:xo,useInsertionEffect:xo,useLayoutEffect:xo,useMemo:xo,useReducer:xo,useRef:xo,useState:xo,useDebugValue:xo,useDeferredValue:xo,useTransition:xo,useMutableSource:xo,useSyncExternalStore:xo,useId:xo,unstable_isNewReconciler:!1},uu={readContext:Ei,useCallback:function(e,t){return Co().memoizedState=[e,void 0===t?null:t],e},useContext:Ei,useEffect:Wo,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,$o(4194308,4,Qo.bind(null,t,e),n)},useLayoutEffect:function(e,t){return $o(4194308,4,e,t)},useInsertionEffect:function(e,t){return $o(4,2,e,t)},useMemo:function(e,t){var n=Co();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Co();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=tu.bind(null,vo,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Co().memoizedState=e},useState:jo,useDebugValue:Go,useDeferredValue:function(e){return Co().memoizedState=e},useTransition:function(){var e=jo(!1),t=e[0];return e=Jo.bind(null,e[1]),Co().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=vo,a=Co();if(ai){if(void 0===n)throw Error(i(407));n=n()}else{if(n=t(),null===Pl)throw Error(i(349));0!=(30&ho)||Oo(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Wo(Fo.bind(null,r,o,e),[e]),r.flags|=2048,Uo(9,Ao.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Co(),t=Pl.identifierPrefix;if(ai){var n=Za;t=\":\"+t+\"R\"+(n=(Ka&~(1<<32-ot(Ka)-1)).toString(32)+n),0<(n=_o++)&&(t+=\"H\"+n.toString(32)),t+=\":\"}else t=\":\"+t+\"r\"+(n=wo++).toString(32)+\":\";return e.memoizedState=t},unstable_isNewReconciler:!1},lu={readContext:Ei,useCallback:Ko,useContext:Ei,useEffect:Vo,useImperativeHandle:Yo,useInsertionEffect:Ho,useLayoutEffect:qo,useMemo:Zo,useReducer:No,useRef:Io,useState:function(){return No(Mo)},useDebugValue:Go,useDeferredValue:function(e){return Xo(To(),go.memoizedState,e)},useTransition:function(){return[No(Mo)[0],To().memoizedState]},useMutableSource:zo,useSyncExternalStore:Lo,useId:eu,unstable_isNewReconciler:!1},su={readContext:Ei,useCallback:Ko,useContext:Ei,useEffect:Vo,useImperativeHandle:Yo,useInsertionEffect:Ho,useLayoutEffect:qo,useMemo:Zo,useReducer:Po,useRef:Io,useState:function(){return Po(Mo)},useDebugValue:Go,useDeferredValue:function(e){var t=To();return null===go?t.memoizedState=e:Xo(t,go.memoizedState,e)},useTransition:function(){return[Po(Mo)[0],To().memoizedState]},useMutableSource:zo,useSyncExternalStore:Lo,useId:eu,unstable_isNewReconciler:!1};function cu(e,t){try{var n=\"\",r=t;do{n+=$(r),r=r.return}while(r);var a=n}catch(e){a=\"\\nError generating stack: \"+e.message+\"\\n\"+e.stack}return{value:e,source:t,stack:a,digest:null}}function fu(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function pu(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}var du=\"function\"==typeof WeakMap?WeakMap:Map;function hu(e,t,n){(n=Oi(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hl||(Hl=!0,ql=r),pu(0,t)},n}function vu(e,t,n){(n=Oi(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if(\"function\"==typeof r){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){pu(0,t)}}var i=e.stateNode;return null!==i&&\"function\"==typeof i.componentDidCatch&&(n.callback=function(){pu(0,t),\"function\"!=typeof r&&(null===Ql?Ql=new Set([this]):Ql.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:\"\"})}),n}function gu(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new du;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=Cs.bind(null,e,t,n),t.then(e,e))}function yu(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function mu(e,t,n,r,a){return 0==(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Oi(-1,1)).tag=2,Ai(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=a,e)}var bu=_.ReactCurrentOwner,_u=!1;function wu(e,t,n,r){t.child=null===e?Zi(t,null,n,r):Ki(t,e.child,n,r)}function xu(e,t,n,r,a){n=n.render;var i=t.ref;return Si(t,a),r=So(e,t,n,r,i,a),n=Eo(),null===e||_u?(ai&&n&&ei(t),t.flags|=1,wu(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Hu(e,t,a))}function ku(e,t,n,r,a){if(null===e){var i=n.type;return\"function\"!=typeof i||Os(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Fs(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Su(e,t,i,r,a))}if(i=e.child,0==(e.lanes&a)){var o=i.memoizedProps;if((n=null!==(n=n.compare)?n:lr)(o,r)&&e.ref===t.ref)return Hu(e,t,a)}return t.flags|=1,(e=As(i,r)).ref=t.ref,e.return=t,t.child=e}function Su(e,t,n,r,a){if(null!==e){var i=e.memoizedProps;if(lr(i,r)&&e.ref===t.ref){if(_u=!1,t.pendingProps=r=i,0==(e.lanes&a))return t.lanes=e.lanes,Hu(e,t,a);0!=(131072&e.flags)&&(_u=!0)}}return Tu(e,t,n,r,a)}function Eu(e,t,n){var r=t.pendingProps,a=r.children,i=null!==e?e.memoizedState:null;if(\"hidden\"===r.mode)if(0==(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ca(Al,Ol),Ol|=n;else{if(0==(1073741824&n))return e=null!==i?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Ca(Al,Ol),Ol|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==i?i.baseLanes:n,Ca(Al,Ol),Ol|=r}else null!==i?(r=i.baseLanes|n,t.memoizedState=null):r=n,Ca(Al,Ol),Ol|=r;return wu(e,t,a,n),t.child}function Cu(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Tu(e,t,n,r,a){var i=La(n)?Pa:Ma.current;return i=za(t,i),Si(t,a),n=So(e,t,n,r,i,a),r=Eo(),null===e||_u?(ai&&r&&ei(t),t.flags|=1,wu(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Hu(e,t,a))}function Mu(e,t,n,r,a){if(La(n)){var i=!0;Da(t)}else i=!1;if(Si(t,a),null===t.stateNode)Vu(e,t),Wi(t,n,r),Hi(t,n,r,a),r=!0;else if(null===e){var o=t.stateNode,u=t.memoizedProps;o.props=u;var l=o.context,s=n.contextType;s=\"object\"==typeof s&&null!==s?Ei(s):za(t,s=La(n)?Pa:Ma.current);var c=n.getDerivedStateFromProps,f=\"function\"==typeof c||\"function\"==typeof o.getSnapshotBeforeUpdate;f||\"function\"!=typeof o.UNSAFE_componentWillReceiveProps&&\"function\"!=typeof o.componentWillReceiveProps||(u!==r||l!==s)&&Vi(t,o,r,s),Pi=!1;var p=t.memoizedState;o.state=p,Ri(t,r,o,a),l=t.memoizedState,u!==r||p!==l||Na.current||Pi?(\"function\"==typeof c&&(Ii(t,n,c,r),l=t.memoizedState),(u=Pi||Bi(t,n,u,r,p,l,s))?(f||\"function\"!=typeof o.UNSAFE_componentWillMount&&\"function\"!=typeof o.componentWillMount||(\"function\"==typeof o.componentWillMount&&o.componentWillMount(),\"function\"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),\"function\"==typeof o.componentDidMount&&(t.flags|=4194308)):(\"function\"==typeof o.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),o.props=r,o.state=l,o.context=s,r=u):(\"function\"==typeof o.componentDidMount&&(t.flags|=4194308),r=!1)}else{o=t.stateNode,Li(e,t),u=t.memoizedProps,s=t.type===t.elementType?u:gi(t.type,u),o.props=s,f=t.pendingProps,p=o.context,l=\"object\"==typeof(l=n.contextType)&&null!==l?Ei(l):za(t,l=La(n)?Pa:Ma.current);var d=n.getDerivedStateFromProps;(c=\"function\"==typeof d||\"function\"==typeof o.getSnapshotBeforeUpdate)||\"function\"!=typeof o.UNSAFE_componentWillReceiveProps&&\"function\"!=typeof o.componentWillReceiveProps||(u!==f||p!==l)&&Vi(t,o,r,l),Pi=!1,p=t.memoizedState,o.state=p,Ri(t,r,o,a);var h=t.memoizedState;u!==f||p!==h||Na.current||Pi?(\"function\"==typeof d&&(Ii(t,n,d,r),h=t.memoizedState),(s=Pi||Bi(t,n,s,r,p,h,l)||!1)?(c||\"function\"!=typeof o.UNSAFE_componentWillUpdate&&\"function\"!=typeof o.componentWillUpdate||(\"function\"==typeof o.componentWillUpdate&&o.componentWillUpdate(r,h,l),\"function\"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,h,l)),\"function\"==typeof o.componentDidUpdate&&(t.flags|=4),\"function\"==typeof o.getSnapshotBeforeUpdate&&(t.flags|=1024)):(\"function\"!=typeof o.componentDidUpdate||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),\"function\"!=typeof o.getSnapshotBeforeUpdate||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=h),o.props=r,o.state=h,o.context=l,r=s):(\"function\"!=typeof o.componentDidUpdate||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),\"function\"!=typeof o.getSnapshotBeforeUpdate||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Nu(e,t,n,r,i,a)}function Nu(e,t,n,r,a,i){Cu(e,t);var o=0!=(128&t.flags);if(!r&&!o)return a&&Ra(t,n,!1),Hu(e,t,i);r=t.stateNode,bu.current=t;var u=o&&\"function\"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&o?(t.child=Ki(t,e.child,null,i),t.child=Ki(t,null,u,i)):wu(e,t,u,i),t.memoizedState=r.state,a&&Ra(t,n,!0),t.child}function Pu(e){var t=e.stateNode;t.pendingContext?Aa(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Aa(0,t.context,!1),ro(e,t.containerInfo)}function zu(e,t,n,r,a){return di(),hi(a),t.flags|=256,wu(e,t,n,r),t.child}var Lu,Ou,Au,Fu,Du={dehydrated:null,treeContext:null,retryLane:0};function Ru(e){return{baseLanes:e,cachePool:null,transitions:null}}function ju(e,t,n){var r,a=t.pendingProps,o=uo.current,u=!1,l=0!=(128&t.flags);if((r=l)||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(u=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(o|=1),Ca(uo,1&o),null===e)return si(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0==(1&t.mode)?t.lanes=1:\"$!\"===e.data?t.lanes=8:t.lanes=1073741824,null):(l=a.children,e=a.fallback,u?(a=t.mode,u=t.child,l={mode:\"hidden\",children:l},0==(1&a)&&null!==u?(u.childLanes=0,u.pendingProps=l):u=Rs(l,a,0,null),e=Ds(e,a,n,null),u.return=t,e.return=t,u.sibling=e,t.child=u,t.child.memoizedState=Ru(n),t.memoizedState=Du,e):Uu(t,l));if(null!==(o=e.memoizedState)&&null!==(r=o.dehydrated))return function(e,t,n,r,a,o,u){if(n)return 256&t.flags?(t.flags&=-257,Iu(e,t,u,r=fu(Error(i(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(o=r.fallback,a=t.mode,r=Rs({mode:\"visible\",children:r.children},a,0,null),(o=Ds(o,a,u,null)).flags|=2,r.return=t,o.return=t,r.sibling=o,t.child=r,0!=(1&t.mode)&&Ki(t,e.child,null,u),t.child.memoizedState=Ru(u),t.memoizedState=Du,o);if(0==(1&t.mode))return Iu(e,t,u,null);if(\"$!\"===a.data){if(r=a.nextSibling&&a.nextSibling.dataset)var l=r.dgst;return r=l,Iu(e,t,u,r=fu(o=Error(i(419)),r,void 0))}if(l=0!=(u&e.childLanes),_u||l){if(null!==(r=Pl)){switch(u&-u){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=0!=(a&(r.suspendedLanes|u))?0:a)&&a!==o.retryLane&&(o.retryLane=a,Ni(e,a),rs(r,e,a,-1))}return gs(),Iu(e,t,u,r=fu(Error(i(421))))}return\"$?\"===a.data?(t.flags|=128,t.child=e.child,t=Ms.bind(null,e),a._reactRetry=t,null):(e=o.treeContext,ri=sa(a.nextSibling),ni=t,ai=!0,ii=null,null!==e&&(Qa[Ya++]=Ka,Qa[Ya++]=Za,Qa[Ya++]=Ga,Ka=e.id,Za=e.overflow,Ga=t),(t=Uu(t,r.children)).flags|=4096,t)}(e,t,l,a,r,o,n);if(u){u=a.fallback,l=t.mode,r=(o=e.child).sibling;var s={mode:\"hidden\",children:a.children};return 0==(1&l)&&t.child!==o?((a=t.child).childLanes=0,a.pendingProps=s,t.deletions=null):(a=As(o,s)).subtreeFlags=14680064&o.subtreeFlags,null!==r?u=As(r,u):(u=Ds(u,l,n,null)).flags|=2,u.return=t,a.return=t,a.sibling=u,t.child=a,a=u,u=t.child,l=null===(l=e.child.memoizedState)?Ru(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},u.memoizedState=l,u.childLanes=e.childLanes&~n,t.memoizedState=Du,a}return e=(u=e.child).sibling,a=As(u,{mode:\"visible\",children:a.children}),0==(1&t.mode)&&(a.lanes=n),a.return=t,a.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function Uu(e,t){return(t=Rs({mode:\"visible\",children:t},e.mode,0,null)).return=e,e.child=t}function Iu(e,t,n,r){return null!==r&&hi(r),Ki(t,e.child,null,n),(e=Uu(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function $u(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),ki(e.return,t,n)}function Bu(e,t,n,r,a){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a)}function Wu(e,t,n){var r=t.pendingProps,a=r.revealOrder,i=r.tail;if(wu(e,t,r.children,n),0!=(2&(r=uo.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&$u(e,n,t);else if(19===e.tag)$u(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Ca(uo,r),0==(1&t.mode))t.memoizedState=null;else switch(a){case\"forwards\":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===lo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),Bu(t,!1,a,n,i);break;case\"backwards\":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===lo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}Bu(t,!0,n,null,i);break;case\"together\":Bu(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Vu(e,t){0==(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hu(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Rl|=t.lanes,0==(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=As(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=As(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function qu(e,t){if(!ai)switch(e.tailMode){case\"hidden\":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case\"collapsed\":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Qu(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=14680064&a.subtreeFlags,r|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Yu(e,t,n){var r=t.pendingProps;switch(ti(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Qu(t),null;case 1:case 17:return La(t.type)&&Oa(),Qu(t),null;case 3:return r=t.stateNode,ao(),Ea(Na),Ea(Ma),co(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(fi(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0==(256&t.flags)||(t.flags|=1024,null!==ii&&(us(ii),ii=null))),Ou(e,t),Qu(t),null;case 5:oo(t);var a=no(to.current);if(n=t.type,null!==e&&null!=t.stateNode)Au(e,t,n,r,a),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(i(166));return Qu(t),null}if(e=no(Ji.current),fi(t)){r=t.stateNode,n=t.type;var o=t.memoizedProps;switch(r[pa]=t,r[da]=o,e=0!=(1&t.mode),n){case\"dialog\":Ur(\"cancel\",r),Ur(\"close\",r);break;case\"iframe\":case\"object\":case\"embed\":Ur(\"load\",r);break;case\"video\":case\"audio\":for(a=0;a<Fr.length;a++)Ur(Fr[a],r);break;case\"source\":Ur(\"error\",r);break;case\"img\":case\"image\":case\"link\":Ur(\"error\",r),Ur(\"load\",r);break;case\"details\":Ur(\"toggle\",r);break;case\"input\":K(r,o),Ur(\"invalid\",r);break;case\"select\":r._wrapperState={wasMultiple:!!o.multiple},Ur(\"invalid\",r);break;case\"textarea\":ae(r,o),Ur(\"invalid\",r)}for(var l in me(n,o),a=null,o)if(o.hasOwnProperty(l)){var s=o[l];\"children\"===l?\"string\"==typeof s?r.textContent!==s&&(!0!==o.suppressHydrationWarning&&Xr(r.textContent,s,e),a=[\"children\",s]):\"number\"==typeof s&&r.textContent!==\"\"+s&&(!0!==o.suppressHydrationWarning&&Xr(r.textContent,s,e),a=[\"children\",\"\"+s]):u.hasOwnProperty(l)&&null!=s&&\"onScroll\"===l&&Ur(\"scroll\",r)}switch(n){case\"input\":q(r),J(r,o,!0);break;case\"textarea\":q(r),oe(r);break;case\"select\":case\"option\":break;default:\"function\"==typeof o.onClick&&(r.onclick=Jr)}r=a,t.updateQueue=r,null!==r&&(t.flags|=4)}else{l=9===a.nodeType?a:a.ownerDocument,\"http://www.w3.org/1999/xhtml\"===e&&(e=ue(n)),\"http://www.w3.org/1999/xhtml\"===e?\"script\"===n?((e=l.createElement(\"div\")).innerHTML=\"<script><\\/script>\",e=e.removeChild(e.firstChild)):\"string\"==typeof r.is?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),\"select\"===n&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[pa]=t,e[da]=r,Lu(e,t,!1,!1),t.stateNode=e;e:{switch(l=be(n,r),n){case\"dialog\":Ur(\"cancel\",e),Ur(\"close\",e),a=r;break;case\"iframe\":case\"object\":case\"embed\":Ur(\"load\",e),a=r;break;case\"video\":case\"audio\":for(a=0;a<Fr.length;a++)Ur(Fr[a],e);a=r;break;case\"source\":Ur(\"error\",e),a=r;break;case\"img\":case\"image\":case\"link\":Ur(\"error\",e),Ur(\"load\",e),a=r;break;case\"details\":Ur(\"toggle\",e),a=r;break;case\"input\":K(e,r),a=G(e,r),Ur(\"invalid\",e);break;case\"option\":default:a=r;break;case\"select\":e._wrapperState={wasMultiple:!!r.multiple},a=R({},r,{value:void 0}),Ur(\"invalid\",e);break;case\"textarea\":ae(e,r),a=re(e,r),Ur(\"invalid\",e)}for(o in me(n,a),s=a)if(s.hasOwnProperty(o)){var c=s[o];\"style\"===o?ge(e,c):\"dangerouslySetInnerHTML\"===o?null!=(c=c?c.__html:void 0)&&fe(e,c):\"children\"===o?\"string\"==typeof c?(\"textarea\"!==n||\"\"!==c)&&pe(e,c):\"number\"==typeof c&&pe(e,\"\"+c):\"suppressContentEditableWarning\"!==o&&\"suppressHydrationWarning\"!==o&&\"autoFocus\"!==o&&(u.hasOwnProperty(o)?null!=c&&\"onScroll\"===o&&Ur(\"scroll\",e):null!=c&&b(e,o,c,l))}switch(n){case\"input\":q(e),J(e,r,!1);break;case\"textarea\":q(e),oe(e);break;case\"option\":null!=r.value&&e.setAttribute(\"value\",\"\"+V(r.value));break;case\"select\":e.multiple=!!r.multiple,null!=(o=r.value)?ne(e,!!r.multiple,o,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:\"function\"==typeof a.onClick&&(e.onclick=Jr)}switch(n){case\"button\":case\"input\":case\"select\":case\"textarea\":r=!!r.autoFocus;break e;case\"img\":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Qu(t),null;case 6:if(e&&null!=t.stateNode)Fu(e,t,e.memoizedProps,r);else{if(\"string\"!=typeof r&&null===t.stateNode)throw Error(i(166));if(n=no(to.current),no(Ji.current),fi(t)){if(r=t.stateNode,n=t.memoizedProps,r[pa]=t,(o=r.nodeValue!==n)&&null!==(e=ni))switch(e.tag){case 3:Xr(r.nodeValue,n,0!=(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xr(r.nodeValue,n,0!=(1&e.mode))}o&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[pa]=t,t.stateNode=r}return Qu(t),null;case 13:if(Ea(uo),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ai&&null!==ri&&0!=(1&t.mode)&&0==(128&t.flags))pi(),di(),t.flags|=98560,o=!1;else if(o=fi(t),null!==r&&null!==r.dehydrated){if(null===e){if(!o)throw Error(i(318));if(!(o=null!==(o=t.memoizedState)?o.dehydrated:null))throw Error(i(317));o[pa]=t}else di(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Qu(t),o=!1}else null!==ii&&(us(ii),ii=null),o=!0;if(!o)return 65536&t.flags?t:null}return 0!=(128&t.flags)?(t.lanes=n,t):((r=null!==r)!=(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!=(1&t.mode)&&(null===e||0!=(1&uo.current)?0===Fl&&(Fl=3):gs())),null!==t.updateQueue&&(t.flags|=4),Qu(t),null);case 4:return ao(),Ou(e,t),null===e&&Br(t.stateNode.containerInfo),Qu(t),null;case 10:return xi(t.type._context),Qu(t),null;case 19:if(Ea(uo),null===(o=t.memoizedState))return Qu(t),null;if(r=0!=(128&t.flags),null===(l=o.rendering))if(r)qu(o,!1);else{if(0!==Fl||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(l=lo(e))){for(t.flags|=128,qu(o,!1),null!==(r=l.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(o=n).flags&=14680066,null===(l=o.alternate)?(o.childLanes=0,o.lanes=e,o.child=null,o.subtreeFlags=0,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null,o.stateNode=null):(o.childLanes=l.childLanes,o.lanes=l.lanes,o.child=l.child,o.subtreeFlags=0,o.deletions=null,o.memoizedProps=l.memoizedProps,o.memoizedState=l.memoizedState,o.updateQueue=l.updateQueue,o.type=l.type,e=l.dependencies,o.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Ca(uo,1&uo.current|2),t.child}e=e.sibling}null!==o.tail&&Ze()>Wl&&(t.flags|=128,r=!0,qu(o,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=lo(l))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),qu(o,!0),null===o.tail&&\"hidden\"===o.tailMode&&!l.alternate&&!ai)return Qu(t),null}else 2*Ze()-o.renderingStartTime>Wl&&1073741824!==n&&(t.flags|=128,r=!0,qu(o,!1),t.lanes=4194304);o.isBackwards?(l.sibling=t.child,t.child=l):(null!==(n=o.last)?n.sibling=l:t.child=l,o.last=l)}return null!==o.tail?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Ze(),t.sibling=null,n=uo.current,Ca(uo,r?1&n|2:1&n),t):(Qu(t),null);case 22:case 23:return ps(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!=(1&t.mode)?0!=(1073741824&Ol)&&(Qu(t),6&t.subtreeFlags&&(t.flags|=8192)):Qu(t),null;case 24:case 25:return null}throw Error(i(156,t.tag))}function Gu(e,t){switch(ti(t),t.tag){case 1:return La(t.type)&&Oa(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return ao(),Ea(Na),Ea(Ma),co(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 5:return oo(t),null;case 13:if(Ea(uo),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));di()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Ea(uo),null;case 4:return ao(),null;case 10:return xi(t.type._context),null;case 22:case 23:return ps(),null;default:return null}}Lu=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ou=function(){},Au=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,no(Ji.current);var i,o=null;switch(n){case\"input\":a=G(e,a),r=G(e,r),o=[];break;case\"select\":a=R({},a,{value:void 0}),r=R({},r,{value:void 0}),o=[];break;case\"textarea\":a=re(e,a),r=re(e,r),o=[];break;default:\"function\"!=typeof a.onClick&&\"function\"==typeof r.onClick&&(e.onclick=Jr)}for(c in me(n,r),n=null,a)if(!r.hasOwnProperty(c)&&a.hasOwnProperty(c)&&null!=a[c])if(\"style\"===c){var l=a[c];for(i in l)l.hasOwnProperty(i)&&(n||(n={}),n[i]=\"\")}else\"dangerouslySetInnerHTML\"!==c&&\"children\"!==c&&\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&\"autoFocus\"!==c&&(u.hasOwnProperty(c)?o||(o=[]):(o=o||[]).push(c,null));for(c in r){var s=r[c];if(l=null!=a?a[c]:void 0,r.hasOwnProperty(c)&&s!==l&&(null!=s||null!=l))if(\"style\"===c)if(l){for(i in l)!l.hasOwnProperty(i)||s&&s.hasOwnProperty(i)||(n||(n={}),n[i]=\"\");for(i in s)s.hasOwnProperty(i)&&l[i]!==s[i]&&(n||(n={}),n[i]=s[i])}else n||(o||(o=[]),o.push(c,n)),n=s;else\"dangerouslySetInnerHTML\"===c?(s=s?s.__html:void 0,l=l?l.__html:void 0,null!=s&&l!==s&&(o=o||[]).push(c,s)):\"children\"===c?\"string\"!=typeof s&&\"number\"!=typeof s||(o=o||[]).push(c,\"\"+s):\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&(u.hasOwnProperty(c)?(null!=s&&\"onScroll\"===c&&Ur(\"scroll\",e),o||l===s||(o=[])):(o=o||[]).push(c,s))}n&&(o=o||[]).push(\"style\",n);var c=o;(t.updateQueue=c)&&(t.flags|=4)}},Fu=function(e,t,n,r){n!==r&&(t.flags|=4)};var Ku=!1,Zu=!1,Xu=\"function\"==typeof WeakSet?WeakSet:Set,Ju=null;function el(e,t){var n=e.ref;if(null!==n)if(\"function\"==typeof n)try{n(null)}catch(n){Es(e,t,n)}else n.current=null}function tl(e,t,n){try{n()}catch(n){Es(e,t,n)}}var nl=!1;function rl(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var a=r=r.next;do{if((a.tag&e)===e){var i=a.destroy;a.destroy=void 0,void 0!==i&&tl(t,n,i)}a=a.next}while(a!==r)}}function al(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function il(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,\"function\"==typeof t?t(e):t.current=e}}function ol(e){var t=e.alternate;null!==t&&(e.alternate=null,ol(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(t=e.stateNode)&&(delete t[pa],delete t[da],delete t[va],delete t[ga],delete t[ya]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ul(e){return 5===e.tag||3===e.tag||4===e.tag}function ll(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||ul(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function sl(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(sl(e,t,n),e=e.sibling;null!==e;)sl(e,t,n),e=e.sibling}function cl(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cl(e,t,n),e=e.sibling;null!==e;)cl(e,t,n),e=e.sibling}var fl=null,pl=!1;function dl(e,t,n){for(n=n.child;null!==n;)hl(e,t,n),n=n.sibling}function hl(e,t,n){if(it&&\"function\"==typeof it.onCommitFiberUnmount)try{it.onCommitFiberUnmount(at,n)}catch(e){}switch(n.tag){case 5:Zu||el(n,t);case 6:var r=fl,a=pl;fl=null,dl(e,t,n),pl=a,null!==(fl=r)&&(pl?(e=fl,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):fl.removeChild(n.stateNode));break;case 18:null!==fl&&(pl?(e=fl,n=n.stateNode,8===e.nodeType?la(e.parentNode,n):1===e.nodeType&&la(e,n),Bt(e)):la(fl,n.stateNode));break;case 4:r=fl,a=pl,fl=n.stateNode.containerInfo,pl=!0,dl(e,t,n),fl=r,pl=a;break;case 0:case 11:case 14:case 15:if(!Zu&&null!==(r=n.updateQueue)&&null!==(r=r.lastEffect)){a=r=r.next;do{var i=a,o=i.destroy;i=i.tag,void 0!==o&&(0!=(2&i)||0!=(4&i))&&tl(n,t,o),a=a.next}while(a!==r)}dl(e,t,n);break;case 1:if(!Zu&&(el(n,t),\"function\"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){Es(n,t,e)}dl(e,t,n);break;case 21:dl(e,t,n);break;case 22:1&n.mode?(Zu=(r=Zu)||null!==n.memoizedState,dl(e,t,n),Zu=r):dl(e,t,n);break;default:dl(e,t,n)}}function vl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Xu),t.forEach((function(t){var r=Ns.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function gl(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r];try{var o=e,u=t,l=u;e:for(;null!==l;){switch(l.tag){case 5:fl=l.stateNode,pl=!1;break e;case 3:case 4:fl=l.stateNode.containerInfo,pl=!0;break e}l=l.return}if(null===fl)throw Error(i(160));hl(o,u,a),fl=null,pl=!1;var s=a.alternate;null!==s&&(s.return=null),a.return=null}catch(e){Es(a,t,e)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)yl(t,e),t=t.sibling}function yl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(gl(t,e),ml(e),4&r){try{rl(3,e,e.return),al(3,e)}catch(t){Es(e,e.return,t)}try{rl(5,e,e.return)}catch(t){Es(e,e.return,t)}}break;case 1:gl(t,e),ml(e),512&r&&null!==n&&el(n,n.return);break;case 5:if(gl(t,e),ml(e),512&r&&null!==n&&el(n,n.return),32&e.flags){var a=e.stateNode;try{pe(a,\"\")}catch(t){Es(e,e.return,t)}}if(4&r&&null!=(a=e.stateNode)){var o=e.memoizedProps,u=null!==n?n.memoizedProps:o,l=e.type,s=e.updateQueue;if(e.updateQueue=null,null!==s)try{\"input\"===l&&\"radio\"===o.type&&null!=o.name&&Z(a,o),be(l,u);var c=be(l,o);for(u=0;u<s.length;u+=2){var f=s[u],p=s[u+1];\"style\"===f?ge(a,p):\"dangerouslySetInnerHTML\"===f?fe(a,p):\"children\"===f?pe(a,p):b(a,f,p,c)}switch(l){case\"input\":X(a,o);break;case\"textarea\":ie(a,o);break;case\"select\":var d=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!o.multiple;var h=o.value;null!=h?ne(a,!!o.multiple,h,!1):d!==!!o.multiple&&(null!=o.defaultValue?ne(a,!!o.multiple,o.defaultValue,!0):ne(a,!!o.multiple,o.multiple?[]:\"\",!1))}a[da]=o}catch(t){Es(e,e.return,t)}}break;case 6:if(gl(t,e),ml(e),4&r){if(null===e.stateNode)throw Error(i(162));a=e.stateNode,o=e.memoizedProps;try{a.nodeValue=o}catch(t){Es(e,e.return,t)}}break;case 3:if(gl(t,e),ml(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Bt(t.containerInfo)}catch(t){Es(e,e.return,t)}break;case 4:default:gl(t,e),ml(e);break;case 13:gl(t,e),ml(e),8192&(a=e.child).flags&&(o=null!==a.memoizedState,a.stateNode.isHidden=o,!o||null!==a.alternate&&null!==a.alternate.memoizedState||(Bl=Ze())),4&r&&vl(e);break;case 22:if(f=null!==n&&null!==n.memoizedState,1&e.mode?(Zu=(c=Zu)||f,gl(t,e),Zu=c):gl(t,e),ml(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!f&&0!=(1&e.mode))for(Ju=e,f=e.child;null!==f;){for(p=Ju=f;null!==Ju;){switch(h=(d=Ju).child,d.tag){case 0:case 11:case 14:case 15:rl(4,d,d.return);break;case 1:el(d,d.return);var v=d.stateNode;if(\"function\"==typeof v.componentWillUnmount){r=d,n=d.return;try{t=r,v.props=t.memoizedProps,v.state=t.memoizedState,v.componentWillUnmount()}catch(e){Es(r,n,e)}}break;case 5:el(d,d.return);break;case 22:if(null!==d.memoizedState){xl(p);continue}}null!==h?(h.return=d,Ju=h):xl(p)}f=f.sibling}e:for(f=null,p=e;;){if(5===p.tag){if(null===f){f=p;try{a=p.stateNode,c?\"function\"==typeof(o=a.style).setProperty?o.setProperty(\"display\",\"none\",\"important\"):o.display=\"none\":(l=p.stateNode,u=null!=(s=p.memoizedProps.style)&&s.hasOwnProperty(\"display\")?s.display:null,l.style.display=ve(\"display\",u))}catch(t){Es(e,e.return,t)}}}else if(6===p.tag){if(null===f)try{p.stateNode.nodeValue=c?\"\":p.memoizedProps}catch(t){Es(e,e.return,t)}}else if((22!==p.tag&&23!==p.tag||null===p.memoizedState||p===e)&&null!==p.child){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;null===p.sibling;){if(null===p.return||p.return===e)break e;f===p&&(f=null),p=p.return}f===p&&(f=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:gl(t,e),ml(e),4&r&&vl(e);case 21:}}function ml(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(ul(n)){var r=n;break e}n=n.return}throw Error(i(160))}switch(r.tag){case 5:var a=r.stateNode;32&r.flags&&(pe(a,\"\"),r.flags&=-33),cl(e,ll(e),a);break;case 3:case 4:var o=r.stateNode.containerInfo;sl(e,ll(e),o);break;default:throw Error(i(161))}}catch(t){Es(e,e.return,t)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function bl(e,t,n){Ju=e,_l(e,t,n)}function _l(e,t,n){for(var r=0!=(1&e.mode);null!==Ju;){var a=Ju,i=a.child;if(22===a.tag&&r){var o=null!==a.memoizedState||Ku;if(!o){var u=a.alternate,l=null!==u&&null!==u.memoizedState||Zu;u=Ku;var s=Zu;if(Ku=o,(Zu=l)&&!s)for(Ju=a;null!==Ju;)l=(o=Ju).child,22===o.tag&&null!==o.memoizedState?kl(a):null!==l?(l.return=o,Ju=l):kl(a);for(;null!==i;)Ju=i,_l(i,t,n),i=i.sibling;Ju=a,Ku=u,Zu=s}wl(e)}else 0!=(8772&a.subtreeFlags)&&null!==i?(i.return=a,Ju=i):wl(e)}}function wl(e){for(;null!==Ju;){var t=Ju;if(0!=(8772&t.flags)){var n=t.alternate;try{if(0!=(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Zu||al(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Zu)if(null===n)r.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:gi(t.type,n.memoizedProps);r.componentDidUpdate(a,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var o=t.updateQueue;null!==o&&ji(t,o,r);break;case 3:var u=t.updateQueue;if(null!==u){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}ji(t,u,n)}break;case 5:var l=t.stateNode;if(null===n&&4&t.flags){n=l;var s=t.memoizedProps;switch(t.type){case\"button\":case\"input\":case\"select\":case\"textarea\":s.autoFocus&&n.focus();break;case\"img\":s.src&&(n.src=s.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var f=c.memoizedState;if(null!==f){var p=f.dehydrated;null!==p&&Bt(p)}}}break;default:throw Error(i(163))}Zu||512&t.flags&&il(t)}catch(e){Es(t,t.return,e)}}if(t===e){Ju=null;break}if(null!==(n=t.sibling)){n.return=t.return,Ju=n;break}Ju=t.return}}function xl(e){for(;null!==Ju;){var t=Ju;if(t===e){Ju=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Ju=n;break}Ju=t.return}}function kl(e){for(;null!==Ju;){var t=Ju;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{al(4,t)}catch(e){Es(t,n,e)}break;case 1:var r=t.stateNode;if(\"function\"==typeof r.componentDidMount){var a=t.return;try{r.componentDidMount()}catch(e){Es(t,a,e)}}var i=t.return;try{il(t)}catch(e){Es(t,i,e)}break;case 5:var o=t.return;try{il(t)}catch(e){Es(t,o,e)}}}catch(e){Es(t,t.return,e)}if(t===e){Ju=null;break}var u=t.sibling;if(null!==u){u.return=t.return,Ju=u;break}Ju=t.return}}var Sl,El=Math.ceil,Cl=_.ReactCurrentDispatcher,Tl=_.ReactCurrentOwner,Ml=_.ReactCurrentBatchConfig,Nl=0,Pl=null,zl=null,Ll=0,Ol=0,Al=Sa(0),Fl=0,Dl=null,Rl=0,jl=0,Ul=0,Il=null,$l=null,Bl=0,Wl=1/0,Vl=null,Hl=!1,ql=null,Ql=null,Yl=!1,Gl=null,Kl=0,Zl=0,Xl=null,Jl=-1,es=0;function ts(){return 0!=(6&Nl)?Ze():-1!==Jl?Jl:Jl=Ze()}function ns(e){return 0==(1&e.mode)?1:0!=(2&Nl)&&0!==Ll?Ll&-Ll:null!==vi.transition?(0===es&&(es=vt()),es):0!==(e=bt)?e:e=void 0===(e=window.event)?16:Kt(e.type)}function rs(e,t,n,r){if(50<Zl)throw Zl=0,Xl=null,Error(i(185));yt(e,n,r),0!=(2&Nl)&&e===Pl||(e===Pl&&(0==(2&Nl)&&(jl|=n),4===Fl&&ls(e,Ll)),as(e,r),1===n&&0===Nl&&0==(1&t.mode)&&(Wl=Ze()+500,Ua&&Ba()))}function as(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,i=e.pendingLanes;0<i;){var o=31-ot(i),u=1<<o,l=a[o];-1===l?0!=(u&n)&&0==(u&r)||(a[o]=dt(u,t)):l<=t&&(e.expiredLanes|=u),i&=~u}}(e,t);var r=pt(e,e===Pl?Ll:0);if(0===r)null!==n&&Ye(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Ye(n),1===t)0===e.tag?function(e){Ua=!0,$a(e)}(ss.bind(null,e)):$a(ss.bind(null,e)),oa((function(){0==(6&Nl)&&Ba()})),n=null;else{switch(_t(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Ps(n,is.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function is(e,t){if(Jl=-1,es=0,0!=(6&Nl))throw Error(i(327));var n=e.callbackNode;if(ks()&&e.callbackNode!==n)return null;var r=pt(e,e===Pl?Ll:0);if(0===r)return null;if(0!=(30&r)||0!=(r&e.expiredLanes)||t)t=ys(e,r);else{t=r;var a=Nl;Nl|=2;var o=vs();for(Pl===e&&Ll===t||(Vl=null,Wl=Ze()+500,ds(e,t));;)try{bs();break}catch(t){hs(e,t)}wi(),Cl.current=o,Nl=a,null!==zl?t=0:(Pl=null,Ll=0,t=Fl)}if(0!==t){if(2===t&&0!==(a=ht(e))&&(r=a,t=os(e,a)),1===t)throw n=Dl,ds(e,0),ls(e,r),as(e,Ze()),n;if(6===t)ls(e,r);else{if(a=e.current.alternate,0==(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var a=n[r],i=a.getSnapshot;a=a.value;try{if(!ur(i(),a))return!1}catch(e){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(a)&&(2===(t=ys(e,r))&&0!==(o=ht(e))&&(r=o,t=os(e,o)),1===t))throw n=Dl,ds(e,0),ls(e,r),as(e,Ze()),n;switch(e.finishedWork=a,e.finishedLanes=r,t){case 0:case 1:throw Error(i(345));case 2:case 5:xs(e,$l,Vl);break;case 3:if(ls(e,r),(130023424&r)===r&&10<(t=Bl+500-Ze())){if(0!==pt(e,0))break;if(((a=e.suspendedLanes)&r)!==r){ts(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ra(xs.bind(null,e,$l,Vl),t);break}xs(e,$l,Vl);break;case 4:if(ls(e,r),(4194240&r)===r)break;for(t=e.eventTimes,a=-1;0<r;){var u=31-ot(r);o=1<<u,(u=t[u])>a&&(a=u),r&=~o}if(r=a,10<(r=(120>(r=Ze()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*El(r/1960))-r)){e.timeoutHandle=ra(xs.bind(null,e,$l,Vl),r);break}xs(e,$l,Vl);break;default:throw Error(i(329))}}}return as(e,Ze()),e.callbackNode===n?is.bind(null,e):null}function os(e,t){var n=Il;return e.current.memoizedState.isDehydrated&&(ds(e,t).flags|=256),2!==(e=ys(e,t))&&(t=$l,$l=n,null!==t&&us(t)),e}function us(e){null===$l?$l=e:$l.push.apply($l,e)}function ls(e,t){for(t&=~Ul,t&=~jl,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-ot(t),r=1<<n;e[n]=-1,t&=~r}}function ss(e){if(0!=(6&Nl))throw Error(i(327));ks();var t=pt(e,0);if(0==(1&t))return as(e,Ze()),null;var n=ys(e,t);if(0!==e.tag&&2===n){var r=ht(e);0!==r&&(t=r,n=os(e,r))}if(1===n)throw n=Dl,ds(e,0),ls(e,t),as(e,Ze()),n;if(6===n)throw Error(i(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,xs(e,$l,Vl),as(e,Ze()),null}function cs(e,t){var n=Nl;Nl|=1;try{return e(t)}finally{0===(Nl=n)&&(Wl=Ze()+500,Ua&&Ba())}}function fs(e){null!==Gl&&0===Gl.tag&&0==(6&Nl)&&ks();var t=Nl;Nl|=1;var n=Ml.transition,r=bt;try{if(Ml.transition=null,bt=1,e)return e()}finally{bt=r,Ml.transition=n,0==(6&(Nl=t))&&Ba()}}function ps(){Ol=Al.current,Ea(Al)}function ds(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,aa(n)),null!==zl)for(n=zl.return;null!==n;){var r=n;switch(ti(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Oa();break;case 3:ao(),Ea(Na),Ea(Ma),co();break;case 5:oo(r);break;case 4:ao();break;case 13:case 19:Ea(uo);break;case 10:xi(r.type._context);break;case 22:case 23:ps()}n=n.return}if(Pl=e,zl=e=As(e.current,null),Ll=Ol=t,Fl=0,Dl=null,Ul=jl=Rl=0,$l=Il=null,null!==Ci){for(t=0;t<Ci.length;t++)if(null!==(r=(n=Ci[t]).interleaved)){n.interleaved=null;var a=r.next,i=n.pending;if(null!==i){var o=i.next;i.next=a,r.next=o}n.pending=r}Ci=null}return e}function hs(e,t){for(;;){var n=zl;try{if(wi(),fo.current=ou,mo){for(var r=vo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}mo=!1}if(ho=0,yo=go=vo=null,bo=!1,_o=0,Tl.current=null,null===n||null===n.return){Fl=1,Dl=t,zl=null;break}e:{var o=e,u=n.return,l=n,s=t;if(t=Ll,l.flags|=32768,null!==s&&\"object\"==typeof s&&\"function\"==typeof s.then){var c=s,f=l,p=f.tag;if(0==(1&f.mode)&&(0===p||11===p||15===p)){var d=f.alternate;d?(f.updateQueue=d.updateQueue,f.memoizedState=d.memoizedState,f.lanes=d.lanes):(f.updateQueue=null,f.memoizedState=null)}var h=yu(u);if(null!==h){h.flags&=-257,mu(h,u,l,0,t),1&h.mode&&gu(o,c,t),s=c;var v=(t=h).updateQueue;if(null===v){var g=new Set;g.add(s),t.updateQueue=g}else v.add(s);break e}if(0==(1&t)){gu(o,c,t),gs();break e}s=Error(i(426))}else if(ai&&1&l.mode){var y=yu(u);if(null!==y){0==(65536&y.flags)&&(y.flags|=256),mu(y,u,l,0,t),hi(cu(s,l));break e}}o=s=cu(s,l),4!==Fl&&(Fl=2),null===Il?Il=[o]:Il.push(o),o=u;do{switch(o.tag){case 3:o.flags|=65536,t&=-t,o.lanes|=t,Di(o,hu(0,s,t));break e;case 1:l=s;var m=o.type,b=o.stateNode;if(0==(128&o.flags)&&(\"function\"==typeof m.getDerivedStateFromError||null!==b&&\"function\"==typeof b.componentDidCatch&&(null===Ql||!Ql.has(b)))){o.flags|=65536,t&=-t,o.lanes|=t,Di(o,vu(o,l,t));break e}}o=o.return}while(null!==o)}ws(n)}catch(e){t=e,zl===n&&null!==n&&(zl=n=n.return);continue}break}}function vs(){var e=Cl.current;return Cl.current=ou,null===e?ou:e}function gs(){0!==Fl&&3!==Fl&&2!==Fl||(Fl=4),null===Pl||0==(268435455&Rl)&&0==(268435455&jl)||ls(Pl,Ll)}function ys(e,t){var n=Nl;Nl|=2;var r=vs();for(Pl===e&&Ll===t||(Vl=null,ds(e,t));;)try{ms();break}catch(t){hs(e,t)}if(wi(),Nl=n,Cl.current=r,null!==zl)throw Error(i(261));return Pl=null,Ll=0,Fl}function ms(){for(;null!==zl;)_s(zl)}function bs(){for(;null!==zl&&!Ge();)_s(zl)}function _s(e){var t=Sl(e.alternate,e,Ol);e.memoizedProps=e.pendingProps,null===t?ws(e):zl=t,Tl.current=null}function ws(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(32768&t.flags)){if(null!==(n=Yu(n,t,Ol)))return void(zl=n)}else{if(null!==(n=Gu(n,t)))return n.flags&=32767,void(zl=n);if(null===e)return Fl=6,void(zl=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(zl=t);zl=t=e}while(null!==t);0===Fl&&(Fl=5)}function xs(e,t,n){var r=bt,a=Ml.transition;try{Ml.transition=null,bt=1,function(e,t,n,r){do{ks()}while(null!==Gl);if(0!=(6&Nl))throw Error(i(327));n=e.finishedWork;var a=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null,e.callbackPriority=0;var o=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var a=31-ot(n),i=1<<a;t[a]=0,r[a]=-1,e[a]=-1,n&=~i}}(e,o),e===Pl&&(zl=Pl=null,Ll=0),0==(2064&n.subtreeFlags)&&0==(2064&n.flags)||Yl||(Yl=!0,Ps(tt,(function(){return ks(),null}))),o=0!=(15990&n.flags),0!=(15990&n.subtreeFlags)||o){o=Ml.transition,Ml.transition=null;var u=bt;bt=1;var l=Nl;Nl|=4,Tl.current=null,function(e,t){if(ea=Vt,dr(e=pr())){if(\"selectionStart\"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch(e){n=null;break e}var u=0,l=-1,s=-1,c=0,f=0,p=e,d=null;t:for(;;){for(var h;p!==n||0!==a&&3!==p.nodeType||(l=u+a),p!==o||0!==r&&3!==p.nodeType||(s=u+r),3===p.nodeType&&(u+=p.nodeValue.length),null!==(h=p.firstChild);)d=p,p=h;for(;;){if(p===e)break t;if(d===n&&++c===a&&(l=u),d===o&&++f===r&&(s=u),null!==(h=p.nextSibling))break;d=(p=d).parentNode}p=h}n=-1===l||-1===s?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(ta={focusedElem:e,selectionRange:n},Vt=!1,Ju=t;null!==Ju;)if(e=(t=Ju).child,0!=(1028&t.subtreeFlags)&&null!==e)e.return=t,Ju=e;else for(;null!==Ju;){t=Ju;try{var v=t.alternate;if(0!=(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==v){var g=v.memoizedProps,y=v.memoizedState,m=t.stateNode,b=m.getSnapshotBeforeUpdate(t.elementType===t.type?g:gi(t.type,g),y);m.__reactInternalSnapshotBeforeUpdate=b}break;case 3:var _=t.stateNode.containerInfo;1===_.nodeType?_.textContent=\"\":9===_.nodeType&&_.documentElement&&_.removeChild(_.documentElement);break;default:throw Error(i(163))}}catch(e){Es(t,t.return,e)}if(null!==(e=t.sibling)){e.return=t.return,Ju=e;break}Ju=t.return}v=nl,nl=!1}(e,n),yl(n,e),hr(ta),Vt=!!ea,ta=ea=null,e.current=n,bl(n,e,a),Ke(),Nl=l,bt=u,Ml.transition=o}else e.current=n;if(Yl&&(Yl=!1,Gl=e,Kl=a),0===(o=e.pendingLanes)&&(Ql=null),function(e){if(it&&\"function\"==typeof it.onCommitFiberRoot)try{it.onCommitFiberRoot(at,e,void 0,128==(128&e.current.flags))}catch(e){}}(n.stateNode),as(e,Ze()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)r((a=t[n]).value,{componentStack:a.stack,digest:a.digest});if(Hl)throw Hl=!1,e=ql,ql=null,e;0!=(1&Kl)&&0!==e.tag&&ks(),0!=(1&(o=e.pendingLanes))?e===Xl?Zl++:(Zl=0,Xl=e):Zl=0,Ba()}(e,t,n,r)}finally{Ml.transition=a,bt=r}return null}function ks(){if(null!==Gl){var e=_t(Kl),t=Ml.transition,n=bt;try{if(Ml.transition=null,bt=16>e?16:e,null===Gl)var r=!1;else{if(e=Gl,Gl=null,Kl=0,0!=(6&Nl))throw Error(i(331));var a=Nl;for(Nl|=4,Ju=e.current;null!==Ju;){var o=Ju,u=o.child;if(0!=(16&Ju.flags)){var l=o.deletions;if(null!==l){for(var s=0;s<l.length;s++){var c=l[s];for(Ju=c;null!==Ju;){var f=Ju;switch(f.tag){case 0:case 11:case 15:rl(8,f,o)}var p=f.child;if(null!==p)p.return=f,Ju=p;else for(;null!==Ju;){var d=(f=Ju).sibling,h=f.return;if(ol(f),f===c){Ju=null;break}if(null!==d){d.return=h,Ju=d;break}Ju=h}}}var v=o.alternate;if(null!==v){var g=v.child;if(null!==g){v.child=null;do{var y=g.sibling;g.sibling=null,g=y}while(null!==g)}}Ju=o}}if(0!=(2064&o.subtreeFlags)&&null!==u)u.return=o,Ju=u;else e:for(;null!==Ju;){if(0!=(2048&(o=Ju).flags))switch(o.tag){case 0:case 11:case 15:rl(9,o,o.return)}var m=o.sibling;if(null!==m){m.return=o.return,Ju=m;break e}Ju=o.return}}var b=e.current;for(Ju=b;null!==Ju;){var _=(u=Ju).child;if(0!=(2064&u.subtreeFlags)&&null!==_)_.return=u,Ju=_;else e:for(u=b;null!==Ju;){if(0!=(2048&(l=Ju).flags))try{switch(l.tag){case 0:case 11:case 15:al(9,l)}}catch(e){Es(l,l.return,e)}if(l===u){Ju=null;break e}var w=l.sibling;if(null!==w){w.return=l.return,Ju=w;break e}Ju=l.return}}if(Nl=a,Ba(),it&&\"function\"==typeof it.onPostCommitFiberRoot)try{it.onPostCommitFiberRoot(at,e)}catch(e){}r=!0}return r}finally{bt=n,Ml.transition=t}}return!1}function Ss(e,t,n){e=Ai(e,t=hu(0,t=cu(n,t),1),1),t=ts(),null!==e&&(yt(e,1,t),as(e,t))}function Es(e,t,n){if(3===e.tag)Ss(e,e,n);else for(;null!==t;){if(3===t.tag){Ss(t,e,n);break}if(1===t.tag){var r=t.stateNode;if(\"function\"==typeof t.type.getDerivedStateFromError||\"function\"==typeof r.componentDidCatch&&(null===Ql||!Ql.has(r))){t=Ai(t,e=vu(t,e=cu(n,e),1),1),e=ts(),null!==t&&(yt(t,1,e),as(t,e));break}}t=t.return}}function Cs(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ts(),e.pingedLanes|=e.suspendedLanes&n,Pl===e&&(Ll&n)===n&&(4===Fl||3===Fl&&(130023424&Ll)===Ll&&500>Ze()-Bl?ds(e,0):Ul|=n),as(e,t)}function Ts(e,t){0===t&&(0==(1&e.mode)?t=1:(t=ct,0==(130023424&(ct<<=1))&&(ct=4194304)));var n=ts();null!==(e=Ni(e,t))&&(yt(e,t,n),as(e,n))}function Ms(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Ts(e,n)}function Ns(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(i(314))}null!==r&&r.delete(t),Ts(e,n)}function Ps(e,t){return Qe(e,t)}function zs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ls(e,t,n,r){return new zs(e,t,n,r)}function Os(e){return!(!(e=e.prototype)||!e.isReactComponent)}function As(e,t){var n=e.alternate;return null===n?((n=Ls(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Fs(e,t,n,r,a,o){var u=2;if(r=e,\"function\"==typeof e)Os(e)&&(u=1);else if(\"string\"==typeof e)u=5;else e:switch(e){case k:return Ds(n.children,a,o,t);case S:u=8,a|=8;break;case E:return(e=Ls(12,n,t,2|a)).elementType=E,e.lanes=o,e;case N:return(e=Ls(13,n,t,a)).elementType=N,e.lanes=o,e;case P:return(e=Ls(19,n,t,a)).elementType=P,e.lanes=o,e;case O:return Rs(n,a,o,t);default:if(\"object\"==typeof e&&null!==e)switch(e.$$typeof){case C:u=10;break e;case T:u=9;break e;case M:u=11;break e;case z:u=14;break e;case L:u=16,r=null;break e}throw Error(i(130,null==e?e:typeof e,\"\"))}return(t=Ls(u,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ds(e,t,n,r){return(e=Ls(7,e,r,t)).lanes=n,e}function Rs(e,t,n,r){return(e=Ls(22,e,r,t)).elementType=O,e.lanes=n,e.stateNode={isHidden:!1},e}function js(e,t,n){return(e=Ls(6,e,null,t)).lanes=n,e}function Us(e,t,n){return(t=Ls(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Is(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function $s(e,t,n,r,a,i,o,u,l){return e=new Is(e,t,n,u,l),1===t?(t=1,!0===i&&(t|=8)):t=0,i=Ls(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},zi(i),e}function Bs(e){if(!e)return Ta;e:{if(Be(e=e._reactInternals)!==e||1!==e.tag)throw Error(i(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(La(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(i(171))}if(1===e.tag){var n=e.type;if(La(n))return Fa(e,n,t)}return t}function Ws(e,t,n,r,a,i,o,u,l){return(e=$s(n,r,!0,e,0,i,0,u,l)).context=Bs(null),n=e.current,(i=Oi(r=ts(),a=ns(n))).callback=null!=t?t:null,Ai(n,i,a),e.current.lanes=a,yt(e,a,r),as(e,r),e}function Vs(e,t,n,r){var a=t.current,i=ts(),o=ns(a);return n=Bs(n),null===t.context?t.context=n:t.pendingContext=n,(t=Oi(i,o)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Ai(a,t,o))&&(rs(e,a,o,i),Fi(e,a,o)),o}function Hs(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function qs(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Qs(e,t){qs(e,t),(e=e.alternate)&&qs(e,t)}Sl=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Na.current)_u=!0;else{if(0==(e.lanes&n)&&0==(128&t.flags))return _u=!1,function(e,t,n){switch(t.tag){case 3:Pu(t),di();break;case 5:io(t);break;case 1:La(t.type)&&Da(t);break;case 4:ro(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,a=t.memoizedProps.value;Ca(yi,r._currentValue),r._currentValue=a;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Ca(uo,1&uo.current),t.flags|=128,null):0!=(n&t.child.childLanes)?ju(e,t,n):(Ca(uo,1&uo.current),null!==(e=Hu(e,t,n))?e.sibling:null);Ca(uo,1&uo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(128&e.flags)){if(r)return Wu(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),Ca(uo,uo.current),r)break;return null;case 22:case 23:return t.lanes=0,Eu(e,t,n)}return Hu(e,t,n)}(e,t,n);_u=0!=(131072&e.flags)}else _u=!1,ai&&0!=(1048576&t.flags)&&Ja(t,qa,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Vu(e,t),e=t.pendingProps;var a=za(t,Ma.current);Si(t,n),a=So(null,t,r,e,a,n);var o=Eo();return t.flags|=1,\"object\"==typeof a&&null!==a&&\"function\"==typeof a.render&&void 0===a.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,La(r)?(o=!0,Da(t)):o=!1,t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,zi(t),a.updater=$i,t.stateNode=a,a._reactInternals=t,Hi(t,r,e,n),t=Nu(null,t,r,!0,o,n)):(t.tag=0,ai&&o&&ei(t),wu(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Vu(e,t),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if(\"function\"==typeof e)return Os(e)?1:0;if(null!=e){if((e=e.$$typeof)===M)return 11;if(e===z)return 14}return 2}(r),e=gi(r,e),a){case 0:t=Tu(null,t,r,e,n);break e;case 1:t=Mu(null,t,r,e,n);break e;case 11:t=xu(null,t,r,e,n);break e;case 14:t=ku(null,t,r,gi(r.type,e),n);break e}throw Error(i(306,r,\"\"))}return t;case 0:return r=t.type,a=t.pendingProps,Tu(e,t,r,a=t.elementType===r?a:gi(r,a),n);case 1:return r=t.type,a=t.pendingProps,Mu(e,t,r,a=t.elementType===r?a:gi(r,a),n);case 3:e:{if(Pu(t),null===e)throw Error(i(387));r=t.pendingProps,a=(o=t.memoizedState).element,Li(e,t),Ri(t,r,null,n);var u=t.memoizedState;if(r=u.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},t.updateQueue.baseState=o,t.memoizedState=o,256&t.flags){t=zu(e,t,r,n,a=cu(Error(i(423)),t));break e}if(r!==a){t=zu(e,t,r,n,a=cu(Error(i(424)),t));break e}for(ri=sa(t.stateNode.containerInfo.firstChild),ni=t,ai=!0,ii=null,n=Zi(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(di(),r===a){t=Hu(e,t,n);break e}wu(e,t,r,n)}t=t.child}return t;case 5:return io(t),null===e&&si(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,u=a.children,na(r,a)?u=null:null!==o&&na(r,o)&&(t.flags|=32),Cu(e,t),wu(e,t,u,n),t.child;case 6:return null===e&&si(t),null;case 13:return ju(e,t,n);case 4:return ro(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Ki(t,null,r,n):wu(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,xu(e,t,r,a=t.elementType===r?a:gi(r,a),n);case 7:return wu(e,t,t.pendingProps,n),t.child;case 8:case 12:return wu(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,o=t.memoizedProps,u=a.value,Ca(yi,r._currentValue),r._currentValue=u,null!==o)if(ur(o.value,u)){if(o.children===a.children&&!Na.current){t=Hu(e,t,n);break e}}else for(null!==(o=t.child)&&(o.return=t);null!==o;){var l=o.dependencies;if(null!==l){u=o.child;for(var s=l.firstContext;null!==s;){if(s.context===r){if(1===o.tag){(s=Oi(-1,n&-n)).tag=2;var c=o.updateQueue;if(null!==c){var f=(c=c.shared).pending;null===f?s.next=s:(s.next=f.next,f.next=s),c.pending=s}}o.lanes|=n,null!==(s=o.alternate)&&(s.lanes|=n),ki(o.return,n,t),l.lanes|=n;break}s=s.next}}else if(10===o.tag)u=o.type===t.type?null:o.child;else if(18===o.tag){if(null===(u=o.return))throw Error(i(341));u.lanes|=n,null!==(l=u.alternate)&&(l.lanes|=n),ki(u,n,t),u=o.sibling}else u=o.child;if(null!==u)u.return=o;else for(u=o;null!==u;){if(u===t){u=null;break}if(null!==(o=u.sibling)){o.return=u.return,u=o;break}u=u.return}o=u}wu(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,Si(t,n),r=r(a=Ei(a)),t.flags|=1,wu(e,t,r,n),t.child;case 14:return a=gi(r=t.type,t.pendingProps),ku(e,t,r,a=gi(r.type,a),n);case 15:return Su(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:gi(r,a),Vu(e,t),t.tag=1,La(r)?(e=!0,Da(t)):e=!1,Si(t,n),Wi(t,r,a),Hi(t,r,a,n),Nu(null,t,r,!0,e,n);case 19:return Wu(e,t,n);case 22:return Eu(e,t,n)}throw Error(i(156,t.tag))};var Ys=\"function\"==typeof reportError?reportError:function(e){console.error(e)};function Gs(e){this._internalRoot=e}function Ks(e){this._internalRoot=e}function Zs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Xs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||\" react-mount-point-unstable \"!==e.nodeValue))}function Js(){}function ec(e,t,n,r,a){var i=n._reactRootContainer;if(i){var o=i;if(\"function\"==typeof a){var u=a;a=function(){var e=Hs(o);u.call(e)}}Vs(t,o,e,a)}else o=function(e,t,n,r,a){if(a){if(\"function\"==typeof r){var i=r;r=function(){var e=Hs(o);i.call(e)}}var o=Ws(t,r,e,0,null,!1,0,\"\",Js);return e._reactRootContainer=o,e[ha]=o.current,Br(8===e.nodeType?e.parentNode:e),fs(),o}for(;a=e.lastChild;)e.removeChild(a);if(\"function\"==typeof r){var u=r;r=function(){var e=Hs(l);u.call(e)}}var l=$s(e,0,!1,null,0,!1,0,\"\",Js);return e._reactRootContainer=l,e[ha]=l.current,Br(8===e.nodeType?e.parentNode:e),fs((function(){Vs(t,l,n,r)})),l}(n,t,e,a,r);return Hs(o)}Ks.prototype.render=Gs.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(i(409));Vs(e,t,null,null)},Ks.prototype.unmount=Gs.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;fs((function(){Vs(null,e,null,null)})),t[ha]=null}},Ks.prototype.unstable_scheduleHydration=function(e){if(e){var t=St();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Ot.length&&0!==t&&t<Ot[n].priority;n++);Ot.splice(n,0,e),0===n&&Rt(e)}},wt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=ft(t.pendingLanes);0!==n&&(mt(t,1|n),as(t,Ze()),0==(6&Nl)&&(Wl=Ze()+500,Ba()))}break;case 13:fs((function(){var t=Ni(e,1);if(null!==t){var n=ts();rs(t,e,1,n)}})),Qs(e,1)}},xt=function(e){if(13===e.tag){var t=Ni(e,134217728);null!==t&&rs(t,e,134217728,ts()),Qs(e,134217728)}},kt=function(e){if(13===e.tag){var t=ns(e),n=Ni(e,t);null!==n&&rs(n,e,t,ts()),Qs(e,t)}},St=function(){return bt},Et=function(e,t){var n=bt;try{return bt=e,t()}finally{bt=n}},xe=function(e,t,n){switch(t){case\"input\":if(X(e,n),t=n.name,\"radio\"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+t)+'][type=\"radio\"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=wa(r);if(!a)throw Error(i(90));Q(r),X(r,a)}}}break;case\"textarea\":ie(e,n);break;case\"select\":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Me=cs,Ne=fs;var tc={usingClientEntryPoint:!1,Events:[ba,_a,wa,Ce,Te,cs]},nc={findFiberByHostInstance:ma,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"},rc={bundleType:nc.bundleType,version:nc.version,rendererPackageName:nc.rendererPackageName,rendererConfig:nc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:_.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=He(e))?null:e.stateNode},findFiberByHostInstance:nc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var ac=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ac.isDisabled&&ac.supportsFiber)try{at=ac.inject(rc),it=ac}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tc,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Zs(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:\"\"+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Zs(e))throw Error(i(299));var n=!1,r=\"\",a=Ys;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(a=t.onRecoverableError)),t=$s(e,1,!1,null,0,n,0,r,a),e[ha]=t.current,Br(8===e.nodeType?e.parentNode:e),new Gs(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if(\"function\"==typeof e.render)throw Error(i(188));throw e=Object.keys(e).join(\",\"),Error(i(268,e))}return null===(e=He(t))?null:e.stateNode},t.flushSync=function(e){return fs(e)},t.hydrate=function(e,t,n){if(!Xs(t))throw Error(i(200));return ec(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Zs(e))throw Error(i(405));var r=null!=n&&n.hydratedSources||null,a=!1,o=\"\",u=Ys;if(null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(o=n.identifierPrefix),void 0!==n.onRecoverableError&&(u=n.onRecoverableError)),t=Ws(t,null,e,1,null!=n?n:null,a,0,o,u),e[ha]=t.current,Br(e),r)for(e=0;e<r.length;e++)a=(a=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new Ks(t)},t.render=function(e,t,n){if(!Xs(t))throw Error(i(200));return ec(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Xs(e))throw Error(i(40));return!!e._reactRootContainer&&(fs((function(){ec(null,null,e,!1,(function(){e._reactRootContainer=null,e[ha]=null}))})),!0)},t.unstable_batchedUpdates=cs,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Xs(n))throw Error(i(200));if(null==e||void 0===e._reactInternals)throw Error(i(38));return ec(e,t,n,!1,r)},t.version=\"18.2.0-next-9e3b772b8-20220608\"},935:(e,t,n)=>{\"use strict\";!function e(){if(\"undefined\"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&\"function\"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(448)},408:(e,t)=>{\"use strict\";var n=Symbol.for(\"react.element\"),r=Symbol.for(\"react.portal\"),a=Symbol.for(\"react.fragment\"),i=Symbol.for(\"react.strict_mode\"),o=Symbol.for(\"react.profiler\"),u=Symbol.for(\"react.provider\"),l=Symbol.for(\"react.context\"),s=Symbol.for(\"react.forward_ref\"),c=Symbol.for(\"react.suspense\"),f=Symbol.for(\"react.memo\"),p=Symbol.for(\"react.lazy\"),d=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,g={};function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}function m(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(\"object\"!=typeof e&&\"function\"!=typeof e&&null!=e)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,e,t,\"setState\")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")},m.prototype=y.prototype;var _=b.prototype=new m;_.constructor=b,v(_,y.prototype),_.isPureReactComponent=!0;var w=Array.isArray,x=Object.prototype.hasOwnProperty,k={current:null},S={key:!0,ref:!0,__self:!0,__source:!0};function E(e,t,r){var a,i={},o=null,u=null;if(null!=t)for(a in void 0!==t.ref&&(u=t.ref),void 0!==t.key&&(o=\"\"+t.key),t)x.call(t,a)&&!S.hasOwnProperty(a)&&(i[a]=t[a]);var l=arguments.length-2;if(1===l)i.children=r;else if(1<l){for(var s=Array(l),c=0;c<l;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(a in l=e.defaultProps)void 0===i[a]&&(i[a]=l[a]);return{$$typeof:n,type:e,key:o,ref:u,props:i,_owner:k.current}}function C(e){return\"object\"==typeof e&&null!==e&&e.$$typeof===n}var T=/\\/+/g;function M(e,t){return\"object\"==typeof e&&null!==e&&null!=e.key?function(e){var t={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+e.replace(/[=:]/g,(function(e){return t[e]}))}(\"\"+e.key):t.toString(36)}function N(e,t,a,i,o){var u=typeof e;\"undefined\"!==u&&\"boolean\"!==u||(e=null);var l=!1;if(null===e)l=!0;else switch(u){case\"string\":case\"number\":l=!0;break;case\"object\":switch(e.$$typeof){case n:case r:l=!0}}if(l)return o=o(l=e),e=\"\"===i?\".\"+M(l,0):i,w(o)?(a=\"\",null!=e&&(a=e.replace(T,\"$&/\")+\"/\"),N(o,t,a,\"\",(function(e){return e}))):null!=o&&(C(o)&&(o=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(o,a+(!o.key||l&&l.key===o.key?\"\":(\"\"+o.key).replace(T,\"$&/\")+\"/\")+e)),t.push(o)),1;if(l=0,i=\"\"===i?\".\":i+\":\",w(e))for(var s=0;s<e.length;s++){var c=i+M(u=e[s],s);l+=N(u,t,a,c,o)}else if(c=function(e){return null===e||\"object\"!=typeof e?null:\"function\"==typeof(e=d&&e[d]||e[\"@@iterator\"])?e:null}(e),\"function\"==typeof c)for(e=c.call(e),s=0;!(u=e.next()).done;)l+=N(u=u.value,t,a,c=i+M(u,s++),o);else if(\"object\"===u)throw t=String(e),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===t?\"object with keys {\"+Object.keys(e).join(\", \")+\"}\":t)+\"). If you meant to render a collection of children, use an array instead.\");return l}function P(e,t,n){if(null==e)return e;var r=[],a=0;return N(e,r,\"\",\"\",(function(e){return t.call(n,e,a++)})),r}function z(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var L={current:null},O={transition:null},A={ReactCurrentDispatcher:L,ReactCurrentBatchConfig:O,ReactCurrentOwner:k};t.Children={map:P,forEach:function(e,t,n){P(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return P(e,(function(){t++})),t},toArray:function(e){return P(e,(function(e){return e}))||[]},only:function(e){if(!C(e))throw Error(\"React.Children.only expected to receive a single React element child.\");return e}},t.Component=y,t.Fragment=a,t.Profiler=o,t.PureComponent=b,t.StrictMode=i,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=A,t.cloneElement=function(e,t,r){if(null==e)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+e+\".\");var a=v({},e.props),i=e.key,o=e.ref,u=e._owner;if(null!=t){if(void 0!==t.ref&&(o=t.ref,u=k.current),void 0!==t.key&&(i=\"\"+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(s in t)x.call(t,s)&&!S.hasOwnProperty(s)&&(a[s]=void 0===t[s]&&void 0!==l?l[s]:t[s])}var s=arguments.length-2;if(1===s)a.children=r;else if(1<s){l=Array(s);for(var c=0;c<s;c++)l[c]=arguments[c+2];a.children=l}return{$$typeof:n,type:e.type,key:i,ref:o,props:a,_owner:u}},t.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:u,_context:e},e.Consumer=e},t.createElement=E,t.createFactory=function(e){var t=E.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:z}},t.memo=function(e,t){return{$$typeof:f,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=O.transition;O.transition={};try{e()}finally{O.transition=t}},t.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\")},t.useCallback=function(e,t){return L.current.useCallback(e,t)},t.useContext=function(e){return L.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return L.current.useDeferredValue(e)},t.useEffect=function(e,t){return L.current.useEffect(e,t)},t.useId=function(){return L.current.useId()},t.useImperativeHandle=function(e,t,n){return L.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return L.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return L.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return L.current.useMemo(e,t)},t.useReducer=function(e,t,n){return L.current.useReducer(e,t,n)},t.useRef=function(e){return L.current.useRef(e)},t.useState=function(e){return L.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return L.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return L.current.useTransition()},t.version=\"18.2.0\"},294:(e,t,n)=>{\"use strict\";e.exports=n(408)},53:(e,t)=>{\"use strict\";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<i(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,o=a>>>1;r<o;){var u=2*(r+1)-1,l=e[u],s=u+1,c=e[s];if(0>i(l,n))s<a&&0>i(c,l)?(e[r]=c,e[s]=n,r=s):(e[r]=l,e[u]=n,r=u);else{if(!(s<a&&0>i(c,n)))break e;e[r]=c,e[s]=n,r=s}}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(\"object\"==typeof performance&&\"function\"==typeof performance.now){var o=performance;t.unstable_now=function(){return o.now()}}else{var u=Date,l=u.now();t.unstable_now=function(){return u.now()-l}}var s=[],c=[],f=1,p=null,d=3,h=!1,v=!1,g=!1,y=\"function\"==typeof setTimeout?setTimeout:null,m=\"function\"==typeof clearTimeout?clearTimeout:null,b=\"undefined\"!=typeof setImmediate?setImmediate:null;function _(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(s,t)}t=r(c)}}function w(e){if(g=!1,_(e),!v)if(null!==r(s))v=!0,O(x);else{var t=r(c);null!==t&&A(w,t.startTime-e)}}function x(e,n){v=!1,g&&(g=!1,m(C),C=-1),h=!0;var i=d;try{for(_(n),p=r(s);null!==p&&(!(p.expirationTime>n)||e&&!N());){var o=p.callback;if(\"function\"==typeof o){p.callback=null,d=p.priorityLevel;var u=o(p.expirationTime<=n);n=t.unstable_now(),\"function\"==typeof u?p.callback=u:p===r(s)&&a(s),_(n)}else a(s);p=r(s)}if(null!==p)var l=!0;else{var f=r(c);null!==f&&A(w,f.startTime-n),l=!1}return l}finally{p=null,d=i,h=!1}}\"undefined\"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var k,S=!1,E=null,C=-1,T=5,M=-1;function N(){return!(t.unstable_now()-M<T)}function P(){if(null!==E){var e=t.unstable_now();M=e;var n=!0;try{n=E(!0,e)}finally{n?k():(S=!1,E=null)}}else S=!1}if(\"function\"==typeof b)k=function(){b(P)};else if(\"undefined\"!=typeof MessageChannel){var z=new MessageChannel,L=z.port2;z.port1.onmessage=P,k=function(){L.postMessage(null)}}else k=function(){y(P,0)};function O(e){E=e,S||(S=!0,k())}function A(e,n){C=y((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){v||h||(v=!0,O(x))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):T=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return d},t.unstable_getFirstCallbackNode=function(){return r(s)},t.unstable_next=function(e){switch(d){case 1:case 2:case 3:var t=3;break;default:t=d}var n=d;d=t;try{return e()}finally{d=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=d;d=e;try{return t()}finally{d=n}},t.unstable_scheduleCallback=function(e,a,i){var o=t.unstable_now();switch(i=\"object\"==typeof i&&null!==i&&\"number\"==typeof(i=i.delay)&&0<i?o+i:o,e){case 1:var u=-1;break;case 2:u=250;break;case 5:u=1073741823;break;case 4:u=1e4;break;default:u=5e3}return e={id:f++,callback:a,priorityLevel:e,startTime:i,expirationTime:u=i+u,sortIndex:-1},i>o?(e.sortIndex=i,n(c,e),null===r(s)&&e===r(c)&&(g?(m(C),C=-1):g=!0,A(w,i-o))):(e.sortIndex=u,n(s,e),v||h||(v=!0,O(x))),e},t.unstable_shouldYield=N,t.unstable_wrapCallback=function(e){var t=d;return function(){var n=d;d=t;try{return e.apply(this,arguments)}finally{d=n}}}},840:(e,t,n)=>{\"use strict\";e.exports=n(53)}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{\"use strict\";var e=n(294),t=n(935);const r=Math.sqrt(50),a=Math.sqrt(10),i=Math.sqrt(2);function o(e,t,n){const u=(t-e)/Math.max(0,n),l=Math.floor(Math.log10(u)),s=u/Math.pow(10,l),c=s>=r?10:s>=a?5:s>=i?2:1;let f,p,d;return l<0?(d=Math.pow(10,-l)/c,f=Math.round(e*d),p=Math.round(t*d),f/d<e&&++f,p/d>t&&--p,d=-d):(d=Math.pow(10,l)*c,f=Math.round(e/d),p=Math.round(t/d),f*d<e&&++f,p*d>t&&--p),p<f&&.5<=n&&n<2?o(e,t,2*n):[f,p,d]}function u(e,t,n){return o(e=+e,t=+t,n=+n)[2]}function l(e,t,n){n=+n;const r=(t=+t)<(e=+e),a=r?u(t,e,n):u(e,t,n);return(r?-1:1)*(a<0?1/-a:a)}function s(e,t){return null==e||null==t?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function c(e,t){return null==e||null==t?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function f(e){let t,n,r;function a(e,r,a=0,i=e.length){if(a<i){if(0!==t(r,r))return i;do{const t=a+i>>>1;n(e[t],r)<0?a=t+1:i=t}while(a<i)}return a}return 2!==e.length?(t=s,n=(t,n)=>s(e(t),n),r=(t,n)=>e(t)-n):(t=e===s||e===c?e:p,n=e,r=e),{left:a,center:function(e,t,n=0,i=e.length){const o=a(e,t,n,i-1);return o>n&&r(e[o-1],t)>-r(e[o],t)?o-1:o},right:function(e,r,a=0,i=e.length){if(a<i){if(0!==t(r,r))return i;do{const t=a+i>>>1;n(e[t],r)<=0?a=t+1:i=t}while(a<i)}return a}}}function p(){return 0}const d=f(s),h=d.right,v=(d.left,f((function(e){return null===e?NaN:+e})).center,h);function g(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function y(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function m(){}var b=.7,_=1/b,w=\"\\\\s*([+-]?\\\\d+)\\\\s*\",x=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",k=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",S=/^#([0-9a-f]{3,8})$/,E=new RegExp(`^rgb\\\\(${w},${w},${w}\\\\)$`),C=new RegExp(`^rgb\\\\(${k},${k},${k}\\\\)$`),T=new RegExp(`^rgba\\\\(${w},${w},${w},${x}\\\\)$`),M=new RegExp(`^rgba\\\\(${k},${k},${k},${x}\\\\)$`),N=new RegExp(`^hsl\\\\(${x},${k},${k}\\\\)$`),P=new RegExp(`^hsla\\\\(${x},${k},${k},${x}\\\\)$`),z={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function L(){return this.rgb().formatHex()}function O(){return this.rgb().formatRgb()}function A(e){var t,n;return e=(e+\"\").trim().toLowerCase(),(t=S.exec(e))?(n=t[1].length,t=parseInt(t[1],16),6===n?F(t):3===n?new j(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?D(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?D(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=E.exec(e))?new j(t[1],t[2],t[3],1):(t=C.exec(e))?new j(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=T.exec(e))?D(t[1],t[2],t[3],t[4]):(t=M.exec(e))?D(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=N.exec(e))?V(t[1],t[2]/100,t[3]/100,1):(t=P.exec(e))?V(t[1],t[2]/100,t[3]/100,t[4]):z.hasOwnProperty(e)?F(z[e]):\"transparent\"===e?new j(NaN,NaN,NaN,0):null}function F(e){return new j(e>>16&255,e>>8&255,255&e,1)}function D(e,t,n,r){return r<=0&&(e=t=n=NaN),new j(e,t,n,r)}function R(e,t,n,r){return 1===arguments.length?((a=e)instanceof m||(a=A(a)),a?new j((a=a.rgb()).r,a.g,a.b,a.opacity):new j):new j(e,t,n,null==r?1:r);var a}function j(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function U(){return`#${W(this.r)}${W(this.g)}${W(this.b)}`}function I(){const e=$(this.opacity);return`${1===e?\"rgb(\":\"rgba(\"}${B(this.r)}, ${B(this.g)}, ${B(this.b)}${1===e?\")\":`, ${e})`}`}function $(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function B(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function W(e){return((e=B(e))<16?\"0\":\"\")+e.toString(16)}function V(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Q(e,t,n,r)}function H(e){if(e instanceof Q)return new Q(e.h,e.s,e.l,e.opacity);if(e instanceof m||(e=A(e)),!e)return new Q;if(e instanceof Q)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,a=Math.min(t,n,r),i=Math.max(t,n,r),o=NaN,u=i-a,l=(i+a)/2;return u?(o=t===i?(n-r)/u+6*(n<r):n===i?(r-t)/u+2:(t-n)/u+4,u/=l<.5?i+a:2-i-a,o*=60):u=l>0&&l<1?0:o,new Q(o,u,l,e.opacity)}function q(e,t,n,r){return 1===arguments.length?H(e):new Q(e,t,n,null==r?1:r)}function Q(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function Y(e){return(e=(e||0)%360)<0?e+360:e}function G(e){return Math.max(0,Math.min(1,e||0))}function K(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}function Z(e,t,n,r,a){var i=e*e,o=i*e;return((1-3*e+3*i-o)*t+(4-6*i+3*o)*n+(1+3*e+3*i-3*o)*r+o*a)/6}g(m,A,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:L,formatHex:L,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return H(this).formatHsl()},formatRgb:O,toString:O}),g(j,R,y(m,{brighter(e){return e=null==e?_:Math.pow(_,e),new j(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?b:Math.pow(b,e),new j(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new j(B(this.r),B(this.g),B(this.b),$(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:U,formatHex:U,formatHex8:function(){return`#${W(this.r)}${W(this.g)}${W(this.b)}${W(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:I,toString:I})),g(Q,q,y(m,{brighter(e){return e=null==e?_:Math.pow(_,e),new Q(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?b:Math.pow(b,e),new Q(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,a=2*n-r;return new j(K(e>=240?e-240:e+120,a,r),K(e,a,r),K(e<120?e+240:e-120,a,r),this.opacity)},clamp(){return new Q(Y(this.h),G(this.s),G(this.l),$(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=$(this.opacity);return`${1===e?\"hsl(\":\"hsla(\"}${Y(this.h)}, ${100*G(this.s)}%, ${100*G(this.l)}%${1===e?\")\":`, ${e})`}`}}));const X=e=>()=>e;function J(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):X(isNaN(e)?t:e)}const ee=function e(t){var n=function(e){return 1==(e=+e)?J:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):X(isNaN(t)?n:t)}}(t);function r(e,t){var r=n((e=R(e)).r,(t=R(t)).r),a=n(e.g,t.g),i=n(e.b,t.b),o=J(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=a(t),e.b=i(t),e.opacity=o(t),e+\"\"}}return r.gamma=e,r}(1);function te(e){return function(t){var n,r,a=t.length,i=new Array(a),o=new Array(a),u=new Array(a);for(n=0;n<a;++n)r=R(t[n]),i[n]=r.r||0,o[n]=r.g||0,u[n]=r.b||0;return i=e(i),o=e(o),u=e(u),r.opacity=1,function(e){return r.r=i(e),r.g=o(e),r.b=u(e),r+\"\"}}}function ne(e,t){var n,r=t?t.length:0,a=e?Math.min(r,e.length):0,i=new Array(a),o=new Array(r);for(n=0;n<a;++n)i[n]=ce(e[n],t[n]);for(;n<r;++n)o[n]=t[n];return function(e){for(n=0;n<a;++n)o[n]=i[n](e);return o}}function re(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function ae(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function ie(e,t){var n,r={},a={};for(n in null!==e&&\"object\"==typeof e||(e={}),null!==t&&\"object\"==typeof t||(t={}),t)n in e?r[n]=ce(e[n],t[n]):a[n]=t[n];return function(e){for(n in r)a[n]=r[n](e);return a}}te((function(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),a=e[r],i=e[r+1],o=r>0?e[r-1]:2*a-i,u=r<t-1?e[r+2]:2*i-a;return Z((n-r/t)*t,o,a,i,u)}})),te((function(e){var t=e.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*t),a=e[(r+t-1)%t],i=e[r%t],o=e[(r+1)%t],u=e[(r+2)%t];return Z((n-r/t)*t,a,i,o,u)}}));var oe=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,ue=new RegExp(oe.source,\"g\");function le(e,t){var n,r,a,i=oe.lastIndex=ue.lastIndex=0,o=-1,u=[],l=[];for(e+=\"\",t+=\"\";(n=oe.exec(e))&&(r=ue.exec(t));)(a=r.index)>i&&(a=t.slice(i,a),u[o]?u[o]+=a:u[++o]=a),(n=n[0])===(r=r[0])?u[o]?u[o]+=r:u[++o]=r:(u[++o]=null,l.push({i:o,x:ae(n,r)})),i=ue.lastIndex;return i<t.length&&(a=t.slice(i),u[o]?u[o]+=a:u[++o]=a),u.length<2?l[0]?function(e){return function(t){return e(t)+\"\"}}(l[0].x):function(e){return function(){return e}}(t):(t=l.length,function(e){for(var n,r=0;r<t;++r)u[(n=l[r]).i]=n.x(e);return u.join(\"\")})}function se(e,t){t||(t=[]);var n,r=e?Math.min(t.length,e.length):0,a=t.slice();return function(i){for(n=0;n<r;++n)a[n]=e[n]*(1-i)+t[n]*i;return a}}function ce(e,t){var n,r,a=typeof t;return null==t||\"boolean\"===a?X(t):(\"number\"===a?ae:\"string\"===a?(n=A(t))?(t=n,ee):le:t instanceof A?ee:t instanceof Date?re:(r=t,!ArrayBuffer.isView(r)||r instanceof DataView?Array.isArray(t)?ne:\"function\"!=typeof t.valueOf&&\"function\"!=typeof t.toString||isNaN(t)?ie:ae:se))(e,t)}function fe(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}function pe(e){return+e}var de=[0,1];function he(e){return e}function ve(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:(n=isNaN(t)?NaN:.5,function(){return n});var n}function ge(e,t,n){var r=e[0],a=e[1],i=t[0],o=t[1];return a<r?(r=ve(a,r),i=n(o,i)):(r=ve(r,a),i=n(i,o)),function(e){return i(r(e))}}function ye(e,t,n){var r=Math.min(e.length,t.length)-1,a=new Array(r),i=new Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)a[o]=ve(e[o],e[o+1]),i[o]=n(t[o],t[o+1]);return function(t){var n=v(e,t,1,r)-1;return i[n](a[n](t))}}function me(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function be(){return function(){var e,t,n,r,a,i,o=de,u=de,l=ce,s=he;function c(){var e,t,n,l=Math.min(o.length,u.length);return s!==he&&(e=o[0],t=o[l-1],e>t&&(n=e,e=t,t=n),s=function(n){return Math.max(e,Math.min(t,n))}),r=l>2?ye:ge,a=i=null,f}function f(t){return null==t||isNaN(t=+t)?n:(a||(a=r(o.map(e),u,l)))(e(s(t)))}return f.invert=function(n){return s(t((i||(i=r(u,o.map(e),ae)))(n)))},f.domain=function(e){return arguments.length?(o=Array.from(e,pe),c()):o.slice()},f.range=function(e){return arguments.length?(u=Array.from(e),c()):u.slice()},f.rangeRound=function(e){return u=Array.from(e),l=fe,c()},f.clamp=function(e){return arguments.length?(s=!!e||he,c()):s!==he},f.interpolate=function(e){return arguments.length?(l=e,c()):l},f.unknown=function(e){return arguments.length?(n=e,f):n},function(n,r){return e=n,t=r,c()}}()(he,he)}function _e(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}var we,xe=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function ke(e){if(!(t=xe.exec(e)))throw new Error(\"invalid format: \"+e);var t;return new Se({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Se(e){this.fill=void 0===e.fill?\" \":e.fill+\"\",this.align=void 0===e.align?\">\":e.align+\"\",this.sign=void 0===e.sign?\"-\":e.sign+\"\",this.symbol=void 0===e.symbol?\"\":e.symbol+\"\",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?\"\":e.type+\"\"}function Ee(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(\"e\"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Ce(e){return(e=Ee(Math.abs(e)))?e[1]:NaN}function Te(e,t){var n=Ee(e,t);if(!n)return e+\"\";var r=n[0],a=n[1];return a<0?\"0.\"+new Array(-a).join(\"0\")+r:r.length>a+1?r.slice(0,a+1)+\".\"+r.slice(a+1):r+new Array(a-r.length+2).join(\"0\")}ke.prototype=Se.prototype,Se.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(void 0===this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(void 0===this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};const Me={\"%\":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+\"\",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(\"en\").replace(/,/g,\"\"):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Te(100*e,t),r:Te,s:function(e,t){var n=Ee(e,t);if(!n)return e+\"\";var r=n[0],a=n[1],i=a-(we=3*Math.max(-8,Math.min(8,Math.floor(a/3))))+1,o=r.length;return i===o?r:i>o?r+new Array(i-o+1).join(\"0\"):i>0?r.slice(0,i)+\".\"+r.slice(i):\"0.\"+new Array(1-i).join(\"0\")+Ee(e,Math.max(0,t+i-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Ne(e){return e}var Pe,ze,Le,Oe=Array.prototype.map,Ae=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function Fe(e){var t=e.domain;return e.ticks=function(e){var n=t();return function(e,t,n){if(!((n=+n)>0))return[];if((e=+e)==(t=+t))return[e];const r=t<e,[a,i,u]=r?o(t,e,n):o(e,t,n);if(!(i>=a))return[];const l=i-a+1,s=new Array(l);if(r)if(u<0)for(let e=0;e<l;++e)s[e]=(i-e)/-u;else for(let e=0;e<l;++e)s[e]=(i-e)*u;else if(u<0)for(let e=0;e<l;++e)s[e]=(a+e)/-u;else for(let e=0;e<l;++e)s[e]=(a+e)*u;return s}(n[0],n[n.length-1],null==e?10:e)},e.tickFormat=function(e,n){var r=t();return function(e,t,n,r){var a,i=l(e,t,n);switch((r=ke(null==r?\",f\":r)).type){case\"s\":var o=Math.max(Math.abs(e),Math.abs(t));return null!=r.precision||isNaN(a=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Ce(t)/3)))-Ce(Math.abs(e)))}(i,o))||(r.precision=a),Le(r,o);case\"\":case\"e\":case\"g\":case\"p\":case\"r\":null!=r.precision||isNaN(a=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Ce(t)-Ce(e))+1}(i,Math.max(Math.abs(e),Math.abs(t))))||(r.precision=a-(\"e\"===r.type));break;case\"f\":case\"%\":null!=r.precision||isNaN(a=function(e){return Math.max(0,-Ce(Math.abs(e)))}(i))||(r.precision=a-2*(\"%\"===r.type))}return ze(r)}(r[0],r[r.length-1],null==e?10:e,n)},e.nice=function(n){null==n&&(n=10);var r,a,i=t(),o=0,l=i.length-1,s=i[o],c=i[l],f=10;for(c<s&&(a=s,s=c,c=a,a=o,o=l,l=a);f-- >0;){if((a=u(s,c,n))===r)return i[o]=s,i[l]=c,t(i);if(a>0)s=Math.floor(s/a)*a,c=Math.ceil(c/a)*a;else{if(!(a<0))break;s=Math.ceil(s*a)/a,c=Math.floor(c*a)/a}r=a}return e},e}function De(){var e=be();return e.copy=function(){return me(e,De())},_e.apply(e,arguments),Fe(e)}Pe=function(e){var t,n,r=void 0===e.grouping||void 0===e.thousands?Ne:(t=Oe.call(e.grouping,Number),n=e.thousands+\"\",function(e,r){for(var a=e.length,i=[],o=0,u=t[0],l=0;a>0&&u>0&&(l+u+1>r&&(u=Math.max(1,r-l)),i.push(e.substring(a-=u,a+u)),!((l+=u+1)>r));)u=t[o=(o+1)%t.length];return i.reverse().join(n)}),a=void 0===e.currency?\"\":e.currency[0]+\"\",i=void 0===e.currency?\"\":e.currency[1]+\"\",o=void 0===e.decimal?\".\":e.decimal+\"\",u=void 0===e.numerals?Ne:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(Oe.call(e.numerals,String)),l=void 0===e.percent?\"%\":e.percent+\"\",s=void 0===e.minus?\"−\":e.minus+\"\",c=void 0===e.nan?\"NaN\":e.nan+\"\";function f(e){var t=(e=ke(e)).fill,n=e.align,f=e.sign,p=e.symbol,d=e.zero,h=e.width,v=e.comma,g=e.precision,y=e.trim,m=e.type;\"n\"===m?(v=!0,m=\"g\"):Me[m]||(void 0===g&&(g=12),y=!0,m=\"g\"),(d||\"0\"===t&&\"=\"===n)&&(d=!0,t=\"0\",n=\"=\");var b=\"$\"===p?a:\"#\"===p&&/[boxX]/.test(m)?\"0\"+m.toLowerCase():\"\",_=\"$\"===p?i:/[%p]/.test(m)?l:\"\",w=Me[m],x=/[defgprs%]/.test(m);function k(e){var a,i,l,p=b,k=_;if(\"c\"===m)k=w(e)+k,e=\"\";else{var S=(e=+e)<0||1/e<0;if(e=isNaN(e)?c:w(Math.abs(e),g),y&&(e=function(e){e:for(var t,n=e.length,r=1,a=-1;r<n;++r)switch(e[r]){case\".\":a=t=r;break;case\"0\":0===a&&(a=r),t=r;break;default:if(!+e[r])break e;a>0&&(a=0)}return a>0?e.slice(0,a)+e.slice(t+1):e}(e)),S&&0==+e&&\"+\"!==f&&(S=!1),p=(S?\"(\"===f?f:s:\"-\"===f||\"(\"===f?\"\":f)+p,k=(\"s\"===m?Ae[8+we/3]:\"\")+k+(S&&\"(\"===f?\")\":\"\"),x)for(a=-1,i=e.length;++a<i;)if(48>(l=e.charCodeAt(a))||l>57){k=(46===l?o+e.slice(a+1):e.slice(a))+k,e=e.slice(0,a);break}}v&&!d&&(e=r(e,1/0));var E=p.length+e.length+k.length,C=E<h?new Array(h-E+1).join(t):\"\";switch(v&&d&&(e=r(C+e,C.length?h-k.length:1/0),C=\"\"),n){case\"<\":e=p+e+k+C;break;case\"=\":e=p+C+e+k;break;case\"^\":e=C.slice(0,E=C.length>>1)+p+e+k+C.slice(E);break;default:e=C+p+e+k}return u(e)}return g=void 0===g?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return e+\"\"},k}return{format:f,formatPrefix:function(e,t){var n=f(((e=ke(e)).type=\"f\",e)),r=3*Math.max(-8,Math.min(8,Math.floor(Ce(t)/3))),a=Math.pow(10,-r),i=Ae[8+r/3];return function(e){return n(a*e)+i}}}}({thousands:\",\",grouping:[3],currency:[\"$\",\"\"]}),ze=Pe.format,Le=Pe.formatPrefix;var Re=n(486);const je={colors:{RdBu:[\"rgb(255, 13, 87)\",\"rgb(30, 136, 229)\"],GnPR:[\"rgb(24, 196, 93)\",\"rgb(124, 82, 255)\"],CyPU:[\"#0099C6\",\"#990099\"],PkYg:[\"#DD4477\",\"#66AA00\"],DrDb:[\"#B82E2E\",\"#316395\"],LpLb:[\"#994499\",\"#22AA99\"],YlDp:[\"#AAAA11\",\"#6633CC\"],OrId:[\"#E67300\",\"#3E0099\"]},gray:\"#777\"};function Ue(e){return Ue=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Ue(e)}function Ie(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if(\"object\"!==Ue(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,\"string\");if(\"object\"!==Ue(r))return r;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(r.key),\"symbol\"===Ue(a)?a:String(a)),r)}var a}function $e(e,t){return $e=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},$e(e,t)}function Be(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function We(e){return We=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},We(e)}var Ve=function(t){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&$e(e,t)}(u,t);var n,r,a,i,o=(a=u,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=We(a);if(i){var n=We(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===Ue(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return Be(e)}(this,e)});function u(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,u),(e=o.call(this)).width=100,window.lastSimpleListInstance=Be(e),e.effectFormat=ze(\".2\"),e}return n=u,(r=[{key:\"render\",value:function(){var t=this,n=void 0;\"string\"==typeof this.props.plot_cmap?this.props.plot_cmap in je.colors?n=je.colors[this.props.plot_cmap]:(console.log(\"Invalid color map name, reverting to default.\"),n=je.colors.RdBu):Array.isArray(this.props.plot_cmap)&&(n=this.props.plot_cmap),console.log(this.props.features,this.props.features),this.scale=De().domain([0,(0,Re.max)((0,Re.map)(this.props.features,(function(e){return Math.abs(e.effect)})))]).range([0,this.width]);var r=(0,Re.reverse)((0,Re.sortBy)(Object.keys(this.props.features),(function(e){return Math.abs(t.props.features[e].effect)}))).map((function(r){var a,i,o=t.props.features[r],u=t.props.featureNames[r],l={width:t.scale(Math.abs(o.effect)),height:\"20px\",background:o.effect<0?n[0]:n[1],display:\"inline-block\"},s={lineHeight:\"20px\",display:\"inline-block\",width:t.width+40,verticalAlign:\"top\",marginRight:\"5px\",textAlign:\"right\"},c={lineHeight:\"20px\",display:\"inline-block\",width:t.width+40,verticalAlign:\"top\",marginLeft:\"5px\"};return o.effect<0?(i=e.createElement(\"span\",{style:c},u),s.width=40+t.width-t.scale(Math.abs(o.effect)),s.textAlign=\"right\",s.color=\"#999\",s.fontSize=\"13px\",a=e.createElement(\"span\",{style:s},t.effectFormat(o.effect))):(s.textAlign=\"right\",a=e.createElement(\"span\",{style:s},u),c.width=40,c.textAlign=\"left\",c.color=\"#999\",c.fontSize=\"13px\",i=e.createElement(\"span\",{style:c},t.effectFormat(o.effect))),e.createElement(\"div\",{key:r,style:{marginTop:\"2px\"}},a,e.createElement(\"div\",{style:l}),i)}));return e.createElement(\"span\",null,r)}}])&&Ie(n.prototype,r),Object.defineProperty(n,\"prototype\",{writable:!1}),u}(e.Component);Ve.defaultProps={plot_cmap:\"RdBu\"};const He=Ve;function qe(){}function Qe(e){return null==e?qe:function(){return this.querySelector(e)}}function Ye(){return[]}function Ge(e){return function(t){return t.matches(e)}}var Ke=Array.prototype.find;function Ze(){return this.firstElementChild}var Xe=Array.prototype.filter;function Je(){return Array.from(this.children)}function et(e){return new Array(e.length)}function tt(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function nt(e,t,n,r,a,i){for(var o,u=0,l=t.length,s=i.length;u<s;++u)(o=t[u])?(o.__data__=i[u],r[u]=o):n[u]=new tt(e,i[u]);for(;u<l;++u)(o=t[u])&&(a[u]=o)}function rt(e,t,n,r,a,i,o){var u,l,s,c=new Map,f=t.length,p=i.length,d=new Array(f);for(u=0;u<f;++u)(l=t[u])&&(d[u]=s=o.call(l,l.__data__,u,t)+\"\",c.has(s)?a[u]=l:c.set(s,l));for(u=0;u<p;++u)s=o.call(e,i[u],u,i)+\"\",(l=c.get(s))?(r[u]=l,l.__data__=i[u],c.delete(s)):n[u]=new tt(e,i[u]);for(u=0;u<f;++u)(l=t[u])&&c.get(d[u])===l&&(a[u]=l)}function at(e){return e.__data__}function it(e){return\"object\"==typeof e&&\"length\"in e?e:Array.from(e)}function ot(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}tt.prototype={constructor:tt,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};var ut=\"http://www.w3.org/1999/xhtml\";const lt={svg:\"http://www.w3.org/2000/svg\",xhtml:ut,xlink:\"http://www.w3.org/1999/xlink\",xml:\"http://www.w3.org/XML/1998/namespace\",xmlns:\"http://www.w3.org/2000/xmlns/\"};function st(e){var t=e+=\"\",n=t.indexOf(\":\");return n>=0&&\"xmlns\"!==(t=e.slice(0,n))&&(e=e.slice(n+1)),lt.hasOwnProperty(t)?{space:lt[t],local:e}:e}function ct(e){return function(){this.removeAttribute(e)}}function ft(e){return function(){this.removeAttributeNS(e.space,e.local)}}function pt(e,t){return function(){this.setAttribute(e,t)}}function dt(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function ht(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttribute(e):this.setAttribute(e,n)}}function vt(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function gt(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function yt(e){return function(){this.style.removeProperty(e)}}function mt(e,t,n){return function(){this.style.setProperty(e,t,n)}}function bt(e,t,n){return function(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function _t(e){return function(){delete this[e]}}function wt(e,t){return function(){this[e]=t}}function xt(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}function kt(e){return e.trim().split(/^|\\s+/)}function St(e){return e.classList||new Et(e)}function Et(e){this._node=e,this._names=kt(e.getAttribute(\"class\")||\"\")}function Ct(e,t){for(var n=St(e),r=-1,a=t.length;++r<a;)n.add(t[r])}function Tt(e,t){for(var n=St(e),r=-1,a=t.length;++r<a;)n.remove(t[r])}function Mt(e){return function(){Ct(this,e)}}function Nt(e){return function(){Tt(this,e)}}function Pt(e,t){return function(){(t.apply(this,arguments)?Ct:Tt)(this,e)}}function zt(){this.textContent=\"\"}function Lt(e){return function(){this.textContent=e}}function Ot(e){return function(){var t=e.apply(this,arguments);this.textContent=null==t?\"\":t}}function At(){this.innerHTML=\"\"}function Ft(e){return function(){this.innerHTML=e}}function Dt(e){return function(){var t=e.apply(this,arguments);this.innerHTML=null==t?\"\":t}}function Rt(){this.nextSibling&&this.parentNode.appendChild(this)}function jt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Ut(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===ut&&t.documentElement.namespaceURI===ut?t.createElement(e):t.createElementNS(n,e)}}function It(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function $t(e){var t=st(e);return(t.local?It:Ut)(t)}function Bt(){return null}function Wt(){var e=this.parentNode;e&&e.removeChild(this)}function Vt(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Ht(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function qt(e){return function(){var t=this.__on;if(t){for(var n,r=0,a=-1,i=t.length;r<i;++r)n=t[r],e.type&&n.type!==e.type||n.name!==e.name?t[++a]=n:this.removeEventListener(n.type,n.listener,n.options);++a?t.length=a:delete this.__on}}}function Qt(e,t,n){return function(){var r,a=this.__on,i=function(e){return function(t){e.call(this,t,this.__data__)}}(t);if(a)for(var o=0,u=a.length;o<u;++o)if((r=a[o]).type===e.type&&r.name===e.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=i,r.options=n),void(r.value=t);this.addEventListener(e.type,i,n),r={type:e.type,name:e.name,value:t,listener:i,options:n},a?a.push(r):this.__on=[r]}}function Yt(e,t,n){var r=gt(e),a=r.CustomEvent;\"function\"==typeof a?a=new a(t,n):(a=r.document.createEvent(\"Event\"),n?(a.initEvent(t,n.bubbles,n.cancelable),a.detail=n.detail):a.initEvent(t,!1,!1)),e.dispatchEvent(a)}function Gt(e,t){return function(){return Yt(this,e,t)}}function Kt(e,t){return function(){return Yt(this,e,t.apply(this,arguments))}}Et.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(\"class\",this._names.join(\" \")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(\"class\",this._names.join(\" \")))},contains:function(e){return this._names.indexOf(e)>=0}};var Zt=[null];function Xt(e,t){this._groups=e,this._parents=t}function Jt(e){return\"string\"==typeof e?new Xt([[document.querySelector(e)]],[document.documentElement]):new Xt([[e]],Zt)}function en(e){return e}Xt.prototype=function(){return new Xt([[document.documentElement]],Zt)}.prototype={constructor:Xt,select:function(e){\"function\"!=typeof e&&(e=Qe(e));for(var t=this._groups,n=t.length,r=new Array(n),a=0;a<n;++a)for(var i,o,u=t[a],l=u.length,s=r[a]=new Array(l),c=0;c<l;++c)(i=u[c])&&(o=e.call(i,i.__data__,c,u))&&(\"__data__\"in i&&(o.__data__=i.__data__),s[c]=o);return new Xt(r,this._parents)},selectAll:function(e){e=\"function\"==typeof e?function(e){return function(){return null==(t=e.apply(this,arguments))?[]:Array.isArray(t)?t:Array.from(t);var t}}(e):function(e){return null==e?Ye:function(){return this.querySelectorAll(e)}}(e);for(var t=this._groups,n=t.length,r=[],a=[],i=0;i<n;++i)for(var o,u=t[i],l=u.length,s=0;s<l;++s)(o=u[s])&&(r.push(e.call(o,o.__data__,s,u)),a.push(o));return new Xt(r,a)},selectChild:function(e){return this.select(null==e?Ze:function(e){return function(){return Ke.call(this.children,e)}}(\"function\"==typeof e?e:Ge(e)))},selectChildren:function(e){return this.selectAll(null==e?Je:function(e){return function(){return Xe.call(this.children,e)}}(\"function\"==typeof e?e:Ge(e)))},filter:function(e){\"function\"!=typeof e&&(e=function(e){return function(){return this.matches(e)}}(e));for(var t=this._groups,n=t.length,r=new Array(n),a=0;a<n;++a)for(var i,o=t[a],u=o.length,l=r[a]=[],s=0;s<u;++s)(i=o[s])&&e.call(i,i.__data__,s,o)&&l.push(i);return new Xt(r,this._parents)},data:function(e,t){if(!arguments.length)return Array.from(this,at);var n,r=t?rt:nt,a=this._parents,i=this._groups;\"function\"!=typeof e&&(n=e,e=function(){return n});for(var o=i.length,u=new Array(o),l=new Array(o),s=new Array(o),c=0;c<o;++c){var f=a[c],p=i[c],d=p.length,h=it(e.call(f,f&&f.__data__,c,a)),v=h.length,g=l[c]=new Array(v),y=u[c]=new Array(v);r(f,p,g,y,s[c]=new Array(d),h,t);for(var m,b,_=0,w=0;_<v;++_)if(m=g[_]){for(_>=w&&(w=_+1);!(b=y[w])&&++w<v;);m._next=b||null}}return(u=new Xt(u,a))._enter=l,u._exit=s,u},enter:function(){return new Xt(this._enter||this._groups.map(et),this._parents)},exit:function(){return new Xt(this._exit||this._groups.map(et),this._parents)},join:function(e,t,n){var r=this.enter(),a=this,i=this.exit();return\"function\"==typeof e?(r=e(r))&&(r=r.selection()):r=r.append(e+\"\"),null!=t&&(a=t(a))&&(a=a.selection()),null==n?i.remove():n(i),r&&a?r.merge(a).order():a},merge:function(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,a=n.length,i=r.length,o=Math.min(a,i),u=new Array(a),l=0;l<o;++l)for(var s,c=n[l],f=r[l],p=c.length,d=u[l]=new Array(p),h=0;h<p;++h)(s=c[h]||f[h])&&(d[h]=s);for(;l<a;++l)u[l]=n[l];return new Xt(u,this._parents)},selection:function(){return this},order:function(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r,a=e[t],i=a.length-1,o=a[i];--i>=0;)(r=a[i])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(e){function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}e||(e=ot);for(var n=this._groups,r=n.length,a=new Array(r),i=0;i<r;++i){for(var o,u=n[i],l=u.length,s=a[i]=new Array(l),c=0;c<l;++c)(o=u[c])&&(s[c]=o);s.sort(t)}return new Xt(a,this._parents).order()},call:function(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],a=0,i=r.length;a<i;++a){var o=r[a];if(o)return o}return null},size:function(){let e=0;for(const t of this)++e;return e},empty:function(){return!this.node()},each:function(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var a,i=t[n],o=0,u=i.length;o<u;++o)(a=i[o])&&e.call(a,a.__data__,o,i);return this},attr:function(e,t){var n=st(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==t?n.local?ft:ct:\"function\"==typeof t?n.local?vt:ht:n.local?dt:pt)(n,t))},style:function(e,t,n){return arguments.length>1?this.each((null==t?yt:\"function\"==typeof t?bt:mt)(e,t,null==n?\"\":n)):function(e,t){return e.style.getPropertyValue(t)||gt(e).getComputedStyle(e,null).getPropertyValue(t)}(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?_t:\"function\"==typeof t?xt:wt)(e,t)):this.node()[e]},classed:function(e,t){var n=kt(e+\"\");if(arguments.length<2){for(var r=St(this.node()),a=-1,i=n.length;++a<i;)if(!r.contains(n[a]))return!1;return!0}return this.each((\"function\"==typeof t?Pt:t?Mt:Nt)(n,t))},text:function(e){return arguments.length?this.each(null==e?zt:(\"function\"==typeof e?Ot:Lt)(e)):this.node().textContent},html:function(e){return arguments.length?this.each(null==e?At:(\"function\"==typeof e?Dt:Ft)(e)):this.node().innerHTML},raise:function(){return this.each(Rt)},lower:function(){return this.each(jt)},append:function(e){var t=\"function\"==typeof e?e:$t(e);return this.select((function(){return this.appendChild(t.apply(this,arguments))}))},insert:function(e,t){var n=\"function\"==typeof e?e:$t(e),r=null==t?Bt:\"function\"==typeof t?t:Qe(t);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(Wt)},clone:function(e){return this.select(e?Ht:Vt)},datum:function(e){return arguments.length?this.property(\"__data__\",e):this.node().__data__},on:function(e,t,n){var r,a,i=function(e){return e.trim().split(/^|\\s+/).map((function(e){var t=\"\",n=e.indexOf(\".\");return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}}))}(e+\"\"),o=i.length;if(!(arguments.length<2)){for(u=t?Qt:qt,r=0;r<o;++r)this.each(u(i[r],t,n));return this}var u=this.node().__on;if(u)for(var l,s=0,c=u.length;s<c;++s)for(r=0,l=u[s];r<o;++r)if((a=i[r]).type===l.type&&a.name===l.name)return l.value},dispatch:function(e,t){return this.each((\"function\"==typeof t?Kt:Gt)(e,t))},[Symbol.iterator]:function*(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r,a=e[t],i=0,o=a.length;i<o;++i)(r=a[i])&&(yield r)}};var tn=1,nn=2,rn=3,an=4,on=1e-6;function un(e){return\"translate(\"+e+\",0)\"}function ln(e){return\"translate(0,\"+e+\")\"}function sn(e){return t=>+e(t)}function cn(e,t){return t=Math.max(0,e.bandwidth()-2*t)/2,e.round()&&(t=Math.round(t)),n=>+e(n)+t}function fn(){return!this.__axis}function pn(e,t){var n=[],r=null,a=null,i=6,o=6,u=3,l=\"undefined\"!=typeof window&&window.devicePixelRatio>1?0:.5,s=e===tn||e===an?-1:1,c=e===an||e===nn?\"x\":\"y\",f=e===tn||e===rn?un:ln;function p(p){var d=null==r?t.ticks?t.ticks.apply(t,n):t.domain():r,h=null==a?t.tickFormat?t.tickFormat.apply(t,n):en:a,v=Math.max(i,0)+u,g=t.range(),y=+g[0]+l,m=+g[g.length-1]+l,b=(t.bandwidth?cn:sn)(t.copy(),l),_=p.selection?p.selection():p,w=_.selectAll(\".domain\").data([null]),x=_.selectAll(\".tick\").data(d,t).order(),k=x.exit(),S=x.enter().append(\"g\").attr(\"class\",\"tick\"),E=x.select(\"line\"),C=x.select(\"text\");w=w.merge(w.enter().insert(\"path\",\".tick\").attr(\"class\",\"domain\").attr(\"stroke\",\"currentColor\")),x=x.merge(S),E=E.merge(S.append(\"line\").attr(\"stroke\",\"currentColor\").attr(c+\"2\",s*i)),C=C.merge(S.append(\"text\").attr(\"fill\",\"currentColor\").attr(c,s*v).attr(\"dy\",e===tn?\"0em\":e===rn?\"0.71em\":\"0.32em\")),p!==_&&(w=w.transition(p),x=x.transition(p),E=E.transition(p),C=C.transition(p),k=k.transition(p).attr(\"opacity\",on).attr(\"transform\",(function(e){return isFinite(e=b(e))?f(e+l):this.getAttribute(\"transform\")})),S.attr(\"opacity\",on).attr(\"transform\",(function(e){var t=this.parentNode.__axis;return f((t&&isFinite(t=t(e))?t:b(e))+l)}))),k.remove(),w.attr(\"d\",e===an||e===nn?o?\"M\"+s*o+\",\"+y+\"H\"+l+\"V\"+m+\"H\"+s*o:\"M\"+l+\",\"+y+\"V\"+m:o?\"M\"+y+\",\"+s*o+\"V\"+l+\"H\"+m+\"V\"+s*o:\"M\"+y+\",\"+l+\"H\"+m),x.attr(\"opacity\",1).attr(\"transform\",(function(e){return f(b(e)+l)})),E.attr(c+\"2\",s*i),C.attr(c,s*v).text(h),_.filter(fn).attr(\"fill\",\"none\").attr(\"font-size\",10).attr(\"font-family\",\"sans-serif\").attr(\"text-anchor\",e===nn?\"start\":e===an?\"end\":\"middle\"),_.each((function(){this.__axis=b}))}return p.scale=function(e){return arguments.length?(t=e,p):t},p.ticks=function(){return n=Array.from(arguments),p},p.tickArguments=function(e){return arguments.length?(n=null==e?[]:Array.from(e),p):n.slice()},p.tickValues=function(e){return arguments.length?(r=null==e?null:Array.from(e),p):r&&r.slice()},p.tickFormat=function(e){return arguments.length?(a=e,p):a},p.tickSize=function(e){return arguments.length?(i=o=+e,p):i},p.tickSizeInner=function(e){return arguments.length?(i=+e,p):i},p.tickSizeOuter=function(e){return arguments.length?(o=+e,p):o},p.tickPadding=function(e){return arguments.length?(u=+e,p):u},p.offset=function(e){return arguments.length?(l=+e,p):l},p}function dn(e){return pn(rn,e)}function hn(e){return function(){return e}}function vn(e){this._context=e}function gn(e){return new vn(e)}Array.prototype.slice,vn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};const yn=Math.PI,mn=2*yn,bn=1e-6,_n=mn-bn;function wn(e){this._+=e[0];for(let t=1,n=e.length;t<n;++t)this._+=arguments[t]+e[t]}class xn{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._=\"\",this._append=null==e?wn:function(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return wn;const n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=Math.round(arguments[t]*n)/n+e[t]}}(e)}moveTo(e,t){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,t){this._append`L${this._x1=+e},${this._y1=+t}`}quadraticCurveTo(e,t,n,r){this._append`Q${+e},${+t},${this._x1=+n},${this._y1=+r}`}bezierCurveTo(e,t,n,r,a,i){this._append`C${+e},${+t},${+n},${+r},${this._x1=+a},${this._y1=+i}`}arcTo(e,t,n,r,a){if(e=+e,t=+t,n=+n,r=+r,(a=+a)<0)throw new Error(`negative radius: ${a}`);let i=this._x1,o=this._y1,u=n-e,l=r-t,s=i-e,c=o-t,f=s*s+c*c;if(null===this._x1)this._append`M${this._x1=e},${this._y1=t}`;else if(f>bn)if(Math.abs(c*u-l*s)>bn&&a){let p=n-i,d=r-o,h=u*u+l*l,v=p*p+d*d,g=Math.sqrt(h),y=Math.sqrt(f),m=a*Math.tan((yn-Math.acos((h+f-v)/(2*g*y)))/2),b=m/y,_=m/g;Math.abs(b-1)>bn&&this._append`L${e+b*s},${t+b*c}`,this._append`A${a},${a},0,0,${+(c*p>s*d)},${this._x1=e+_*u},${this._y1=t+_*l}`}else this._append`L${this._x1=e},${this._y1=t}`}arc(e,t,n,r,a,i){if(e=+e,t=+t,i=!!i,(n=+n)<0)throw new Error(`negative radius: ${n}`);let o=n*Math.cos(r),u=n*Math.sin(r),l=e+o,s=t+u,c=1^i,f=i?r-a:a-r;null===this._x1?this._append`M${l},${s}`:(Math.abs(this._x1-l)>bn||Math.abs(this._y1-s)>bn)&&this._append`L${l},${s}`,n&&(f<0&&(f=f%mn+mn),f>_n?this._append`A${n},${n},0,1,${c},${e-o},${t-u}A${n},${n},0,1,${c},${this._x1=l},${this._y1=s}`:f>bn&&this._append`A${n},${n},0,${+(f>=yn)},${c},${this._x1=e+n*Math.cos(a)},${this._y1=t+n*Math.sin(a)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}}function kn(e){return e[0]}function Sn(e){return e[1]}function En(e,t){var n=hn(!0),r=null,a=gn,i=null,o=function(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(null==n)t=null;else{const e=Math.floor(n);if(!(e>=0))throw new RangeError(`invalid digits: ${n}`);t=e}return e},()=>new xn(t)}(u);function u(u){var l,s,c,f=(u=function(e){return\"object\"==typeof e&&\"length\"in e?e:Array.from(e)}(u)).length,p=!1;for(null==r&&(i=a(c=o())),l=0;l<=f;++l)!(l<f&&n(s=u[l],l,u))===p&&((p=!p)?i.lineStart():i.lineEnd()),p&&i.point(+e(s,l,u),+t(s,l,u));if(c)return i=null,c+\"\"||null}return e=\"function\"==typeof e?e:void 0===e?kn:hn(e),t=\"function\"==typeof t?t:void 0===t?Sn:hn(t),u.x=function(t){return arguments.length?(e=\"function\"==typeof t?t:hn(+t),u):e},u.y=function(e){return arguments.length?(t=\"function\"==typeof e?e:hn(+e),u):t},u.defined=function(e){return arguments.length?(n=\"function\"==typeof e?e:hn(!!e),u):n},u.curve=function(e){return arguments.length?(a=e,null!=r&&(i=a(r)),u):a},u.context=function(e){return arguments.length?(null==e?r=i=null:i=a(r=e),u):r},u}function Cn(e){return Cn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Cn(e)}function Tn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if(\"object\"!==Cn(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,\"string\");if(\"object\"!==Cn(r))return r;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(r.key),\"symbol\"===Cn(a)?a:String(a)),r)}var a}function Mn(e,t){return Mn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Mn(e,t)}function Nn(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function Pn(e){return Pn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Pn(e)}var zn=function(t){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&Mn(e,t)}(u,t);var n,r,a,i,o=(a=u,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=Pn(a);if(i){var n=Pn(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===Cn(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return Nn(e)}(this,e)});function u(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,u),e=o.call(this),window.lastAdditiveForceVisualizer=Nn(e),e.effectFormat=ze(\".2\"),e.redraw=(0,Re.debounce)((function(){return e.draw()}),200),e}return n=u,(r=[{key:\"componentDidMount\",value:function(){var e=this;this.mainGroup=this.svg.append(\"g\"),this.axisElement=this.mainGroup.append(\"g\").attr(\"transform\",\"translate(0,35)\").attr(\"class\",\"force-bar-axis\"),this.onTopGroup=this.svg.append(\"g\"),this.baseValueTitle=this.svg.append(\"text\"),this.joinPointLine=this.svg.append(\"line\"),this.joinPointLabelOutline=this.svg.append(\"text\"),this.joinPointLabel=this.svg.append(\"text\"),this.joinPointTitleLeft=this.svg.append(\"text\"),this.joinPointTitleLeftArrow=this.svg.append(\"text\"),this.joinPointTitle=this.svg.append(\"text\"),this.joinPointTitleRightArrow=this.svg.append(\"text\"),this.joinPointTitleRight=this.svg.append(\"text\"),this.hoverLabelBacking=this.svg.append(\"text\").attr(\"x\",10).attr(\"y\",20).attr(\"text-anchor\",\"middle\").attr(\"font-size\",12).attr(\"stroke\",\"#fff\").attr(\"fill\",\"#fff\").attr(\"stroke-width\",\"4\").attr(\"stroke-linejoin\",\"round\").text(\"\").on(\"mouseover\",(function(){e.hoverLabel.attr(\"opacity\",1),e.hoverLabelBacking.attr(\"opacity\",1)})).on(\"mouseout\",(function(){e.hoverLabel.attr(\"opacity\",0),e.hoverLabelBacking.attr(\"opacity\",0)})),this.hoverLabel=this.svg.append(\"text\").attr(\"x\",10).attr(\"y\",20).attr(\"text-anchor\",\"middle\").attr(\"font-size\",12).attr(\"fill\",\"#0f0\").text(\"\").on(\"mouseover\",(function(){e.hoverLabel.attr(\"opacity\",1),e.hoverLabelBacking.attr(\"opacity\",1)})).on(\"mouseout\",(function(){e.hoverLabel.attr(\"opacity\",0),e.hoverLabelBacking.attr(\"opacity\",0)}));var t=void 0;\"string\"==typeof this.props.plot_cmap?this.props.plot_cmap in je.colors?t=je.colors[this.props.plot_cmap]:(console.log(\"Invalid color map name, reverting to default.\"),t=je.colors.RdBu):Array.isArray(this.props.plot_cmap)&&(t=this.props.plot_cmap),this.colors=t.map((function(e){return q(e)})),this.brighterColors=[1.45,1.6].map((function(t,n){return e.colors[n].brighter(t)})),this.colors.map((function(t,n){var r=e.svg.append(\"linearGradient\").attr(\"id\",\"linear-grad-\"+n).attr(\"x1\",\"0%\").attr(\"y1\",\"0%\").attr(\"x2\",\"0%\").attr(\"y2\",\"100%\");r.append(\"stop\").attr(\"offset\",\"0%\").attr(\"stop-color\",t).attr(\"stop-opacity\",.6),r.append(\"stop\").attr(\"offset\",\"100%\").attr(\"stop-color\",t).attr(\"stop-opacity\",0);var a=e.svg.append(\"linearGradient\").attr(\"id\",\"linear-backgrad-\"+n).attr(\"x1\",\"0%\").attr(\"y1\",\"0%\").attr(\"x2\",\"0%\").attr(\"y2\",\"100%\");a.append(\"stop\").attr(\"offset\",\"0%\").attr(\"stop-color\",t).attr(\"stop-opacity\",.5),a.append(\"stop\").attr(\"offset\",\"100%\").attr(\"stop-color\",t).attr(\"stop-opacity\",0)})),this.tickFormat=ze(\",.4\"),this.scaleCentered=De(),this.axis=dn().scale(this.scaleCentered).tickSizeInner(4).tickSizeOuter(0).tickFormat((function(t){return e.tickFormat(e.invLinkFunction(t))})).tickPadding(-18),window.addEventListener(\"resize\",this.redraw),window.setTimeout(this.redraw,50)}},{key:\"componentDidUpdate\",value:function(){this.draw()}},{key:\"draw\",value:function(){var e=this;(0,Re.each)(this.props.featureNames,(function(t,n){e.props.features[n]&&(e.props.features[n].name=t)})),\"identity\"===this.props.link?this.invLinkFunction=function(t){return e.props.baseValue+t}:\"logit\"===this.props.link?this.invLinkFunction=function(t){return 1/(1+Math.exp(-(e.props.baseValue+t)))}:console.log(\"ERROR: Unrecognized link function: \",this.props.link);var t=this.svg.node().parentNode.offsetWidth;if(0==t)return setTimeout((function(){return e.draw(e.props)}),500);this.svg.style(\"height\",\"150px\"),this.svg.style(\"width\",t+\"px\");var n=(0,Re.sortBy)(this.props.features,(function(e){return-1/(e.effect+1e-10)})),r=(0,Re.sum)((0,Re.map)(n,(function(e){return Math.abs(e.effect)}))),a=(0,Re.sum)((0,Re.map)((0,Re.filter)(n,(function(e){return e.effect>0})),(function(e){return e.effect})))||0,i=(0,Re.sum)((0,Re.map)((0,Re.filter)(n,(function(e){return e.effect<0})),(function(e){return-e.effect})))||0;this.domainSize=3*Math.max(a,i);var o=De().domain([0,this.domainSize]).range([0,t]),u=t/2-o(i);this.scaleCentered.domain([-this.domainSize/2,this.domainSize/2]).range([0,t]).clamp(!0),this.axisElement.attr(\"transform\",\"translate(0,50)\").call(this.axis);var l,s,c,f=0;for(l=0;l<n.length;++l)n[l].x=f,n[l].effect<0&&void 0===s&&(s=f,c=l),f+=Math.abs(n[l].effect);void 0===s&&(s=f,c=l);var p=En().x((function(e){return e[0]})).y((function(e){return e[1]})),d=function(t){return void 0!==t.value&&null!==t.value&&\"\"!==t.value?t.name+\" = \"+(isNaN(t.value)?t.value:e.tickFormat(t.value)):t.name};n=this.props.hideBars?[]:n;var h=this.mainGroup.selectAll(\".force-bar-blocks\").data(n);h.enter().append(\"path\").attr(\"class\",\"force-bar-blocks\").merge(h).attr(\"d\",(function(e,t){var n=o(e.x)+u,r=o(Math.abs(e.effect)),a=e.effect<0?-4:4,i=a;return t===c&&(a=0),t===c-1&&(i=0),p([[n,56],[n+r,56],[n+r+i,64.5],[n+r,73],[n,73],[n+a,64.5]])})).attr(\"fill\",(function(t){return t.effect>0?e.colors[0]:e.colors[1]})).on(\"mouseover\",(function(t){if(o(Math.abs(t.effect))<o(r)/50||o(Math.abs(t.effect))<10){var n=o(t.x)+u,a=o(Math.abs(t.effect));e.hoverLabel.attr(\"opacity\",1).attr(\"x\",n+a/2).attr(\"y\",50.5).attr(\"fill\",t.effect>0?e.colors[0]:e.colors[1]).text(d(t)),e.hoverLabelBacking.attr(\"opacity\",1).attr(\"x\",n+a/2).attr(\"y\",50.5).text(d(t))}})).on(\"mouseout\",(function(){e.hoverLabel.attr(\"opacity\",0),e.hoverLabelBacking.attr(\"opacity\",0)})),h.exit().remove();var v=(0,Re.filter)(n,(function(e){return o(Math.abs(e.effect))>o(r)/50&&o(Math.abs(e.effect))>10})),g=this.onTopGroup.selectAll(\".force-bar-labels\").data(v);if(g.exit().remove(),g=g.enter().append(\"text\").attr(\"class\",\"force-bar-labels\").attr(\"font-size\",\"12px\").attr(\"y\",98).merge(g).text((function(t){return void 0!==t.value&&null!==t.value&&\"\"!==t.value?t.name+\" = \"+(isNaN(t.value)?t.value:e.tickFormat(t.value)):t.name})).attr(\"fill\",(function(t){return t.effect>0?e.colors[0]:e.colors[1]})).attr(\"stroke\",(function(e){return e.textWidth=Math.max(this.getComputedTextLength(),o(Math.abs(e.effect))-10),e.innerTextWidth=this.getComputedTextLength(),\"none\"})),this.filteredData=v,n.length>0){f=s+o.invert(5);for(var y=c;y<n.length;++y)n[y].textx=f,f+=o.invert(n[y].textWidth+10);f=s-o.invert(5);for(var m=c-1;m>=0;--m)n[m].textx=f,f-=o.invert(n[m].textWidth+10)}g.attr(\"x\",(function(e){return o(e.textx)+u+(e.effect>0?-e.textWidth/2:e.textWidth/2)})).attr(\"text-anchor\",\"middle\"),v=(0,Re.filter)(v,(function(n){return o(n.textx)+u>e.props.labelMargin&&o(n.textx)+u<t-e.props.labelMargin})),this.filteredData2=v;var b=v.slice(),_=(0,Re.findIndex)(n,v[0])-1;_>=0&&b.unshift(n[_]);var w=this.mainGroup.selectAll(\".force-bar-labelBacking\").data(v);w.enter().append(\"path\").attr(\"class\",\"force-bar-labelBacking\").attr(\"stroke\",\"none\").attr(\"opacity\",.2).merge(w).attr(\"d\",(function(e){return p([[o(e.x)+o(Math.abs(e.effect))+u,73],[(e.effect>0?o(e.textx):o(e.textx)+e.textWidth)+u+5,83],[(e.effect>0?o(e.textx):o(e.textx)+e.textWidth)+u+5,104],[(e.effect>0?o(e.textx)-e.textWidth:o(e.textx))+u-5,104],[(e.effect>0?o(e.textx)-e.textWidth:o(e.textx))+u-5,83],[o(e.x)+u,73]])})).attr(\"fill\",(function(e){return\"url(#linear-backgrad-\".concat(e.effect>0?0:1,\")\")})),w.exit().remove();var x=this.mainGroup.selectAll(\".force-bar-labelDividers\").data(v.slice(0,-1));x.enter().append(\"rect\").attr(\"class\",\"force-bar-labelDividers\").attr(\"height\",\"21px\").attr(\"width\",\"1px\").attr(\"y\",83).merge(x).attr(\"x\",(function(e){return(e.effect>0?o(e.textx):o(e.textx)+e.textWidth)+u+4.5})).attr(\"fill\",(function(e){return\"url(#linear-grad-\".concat(e.effect>0?0:1,\")\")})),x.exit().remove();var k=this.mainGroup.selectAll(\".force-bar-labelLinks\").data(v.slice(0,-1));k.enter().append(\"line\").attr(\"class\",\"force-bar-labelLinks\").attr(\"y1\",73).attr(\"y2\",83).attr(\"stroke-opacity\",.5).attr(\"stroke-width\",1).merge(k).attr(\"x1\",(function(e){return o(e.x)+o(Math.abs(e.effect))+u})).attr(\"x2\",(function(e){return(e.effect>0?o(e.textx):o(e.textx)+e.textWidth)+u+5})).attr(\"stroke\",(function(t){return t.effect>0?e.colors[0]:e.colors[1]})),k.exit().remove();var S=this.mainGroup.selectAll(\".force-bar-blockDividers\").data(n.slice(0,-1));S.enter().append(\"path\").attr(\"class\",\"force-bar-blockDividers\").attr(\"stroke-width\",2).attr(\"fill\",\"none\").merge(S).attr(\"d\",(function(e){var t=o(e.x)+o(Math.abs(e.effect))+u;return p([[t,56],[t+(e.effect<0?-4:4),64.5],[t,73]])})).attr(\"stroke\",(function(t,n){return c===n+1||Math.abs(t.effect)<1e-8?\"#rgba(0,0,0,0)\":t.effect>0?e.brighterColors[0]:e.brighterColors[1]})),S.exit().remove(),this.joinPointLine.attr(\"x1\",o(s)+u).attr(\"x2\",o(s)+u).attr(\"y1\",50).attr(\"y2\",56).attr(\"stroke\",\"#F2F2F2\").attr(\"stroke-width\",1).attr(\"opacity\",1),this.joinPointLabelOutline.attr(\"x\",o(s)+u).attr(\"y\",45).attr(\"color\",\"#fff\").attr(\"text-anchor\",\"middle\").attr(\"font-weight\",\"bold\").attr(\"stroke\",\"#fff\").attr(\"stroke-width\",6).text(ze(\",.2f\")(this.invLinkFunction(s-i))).attr(\"opacity\",1),console.log(\"joinPoint\",s,u,50,i),this.joinPointLabel.attr(\"x\",o(s)+u).attr(\"y\",45).attr(\"text-anchor\",\"middle\").attr(\"font-weight\",\"bold\").attr(\"fill\",\"#000\").text(ze(\",.2f\")(this.invLinkFunction(s-i))).attr(\"opacity\",1),this.joinPointTitle.attr(\"x\",o(s)+u).attr(\"y\",28).attr(\"text-anchor\",\"middle\").attr(\"font-size\",\"12\").attr(\"fill\",\"#000\").text(this.props.outNames[0]).attr(\"opacity\",.5),this.props.hideBars||(this.joinPointTitleLeft.attr(\"x\",o(s)+u-16).attr(\"y\",12).attr(\"text-anchor\",\"end\").attr(\"font-size\",\"13\").attr(\"fill\",this.colors[0]).text(\"higher\").attr(\"opacity\",1),this.joinPointTitleRight.attr(\"x\",o(s)+u+16).attr(\"y\",12).attr(\"text-anchor\",\"start\").attr(\"font-size\",\"13\").attr(\"fill\",this.colors[1]).text(\"lower\").attr(\"opacity\",1),this.joinPointTitleLeftArrow.attr(\"x\",o(s)+u+7).attr(\"y\",8).attr(\"text-anchor\",\"end\").attr(\"font-size\",\"13\").attr(\"fill\",this.colors[0]).text(\"→\").attr(\"opacity\",1),this.joinPointTitleRightArrow.attr(\"x\",o(s)+u-7).attr(\"y\",14).attr(\"text-anchor\",\"start\").attr(\"font-size\",\"13\").attr(\"fill\",this.colors[1]).text(\"←\").attr(\"opacity\",1)),this.props.hideBaseValueLabel||this.baseValueTitle.attr(\"x\",this.scaleCentered(0)).attr(\"y\",28).attr(\"text-anchor\",\"middle\").attr(\"font-size\",\"12\").attr(\"fill\",\"#000\").text(\"base value\").attr(\"opacity\",.5)}},{key:\"componentWillUnmount\",value:function(){window.removeEventListener(\"resize\",this.redraw)}},{key:\"render\",value:function(){var t=this;return e.createElement(\"svg\",{ref:function(e){return t.svg=Jt(e)},style:{userSelect:\"none\",display:\"block\",fontFamily:\"arial\",sansSerif:!0}},e.createElement(\"style\",{dangerouslySetInnerHTML:{__html:\"\\n          .force-bar-axis path {\\n            fill: none;\\n            opacity: 0.4;\\n          }\\n          .force-bar-axis paths {\\n            display: none;\\n          }\\n          .tick line {\\n            stroke: #000;\\n            stroke-width: 1px;\\n            opacity: 0.4;\\n          }\\n          .tick text {\\n            fill: #000;\\n            opacity: 0.5;\\n            font-size: 12px;\\n            padding: 0px;\\n          }\"}}))}}])&&Tn(n.prototype,r),Object.defineProperty(n,\"prototype\",{writable:!1}),u}(e.Component);zn.defaultProps={plot_cmap:\"RdBu\"};const Ln=zn,On=1e3,An=6e4,Fn=36e5,Dn=864e5,Rn=6048e5,jn=31536e6,Un=new Date,In=new Date;function $n(e,t,n,r){function a(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return a.floor=t=>(e(t=new Date(+t)),t),a.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),a.round=e=>{const t=a(e),n=a.ceil(e);return e-t<n-e?t:n},a.offset=(e,n)=>(t(e=new Date(+e),null==n?1:Math.floor(n)),e),a.range=(n,r,i)=>{const o=[];if(n=a.ceil(n),i=null==i?1:Math.floor(i),!(n<r&&i>0))return o;let u;do{o.push(u=new Date(+n)),t(n,i),e(n)}while(u<n&&n<r);return o},a.filter=n=>$n((t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)}),((e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););})),n&&(a.count=(t,r)=>(Un.setTime(+t),In.setTime(+r),e(Un),e(In),Math.floor(n(Un,In))),a.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?a.filter(r?t=>r(t)%e==0:t=>a.count(0,t)%e==0):a:null)),a}const Bn=$n((()=>{}),((e,t)=>{e.setTime(+e+t)}),((e,t)=>t-e));Bn.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?$n((t=>{t.setTime(Math.floor(t/e)*e)}),((t,n)=>{t.setTime(+t+n*e)}),((t,n)=>(n-t)/e)):Bn:null),Bn.range;const Wn=$n((e=>{e.setTime(e-e.getMilliseconds())}),((e,t)=>{e.setTime(+e+t*On)}),((e,t)=>(t-e)/On),(e=>e.getUTCSeconds())),Vn=(Wn.range,$n((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*On)}),((e,t)=>{e.setTime(+e+t*An)}),((e,t)=>(t-e)/An),(e=>e.getMinutes()))),Hn=(Vn.range,$n((e=>{e.setUTCSeconds(0,0)}),((e,t)=>{e.setTime(+e+t*An)}),((e,t)=>(t-e)/An),(e=>e.getUTCMinutes()))),qn=(Hn.range,$n((e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*On-e.getMinutes()*An)}),((e,t)=>{e.setTime(+e+t*Fn)}),((e,t)=>(t-e)/Fn),(e=>e.getHours()))),Qn=(qn.range,$n((e=>{e.setUTCMinutes(0,0,0)}),((e,t)=>{e.setTime(+e+t*Fn)}),((e,t)=>(t-e)/Fn),(e=>e.getUTCHours()))),Yn=(Qn.range,$n((e=>e.setHours(0,0,0,0)),((e,t)=>e.setDate(e.getDate()+t)),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*An)/Dn),(e=>e.getDate()-1))),Gn=(Yn.range,$n((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Dn),(e=>e.getUTCDate()-1))),Kn=(Gn.range,$n((e=>{e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+t)}),((e,t)=>(t-e)/Dn),(e=>Math.floor(e/Dn))));function Zn(e){return $n((t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),((e,t)=>{e.setDate(e.getDate()+7*t)}),((e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*An)/Rn))}Kn.range;const Xn=Zn(0),Jn=Zn(1),er=Zn(2),tr=Zn(3),nr=Zn(4),rr=Zn(5),ar=Zn(6);function ir(e){return $n((t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)}),((e,t)=>(t-e)/Rn))}Xn.range,Jn.range,er.range,tr.range,nr.range,rr.range,ar.range;const or=ir(0),ur=ir(1),lr=ir(2),sr=ir(3),cr=ir(4),fr=ir(5),pr=ir(6),dr=(or.range,ur.range,lr.range,sr.range,cr.range,fr.range,pr.range,$n((e=>{e.setDate(1),e.setHours(0,0,0,0)}),((e,t)=>{e.setMonth(e.getMonth()+t)}),((e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())),(e=>e.getMonth()))),hr=(dr.range,$n((e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)}),((e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())),(e=>e.getUTCMonth()))),vr=(hr.range,$n((e=>{e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,t)=>{e.setFullYear(e.getFullYear()+t)}),((e,t)=>t.getFullYear()-e.getFullYear()),(e=>e.getFullYear())));vr.every=e=>isFinite(e=Math.floor(e))&&e>0?$n((t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,n)=>{t.setFullYear(t.getFullYear()+n*e)})):null,vr.range;const gr=$n((e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)}),((e,t)=>t.getUTCFullYear()-e.getUTCFullYear()),(e=>e.getUTCFullYear()));function yr(e,t,n,r,a,i){const o=[[Wn,1,On],[Wn,5,5e3],[Wn,15,15e3],[Wn,30,3e4],[i,1,An],[i,5,3e5],[i,15,9e5],[i,30,18e5],[a,1,Fn],[a,3,108e5],[a,6,216e5],[a,12,432e5],[r,1,Dn],[r,2,1728e5],[n,1,Rn],[t,1,2592e6],[t,3,7776e6],[e,1,jn]];function u(t,n,r){const a=Math.abs(n-t)/r,i=f((([,,e])=>e)).right(o,a);if(i===o.length)return e.every(l(t/jn,n/jn,r));if(0===i)return Bn.every(Math.max(l(t,n,r),1));const[u,s]=o[a/o[i-1][2]<o[i][2]/a?i-1:i];return u.every(s)}return[function(e,t,n){const r=t<e;r&&([e,t]=[t,e]);const a=n&&\"function\"==typeof n.range?n:u(e,t,n),i=a?a.range(e,+t+1):[];return r?i.reverse():i},u]}gr.every=e=>isFinite(e=Math.floor(e))&&e>0?$n((t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)})):null,gr.range;const[mr,br]=yr(gr,hr,or,Kn,Qn,Hn),[_r,wr]=yr(vr,dr,Xn,Yn,qn,Vn);function xr(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function kr(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Sr(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}var Er,Cr,Tr,Mr={\"-\":\"\",_:\" \",0:\"0\"},Nr=/^\\s*\\d+/,Pr=/^%/,zr=/[\\\\^$*+?|[\\]().{}]/g;function Lr(e,t,n){var r=e<0?\"-\":\"\",a=(r?-e:e)+\"\",i=a.length;return r+(i<n?new Array(n-i+1).join(t)+a:a)}function Or(e){return e.replace(zr,\"\\\\$&\")}function Ar(e){return new RegExp(\"^(?:\"+e.map(Or).join(\"|\")+\")\",\"i\")}function Fr(e){return new Map(e.map(((e,t)=>[e.toLowerCase(),t])))}function Dr(e,t,n){var r=Nr.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Rr(e,t,n){var r=Nr.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function jr(e,t,n){var r=Nr.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Ur(e,t,n){var r=Nr.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Ir(e,t,n){var r=Nr.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function $r(e,t,n){var r=Nr.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Br(e,t,n){var r=Nr.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Wr(e,t,n){var r=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||\"00\")),n+r[0].length):-1}function Vr(e,t,n){var r=Nr.exec(t.slice(n,n+1));return r?(e.q=3*r[0]-3,n+r[0].length):-1}function Hr(e,t,n){var r=Nr.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function qr(e,t,n){var r=Nr.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Qr(e,t,n){var r=Nr.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Yr(e,t,n){var r=Nr.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Gr(e,t,n){var r=Nr.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Kr(e,t,n){var r=Nr.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Zr(e,t,n){var r=Nr.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Xr(e,t,n){var r=Nr.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Jr(e,t,n){var r=Pr.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function ea(e,t,n){var r=Nr.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function ta(e,t,n){var r=Nr.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function na(e,t){return Lr(e.getDate(),t,2)}function ra(e,t){return Lr(e.getHours(),t,2)}function aa(e,t){return Lr(e.getHours()%12||12,t,2)}function ia(e,t){return Lr(1+Yn.count(vr(e),e),t,3)}function oa(e,t){return Lr(e.getMilliseconds(),t,3)}function ua(e,t){return oa(e,t)+\"000\"}function la(e,t){return Lr(e.getMonth()+1,t,2)}function sa(e,t){return Lr(e.getMinutes(),t,2)}function ca(e,t){return Lr(e.getSeconds(),t,2)}function fa(e){var t=e.getDay();return 0===t?7:t}function pa(e,t){return Lr(Xn.count(vr(e)-1,e),t,2)}function da(e){var t=e.getDay();return t>=4||0===t?nr(e):nr.ceil(e)}function ha(e,t){return e=da(e),Lr(nr.count(vr(e),e)+(4===vr(e).getDay()),t,2)}function va(e){return e.getDay()}function ga(e,t){return Lr(Jn.count(vr(e)-1,e),t,2)}function ya(e,t){return Lr(e.getFullYear()%100,t,2)}function ma(e,t){return Lr((e=da(e)).getFullYear()%100,t,2)}function ba(e,t){return Lr(e.getFullYear()%1e4,t,4)}function _a(e,t){var n=e.getDay();return Lr((e=n>=4||0===n?nr(e):nr.ceil(e)).getFullYear()%1e4,t,4)}function wa(e){var t=e.getTimezoneOffset();return(t>0?\"-\":(t*=-1,\"+\"))+Lr(t/60|0,\"0\",2)+Lr(t%60,\"0\",2)}function xa(e,t){return Lr(e.getUTCDate(),t,2)}function ka(e,t){return Lr(e.getUTCHours(),t,2)}function Sa(e,t){return Lr(e.getUTCHours()%12||12,t,2)}function Ea(e,t){return Lr(1+Gn.count(gr(e),e),t,3)}function Ca(e,t){return Lr(e.getUTCMilliseconds(),t,3)}function Ta(e,t){return Ca(e,t)+\"000\"}function Ma(e,t){return Lr(e.getUTCMonth()+1,t,2)}function Na(e,t){return Lr(e.getUTCMinutes(),t,2)}function Pa(e,t){return Lr(e.getUTCSeconds(),t,2)}function za(e){var t=e.getUTCDay();return 0===t?7:t}function La(e,t){return Lr(or.count(gr(e)-1,e),t,2)}function Oa(e){var t=e.getUTCDay();return t>=4||0===t?cr(e):cr.ceil(e)}function Aa(e,t){return e=Oa(e),Lr(cr.count(gr(e),e)+(4===gr(e).getUTCDay()),t,2)}function Fa(e){return e.getUTCDay()}function Da(e,t){return Lr(ur.count(gr(e)-1,e),t,2)}function Ra(e,t){return Lr(e.getUTCFullYear()%100,t,2)}function ja(e,t){return Lr((e=Oa(e)).getUTCFullYear()%100,t,2)}function Ua(e,t){return Lr(e.getUTCFullYear()%1e4,t,4)}function Ia(e,t){var n=e.getUTCDay();return Lr((e=n>=4||0===n?cr(e):cr.ceil(e)).getUTCFullYear()%1e4,t,4)}function $a(){return\"+0000\"}function Ba(){return\"%\"}function Wa(e){return+e}function Va(e){return Math.floor(+e/1e3)}function Ha(e){return new Date(e)}function qa(e){return e instanceof Date?+e:+new Date(+e)}function Qa(e,t,n,r,a,i,o,u,l,s){var c=be(),f=c.invert,p=c.domain,d=s(\".%L\"),h=s(\":%S\"),v=s(\"%I:%M\"),g=s(\"%I %p\"),y=s(\"%a %d\"),m=s(\"%b %d\"),b=s(\"%B\"),_=s(\"%Y\");function w(e){return(l(e)<e?d:u(e)<e?h:o(e)<e?v:i(e)<e?g:r(e)<e?a(e)<e?y:m:n(e)<e?b:_)(e)}return c.invert=function(e){return new Date(f(e))},c.domain=function(e){return arguments.length?p(Array.from(e,qa)):p().map(Ha)},c.ticks=function(t){var n=p();return e(n[0],n[n.length-1],null==t?10:t)},c.tickFormat=function(e,t){return null==t?w:s(t)},c.nice=function(e){var n=p();return e&&\"function\"==typeof e.range||(e=t(n[0],n[n.length-1],null==e?10:e)),e?p(function(e,t){var n,r=0,a=(e=e.slice()).length-1,i=e[r],o=e[a];return o<i&&(n=r,r=a,a=n,n=i,i=o,o=n),e[r]=t.floor(i),e[a]=t.ceil(o),e}(n,e)):c},c.copy=function(){return me(c,Qa(e,t,n,r,a,i,o,u,l,s))},c}function Ya(){return _e.apply(Qa(_r,wr,vr,dr,Xn,Yn,qn,Vn,Wn,Cr).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Ga(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if(\"string\"==typeof e)return Ka(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ka(e,t):void 0}}(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var i,o=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){u=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(u)throw i}}}}function Ka(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Za(e){return Za=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Za(e)}function Xa(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if(\"object\"!==Za(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,\"string\");if(\"object\"!==Za(r))return r;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(r.key),\"symbol\"===Za(a)?a:String(a)),r)}var a}function Ja(e,t){return Ja=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ja(e,t)}function ei(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function ti(e){return ti=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ti(e)}Er=function(e){var t=e.dateTime,n=e.date,r=e.time,a=e.periods,i=e.days,o=e.shortDays,u=e.months,l=e.shortMonths,s=Ar(a),c=Fr(a),f=Ar(i),p=Fr(i),d=Ar(o),h=Fr(o),v=Ar(u),g=Fr(u),y=Ar(l),m=Fr(l),b={a:function(e){return o[e.getDay()]},A:function(e){return i[e.getDay()]},b:function(e){return l[e.getMonth()]},B:function(e){return u[e.getMonth()]},c:null,d:na,e:na,f:ua,g:ma,G:_a,H:ra,I:aa,j:ia,L:oa,m:la,M:sa,p:function(e){return a[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:Wa,s:Va,S:ca,u:fa,U:pa,V:ha,w:va,W:ga,x:null,X:null,y:ya,Y:ba,Z:wa,\"%\":Ba},_={a:function(e){return o[e.getUTCDay()]},A:function(e){return i[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return u[e.getUTCMonth()]},c:null,d:xa,e:xa,f:Ta,g:ja,G:Ia,H:ka,I:Sa,j:Ea,L:Ca,m:Ma,M:Na,p:function(e){return a[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:Wa,s:Va,S:Pa,u:za,U:La,V:Aa,w:Fa,W:Da,x:null,X:null,y:Ra,Y:Ua,Z:$a,\"%\":Ba},w={a:function(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=h.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(e,t,n){var r=f.exec(t.slice(n));return r?(e.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(e,t,n){var r=y.exec(t.slice(n));return r?(e.m=m.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(e,t,n){var r=v.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(e,n,r){return S(e,t,n,r)},d:qr,e:qr,f:Xr,g:Br,G:$r,H:Yr,I:Yr,j:Qr,L:Zr,m:Hr,M:Gr,p:function(e,t,n){var r=s.exec(t.slice(n));return r?(e.p=c.get(r[0].toLowerCase()),n+r[0].length):-1},q:Vr,Q:ea,s:ta,S:Kr,u:Rr,U:jr,V:Ur,w:Dr,W:Ir,x:function(e,t,r){return S(e,n,t,r)},X:function(e,t,n){return S(e,r,t,n)},y:Br,Y:$r,Z:Wr,\"%\":Jr};function x(e,t){return function(n){var r,a,i,o=[],u=-1,l=0,s=e.length;for(n instanceof Date||(n=new Date(+n));++u<s;)37===e.charCodeAt(u)&&(o.push(e.slice(l,u)),null!=(a=Mr[r=e.charAt(++u)])?r=e.charAt(++u):a=\"e\"===r?\" \":\"0\",(i=t[r])&&(r=i(n,a)),o.push(r),l=u+1);return o.push(e.slice(l,u)),o.join(\"\")}}function k(e,t){return function(n){var r,a,i=Sr(1900,void 0,1);if(S(i,e,n+=\"\",0)!=n.length)return null;if(\"Q\"in i)return new Date(i.Q);if(\"s\"in i)return new Date(1e3*i.s+(\"L\"in i?i.L:0));if(t&&!(\"Z\"in i)&&(i.Z=0),\"p\"in i&&(i.H=i.H%12+12*i.p),void 0===i.m&&(i.m=\"q\"in i?i.q:0),\"V\"in i){if(i.V<1||i.V>53)return null;\"w\"in i||(i.w=1),\"Z\"in i?(a=(r=kr(Sr(i.y,0,1))).getUTCDay(),r=a>4||0===a?ur.ceil(r):ur(r),r=Gn.offset(r,7*(i.V-1)),i.y=r.getUTCFullYear(),i.m=r.getUTCMonth(),i.d=r.getUTCDate()+(i.w+6)%7):(a=(r=xr(Sr(i.y,0,1))).getDay(),r=a>4||0===a?Jn.ceil(r):Jn(r),r=Yn.offset(r,7*(i.V-1)),i.y=r.getFullYear(),i.m=r.getMonth(),i.d=r.getDate()+(i.w+6)%7)}else(\"W\"in i||\"U\"in i)&&(\"w\"in i||(i.w=\"u\"in i?i.u%7:\"W\"in i?1:0),a=\"Z\"in i?kr(Sr(i.y,0,1)).getUTCDay():xr(Sr(i.y,0,1)).getDay(),i.m=0,i.d=\"W\"in i?(i.w+6)%7+7*i.W-(a+5)%7:i.w+7*i.U-(a+6)%7);return\"Z\"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,kr(i)):xr(i)}}function S(e,t,n,r){for(var a,i,o=0,u=t.length,l=n.length;o<u;){if(r>=l)return-1;if(37===(a=t.charCodeAt(o++))){if(a=t.charAt(o++),!(i=w[a in Mr?t.charAt(o++):a])||(r=i(e,n,r))<0)return-1}else if(a!=n.charCodeAt(r++))return-1}return r}return b.x=x(n,b),b.X=x(r,b),b.c=x(t,b),_.x=x(n,_),_.X=x(r,_),_.c=x(t,_),{format:function(e){var t=x(e+=\"\",b);return t.toString=function(){return e},t},parse:function(e){var t=k(e+=\"\",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=x(e+=\"\",_);return t.toString=function(){return e},t},utcParse:function(e){var t=k(e+=\"\",!0);return t.toString=function(){return e},t}}}({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]}),Cr=Er.format,Tr=Er.parse,Er.utcFormat,Er.utcParse;var ni=function(t){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&Ja(e,t)}(u,t);var n,r,a,i,o=(a=u,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=ti(a);if(i){var n=ti(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return function(e,t){if(t&&(\"object\"===Za(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return ei(e)}(this,e)});function u(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,u),e=o.call(this),window.lastAdditiveForceArrayVisualizer=ei(e),e.topOffset=28,e.leftOffset=80,e.height=350,e.effectFormat=ze(\".2\"),e.redraw=(0,Re.debounce)((function(){return e.draw()}),200),e}return n=u,(r=[{key:\"componentDidMount\",value:function(){var e=this;this.mainGroup=this.svg.append(\"g\"),this.onTopGroup=this.svg.append(\"g\"),this.xaxisElement=this.onTopGroup.append(\"g\").attr(\"transform\",\"translate(0,35)\").attr(\"class\",\"force-bar-array-xaxis\"),this.yaxisElement=this.onTopGroup.append(\"g\").attr(\"transform\",\"translate(0,35)\").attr(\"class\",\"force-bar-array-yaxis\"),this.hoverGroup1=this.svg.append(\"g\"),this.hoverGroup2=this.svg.append(\"g\"),this.baseValueTitle=this.svg.append(\"text\"),this.hoverLine=this.svg.append(\"line\"),this.hoverxOutline=this.svg.append(\"text\").attr(\"text-anchor\",\"middle\").attr(\"font-weight\",\"bold\").attr(\"fill\",\"#fff\").attr(\"stroke\",\"#fff\").attr(\"stroke-width\",\"6\").attr(\"font-size\",\"12px\"),this.hoverx=this.svg.append(\"text\").attr(\"text-anchor\",\"middle\").attr(\"font-weight\",\"bold\").attr(\"fill\",\"#000\").attr(\"font-size\",\"12px\"),this.hoverxTitle=this.svg.append(\"text\").attr(\"text-anchor\",\"middle\").attr(\"opacity\",.6).attr(\"font-size\",\"12px\"),this.hoveryOutline=this.svg.append(\"text\").attr(\"text-anchor\",\"end\").attr(\"font-weight\",\"bold\").attr(\"fill\",\"#fff\").attr(\"stroke\",\"#fff\").attr(\"stroke-width\",\"6\").attr(\"font-size\",\"12px\"),this.hovery=this.svg.append(\"text\").attr(\"text-anchor\",\"end\").attr(\"font-weight\",\"bold\").attr(\"fill\",\"#000\").attr(\"font-size\",\"12px\"),this.xlabel=this.wrapper.select(\".additive-force-array-xlabel\"),this.ylabel=this.wrapper.select(\".additive-force-array-ylabel\");var t=void 0;\"string\"==typeof this.props.plot_cmap?this.props.plot_cmap in je.colors?t=je.colors[this.props.plot_cmap]:(console.log(\"Invalid color map name, reverting to default.\"),t=je.colors.RdBu):Array.isArray(this.props.plot_cmap)&&(t=this.props.plot_cmap),this.colors=t.map((function(e){return q(e)})),this.brighterColors=[1.45,1.6].map((function(t,n){return e.colors[n].brighter(t)}));var n=ze(\",.4\");null!=this.props.ordering_keys&&null!=this.props.ordering_keys_time_format?(this.parseTime=Tr(this.props.ordering_keys_time_format),this.formatTime=Cr(this.props.ordering_keys_time_format),this.xtickFormat=function(e){return\"object\"==Za(e)?this.formatTime(e):n(e)}):(this.parseTime=null,this.formatTime=null,this.xtickFormat=n),this.xscale=De(),this.xaxis=dn().scale(this.xscale).tickSizeInner(4).tickSizeOuter(0).tickFormat((function(t){return e.xtickFormat(t)})).tickPadding(-18),this.ytickFormat=n,this.yscale=De(),this.yaxis=pn(an,undefined).scale(this.yscale).tickSizeInner(4).tickSizeOuter(0).tickFormat((function(t){return e.ytickFormat(e.invLinkFunction(t))})).tickPadding(2),this.xlabel.node().onchange=function(){return e.internalDraw()},this.ylabel.node().onchange=function(){return e.internalDraw()},this.svg.on(\"mousemove\",(function(t){return e.mouseMoved(t)})),this.svg.on(\"click\",(function(){return alert(\"This original index of the sample you clicked is \"+e.nearestExpIndex)})),this.svg.on(\"mouseout\",(function(t){return e.mouseOut(t)})),window.addEventListener(\"resize\",this.redraw),window.setTimeout(this.redraw,50)}},{key:\"componentDidUpdate\",value:function(){this.draw()}},{key:\"mouseOut\",value:function(){this.hoverLine.attr(\"display\",\"none\"),this.hoverx.attr(\"display\",\"none\"),this.hoverxOutline.attr(\"display\",\"none\"),this.hoverxTitle.attr(\"display\",\"none\"),this.hovery.attr(\"display\",\"none\"),this.hoveryOutline.attr(\"display\",\"none\"),this.hoverGroup1.attr(\"display\",\"none\"),this.hoverGroup2.attr(\"display\",\"none\")}},{key:\"mouseMoved\",value:function(e){var t,n,r=this;this.hoverLine.attr(\"display\",\"\"),this.hoverx.attr(\"display\",\"\"),this.hoverxOutline.attr(\"display\",\"\"),this.hoverxTitle.attr(\"display\",\"\"),this.hovery.attr(\"display\",\"\"),this.hoveryOutline.attr(\"display\",\"\"),this.hoverGroup1.attr(\"display\",\"\"),this.hoverGroup2.attr(\"display\",\"\");var a=function(e,t){if(e=function(e){let t;for(;t=e.sourceEvent;)e=t;return e}(e),void 0===t&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}if(t.getBoundingClientRect){var a=t.getBoundingClientRect();return[e.clientX-a.left-t.clientLeft,e.clientY-a.top-t.clientTop]}}return[e.pageX,e.pageY]}(e,this.svg.node())[0];if(this.props.explanations){for(t=0;t<this.currExplanations.length;++t)(!n||Math.abs(n.xmapScaled-a)>Math.abs(this.currExplanations[t].xmapScaled-a))&&(n=this.currExplanations[t]);this.nearestExpIndex=n.origInd,this.hoverLine.attr(\"x1\",n.xmapScaled).attr(\"x2\",n.xmapScaled).attr(\"y1\",0+this.topOffset).attr(\"y2\",this.height),this.hoverx.attr(\"x\",n.xmapScaled).attr(\"y\",this.topOffset-5).text(this.xtickFormat(n.xmap)),this.hoverxOutline.attr(\"x\",n.xmapScaled).attr(\"y\",this.topOffset-5).text(this.xtickFormat(n.xmap)),this.hoverxTitle.attr(\"x\",n.xmapScaled).attr(\"y\",this.topOffset-18).text(n.count>1?n.count+\" averaged samples\":\"\"),this.hovery.attr(\"x\",this.leftOffset-6).attr(\"y\",n.joinPointy).text(this.ytickFormat(this.invLinkFunction(n.joinPoint))),this.hoveryOutline.attr(\"x\",this.leftOffset-6).attr(\"y\",n.joinPointy).text(this.ytickFormat(this.invLinkFunction(n.joinPoint)));for(var i,o,u=[],l=this.currPosOrderedFeatures.length-1;l>=0;--l){var s=this.currPosOrderedFeatures[l],c=n.features[s];o=5+(c.posyTop+c.posyBottom)/2,(!i||o-i>=15)&&c.posyTop-c.posyBottom>=6&&(u.push(c),i=o)}var f=[];i=void 0;var p,d=Ga(this.currNegOrderedFeatures);try{for(d.s();!(p=d.n()).done;){var h=p.value,v=n.features[h];o=5+(v.negyTop+v.negyBottom)/2,(!i||i-o>=15)&&v.negyTop-v.negyBottom>=6&&(f.push(v),i=o)}}catch(e){d.e(e)}finally{d.f()}var g=function(e){var t=\"\";return null!==e.value&&void 0!==e.value&&(t=\" = \"+(isNaN(e.value)?e.value:r.ytickFormat(e.value))),n.count>1?\"mean(\"+r.props.featureNames[e.ind]+\")\"+t:r.props.featureNames[e.ind]+t},y=this.hoverGroup1.selectAll(\".pos-values\").data(u);y.enter().append(\"text\").attr(\"class\",\"pos-values\").merge(y).attr(\"x\",n.xmapScaled+5).attr(\"y\",(function(e){return 4+(e.posyTop+e.posyBottom)/2})).attr(\"text-anchor\",\"start\").attr(\"font-size\",12).attr(\"stroke\",\"#fff\").attr(\"fill\",\"#fff\").attr(\"stroke-width\",\"4\").attr(\"stroke-linejoin\",\"round\").attr(\"opacity\",1).text(g),y.exit().remove();var m=this.hoverGroup2.selectAll(\".pos-values\").data(u);m.enter().append(\"text\").attr(\"class\",\"pos-values\").merge(m).attr(\"x\",n.xmapScaled+5).attr(\"y\",(function(e){return 4+(e.posyTop+e.posyBottom)/2})).attr(\"text-anchor\",\"start\").attr(\"font-size\",12).attr(\"fill\",this.colors[0]).text(g),m.exit().remove();var b=this.hoverGroup1.selectAll(\".neg-values\").data(f);b.enter().append(\"text\").attr(\"class\",\"neg-values\").merge(b).attr(\"x\",n.xmapScaled+5).attr(\"y\",(function(e){return 4+(e.negyTop+e.negyBottom)/2})).attr(\"text-anchor\",\"start\").attr(\"font-size\",12).attr(\"stroke\",\"#fff\").attr(\"fill\",\"#fff\").attr(\"stroke-width\",\"4\").attr(\"stroke-linejoin\",\"round\").attr(\"opacity\",1).text(g),b.exit().remove();var _=this.hoverGroup2.selectAll(\".neg-values\").data(f);_.enter().append(\"text\").attr(\"class\",\"neg-values\").merge(_).attr(\"x\",n.xmapScaled+5).attr(\"y\",(function(e){return 4+(e.negyTop+e.negyBottom)/2})).attr(\"text-anchor\",\"start\").attr(\"font-size\",12).attr(\"fill\",this.colors[1]).text(g),_.exit().remove()}}},{key:\"draw\",value:function(){var e=this;if(this.props.explanations&&0!==this.props.explanations.length){(0,Re.each)(this.props.explanations,(function(e,t){return e.origInd=t}));var t,n={},r={},a={},i=Ga(this.props.explanations);try{for(i.s();!(t=i.n()).done;){var o=t.value;for(var u in o.features)void 0===n[u]&&(n[u]=0,r[u]=0,a[u]=0),o.features[u].effect>0?n[u]+=o.features[u].effect:r[u]-=o.features[u].effect,null!==o.features[u].value&&void 0!==o.features[u].value&&(a[u]+=1)}}catch(e){i.e(e)}finally{i.f()}this.usedFeatures=(0,Re.sortBy)((0,Re.keys)(n),(function(e){return-(n[e]+r[e])})),console.log(\"found \",this.usedFeatures.length,\" used features\"),this.posOrderedFeatures=(0,Re.sortBy)(this.usedFeatures,(function(e){return n[e]})),this.negOrderedFeatures=(0,Re.sortBy)(this.usedFeatures,(function(e){return-r[e]})),this.singleValueFeatures=(0,Re.filter)(this.usedFeatures,(function(e){return a[e]>0}));var l=[\"sample order by similarity\",\"sample order by output value\",\"original sample ordering\"].concat(this.singleValueFeatures.map((function(t){return e.props.featureNames[t]})));null!=this.props.ordering_keys&&l.unshift(\"sample order by key\");var s=this.xlabel.selectAll(\"option\").data(l);s.enter().append(\"option\").merge(s).attr(\"value\",(function(e){return e})).text((function(e){return e})),s.exit().remove();var c=this.props.outNames[0]?this.props.outNames[0]:\"model output value\";(l=(0,Re.map)(this.usedFeatures,(function(t){return[e.props.featureNames[t],e.props.featureNames[t]+\" effects\"]}))).unshift([\"model output value\",c]);var f=this.ylabel.selectAll(\"option\").data(l);f.enter().append(\"option\").merge(f).attr(\"value\",(function(e){return e[0]})).text((function(e){return e[1]})),f.exit().remove(),this.ylabel.style(\"top\",(this.height-10-this.topOffset)/2+this.topOffset+\"px\").style(\"left\",10-this.ylabel.node().offsetWidth/2+\"px\"),this.internalDraw()}}},{key:\"internalDraw\",value:function(){var e,t,n=this,r=Ga(this.props.explanations);try{for(r.s();!(e=r.n()).done;){var a,i=e.value,o=Ga(this.usedFeatures);try{for(o.s();!(a=o.n()).done;){var u=a.value;i.features.hasOwnProperty(u)||(i.features[u]={effect:0,value:0}),i.features[u].ind=u}}catch(e){o.e(e)}finally{o.f()}}}catch(e){r.e(e)}finally{r.f()}var l=this.xlabel.node().value,s=\"sample order by key\"===l&&null!=this.props.ordering_keys_time_format;if(this.xscale=s?Ya():De(),this.xaxis.scale(this.xscale),\"sample order by similarity\"===l)t=(0,Re.sortBy)(this.props.explanations,(function(e){return e.simIndex})),(0,Re.each)(t,(function(e,t){return e.xmap=t}));else if(\"sample order by output value\"===l)t=(0,Re.sortBy)(this.props.explanations,(function(e){return-e.outValue})),(0,Re.each)(t,(function(e,t){return e.xmap=t}));else if(\"original sample ordering\"===l)t=(0,Re.sortBy)(this.props.explanations,(function(e){return e.origInd})),(0,Re.each)(t,(function(e,t){return e.xmap=t}));else if(\"sample order by key\"===l)t=this.props.explanations,s?(0,Re.each)(t,(function(e,t){return e.xmap=n.parseTime(n.props.ordering_keys[t])})):(0,Re.each)(t,(function(e,t){return e.xmap=n.props.ordering_keys[t]})),t=(0,Re.sortBy)(t,(function(e){return e.xmap}));else{var c=(0,Re.findKey)(this.props.featureNames,(function(e){return e===l}));(0,Re.each)(this.props.explanations,(function(e,t){return e.xmap=e.features[c].value}));var f=(0,Re.sortBy)(this.props.explanations,(function(e){return e.xmap})),p=(0,Re.map)(f,(function(e){return e.xmap}));if(\"string\"==typeof p[0])return void alert(\"Ordering by category names is not yet supported.\");var d,h,v=(0,Re.min)(p),g=((0,Re.max)(p)-v)/100;t=[];for(var y=0;y<f.length;++y){var m=f[y];if(d&&!h&&m.xmap-d.xmap<=g||h&&m.xmap-h.xmap<=g){h||((h=(0,Re.cloneDeep)(d)).count=1);var b,_=Ga(this.usedFeatures);try{for(_.s();!(b=_.n()).done;){var w=b.value;h.features[w].effect+=m.features[w].effect,h.features[w].value+=m.features[w].value}}catch(e){_.e(e)}finally{_.f()}h.count+=1}else if(d)if(h){var x,k=Ga(this.usedFeatures);try{for(k.s();!(x=k.n()).done;){var S=x.value;h.features[S].effect/=h.count,h.features[S].value/=h.count}}catch(e){k.e(e)}finally{k.f()}t.push(h),h=void 0}else t.push(d);d=m}d.xmap-t[t.length-1].xmap>g&&t.push(d)}this.currUsedFeatures=this.usedFeatures,this.currPosOrderedFeatures=this.posOrderedFeatures,this.currNegOrderedFeatures=this.negOrderedFeatures;var E=this.ylabel.node().value;if(\"model output value\"!==E){var C=t;t=(0,Re.cloneDeep)(t);for(var T=(0,Re.findKey)(this.props.featureNames,(function(e){return e===E})),M=0;M<t.length;++M){var N=t[M].features[T];t[M].features={},t[M].features[T]=N,C[M].remapped_version=t[M]}this.currUsedFeatures=[T],this.currPosOrderedFeatures=[T],this.currNegOrderedFeatures=[T]}this.currExplanations=t,\"identity\"===this.props.link?this.invLinkFunction=function(e){return n.props.baseValue+e}:\"logit\"===this.props.link?this.invLinkFunction=function(e){return 1/(1+Math.exp(-(n.props.baseValue+e)))}:console.log(\"ERROR: Unrecognized link function: \",this.props.link),this.predValues=(0,Re.map)(t,(function(e){return(0,Re.sum)((0,Re.map)(e.features,(function(e){return e.effect})))}));var P=this.wrapper.node().offsetWidth;if(0==P)return setTimeout((function(){return n.draw(t)}),500);this.svg.style(\"height\",this.height+\"px\"),this.svg.style(\"width\",P+\"px\");var z=(0,Re.map)(t,(function(e){return e.xmap}));this.xscale.domain([(0,Re.min)(z),(0,Re.max)(z)]).range([this.leftOffset,P]).clamp(!0),this.xaxisElement.attr(\"transform\",\"translate(0,\"+this.topOffset+\")\").call(this.xaxis);for(var L=0;L<this.currExplanations.length;++L)this.currExplanations[L].xmapScaled=this.xscale(this.currExplanations[L].xmap);for(var O=t.length,A=0,F=0;F<O;++F){var D=t[F].features,R=(0,Re.sum)((0,Re.map)((0,Re.filter)(D,(function(e){return e.effect>0})),(function(e){return e.effect})))||0,j=(0,Re.sum)((0,Re.map)((0,Re.filter)(D,(function(e){return e.effect<0})),(function(e){return-e.effect})))||0;A=Math.max(A,2.2*Math.max(R,j))}this.yscale.domain([-A/2,A/2]).range([this.height-10,this.topOffset]),this.yaxisElement.attr(\"transform\",\"translate(\"+this.leftOffset+\",0)\").call(this.yaxis);for(var U=0;U<O;++U){var I,$=t[U].features,B=-((0,Re.sum)((0,Re.map)((0,Re.filter)($,(function(e){return e.effect<0})),(function(e){return-e.effect})))||0),W=void 0,V=Ga(this.currPosOrderedFeatures);try{for(V.s();!(I=V.n()).done;)$[W=I.value].posyTop=this.yscale(B),$[W].effect>0&&(B+=$[W].effect),$[W].posyBottom=this.yscale(B),$[W].ind=W}catch(e){V.e(e)}finally{V.f()}var H,q=B,Q=Ga(this.currNegOrderedFeatures);try{for(Q.s();!(H=Q.n()).done;)$[W=H.value].negyTop=this.yscale(B),$[W].effect<0&&(B-=$[W].effect),$[W].negyBottom=this.yscale(B)}catch(e){Q.e(e)}finally{Q.f()}t[U].joinPoint=q,t[U].joinPointy=this.yscale(q)}var Y=En().x((function(e){return e[0]})).y((function(e){return e[1]})),G=this.mainGroup.selectAll(\".force-bar-array-area-pos\").data(this.currUsedFeatures);G.enter().append(\"path\").attr(\"class\",\"force-bar-array-area-pos\").merge(G).attr(\"d\",(function(e){var n=(0,Re.map)((0,Re.range)(O),(function(n){return[t[n].xmapScaled,t[n].features[e].posyTop]})),r=(0,Re.map)((0,Re.rangeRight)(O),(function(n){return[t[n].xmapScaled,t[n].features[e].posyBottom]}));return Y(n.concat(r))})).attr(\"fill\",this.colors[0]),G.exit().remove();var K=this.mainGroup.selectAll(\".force-bar-array-area-neg\").data(this.currUsedFeatures);K.enter().append(\"path\").attr(\"class\",\"force-bar-array-area-neg\").merge(K).attr(\"d\",(function(e){var n=(0,Re.map)((0,Re.range)(O),(function(n){return[t[n].xmapScaled,t[n].features[e].negyTop]})),r=(0,Re.map)((0,Re.rangeRight)(O),(function(n){return[t[n].xmapScaled,t[n].features[e].negyBottom]}));return Y(n.concat(r))})).attr(\"fill\",this.colors[1]),K.exit().remove();var Z=this.mainGroup.selectAll(\".force-bar-array-divider-pos\").data(this.currUsedFeatures);Z.enter().append(\"path\").attr(\"class\",\"force-bar-array-divider-pos\").merge(Z).attr(\"d\",(function(e){var n=(0,Re.map)((0,Re.range)(O),(function(n){return[t[n].xmapScaled,t[n].features[e].posyBottom]}));return Y(n)})).attr(\"fill\",\"none\").attr(\"stroke-width\",1).attr(\"stroke\",(function(){return n.colors[0].brighter(1.2)})),Z.exit().remove();var X=this.mainGroup.selectAll(\".force-bar-array-divider-neg\").data(this.currUsedFeatures);X.enter().append(\"path\").attr(\"class\",\"force-bar-array-divider-neg\").merge(X).attr(\"d\",(function(e){var n=(0,Re.map)((0,Re.range)(O),(function(n){return[t[n].xmapScaled,t[n].features[e].negyTop]}));return Y(n)})).attr(\"fill\",\"none\").attr(\"stroke-width\",1).attr(\"stroke\",(function(){return n.colors[1].brighter(1.5)})),X.exit().remove();for(var J=function(e,t,n,r,a){var i,o,u,l;\"pos\"===a?(i=e[n].features[t].posyBottom,o=e[n].features[t].posyTop):(i=e[n].features[t].negyBottom,o=e[n].features[t].negyTop);for(var s=n+1;s<=r;++s)\"pos\"===a?(u=e[s].features[t].posyBottom,l=e[s].features[t].posyTop):(u=e[s].features[t].negyBottom,l=e[s].features[t].negyTop),u>i&&(i=u),l<o&&(o=l);return{top:i,bottom:o}},ee=[],te=0,ne=[\"pos\",\"neg\"];te<ne.length;te++){var re,ae=ne[te],ie=Ga(this.currUsedFeatures);try{for(ie.s();!(re=ie.n()).done;)for(var oe=re.value,ue=0,le=0,se=0,ce={top:0,bottom:0},fe=void 0;le<O-1;){for(;se<100&&le<O-1;)++le,se=t[le].xmapScaled-t[ue].xmapScaled;for(ce=J(t,oe,ue,le,ae);ce.bottom-ce.top<20&&ue<le;)++ue,ce=J(t,oe,ue,le,ae);if(se=t[le].xmapScaled-t[ue].xmapScaled,ce.bottom-ce.top>=20&&se>=100){for(;le<O-1;){if(++le,!((fe=J(t,oe,ue,le,ae)).bottom-fe.top>20)){--le;break}ce=fe}se=t[le].xmapScaled-t[ue].xmapScaled,ee.push([(t[le].xmapScaled+t[ue].xmapScaled)/2,(ce.top+ce.bottom)/2,this.props.featureNames[oe]]);var pe=t[le].xmapScaled;for(ue=le;pe+100>t[ue].xmapScaled&&ue<O-1;)++ue;le=ue}}}catch(e){ie.e(e)}finally{ie.f()}}var de=this.onTopGroup.selectAll(\".force-bar-array-flabels\").data(ee);de.enter().append(\"text\").attr(\"class\",\"force-bar-array-flabels\").merge(de).attr(\"x\",(function(e){return e[0]})).attr(\"y\",(function(e){return e[1]+4})).text((function(e){return e[2]})),de.exit().remove()}},{key:\"componentWillUnmount\",value:function(){window.removeEventListener(\"resize\",this.redraw)}},{key:\"render\",value:function(){var t=this;return e.createElement(\"div\",{ref:function(e){return t.wrapper=Jt(e)},style:{textAlign:\"center\"}},e.createElement(\"style\",{dangerouslySetInnerHTML:{__html:\"\\n          .force-bar-array-wrapper {\\n            text-align: center;\\n          }\\n          .force-bar-array-xaxis path {\\n            fill: none;\\n            opacity: 0.4;\\n          }\\n          .force-bar-array-xaxis .domain {\\n            opacity: 0;\\n          }\\n          .force-bar-array-xaxis paths {\\n            display: none;\\n          }\\n          .force-bar-array-yaxis path {\\n            fill: none;\\n            opacity: 0.4;\\n          }\\n          .force-bar-array-yaxis paths {\\n            display: none;\\n          }\\n          .tick line {\\n            stroke: #000;\\n            stroke-width: 1px;\\n            opacity: 0.4;\\n          }\\n          .tick text {\\n            fill: #000;\\n            opacity: 0.5;\\n            font-size: 12px;\\n            padding: 0px;\\n          }\\n          .force-bar-array-flabels {\\n            font-size: 12px;\\n            fill: #fff;\\n            text-anchor: middle;\\n          }\\n          .additive-force-array-xlabel {\\n            background: none;\\n            border: 1px solid #ccc;\\n            opacity: 0.5;\\n            margin-bottom: 0px;\\n            font-size: 12px;\\n            font-family: arial;\\n            margin-left: 80px;\\n            max-width: 300px;\\n          }\\n          .additive-force-array-xlabel:focus {\\n            outline: none;\\n          }\\n          .additive-force-array-ylabel {\\n            position: relative;\\n            top: 0px;\\n            left: 0px;\\n            transform: rotate(-90deg);\\n            background: none;\\n            border: 1px solid #ccc;\\n            opacity: 0.5;\\n            margin-bottom: 0px;\\n            font-size: 12px;\\n            font-family: arial;\\n            max-width: 150px;\\n          }\\n          .additive-force-array-ylabel:focus {\\n            outline: none;\\n          }\\n          .additive-force-array-hoverLine {\\n            stroke-width: 1px;\\n            stroke: #fff;\\n            opacity: 1;\\n          }\"}}),e.createElement(\"select\",{className:\"additive-force-array-xlabel\"}),e.createElement(\"div\",{style:{height:\"0px\",textAlign:\"left\"}},e.createElement(\"select\",{className:\"additive-force-array-ylabel\"})),e.createElement(\"svg\",{ref:function(e){return t.svg=Jt(e)},style:{userSelect:\"none\",display:\"block\",fontFamily:\"arial\",sansSerif:!0}}))}}])&&Xa(n.prototype,r),Object.defineProperty(n,\"prototype\",{writable:!1}),u}(e.Component);ni.defaultProps={plot_cmap:\"RdBu\",ordering_keys:null,ordering_keys_time_format:null};const ri=ni;window.SHAP={SimpleListVisualizer:He,AdditiveForceVisualizer:Ln,AdditiveForceArrayVisualizer:ri,React:e,ReactDom:t}})()})();\n",
       "</script>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import shap\n",
    "shap.initjs()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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4sWL5mZ0BoOBkSNHcvv2bfr06UOFChVIS0vj4sWLHDt2jF69etGoUSPGjBnDtGnTaN++vfkPes5Fg16vZ/ny5XTs2JF27drh6OjI33//TXh4OH/++SfLly9Hq9VSqVIlJk+ezIQJE2jUqBG9evUCsKix+t///seiRYt46qmnGD58OGq1mj179vDBBx/w3nvv0b9//3yP08KFC/nuu+9o3bo1ffr0Qa1WExsbyy+//EJmZqY5AQK4desWI0aM4Omnn6ZDhw6cOXOGiIgITp06xbJly8x3Rg0GA6NHj+b48eN07dqV/v37k5qayqZNmxgyZAjz58+ndu3a5vVOmDCBrVu3Ur9+fV577TXc3Ny4cuUKP//8s1X/rhxPP/005cuXtzo29evXz3NfT506xYgRIzAYDDz33HNUrlyZO3fucOzYMf76668CJUC//PILCQkJdO/eHcjuczNlyhQuXLhA1apVLcru3LmTDz/8kICAAIYMGYKjoyM7duzg+PHj99zO3TQaDc8++yybNm3i3XffNX8uERER1KhRgxo1bDdkXrt2LZ6enua70FFRUWzcuJEhQ4awfPlygoODAbhy5QojR47Ex8eH559/Hh8fHxITEzl+/Dhnz541X1B98MEHHDt2jN69e1O9enWysrK4evUqR48etUqAdu/eja+vL3Xr1kWlUtGlSxeWLVvG2bNnreLdsmUL7u7utGnTBoDU1FRef/11rl69Svfu3alTpw4XL15kw4YNHDhwgKVLl+ZZq1tUGRkZDB8+nJCQEEaNGsWZM2fYtGkTWVlZeHp68vfff9O/f38MBgPLly9nzJgxREZGWjR/nDBhAtu3b6dDhw6EhYWh1+vZunUrI0eO5Msvv6Rt27ZFjm/dunUkJibSs2dPXF1d2bp1K7NmzcLf358uXbrku2xgYCCQfZybNGli8b22JTY2lsGDB6PX6+nZsydBQUFERUWxbt06jhw5wrJly6yafX788cc4Ojry4osvolKp7pmk5mf06NGULVuW4cOHExUVxerVqxk7diwdOnRg06ZN9OjRA3t7e3744Qc++OAD1q9fT1BQUL7rLMo5tWrVKpKTk+nVqxfe3t42E8WCyElA79X8rbi/rzkmTpyIq6srgwcPJjk5meXLlzNq1ChGjBjBrFmz6NOnD+7u7oSHh/PFF19QuXJlGjduXOi4CmrPnj1cu3aNzp07U6ZMGZKTk9m8eTPjx4/n008/tXk+jx49Gnd3d4YOHUp8fDxr1qzhjTfeYNGiRVbJwf79+1m3bh19+vThueeeY+/evSxbtgw3Nzdee+01c7mC/u7nNnLkSHx9fRkyZAgZGRkWv8cP23F+krRfbSQqtfDLGft9jSZ38vMgxKdCk/cgcdmD3a54+CmFcPjwYSUkJESZM2eOkpiYqCQkJCjnzp1T/u///k8JCQlRXn75ZXPZ7t27KyEhIUp4eLjFOgwGg9K9e3elTZs2SmxsrMX00aNHKyEhIcqff/6pKIqinDt3TgkJCVGWLFmSb1zR0dFKSEiI8t1331nNM5lMSkZGhtX0jRs3KiEhIcqOHTsspoeEhCgTJ060Kn/q1CklJCREmTVrltW8MWPGKG3atFFSU1PzjfOFF15Q+vXrl28ZRfn32K1YscJi+vLly5WQkBBlwYIF5mnLli1TQkJClP3791uUTUlJUbp27aoMHTrUPG3Hjh1KSEiI8vHHHytGo9GifO73OZ9zRESERZm8js3QoUOV7t27m9+bTCalX79+SosWLZQLFy5Ylb9723l56623lLCwMMVkMimKoijJyclKixYtlK+//tqinF6vV5599lnl6aefVhISEszTdTqdMmjQoDzPjbtFREQoISEhyrZt25QLFy4oISEhytatWxVFUZTY2FilSZMmyurVq5XExESbxyI9Pd1qnZcuXVKaN2+ufP755+Zpq1atUkJCQpSTJ0/mGUtKSooSEhKifPHFF/eM22QyKc8884zy2WefmaflxH/3sYqOjlZCQ0Mt4vn222+VkJAQZeXKlRZlt2zZooSEhCiffvqpxfJ3H8+8zhdFUZSJEycqISEhFtOGDh2qhISEKMuWLbOYPn78eCU0NFR5+eWXFb1eb56+Z88eJSQkRFm7dq152s8//6yEhIQo69ats1iHXq9XXnrpJYvzJi+24s6Z1rlzZ+XOnTvm6RkZGUqHDh2UV199Nd91Kkr2effiiy8qISEhStu2bZW3335bmT9/vnLgwAGL/crxzjvvKB06dLD4e6goivL3338rTZs2tTjW3333nRISEqIMGzZMMRgMFuXz+zuYs1x0dLR5Ws5n8+WXX1qU/eabb5SQkBClW7duSlpamnl6zt/jmTNn3vMYFOacyjnmTz/9tJKYmHjPdefo3r278txzzymJiYlKYmKiEhUVpYSHhytt27ZVmjZtqpw7d85ctqS/r4ry7zEeM2aMxbm3evVqJSQkxOo3LyEhQWnRooXywQcfFCmugrK1voyMDKVXr15K3759LabnnBPjxo2z2IdTp04poaGhyogRI8zTcs63li1bWpxXOX//n3nmGfO0wvzu545jwoQJVrGXxnG++zfuSRabalL4Sl+k1+/lxysKvUrndTaqtA9dibvNfwr8EopSpGGwFyxYQMeOHenUqRMDBw4kPDycp556iq+//tqinIeHh/nufY4zZ84QExND9+7dLe7waTQaBg8eDGTfzQbMdz2PHDlCfHx8UUJFpVKZ78AajUZSUlJISkqiSZMmQHbzgILIafLUrVs3kpKSLF5t2rQhLS2NEydO5LsONzc3bt68yZ9//nnP7bm4uFhV2ffr1w8XFxf27NljEVdwcDC1a9e2iMlgMNCsWTP++usvMjOzuypu3boVgLfeegu12vKjv/v9/Th79iyXLl2ie/fuNjvkF2Rbt27d4sCBA3Tr1s3cNCKn1mLLli3o9Xpz2TNnznDr1i26d++Ol5eXebpWqzUP1V1YVapUoU6dOuYmm5s3b8bOzi7fu/85tXKKopCamkpSUhJeXl5UqFDB4jzLOa/37NmT52AKDg4OODg4cOLECW7cuJFvrCdOnCA+Pt6iOUuVKlWoVasW27dvx2j8t6nCli1bUBTF4nu5Z88ePDw86Nevn8V6u3TpQvny5c3fx+Kk0WisakwbNGiAoij07t3boulMzh323E2atm7dipOTE+3atbM471NTU2ndujU3btww1wQURVhYGG5ubub3jo6O1KtXr0Dr1Gq1zJs3jxEjRlCmTBn279/Pd999x8iRI+natav5ewjZA7js37+f1q1b4+DgYLEv5cqVIygoiIMHD1ptY8CAAcU24uaAAQMs3jdo0ADI/luX+457tWrVcHFx4fr16/dcZ1HOqa5duxZ60ILr16/TsWNHOnbsSM+ePZk8eTLu7u5MmTLlns2YivP7mlv//v0tmnPlHM82bdpY/OblbOvupnoFjaugcvejyszMJCkpiczMTJo0acLly5dJTbW+lf/KK69Y7EOtWrVo1qwZR44csSrfrl07c7NKyP7NDQ0NJT4+3tzqozC/+7nljLhpy8N2nB+khIQEi3MxNTWVlJQU83udTmd1zZR7xERb72Nj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JO+LeHIkvbUNF+KxIZVb1CSTMtik6qhqdZerbh4AJDjZG62nAGWyNGhUYKmSm3ZROqQLnBBCCOrVq8e9e/fYsGFDaVfFiE6nIzPzyX5niFqtxsbG5olsTalduzZdu3YlICCAXr168d577/Hdd98xfvx4zp49y7vvvotGo9HnL819SU9Pf+zbLM3tPq2SV52kLLE4kkAiFcmkzD9L1FRPuIt7WioA8XbWRusm2eQG1pYKlE/NZN+x5MdVbSH0JAASQghBu3btqF+/PuvWrSMxMdGsdc6ePcvEiRNp3749/v7+9OzZkxUrVhjcTAN069aNkSNHGq1vaqxJeHg4vr6+REREsHz5cnr06IG/vz979+4FIDMzk6+++orXX38df39/OnTowAcffMC1a9fM3tewsDAGDRpE8+bNadWqFaNGjeLYsWMm8/7www/07t0bf39/AgMDCQkJISIiwqjeBY2bURSF77//nsGDB9OyZUtatmxJ3759Wbp0qT5PWloaX331FYMHD9Yfy9dee42FCxc+ssBPpVIxZMgQXn31Vf7++2/98S1oXxRFYePGjfTr149WrVrRsmVLevTowbRp04zq+OuvvzJixAhatWpFixYtePPNN9m9e7dRHUaOHEm3bt2IiYnh/fffp127drRq9e8Uyn/88QfBwcE0b96c9u3bM2XKFBISEgrcpx9//JHhw4fTqlUrmjdvzuDBg/npp5+M8uWNITp+/DjDhw+nZcuWvPvuuwAkJSUxd+5cevTowSuvvELbtm3p168fK1asMPvYPut0sffIGLYaG3LPewbORnncM9IAuONowzUXO/2bgNKsLPjdKzdYUgC1Vses5cncjdcYlSHEoyTt20IIIQB46623GD16NCtWrGDChAmF5j106BCTJk2iYsWKDBw4EGdnZ86cOUNISAgXL15k1qxZD1WX+fPno9FoeP3113FwcKBy5cpoNBrefvttTp48Sdu2bXnjjTe4efMmW7Zs4ejRo6xatYqqVasWWu7ixYtZtWoVdevWZcyYMWRlZREWFsZbb73FjBkz6NKliz7v+vXr+fLLL6lRowZjxoxBp9Oxfft2Dh06ZPZ+TJkyhV27dtGoUSOGDRuGk5MTUVFR/Pzzz/rxOXfu3GHbtm106NCBLl26oFarOXnyJGvXruXChQssWrSoeAfRDD179uTHH3/k4MGDBvt+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mMjISM13QMuWLRk9ejTlypXT1Cvsc/L39y+R76SYmBh++eUXjh8/Tnx8PLm5uVStWpXAwECt814Y7sODBb/X+fyJwgedd/v+3/9bmMKuL6BN/ZIKTQgdkgA9J/bt2wdA165di72unJwc3nnnHY4fP0779u3p27cvcXFxbNiwgd9//51ly5ZRtWpVrWUOHTrE5s2b6dGjB3Z2doSFhfHll19iYmLCggULaNq0KWPGjOHs2bOEhYVhZmbG5MmTNcvHx8czZMgQsrOz6dKlC+7u7ty8eZONGzcSHR3NqlWrdBKmzz//HAsLC9566y0UCoXWF2Rx/PPPP0RGRvL6669TqVIlsrOz+e2335g3bx6xsbF8+umnOsvMnj2bnJwcunXrhrW1tc4Xu9orr7zCl19+yYwZM3BwcGDo0KEAeu/qF6R79+6YmpqyZcsWhgwZovks8q+joOOzYcMGHBwc6NGjB46Ojty8eZMtW7YwbNgwQkJC8PT0BODLL79k6dKlJCYm8sEHH2jWW9jF56FDhxg/fjwODg707dsXOzs79u3bx/Tp07l8+bLeY/f222/j5OTEiBEjSExMZPXq1bz77ruEhYUZnDCU9r4eOnSIDz/8EA8PD/r374+dnR2nT58mODiYixcv8t132l00zpw5w927dwu8GVGS9uzZQ1paGn369CmwFSEpKQmlUklSUhK//vorv//+O40bN37s3fKcnBzGjh3L3bt3CQwMpHLlyqSlpXH58mWOHz+uuRDMyclh3Lhx/P3337zxxhu88sorXLt2jfHjx+tcZBvizTffZPbs2Wzfvl1z0+b06dNcuXKFsWPHcuTIkSKt7+HDhwQFBVG/fn3GjRvH9evX2bhxI3///TchISGUL19eq/7atWtJSkqiW7duODk5aVprf/rpJ5YuXcprr71GUFAQRkZGREZGMnHiRD766CN69eqlWceMGTNYu3YtL730Er179yYlJYVly5bpbKsg2dnZjBs3jj///JMWLVrg4+ODqakply5dYv/+/fTu3fuxfwtSU1MZOnQo8fHxBAQEUK1aNe7du8emTZsYPHgwq1atwtXVFchLYEeMGEFcXBxdunShdu3a/P3334wePRp7e/siHe/8x37kyJG89NJLjB07ltjYWH755RfGjx/PunXrNOdsamoqw4cP59q1a/j5+VG/fn0uX77M5s2bOXLk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NO9dv36dxYsXc+zYMZKSkihfvjwdO3Zk5MiRWFpaaq3n5MmTzJs3j3PnzmFhYUHLli15//336dSpE35+flpjfry8vAos8/X15aeffuLixYvY29vTq1cvBg8eTHJyMrNmzeLgwYOkp6fj5eXFJ598gouLi1YcT+OzfhFdvZmJDaBQqvBMfMilcjaa94yUKiqkZfNL49bcMy2HXVY6LrFJWKSbkosdCsCcvLFD10z/B0C5zd2w6Va3LHZFvGAkARJCCKFj48aNPHjwgC5dumBjY0NERARz587FxcWFzp07a+odOnSIDz/8EA8PD/r374+dnR2nT58mODiYixcv8t1332mtNz09nVGjRvHyyy8zZswY7t+/D0B2djYhISF07NiRdu3aYWFhwd9//01oaCgnT54kJCQEU1NTrXUdPHiQtWvX0rNnT5ydnTlw4AA///wzt27d0un6l19qaipDhw4lPj6egIAAqlWrxr1799i0aRODBw9m1apVuLq6AvDdd98RFhaGj48Pffv2RaVScfPmTY4ePfrY4/gk+3X48GE2btxIYGAgXbt2JSoqilWrVmFra6vVHW3//v18/PHHlC9fnqFDh2JhYcGuXbs4derUY+MyJO74+HiMjIywtbXVlJ87d46goCBsbW3p3r07FSpU4J9//uGXX37h1KlTLFq0SJOknTp1ijFjxmBpacmAAQNwcHDg4MGDvPPOO0WK5cKFCxw8eJDu3bvj6+vLr7/+yrx58zAzM2P79u24ubkxcuRIbty4wbp165g8eTILFy7ULP+0PusXTXJaLm9PuYsCUAC17qVilqskztYCs1wlZmlZnLC2pGbGA8xS4ql6MQdzsrEgW2s96o5bKiCh+xbMzpTDrH75p7w3zz+lQrrAFYUkQEIIIXTcvn2bDRs2aC5+u3Tpgp+fH+vWrdMkQJmZmXz55Zc0aNCABQsWaC58AwMDqVmzJjNnztTMKqeWlJREr169GDVqlNb2zMzMiIiIwMLCQlMWGBjISy+9xLRp04iMjKRTp05ay1y8eJGVK1dSp04dAHr37s2HH37Ijh076N69O40aNSpw/xYsWEBsbCzLli2jVq1amnJ/f3/69OlDcHCwpiUiMjKSli1bPjap0udJ9uvKlSusX79e01oVGBhI7969WbdunSYBys3NZfr06VhZWbFixQpNC02vXr0YNmxYkeNM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",
      "text/plain": [
       "<Figure size 800x950 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Obliczanie wartości SHAP\n",
    "explainer = shap.TreeExplainer(model8)\n",
    "shap_values = explainer.shap_values(X_train_xg)\n",
    "\n",
    "# Generowanie wykresu SHAP\n",
    "shap.summary_plot(shap_values, X_train_xg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pierwsza obserwacja - przewidziana 1, w rzeczywistości jest 1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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d5OAEA8++KBGjhyp3NxctWrVShdeeKHWrl1b380CavTggw/K4/HozjvvrO+mAK527Niha665RgUFBcrOztaQIUO0dOnS+m4WYFNRUaF77rmn+pqqW7du+tWvfiWfz1ffTQP08ccf6/zzz1e7du3k8Xj0xhtv2O73+/2677771K5dO2VlZWn8+PFas2ZN/TQWqKU6DUq89tpruvbaa/XNb35TK1eu1Pz583XVVVfV5S6BWvnRj36kdu3a1XczAFdfffWVfD6f/vKXv2jNmjV6/PHH9ec//1k//elP67tpgF555RXdeeed+tnPfqbly5frjDPO0DnnnKNt27bVd9MAm7lz5+r222/XZ599plmzZqmiokJTpkzR8ePH67tpQFiLFy/WM888o0GDBtV3UwBXhw4d0umnn660tDTNnDlTX3zxhR577DE1a9asvpsG2Dz00EP685//rKeeekpffvmlHn74YT3yyCN68skn67tpgI4fP67Bgwfrqaeecr3/4Ycf1u9+9zs99dRTWrx4sdq0aaPJkyfr2LFjSW4pUHsev9/vr4sNV1RUqEuXLvrlL3+pm266qS52ASTUzJkzddddd+m1115T//79tXz5cg0ZMqS+mwVE9Mgjj+jpp5/Wpk2b6rspKiwsrM4Nm5OTU9/NQZKNHj1aw4YN09NPP129rG/fvrrwwgv14IMP1mPLgMj27dunVq1aae7cuRo7dmx9NwcIUVhYqGHDhulPf/qT7r//fg0ZMkRPPPFEfTcLsPnxj3+s+fPnM0sSUanP64apU6eqdevWevbZZ6uXXXLJJcrOztY///nPpLYFiMTj8ej111/XhRdeKMnMkmjXrp3uvPNO3X333ZJMto/WrVvroYce0q233lqPrQViV2czJZYtW6YdO3bI6/Vq6NChatu2rc455xymFaFB2rNnj2655Rb985//VHZ2dn03B4jakSNHlJ+fX9/NQCNXVlampUuXasqUKbblU6ZM0YIFC+qpVUB0jhw5IkmcS9Fg3X777TrvvPM0adKk+m4KENb06dM1YsQIXXrppWrVqpWGDh2qv/71r/XdLCDEmDFj9OGHH2rdunWSpJUrV+qTTz7RueeeW88tAyLbvHmzdu/ebbvmysjI0Lhx47jmwgmpzoISgVG79913n+655x7NmDFDzZs317hx43Tw4MG62i0QM7/frxtuuEG33XabRowYUd/NAaK2ceNGPfnkk7rtttvquylo5Pbv36/Kykq1bt3atrx169bavXt3PbUKqJnf79ddd92lMWPGaMCAAfXdHCDEyy+/rGXLljHjDA3epk2b9PTTT6tnz5567733dNttt+k73/mOXnjhhfpuGmBz991368orr1SfPn2UlpamoUOH6s4779SVV15Z300DIgpcV3HNhZNFzEGJ++67Tx6PJ+K/JUuWVBcJ+tnPfqZLLrlEw4cP13PPPSePx6NXX3014QcCOEX7Xn3yySd19OhR/eQnP6nvJqORiva9arVz506dffbZuvTSS3XzzTfXU8sBO4/HY7sdmJYPNFR33HGHPv/8c/373/+u76YAIb7++mt997vf1b/+9S9lZmbWd3OAiHw+n4YNG6YHHnhAQ4cO1a233qpbbrnFltYRaAheeeUV/etf/9JLL72kZcuW6fnnn9ejjz6q559/vr6bBkSFay6cLFJjfcAdd9yhK664IuI6Xbp0qS6y0q9fv+rlGRkZ6tatG0UvkRTRvlfvv/9+ffbZZ8rIyLDdN2LECF199dV8OUGdi/a9GrBz505NmDBBp556qp555pk6bh1QsxYtWiglJSVkhM7evXtDRvIADcW3v/1tTZ8+XR9//LE6dOhQ380BQixdulR79+7V8OHDq5dVVlbq448/1lNPPaXS0lKlpKTUYwuBoLZt29qu/SVTW+q1116rpxYB7n74wx/qxz/+cfX118CBA7V161Y9+OCDuv766+u5dUB4bdq0kWRmTLRt27Z6OddcOFHFHJRo0aKFWrRoUeN6w4cPV0ZGhtauXasxY8ZIksrLy7VlyxZ17tw59pYCMYr2vfqHP/xB999/f/XtnTt36qyzztIrr7yi0aNH12UTAUnRv1claceOHZowYUL17DOvt86y8AFRS09P1/DhwzVr1ixddNFF1ctnzZqlCy64oB5bBoTy+/369re/rddff11z5sxR165d67tJgKuJEydq1apVtmXf/OY31adPH919990EJNCgnH766Vq7dq1t2bp167j2R4NTVFQUcg2VkpJSne0DaKi6du2qNm3aaNasWRo6dKgkU9tv7ty5euihh+q5dUDsYg5KRCsvL0+33Xab7r33XnXs2FGdO3fWI488Ikm69NJL62q3QMw6depku52TkyNJ6t69OyMn0aDs3LlT48ePV6dO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DYCGjPMFAMSPcygANHoEJQAAAAAAAAAAQFKQhwkAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAACQFQQkAAAAAAAAAAJAUBCUAAAAAAAAAAEBSEJQAAAAAAAAAAABJQVACAAAAAAAAAAAkBUEJAAAAAAAAAACQFAQlAAAAAAAAAABAUhCUAAAAAAAAAAAASUFQAgAAAAAAAAAAJAVBCQAAAAAAAAAAkBQEJQAAAAAAAAAAQFIQlAAAAAAAAAAAAElBUAIAAAAAAAAAgP+/UUAXAABUFcVN5WC8JAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 2000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "shap.force_plot(explainer.expected_value, shap_values[0], X_train_xg.iloc[0], matplotlib=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predicted_class = model8.predict(X_train_xg.iloc[[0]])[0]\n",
    "predicted_class"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "label    1\n",
       "Name: 782, dtype: int64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "actual_value = y_train.iloc[0]\n",
    "actual_value"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pierwsza obserwacja - przewidziana 0, w rzeczywistości jest 0."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABq4AAAFqCAYAAABrt6u7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADnIUlEQVR4nOzdd3wb9f0/8NfdaXjv2HGWnb0HKxB2CLPsUvZeLQVaKJ0USill/Mr40hZaVikFSoECZZRRVkgIYYVA9iJ7OLEd2/GQZUmnu98fp5PuPjpvDY/X8/GAWKfT6XPS2ZLupff7I+m6roOIiIiIiIiIiIiIiIgozeR0D4CIiIiIiIiIiIiIiIgIYHBFREREREREREREREREfQSDKyIiIiIiIiIiIiIiIuoTGFwRERERERERERERERFRn8DgioiIiIiIiIiIiIiIiPoEBldERERERERERERERETUJzC4IiIiIiIiIiIiIiIioj6BwRURERERERERERERERH1CQyuiIiIiIiIiIiIiIiIqE9gcEVERERERERERERERER9AoMrIiIiIiIiIiIiIiIi6hMYXBEREREREREREREREVGfwOCKiIiIiIiIiIiIiIiI+gQGV0RERERERERERERERNQnMLgiIiKixHn7K6CuKd2jICIiIiIiIiKiforBFRERESVGfQvw/b8Ap97J8IqIiIiIiIiIiHqEwRUREREAPLcAyDsPWLS683WnXQ9853epua/+pCgH+NfPgM3VkfCqudeb/Gx7ABV/qMJLK1sTMEAiIiIiIiIiIurrXOkeABEREfUT9/4HUMOdrzd7PLBgFXDancCbvwEKc5I/NiIiIiIiIiIiGhAYXBEREXXX0gcBSUr3KFLvvleBQKjr66/aDmyvZXBFRERERERERERdxuCKiIiou7zudI+ge1ragJyM3m+n9tnO1wmqwCUPAu98DfzpKmDm6N7fbz/VGtSQ5WFXZiIiIiIiIiKi7mBwRUREZKXpwIOvA099CFTVAyNLgJ+dCVx4VGydadcDo4YAb//Wftun5wMPvwVsqQbKCozbzJkEnH4X8Mg1wIVHd/++TB+tBP74BvD1JqAtBIwrB646DrjyOPt65tjuuQT47fPAV98aFU8rH0rEo9MxMbS6bF5S7sYf0vDwZy14c50fVU1h5HhkHFrhwU+PyMOYothbmyMfq0Z5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zOTtJBERERERERHRICbpekezxhMREVGv/Pm/wK3PAR/8Hpg9Pt2jSYgPN7Xh3oVNeOacYpTlsF0eERERERERERElDoMrIiKiRGgLAhlCVVVTK3DoLwBfAFj/COAZOIXOYU2HIvew/SEREREREREREVE7Bs4ZNCIionRatMaY4+r0g4FhRcDOOuC5Bca/f756QIVWABhaERERERERERFRUgyss2hERETpMmao8d8/PgTqmo2ganoF8IdLgVNnp3t0RERERERERERE/QJbBRIREREREREREREREVGfIKd7AEREREREREREREREREQAgysiIiIiIiIiIiIiIiLqIxhcERERERERERERERERUZ/A4IqIiIiIiIiIiIiIiIj6BAZXRERERERERERERERE1CcwuCIiIiIiIiIiIiIiIqI+gcEVERERERERERERERER9QkMroiIiIiIiIiIiIiIiKhPYHBFREREREREREREREREfQKDKyIiIiIiIiIiIiIiIuoTGFwRERFR1KpVq/CXv/wFd955J26//Xbs2bMHAPD666/jn//8Z7e3t3nzZtx9991oampK9FCJiMhiwYIFuP3229Ha2pruoaTNvn37cPvtt2PZsmXpHgoREREREfUCgysiIiICAPh8Prz66qsoKirCRRddhKuuugrFxcXYvXs3li1bhmOOOabb2xwzZgyGDx+ODz/8MAkjJiIiIiIiIiKigYbBFREREQEA6urqEA6HMWPGDFRWVmLEiBFwu9345JNPMHz4cAwbNqxH2z3ooIOwcuVKNDY2JnjEREREREREREQ00LjSPQAiIiJKv9deey3aWumll17CSy+9hMrKSnzve9/DunXrcOKJJ9rWf/PNN7Fs2TJcccUV0UBL13U888wzqKmpwTXXXIPc3FwAwMSJE+HxePD1119j7ty5Kd0vIqLBprGxEf/973+xefNmAMbf4BNOOAHZ2dnRdVatWoVvvvkG1dXVaGtrQ0FBASZNmoQjjzwSHo8nul5DQwM+/PBDbNu2Da2trcjIyEBpaSlOOOEEDB061La9zz//HNXV1ZAkCSNHjsSxxx6L8vLydse5Z88ePProozjttNOw//7726779ttv8dxzz+H888/HxIkTUV9fj48//hjbt29Hc3MzMjIyUF5ejnnz5qGsrKzDx+O1117D1q1bceONN9qWL1iwINpe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luKggw7q9P6IiIiIiKj3GFwRERFRu0aNGoWCggKsW7cuGlwFg0G89NJLKCgowMknnxxdd8qUKZg9ezbef/99jBw5EsOHDwcA1NfXo7q6GkcffXQ6doGIaFA599xzsWDBAixZsgSSJGHixIk48cQTo63usrKycMEFF+C9997Df/7zH3g8HkycOBHf+9738Nhjj0W3k5OTg8LCQixZsiRa2VRYWIgTTjgBs2fPjq53xBFHYMiQIfjiiy+wcuVKhMNh5OTkYNiwYTjwwAO7NOZZs2Zh0aJFUFU1+mUIq5NOOgmKomDRokUIBoMoLy/Hueeei/nz53e67cLCQpx33nn48MMP8e9//xs5OTmYM2cOWltbsWDBAtu6p556KkaMGIGlS5diyZIl0HUdubm5ttc0IiIiIiJKPkkXv2pGREREZPHpp59i0aJFuOmmm+B2u7t9+/nz52P58uW44YYbIMvsUkxERERERERERO3j2SMiIiLq0OzZs+H1erFkyZJu37atrQ1LlizBvHnzGFoREREREREREVGneAaJiIiIOuRyufDd73432maqOxoaGnD44Ydj+vTpSRgZERERERERERENNGwVSERERERERERERERERH0CK66IiIiIiIiIiIiIiIioT2BwRURERERERERERERERH0CgysiIiIiIiIiIiIiIiLqExhcERERERERERERERERUZ/A4IqIiIiIiIiIiIiIiIj6BAZXRERERERERERERERE1CcwuCIiIiIiIiIiIiIiIqI+gcEVERERERERERERERER9QkMroiIiIiIiIiIiIiIiKhPYHBFREREREREREREREREfQKDKyIiokHm6KOPhiRJnf5XWVnZo+0vWLAA5513HkaNGoWMjAwUFBRg0qRJuOyyy/Dll1863qaxsRF33nknZs+ejcLCQni9XgwfPhxHH3007rjjjl7sLRERERERERER9SeudA+AiIiI+iZJkrq1vqqquO666/D444/blgcCATQ2NmL9+vUYN24cZs+ebbt+yZIlOPXUU1FdXW1bXlVVhaqqKnzyySe47bbberYTRERERERERETUrzC4IiIiGmR++MMf4pRTTolb7vP5cPvtt0cvn3jiid3a7i233BINrSRJwrHHHov9998fubm52Lt3L1auXIm8vDzbbXbu3ImTTjoJdXV1AIDS0lKceeaZGDFiBPx+P3bs2IFly5Z1bweJiIiIiIiIiKjfknRd19M9CCIiIkq/hx56CD/+8Y8BALIsY926dRg/fnyXbrt582aMHz8emqbB5XLhtddew8knn9zp7S677DI8/fTTAIC5c+fi7bffRkZGRs93goiIiIiIiIiI+jXOcUVERETQNA1//OMfo5dPO+20LodWAPD0009D0zQAwAEHHIDPPvsMU6ZMQWZmJsrLy3HhhRdi3bp1ttu0tbXhhRdeiF4+7rjjcPrpp6O0tBTZ2dk44IAD8PDDD0e3S0REREREREREAx8rroiIiAgvv/wyzj777OjlxYsX49BDD+3y7Y877jh88MEHHa6TnZ2Nd955B0cccUT0Pg4//PBOt33GGWfglVdegSzz+zZERERERERERAMdzwARERERHnjggejPc+bM6VZoBQC7d++2Xc7Pz8fPf/5zXH/99fB6vQCMObQuvvhihEIhx9sAwLHHHovf/va3mD17dnTZa6+9hr/97W/dGg8REREREREREfVPrnQPgIiIiBLr/vvvd1z+s5/9zHH5p59+is8//7zT9ToSDAZtl5999lmceuqpAIAJEyZE587atm0bPvnkE8ydOzfuNgcccADee+89SJKEm2++GaNHj46GW8899xy+//3vd3tcRERERERERETUvzC4IiIiGmB+/vOfOy5vL5CyBl3jxo3DGWec0e37LCgosF0++uijoz8fddRRtus2bdqEuXPnxt3mqKOOgiRJAACv14tDDjkEr776avQ2REREREREREQ08LFVIBER0SC2adMmvP7669HLP/nJT3o0l9S0adPavc4Mo0wZGRmd3ka8nXkbIiIiIiIiIiIa2BhcERERDTC6rjv+5+TBBx+EpmkAgOLiYlx22WXtbvf222+HJEmQJAmVlZW260455RTb5YULFzr+DBgtAQFg1KhRmD59enT5xx9/HP05GAza2hceeOCB7Y6LiIiIiIiIiIgGDrYKJCIiGqTq6+vx1FNPRS9fe+21yMrK6tG2TjvtNEyfPh0rV64EAFxyySW4+uqr0dbWhscffzy63nHHHYfJkydHL996660499xzAQBfffUVTjjhBBx66KF45513UFVVBcCovLr++ut7NC4iIiIiIiIiIupfGFwRERENUo888ghaW1sBGK34ehMOuVwuvPTSS5g3bx527dqFhoYG3HvvvbZ1JkyYgKefftq27JxzzsGXX36JBx54AADw3nvv4b333oteL0kS7r33Xhx++OE9HhsREfUtPp8Puq5DkiRkZ2enezhERERERNTHsFUgERHRIBQMBvHwww9HL1988cUoLS3t1TYnTpyI5cuX45e//CUmTZqEjIwMZGZmYubMmbjjjjvw1Vdfoby8PO52999/P958802cdNJJKCkpgcvlQllZGb773e9i4cKF+NnPftarcRERUd/SWRtbIiIiIiIa3CSdnxaIiIiIiIgoRVpaWqIVVzk5OekeDhERERER9TGsuCIiIiIiIiIiIiIiIqI+gcEVERERERERERERERER9QkMroiIiIiIiIiIiIiIiKhPYHBFREREREREREREREREfQKDKyIiIiIiIiIiIiIiIuoTGFwRERERERERERERERFRn8DgioiIiIiIiIiIiIiIiPoEBldERERERERERERERETUJzC4IiIiIiIiIiIiIiIioj7Ble4BEBERUf/U2toKXdchSRKysrLSPRwiIiIiIiIiIhoAGFwRERFRj2iaFg2uiIiIiIiIiIiIEoGtAomIiIiIiIiIiIiIiKhPYHA1gNx111049NBDkZWVhYKCgg7Xraurw4gRIyBJEvbt25eS8VHqdHYsLF++HOeffz5GjhyJzMxMTJ48GX/6059SP1BKqq78Tdi+fTtOPfVUZGdno6SkBD/+8Y8RDAZTO1BKqQ0bNuD0009HSUkJ8vLycNhhh+Gjjz5K97AoDd566y0cfPDByMzMRElJCb773e+me0iUJoFAALNmzYIkSVi2bFm6h0MptHXrVlx55ZUYPXo0MjMzMXbsWPz2t7/le4FB4q9//StGjx6NjIwMHHDAAVi0aFG6h0QpdM899+Cggw5Cbm4uSktLccYZZ2D9+vXpHhal2T333ANJknDjjTemeyiUYrt27cJFF12E4uJiZGVlYdasWVi6dGm6h0UppKoqbr311uj7wjFjxuCOO+6ApmnpHhoNUgyuBpBgMIizzz4bP/zhDztd98orr8SMGTNSMCpKh86OhaVLl2LIkCH45z//idWrV+OWW27BzTffjIcffjjFI6Vk6uw4CIfDOPnkk+Hz+fDJJ5/ghRdewCuvvIKf/vSnKR4ppdLJJ58MVVUxf/58LF26FLNmzcIpp5yCPXv2pHtolEKvvPIKLr74Ylx++eVYvnw5Fi9ejAsuuCDdw6I0+cUvfoFhw4alexiUBuvWrYOmaXjsscewevVqPPjgg3j00Ufx61//Ot1DoyR78cUXceONN+KWW27BN998gyOOOAInnXQStm/fnu6hUYosXLgQ1113HT7//HO8//77UFUVxx9/PHw+X7qHRmmyZMkSPP744zxXNAg1NDTgsMMOg9vtxjvvvIM1a9bggQce6PRL8TSw/OEPf8Cjjz6Khx9+GGvXrsW9996L++67Dw899FC6h0aDlKTrup7uQVBi/eMf/8CNN97YbiXVI488ghdffBG33XYb5s2bh4aGBr4YDVCdHQtW1113HdauXYv58+cnf2CUUu0dB++88w5OOeUU7NixI3rC8oUXXsBll12Gmpoa5OXlpWG0lEx79+7FkCFD8PHHH+OII44AADQ3NyMvLw8ffPAB5s2b163ttbS0ROe4ysnJScaQKQlUVUVlZSV+97vf4corr0z3cCjN3nnnHdx000145ZVXMHXqVHzzzTeYNWtWuodFaXTffffhkUcewebNm5N2H3z9SL+DDz4Y+++/Px555JHossmTJ+OMM87APffck8aRUbrU1taitLQUCxcuxJFHHpnu4VCKtbS0YP/998df//pX3HnnnZg1axb++Mc/pntYlCK/+tWvsHjxYlbeDnKnnHIKysrK8OSTT0aXnXXWWcjKysKzzz6bxpHRYMWKq0FmzZo1uOOOO/DMM89Alvn0U0xjYyOKiorSPQxKoc8++wzTpk2zfcv+hBNOQCAQYEuAAaq4uBiTJ0/GM888A5/PB1VV8dhjj6GsrAwHHHBAuodHKfL1119j165dkGUZ++23H8rLy3HSSSdh9erV6R4apVh1dTWuvvpqPPvss8jKykr3cKiP4HvCgS8YDGLp0qU4/vjjbcuPP/54fPrpp2kaFaVbY2MjAPD3f5C67rrrcPLJJ+PYY49N91AoDd544w0ceOCBOPvss1FaWor99tsPTzzxRLqHRSl2+OGH48MPP8SGDRsAGNOMfPLJJ/jOd76T5pHRYOVK9wAodQKBAM4//3zcd999GDVqVFK/RUn9y2effYZ///vfeOutt9I9FEqhPXv2oKyszLassLAQHo+HbeMGKEmS8P777+P0009Hbm4uZFlGWVkZ/ve//7HydhAxX/9vv/12/N///R8qKyvxwAMP4KijjsKGDRt4wmqQ0HUdl112Ga655hoceOCB2Lp1a7qHRH3Apk2b8NBDD+GBBx5I91Aoifbu3YtwOBz3PrCsrIzvAQcpXddx00034fDDD8e0adPSPRxKsRdeeAFff/01lixZku6hUJps3rwZjzzyCG666Sb8+te/xpdffokf//jH8Hq9uOSSS9I9PEqRX/7yl2hsbMSkSZOgKArC4TDuuusunH/++ekeGg1SLLnp426//XZIktThf1999VWXtnXzzTdj8uTJuOiii5I8akqGRB4LVqtXr8bpp5+O2267Dccdd1wSRk6JlOjjQJKkuGVm6x7qP7p6XOi6jmuvvRalpaVYtGgRvvzyS5x++uk45ZRTsHv37nTvBvVSV48Dc3LdW265BWeddRYOOOAAPPXUU5AkCS+99FKa94J6q6vHwUMPPYSmpibcfPPN6R4yJUFP3i9UVVXhxBNPxNlnn42rrroqTSOnVBLf7/E94OB1/fXXY8WKFXj++efTPRRKsR07duCGG27AP//5T2RkZKR7OJQmmqZh//33x91334399tsPP/jBD3D11Vfb2snSwPfiiy/in//8J/71r3/h66+/xtNPP437778fTz/9dLqHRoMUK676uOuvvx7nnXdeh+tUVlZ2aVvz58/HypUr8fLLLwMwPpgAQElJCW655Rb87ne/69VYKbkSeSyY1qxZg2OOOQZXX301br311l6MjlIlkcfB0KFD8cUXX9iWNTQ0IBQKxX0Dl/q2rh4X8+fPx5tvvomGhoboHGZ//etf8f777+Ppp5/Gr371q1QMl5Kkq8dBc3MzAGDKlCnR5V6vF2PGjMH27duTOkZKvq4eB3feeSc+//xzeL1e23UHHnggLrzwQn5A7ee6+36hqqoKc+fOxZw5c/D4448neXSUbiUlJVAUJa66qqamhu8BB6Ef/ehHeOONN/Dxxx9jxIgR6R4OpdjSpUtRU1NjaxseDofx8ccf4+GHH0YgEICiKGkcIaVCeXm57bMBYMx7+Morr6RpRJQOP//5z/GrX/0q+h5y+vTp2LZtG+655x5ceumlaR4dDUYMrvq4kpISlJSUJGRbr7zyCvx+f/TykiVLcMUVV2DRokUYO3ZsQu6DkieRxwJgVFodc8wxuPTSS3HXXXclbLuUXIk8DubMmYO77roLu3fvRnl5OQDgvffeg9fr5XxH/UxXj4vW1lYAiJvjUJblaBUO9V9dPQ4OOOAAeL1erF+/HocffjgAIBQKYevWraioqEj2MCnJunoc/PnPf8add94ZvVxVVYUTTjgBL774Ig4++OBkDpFSoDvvF3bt2oW5c+dGqy85D+7A5/F4cMABB+D999/HmWeeGV1uthOmwUHXdfzoRz/Cq6++igULFmD06NHpHhKlwbx587By5UrbsssvvxyTJk3CL3/5S4ZWg8Rhhx2G9evX25Zt2LCBnw0GmdbW1rj3gYqi8FwBpQ2DqwFk+/btqK+vx/bt2xEOh7Fs2TIAwLhx45CTkxMXTu3duxeA8S0Kzm0ysHR2LKxevRpz587F8ccfj5tuuin6bUtFUTBkyJA0jpwSqbPj4Pjjj8eUKVNw8cUX47777kN9fT1+9rOf4eqrr45W49DAMmfOHBQWFuLSSy/FbbfdhszMTDzxxBPYsmULTj755HQPj1IkLy8P11xzDX77299i5MiRqKiowH333QcAOPvss9M8OkqVUaNG2S7n5OQAAMaOHctv3A8iVVVVOProozFq1Cjcf//9qK2tjV43dOjQNI6Mku2mm27CxRdfjAMPPDBaabd9+3Zcc8016R4apch1112Hf/3rX3j99deRm5sb/UyYn5+PzMzMNI+OUiU3NzduXrPs7GwUFxdzvrNB5Cc/+QkOPfRQ3H333TjnnHPw5Zdf4vHHH2cV9iBz6qmn4q677sKoUaMwdepUfPPNN/i///s/XHHFFekeGg1SDK4GkNtuu83W1mW//fYDAHz00Uc4+uij0zQqSofOjoWXXnoJtbW1eO655/Dcc89F16uoqODk7ANIZ8eBoih46623cO211+Kwww5DZmYmLrjgAtx///3pGjIlWUlJCf73v//hlltuwTHHHINQKISpU6fi9ddfx8yZM9M9PEqh++67Dy6XCxdffDH8fj8OPvhgzJ8/H4WFhekeGhGl0HvvvYeNGzdi48aNcYGl2VacBqZzzz0XdXV1uOOOO7B7925MmzYNb7/9Nr9dP4iYc9eI5wqeeuopXHbZZakfEBGlzUEHHYRXX30VN998M+644w6MHj0af/zjH3HhhReme2iUQg899BB+85vf4Nprr0VNTQ2GDRuGH/zgB7jtttvSPTQapCSdn0iIiIioB1paWqITuZvVGkRERJ3h6wcREREREXWEDcyJiIiIiIiIiIiIiIioT2BwRURERERERERERERERH0CgysiIiIiIiIiIiIiIiLqExhcERERERERERERERERUZ/A4IqIiIiIiIiIiIiIiIj6BAZXRERERERERERERERE1CcwuBqAAoEAbr/9dgQCgXQPhdKIxwEBPA7IwOOAAB4HZOBxQACPAzLwOCCAxwEZeByQiccCATwOqG+QdF3X0z0ISqympibk5+ejsbEReXl56R4OpQmPAwJ4HJAhWcdBS0sLdF2HJEnIyclJ2HYpOfj3gAAeB2RI93HA14++Id3HAfUNPA4I4HFAMTwWCOBxQH0DK66IiIiIiIiIiIiIiIioT2BwRURERERERERERERERH2CK90DSDRd19Hc3JzuYaRVU1OT7V8anHgcEMDjgAzJOg6srZ40TUvotinx+PeAAB4HZEj3ccDXj74h3ccB9Q08DgjgcUAxPBYIGPjHQW5uLiRJSvcwqBMDbo4rswcnERERERERERERERGRiXN39Q8DLrhixRUREVFqWL8xn5OTk+7hEBFRP8HXDyIiIiJKF1Zc9Q8DrlWgJElMTImIiFJAlmWeeCQiom7j6wcREREREXVETvcAiIiIiIiIiIiIiIiIiAAGV0RERERERERERERERNRHMLgiIiIiIiIiIiIiIiKiPoHBFREREREREREREREREfUJDK6IiIiIiIiIiIiIiIioT3ClewBEREREREQ0eEiSZPuXiIiIiIjIisEVERERERERpUx2dna6h0BERERERH0YWwUSERERERERERERERFRn8DgioiIiIiIiIiIiIiIiPoEBldERERERERERERERETUJzC4IiIiIiIiIiIiIiIioj6BwRURERERERERERERERH1CQyuiIiIiIiIiIiIiIiIqE9gcEVERERERERERERERER9gqTrup7uQRARDVqaBmzZA+zeF3+dBEAHIEnGZV03fpYiP8uycXtZAXTNWKbIQFg31pEly88KoIWN7cmS8Z+qGddJkTvSIteZ2zcvA/b1ZTly/xIQ1mLblKTYcuu6JuttIFxnXUfX7dsUr5cAaB2s0xW2cUqx/ewN8+VU03s+LnF7kmQ8x73Z1yRqmVAG3a0gpAGbmj3pHg4NcC5JggY9+ueK0i/6nECC1oc+UpgvZRIkqGkalxJ5bZUkCaqW/DEokZcHCYCaxLuLPefGy10yRB879G5fEnEcGG+nJEiSDrUbf3i6uw/m8wdJQriDB9bYJymy3fbXM58nCRLC7awX3VYH+9bZ/rskCTp0hPX42ymSBB2Iu3/zNgCit3MaS+wxjD1/4v2Z6yDy9tL6e6fpenSb0I3HQ5Yk6Lrxryb8CwB65H2m8QjH75PJLUsYXyLD7VKcHzgiIiIi6jUGV0RE6VLfDKzZkbjtmUGH+HNbCMhwGz9rmvHJ3u0yLje2AvlZsW3UNgJD8mOX/7sEOG5W7PbfVgG3/BP46zVASV5svWsfBfYbA1x2TGzbX20EbvuX8fOhk4CfngFkRsKN3fXAlQ/bx//AFcDkEbHL970KfLQydtnrAh75ITC0MLbsp38H1u7syqMTc+7hwAVHAe7IyYbFa4G7XureNkS/PQ84eELs8uPvAq990fPteVzAo8K+/uypxB4vCdDy1b3Qywuxp0XDsc/40j0cGsCmlLrwhxNjvw/VzWFc+0Y9guE0DmqQqyxU8NCpRdHLtb4wfvTfBviC6f9o8fCphagoNF6L2kI6Hv68GQu3BFJ2/14FeP68ErgjaURTQMNvP2jExjo1KfcnS8Bz5xQjx2t8IaQlqOHuj5qwsjqU0PuZVe7G748riF7e2aji+jca4kKL3pAl4Plzi5Hlie3LnfObsLqm+/vyl9MKMaqgd8fBFQdk48ypxvuksKbj/Y1t+MvnLR3eRpGAf51XjCx3bB9+P78JazrYh7+fVYQh2cb7ktaQhgcWNePLncG49e44Nh/7DTPeS4XCOp7+2ofX1/pt64zIV/DI6bHfzbrWMG54swGNbfYn6s7j8jGzPLatp5b68N919m1dfkA2vhvZf0039v/hz4z9nzfWixsPi70XXF0dwq/e3QcA+N60TFy6f070uk+2BvCHj5tQkCHh2XNKossb/Bp++b99uPGwXEwpNd5rBsM6/v5VC644MAeeyO9Qc0DDm+v8OH9mdvS262pDGF/sghL58lFjm4YcjxS9rGo6XIn4YlIHMlzAhCHupN4HERER0WDFVoFEROmSnZHY7Vmrcaw/e1yxn2U5FiwBQLbXvg3xm6MlebHQCgDGlhv/qsLZ4pmVQE2jfdvTRgGuyMvM7oZYaAUA5UVAab5tE9gnnAiaWWm/HFABv3ASZ+ZodFttUyy0AoAZlb2vuGoQx96DcVkFVaBVOLkmPh5Eg8iMofaKPl9IZ2iVZjOF50TV0CdCq4IMKRpaAUCGW8Lu5tQeLJNL3dHQCgCy3RJ2NSVvDKMLXdHQCgByPHJS7k/8PWwOxFfa9Nb4Ylc0tALMfel+4FeQIUVDK6Dnx8GMobH3QIosod7fednVuGJXNLQCjH2o6mAfynOVaGgFAFluGVUOY3XJiIY7AOBWJNT44tezjhkwKuPE0MotG8dpd7YlSxLqW2P7L/4NaLA8NuKx0uA3tj1dWO5VgMa2MCaUxJ4rjyLB65KioRUAZLklDM+zv0c1Gg3Y17FeVpKbWQEAMlx9qxKeiIiIaCBhcEVElC5et9HaL9k6+kwtBlVZQpA1sgQIWL4hLEvA9Apg+Vb7ejNGAyuFZRkeYMJw4+et1UZ1l5UYxIjbnOUQ/izf0vE2umKFcD+5mcDosu5vx0oc1/SK3odhTo8x0SAlnohdsSe+EoFSq68+J+KJ8daglrRKp/aIJ+2/rVPhDyUv1JtRbn8udjaqXQpYun0/KXjOxcduW4OKfW3df+zE7fTkOMj1Shhd5LItW7G788ovs4rJtLWTfZgpPK71rWHsbIwPkSaWuOG1BCWarmOVQ1WdGCit2BO/zqQhblswFNZ0rBLWy/FIGCPuv2Ud8bgzjwcxYLPeTjyGVteEMGmI21YZpWo6cr3291Cb6tW4bYaElooNwjEvpaC9cnEWgysiIiKiZGFwRUSUTnlZna/TW+IH90AHJ128QruTEcVGe0CrmaPjg5oZFUBLG7BpT/y6gDFHkxgYiVVJ4jZLC4ChBcI6wjYmj7RXlHXF3iZgV13HY+kucd+yvMD4Yb3bprivU0Z0f1+JBgCvYpxkterKyWNKHlkCppX1zedEPDG+qjqUtLmYujqGFbuTG+p1JajorSy3hHHF7YcYidJeGNLb7fTkOJhW5o7OfQQAAVXH+r2d73N3A774fXa+D3G9LfUqmgP2nZIATO/C8Sdua3O9Cp8Qrjrt/7paY2zD8xQUZ9m//GSOe9KQ+IDNbFspBorLd4filq2vVTG11L5sc72Kkmz7/RVn2k9lpOK7YKJsL+e4IiIiIkoWBldEROlknScqVcRwSgyy2oTL9Q4t/MSgJjvDaCMYF05Vxn6OC7sq7Ze31QL7hHmSxEBp1TZjji6Tx2WfF6urElG5ZdXgA7bVJHab4r66XUZQRzTITBLaroU1Hat6MN8NJc44oZ0b0HcqrsST4MkIVzriFPAsT+IYnKpblichKJta5ra1YQuGYyFGorhlYLIYUvfwsUvEcSBuY01NCGonhWxiC77O7lsCML2sa2OND8Ti1xtd5EKu1/676TTXWVyA5LCtGeXt7784lrrWcLQ9pXjdpjoVvqCOIdkyhuWJYVcwbv01NUFb60DAON6s6lvDGJ5vX6cwM7WnNlw8k0JERESUVHy7RUSUTkU5na+TCFoHZ1rEdoF+YW4lMeiqKDUmFthea18+szI+EJo8AvBGTiyIFUQlecDwYvuyzgIlXwDYuFtYpwfVUuJYplX0/qu64jZ7W8XV6rSvlb3bJlE/lOq2a9Q58UTz9n09a+eWaE4nxpenOFATA55QEgIeq/HFLmS67ZXVTu3jektsZ7e2JpTweeYmCpU6YU13DF06U5otozy398dBT1ojdqUFn9WoAgUFmZ2HwF6X0SrQyjFsEsZc1aSi1md/D5jpkuKCIaf7FJ9z6zpxwaCl4rK90FAcW1NAQ61Pw1gh6PUF9bjfoZIs+2MkzlcWUDVbdZiuJ//vUZ6XbQKJiIiIkonBFRFROrld8cFRMsjCn3trvxwxsMnOsF8eXQr42uzLZlQ6hEyjgZUdVAntqjPa9NluU2m/3JV5nTqr3OoKsTIs0wNM6G1rP2FcU0b2/rld5vAYEw0yXakyoNSKb/fVV6qthBPjbRq2NSQ4XelEXMBTm/iAx0p8LjbXq2gKJP6kvVh9k4zfQ/Gx21xvVOp0l9gqryfHQWGmjFEFQuVcF9phdqUFn2194fmrbg6juiX+y0ZThsRXnq5xrKTq/O/llFL7nFKhsI41QhVrQYYUt//mtiSH+zGDQa8LmDjEORQT93XlnpBjO0IxyFu/N4SpQlWa2PZRDM5TMb9VSQ5PpRARERElE99tERGlW34K5rkShTqYoFycR6m0ANggzHM1a3R8yDR1FBAKx8+JNcsStoiB0SwhiBHDn6IcYNQQYR1hGxOHG8FTdzS2AluqOx5Ld63cZj+T4nX3rI2hlfh4TBjW/X0l6sey3BLGx82r0zdCksHK7dCarq+EiU5zPaW6Diwu4Eny3F8zEzQnVEfyMySMLkz+76H42PW0xeJMh5Ctu8eBGMz4gho21Xfw3sm87y604LOtX+4cAMWNR9inDXtV+FX7XimSUfHX2f2L97l+bwgBVVzHfn++oIaNdcZKlYUK8jLEKjHjfqYKoZiqxUIxp2PVqR2hGDxu3xdGvnB/pTn2LwZZq9xSJYO9AomIiIiSiu+2iIjSbUh+6u9TbP/XJpwoaRXaBTb77ZdnjI4PajLcwKThHVcJidfNqDS+umva3QDU7BNuX2m/vGa7EZCZFNlo9dddcWPpZXDV0gZsSkAbQ6u1O+whoyID03uwr0T9lFPbtbWc3yqtxHZumt6zdm7JIFa7pLpNoFPAk8wxeBWjNZ3t/pIQlIlzMLWGNHy7t/MQpzu62r6uK9qrBurNNlZWh+KqfESO+9BBNaIsAdPKuhYCi9VoTvs0vsSFLLcwv5XDel2pyhLXWWXZf7FyqqopHG1HKF63vlZFmwoMz1NQnCW0b9wdituv9bVBjC2yLwsLBWg1LWGUCcFVque3cvMsChEREVHS8S0XEVG6FWSn5n46mudKDLICwkmMLK/9cnmhsWzzHvvymQ6VWOPKY7cXK67ysoDRZfZlnc0VFVCBdTuFdSrRbeL9TBkRX23W2232dk6qgAqsFfeV7QJp8Eh12zXqnPicbKrrWTu3RHM6MZ7saieRGPD4Q3rCAx6rSaXx7eNWJyHYFUOM1dUhhBP8lIvt66yVOt0xIkHHQVz1Xhe2McUhaF/TwfxmY4tcyPY4Vy5ZZXskjCkSAzGnsMk+5i0NKhqFFnq5Xgmje7At67g6qvJrb14wcXldaxi+oBbXjrBN+HUJqDqG5tofo+oW+4tAa6iD97dJkp/B+a2IiIiIko3BFRFRurmU3gcmXRE3z5Xlg744F0Bupv3yuHKg0WdfNqPSOahxqhIyK6JqGoGqeuE2nbQLnF5hfC25o3V6EhCt6mA+rp4SxzVxuFGJ1qttbrVf7smcXkT9VNzJ0xQHERQvFXMd9YR4YnyvL4yq5tSmnPEBTzDhAY/9/uzPxbd1KvwdzKfUU/FBRRLCMbF9Xa0a176uJ9vpyXFQliOjLFcIv7pQtRVXPeTQgs+2frnYEk9Fgz8+hJkmBGLBsI51DoFYXGjkUO3lNKfU+r32bZXlyBgq7n9kW07tCM3jIdsjYWxca9dQZGzxf8vFZb6gFtcCcHVNCFOF1qTiW8LmttQH5yXZPI1CRERElGx8x0VE1BekqurKShVOjlh74LjsJw5QkA18K7bBq3QIakYYIdiaDiqiOgudxKAmNxMYM9S+TGzzN7Y8PmzrTGsA2OiwT72xajugWk6QuRRj7q/eEB+vsUOBvG7uK1E/lOdUGcD5rdIqw4W4VmipbsfXno4qRFI2hhQEPLb760JQ0VtDsmUMy3MOIxIpEe39jO30/jgQt7HPr2H7vs7Dr6604OvoftpbX9zu2poQxCIjjwJM7sLcc+J9rq4Jxb0dnC6s09imYVtk/8cVt9+OcLpDKLauNgTJYR+W7wnG/b6sqg5huhCKVTWqyBKq0sqFUC3TnfrqJw/ntyIiIiJKOr7jIiLqC9Ixz5VY5RUUTnC0tNkv+4TLM0cDq4Wgxq0AU0YCKzoIp8RgalqFUZVlqmsGdu5t//YAsGFX/LxcM3ow91NciNbLNnyBELBuV2K3uWEX4Bf2dXpl77ZJ1A9MF050+kM6vq1LXts16lyi2rklmtOJ8VSHnCVZMoanIOAxZbkljC8WQ8RkzG9lf1ybAxq21Cf29zCni63wOiMh/u9GT46D+PmtguispqerLfhMLtn4fbKt385YuxJwTRrihkdsG+kw91xXws64/d8T239xLNsaVOyLVDyJt1sTCcUqChXkZcS3RBS3tbFOxUihdaAkdATY1aiiSGgFKW472bxK5+sQERERUe8xuCIi6gvyslJzPx3Nc5VhP4EAVTgxJY6xONf4b0OVfbnTPFdjhsZuL85zleU1WhFadTbPlaoZ1U0drdMV4v1MGAZkehxX7fo2E9DG0ErVjIAwkdsk6gfEk5prHCoDKLXE56Sn7dwSrb0T46kkBibNAQ1bGpL34EwtjZ9Pyal9XG+JrSFX7gl1GuJ0V1fa13VFZaGCPG/vj4P4cKfzbXR3HyaWuOF1xdbXdB2rHIKmggwJlYVCQNmFsGlTvQqf0DayMFOOm1PKuSpLrI6KrRNfVWid30oM2IzrxPnCdjeHISG+ckoV+mq2BDUMz7evU9dqfxFoCaT+RaEgk/NbEREREaUCgysior5AkQFvL+dC6gpxniu1g9Y3YlA1fhhQ22hfNmt0fFAzq9K5SsgMW/b5gK018duxErc5bZTx9WQrMQDrSXC1Znv8fFzTe1C5ZSWGYWPLgZyMXm5TfIx7WcVF1A+I87/0lZZ0g1n8XEd94zkRT4xXNYVR60vtCe2ZDgGPlsSpd8TnYm1tCMEkTOmVqBZ+HREfu56G1OJ2enIcjMxX4ip6ulLJJh6Dne2D+PxtqVfRHIg/YMS2fa0hDRsdKk/Ffe9KINUS1LBJqJ4bka+gOEuc38rYllsGJg9xbkdYkCGhotA5FHP6uyEGoo1t8SHV6upQ3P25FXto1BJM/fxWxZzfioiIiCgl+K6LiKivKMxJ/X3qwgf+sOUsixhy5WQAW6rty5yqq8aWG9Vbq7YJ61bGfu6sRZ8YSmV4gAnD7cvEbYwsMSrAuiOgAmvF+bh6GQqt2wm0WU4YyVLiw7ARPdhXon7Ese1aD1qHUeI4tnNLwzxSTvpCoJaKgMd+f/YT/8uT8PsxLFfBkGznECOREtXmMRHbEbdR6wtjd3P357dyqoqyry88f12c32p1dQhCYRIyndpGdqEqa1V1fLjqtP9Vkf2fNMReJRbWdKyMjFvcH1/QCNgUCZhaJj42IcfnStxGTYsWd39iuJXrTW31kwTAJb4/JiIiIqKk4LsuIqK+Ykhe6u/TLcxzJVZgNbXaL7cJJ1ZmVALrdhhzO5kU2aiQ6qjdnxg6TRlpzI8VvV8/sGlP+7cHjOub/fHj6S5xnD3ZhpUaNiq5rHobhm122Fe2C6QBLNVt16hzTq3QktGarrscT4ynOFArdwp4kjiGPKf5lJIQlIlt4epaw9jZlNiyLqf2dT0J4RJ1HMS1u+vCWIoy5bi5mTp6/r0uYOKQrgXzXQkondpGrnWYe06sCnO6z7h1OmgTuNnSjlC8zgzFxhW7kOW2n3JYuScYF1xtrVdRmmP/HVKEMxU7G9W4VpDZnhTPb+XqfB0iIiIiSgwGV0REfUVuZmrup6N5rsR2heK62ULLu9xMoDgvvvXfhOHAt8LcV8OLjfmsAODb3fbrPC6gstS+bKNw+wnDhLHp8eGWuE5XiOMcXQa4ejnztrh/PRmXlaYDG4Vtju/lNon6MLF6YHO9mtS2a9Q58TnZ2qD2iTnHhuUpcSfGN9WlNrgSH5u2kI6djUno2xcxtjj+7Pkmh/ZxvSXuVzLuY5wQwIU1HZvru38/wxN0HIwvsY9nY33n2xCfj872obLABZdsrxRyup9st4Rhefb3I2JrP8AIh6x2NIYREA6/XK+EMmFOqY0Oj4+4LetzPr7Y/h7R2rJQvJ15nbi81heGLElx7QjFPyXBsI5SoSVfk9BK0R9M/R+gVFd4EREREQ1mDK6IiPqKlrbU3E9HLU4CwkkMSVjX1xZ/ua4JGDXEvnzTHmBMmX3ZngagNWD8PFq4LhQGtu+1LxPX2SyEVBKA0aUdr9MV4jh31HY891dXdDb27pKctlntuCrRQLClwf47WFHgAk8Xppf4nIwsUKD0gSdld3MYAdV+QruyMLVlEWI1YIZbQnlu8j5mbW2If41Kxj6L+5WM+9i6z34fiixhVEH3vzxSlaDjYEt99/d5a0P39mF7YxhhrfOx+kI6alrCwnrx2xXvf3ieAiHDQ3NAx16fuK34+4x/zpUOrovdfmu9fdujI9eJfzeGZCtQNR37/B2HTh5Fwt5W+zo5QnVVZoqrrQCgxWEeMiIiIiJKDgZXRER9xd6m1N9nSDj5JVYa5WfZL3uEkxwrtwHjhgGZHmH5VmCG0B7P2pJPbJ23fqc9NMvJMObKau/2AFBRCuRnd7xOV4hj6ck2rMxWiYncZkUpUCDu6xbndYkGALHtWUGm3KOT2ZQ4K6vtz0mWW46rpkgHVQNWC23RxPZqybajMYwG4UR8MsfQ4NewXQh8xNZriSC2kivNUTA0J7EfH2t9GqqaxH3p/mOnasCaBBwHYou/rmzD2Af7+6mObucP6fi2rmv73JXxrKwOQbPMWep1SZg4JP546Mq2OlpnhTBv1oQSFzIjc1CJc7pNH+qGBGDD3lBcoDitzB3392RUgQt1rfbHMChM5jWqQIFPqLJqDaW26qqNHWuJiIiIUobBFRFRX1Hfkvr7FL8tb51QQBe+VeoPGgGK1fKtznNPtbQBMyqEdS1Bizg/kxjsTBtlH0tQBdbusK8zS7jf3fVATSO6xaUY82u1N86emDAs1hLRtGJr77YpPsa7G7q/r0T9SHWLhurmrp8IpuRrbNPjKi5mlveN50Q8oZ6MEKfTMexJ7RjiAoYkPBfbnQK5JNyPuC8zy3v22CXiORADmPJcJa5lXVfuu7N9iA+InNcXtzu9zA2hyyB8QT2ujeNMh+05PT7i20Dxd2loroKySFi5pjaEkCVMUmQJUyLziq0U9ifXK2N0kavdYFkMRWcMdcctK8lS4u5vh9CCs6kttcGVDkDtqOU2ERERESUMgysior5A04G2xE+sHn8/woftjuZyamq1X/62CigvtC9bviU+hFqxFRhXHj8flhne5GYCY4bGb8dKDGrW7IivDktEpdTkEfZ5vTTdqCLrDXFcW6qBxlbndbu8zUr75RWstqKBTzyB3NOT2ZQ4fSEgciKGAKMKXCjKTO3HnPgT8Z6ktrcUQ4ippW64krDLcYFMEp7z5cLzN7XM3aM2lMt39/442NYQRmNb98M68RjsbB/Ex3V8sQtZ7vgbiPuU45Uxpii+0rErQaa4Tl6GHNd6cNs+h/2PfGkgoALr9wohY+R42NuqYVeTc3gm/t2YWe6Oe86LsxTsEG4/rcyN9bX29cTqLXFes1Ro8LFdIBEREVEqMLgiIuoLxJAoWTqa36pNmN9KXLfBZ7+8zwfsqTfCH6tlW+LDm+21sYqyGRWwfV24LQSs22lfX7z9MiGokSVgekXH63RFXLXY7t7PNSaGTD0Zl1Wi9pWonxFPsk5zqDSg1BJPNk8udcPTBzo4bqpX0SK0EJue4lBNDFqT3d5y5R6H9nAlyW8XmIzKx5V7EtOGMhHHge4wnq4EtN3dh7U18dVLU8vi76fer2FnY+dtIcXjz9rGz9SVtow6Oq5cE4O0GeUdXBe5nfh3Y0S+CwFVR60w55b45z0vQ45riVmYJcWtk2oNKa7yIiIiIhqsGFwREfUFtWlo+xYUGvWLZx9zM+2XM4UTJSu2ApNGAm7LiZmwBqza5tAK0NomUAiLVm83JqcwFWQDlWJLQiGoGZ+gdnydtSzsLo8LmCy2HuzlNjuqXiMawMTgKtsjY6xDpQGlzurqEMJa7GS7R5EwyWEunVTTdGBVF1uvJUuq21u2BHVsrhdCiCRUJaYikEtUG0pNB1ZV9/44EIOWrmxjX5uOrd3Yh2AYWFvrXL0k6srcVGtqQlAtv5suWcKU0s7nuXKqZHVq49fe7ccWuZHrlSLXCVWAZR4oErDZIVB0ag04tsgdN1eYMM0VRuW74yrCmgOc54qIiIhoIGJwRUTUF+zzdb5OoinCS4C1wiosnARo9hsBitXyLfHzTG2oMlr6TRklrLs19vOMyvjtWInXtwaMNoVWYvi1tab7j2GGG5g4vOOxdNfkkUZ4ZTKDvN4QH+NtNfHVb0QDUINfi/u2PdsFpldrSMfGLsylkw5xJ+TTMCeaGPIkI0iy6uo8Sb1R3aKhusUeJiTjsU1UG0oxDOnJWMVtFGcpGJHXeVjX3Tm2ulrNtnx3520hAyqwvrbzILMrbRnFdYqyFIzIN/Z/w95QXLu+6e3Mc5XpljC+xOUcLJe7435fpg91x1WulecqaAvZ72+XUIHmC6a+dR/nuSIiIiJKPgZXRETpFtaAQKjz9XpL/JBtDa504UO/0/xWRbn2Zcu3OswztQWYNNwIhaL3a5k3qigHGDUkfjtWYhXUqm3GNjpapyeB09RR9jm+1LBR/dUb4rg27jaCt15tMwFzeRH1U12pNKDU6spcOukgngQvy1VQlpPiea6Ex2Z6kttbisHHxBI3vEkoShSDk2QEZOJj19M2lGJ41JPjoKo5jL1CG7uuhJBO+9DRFEziWEcXuZDnjT9gxCqyDLeECSVO81x1/jyt6kJLw93N4bg2fua2VA1YXeP8d7kpoGOLWAUYuc4pWBaDrlyvjN1CSDqlzI01wv2JVVi5Do9ZstW2MLgiIiIiSjYGV0RE6daYouqZjua3EoMzj3BCRJz3qbbRqHCKq8LaGh+0bN5jVGwB8dVULW3GvFJWnQU1bgWYIrTj61GbQOF+1u+Kn+ert9vsbQWXy2Ffe7tNon5EPBE7xaHSgFJLfE7GF7uQ6U7/5GPb94Wxzy+2I0ttqCaeiE92e0uxPZxbkTAlCa0b4+abG5r4QC5RbSgTdRz0JDRftad7+/BtnQq/UE3kNCdXU8ChLaTDeMQxjylyIcdjf6K62tKwowrGjqrj2gvPxGC5NEeBIgO7hDm33MKBleWWUdVsX6ck2/4ikO1J/YtCY1vqq7yIiIiIBht+9CciSre0zG8lBDRe4USJOKdSjnB5+VZgWoW9aiuoAmt3dBw8iW3vVgrVVKX5wLAi4fZCUDNphH28YS1W0dUdiZ7fKtMDTBiW2G2K+2qtXiMaBFbuCUGzVIR6XX1jTqXBbG1NCCFLyYMiS5jqMJdOOognzVPdWrLer2FHCttb+lUdG/aK7eESH9aJgVxOEgI5X0jHprhwpvuPnQ5gZXXvjwPxWJo+1I3OsjpfKD5g6ui+VQ1x1UTttTaMO7YdHpt1tfY2frIkOQZhXanMEsOp6ZawUgy1Rha4UJRpvB8U2wyalXPb94XRIASKM8s9DlWDLmwTgjVJeOTLc11xFXHivFfJFgx3vg4RERER9Q6DKyKidEvH/FYuof+OZDkpEBI+jdc1A+OFQGbZlvjgZ+0OYzuTOpg3SgyuxFBK3GZjK7ClWlhH2Mam3fEVYZ3JyQDGCtViy3pZySQGeSEVWJPg1oM92Veifqwl6FRp0DdCksEqEDZOkFv1ledEPGmejtaSqR6DGDAkY84xp0AuGc/58i7O+ZSK7YjhTJ5XxuguhHXdff7j2jC2E3SJ+zRxiBte4a2cUxDmdP/itpxaGor7n+uVMbrQ2P9N9SpagmJVmzHuVR1UzjkFZmIl1tQyT9x6I/IVtATs97en2f5eVZwHKxWCKtsFEhERESUTgysionRSw/FBUTKI81tZ2waK17X47Zc37wFyM+3LVmx1CKG2djxv1NACoLRAuI0YXAnbXLHV+Pq0ldP9dtf0Ctj6HAVCwLqd3d+OlTiutTuN2dITuU3Ob0WDEOe56nvi2oj1kXmuxBCnMFPGyPweTJTUmzGkuL2lGJSMKXIh25P41o2pmNtMfOwmlPSsDaW4nZ4cB7U+DVVN3Q/rxGNwQokLma7290F8XIfnuVCSFX/ArK6xB0JuRcJkh0rHrlRTObVlFLe1t1WLa+NnbkvTjbaItusigZs/pOPbOqHqbKgZXMX/LRer+TLdEupa7e9LJ5e6sVqY50uUn5mGea58DK6IiIiIkonBFRFROjW0pOZ+OprfSux3kimcjPLbT4JgV51RTTS6zL58uUMV1oaq2O3FUGqfD9hWa18mzoElBluJascnjmXNDiNk6424sW/t3fYy3MDEDqrXiAaJuFZSQ1zwJm/aIOoC8eT4mCIX8rzpn+dqT4uGmhb73/JUV4Otqo5vbzmxJHljWC+0h1NkCdPKklANJVbGJCGQS1Qbyt3NGmp9vT8O4oOWzrexpjZ+H6Z08HxsaVDRLFQTObX3cwqEulJNNarAhcJM+xPV1baM4t9e+1xWHcyB1U7I6RQsF2TI2CKMJcMtxQVrNcLzOTTXHkRmpGHywybOc0VERESUVAyuiIjSqbYp9fcZEL61miGcrMgQToTkZ9kvL98SH9L4g0ZIFTdvlCVo6eg6ABheDJTkCetstV/uqKKrOzobS3flZQJjhyZ2m4naV6J+bk1NCKrlJKZLljClj8ypNFht2KvGteZKRljSE+mu0GsO6HEn4ttr/5YIIQ1Ym4LWjU6B3IQEB3KBsBHEWfV0X+JDl+4fB2I129QyN5RO8tmACqzfK4Y67e+DpsfPIdbuPFdiW0GH7W6qV+Frp42fbVtd+D0R15la5onuvxhkluYoKMuRI7ezXze+2KiccwyWy91x608e4o5rEasIZy1KshXsFtoF1remduKpEAuuiIiIiJKKwRURUTo1tab+Pt0dlCqIodaeBmCCWPWzNT74WbXNqIYS542yBk8zOml7J25zb5NR3WUlBmbrdsWPuTOF2UBFacdj6a7plfbLbUFgw67ebVOsClu/C2jr5r4SDQB+VceGvZ1XGlDqqJrRusyqz7QLFE6CTx/qtnWGTc0YUjsHWCJCms44BnLJmOeqnRZ03d9O74+DVcI2stwyxhV3Xu7Z3ec/rr1fe/NcCdsdV+xCltBKUdONkLGz++9KS8OV1fZ1Mt0SxpcY+799Xxj7/Pbkxgzc1nVQOecUmIn7NbnUHbcPlYVuNAj3J1bVpSNIamN6RURERJQ0DK6IiNIlqPa+PV1XaEIrE+uZm7Dwgbs1YL+8rTa+deDyrfGhyvKtxrxR1q/EBkLA2h3Gz6OGAEU5wm2EiiRxPqcVWxEnbs6nHlQ1iWP3tQHfVnV/O1biuFZtN87s9kZcVdjW3m2PqB8TT+x2VMFAqdGVuXTSQWyVluuVMbowtb0lxRPxE0vcSW1vKT4XlYUuFGQkf56rmUmoJBPvY2yRu0dtKMXt9OQ42NemY2uDMF9TFwJaMUgcXeRCbgf7II51SLaC8tz4ObnW1YYQDHfeFrKjNn4mp5aGU4VtNbbp2CLuv60loHPgFggbY7XdrtzteJvpZW6srYmfc2tfm/091IQSF9YIYZY4dVhhhv3Uhq4nv5VfTQuDKyIiIqJkYXBFRJQuzf7U3I/1g7sYYonzV4lfR25osd9m8x5je4VCCLVsixFOWa3ZAYQiwVxlqT0kq9kH7G6wry/efpkQSnldQFmBfVlPgivxflZui39cervN3rYJdCvGmDbvAWoajWXi49GHpH9mGxrozDBC1XTUt4ZRnC3DE39el1LIfE7qWsPY0aiiwCsh25P+vwb1fg07G1UEVB0b60LYWh+KtjBLlTXVRnvL5oCGTXUh7GhUHYOIRPm2TkVrUIMvqGFjXQib6kJJuT8xkBue5+q0dV53bdgbsrWhDIV1VPYgeKxrNY4DU1jTUVnY/cdkuVCZNKqg822s32ufdyysAZUF7e/Djsawrc1dWNMx2mGswbAxD1hn4xHHnJshIV8IMgNqfFvGCodtiZVZIy3riMfDqPzYPooB8sjIdeJytyIhzyvHzd+l67AFa7oO7Gqyr5PtFYIqwNbOMhUzULWGUnEvRERERIOTpKfiq0hERORMDQPrdgD1PuPsvw5EP2rrADQNkCInG8KaUdGkaoAiAWHdCJp03VjX/FmSjMDIJRs/B1XjZ0jGOm1BY14rPbLNsGYEJYpstKKTYMytpMixYMsb+RauphvbA4zbyJKxXmtkPQn2bYeEijJzPi1dN86aiGQpNhZ/yB66mVwyIMvGGMUKsa6SIvskScZzII6zp9uEBIRVoLnNqDgLqsa2Q6rxs3k5GDIe60Aotp4aNh5fTTf2W9OMfRw/DDhsErBpT2rOwnRDy9mHQM/NgD+g4dVN/C4MJY8EYOIQN3bsUzF/UxumlrmR4+Uxl24TS9z4alcAa2pC0HUJZTkyynKVuPZlqTYsT4E/pOODjQH4Q1rcdxMkyXgpUWQJbtmYN81l+xdwKeKy2HWS1Pn+jS50YWuDii93BtGm6o4vZ5JkvJwrsgTFvF/J+FmJ3J95vTFeQJEsP8sSXJGX4cpCN/a0hLF4awBtYR2SDkAyfnckSYr8i9i/kn2f3LIUvR/jZViK3HfsZ5cM5GfI0bcdOizjF9ZVImPvymMlyvXIkbdAOvyq3uOXvmy3BFmSoOk6WkM9245HkZDpkqBqOtpUHeEubqS7+5DjkSHBCK06Wj/TJcGtSAhrgF+NP7ZNBRkyQmEdqqYj0M5bnNi22n98Otp/RTIq2YJhHcGwbis0d8lAtluGqgFtqma7Xb5XRlhHdJsAkOWW4JLtY8nzysbbIk1Hq6o73p+5jvm4WS8bv1/G8+9WJITCOjyKhJAGuGWjtaBHBlTduAxI0HU9+rZbMv8v6ZAgRX9/AOP3Z0yRjJxkllISERERDXIMroiIiExhzQj22oJGsNQWiv0cCBpBXiCyvDVgtBlsDRj/+YPG7TXNCBU1y8+KHAsDzTOOHpcx31j0XyX2s7nc44qfkbwP8U0ZDlWS0ObxYHVzRrqHQ4PAPr+GBZvbcPSYDBRk9t3fjcGmsU3DtgYVOxrDCIV1FGcrqChQMCxPgSvVE0xZaLpxcjsU1hEMG/+GwjpCGhAM68b3CmyXjWXByLL20ia3bFSKuBUj8PEoxmWPYr/OoxghlITYdxs03fj+gqrFxqZqxuWQBqiRyyFNhxq2L++IS5aMl5lIGCbLkvHdEkmCBB2SLEFGLLQynxVZMr81Y/yrwQgPNM2sYAHCuh79PoUGI0iQIqGUuE05stwM5VyRx8NrPiYuGR7ZKKJ2K3L0ejMcdCvGvx4lFqyZ17sj++gyA8fI492TcIyIiIiIiPo2BldERDRw6JEzgtbwKRAyQiWn8MnXBvgCgD9g/BsM2UMnawWUSwYUJVbxJQZM0fDJbXxd3RpKpfHEbVI1tKDm88349rzjERxSkO7R0CCwz6/ho81tmMvgqk8KazqqmsPY3hBGjS8MtyxhRL6CisicS/0pYNB1IzAyw6yQJoRfloArFKkAsQZhWjsfsdyyFAu9lEjoJUdCL8Ueernl2M8uWYemS+2GWiEz/DKDr3D7YVhH9T+KZIRDbrMaS4lVpZlBnSLrkCUjGJMlCZKlIkVGpBpLN0IwVTOOi3CkCiYc+T6H+bOuG5d13XjMNMtlQAzEIv8iVkUmS4DbZYzRE3k8jcdSMl6eZdm2P+bjaw2/rKGYWwjLzP2W+9GxS0REREQ0ELC2nYiI+hZNM9oIOoVPgUgFlPXnFrPqKWgEUKGwJXSyVD/JkhE8uS2tBt2WKqeSXHsVlMcVud4da7tIdpZ2Onx0KBUk4T/qW1yyhFH5LozKd8EX1LBtXxjb96nY2qAiL0NGZYELI/IVeF19/9mTJAleBfD2YBInXY8FRbGwyxJwCRVfzSHNFpK1F3pFw6NIqOWxhl+Riq9stz0EM6vAlMgXKHTdCJE6CrZCkWowayDmD+loDsSqxEKasa32yJJzAGQGRhke2TEwMoMys90gAGi6UQWmRgIvNdLlOKzr0Y7H5s9tKuALaZblqr0LbyQcM98eGGO1t1G0hWORMM5lDcRkIyzzRH72uCShWsx5nzsKyRiOERERERHZMbgiIqLEU8P2Cien8Mlsw9caiFU9meGTGTyFLQGUHmm5pyj2tnset1HplOUBCrIcwqe+33Kv3zJP6kkDt6iM+hbzhDKPub4v1ytjWpmMKaUu1LRo2LZPxarqEFZXhzAsT0FloYIh2XK/qsLqssg8Vd4exKt6JICxti8MdhB6+YI69lmu09qZ9EiR7ZVcHpe9zaEZnuR4pWhVmMdSneQ0Tk1Hh8FXyGF5MDJmawDW3pjNx9IthkC2MCgWAGV4pA4qp+JbCuqRFoiqbk75GQnFLIGY6hCOhTSgLWCEY2ZFWTQcg3HZrCQzAzMxHDMDMWs4prQTRlqryKJBV1wQFv84uWTEQrTI9WYrRyIiIiKivo7BFRERxdN1IKg6t9frKHxqjQRQAdVe9WT+C8Ta7Znhk1nV5FaM4Kk03wii3K5YKOUe4C33+ivLyS8+M5RqPOb6B0WSUJ6roDxXQZuqY/s+Fdsawvhkq4psj4yKAmM+rCwPv1wAROaNihQEZ7m7f5Qb7QKF0KudZa1BHfu0WOtDtaPQS7ZUHDmEK+bcXh4FyPbI0cokpQtzUGmatdVhey0QheVhHf5g/PUdEefKai/ksi7PsgZGkeXdrYzSoq0SjTGGdTi2UFR1ezvF1qCGJkuApulSNDDUIpc1XY++zYqfayy+ckyWAY8sGRVj5nPmMsIuryxFqsfiW0S2N9+YGXJalykMx4iIiIgoARhcERENVJoWCZZCsbZ7tqonS/jkD1gqnyJVT2o4vupJ02OVTooZPimxuZ0y3EBuZmTWdUvVk1n5xJZ7A4tsnhDrX3PXUP9lPd54zPU/mW4JE4d4MKFER71fw5aGML6tU7G2VkVZjlGFNSxXgcwvKfSYWTmV1YPbhq0BlyZUeoUtlV6R1oFNASAY1qKVVU5kyXkur/gQLDaHVrYnFoZ05/dc0+NbHEYDrw4CsYBqXh9r2dgRRXYIuzqpfopViUnIjMzJlcjjXBMqw+zBWCQws8wvZl7vV3W0BPXoulpkfjYN1o7LsYqyaMUYnMMxCUZYbZ3Dzfpce80gsIN51Kwhmdhq0Vyvu8cGEREREfU/DK6IiPqykGpvs9dR+NTaZm+51xaMr3gye9a4rO32Ij+bAVNeJlCc2374xJZ7ZIqcNDK/5U2UbOZxxmOuf5MkCSXZCkqyFcwqd2NnYxhbG1R8sSMIr0vCqAIFlYUu5Gfw9SaVXJFAIbMH9YyapiPYXntDIfRqU3U0B3Vby0MnttBLEUIvS7vDuCDMJSFLBiSpZ8ePtV1jKFKR5tgCUQjAWkORdS0BWUdFYIolrOk4CLMHYk4VToosWd6eJeePo/m4iJVh0VBMqCYz5yILhHX4QrotSNMtYZimx9othnWnUCy+ckwSjg2z7aVXkYy3rorc4Rxr7T2W4vUMx4iIiIjSh8EVEVEy6XosYIqb4ykYXxHVGgB8bcZ6rUEjuHIKn4BYBZMZPllDpiEZxmVb+OSOhE8Kz/hSYkSOIznyH1GyyYic1ASPuYHCq0gYW+TC2CIXmto0bGlQsW1fGBv3qijOkjG60IUR+QrcCl+3+jI5ErxkuXoQeukOrQwj/wYt83eFwjqCqg5fwB6IObEFG3JsriixCkgMvTyRgEOJXO5NCKTrkSDHbNdorfaKVLU5VYK1hXS0BHTb3GDhdiraACPkEauWnNogilVLTut1GNRIklFkj949Lh0xH7PonGNx84/ZK8asy5pVYJ+uRQK1cKSdolk1huhl87F0CsfkyA9meOayBKPR+cYirRU9stzOfGqxirO48NFhve62niQiIiIaLBhcERF1JqzFQqb2widzuVntZIZP/gAsvVfsVU/WaieXED7lZACFOfbAyfqfwpZ71AfIUmxODR6OlALW443H3MCTnyljVqYHM4bqqGoOY0t9GEurgli+BxiR78LoQgXFWTKrIAYYRTKqhTJ6MKeXphvhTtASdIU0HUEVkX+NMMi83hfSOg29gPhKr2jYJUeCC1ugYQ/C5Gg1sgQZxveFelLFZmWGNNYwy9oG0b48ss+qDp/W9QAMsAdaccGWZblTpZgZjLnknocx1scsmeGYGWCplhaL5vxj5s+qQxWZLwg0BYyqOk0LQ4OOsCbF2ilqOsKRucfMPbCFYxIgQTJCs8gyJfJYesUgNXKsOVWLuSJzzonLxJDMDCoVtl8lIiKifojBFRENfHrk665O7fWcwqfWSLs9c76nQMgSPAnhU7TqyWy3FwmfvG6gKBfwFNqrnrzu2M/8EEn9HVsFUoqxVeDgoCgSRha4MLLAhdaghq0NYWxpULG1QUWeV8LoIhcqCl3I6EF1Dw0sZujl7UHopeuxUEus+HJa1moJvUIdtAF0O1R3Oc3tFbesg3mvzDaOGb0Mc8ygzzH4srY/tFS5qRrgD2lxyzsSDbmi4YlD4NVeEGa5bTLmuzPDMZcCeJMUjgFGiBVfMRZroWhtsWhdzx+KzTumarH5y2KtFXVomoQwdOi6QzgG+5xjsmQ8jl4lFjDGBbKKPeiyPx/tz0FmhmVGYMvWikRERJRYDK6IqH8wW+45hU+BYGT+JzN8ChjhU6slhAqFY5/4dMunP6OXjHPVU5YXyM+OBE4O4RNb7tGgJxknSJCs70UT2UnCfzTwZXtkTC2TMaXUhRqfhs31KlbtCWHlnhCG5SkYU+hCWa7MdlvUbZJknMz39qANpR4JIGyVXg5tDs2fmyKhl7lcbyf3cTm0LjQqvBD7t50grCtVNYokQXH1PrAx97/jyq/45T5ViwZf5vXtPRaAwzxgQjWYdU4wx7mrIpfTEaoosgQFAJJYPWbODWaGYvZqsfbaLRrHpT+kR8Oz6FxjuvF8mM0izEoyMRyTI5Vj9mWWOcfEakXzuXIIK52CMHG+MY9lPjeGY0RERIMHgysiSp1oyz1xbidL+GSGUq2R8MkfabsXCCH2ycryCctsuRcNn4S5ngqygdL8+Gonr9lyT0n3o0LUf0V63cgSCwgpNcw5SXjMDUKShPJcBeW5CgKqjm37VGyuD+OTbQFkuiWMLjRaCeZ4OfsZpYBZ6dWDqj9r6BUS2xw6/NwcsLc3bK/SS7GEWo5tDh2qvzzdCL0c9z9BAVis2is+8HIKwPwhHU1hexvE9h4XwHi9cAq+2qv6ir9szkvVt4ITORK6egEkKxwzK76M+drM1olmSGYNzOLnHWtRY+FY2FIxZgvLIu0Yre0UZfNnh3AsWjHmis1f5zabXiiypY1ifAVZeyGZ27JeX3uOiYiIBjMGV0TUdbpuVC45tddzCp98bbHwqTUABFV7mz3zEwvMlnuKEUApsn0+p5yC2M9xlU8KIPMkFVFaSOZpEilSe0WUbFL0Xx5zg1eGS8LEEg8mFOto8GvYXB/Gt3tVrKkJoSzHqMIaka9wXhfqkyTJDJO6f1tdN07yR8MuNTanVzAyv5X5c1DV4QvqaFD1yGUjZHCiSEYQIFZ4GZcjQYFsCQtcsUCsN1UwtsfC3aNNRIW1WBvDWFtD50ow83JA1dESXc8M0dpPwCS0X/0VfzkSIDpd14/CEUWSYt/zS9LZI/O4toVfQggWbbGox1oshjTAF9QsIVo4UjlmtlS0/Bx5WuNaKtouG/+KVWOx6kbAI8vR61xCKOY035hZLSZezyphIiKizjG4IhpsNA0IqM7hUyBSAWX92WepfPIHAVW1VzuZP8uRlnvWyieP2wiYcjOB4jxL+BRZ7o4EUS623CPqlyQZsHzoJ0o2W6tAHnODniRJKM5WUJytYL/hbuxoDGNzvYrPdwTg2S2hosCFMUUuFGbyCy40MJjzM7kVCdk9uH1Y020VXu1WeqlAa0jHPlWLLg+3E+jIZujVTjWXWPllXSeRAY45D1hmD+Y7szJDErPKK9hOEGatBAtqOnwhQNU0W3DWESP4sFd5iS0O3ZH5weJbJMYCk4EQgMSOayBZlWNmOGadX8w+71j8MnO9thDgC2iR28eHY6oea9to7oE9DJPiwjGzGsxs9xn9vXEZ4ZjLEnJ2FJK5O1hvIBwbREQ0uDG4IuqP1HA7cztZAqc2Swjli8zzZIZPmmYPnfRI+z1r1ZP5r8dlBFDFubH2eh635We23CMatCLngs3WLkTJJkVSKx5zJHIrEsYUGUFVU0DDlnoVW+pVfFsXQlGmgjFFCioKXfD0YD4jooHCCHckZPXgtkboZVQ0BWxtDu0/B1XAr+pobNMQCgOBsN5uFZN1XiSvQztDrzmHl7UaLLI8WVVLZgDW2wBFM+cBC7df9WVWeZlhlzH3FBDSNNu6OtoPwWwhhhhu2QIwcS4we4A40CtUUxWOadbKMSEos1aRqWE9GngZxwDgD2mRyrOwrTu+2U7RmHvMOBq6UjmmWJ5j8/n2uizHgtJRtZgwX5wlQLW2YRzoxw0REaUXgyuidNB1o22eU3s9p/DJOt+T32y5J1Y9aca2PWb45DJneDaCpiyvMd+TWe1krXwyeoCw5R4RdY9kNgpM1ikAIjtJ+I/ISb5XxqxyD6aXubG7OYzN9WF8XRXCsqoQRhYoGFPkQmm23G9adRH1Beb8P+hBRVPYUpkUVPVooBWyVX8ZPwdUHU0BI/QyWyE6MdsMumXJOBnfXuglVICZrRCT/ftvttjz9jIsN+cBcw6+EA2/zGo5MwDzBYFQWLO1T9TbaRVpjtdW2SUEYU5VX/Y5ooxlvWkd2d9JkgRZMuZCS+a7FDPIigVilioyx7nIYtc1B7Ro20XNUoVmnXssHAnguhKOybIEjwy4XVJkzjHYfu+iVWAO8425HZY5zUE2mI8pIqLBjsEVUU9pkb4BTuGTNXQywyh/JHxqjbToU8NC1VPknaIiVDxZq54KsoHS/PbDJ7bcI6JUMifRjvxHlGyyeaKExxx1gaxIGFXgwqgCF1pDGrbUh7GpXsW2hjbkeGWMLXJhdJGCLDe/uEOUTHIkTMrqwcl8TY9VetnaHKr29oaByDotwUill2oEOk5hjSTFtzR0bG3ocm5zmNIWbJIERQa8vQxCzFZ5ZtjV7vxflvArpAH+kI4mzXhM1ciy9tpGGsOND7diQZhzZZhYEWYGFwwrnMmKFJkSLnmPjxlk2ecbM1soOoRiliozf0hDcyA2J1lsrrFY6KZFwjIzAAMi4ZgQjBnv+azzjFnnHzMqMd2KczWYtfWmNQizVynGAjMeb0REfQ+DKxrc1HA7czuF4ud/8kdCp9a2yLqhWPBkhk66DuiIBE4u4+tW7kg1k8cNZLiBvExLqz13fPik8OQJEfUTkb5tbNtGqcJWgdRT2R4Z04bKmFrmQo1Pw6Y6FatrQlhZHcKwXAVjihUMy1XY9oioj1EkCZlyz+au0vX22hvGh1/BsDFPVTCsRZe316IvLvByRapOzJ+dQrHI8nTNO5TIVnlhzTrvl70dYshxmVFh12JWgZnzgHUUgMFe5eVxancYvd7a/i5+zjDO9dR9SiQw9QBIVkBmhmNmwBWOHDdhXQjMov/G1guoGlqDQMhaLRYJyMKWsCys6bYwLPq5Bc7hWLSFYnT+MUQCbTluHjGP0nm1mBiSMRwjIuoeBlfUv5kt95za68WFT5HgyW9puxdSjaDJbLWnR8InSYoFTtH/IuFSfjYwJD8+cLL+zDckRDQYSLHQin/2KBVsJxt4zFEPSJKEobkKhuYqCKo6tu5TsakujEVbAshwG/NkjS1yIS+DXyQi6u8kSUKGDGS4JeR287a67hB0dRB6tYqhVztt+cwT415zbi9Lm0Nzni9jmWWdyPK+EqxH5wHrQZhopenOVV5xQZhQGdYasrdBbK+yzjpe27xO4rxf7bRIdAkVYX3l8R8ozHDMkLx5x8QgzFol5lQxFp13TNPRqprhmiZUjBnrmgEZoDu2VIQQkllDMZelytOtAB5ZtlWOdTwHmbCe5XoGtUQ0kDC4ovQLa7GqJjF8si0PGdVO/pA9fNI0+1xPZvikKJb5niIVUGawZAZP0cApUgFlhk+KzDNiRESd4RxXlGKS5V8ec9RbXpeEiSVuTCxxo75Vw6Z6FZvqVKypDqE0R8HYIhdGFShw93KOGiLqfyRJMj4eunpW6WXOOxVQ49scmtVfAdUIZpoiQUwgso7WTiVSXOilWEIvl31uL6/LXvXVF0MXRZKguICMHjzGVtF5wNqp9rIHY7FlLapZAWas21HgCBiPYXwbxNjP1hCivXWMVpOsvEkVc94xdxLnHdMjc4KFxOowSztFVXdYFgnMAqo575gWaakYCct0HZouRbfpFI4B8fOOuRxCWI/lb4VRLSbFVZB1FJJ5hPUYjhFRqjC4ot7TdaPlnlOlU3vhU2sw1n4vELKHTmLLPY8LcLliP3tcQJYXKMyxt9zzCpVPMr8pS0SUVJGKK1mS+AGGUkKSYnMg8JijRCrJVlCSreDA4R5s32fMhfX5jiCWVkkYXWiEWMVZMk82ElHnzHmpXECut3s3tYZetkov1Vr1FQvEWoK6pQJMj1R/xHPJQvtCh/m7rOGX0d4wdqK7T7M83r0hzgMW7KQCzFzPHwKaLC0Qg2EjyGiPLAmtD7tQ/eW0Dudl6iMkCQrMNpzJYYZj7VWJOc05ploqzPwhPTLvmBZtoRirIJOM2+kwzsMhvnJMDMkU2WiP6rLM/WfOO2YNa52DsNjcYrbKRmGOMga8RAQwuCKTrscHTNE2e5GQyWy51xYEfJFqp7ZI+z01bK92Mn+WZUv4FKl8MoOlohzAWxgJmyyVT2b45FZY9URE1JeZJzLYto1ShK0CKdlcioQxxS6MKXahOWDMhbWpXsW3e1UUZMoYV+zC6CJXrysEiIicSJJxQtjTw78xqhYfdJkhl1nRZYZcvqCGhkjlVzBsnPB2osixCi+PyzkAs7Y5tAZi/SlcSfg8YGEg2E7Y5RSEtak6mgOx8CvUwXNijFcIudqp8LLP2eR8XX95jgYr89h0JeDY7EjYDL70dirHIstCcct0BFTdODWoacacY5EgOBxpp6hqeqRZkjnvmBRrpYj4cEyWIvOImeGYJbg1K0utQVdH841FfxYqyRSGY0R9HoOrgSSsRcIms9rJIXyKVj0FjGons+1eW9B4NRGDJ103Xh09LsucT5GgKdMDFGTbW+6Jcz65kvi1EyIiSi/z23hg2zZKDbYKpFTK88rYb5gHM8vd2N0UxsY6FV/vCuLrqiBG5bswrtiF8lxWYRFR3+GWjSqdbHf3bxuOtMszgywj7LLP6RUw5/QK6tgXbXtohC9OZDk2f1f7lV7WMMy43N8DFfPkeWYCArD4Nog6gpZKMPO5Mq8Pqjp8QWubxPafH1NsniWnCq/4sMvTTrUYq+H7N/O49SbxXbYmhGLW+cdi85DFX2dc1tGmAg2WcEzVpNicY5Fta5oerRrrLBwTA1+P7XfBPp9Yh9ViQoWZuV5/Cu+J+iIGV32JHqlLt4ZPZhVUh+FT0Pg5qBrt9cTgCYiFSWYI5Ym01yvIAsryY5VOGe7YdV434FHYco+IiJzJUrTaiu/HKRUkyf4fUSookoQRBS6MKHDBH9KxuV7FxjoVH25qQ45HwthiI8TK9vA9MxH1X67ISdosT/dfYM3QK9bOMFbZFVDt1/lDOhrbYuuF2ulvKEn20MsdaWdor/SKhF6R5WabQ6N5S/9/o2A+Jxnu3u2LputQLXN5iUFYqJ3r/AEtrlqsgy6IUMzKrvZaHCpSO+GY2WrOWNYX52SjxFAirT0NyXmezXnCxODLXi3W/jxkgWCkraK5jm6EY+bcY+a/kbqx+PnGIrtmXhcXjEXnHgPcitzhfGPtVYuJIdlA+HtH5ITBVaJpGhBQncMns82e9edoy73IcjUcm9/JGkApslHp5LFWPUVa6+VmxSqdrC33vJaqJ/4RIyKiRIt8k00GOvwQS5QoMhA95hgRUDpkuyVML3NjWqkLtT4N39apWFMdwsrdIZTnKRhf7MLIfIUn3YhoUJEjJ1GzexCwaHos2AqoRkBiVn2J7Q0DkXZ6QUsY5kSCGXS1P4eXV2h7aG1zONBOAsuSBJcLyOhlUGDOwWadzyu+DaK9IiykGRV6ZmVYMLJM7+DDgyLZAy23HAsvrWFXeyGZGV6yFdzgJEtGuONNYmtFc068uAAsjOi8Y07BmflzWwhoDuhQNS0y35glFNNibRZNcfONRf5nBmUu8/fEJVRHKoBblm2VY9aQzGzHaA3FnNZjRSWlC4MrJ2rYeW4na+DUZgmh/JF5nszlmhYLn6yVT24XIl8PirTdiwRLeVlASV6k1Z6l2sn82ayUIiIi6ksk460yq18oVWzfaOQxR2kkSRLKchWU5SqYPdKDrQ3GPFgLtwSQ4YpVYRVmMmIlIuqIIknIlIHMHoZeIUvoZbYzDEXm9hIrvlqC9stO4YkkmXN6Ia59oTnPlxl+2Sq9Ij8P5JO7vZ2DzWSe9HdqdRhdZgnDzLCrNaTHhWMdzQMmWwMwa/hlC7niWyN6OA8YdSKRc+K1R9d1aLq9dWLs3/ZDMfu8Y0Y4ZgZhmqW6LBypxDT2J/Jvez9LZpWXc8WkMaehU7WYfVl7IZlLGfh/P6lnBmZwpetG2zyn9nrthU+tlsqnoBoLm3Qd0BBrued1G3+ZzPDJnMupJDc+cIr+HPmPLfeIiGigibZt45tMSj5JkqLHG4856iu8LgkTh3gwcYgHDX4N3+4NYVO9ijU1IQzJVjC+xIXKQhc8Co9ZIqJEMtuOZfRgTi/dGnqFdQTV2Bxe0XDLUvnlC+kIqFq0xaHeTslQNOCKhFziXF5exzaHxknbwVKtaz3pn9XLbYU1Yf4vod2hWBVmPr8tGhAKa9FlqtZ+CZiE2El2tyXQtJ7A9wjzgdlCssicSS6emKduMH9PklnHYIZjZhtFp7nGwkJwZoZk5vptqh5ZbgZtZjvFWECmae0HYtb2ioosRX9X7PPpxVouRoOuuCAsfg4yW5vFyPUyz130KwMvuFryLfC/r43fjmjwZGm957K03DPDJ68LyPYCRTmxIMprnfMpEkCx5R4REVFM5PsY1jefRMnEiivq64qyZBw8yosDR3iwozGMDXtVfLY9iK92BnHm1ExkcR4sIqI+QZIkeGXA65aQ283b6nqsVV5cyKVawzAdgTDQGNAQ9MWu19oJvfIyZJwxJXPQBFiJYM4D1pOKPStr9V4s6LIEYdF5wOxtEX3RKrBYYNZeqAkAOR4ZZ0zNhJtfZqE+wBqOeZNUOQbEwrDuhGLW6wJBPXLbWNCmavaKNE13mGPM4WdZkjB9qBsnTshM2v5S4gy84Kqu2TgaD51kD6HMKiiFHxaJiIgSIlL9wjmuKFUky398R0d9mSxLGFPowphCF3Y1qXh3QxuCKpDjSffIiIio1yQJigJkKBLQzb/r5jxRYshV1RTG2poQNA1w801OypnzgGUmoA1ie20Pq1vCWF0dQjisw8vgigYRcx7EZLVVBIzwub3WidaQbMNeFXWtHfQYpT5l4AVXAJDpBcYPS/coiIiIBrbIHFdg9QuliFndxyo/6k+8rthcgDxuiYgGN+s8UTne2HJdB9bVhvha0c9FK/kcAjCXAqyp4XNMlAxm69jOKsdqfcacX9Q/DMzgCjCaVhIREVHyyJK9LzVRkkmWf3nMUX/B45aIiLqKrxUDF98PEKUff/f6l4EZXPFruERERMkXea3ltwYpVazVVjzmqL+ItrjkcUtERO3ge5yBzzbnDp9jorSQJHCeg35kYAZXxmxr6R4EERHRwBapuJL5CZtSRJYkYxLhyH9E/YEUPW7B45aIiBzxPc7Ax+eYKP0kJlf9ysAMrmSeQCMiIko+Kfp/vupSKrDFCvVHUjs/ExERmfgeZ/Dgc0yUPvzd618GZnAFMLgiIiJKNrYKpBRjGx3qj3jcEhFRZ/haMfDxOSYi6p6BGVxJbBVIRESUdLIUaYHFD1+UGlLkK6o85qg/4XFLRERdwteKAY3vB4jSj797/cvADK4AHolERETJZlZcgSX3lBqS8B9Rf8DjloiIOsPXioGPzzFR+vF3r38ZmMGVWXtLREREySNJ0ZdcFjpTKlhbrPCYo/5Cjhy3Mo9bIiJqB18rBj4+x0Tpx7igfxmgwRVfBYiIiJJORrTdBb+6RKnAFivUH/G4JSKizvC1YuDjc0yUfvzV618GbnDFI5GIiCi5zOqXdI+DBg22WKH+iMctERF1hq8VgwOfY6L04u9e/zIwgyuAX18gIiJKNnOOK376ohQx397xm6rUr/C4JSKizvC1YsDj+1iiPoC/e/3KwAyu+CpARESUAsbrrQwJOt8BduqNtX58sjWAtbUhbN8XRnmujP9dXhq33hc7AnhrfRuW7Q5iT7OGPK+EKaVuXHNwDqaUuuPWD4V1PL+8Fa+t9WPHPhUeRcKYIhd+ekQuZpV7Oh3X59sDePjzFmzYG0KGS8KRo734yWG5KM5SErLfiSTDmFdNhnHcJcvy3UE8840P31SFsK9NQ36GjP3K3bh0/2zMFB7TZbuD+HRbABftl408r2y77sSnajCu2I2HTytM2lg7c+JTNahq1nDgcDf+flZx3PVvrPXj1vcbAQBPfrcQB43wJuR+X1/Tit980IR3LivB8DzjI8cVr9QBgOM4EuGt9X7Ut2q4eL/suOtm/HkPrpmdjWsPyU3KfXckVcctAOxpDuPpb3xYVxPChr0qmoM6fn9sHk6fkmVbryWg4V8rWvH59gC2NITRGtIxPE/BKRMzcOGsbHhdXRvnOxv8+PtXPmxpUJGfIeP48Rn40SE5yPLInd+YiIiiIh24U/JaQemRivcD5vsvkyIBhZkyDhzuwXVzclBR0D9PA+9qUnHSP/Y6vqdJlCeWtGBskQvHjM2wLV+yM4Ar/9OQ0PfJfc1fP2/Go1/6sOLHQztc79b39+GNtW3Ry24ZGJan4MQJGbjqwJwuv39Mp8H8DvXDjW14c50fq6tD2FSvQtWAbb8c5rju5noVf1jYhE+3BRAMA5OGuHD9nFwcNz7DcX2RL6jh/o+b8eZ6Pxr9GsYWu/DDg3Nx2pTMbo25Z3+xVm0DHnkHWLQG2NNgLBtWDBw1Fbj0GGD/sbF1734J+H+vAE0v9OiuesSc7TDVzr7X+PelX6Tm/u79D/DKZ0D1PiDbC6x+2HkMI68EfnIacNPpxuUNVcCbS4CzDwNGliR+XPNXAMu2xO7Pas4vgEMmAg9emfj7TbY9DcC/PgZO2A+YOqr32zvpd8Ds8cDvLgDW7wKeng+s3g6s3Qn4g8C/fw7MmdS1bY3s4PEcOxRYcJfxc2sA+NlTxv1U7wM03TgGTpsNXH08kNUHXoTPvhf4fD0wqgT45P/Fh9Cfr48d5w9cDpxzeOrH2F3icf/ZOuCc+7r3HAPAVxuBj1cDVx4H5Cf4zdpPnjQe28/uTex2+6N0/J368lvgpcXG7+b6XUBQBT79Q/f+Ri9aA9z/KrBmJ5DpAebNAG45GyjJS964ZePDFyuuuubNdX7sbdUwfagbug6omu74PZt/r2xFY5uOi2ZlY0yRCw1+DU9/7cNF/67Do2cU4uCRsb/VYU3HT97ah2+qgrj8gGzMGuaGP6RjdY0Kf8h5+1ZLdgZx7RsNOKLSiz+dUoh6v4YHFzfj6lcb8OJ5xfD0sQ8f5neTkvkdpeeW+XDvx82YVubGTYfnojxPwe7mMF5Y3opLX67HL4/KxQUzY8HI8t0hPPqlD2dMzUR+hvNHoXR/nyrbI2HprhB2NqoYKZyweG1NK3I8ElqCemIfV4dvFd86Nz+6LBneWd+GjXUhXLJ/fHD1z3OKUJajpOW5sD4Gybr/19a04jfvN9mWeSNPdVNAi7vfPS1hPLfMh1MmZeKS/bOR5Zbw9a4QHvmiBZ/tCOKJMwshdTLYN9f5cfO7jThraiZ+cWQutu4L44+fNGNdTQizR3pwzNgMTBoSH7Z3xaY6Fe9+68fpUzKjwedAZz6H/7u8xLbPf/60Gf9d60etT0OWW8KnPyzD5S8bIfBT30tsCHzjmw34cFMA583Iwi1zE//+4a+fN+ORL3yQALx1WQlG5tuf29aQhmP+VgtfUMdpkzNw1/EFCR9Dd4Q1Hcf8rRZXHpjt+Helt5L1PKZCMsa+uV7FE0ta8E1VCLW+MLLcEspzFcws9+CGQ3OQ4x3YpxsT8R5nyc4ArnilIXpZloCCDBkHDHfj+jm5GFNk/M7talJx4lN78fvj8nBGkkKArjLH/PezUh8KrK0J4Q8fN2F9rYqWoA4AeOG8Ykwt69lrV2fMz02LtwWwcEsAa2tVbG0wTh6vvKHjwED0zno/nrR8ceSE8Rn40Zyc6Puv3x+Xh9GFLgTDOr6pCuGJJS34cmcQb1xS0u771RP+XoMDR3hS/rd3TU0I//dJM1bsCcElAbNHevDTI3JtrxHR3wmH34/Ptgfw8Gf2L+HddHj3v4T3t698OG6cF/PG2U/MTyl145/nFGFskSvt7+mTpTvvUzNcwN++WwQAaAroeGe9H4996cPWhjDu/05B8gaZIAP1OeyK/21owzdVQUwtc8PjkrByT8hxvR2NKs58thalOQruPqEAWR4J//zGh6v/U4+/nlGI70zsPHz6wasNWL47iF8dbfwten2NHz/6bwM06N163en+p4C/f2Cc+B5fDvzwJGDyCONZX78LePlT4OhbgGV/BMZ0749uQkXPoqXr/lNw3+9+Azz0FvDjU4C50wGPy7jfuy9qfwzmsm93Aw++YZwwHzUk8WObv9IIYX56Rvx1f7seyMnsn38pahqNx21kCTCtonfb2l4LrNoO3H6+8Vis3Aa89w0wtQI4fArw/jI4viK35/Vb4pd9sxm4/XngxP1j21E149/vn2DshywBn28A/vRfI7R44ee9269EyckAtu8FPl1nPB5W/14M5GYCzf7+VV1pHev0SuM5mzCse+Nfusk4Bs85HChI8IfnZJ9R629SfWwtXgt8ssYIxXMyjXCzO2P4bD1wyR+NsOrvZwJ7m4C7XwbOux94+zbAm5wPX+ackhLA4KoLHv9uIeTIc3rt6w3YuDfk+BTfekxe3AetIyo9OOkfe/G3JT4cMir2of755a34ZFsAz55TZKsEOmpM18b0f580o6LAhQdPKYAr8qWfEfkKLv53PV5d48d5M9N7MkOU7BYrX1cFce/HzUaQd2rsMQGA70zMwA3/3Yc/LGzG5FI39h8Webyl2D+OY0ryn5OwpiOsocOQcf9hbmzYq+LVNX7ccFis4mj7PhVLd4Vw1rRMvLzKbww3QWO1nF+IbnNcSZIDiA5eymYN67z6MFlS0RrI3Ozvj8vDmCIXAqqOt9e34eVVfvztKx/OnpGFLHfsRNWIAgXvXjHEtuyQUV5keiQ8sKgZy3aHsP/w9h+zsKbj/z5pxqGjPPjdcUYgefAoIMcj4Zf/a8TSqhCG5ymY7FAl2hWbG1Q88oUPB43wYET+4AiujhqdgefOdaE0Oxawzt/UhieW+PD92dk4vNILjyJBkoDfHJP4ELiuNYyFWwIAgLfX+/HzI3OT9s3pLI9knMA41F4B+f63bVDDOlxy+j/SA8ZrQr1fw3HjM5I6lnTvZ08k+hhcWxPCxf+uw5giF354cDaG5SnY16ZjfW0I72xow+UHZCG3nZPtA0UiXytuODQHs0d6EAoDq2tCePTzFnyxow6vXlxifInDvE/0reMv1WO57YNG+EM67jupAMuqAnhsSWtS37eZ2124JYAVe0KYNMQNjwKsqVG7dZ9vrvPjV/9rxFnTMvHLo3KxtSGMBz9pxqZ6FSdPNEKX8SVuTIsEcLNHeqHpwF8+b8FHm9tw5tT2398n45jwh3Rkup03urlexRWv1GPSEBce+E4BAmEdf/msBZe9VI+XLyxBUZYcHZfT+JbsDOLa1xtwZKUX158a+RLeJ824+j8NePH87n8Jz2n/czPktL6PTKXOnnvj8ZFsj8eRo72oaq7Du9+24Re+MMpynAPDNlVHRl/4UmQfGEK6/OGk/Oj5iN+8v6/d4OqRz1vgV3U8e04xhuYaz+fRo704/u+1+P2HTThxQkZ0O07mb2rDoq0B/PnUgmiF5KEVXuxqCuPuj5pw6qRMKF0sOOrep4DP1wM3PQmcsD/w7E+MsMR01DTjZPirnxvf9E4rqfcVVyHV+I11dSOhN+8yUdVe/mD7j+WGXca/Vx1n/zb9pBHtjM3ymJjv9+QuPk6tge5V4nT0OMyo7Pp2ks0fBDLcXX9VNvdHSsDx9fZS43k7ZIKxrbMPBc6NVA69ucQIrrr6/ADAQePilz230BjrBUfGtlOYDTx2rX29o6YZx/tf3wF21AIV8W2rUkoCMLzYCK9e/AQ4cmrsuha/8fh8d05s/5JZXdndY78jEmJjzc9yfs66sg2ge8dGT7bdl4Q1QA0nL3hpj/X5SoWbTgN+dobx8yPvGMFVd57nu/4NjCkDnrgu9rpVMQQ4/W7g358Y1dDJEBlfsiqu6ls1/GlxMz7ZGkCdX0OOR0JFgQvXz8nBnIrY7+airQE89ZUPq6tDUDUdw/IUnDY5E1fPzomus2J3EI9+4cOy3UH4QzrKchQcNcaLm49OYkWaQLG83phhn9NLUEl2/HuPbK+MscUu7GkJ227zz2WtOGC4p0cfpqpbwlhVHcKNh+XArcQ2uv9wDyoLFczf1IbzZ/Wx4ArRvDQpJxWeXGJUAtw2L8/2mACAW5Hwm3l5OOHJWjy5xIcDzvDgL58146+f+wAAJzy1N7ruU98rxOyR3miw+8m2AP60uBmb61QMy1NwxYHZ+O40+2Nb6wvjL5+14OMtAdS1aijLUXDGlEx8/+DsaIC2q1HF8X/fi5sOz0FIA/6zyo89zWH85YxCHFHZzuuVBMiShNOnZOL1NX78+LCc6AeN19b4MTRXxpxRHry8yh93smzVHqMC5+tdQbSpOsYUuXD1Qdk4UfiW3fLdQdy7sBlrakLIz5Bx+pRMjMg3jmPrNi97yfiG/j/Ojn1DP6jq+NtXPryz3o+djWFkuiVMKHHjhsNysF/kuP7XMh/+t6ENW+rD8Id0jMhXcOrkDFyyf3b0ebrspTos2Wl8+Jr2xz3R7a/+ifFluqkP7sG1h2TjujmxE+Xf7g3hT4tbsDSyf6OLXLhkv2ycMTW2f1/uCODylxtw70n52Fin4tXVfrSGdEwvc+PWY/Iwuij2eWhtTQgPfdqClXtCaA5qKMiQMbnUjesOyU56paD5N3hCiRvThhqvmdkeGS+v8qPBr+OjTQGcMjm2X9mWVn7WE0ozIrcV/9aIVuwJodan4RdHZdrWO2FCBm57vxGBMBJy8q8/fUept4qzZRRn2/+Wb6xTAQAX7Zdl+0JDMkLg/65tg6oBR432YuGWAD7Y1IZTJnWvnUtnzOfyxAkZeH2tH9cfmmM78fGf1X7MG5eBjzYHkh76d8V7GwOYWubC8PzktM7tz98bS/Qx+Ow3PkiShH+cXWT7+3TChAz8+LBc6HrnVeRd0dEJ9HSLvsfp5NjvaB/M21UUuqLvDQ8a6UGeV8Jv3m/C62v8+MHBOR1Wr6Raor/c0Z3neGOdirOmZeLIMV7U+cPGOJC8x8Tcx1uOyUWu1/i7cuf8Jsfgqr0vJoU1HQ8sasahFR7cYfniSLZXwi/facT4YpfjfpjvDepatXbf6zUFdCzYEsC7G/y293qvrm7Fre814YnvFuKtdW2Yv6kNobBRGXXz0bm2av7LXqpDg1/Hb47Jw4OfNGNdbQhzx2Tg/pMLUNUUxp8WN+PTbUE0BzWMzFfgliW4ZR1/Pb0wWlU5NEfGBS/U45i/1SDDJeHwSi8u2T/yvll4X7m6WjW+hGf5wtlb6/xYtDVo+xJeZ+83pz5ovHd8fW0bXl9r/HzQCDf+cXZx9L2g+f7+ma99+MPCZrx9eUlc68UHFjXjma99WPD9UhRmGvvz2bYAnljiw6rqEMKajklD3PjRoTm2LyM6Cag6/rS4GZ/vCGJXYxiyBIwucuGqg7Lj2hlOfXAPzp+ZhRlD3XhiSQuqmsIYVeDCDYfl4Ogx9nUXbm7Dnz5tweZ6FaXZCs6fmdX116N21psx1IOlu0LY3RzG0FwFxz1Zg/HFbpw5NROPfmHc18X7ZeOmI3K79JkHMNpf/78FTVi8LQhFNgKyi/fLxnnP1+HO4/OiAeyv392H974N4JWLinHPR034alcI+V4JJ0zIwI2H5dp+h/76WQveWudHdYuGuz9qQkWhC5fsl4VzZ2TZOg0c9kg1Jgxx4dL9s3Hvx83YWBfCiDwXfnBwDs6dYf8Mt6c5jD8ubsaCzW3Y69NQmCXjgGEe/P74fGS5JRzy12qcMikT95xYYLvdjkYVRz5Wg18elYdrDs5BKnQUNll9tTOIKUPc0dAKABRZwtFjvPjbEh+WVXX8Bbd3N7Qh2yPhZOF95NnTM/Hj/wbwTVUIB47o2vmL7r3buP81QJGBP11lD62szjyk8+1oGvDnN4FnFwDbaoC8LODYmcBvzzNOWJu+8zugrhn48/eBW54FVmwFSvOBX30PuOho4H9fGyfrNlQBo8uA319o3M76ird5jzHuj1cbFRqjhgBXzAMuPzZ2P5+uBc76A/Dnq402Ta9/AVQ3AgvvMn5+4HVg9z/s+/DiIuDGJ4Ev7wNGClVL1gPhgdeAD1cAW6qNk6+VZcDlxwDnH2lf76CfGqHTeUcAf3wD+LbKaN12yznxj99BPwV2Gh/8MeMG49+fng787Ezgu/cYl/9zszCmyLjMcQPA9/4Qu/6PVwLnHmHcvr4FuOcSo83jqu3ACbOAR681Hot/fQys2wk0tQIjSoAT9wN+cnrs5P4NTxgVMQAw7PLY9s3H6aCfAodOAv50dey6nXXAPS8DC1fFnqMLjzSCUDnypnVHLTD758Bt5xr78fcPjGNj8gjgd+cDB3QSApj7/fzPjP14bxlQ3wxseRzY3WBUHH35rfFzQRYwvQK4+XvA5JHG7c1jBDBaqv3kSfvjDhjtER983diOPwCMHwb86BSjDZ/o7a+Ak/YHlMgfAcXyYSj6ioGev2MyA545E7tW/WiGny5Xx/fZGgDuexV46yugZh+Q6TWer2tOtP/uv7jIqAjcsde4/kenAIvXGBVUSx7o2j6cdwTwm+eMYy0/Ul30+pfGv2ccHAmu0PF4zeftoe8bVW2vfmYcY7PGAHdcYDzPphueAN78CnjzVuD2F4zqpknDgTd/Y7Rt+8vbwCufGvuUkwkcNxO49Rx7cBxSjdaoLy0GmtuM7f/u/Nj15ljNcb3yS+DQybHrv95k/P5/tdF4rIcWAsfNMv623f+q8bcIAA62VMZZt/H6F8AT7wFrdhj3ddB4o1XcdKFC0On5EcfYFebfiz9eCfz2hdjf6IuOAq77Tuz3F+je7/mt5xiP+fMfA1X1wDM3Go/NA68DH/7e+D1buNp4PTrncOA35wBba4zjZclGI6C9bJ4xBlNb0HhuPlljVPMpstFG8/qTjapEJ6n8FNebvwG7G4y/P7/+HuC2vDbPnmDs4ztfG49HMkgSJCnSLjAJm7/5f/uwpkbFDYfloLLQheaAhjXVITS2adHvYLy8qhW3vd+Eg0Z4cPu8PBRlydjaEMa3dWp0nU+2BnDt6w0YU+TCr47MQ3mejF1NYSzeFuy0x7Wq6V0aqyIBnbXVctLV7w43BzSsrQnh4JGe6G12N4exqymMuWO8+NMnzXhltR/7/BoqC1246kD7yXcnm/YaJ0QnDXHHjWNiiQtfV4X6XA9wyfJfoscW1nR8ucNonTAs1/kk5fBcBVPL3PhyRxC6puPsaVloatPxz2Wt+POpBRiSbYxqXJErOr71tSHct7AZVx+UjZJsGS+v9OM37zehosCFgyJv2Gt9YZz/fB0kCbj24ByMLFCwbHcIj35hfPC8+wTjxIS5zeeWtaKy0IVfHJmLbI+EygKl08fjrKmZeOJLHz7dGsSRo70IazpeX+PHWVMzo6GqbLmPL3YEcPWrDZgx1I3b5+Uh1yvj7fVt+OnbjQioevTD4sY6FVe+3IBheQruPiEfmS4Jzy9vxVvr/HHbNJmXVU3HNa81YOmuIC7ZLwsHjzTGtXxPCHuaw9H1djaGccpEIwxzK8C6WhWPfdmCrQ1h3HW88djcdkw+fvtBI7bvC+Oh0wri7guwHzdb6lVc+GI9ijNl/ProPBRkyvjvWj9uea8R9a1hXHVQju32f1rcgv2HufH74/LREtTwwKJmXPd6A966tASKLKE1pOGqV+oxIl/Bb47JQ3GWjL2+ML7YGURbSI/et9PzpOk6uvKnRgLa/XaibPlXFpYBxt8LGcDNkQ/3z59XhD8sNCqrxpe48MJ5xdjXpuG+j412g79+txF/XtyCkydl4NqDc2wf+v+3oQ33LzLWu+XdRvzpkxbMHunBXcfnY3lV0AitANz6XhNufc9Y77pDsnH9nFys2hPC35f6sHxPEHU+DcXZMmaVe3DT4bkYnmf83r26uhW/jtzu8pdjLa/utpyk+DRyEmhl5CTQ5MhJoDmdnATSdB2PfenDG2v92N0UhsdltCI7a2pmtBXcw5814y+f+/DKhcVG68TtQUgA5o7x4ldH5UW//W16e70fz3zTig21xonH/YYZbUbFOQmXR75A8Y3lCxRHj/Hi15EvUJj7/cEVJRie78K8J2tQ1WR0SzjysVrb43hJJAR+RgiBn/jKh7ctJ+UmlrhxoyUE7sirq1tRkiXjnhPycczfavDqKj9Ocwiulu4K4r5FzVhbE0JBhozvTsvEsFwFt30QG3t7zKPorKmZeGWVH59vC+LwSOi+pUHF11UhPPndHCzYHLD9vgZUHX+MnLzb2RiGIgGVkSB9nnDy7n8b2vDUUh8216tQNR0lWUr0+AS6dgwAgK7r+HBjGy6elQUZwPVvNGBNTQgfXDkk7sTPuc/XIaTp+M+FJdHx/uXzFry9vg01LWEUZsqYNy4DNx6agzyHqiFzyZc7Arj05QY8bX75IWJXo4pj/77X9jtg/i6/dEEx7l7QhK93hZDtkXDJflm4enYOlu0O4r6Pm7G2RkVpjoxrZufEvS+o9YXx8GctWLglgPpWDaU5Cs6ckokfCCcPnYjHoDnGnx+RC1kyvljT4NcwvsSFXx3V+ZybjW06cjwSctyS83tK4THvyt8A83f55QuK8fiXLfh8RxAeRcKiH5Q6/g6Zj+uXO4P48MpS23797IhcaLqOF1a0os6nYUa5G787Nh8j8hT8+dMWvL7WD39Ix8EjPfjdsfGV807mb2rD40t8WF8bgixJGF/swrhixfZ3vKN9cOL0WgAg+vjvbgrjo01teGBRMwDjJLsvoKMpoOEvn/tw5pRMLK0KoqYljFyPhIJMBaqmo6opDK9LwiEjPbjpiBy8vT4Q/R1SNeOj1fkzsrCqOoTVNSF4FAlNAR3/ubAIj33pM048S8DcsV7U+jR8tTOIcOR1L88b/x4koOr4xTv78Mm2IFpDxopZbglXHphlm6uyK4+P0+tOSZaMFXuM98EvrvDjxRX+6PrNAQ23vtuI+ZvaEAwDB4/04NdCOHNJJJy5+/h8/GFhE1bXhFCSpeCc6Zm48qBs29+IqibjpPbibUE0BTTkeiR4ZAlXzzbWM9ec+uAe/DTyxaRXIl9MeuSMQizfHcRfPvfhtYuM16SPtwTgV4HJQwBN07FjXxh3L2jC0l3Ga9X8TW22x9P8+/nOBmP541+04KPNAVx9UDZyPJLtvd6dC5qQ45bj3uuZz8tt7zdizigv7v9OAXY3h/HnT1tw+cv1eO2iEtvftlpfGL/63z5ceWA2fnJYDiRJwr5WDRe9WIdQGPjxoTkYnqdg/uY2PL/cj7FFSnSe2DZVx63vNUKWgFyvhPtOKsDCzQH89K19ccdJMAy0hnScPjkDHsvfrOIsGYpszOdzwcysLr3ffP68Ilz+cj1mj/TihwcbrwU5HjnufZUM4PTJmfi/T5rx+mo/brR0MghrOt5c68fcMV4UR0KrN9Ya1XHHjPXinhPy4ZKBf6/w4/v/acAT3y3s8H2LGtbR1KbjigOyUZYjIxQ22iLe8N99uOv4fJwhzBX08ZYAVleH8KM5uchyS3jyKx9u+O8+vH1pSfT4/Wx7AD96Yx9mlbvxwHcKoGnAk1/5sLc1bHuu29Pe57AdjcbvU3GmHL1uTU0Im+tVXHNwNkbkKch0y6jr4mee1pCGy1+uR2Obhp8ekYuKAgWLtgbwM4fjQILxmeJHrzfgrGlZuPyAbHy1M4hHvvAh1yvjukNioVBVUxhHVHrgdsmYNzYDX1cF8dsPmlDdotm6UgDGF9LunN+Eaw/JQUm2jBeWt+IX7+xDZaESbd2/pzmMU5+phRoGrpuTg0lD3Njn17BwSwCNbRqGZLtx9vQsPL+8FTfPzbPNh/zs1z64FcQFYaKwpqMrZySM7z0n5qxMSNPhccUfDd7IFwbX1XYcXK3fG8K4Ylfce4nJkRbiG/YmI7gKa8Ci1cB+Y4yTqb3xkyeBpz40TlieuL/RNu3OfxsnFBfdAxRbTgRXNwLXPgrceCowrAh47F3j8s464yTtT88A8jKBP/wHuOABI1QzT/at3wWceicwvMhoyVaaD3y0Erj1OeNkqxk4mC8V97xsBCD3Xmbcfkh+7Lq4J9/pKyoO6+7YC1w8FxgReUO0dKNx/3v2Ca30JOPE+rdVwI2nGSd1s7zOJy2fugF46gMjRHr+Z8b+lxfZv/LuNF5JAo6dZZzcvPtlI5yaETmhXVEau33NPuBHjwHXfscIb+TIbbdUGwHj908wxrZxN/DwW8A3W4BXfmVs56bTgdagEZq89ZvY3ZcVWsZnecz+f3v3HeZGdf59+DuSVlqttu+69w6uYGxcsLEx1bQAxqF3QiiBUH9AEgKEhNB7J9TQsU0xzXRcMYRicKHZBoNtXLZLK2l3Jb1/HPWVdtfEBCXv586Va/FoNDozc+bMzHlO2VovHfxXU0l98QwzfN0bn0pXPi19u0W69oTUY/vQW9LAbokg5bWzpWNvlj64wQRAs4p+//wHzD7ccZoJDDjzzFxPZYWmgr+iSKr1mR4KB1wlvfEX83sj+0m3nCqd+w8zX9heo8z2Ysd94Srp6Buk0f1NmosLpOffl357l+nZdeTkRFI2VJtjdvGMLJXSmfLWNnrhA7N/x0zJvI1IxFzT/ibpw6+le14zgaf25tO58ikTlLlkhhkusTEofbFeqvEmfuepaJBwv9HS5UdJDY0meNzULFm2jjfhOHS8dPmT0vNLE5XuTy6QDhwrFRUk1m1ze9HPrpllhue78ZREemZcI735l6QeZpYJPJ1wq3T8HmYYzpaQOVYn3iot/coEQsYOkn7YagJ4M66R5l2Z6Bl54cPm+Jwx3cz598UP0im3S95AWloznON3PpeOv9kEPK842gTxv99iAj2WJR0zVaptlB54Q3rwbKlLqfne4B7m81vnmsDMkZNNGRLrRXfI1dKrl0tDemyn85N2fLfUSWfdK50+3fQYeuUjU750LUvMP7at1/kDb5iA6+VHmmEh+3WRPl5jPvvtXdKMCdLx08yxufMVc54WrJBO2NOUW3OWmHtKvy7SAWPM95pD5to+Y7rUtdwcn/krzPm55dS0udLSyqlsQmGTP9pjs1KDeB3WwTLgy2gP3KG9W6+/Yy9zjf/M4138XD2uPt7QrJkj3CkPc3sljTnuawrr2vcaNLpHnh6ZmZiPZWJarPaqt+vVrciuZ46uSBn2aMbwth8SJWnErZs6lNar9y3WYW0Mu5FNR0/NVW/Xy98c0elJrWQ3e80Lhuk1YyrLC52Wnv28UZe+XqfmcES/buNBuDZgKkRL861W6SjJt6k20HpenF/a9m6Vm6w2EJa/xfTmaWvbPUvs+uzHZtUFw+pWbFe3aGX70M6OjEOa1fjDeuLICnWPrje2p1NLvg/q5S/92rWXuX/c+b5XdYGIXjqhMr7exD4u5TssXTe/QaeM9WhghSN+nbnslv5xWFmrXmFt6VPm0JieeZqzolFT+ru06LsmbfaGddhwt5ZvMi+bycXOX96u16AKhx6ZWR5/6Zjcz6WaQFg3L/LqkGFu2SxLdy/1KqKIHplZFu8tOLW/Swc9urXVNmNi/37ly4CWft+kq/Yu1swRibw6LW1ugeSekeFIRGN6OlXmtukP8+p08ZQileTbNKjSoSKXTU5HqM1K+thv3/G+V82hiB75dbm6FSXS3RCs1l3v+3TkqAIVuWzxYz6wwqHrk8btd9gsnftSrZZvatZO3Z1aWxNSbSCiv+1TmDI3wv47uLWpIaQPfmjKmm/vWuLVndGee23pXmzT26dm6RnfxquJJJW7bfHlzaGIznyhVkeMdOu0XT1qCUtNoYiOeqpK39aENKjCrkumFuujH5p034c+Eyg81Lz/fbKhSee/XKtBlQ5JYV0/vUS+5oiWrjP7N6xLngZW2PVNVUhnjPNoSj/zYt+1yFxX6xtC6ldu1wE7FKsk36YtvpCeXNaoXz9RpZdPrFSZ26ap/fN13qSwbl7o1Z+nFWtoZ3Nd9S41c0u8uNKvi1+r054DXLpm3xI57Kbi8TdzavSPGW1XAj3woU93LvHq9HEeje3pVHPYBDHrg617c5w9t0bTB7t15MgCfVPVotsWe7W6ulpPH1URv/buWerVrYu8OmyYW2eM86g5ZCqAjnumWs8cXWGuW5mewWc+H21AMaVY3YoSDSiyPR7ecXCZnvi0UbOW+3X/YWUqclrx4xg/7dH/bglHdFpSpdz43i61hCNattG0fh7dTlHx8YYmra4O6ZQxHpUX2LTPoHzNXRXQ+vqWlHLtyy3NOmV2tfqWOXTNfiXKd1h6+jO/5sYmau9g2dyv3KExPfI0Z4Vfk6N55LkVfvUotmtin8T1G8+z4YjqgqbyrnOhTc1h04L9nLm1unrfROVdLH9OH5Kv300olNMubWgIxfOn1PE8YOZZCmufwWaYwBnD3XrrhaCWft+kiUm9vtdUt+izH5v1xz2KZFkm4PW7F2v0/vdNOm2sR7v0dOrLLS26Y4lXyzY26akM80e29YrQ1vLmcETnzK3RESMLdMoYj176IqCbFnnlbY7o9a8D+s1Yj7oU2vXYp+a5YFAnR3zosC2+kI6IVR6OL1TvUrs+3WB6XqxvCOnv0crD9qSn/YlljepfbtcfppoKwFsXe3X6czV689ROpkzNYufueXpvbVAXvVqnI0aaXgP5WXrNbGsZcM5LNTpgiFtHjipoNf9ntvzaer98GlKZpz9PK1ZDMKJr32vQmS/UaFTXPDlslq7ep0TrG0K67r0GXfZGve4+pKytw6a5q/y66NU67dbHqRv3L1VTyAQ7n1vZrAN3dG/TPqQmPPE3pVoqWqnsbQrrnLm1GtE1T1JI+w3O1ytfBrS1MfpM6LZ0waQilRfYTOD+uybZLOmKvYrlzrN01/teHfZYtQLNEZ0x3lxDV7/boO9rQ3p+lV/nTSrSWRMKddPCBi3f1KLTnqvRMTt5dMTIAr35TVBPLGuUO89Scb6laQPy9V1NSMuiQ1X9a32TxkX3+4VVftPjsbND0wa4FJH0wkq/bl/ik79FunByagVzW8cn033n0Y99KnaZ4Nq+g1w6aReP3l0b0D1LG3XZG3WamBScuXWxVyfMqtacYyriw1VGIhFt8bbowldqdMIuHp0+zqO3Vgd10yKvKgtt8XeC6sawjo4Fa3YrlMMmPb2sUbcs9mqTL6TL90y9zh5LaphU6LLUp9SuZRvNZ+e9XKuDd3SrS6Fdj37SqPnfNuma9xq0ZF1QR40q0MljPDr/5Vr9EG3wEFZEoUhEdYGQvqpqUWNzREMqHTpvUqE++L5J58ytVUWBLeVZ74aF5r2qf4Uj5Vkvlq+Gd8nT1fuWxCvS+5fbddwzNXpsmU+/jY50EYmYQPRNB5RqQm9nvCL9xgUN2uQN65mjyjUyGkjtUWLXk8v8Wl0d0re1LfF5cFZXh7TXAKfeWt2ksT2dmtTXpUAoomc/96fkbX80qDmkU16rayLPJn1dZRqUdOR5c+fuJq3lbqv1c2TadVVeYNPUfi69sNKv3yeNZLB4XZM2+8yztWWZ9F39br2m9nfpzl8lyoSp/V067LEq3bLIm3I/SVecb9Pf90vkkVA4ogl9nKoPRvTPT3w6NK0xQrAlogcPL1NhtNfqsC4O7X7fFr32dUCnRc/PrYu8qiiw6cHDy+PvxZP6ObXnP0wDmY6+X4Wi9SANwYjmrvLrrW+CGtElL2UkgurGsF46sVL9yhLLLn+zrkPvPC+sDGhdbUj3H1oWf06Y1NelQEudCTSn3w9D0tkTi7Tf4Pz4NldsbtHLX/j1uwmJwNXf9yvRu2sCqvZHNLGPU+N7OxWJSA995NM5EwtTGqJW+8OafWxi3tFde7m06Lsf9cJKfzxwdeOCBtU0hvXqSZ00qDLRYCl5lIMTd/HooY98evazRp0SbRgXaInomc/9OnhHd7xnXja737tZP9SH2jslOne3Qp03afuMJjOoIk9L1gXlawqn9IL+8IcmSeb9ti21/rB6l7Z+Ly6J7mt730/W8cBVVb2p5E7vXSS1rryzt1H5+dV6E3w4dR/phpMSy0f2lab9yVRC/vnIxPLqBum5S03ATJJ2HiANOM20uP/0FhM4kMzf3S42lctDe5nfv+JJM9zY3MtM5ackTR1hKk/veFn6zb5mnphYWvt2lh44OzW98QIqyxt38htopnVvOy3x3+GwtFu0Z8T9r5vAVfJ3t9abwN2AbpmPXfKx6h7d71H9TLCl3fQqEYyL9cAZ0kMaM6j1ejU+6f6zpclpcwudf0jivyMRadxgM0fPIVebHh7Dekv9upoAodR62/F0JKXv3nmmt8Crl0ujB5hl00aaY/XIO9Jv9zXHI7Z+oVt6/AKTxyRTOb7fFWZerbZ6+8W+P3modMPJqZ9N3DG110sobHq57H6p9M93pL8cYwJRO0aHYezbpfW+XfqIOZ6zL00M0zVtZLT32iwzDGCs4vrlf5mh4iYNzXydJJ/Dn1or98R88xsHjs28jeeXSqfflfj3kZOlG09u//c++NpcQ6dPTyzbZ+fEf4fDJngysq/08O8T2xs3RJpwkTlf7f1G7OOiAumgsSbQctJepnL+49XSZUd0/BjFPqsozpye216Sbjol8bvNIXNdHrV7YhvPvW+CSg+eLR0wNrF8WG9p3ytMkPPEPU3Q+ZmFJs9eHi3Dpo4w19yZ96Tm+0zlx6WPmmDVq5dL+UkPSkdPMX97VCQC4CP6ps5Pt77KBNJO3ku6+rjE8qkjpPEXmZ6f9/9u+5yflOMrk8cfvyBx/U4Zboa5e+5904tT2vbr3JUnPX1Rau+hWLKOm5rIf1OGm+DVg29KD50j7R8NUu22owmMzVlirgHJ9NpLLo9DYTMMZV2jKY9jaY39VvL5ymbmtaYXYXuOmJT62+3Z1pr5Gq/5W1bYev2ywtTA8vZmxXpbxQ7a9jWya56eW+FXab5NE3u7NKxLXkpF/acbzETKR4/yyGZlfuBbW9OidXUhnT+pSPkZWg21Z9bRHZt0vGeJQ1naCGcUO24d+c4tixo094uALtujWCO6JMqHSPS7wVBE9x1aFn+ontTHpRmPb9Vd73t1xMjs8+HFftu09rRafWYlrZMrrLT/be9tm79t73fskdeWlopMabJkacfOefFzI0n5Dkv9yhzaUB+Or//umqDG9XKqS6FdoaTn+Cn9XLpufoM+/KFJgyry4utPG5Avp71j+Tn5XB4+vEB/eqNOtf6IZi/3a1wvp3qV5GlFNHAV24fvalq0pjqki3cvkiWrVZreXRPUt9UhDajI09LvmzSht0udPIl9dNgs7T/YrTve96Ycl/S/C9YG5bJLhw8vaPOYr9zcrNsWN+iTDU2qDaQ2GPiuJqRR3aLDEqrt6yr5s1i6uxelvg4dOqxA87+t1acbmrV7v/ykY+5K2e6Q6MvpxoawdpalvqUOlbgs3bCgQVt8YY3t6dTAiryU382WtiNGerRH2jAumTjtbe+blGibFGyJ6OP15uXSZZf2HJAf//3msHTW+MKU4P3dSxv0bU1InTw2PfbrSpW6bZrUJ18FTptuWGCG9dmtj0ufbmhWRNJeA/L11VavxvRwqdJj14xhpqwpctnliVY29y51aOfuqRUy0we7NX1w4mU+FI5oj/752u2ezXppVUDHj/aoosCuvtGX3YEVqdtIrQQqjy+f2i9fhz62VTcv9Gri0dmP5ScbmjW40qFzJiZe7Hfvm/lY7jPQrf/b3aw3ua9UWWDXha/W6rWvgjp4R7c2NpjeKsfuVKA/TUtULO3Wx6V9H9qiO5d4dcuBpqLqqrdMA4pnj65MaUBx+HBPq9+NnadhnZ3qWmjmnBrexanypIqN9Gvp5S/8Wvp9k/66d0lKpdyeAzo21N/sz01vgxnRa/Hw4QV6cVVAc5YHUlog373UJ7vN0sMzK+Lp2aN/fjxQ3V7ZnFxizhheYCqw/BEVuSw9v9KvI0cWxO/nydsqdtl1zb6l8e2EwhFN7O1SfTCiRz/26dDo/Amx/PmXvUpSgiSx/Cl1LA9I0ryvgxpc6VC/MnMdT+mXr8oCm+as8Gu3Pok8Nme5X3l26aAdzLFb+F2TFn7XpIsmF8V7bk7qI3Ursuu8l2v1wspAvFFJtrIx/ThmWm7JUnNIOne3Iu0zyJzncb1M+XzfBz49d2xlvNffiC5OTbxnk17+IhB/jrhjiU91gYhePqFTovKwd77yHZaund+gU8d44mVYJtnS7nFauveQ8njv0M6Fds18okoL1ja1GjIo2Sm7FGr5j816+cuAXv4yILslDenk0O798nXCzgUqj/Zg2pYyIJamQ4cW6Jy0+dTS0528PNN9q9hl012/SsxVWuM36ehf7tDdSRXSa6tDeuRjn3zBSHzYs3ThSETXz2/Q4EqH/nFYeXybPYsdOn5WtW5d5NXE3u3vQybp94KWkLR8U7Oufa9Bdkv6piqkLoU2XbtvifZ7eKtGdnXqosnFmvaPzZKkS6aYsuzTDU1aHM3Hz37eqNVVIV06tVhje7i0xz82q8xtxa+h0nyfvmpp0aMzK+IBiY/XN2v5Jq+KXLZ4D6kl68w9yd8c0fX7lWnvQWYfT5pVpcXrmrTkuyb9boIlf3NENy9s0B79XbrnEHOOQ+GIfrtroSbdu1mPfeLTRZOLO3x82rrvSKZs37m7S2trTMWwCc6UxtcfVJmno56q0j4PbVVDMPUZpC4Y1lVvN6Qsu/t9X7zMefgjnzZ5w3r2KHNsvq1p0Y/1YQ3pFNJTy/w6YXRhSg502S09cFh5yvuOJdMw4IiRBTppl0Lds9S8+w2qsOvxTxt1x0GJYzm0c56WrGtSRNIRT1anpGtAuUOP/bpCHqelyX3ztaE+pNe+DurkXTyJZ72IyTvpz3qx43zQDm5ZsnTSrGp9EK3AlqTbF/t0++LUBjinzK7RoUPduiY6PNrS75s0sMKhUd0S9/S6pGe6peua1L/MPFd6nJZGdnPpzdVNqg9E1LnQpoN2cOvZz/0p12dsZIzSfFurMtNmWaYRnqwOP2/GvpupXEj/bMbwAr3xTY2WfNcc7zk8Z4VfnTw2Telrnrk+3dCkukBEhw51pzxLS5Ym9zVDrvmbIynzjaZ79Su/HvnYpy+3tMR7H0rm2S49neN6OVXkTPT27ORxqKLAFn/naGwO6/NNzTp6VEHKe3GR065p/fP13Ep/h45PY3NEw2/ZlLTMDON31V4lKcdqSCeH+pel3kc6+s7z4Q8mH+zeL/WZ7sAhbj39WWo+iP3XtP75KekfUunQ++uCKcuWrAvqlkVera1p0R/m1aVse2tjWJ2ShuwfmukdrtyhH+oSQaR31wY0obcrJWiVrnepQ3sOyNc/P/Hp5DEeWZaZ57PGH9YJo7O/q8c8cHi5mlrabzCdbW6xn+L40R69/nVA571cqz/tYRouPPKRTx9F3y3+3Vk1tqV6avsMTLz7paa3UMxfj5HOOSjzuvNXmL/HTEldPmagqfh/d7n056TlXcsSQStJKi80FcG9KxNBKynRm2BLvTkCTc3SgpXSidMkj8tUkMbsvZOp6Px4tek5EzviB45tffRjR7PVciWWp3+W/O8FK6Rb5kqfrDHDYyWrakgEeSQTcBvUXR2SnK5MOSbTfiTP0dTWd0s9prdIum83myDMgpUmyJYcrPxmY+vhyNrKybHPFq2MBtDShvo7anfp4belRavMMYmtv/coKS/pYhze2/xdX9X278U+OmjX1uu1hMywabMWmV5lzUmR7K83Js0NFjt+afu2ZpNZ78qjzPKUvDbKVKCv+dH0jJFM4Gq/0dmH22zv/LTnix9M3j55r+zzM+05UnrjStMT6MNvpNtfMr1RHvl92z1DRveXZkd7s+w50gQhkudh++ZH6cca6Yz9EsFFycy1M3aQ6YHYkX2KHeOjp0i/+pvZp6cWmODybjtIy9amrpdN7LMZEzKnZ9Gq1t8/OC2PvPmpCQLuNzr13I7sa67fxV+YY714lVk+c7fU7x86Xjrn/tT02NLO8eqN5vr648y259TKVu68u9zk4yMnpabR7TRDc8b2c3udn2SdS1pfv0N7mWFGf+p1vt/o1nNaxa6LfXdOTePgHtKK71PLcqfDzPf0Q1q58MJSE0Rbsc70FozJz+tYOZruxpPNsJztKS/atuPa1v0lk9g69gzrW0ot/7e3aAu8n6vH1S0HlunupQ2atdyvWxd75cmztNegfP3f7kXq5LGrJtpjKL0FerJYa56uRbafFL8b2qVj86vZrW17AIsdr/a+c/viBt291KvzJhXpuLQH21jrrP7lqT19LMuMBX/vBz5V+0NZh6spiw53lalnVV3QzM+Tkz2urH+vbUc25QU2uR2Wfqhve26f9fUhuR2WSqM9WGKrZktTqbv1cXTaLQVbEi2CqxrDemdNUMOS5mZKVusPp2y/c+E2npvod/cb7NZVb9frkY99emdNQNfsV5raBiv631XR6+ba+Q26dn5Dxk3WBEz6a/1hVXpap6dToS1lmynJif672m+Gpmprct4N9SEd83SV+pXZ9cc9itWj2CGXw8yxdOVb9QqGklpWt3ddJaWl1h9Wpwzpjr301UV7X8Q+L0s7j67oJRc7j8X5Nj12hBnG5+ZFDaoLRNTZY9PMEQWaMdzdZr7tXGhTpaf9QGSsSM/2mST9+smqVp+dtItHnWIvs7FbbbQXiSStr2/RvUvN/G6zjq6Ilw2S6WVywwLTontSX5dGdjNl4ryvzf1vdXVzYttR3qZI1vT6msK6632v5n0d0Pq6UHyoKElaU9OSkhdjf1N6wWw0wcvDhrnjrX1j4pVALeGslUAju+bp3TVBXflWnfYcmK+du+W1rlyO/t7BQ1Pn79p/h3xdMs8Mo/mroW4t/DaolrB0SFpa8vMsje3p1NLvTS+ftdVJDSjamHclY1mS9PqRsb1bdNmCb4NyOaTDR7iz5/8sfE1hvfZVQKO758V7iI3r5VTvUrueW9mYMi/ehz80aXwvpyqS8ojdsjR9cL5uX+Jtv2xO2p/pQ/L113fqNfcLv3qW2LU1qZV6bKXkbb36pam8+yK98i5ppPNY/jz3pRodPqJAo7s7U+ZnkDqYByS98XVAM5LSk2e3dPCObj2+zCdvU1hFLptC4YheXOXXXgPy40NILv3ePGMmf1eS9h+Srz++bmnJ90EdMSq1N3R7+d7KlA+i95+p/fNT0tin1C6HzfR+jCkrsEUrLxP3t3fXBDS+l1Ndimwp+XdKf5eujVUetlERly3tU/u75EiqdI8NC7Shoe17qyvP0l2HlOubqmYt/LZJyzc16YPvm3TPUq+eWubTU0dVqn+5Y9vKgNjrQ1J5ly39iQWZ92tKP1fKvSp2rSQff0kaEF2+0RvS4AzDQkqmTNjsC+vEXTwp2yxwWhpQbnp1B1qi8zR1YB8y7c950eG0YnqW2HX99FJd8Eqtjt25IN7rz5JU6LJp2oB8zVnh1z0fePXiSr/WVpsGLddHhxT8pqpZoUhEnQpt6uyx6UdvOH4NhcIRdfLYNCq5l0o0HS3hRJqWft+kIpclbzCiKf1d8eUH7+jW4nVN2hp91omd475ldh355BZ9saVF/pbU/dyWc9zWfSeW1uTnuYN3TL12d+nhVI9iuyoKrHgPqcveqNOG+pAemFGesqmbFjbo+7rEvez9WLAmemxiz7EH7+jWrOV+U14k/da0gfmtemTGPt8jltei/+5b5tA3VaGUY2mzzDtJS0S6bnqJBpQ75GuK6J6lXi1e16Rxd29qNTRx+rOemePJBMtiz3qxFHUqNO9cf9m7RL4m86x4yWt1aglHdEO0V/qf36hTXTCiWw8sTXl2qg2E1aM4rddwUjrqou8jtYGwKpPuMbZov4hYQCG5HLTS1knfcGzdjjxvJn8323Nrctk8pZ9LnT02zVnRqMn9XKoLhPX26oBOGO2Jl4Gx5+lzXqrN+nP1gYg8WQYKmPe1X+e+VKvpg/N16phCdfKYIRCfXNYYn5s2WdZ3juizckPQDE2d6fk39hzabjljSfkO6fEjKuLb71Fsz3gf7eRp/Y7e0XeeWD5onc7W+UCW5M6zWj1jOR2WgqHEess2NumU2dUaVOnQocPcmjncI6ddmvd1QHcs8SqQFhzK1BPKFX2Hi6luDLd6zsjkpDEeHf1UlRZ8G9Tu/fL16Mc+je6epxFd2x8ub1CFo8NDBW4vk/qaXqd/fadek+/dHE/HBZOLdN38BnVpZ59L3bb46C7J6vyxEV863qC444GrimJTCfr9ltafPXC2qQTcVCsdcX3b26mOtgzvWtr6s25lZu6RZGUZoo9Ou2lFnrIsuivN0Ttarc9U5P7jDfP/TNJbobfV26AjJVf6Zx+vlmZeZ1r/33yK6SWV55Be/Ui66QUp2Jz63S6l214Lk+3toK1lmZ6Ck2VKhzdghl3MzzNDDQ7oZvLDhioztFryvmT6nWxprvGaXnzp63Yri37uS12/vCh13VjPlEBT28cu9lmmffvzE2ZosnMOND2vYr3wzvtH2naznPOt9ebv5U+a/2dSHc1rm2qlD74ycwp1JK9ta36QzNxPkhmiMtv3ywoT19DkYWZItd/cYeaNS+5VlO7vx0vdK8wwiLe/ZPLDHiPNUJwDuprzJUmdS1v/dudSExjp0D5Fj/FuO5oego++Y4IOv43Nh9TG9ZdJtvSsWJeaXwtcrYec3FJveuUkz9mWrLrBfDe27+l5LM9hAu5tXatV0XKxR0UH3/az5MG9L8/8tdhwn9vt/CRJvyYlE3RKvna29TpvqywsS/s9p0MqcJr51pLlOcw8Y7F1X/pQOvUO6Ve7SmcfYPbXbpMefis6X1qGcry9Y9G/a8eHCtym47qN+bs82rowdhyT1fpSexZvb1bSQ+PP8BMVHpv+NK1Ef5pmKq/f+iagGxY0qLoxrAcPL49XEm3yZq8MqYiv89OGvRt6c+aH6nTX7FfSoaEH07WVptsXN+j2JV6dM7FQZ44vbPV5nzK73A6rzcpsm2Vl/WxwdGL1r7a2aI8BqZ99tdXMe/NzZZ2fykrKc9s7bQ67pXG9nVqwNqgfvaH48HHJNjaEtGJTs3bvl1Qx14FLtr3lZW6bhnRy6PxJmVsLd45WFLT1+NkeyzKVYgfs4Na9H3hV6LRaVfTEjm3s2jp9nEf7DMrce6VfuckfpW6btvpaX19bfeGsaY0/1hXY9NGGJkUUyTom+5urA2psjujOX5WlzJ3zxZZYL7Hs2291DJI+K3XbtCVDurf4TAOm8rTAZPp2kx8PY/+9Q+c83XpQmSKRiL7Y0qI5K/y6832vWsIR01sqy3m7c7FXty/xZk50kh7Fdr17WttDBV4/vUQDKhyy2yxt8YZ06pwa9S1PvZbdDis+3NH6uhYd93S1wpGIuhXb1D1tuMtKj6kEj1Uo7drLpbsPKdOdS0wl1/HP1mhQhUNnjC/UQTu61RKOaH2sJWqG/b3glVot+a5JZ00o1IiueSp0muNy6uwaBVpaD3+Vfn6rosNZnT23NutxaqsS6PTxhSpwmpauTy5rlN1mhu+8aPeieOVB7OfSK3by7JZK823xY1HlN/s54/HWwUIp6fEr+uLerb0GFBmu73g2a+MxUopWynk6WCmX5tWvAvI1RzR9iFsNwUQlw/5D8nXPUp8Wf9cUH6YnW6A6ucKrzVeypHR7nDYdMCRfs1c0xocITB9uNbateV/59ftY5d1YM9eEw6b4UIqx9WL589GPffq/V2vVFFJK/pQ6lgeWbWzShoZQSoBXMoHBBz/y6eUv/TpqlEcLvwtqsy+cEqSqDYTlsEkVntR7iGVZqvRkHoa31flW++WNlLmiLs9uqSRDw5O8pMpLyVxLb68JZn3OqengcMHpr/6tgvzR9AUzXN+ZDKrMiwbMPIpEInr4I5+ufrdBty5q0G0Hl21TGRD7ubYae7S3PPmekfIKEj296cMtx5Y3hbLvb6yXSXq6LMvMqROOSPXBsAqc9g7tQ0q6o38v2r0oPkxbudumbsV2bWwIKSKlXsPRPBW7hm9d1KDTdvVo5Sa75n+baOi38LumlLxSmm/p041NenJZoyIyeXH5pqZW5WhLOJJybeQ7TM+e5Hwba+jSHD1msXP80EeNWfdzW85xW/edan+41btMLDiTrNJjU7AlHG/Q5smzVFlga9XArdJj09pqpexzz6RgTey5onNhUuOxpO93zlC+xv4Zy4NlbrMkHGldBtQFIrLbTFXowAqHRnR1at5Xfi1e16SexXb9UB/S+ZMKTQO3pV7N+zqY8qz32+dqNKxLns6ZaN47Ys96sURsbTTvXH3L7IrIZHZfsxkSLHYsCpwmWDC0S17Ka3BpfuvnruSGMmUFsf2zmSG5o8cmVp5VNbZ+tnDn2SSFWpWrNf6wwpFIvBFeR543U455lnOQXDY77JZ+NdStRz/xqSEY1ktf+NUUivZcjj3nRgMff55WrJ26Z24IUNlG3n1xlWnYcetBpUoewu6Rj31Z09lWmVaSb94btzZmeG5vTDy3t8dmWfHelW3J9EzQ0XeeWD5I/36mfJD8eyn/Tlv+ypcBOezS2RMKVReMxOdYmvd1oN19yaa8wKYfG9ofxm+3Pi4NqXTokY99KsizafmmZt1yYGmHfuOXGCpQkg4fUaBDhrm1trpFeXZLfcscunNJgyxJu7YzP9UOnfL04iq/WsKRlHmuYu9vgzvQMCam44Eru80Mq/T2Z6bFfvI8VztEh1D7bnP72ymPVrz8WGsqaZNtrEkd9u6nsllSaaFJ868nSafsnXm9Pp1Sr6RMlYuxwEhTS2oPgFgALr0WIfnvc++b3kFPXpg69NerH7X+brbfzyZbzUV6GpKXd+QNKLYsffnClea8v/inxHCHklTvT/1upjS2lf6yIhPMSV/3xzrzt6Ko9THO9tbWoRI2wzCWzy4yw4RddmTq8qoGM7xYpmOa/N+xPHvuwYlhydINjA6D9spHJjiyx4i2a1W2ZZ+SNbWY/RnVz/QI6qhdojWWqze1/ZuFbjPv2aWHS5vrTG+kq56WjrlRWnpDogJ9S13r7WyJntP29in9eB+9u3T1s+bfR+6ePc+3ta1s6UkPumS601cUmXLrmYsz/0ZhvvlObN8315vgXkxLKLW8SP9rWVJl9Oayobpj+5N+DGJ58KHfZ5+nLDmN/875yZaetj7f1us803XakTKgrbQ9u8iU+Q+ck7ruvfOy70N7x+Kwv5veYu05crJ05+ntr5f+ux0tA3bsZf6u+iF16E7JDOO6Y89tL0s6Kvr29VNm8NpWPYvtOmG0R0vWBfXR+mbZJI3pnqcil6WnljXq4B3yUx7oYwaUO9S71K5ZnzfqlF08KUM0dcRzx3ZsqMBeJY5tOg6xVGT7zu1LGnTbYq/OGl+o32cZ+sRps7TXQJde+yqgDXWJeUgikYgWfBtU71J7SovFdN2L7BrV1TxUnjY20er3kw1NWlMd0kmjPf+Rc7stYk0XbPp58t0Z4wo1f21QV75Zp7t/VZZSCRwKR3TFG3WKRNeL/X5sktqmlkjGNMXSm75MScv36O/Se2uDZri5NlqgxT7JtM22JK9/7E4FqmoMaVxPp9zR6yF9uwPLHepbZtcXm1t00eS2X0zG93LqrdUBVftC8VaQoXBEr3zpj287efvJvze1n0svfRHQc8v9KcObJYutm++w4v8diUT0zGeNrfbNZbcUyHIe0ted2Nup178JaIs3lDK0xvMr/XI7LI3unhfPb+n7kZyujOfCsjSsc56Gdc7TnOWN+npri4Z3ycuab48aVaBpA9rocZ20f23tm2QqqkZGKw4/Cyd6PiWn14qW2xvqQzr26WqFIhFN6O3Shz80yYpEUsrSrb6QWsKm8iW2jX0G5mvP/i7tds8mdSs2efb8l2vVq8Su9fUhBRJ1CinpbQiG9c7qoM6ZWKgzxiWC8cGWSLyCKrZ+tuMbm+z88jYqgTp5bFmPk9Nm6dQxhTp1TKHqA2Et+i6oGxY26ORZ1Vr42y5y5yUGlKnyhdU9KYDdEo6oNhBWWfRYxCqk7jy4ND7UWjqbpEp3ogFFW9dtpryWLf+lX0sVbpsZviXSsUq5ZM9+bq6lv71Tr7+9U9/q81mfN8bnKit121TV2Ho/qqKB6vbK5vT9mTmiQM98XqUvt7TopgNKW+1j7N8vrvKrV4ldt6dX3oV88e3F7DMwX/sMzFewJaJPN5rJ2WP5c3R3Z4fywOtfBdSvzK4dOqXmsSGVeRrVNU9zlvt1zCiP5iz3q0uhTbv3dcXTUJZvU0tYqmlM7fEciUS01RfWyK55WcvE/GiZ3BxK3afaaAvl9Gs5fd/bWp7+/TK3TTu0UXnYpdDe4XOZ/Dfb/Wlb71vmS5ZOGVOoO5Z49fXWFtm0bWVALI12tS47XQ5L3mDrvBw71u3tV3vXZlv7Wx4NPGxJKxMsmd5BNsvko/b2IZPY+n1K7BqV1pK/zGXKtypfuNV+xRqbHDrUrYsmF+v6+fVa8G1QTx1VoTOfr1bXIrv+uk9itCCX3dKQTnmqD4Q188mt+q4mlLEcVdJxKMu3qTbadSp5X2K/HVseO8el+ZYemlGu5I3dvLBB879t6tA5ltq/7yQfg0TZH2q1ra2+sLb6QtrxptRAb/q/JanIaaXs85a0420l7XO526at3qT9z/BelZ7XdohW+MYaGsTWbwlHtKa6JdHDJvpZrPx8/tgKTXtgi15cGdAZ4wrj5U3ys57TbgKd6Xknloa5q/zaf7Bbxz5TraVJQwVuqG/KeGwOG+bW9dNLJUm79XHq7qU+rdzUHJ9rr2+pXXZLCkWkib1MOTqhl1OvfBnQknXBeCM9SZr7hT+eltg+Dyi3a/mmZq3a1Kxp0SGXa/xhfbKhSS1h00jPpo49b5r9N3kj2zlIv65nDi/Q/R/69PIXfs1Z7tfO3fM0qCJRzT6mR56KXZZWV7V0aEi4dDZZctpNz+aYLb6Q3vomGP28dTrbKn8LnTaN6pan178O6NIpxfH3Ym9TWO+sDmTcZqZtdWS9bOnp6DvPuJ4mH8xfE9DUpOG0X/4y0GrbHb0f2iQ5LEvJUwQHmiN6bkUHRtHJYmq/fD23olGrq1riPW6zOWkXj/7wep0agqaXalvD5yb7JYYKjHHYrHjv6/pgWE8sa9Q+g/IzzuucbN9B+XpyWaNe/TIQbzgkSbOWN6pLoU07Z7l/Z0zDNqX4gkPMsGfn/kP653mp84901JTh5u/TCxKV5ZL00Wozh82Fh277NluxTGXy5KFmCMMRfbIPyyYl+tNZVuu+dX2i88is+j4xN4skzfs48d1sQwXaLDPfUZ49sczfJD2zKMt3M2yrjV0021Dm72QaLiq2LBaACzZn/71s+5Q+pNajbyU+T14ntn13hsqO5OM8ZZh084vS59+aYEvMMwvMersPS9128n5k27+29ifT+bIsc0ySl8/7xARS+3fNvF/J6w7pYXobrViXmNsom5c+kPYdnfm4JKcnW1rbM+9jE3C79PBt+26s8n1A145/r2updOxUUzF+96umh82Q7mb5nCXS7w5I7Mu6LaanWdeyjm8/tt7RU0zvxcE9EnM8tXU+M20jW3qOnJx6/Sd/J2bfnc33I5HWQ90li80JN3uRGVIx5oWlJniVnO/T0z+4u+n19sR7Jp3pw+TFZMuDe40yZc13m6VDxmVP4/Y8P8naG2J1e1zn2cq8bOctPW02y9wHkodI3FQrvfZR9n1o71jcfIrpjdqeip95qMCeFeZ++uwi03M0to8ffm2GcT1j+k87rx1hS+rts51/oj4Y1jFPVengHd3qX+FQodPSZxubNf/boPYdZFpAF7ps+sPUYl06r07HPVutI0cWqNJj03c1Ia3a0qwr9zIv2H/Zq0S/mVOtw5/YqpN38ah7sV0b6kOa/20wPv9INqM60Jqso77e2qyvq8wL+xZfWIGWiF79yjwoD6pwxB8K//GhV7cs8mpKP5emDXDp041NKdtJnjD4/ElFem9tUCfNrtbvJ5qJnJ/+rFGrNrfo9oNLU2KWg27YqF17OeNDO0jSxVOKdPyz1frd3Bodu5NHVY1hXTe/XoMrHTp8RMHPFvP8qWJ57ae07eiIsT2dumxasa56u15HPFml40Yn8stjn/j06cZmXTatON5CT5J26GSeMR/+uFEzhrnlsJvhGwuTJrJtlda0W8/5k4q06LsmzXxiq04Y7VH/coeCoYh+qAvp3TVB/XWfEnVLGhLTyrTNdsTWH9YlT/cdWp41PbH1/rZPiU6aVa0TZ1VpxvACdS20qTYQ0TdVLVqxqTk+yfTvJhTqrdUBHftMtc6eWCi3w9I/P2mMD+WVcq7S9vvgoW7NXuHXZW/UaU1Niyb0diocMfPUDKxw6KAd3Zrc1yWnXTr3pVqdtqtHwRbp8U99qgu27tE1pJND874O6PFPfRrR1UzUPTK58iVp3d/vVqR31gR1zNNVOntikUrzTQ+Md9YEdcmUIhVHX6aT056trZhlSW+tDuixT8zLXK8SuyKS5n0VUH0worE9nfK3RFptI6Zrkb1Dw4y0JTk9sXLl+1oTQVq+qVkeZ6LCRzItVo95ukqbfSFds1+pvtzSrHfXBnXfh16N6+VS1yK7uhXZ9fxK8737PvCpyh/WtdG5Khx2S5dOLdb5r9Rpv2hL7X9+7NO7a4PauZtDn2xsadXDwrKkiMzQLcnLn/m8UaFIar6OVaYE03otjOlpKoG+qW7RCbtseyVQshK3Tfvv4NYmX1hXvV2v9fUtphyO/t6Lq/zxoeck01K3JWyCtZZlhgly2KR1tSFNH5K98qF/hUN9Su169vNGnTImewOKjO1WMi1LWy5JU/u7NPeLgGav8OvXbVTKpfumqlmfbGjWfoPzdfzOrb93xxKv3lwdiAfsxvVy6t01QdX4w/GemeFIRK9+FciczlY7mbo/u/RwauYItxqCkfi9PXnVRJlnmVfqpOeZLd6Q3oxW3mX6zfw8S+N7u1SSb9OCb4NaublZu/RIvadnywPzvg5o/yGZhx47fIRbl71Rr3+tb9JbqwM6ZYwnZWi83fq4dN+HPr2wyq9TxiQqyl/9yvQe3a2PK+P5laReJaYc+HJrs6b0TwSz316d2M/k+0DGfW/nHhlbPm2AmcOmb1nblYdZpaW93ftTO3ljszekzhkq3TZ5Q/I2RTS8i+mVsE1lQLbrR2bovFe/bFJTKBK/Jmv8YX28oUmFTlu7+9XRe0MmAyoc6lpo09wv/DptV088GBtsieib6pB26panAmfqie7oc0+2dEmSx2XTiK55euObgE4YXRBfv7E5rHfWmGs4Vj5PG5Cvez7w6e3VAVX5IxpYacv4TFzitqmiwK66QERbfOFW5Whymsb3dmrZj83Kd6Smbe6qxP0pdo4dNtOjKHn4wS3ekD5a3ywpcY9o7/i0d99JPlaxz19Y5U8p0z9a36T19SEdt7M7PrrCH1+vU0MgotsOLk35vdsWebVyc6KXyMRosGbFZhOsiT3HvvSFX5akCb1d+mprYhzEjNdP2j7u3D1PnT02fRe9x8fWfy3ae7ZroU0NTYnhjmPlZ1mBXWeMK9Q17zXo8U8b4+Xn4nXB+LNesCWiDfUh3b3Um/KsF/uNz39s1qXzanXIMLfG9MzTY582ymGzdMuBiXkFk49NeVJPxZPHePTcCr9OnVOt83YrUo9iu95ZE1AoYoZ87RztlXzY8ALd96FPKze3aLc+Ti38Nqh31ga04NumVuf6mJ08emFVQPd96NPwrnmqD0Z03wdeOe2W6sKR+MgCHXnelKQhncwcW2+vDqhToU2FTpv6J/VaT89nAysdGt09T3cv9WpjQ1hX71OS8nmhy6Yr9izWha/WqS4Y1n6DzVyJVY1hfbGlRVWN4ZSAcLppA1ya93VAf36zTtMH58fn1uxUaJOvJsOII9mug6RzeN6kIp00q1rHP1ulU8cWKhSO6N4PfHLnWaoNtN8zNuu9J9v6aet19J1nxnDTw/mCV2p1/qQi9Slz6L01QS2I9gRNHqa/rfth8vI9Brj0wEc+3f8vn0Z2zdOLK/2670OvnP/GI/gFk4v07tqAfv3EVp01oTAe0H9vbVCnjk2dK/LQYQW6dn6Dln7fpLMnFMpp79hBTG9E8+/4oa5FyzaacvS76Lx+L0eDwr1K7PGedFt9Id3/oU9jejjlcVpaXd2ie5Z6ZbOkq/ZOzbO3LjK9op84skLje5tnlz0G5GtyX5f++HqtvMGw+pQ59OIqv95bG9QtB5Zu0wgB2xZ5Gj/EzOlx0cPS5EulE/c0LbltlulB9eJSs15RG1HDQd2lk/Y0rdxtlplvat0W6a/Pmsq3s/bfpiRlFLsqrzlB2u8Kaf8rpZP3lnp3MvORrNlkKivnXpb0BWW+2+2zsxlS7ez7pD/MNJXDT7wnra9OfDf9O7F/77OzdOcr0m/uNHNtVXvN8GqxQfFbPeWo41d/R+7Q6evHlg2Nzgv1yNvmXOXnSX06J3pjZErH+CFmuKnzH5QunmGCcc8uNPPYZNv+rXPN+bVb0rC04GFs3bMOkJ5eaIaY/MPhZjixeZ9ID7wpnbJX0pxf7T2xtfck18aT9L47S0/ON8GDYb3N/Em3vST1KE9Na/+uJuA0a7E0pKdU6DIV/d3KpZtPlWZeK824xvQQ6lZuhkf7ar207FvpkXPNkHKLvjBDa6anoTFogsKS9K9vzN9Fq0yeKXCZ4xiz87nm7ye3tN7Nx941aZw5KfPxeOhNackX0h4jTY/HxqD5933zpHGDpQPGtH0c9/yTCbwN623yw1frTRB610GSJ9oK4g+/ls65Tzr2ZumEPcwwe9fMNsO/JR/PtiSfp+7l0hMXtv489h+x9RauNPNh/d9hJo8mr7i1PpGeer+Zqy3fKZ1/SPbrN+bw3cw5//V10un7mQBBnsPMq7ZgpbT/GOmgsabn6a8nSXe/Zj6fOlxa+YN0x0tSsTtt2xneKG44STryemnvP0tn7i/1rJR+2Gp6ud7/O7NO7Nq69zUzP1SeXRrY3Vy/fzjczD323WZpz1Hm/GypM40CClym/LLbt8/5ST8X7b0Zb5frfFvLvLS07TtamvuhdOGD0sHjzPm7/jmz394fO77NZLF567aHrfWJAPLK783fN5eZ3ngVRdKkoYl1K44xPV9f/FNi2RVHS4deLZ14q3Tq3maIyyufNPONHTt1289rR0W3G3sJ257yHZZ26u7Ucyv9Wl8XUnM4ou7Fdp2+a6F+O64wvktHjipQ1yKb7lnq06XzTG+YnsX2lHkypvR36emjK3TbYq+ufLtewZaIuhXZtdfAjs0XsL288mVAty5OHQ7sdy/WSpJ+P7FQ50YfSt+KVlC9tzao99YGlW7t/3WL/3ffcoeeObpC173XoD++XqfmcERDO+fp/sPKtOfA1CHeQhFTCZC8zxP6uPTg4eW6eWGDfvNctdwOS9MG5OvSqW3PxfJLMS/gHa/A+SlO3MWjUd3ydP+HPl39br1q/WGV5Ns0tqdTzx5drNFpFZ8T+rh05niPZi/36+nPGhWOSE8eWR5/cO9IMdmlyK4Xj6/U7UsadP+HPv3YEJLHaalXiUO793fFhyJqq0KqLe09YmZ6IZ/Yx6Xnj6vUnUu8uurtetUHwip12zSowqEDdkhcOzt0ztNjR1Tob+/U68JXalWSb9Ohw9zab0i+/jCvLuO5iv07z27pocPLddf7Xr24yq+HP/LJ47S0Y6c8TY3O2TCw0qG7flWmGxc26IwXalSWb9PBQ906daxHJ86qSdn+yWM8+rqqRTcsaFBDMKKIUq+X5OMwoMKhWcdU6Pr5Dbr8zToFWyIaUOHQ9dNLdHhSxX+2yor0ysx+ZQ6V5Fu67wOvNnlDyrNb6l/u0A37l2i3Pi49tazxZ823yU8YsXIl5p+fNOqfn5heNTOGm2eS1dF5lyTp/KS5UK6b75Xk1aFD89W71KG73vdqfG+n3l/XpHDEtHb/0RvSxN4udSu269QxHj2xzGx7wXdBHTbcrbPGF2ryvZv14iq/BlU6VJBnqUuhXV2K7Nq1p1P3f+BVudumniV2Lf2+Sc981qhil5WSr4dEA8JPfdaoQpdNLrvUq9ShMrdNV+xVrAtfqVNdIKzpQ/JVUWBTdWNYqza3qNrfdiXQKbOrNaTSoRFd81ReYNP6+pAe+sinHsX2+JBIsWM572szpMykvi59vbVFNy1o0I6dHTogOv9Jr1KHzptUpBsXNuj7OjPPSLHL0tbGsJZtbFZBnqXzor1Zrty7RL+ZXa0Zj2/VyWM86lFseqctWBvULQeVpZ5DKzV/pS9LOe/RZQcPNfOlXPZ6ndZWJ1XKbUytlEv3zOemsuK34zzaKUOltK85osXrmvTCSr9OGuPRWfFAdZXOmmBa7D/xaSJQbbNlH5422/5cF22Nn2nl2Dp7DoxW3r1Rp+lDTOXd7YtbV97dtCCRP7sW2VQfNEPN5dlMpblltZ8HVm1u1nfRYGSmfTl4qFt/e6de575Uo6aQWjXymNzPqd37uXTdew3yNUW0Sw+nvtjSrFsWejWss5lXI1uZ2LnIHu2V4FVJvk09Suxa/F1Qr32VaGGe/jrR3v0l/fjHlp8/qUgLv23S4Y9v1Ym7RCsPWyL6oT6kd1cH9dd9SzIOmZvtd9q7P7V3H/rD63WqD4Y1fbBbgysdslumnHrgXz7ZLDPEo2VFK4I7WAa0df0cNsytJ5c16vxXanXkyALV+sPRYXRTGy1k26+s94YO7K/dsnTJ1GKd+1KtTp1To6NGFagpFNFti71qaonogslFHS4D0mVLV8z5kwp18uwaXfhqnSQTiHji00YV5NlU4w9p9vJGDaxwaIdODu3ULU/3fuCTJ88E9d5fZ4bGvH5+vfqXO3TUqAKVF9i01RdSjT+csRxNTtMpYzx6+COfgi3S7OWNqvTY9PxKv9ZUt6SsW+iy6fDhbj31mV973L9ZvxrqVnM4omc/88thl5Q8S0U7x6c439bmfac+mNTIJvqd5T8265LXarX/Dm5trA/phgUN6lpo0/mTilUa7Q1W6LSpORRuFcwrK7DJnlQOnjLWBGtOmV2t8yYVyW5J89cG9enGZk3u69SXW5u1rjYxBNgXW5r1+Y9N8crjH+padHv03SG2jw67pUumFun8l+vksJl59dbWhHTNu/Wa1NepDdEhxWJ5MLn83HOgeab86zv16lFsk682kvKsV9UYlrepSTZLKc96sWNz7fRSPbfCr7+/W6+mkOmt/ec9i9W3LFHXl+3YVHrsmnVspa5/r17XL6iXNxhRr1K7TtvVo8c+9unU2TU6Y7xpoJRnk1x26ZMNzTrrxRpN6uvS7QeVasbjVbpvqTfea2psL6fOGOfR3Ut9OnVOTfT9zqVnPmuUw2Z69VpWx543JenPexbr8jfqdM5LtfI3RzSul1NPHVXR5nV1+IgC/WFenfId0oE7tn63PHR4gbqX2HXfUp/+9HqdfE0RVRTYNLRznma0My/lr0cWqNof1uOfNurZzxvVu9Sh08cV6seGkG5d7O14FUZSunfv59K9h5bpxgUNOmdujSo9dh23c4ECzZGs20zfVtbfybBq+nodfefxuGx64sgKXfV2va59r0GWZZ7Hrtq7WCfNqlFxfuqQp5nSlFw+SNJufV26bnqJblrQoGUbm/XW6qCOGlWgigK7/u/V2vZ3KIOuRXa9eFwn3bSwQXe971VttGHP2J7OVvM45edZ2muAS8+t9OvYnf+9xlc/1ZJ1TbrwldqUZWe+UCNJOny4WzceYK5bh83Syk3NevbzRtUHzBxxew/K1+8nFqo8bf7scCSiUESt5uG699AyXT+/QTcubFBdIKwB5Q7dflCZDh7asZ5mMdveZeqUvaVdB5seFne9YnqlWDJDY40bLM39U6JXVTY3n2J6Fzz6jnT/62ZOmb1GmXlytsdQgZZlgmJDe0kL/i5dN0f62zOmErfEY3qV7LNzUkv82PfUulV6qUeac6l0ySPSb+803z9+D2mfnaTf3Zfa+j/21di/9xgh3XW66Wlw5A1mPpcT95Q6FUtn3dv2d9vdx6T1U3ofZNlO8r717yJdc7x0z2vSgVdJobB09+nSMVOzf7+yWHr2YumP/zTHocBlghwP/94EMZP35YhJpvfGA2+YYx+JSJ/fZirXrbS0dC6R3viLdMWT0pVPSw2NUt8u0lVHmx4hHTlHbS2PiX/far3edSeaoNrNL0q+gDSqr/T4+WYIvORjUZhvhvu6ZpZ02NVmDIdLZpiAwNTh0jt/lW54Trr0n1Kt1wQCd+ghHTrBbOOVf5nf2Xfn1mmoqpdOuCV12TWzzd/eldLyOxLLQ6HUdMXEghxHTM48N5wkDe9tAgZ/ecr0zHLYzfVwwSHmeLfVM1Ey1/arH5lr399k8vRRu5uekrH0nDjNHO+bX5SOu9kEjC88xASWFq5sP4935FqwkvJF8jUUCpv8lp5v/nyk6bV11r1Sg98Enx46x+x7e79rs0tPX2TKvKcWSDe/YI5b93ITTBjeO/Gdu06XupRIT8w3waURfaV/ni+dfGtqHk3uqxxbtvdO0qtXSNfONuVNoNn8xv67pPZcuuBXZvuPvG1qoF++zMxTduGhZsi4u1+VZi+Wgi0mLaMHSCfvtf3OT8p5yHLMfo7r/KeUecnLj9/DXGcPvik99p7Ut7N0/q9MAOua2a232V6Zsr19+UPrMuCCB83fSTtKryTNXxYKS+FwavqmDJNmXSz97VkTAHW7pP1GS389pu0env8umyXLMv/f3rWx7jxLV+9b2qF1pw1wa9qAth+Adunh0iMz2x+K6+d0/uRinT+5/XGnnzk6y5CfWezY2amHZrY/pOF3F3fPuHxKv3xN6Zd5HqNcY/Kb+butw2Fti116uLRLj47nl4unlOjiKa0ryxef0SXj+pnOcaXHriv3KtWVe2X/nd6leVnPYzbZ0pDswB0KdOAOrXtbDOvi1F2HlGf4RqqxPV16/rhOrZYfs1Pq80im/XbnWbpgcrEuaOPa2HuQW3sPan2Nf3dx6rIyt133ZElvpuO2Y2enHjy87WtnYp/8jN9NPxeDKvN0+8GZf/vHhlD0EfTny7exFvs2y2ozj1zwsnk5zbRftX5TIfn6NwHN/SKgroV2nbZroX6/W1G8dftbqwN69GOfrn2vXtX+sIpdphfOWRMKNbZn4pq5fnqZblnUoOOfqVZzODHu/u0Hl+mKN+t0zXv1CoVNj5vHj6jQSbOqo7de8zt9yvJ0+Z7FevBfPh31ZJVCEemG/Us1c0SBZgz3qGeJQ/cs9eqP85Iqgbrk6fDhBW0e44m9XXr1K7+e/swvb1NYnTx2Terr0jkTC+VypFZY33uo2YfHP22UJWnPgfm6fM9i5TsSFRG/m1CkwZUOPfgvn+a+7FdTKKJOHrtGdsvTMTt54mnZo3++njm6UrcubtBf3jINKLpGG1DE1rGS/iaWKXpelbJficcc819Ou6WHZ1boriUNenGVXw995JPHadOOnR2a2j8/4zFpDkX0/Aq/hnZ2aHT3zOXdngPy1a3Ipmc+b9QpYws1vIs5X397u14Xvlyr4nybDhvm1vjeTv393QaV5NvaPP7Z9ifjukn7d8RIj6obw3osWnnXq9TMW/VjQ0i3LPLG19u5h7NV/hzRNU9PHlWhHTqZ56H28sBrXwXUs9ietcd1ab5d+w5264WVfo3p4UxpTR3byfsPK9ctCxs063O/7lziVVmBTYcOd+v/di+OzsmS2Ecp9VjccmCZLn+zTte+V69wxOS7Ow4u04GPbE3NGxm+2+7ypOPetcihl06o1G2Lvbrvg6TKw1KHpvRzmaHq2jqXab8Tz7/KXM5Z7Zzzk3bxaO6qgJ5a1qhN3pAamyMqL7BpdHenbj6gLKXRSEfLgLby2669XLrpgFLd9b5Xpz1Xrd4lDp27W5HeWRPQ++ua2t2v9pa3V94fOqxAHqelu5Z4dfbcGtktS0MqHZox3K0xPV0d2odM2jsPewxw655DpGvfq5dkejudPq5Qm7xhzV7eqOlD3Lr7fa98zREN75KnM8d79OjHjfqmqkUnz65Rl0Kbygvs2uIL60+v18vbZHo/F+RZeuboilblaOxYSFKXIpO33lwd1J/eqJPbYWnfwW79Ze9SnTqnOmXda6eXyWZJc1b4dVs0cFPsslRRYFNdILRNx6et+059MHF/jh2766aXas4Kv8550QSnJ/R26oq9SlIqa9u6zpLLrk4eh+YcV6lr32vQ9fMb1BAMq8hlab/B+Xrtq0QvopjnVgZkt1m6MVomW5YVrwxO3scZwz16almjPvyhWSc8W62SfJtmDC/QRbsX6eRZ1XLYLO0U3Uam8vOSqZ54+Zn8rLfb3Zs0vrdTNx5Qlrpf0d8ty7e1O1pFW+8xvUocui3Ds9LBO7r193frdeYLtXJYpvHUwzMr1Kesdf1UpceectwvmWoaCN24sEErNzfrhZV+7b+DW3+YmlreduR5c3gXp2Yf2/p5NtuzoGSeddOfd9NN6J2vCb1/2rvWmeOLdOb41vXk6e+U2dKX6T1gn0Fu7ZPhuboj76k3HVCmmw5od7U23z868s4jST1LHLo3bZSIO6JzLI3s6ozng2xpyvTufcRIjyo9dv3YEEo5b0eMTH0PWpQl/U9nyN/diu26fv/StndGZu7D96Kjx/y7Iy38VDNHFLQ5XGZMqdumfx7Rfv2CJJ03qTjj3Foep01X7FWiK/bK3qCsI6xIpCMzy/8Xee1jM0/Mye1cAcB/2oxrTAXyY+f/0in5ZZx+lwmMJAfhfm4LVkgHXCU9eq50yPj/3O8C/7/4scYEA0/eK3XuS+Bnsskb0hOf+nT0Tp6fZRxv4OfwY0NITy7z6didPerkId/mupsX1uuWRV59cnaXVq1KkdmxT1fph7oWvXta+4HyXLfnPzZran+XLpv271W0ANvqqy3NevlLv84YXxSff+g/oTkU0fSHtqhrkV2PdbCiEj/N2uoWPb+yUb8ZW6hC108YovMX8uznjbrwlVrNPb4y3hsM+Lk9/JGZx3JghUPNoYgWrwvq4Y98OnAHt25uJ4DalrdWB1oFrn5OVY0hralu0TOf+TVreaNePL5SI7pyHXXUT5ikCsBPMvuSXzoFAAAAAPCT/eWtOg3vkqduxXbV+sN6fqVfC74NZh/y77/MW6d2/qWTAPysLnqlVpP7utS50KYtvrAe+9Snb6pa/u1W8QCwPbnzLD3woVc/1IfU1BKdNmBcoc6euB1GavsPent1UBe+UqvOhTb9dZ8SglbbiMAVACBVbMjFbCxLsv/3tBADAADA9hGOSDcubNAWX0iWLA2qdOjmA0t12LD2h54B8MvzNYX1t3fqVO0Py2GzNLxLnh6eWa5JfX/ZIbW3VTgSUTjDK2skOt+KZOZpycRuJYa/Q/s6OrwYsD0dMbKg1RB+/424fv49BK4A/Gfcc+Z//jcnD5Pqn/rP/+5/u4Oukhauyv55+rxrAAAA/yOyjdUPY3vMVwDgl9ORuSv/G1z0Sq1mLff/pO/G5kwEAOQ2AlcAgFS3/kZqaOMlwJWX/TMAAAAAAH5G504q0gmjW89R09gc1vq6kCRpUGXm99ZepVSFAsB/A0prAECqQd1/6RQAAAAAAJBRrxKHetH5EwD+pzFJCQAAAAAAAAAAAHICgSsAAAAAAAAAAADkBAJXAAAAAAAAAAAAyAn/e4Erm2X+DwAAAAA5wGbxfgIAaIPFveJ/ncU5Bn5xNv0vBkP+d1mRSCTySycCAAD8F2pukaoapIoiKc/xS6cG/x9oDkVU7Q+r3G1Tnp0XfwAAAAAA/hcRuAIAAAAAAAAAAEBOoHccAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcgKBKwAAAAAAAAAAAOQEAlcAAAAAAAAAAADICQSuAAAAAAAAAAAAkBMIXAEAAAAAAAAAACAnELgCAAAAAAAAAABATiBwBQAAAAAAAAAAgJxA4AoAAAAAAAAAAAA5gcAVAAAAAAAAAAAAcsL/A0rps8O8mq1oAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 2000x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "shap.force_plot(explainer.expected_value, shap_values[1], X_train_xg.iloc[1], matplotlib=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predicted_class = model8.predict(X_train_xg.iloc[[1]])[0]\n",
    "predicted_class"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "label    0\n",
       "Name: 4198, dtype: int64"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "actual_value = y_train.iloc[1]\n",
    "actual_value"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_val = pd.read_csv(\"../validation_data/X_val.csv\")\n",
    "y_val = pd.read_csv(\"../validation_data/y_val.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_val.shape[1] == X_train.shape[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [],
   "source": [
    "best_model = [model8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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v89xxx3HzjvvzIABA7j77rsbt02YMIH+/fvTr18/vve97zWunz17Nvvvvz+77LIL/fv3Z+LEiR/YdtBBB7HjjjvSt29fZs2aVddclyszl3ujOnqeCfQG1gIeBfo1G/NZ4GaqI+Q9gYdbe9xdd901JWl1cN555+WJJ56YmZknnXRSnnvuuZmZ+c477+T222+f119/fePYxx9/PH/9619nZuavf/3rPPXUUxu3HXXUUXnFFVdkZuYll1ySBx10UL711luZmfnmm2/m2LFjMzNz3333zUceeaTNX8eDDz6Yn/70pz/y/RctWrTc7W+88UY2NDTkDjvskDNnzmxcf+yxx+ZVV131gbFdu3bNzGofbrfddnnDDTc0brvrrrvy8ccfr2tOu+22Wz7wwAO5ZMmSHDZsWE6cOPFDY0aPHp2jRo3KzMxXXnklBw0alIsXL87XXnstt9pqq5w3b15mZh5zzDF5xx13ZGbmiSeemBdffHFmZk6bNi233nrrxsfbd99987bbbsvMzAULFuTChQvrmmtmJjA5W2hiq0fGmbkI+AZwK/Ak8IfMnBYRJ0fEybVhE2vBngFcBnx95d8mSNKq4Vvf+haTJk3iwgsv5L777uM73/kOAL/73e8YMmQIn/vc5xrH7rTTTowaNepDj7Fo0SIWLlzIxhtvDMC5557LxRdfzAYbVB+zbbjhhhx77LEfut8pp5zC4MGD6devH2eddVbj+jPOOIO+ffvSv39//vVf/xWAq666qvEo+9Of/jQAd999N4cddhjz5s3jK1/5ClOnTmXgwIE899xzHzgCv+222xgyZAiDBg3ii1/8Im+//TYAvXr14uyzz2afffbhqquuWu5+uvrqqxk+fDgjR45k/Pjxde3b3//+9wwZMoThw4c3rtt///3ZaaedWr3vyy+/zPz58xkyZAgRwTHHHMN11133oXHTp09n6NChAGy22WZstNFGTJ48mZkzZ9KnTx+Wnqk94IADuPrqqwGICObPnw/AW2+9xZZbbtn4WIsWLeLAAw8EqiP8ddddt67Xujz1fGZMZk6kCm7TdWOafJ3AqSs9G0lajn/70zSmvzS/TR+z75YbtPoxV5cuXTj//PMZNmwYt912G2uttRYA06ZNY9Cg5f9ZhQkTJnDffffx8ssv06dPH4YPH86CBQtYsGAB2267bavz+8lPfsImm2zC4sWLGTp0KI899hgNDQ1ce+21PPXUU0QEb775JgBnn302t956Kz169Ghct9Rmm23G5ZdfzgUXXMCNN974gW2vvfYa55xzDnfccQddu3blvPPO4+c//zlnnnkmAGuvvTb33Xdfq3MdN24cZ511FptvvjlHHHEEP/jBD1q9zxNPPMGuu+7a4rann36aI488ssVtd999Ny+++CINDQ2N6xoaGnjxxRc/NHbAgAFcf/31jBw5kjlz5jBlyhTmzJnDZz7zGZ566ilmzZpFQ0MD1113He+//z4AP/7xjznooIO46KKLWLhwIXfccQdQnVLfaKONOPzww3n++ec54IAD+OlPf0qnTp1afa3L41/gkqQ63HzzzWyxxRY88cQTyxzzhS98gZ122onDDz+8cd2RRx7J1KlT+ctf/sLOO+/M+eefT2YS0dJ1rx/2hz/8gUGDBrHLLrswbdo0pk+fzgYbbMDaa6/NCSecwDXXXNN4ZLb33nszatQoLrvsMhYvXlz3a5s0aRLTp09n7733ZuDAgfzmN79p/Ex86WtozSuvvMKMGTPYZ5996NOnD507d27cVy291npe/yc/+UmmTp3a4m2jjTZq8fPhlh73a1/7Gg0NDQwePJjTTz+dvfbai86dO7PxxhtzySWXcOSRR/KpT32KXr160blzdYw6btw4Ro0axdy5c5k4cSJf/epXWbJkCYsWLeLPf/4zF1xwAY888ggzZ85k7Nixrb6W1tR1ZCxJq4JSF2pOnTqV22+/nUmTJrHPPvswcuRItthiC/r169d4sRbAtddey+TJkxtPGzcVEQwfPpyLLrqIM844g65duzJz5ky22WabZT7v888/3/hDf+ONN2bUqFG8++67dO7cmYcffpg777yT8ePHM3r0aO666y7GjBnDQw89xE033cTAgQOZOnVqXa8vMznwwAMZN25ci9u7du3a6mNMmDCh8eI2gPnz5zN+/HjOOeccNt10U954443Gsa+//jrdunUDoF+/ftxzzz0tPmZrR8YNDQ3MnTu3cd3cuXMbTyc31blzZ37xi180Lu+1115sv/32AAwfPrzxFPmll17aeIT7X//1X9xyyy0ADBkyhHfffZfXXnuNhoYGdtlll8b/bp///OeZNGkSxx9/fKv7aHk8Mpak5chMTjnlFC688EJ69uzJd7/73cbYHn300dx///3ccMMNjeObXi3d3H333dd4avoHP/gBp556auPnkvPnz+fSSy/9wPj58+fTtWtXNtxwQ1555RVuvvlmAN5++23eeustDj30UC688MLG6D733HPssccenH322XTr1o05c+ZQjz333JP777+fGTNmNL6GZ555psWxo0ePZvTo0R9aP27cOG655RZmzZrFrFmzmDJlSuPnxvvttx8TJkxoPAU8duxY9t9/f6Dahw888AA33XRT42PdcsstPP74460eGW+xxRasv/76TJo0iczkyiuvZMSI5n+Tqno9CxcuBOD222+nc+fO9O1b/SHJefPmAdVV8hdffDEnnHACUP367Z133gnAk08+ybvvvkv37t3ZbbfdeOONN3j11VcBuOuuuxofa2V4ZCxJy3HZZZfRs2fPxgt2vv71rzN27Fjuuece9t13X2688Ua+/e1vc/rpp7P55puz/vrr86Mf/ajx/ks/M16yZAkNDQ2NpzRPOeUU3n77bXbbbTe6dOlCly5dGi8MW2rAgAHssssu9OvXj2222Ya9994bgAULFjBixAjeffddMrPxqO+73/0uzz77LJnJ0KFDGTBgwDKPOpvq3r07Y8eO5aijjuK9994D4JxzzqFPnz4fGvvUU081zmOpWbNmMXv2bPbcc8/Gdb1792aDDTbgoYce4rDDDmPKlCnsuuuudOrUiW233ZYxY6rLjtZZZx1uvPFGTj/9dE4//XS6dOlC//79+eUvf9nqvAEuueQSRo0axTvvvMMhhxzCIYccAsANN9zA5MmTOfvss5k3bx4HH3wwn/jEJ+jRowe//e1vG+//zW9+k0cffRSAM888s/E1/+xnP+PEE0/kF7/4BRHB2LFjiQg6derEBRdcwNChQ5f+ZhAnnnhiXXNdnmjpnHt7GDx4cLbV79FJktrHYYcdxjXXXNN4EZtWTERMyczBzdd7ZCxJqlvzK7HVNvzMWJKkwoyxJEmFGWNJkgozxpIkFWaMJUkqzBhLklSYMZYkqTBjLElSYcZYkqTCiv05zIh4FXih1YH16wa81oaPt6ZyP6489+HKcx+uPPfhyvs49uHWmdm9+cpiMW5rETG5pb/3qRXjflx57sOV5z5cee7Dldee+9DT1JIkFWaMJUkqrCPF+NLWh6gO7seV5z5cee7Dlec+XHnttg87zGfGkiStrjrSkbEkSaul1S7GETEsIp6OiBkRcUYL2yMi/qO2/bGIGFRinquyOvbhl2v77rGIeCAiBpSY56qstX3YZNxuEbE4Io5oz/mtLurZjxGxX0RMjYhpEXFPe89xVVfH/88bRsSfIuLR2j48rsQ8V1URcUVEzIuIJ5axvX2akpmrzQ3oBDwHbAOsBTwK9G025lDgZiCAPYGHSs97VbrVuQ/3AjaufX2I+3DF92GTcXcBE4EjSs97VbvV+b24ETAd6Flb3qz0vFelW5378IfAebWvuwOvA2uVnvuqcgM+DQwCnljG9nZpyup2ZLw7MCMzZ2bm+8B4YESzMSOAK7MyCdgoIrZo74muwlrdh5n5QGa+UVucBDS08xxXdfV8HwL8C3A1MK89J7caqWc/Hg1ck5mzATLTfflB9ezDBNaPiADWo4rxovad5qorM++l2ifL0i5NWd1i3AOY02R5bm3dio5Zk63o/jme6l2h/qHVfRgRPYAvAGPacV6rm3q+F/sAG0fE3RExJSKOabfZrR7q2YejgR2Bl4DHgW9m5pL2mV6H0C5N6dzWD/gxixbWNb8cvJ4xa7K6909E7E8V430+1hmtfurZhxcC38/MxdUBiVpQz37sDOwKDAXWAR6MiEmZ+czHPbnVRD378GBgKvAZYFvg9oj4c2bO/5jn1lG0S1NWtxjPBbZqstxA9W5vRcesyeraPxHRH7gcOCQz/9pOc1td1LMPBwPjayHuBhwaEYsy87p2meHqod7/n1/LzIXAwoi4FxgAGONKPfvwOOCnWX0AOiMingd2AB5unymu9tqlKavbaepHgO0jondErAWMBG5oNuYG4JjaFXB7Am9l5svtPdFVWKv7MCJ6AtcAX/UIpEWt7sPM7J2ZvTKzF/BH4OuG+EPq+f/5euBTEdE5ItYF9gCebOd5rsrq2Yezqc4sEBGbA58EZrbrLFdv7dKU1erIODMXRcQ3gFupriK8IjOnRcTJte1jqK5cPRSYAfyN6l2haurch2cCmwIX147sFqV/cL5RnftQrahnP2bmkxFxC/AYsAS4PDNb/BWUNVGd34v/DoyNiMepTrl+PzP915xqImIcsB/QLSLmAmcBXaB9m+Jf4JIkqbDV7TS1JEkdjjGWJKkwYyxJUmHGWJKkwoyxJEmFGWNJkgozxpIkFWaMJUkq7P8D4HS3k6Bhs6QAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "roc_curve_plot(best_model, X_val, y_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [],
   "source": [
    "def calculate_metrics(model, X_val, y_val):\n",
    "    if model.__class__.__name__ == 'XGBClassifier':\n",
    "        X_val_xg = X_val.copy()\n",
    "        X_val_xg.columns = [str(col).replace('[', '').replace(']', '').replace('<', '').replace('>', '') for col in X_val.columns]\n",
    "        predictions = model.predict(X_val_xg)\n",
    "        auc = roc_auc_score(y_val, model.predict_proba(X_val_xg)[:, 1])\n",
    "    else:\n",
    "        predictions = model.predict(X_val)\n",
    "    accuracy = accuracy_score(y_val, predictions)\n",
    "    recall = recall_score(y_val, predictions)\n",
    "    precision = precision_score(y_val, predictions)\n",
    "    f1 = f1_score(y_val, predictions)\n",
    "    if model.__class__.__name__ == 'SVC':\n",
    "        auc = roc_auc_score(y_val, model.decision_function(X_val))\n",
    "    elif model.__class__.__name__ != 'XGBClassifier':\n",
    "        auc = roc_auc_score(y_val, model.predict_proba(X_val)[:, 1])\n",
    "    gini = 2 * auc - 1\n",
    "    return accuracy, recall, precision, f1, auc, gini\n",
    "\n",
    "def print_metrics(models,  X_val, y_val):\n",
    "    results = pd.DataFrame(columns=['Model', 'Accuracy', 'Recall', 'Precision', 'F1 Score', 'AUC', 'Gini'])\n",
    "    for model in models:\n",
    "        accuracy, recall, precision, f1, auc, gini = calculate_metrics(model,  X_val, y_val)\n",
    "        results.loc[len(results)] = {'Model': model.__class__.__name__,\n",
    "                                        'Accuracy': accuracy,\n",
    "                                        'Recall': recall,\n",
    "                                        'Precision': precision,\n",
    "                                        'F1 Score': f1,\n",
    "                                        'AUC': auc,\n",
    "                                        'Gini': gini}\n",
    "    print(tabulate(results, headers='keys', tablefmt='simple'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    Model            Accuracy    Recall    Precision    F1 Score       AUC      Gini\n",
      "--  -------------  ----------  --------  -----------  ----------  --------  --------\n",
      " 0  XGBClassifier    0.991493  0.977733     0.988741    0.983206  0.998599  0.997198\n"
     ]
    }
   ],
   "source": [
    "print_metrics(best_model, X_val, y_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}