{"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"display_name":"Python 3","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.6.5"},"colab":{"provenance":[],"toc_visible":true}},"cells":[{"cell_type":"markdown","metadata":{"id":"QSMmdrrVLZ-N"},"source":["# Charts in python notebooks\n","\n","A common use for notebooks is data visualization using charts. Colaboratory makes this easy with several charting tools available as Python imports."]},{"cell_type":"markdown","metadata":{"id":"xNzEBRkzL3B0"},"source":["## Matplotlib\n","\n","[Matplotlib](http://matplotlib.org/) is the most common charting package, see its [documentation](http://matplotlib.org/api/pyplot_api.html) for details, and its [examples](http://matplotlib.org/gallery.html#statistics) for inspiration."]},{"cell_type":"markdown","metadata":{"id":"WALI8x49GUpe"},"source":["### Line Plots"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":295},"id":"08RTGn_xE3MP","outputId":"adfe4f48-f993-4fe6-fd31-0a513e9ea20f"},"outputs":[{"data":{"image/png":"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\nrkJggg==\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","\n","x = [1, 2, 3, 4, 5, 6, 7, 8, 9]\n","y1 = [1, 3, 5, 3, 1, 3, 5, 3, 1]\n","y2 = [2, 4, 6, 4, 2, 4, 6, 4, 2]\n","plt.plot(x, y1, label=\"line L\")\n","plt.plot(x, y2, label=\"line H\")\n","plt.plot()\n","\n","plt.xlabel(\"x axis\")\n","plt.ylabel(\"y axis\")\n","plt.title(\"Line Graph Example\")\n","plt.legend()\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"sIZLTZ0pdo0Z"},"source":["### Bar Plots"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":295},"id":"bZv4MenQpYOF","outputId":"ff31a779-5ea2-4aa9-ea21-2392d0862bb1"},"outputs":[{"data":{"image/png":"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\n+v9MAs0sgp9tDQAAAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","\n","# Look at index 4 and 6, which demonstrate overlapping cases.\n","x1 = [1, 3, 4, 5, 6, 7, 9]\n","y1 = [4, 7, 2, 4, 7, 8, 3]\n","\n","x2 = [2, 4, 6, 8, 10]\n","y2 = [5, 6, 2, 6, 2]\n","\n","# Colors: https://matplotlib.org/api/colors_api.html\n","\n","plt.bar(x1, y1, label=\"Blue Bar\", color='b')\n","plt.bar(x2, y2, label=\"Green Bar\", color='g')\n","plt.plot()\n","\n","plt.xlabel(\"bar number\")\n","plt.ylabel(\"bar height\")\n","plt.title(\"Bar Chart Example\")\n","plt.legend()\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"YQO2Lw8Xdu7x"},"source":["### Histograms"]},{"cell_type":"code","execution_count":null,"metadata":{"cellView":"both","colab":{"base_uri":"https://localhost:8080/","height":809},"id":"SZ-DMbnPMbMY","outputId":"9286a8e5-6415-4acd-c0cb-57c398d6cb9a"},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAWoAAAEICAYAAAB25L6yAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAATTklEQVR4nO3dfaxsd13v8ffHc3iwLfaBbkltiaco\n1nDrpSXbQgVRy4MFFDDpH+1V4XoxJyooGBLSxsSKMUYNKmoMeuShPmBVakVuiSAXS7EGy92n1D6C\ntFBoC6VboS0lijx8/WPWbqe7+5w9s89eM79Z834lO2fWw575/tZvrc/5zZo1e6WqkCS16xvmXYAk\n6fAMaklqnEEtSY0zqCWpcQa1JDXOoJakxhnUktQ4g1pzleT2JP+R5IEkdye5JMkxPb/m/07yte41\nH0jyySRvS/IdUzzHJUl+pc86pQ0GtVrww1V1DHAGcCZw0Qxe80Pdax4LPBf4D+BgktNn8NrSVAxq\nNaOq7gbeyyiwAUjyoiQfSXJ/kjuS/NLYsj9O8tru8clJKskru+lvS/L5JIfdx6vqa1V1W1X9DHAV\nMP787+hG+fcl+WCS/9HN3w/8KPC6bkT+f7v5Fya5LckXk9yc5Ed2Z8to2RnUakaSU4AXALeOzf4S\n8DLgOOBFwE8neWm37Crg+7vH3wd8Anj22PQ/VtXXpyjhcuB7x6b/Dngy8M3AtcDbAarqQPf4N6rq\nmKr64W7927rfPxZ4PfBnSU6a4vWlLRnUasE7k3wRuAO4B7h4Y0FVfaCqbqiqr1fV9cCljEIYRkH9\nrG7U/GzgN4Bndsu+r1s+jc8AJ4y99lur6otV9WVGI+2nJjn2UL9cVe+oqs90tf4l8HHgrClrkB7B\noFYLXlpVj2M0Ov5O4MSNBUmenuTKJOtJ7gN+amN5Vd3GaMR9BqOR7BXAZ5Kcxs6C+mTg893r7kny\na92pjPuB27t1TjzULyd5WZLrktyb5F7g9MOtL03KoFYzquoq4BLgDWOz/xx4F/DEqjoW+AMgY8uv\nAs4DHl1Vd3XTLweOB66bsoQfAf6xe/y/gJcw+qDxWGBfN3/jtR/2ZyeTfCvwR8CrgMdX1XHAjZtq\nlXbEoFZr3gg8L8lTu+nHAZ+vqv9MchajAB13FaNw/GA3/YFu+uqq+tp2L9aNnE9N8nuMRvSvH3vd\nLwP/DhwF/OqmX/0c8KSx6aMZhfd697w/wWhELR0xg1pNqap14E+AX+xm/Qzwy9057F8E/mrTr1zF\nKFQ3gvpqRsH6QQ7v7CQPAPczCvdvAr67qm7olv8J8CngLuBm4J83/f5bgKd0pzneWVU3A78JfIhR\niH8X8E+TtFnaTrxxgCS1zRG1JDXOoJakxhnUktQ4g1qSGre3jyc98cQTa9++fX08tSQN0sGDB/+t\nqla2WtZLUO/bt4+1tbU+nlqSBinJpw61zFMfktQ4g1qSGmdQS1LjDGpJapxBLUmNM6glqXEGtSQ1\nzqCWpMYZ1JLUOINakhpnUEtS4wxqSWqcQS1JjTOoJalxBrUkNc6glqTGGdSS1LiJgjrJzye5KcmN\nSS5N8ti+C5MkjWwb1ElOBn4OWK2q04E9wPl9FyZJGpn01Mde4BuT7AWOAj7TX0mSpHHbBnVV3QW8\nAfg08Fngvqr6+83rJdmfZC3J2vr6+u5XKh2BfRe+e94lSDs2yamP44GXAKcC3wIcneTHNq9XVQeq\narWqVldWtrzjuSRpByY59fFc4JNVtV5VXwEuB76n37IkSRsmCepPA89IclSSAM8Bbum3LEnShknO\nUV8DXAZcC9zQ/c6BnuuSpJlr9bOMvZOsVFUXAxf3XIskaQt+M1GSGmdQS1LjDGpJapxBLUmNM6gl\nqXEGtSQ1zqCW1JRWr2WeJ4NakhpnUEtS4wxqSWqcQS1JjTOoJalxBrUkNc6gXiLTXvbkZVJSGwxq\nSWrcJPdMPC3JdWM/9yd5zSyKkyRNcOOAqvoYcAZAkj3AXcDf9FyXJKkz7amP5wC3VdWn+ihGkvRI\n0wb1+cClfRQyT35oJqllEwd1kkcDLwbecYjl+5OsJVlbX1/frfokaelNM6J+AXBtVX1uq4VVdaCq\nVqtqdWVlZXeqkyRNFdQXMMDTHtKQeVpvGCYK6iRHA88DLu+3HEmzZpi3b9vL8wCq6kvA43uuRZK0\nBb+ZKC0wR8PLwaBu3KEOxEU6QBep1nlxG+lwDGpJalyTQe3oQkfC/UdD02RQD9Ek4WHASNqKQS1J\njTOol4yjdmnxGNRTMuiGxf7UIjCoJalxBrXUIEf6GjeIoHanljRkgwhqSRoyg1raZb7D024zqDUz\nBpi0M4MN6j5DwcB5pHltE/vi0Nw2wzHYoJY0PcO9TZPe4eW4JJcl+WiSW5Kc3Xdhmi0P0OXWd/+7\nfx2Zie7wAvwO8J6qOq+7G/lRPdYkSRqz7Yg6ybHAs4G3AFTVf1XVvX0XJi0bR506lElOfZwKrANv\nS/KRJG/ubnb7MEn2J1lLsra+vr7rhW62eaeedif3oFgsR9Jf9vVyGlK/TxLUe4GnAW+qqjOBLwEX\nbl6pqg5U1WpVra6srOxymVoGQzqwpN00SVDfCdxZVdd005cxCm41woAbcTu0ZYj9Ma82bRvUVXU3\ncEeS07pZzwFu7rUqPcIQd/plYx/2Z+jbdtLrqH8WeHuS64EzgF/tryQtmlkeJEM/IBeZfdOfiYK6\nqq7rzj//z6p6aVV9oe/CJM3HEAJ3CG0Y5zcT1Yt9F757UAfLkNqifvS5jyx1UHvwTW6ZttUytfVI\nuJ1mtw2WOqjVNs99756ht68vrWy3poO6lY00rUWtW1Kbmg5qDdN2/5H5H530cAb1EjD4lsOs/gKe\n+9PsGdRz1upOv9O6ZtGelrZZS7UsErfbdAxqSY9gkE5uFtvKoB4oD7TdM7SrT1o8heFfvzy8hQ7q\nZeusZdBSn7ZUy6IY0jZr6UPvhQ5qaZ68oa9mZZBB7Y48fPaxYHn2g0EG9U55F5HZGeL2Olybhthe\nzY5BrYn1ETatBlhLdbVUS8uGvJ0MamkXzepLJ/OuQ7M1UVAnuT3JDUmuS7LWd1FabDsJCYNl+Frp\n41bqmMY0I+ofqKozqmq1t2p60sooR/2xDzRknvpYQkMLtaG1R/PV4v40aVAX8PdJDibZv9UKSfYn\nWUuytr6+vnsVztgijb5b3KHmbdn+1oiWw6RB/ayqehrwAuCVSZ69eYWqOtDdV3F1ZWVlV4uUFo1h\nPjm31fYmvbntXd2/9wB/A5zVZ1Hj7ETt1NDu2ziJZWvvstg2qJMcneRxG4+B5wM39l1YX9yRH9Ly\nttiqtr7qbXk76NCWqd8mGVE/Abg6yb8AHwbeXVXv6besNm3eMZZpRxm3rO3eiUNtK7ehprF3uxWq\n6hPAU2dQi3pgIEiLz8vz5mgIf4N3CG2YhlftDMvG5xiT9MU8+8ug3sJOO80DT8vKfb9fBnVj3OH7\n5fbVtFrYZxYuqId2W6Td0metvntog9t8eS1cUO9Uy3fV3k2t1dtaPX1Yhjb2xW03mUEFtZ0uaRKL\nlhWDCmpJGiKDWs1btNHPhkWtW+0xqCWpcUsZ1F45ImmRLGVQT2LWl7tJG5bt256HMtR27YRBLc3Y\nMgTQMrRxlgxqSU0z9A3qpedBILXPoB4gw7d/bmPNkkGtpWTQLo8++nrW+8/EQZ1kT5KPJLmiz4Jm\nzQN2edn3R27W23BZ+2yaEfWrgVv6KkSSNlvWYN5soqBOcgrwIuDN/ZYjqTWG5fxNOqJ+I/A64OuH\nWiHJ/iRrSdbW19d3pTjNlm9jH2neNe7G6288x7zbop3bNqiT/BBwT1UdPNx6VXWgqlaranVlZWXX\nClwGLR1ALdWiydlvwzbJiPqZwIuT3A78BXBOkj/rtSpJ0oO2DeqquqiqTqmqfcD5wD9U1Y/1Xpkk\nCfA66plYltuASerH3mlWrqoPAB/opRJJatS8B02OqCUNyhDfwRrUWhrbHYgtH6habgsf1B5cWgbu\n58tt4YNaWnSGsLZjUEtS4wzqCTnqkTQvgw/qeQWswS61Z1GPy8EHtSQtukEH9aL+7ylJ4wYd1NKQ\nzWMgsqiDn0Wte4NBLWkhLHrYHgmDWpIaZ1BLUuMMaklq3FR/5nSelvn81GZuCx0p96HFMsk9Ex+b\n5MNJ/iXJTUleP4vCJEkjk4yovwycU1UPJHkUcHWSv6uqf+65tgf5v7+kZbZtUFdVAQ90k4/qfqrP\noiRJD5now8Qke5JcB9wDvK+qrtlinf1J1pKsra+v73adkrS0JgrqqvpaVZ0BnAKcleT0LdY5UFWr\nVbW6srKy23VKUrP6Pj071eV5VXUvcCVwbj/lSFpmfh61tUmu+lhJclz3+BuB5wEf7bswaYgMIu3E\nJFd9nAT8cZI9jIL9r6rqin7LkiRtmOSqj+uBM2dQiyRpC819hdy3htKweEwfueaCWiPu3JI2GNSS\n1DiDWpIaZ1BLUuMMaklqnEEtSY0zqCWpcQa1JDXOoJakxhnUkmbKL3NNz6CWpMYZ1JLUOINakhpn\nUEs6JM8nt8GglqTGTXIrricmuTLJzUluSvLqWRQmSRqZ5FZcXwVeW1XXJnkccDDJ+6rq5p5rkyQx\nwYi6qj5bVdd2j78I3AKc3HdhkqSRqc5RJ9nH6P6J12yxbH+StSRr6+vru1OdJGnyoE5yDPDXwGuq\n6v7Ny6vqQFWtVtXqysrKbtYoSUttoqBO8ihGIf32qrq835IkSeMmueojwFuAW6rqt/ovSZI0bpIR\n9TOBHwfOSXJd9/PCnuuSJHW2vTyvqq4GMoNaJElb8JuJktQ4g1qSGmdQS1LjDGpJapxBLUmNM6gl\nqXEGtSQ1zqCWpMYZ1JLUOINakhpnUEtS4wxqSWqcQS1JjTOoJalxBrUkNW6SO7y8Nck9SW6cRUGS\npIebZER9CXBuz3VIkg5h26Cuqg8Cn59BLZKkLezaOeok+5OsJVlbX1/fraeVpKW3a0FdVQeqarWq\nVldWVnbraSVp6XnVhyQ1zqCWpMZNcnnepcCHgNOS3JnkFf2XJUnasHe7FarqglkUIknamqc+JKlx\nBrUkNc6glqTGGdSS1DiDWpIaZ1BLUuMMaklqnEEtSY0zqCWpcQa1JDXOoJakxhnUktQ4g1qSGmdQ\nS1LjDGpJapxBLUmNmyiok5yb5GNJbk1yYd9FSZIeMsmtuPYAvw+8AHgKcEGSp/RdmCRpZJIR9VnA\nrVX1iar6L+AvgJf0W5YkaUOq6vArJOcB51bVT3bTPw48vapetWm9/cD+bvI04GM7rOlE4N92+LuL\nyjYvh2Vr87K1F46szd9aVStbLdj25raTqqoDwIEjfZ4ka1W1ugslLQzbvByWrc3L1l7or82TnPq4\nC3ji2PQp3TxJ0gxMEtT/H3hyklOTPBo4H3hXv2VJkjZse+qjqr6a5FXAe4E9wFur6qYeazri0ycL\nyDYvh2Vr87K1F3pq87YfJkqS5stvJkpS4wxqSWpcM0E91K+pJ3likiuT3JzkpiSv7uafkOR9ST7e\n/Xt8Nz9JfrfbDtcnedp8W7BzSfYk+UiSK7rpU5Nc07XtL7sPp0nymG761m75vnnWvVNJjktyWZKP\nJrklydlD7+ckP9/t1zcmuTTJY4fWz0nemuSeJDeOzZu6X5O8vFv/40lePk0NTQT1wL+m/lXgtVX1\nFOAZwCu7tl0IvL+qngy8v5uG0TZ4cvezH3jT7EveNa8Gbhmb/nXgt6vq24EvAK/o5r8C+EI3/7e7\n9RbR7wDvqarvBJ7KqO2D7eckJwM/B6xW1emMLjY4n+H18yXAuZvmTdWvSU4ALgaezujb3hdvhPtE\nqmruP8DZwHvHpi8CLpp3XT219W+B5zH65uZJ3byTgI91j/8QuGBs/QfXW6QfRtfbvx84B7gCCKNv\nbO3d3OeMrig6u3u8t1sv827DlO09Fvjk5rqH3M/AycAdwAldv10B/OAQ+xnYB9y4034FLgD+cGz+\nw9bb7qeJETUPdfiGO7t5g9K91TsTuAZ4QlV9tlt0N/CE7vFQtsUbgdcBX++mHw/cW1Vf7abH2/Vg\nm7vl93XrL5JTgXXgbd3pnjcnOZoB93NV3QW8Afg08FlG/XaQYffzhmn79Yj6u5WgHrwkxwB/Dbym\nqu4fX1aj/2IHc51kkh8C7qmqg/OuZYb2Ak8D3lRVZwJf4qG3w8Ag+/l4Rn+g7VTgW4CjeeQpgsGb\nRb+2EtSD/pp6kkcxCum3V9Xl3ezPJTmpW34ScE83fwjb4pnAi5PczuivLZ7D6PztcUk2vmQ13q4H\n29wtPxb491kWvAvuBO6sqmu66csYBfeQ+/m5wCerar2qvgJczqjvh9zPG6bt1yPq71aCerBfU08S\n4C3ALVX1W2OL3gVsfPL7ckbnrjfmv6z79PgZwH1jb7EWQlVdVFWnVNU+Rn35D1X1o8CVwHndapvb\nvLEtzuvWX6iRZ1XdDdyR5LRu1nOAmxlwPzM65fGMJEd1+/lGmwfbz2Om7df3As9Pcnz3TuT53bzJ\nzPsk/djJ9RcC/wrcBvzCvOvZxXY9i9HbouuB67qfFzI6N/d+4OPA/wNO6NYPoytgbgNuYPSJ+tzb\ncQTt/37giu7xk4APA7cC7wAe081/bDd9a7f8SfOue4dtPQNY6/r6ncDxQ+9n4PXAR4EbgT8FHjO0\nfgYuZXQO/iuM3jm9Yif9Cvyfru23Aj8xTQ1+hVySGtfKqQ9J0iEY1JLUOINakhpnUEtS4wxqSWqc\nQS1JjTOoJalx/w2F9IG+72rRUAAAAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"},{"data":{"image/png":"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\n/hdTUA0bc/MPyQAAAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"},{"data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","import numpy as np\n","\n","# Use numpy to generate a bunch of random data in a bell curve around 5.\n","n = 5 + np.random.randn(1000)\n","\n","m = [m for m in range(len(n))]\n","plt.bar(m, n)\n","plt.title(\"Raw Data\")\n","plt.show()\n","\n","plt.hist(n, bins=20)\n","plt.title(\"Histogram\")\n","plt.show()\n","\n","plt.hist(n, cumulative=True, bins=20)\n","plt.title(\"Cumulative Histogram\")\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"9-CelVUmdz8r"},"source":["### Scatter Plots"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":281},"id":"79C7jc9mv-Ji","outputId":"901f9ca5-79bb-495f-a1eb-9238f5f1bc62"},"outputs":[{"data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","\n","x1 = [2, 3, 4]\n","y1 = [5, 5, 5]\n","\n","x2 = [1, 2, 3, 4, 5]\n","y2 = [2, 3, 2, 3, 4]\n","y3 = [6, 8, 7, 8, 7]\n","\n","# Markers: https://matplotlib.org/api/markers_api.html\n","\n","plt.scatter(x1, y1)\n","plt.scatter(x2, y2, marker='v', color='r')\n","plt.scatter(x2, y3, marker='^', color='m')\n","plt.title('Scatter Plot Example')\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"nlk-Sk0Nd82p"},"source":["### Stack Plots"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":281},"id":"5sxEM0pJzpgr","outputId":"4fc639af-9a63-4f6e-b3ff-ec287ec98120"},"outputs":[{"data":{"image/png":"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\njNqLe3PiKlpVauJ0GAFPJ3cPdIhvwaI3cmi6Zpfptq6espiNb8CVlXpZEJn3xYXHMWdHN56ekGzb\n3gTP/WB+SePi+iM4q4n9K07qXDqVQjG/9d9Ta6o4vdeDbWKPZPPp3NCgWmDgBJ3cK6hPQgeSX9hP\n7e3ml7gVqbE7k1mjF/P15q7UjzV5EtGLmsQ1JOXb2gx7f6mt/fSct57L4ruZaiNPjlNrqEWF2UvR\nrNUJllS+33Q7XRJaM7Qc53D8WftFm3n1UGBNS/oandwr4NKEbvw4/k8qH7BnG69BHy1nwwvHuD26\nL4K9u8iYdV5CZ5a/5KLdYu/U4pj0WSYhYu7XdVmlx+nSp+yytZ6qevFrluwl8MxS8+cZ/MFtry5k\nVCVzlUC10unkXk7Xx/Zm7tgVRGfZW1I2/lAWbz28gN9XtqeFyXXedhkd3p95D632aunZtilbuTq2\nh+l2jpx9E2Fh1s93tGqfzbL4cabb6Z3QnoGzPbou0C9NfW49TeMaOh1GQNLJvRzGhPfnvbGLCMvz\n3uXs/b5ay5rx+3g4tD9hIb6xp0pUWBQz9/fiP48lO7KK4+n3dxIRaq7I6Nawr+k1zPrNLmIvfN6S\ndp5NDq4/yfhDWXzyXYzpn6t2uuD6TfLAv0/258XH7DtZeCZRx3N5/olklv3a1PR6b7MaxNZl4a+N\nuGbKYsdiaLR+D7eFmR+9r249mGrVrXtzat/FxYq4Z0y3c25Cp3LX3wkkXX5N498u8z9X7Z90ci9F\nqITy7qE+PDTJ/E71ZnX6/Q+Wjd3Mc3nOlDDok9CB1Mkn6fJrmtf7PtXjUzYSFx5nqg2X7KLNSOu2\nYwwd8JQl7Tz7g/lVNv7qvhfnM9jkSXPtn3RyL0FUWBRzt3ThxskllxNwQlheAeMmJrPmf7Xp68US\nBrdF9+XXcRupudO+E5EVUXPnIe7P62K6nYU1rqNFW/MXGiX2PMzqmJdNt3NxQhI95zm776jT3vv3\nHzSMLbGIrOYBndxPkRARzw/LWnDZTN9citZixQ6SH1zLm0ftLWEQHhLOlCN9mPLwAp+rbfLQ5JVU\ni6pqqg0lBUQPMn8CNP9s820IwjNfOVPgzJdU2X+U2b9U8ZlzTP5OJ/diasfUJPn72vT7aq3ToZyR\nKLjjFaOEwSUJ5ralK0mt6Br8tqQVt73qO59cios/lMUjR9qZbmdN9Ov0uMDzjTSS+h1kfeRU03EM\n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\nRK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","\n","idxes = [ 1, 2, 3, 4, 5, 6, 7, 8, 9]\n","arr1 = [23, 40, 28, 43, 8, 44, 43, 18, 17]\n","arr2 = [17, 30, 22, 14, 17, 17, 29, 22, 30]\n","arr3 = [15, 31, 18, 22, 18, 19, 13, 32, 39]\n","\n","# Adding legend for stack plots is tricky.\n","plt.plot([], [], color='r', label = 'D 1')\n","plt.plot([], [], color='g', label = 'D 2')\n","plt.plot([], [], color='b', label = 'D 3')\n","\n","plt.stackplot(idxes, arr1, arr2, arr3, colors= ['r', 'g', 'b'])\n","plt.title('Stack Plot Example')\n","plt.legend()\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"C0LOohpqeCjx"},"source":["### Pie Charts"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":264},"id":"ZdEG-d4g4U6v","outputId":"38c6918b-d51f-4b80-8715-17a88b4934e1"},"outputs":[{"data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","\n","labels = 'S1', 'S2', 'S3'\n","sections = [56, 66, 24]\n","colors = ['c', 'g', 'y']\n","\n","plt.pie(sections, labels=labels, colors=colors,\n"," startangle=90,\n"," explode = (0, 0.1, 0),\n"," autopct = '%1.2f%%')\n","\n","plt.axis('equal') # Try commenting this out.\n","plt.title('Pie Chart Example')\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"sX97x87MTyIf"},"source":["### fill_between and alpha"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":281},"id":"BCUl8mTMT4sN","outputId":"6f386db9-c727-4643-e3bf-638611ca140b"},"outputs":[{"data":{"image/png":"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\niHcAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","import numpy as np\n","\n","ys = 200 + np.random.randn(100)\n","x = [x for x in range(len(ys))]\n","\n","plt.plot(x, ys, '-')\n","plt.fill_between(x, ys, 195, where=(ys > 195), facecolor='g', alpha=0.6)\n","\n","plt.title(\"Fills and Alpha Example\")\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"l0UWEbh0JO40"},"source":["### Exercises"]},{"cell_type":"markdown","metadata":{"id":"6qsImPMZJO40"},"source":["Complete the code needed to generate random data and to plot and show a scatterplot."]},{"cell_type":"code","metadata":{"id":"D_mGH03IJO41"},"source":["np.random.seed(42)\n","\n","N = 50\n","x = np.random.rand(N)\n","y = np.random.rand(N)\n","colors = np.random.rand(N)\n","area = (30 * np.random.rand(N))**2\n","\n","plt.scatter(..., s=area, c=colors, alpha=0.5)\n","plt ..."],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Xn0jLwr8evoR"},"source":["## 3D Graphs"]},{"cell_type":"markdown","metadata":{"id":"DrRCtocXe9SB"},"source":["### 3D Scatter Plots"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":297},"id":"Eo2bdDQ5GZ76","outputId":"8b7deea4-e888-4b87-9df6-de810c78e419"},"outputs":[{"data":{"image/png":"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\nAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","import numpy as np\n","from mpl_toolkits.mplot3d import axes3d\n","\n","fig = plt.figure()\n","ax = fig.add_subplot(111, projection = '3d')\n","\n","x1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n","y1 = np.random.randint(10, size=10)\n","z1 = np.random.randint(10, size=10)\n","\n","x2 = [-1, -2, -3, -4, -5, -6, -7, -8, -9, -10]\n","y2 = np.random.randint(-10, 0, size=10)\n","z2 = np.random.randint(10, size=10)\n","\n","ax.scatter(x1, y1, z1, c='b', marker='o', label='blue')\n","ax.scatter(x2, y2, z2, c='g', marker='D', label='green')\n","\n","ax.set_xlabel('x axis')\n","ax.set_ylabel('y axis')\n","ax.set_zlabel('z axis')\n","plt.title(\"3D Scatter Plot Example\")\n","plt.legend()\n","plt.tight_layout()\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"MXVPkFpTfCE-"},"source":["### 3D Bar Plots"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":297},"id":"YGi1XPCrGsQz","outputId":"8fe337e9-be56-4141-8a97-3cea6ecc3a26"},"outputs":[{"data":{"image/png":"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\nGoC9iAAAAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","import numpy as np\n","\n","fig = plt.figure()\n","ax = fig.add_subplot(111, projection = '3d')\n","\n","x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n","y = np.random.randint(10, size=10)\n","z = np.zeros(10)\n","\n","dx = np.ones(10)\n","dy = np.ones(10)\n","dz = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n","\n","ax.bar3d(x, y, z, dx, dy, dz, color='g')\n","\n","ax.set_xlabel('x axis')\n","ax.set_ylabel('y axis')\n","ax.set_zlabel('z axis')\n","plt.title(\"3D Bar Chart Example\")\n","plt.tight_layout()\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"Xbey0KVpfIbQ"},"source":["### Wireframe Plots"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":297},"id":"60f2SO4jIfQz","outputId":"49ce8a8b-a0fa-439b-a6c7-5468035a20c2"},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOy9eXgc9ZWv/1bvLbV2WbtkSbZseV9k\ng80Wk2RCJmESJsFAVjIhJCRDQmBy7+R34SaEOxMIN5cMISRkgGDWBMJMloEkMAHMZuN936XW2tql\n3vfuqt8frSp3S91St9SybFHv8/ix3UtV9VafOud7zucIkiShoqKioqJyvqGZ6wNQUVFRUVFJhipQ\nKioqKirnJapAqaioqKicl6gCpaKioqJyXqIKlIqKiorKeYluivvVEj8VFRUVldlGSHajGkGpqKio\nqJyXqAKloqKionJeogqUioqKisp5iSpQKioqKirnJapAqaioqKicl6gCpaKioqJyXqIKlMqsYrFY\nsFqt037+L37xC8rLy7FYLIyMjGTxyGaXbdu2cdlll831YZxTvvSlL3HXXXfN9WGozCNUgVJJm3vv\nvZe//du/Tbitqakp6W2/+c1vAPB4PDQ2Nk5rf+FwmDvuuINXX30Vj8dDSUnJ9A58lrj77rvR6/VY\nLBYKCwu55JJL2LlzZ8bb2bJlC4899ljK+zs6OhAEAYvFkvDn+eefn8nhq6ic96gCpZI2V1xxBTt2\n7CAajQLQ19dHOBzmwIEDCbe1trZyxRVXTLk9+TmpGBgYIBAIsGLFiqT3RyKRDF9B9rn++uvxeDwM\nDQ1x2WWX8alPfYrZGmHjcDjweDzKn+uvv35W9qOicr6gCpRK2mzcuJFwOMzBgwcBePvtt7nyyitZ\nunRpwm2LFi2iqqoKAEEQaG1tBWIpoK9//et87GMfIzc3lzfeeINgMMh3vvMd6urqKC8v55ZbbsHv\n93P69GmWLl0KQGFhIR/84AeV7T388MM0NTXR1NQEwG233UZtbS35+fm0tLTw9ttvK8d89913s3Xr\nVj7/+c+Tl5fHqlWrOH36NPfeey9lZWXU1tby6quvKo93Op3cdNNNVFZWUl1dzV133TWlkALo9Xpu\nvPFG+vv7k6Yid+zYwcaNGykoKGDjxo3s2LEDgDvvvJO3336bW2+9FYvFwq233prRZxIKhVi7di0P\nPfQQEBP9Sy+9lHvuuQeA3bt3s3nzZgoLC6msrOTWW28lFAopzxcEgZ///Oc0NTWRl5fH//7f/5u2\ntjYuueQS8vPzue6665THb9++nZqaGn74wx9SWlpKfX09zz77bMpje+mll1i7dq0SXR4+fDij16ai\nogqUStoYDAYuvvhi3nrrLQDeeustLr/8ci677LKE2yaLnp577jnuvPNO3G43l112Gd/97nc5ffo0\nBw8epLW1FZvNxj333MOSJUs4duwYEIscXn/9dWUbv//979m1axfHjx8HYsJ58OBBRkdH+exnP8vW\nrVsJBALK4//rv/6LL3zhC9jtdtatW8dVV12FKIrYbDa+973v8bWvfU157Je+9CV0Oh2tra0cOHCA\nV199ddL0m0wwGGTbtm3U1tZSWlqacN/o6Cgf//jH+da3vsXIyAh33HEHH//4xxkZGeFf//Vfufzy\ny/nZz36Gx+PhZz/72ZT7isdgMPDMM8/wve99jxMnTnDfffcRjUa58847AdBqtfzkJz9heHiYnTt3\n8tprr/Hzn/88YRuvvPIK+/bt47333uP+++/nq1/9Ks888wzd3d0cPXqUX//618pj+/v7GR4exmaz\n8eSTT/LVr36VU6dOTTiuAwcO8OUvf5lf/vKXjIyM8LWvfY1PfOITBIPBjF6fyvscSZIm+6OiksD3\nv/996ZprrpEkSZJWr14tnT59Wvrzn/+ccNu2bduUxwPSmTNnJEmSpBtvvFH6whe+oNwniqKUk5Mj\ntba2Krft2LFDqq+vlyRJktrb2yVACofDCdt77bXXJj3GwsJC6eDBg8rxfvjDH1bu++Mf/yjl5uZK\nkUhEkiRJcrlcEiDZ7Xapv79fMhgMks/nUx7/3HPPSVu2bEn5Xuj1eqmgoEBasGCBdOWVV0p79+6V\nJEmSnnjiCenSSy+VJEmSnnrqKWnjxo0Jz920aZP0xBNPSJIkSR/4wAekRx99NOXrkd+HgoKChD/H\njx9XHvPjH/9YWrJkiVRYWCidPn065bZ+8pOfKJ+VJMXez3feeUf5//r166X77rtP+f8dd9wh3Xbb\nbZIkSdIbb7whabVayePxKPdv3bpVuueeeyRJin2+d955pyRJknTLLbdId911V8K+lyxZIm3fvj3l\nsam8r0mqQVOZxaqoJHDFFVfw8MMPMzo6ytDQEE1NTZSXl3PjjTcyOjrK0aNHJ42gamtrlX8PDQ3h\n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\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","\n","fig = plt.figure()\n","ax = fig.add_subplot(111, projection = '3d')\n","\n","x, y, z = axes3d.get_test_data()\n","\n","ax.plot_wireframe(x, y, z, rstride = 2, cstride = 2)\n","\n","plt.title(\"Wireframe Plot Example\")\n","plt.tight_layout()\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"cRkuifc7PazR"},"source":["## Seaborn\n","\n","There are several libraries layered on top of Matplotlib that you can use in Colab. One that is worth highlighting is [Seaborn](http://seaborn.pydata.org):"]},{"cell_type":"code","execution_count":null,"metadata":{"cellView":"both","colab":{"base_uri":"https://localhost:8080/","height":268},"id":"el13bTbyPRw4","outputId":"33faf688-16b6-4d5e-b9d8-33bc71579ef4"},"outputs":[{"data":{"image/png":"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\n8hAHAAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","import numpy as np\n","import seaborn as sns\n","\n","# Generate some random data\n","num_points = 20\n","# x will be 5, 6, 7... but also twiddled randomly\n","x = 5 + np.arange(num_points) + np.random.randn(num_points)\n","# y will be 10, 11, 12... but twiddled even more randomly\n","y = 10 + np.arange(num_points) + 5 * np.random.randn(num_points)\n","sns.regplot(x=x, y=y)\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"MoWj1knmTZPI"},"source":["That's a simple scatterplot with a nice regression line fit to it, all with just one call to Seaborn's [regplot](http://seaborn.pydata.org/generated/seaborn.regplot.html#seaborn.regplot).\n","\n","Here's a Seaborn [heatmap](https://seaborn.pydata.org/generated/seaborn.heatmap.html):"]},{"cell_type":"code","execution_count":null,"metadata":{"cellView":"both","colab":{"base_uri":"https://localhost:8080/","height":265},"id":"Fjw7UfGZQcL9","outputId":"35a74d19-dd58-47c9-9683-8914b7498ced"},"outputs":[{"data":{"image/png":"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\nAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","import numpy as np\n","\n","# Make a 10 x 10 heatmap of some random data\n","side_length = 10\n","# Start with a 10 x 10 matrix with values randomized around 5\n","data = 5 + np.random.randn(side_length, side_length)\n","# The next two lines make the values larger as we get closer to (9, 9)\n","data += np.arange(side_length)\n","data += np.reshape(np.arange(side_length), (side_length, 1))\n","# Generate the heatmap\n","sns.heatmap(data)\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"MYqcrcKLO4xe"},"source":["## Plotly"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":542,"resources":{"http://localhost:8080/static/components/requirejs/require.js":{"data":"LyoqIHZpbTogZXQ6dHM9NDpzdz00OnN0cz00CiAqIEBsaWNlbnNlIFJlcXVpcmVKUyAyLjEuMjIgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTUsIFRoZSBEb2pvIEZvdW5kYXRpb24gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICogQXZhaWxhYmxlIHZpYSB0aGUgTUlUIG9yIG5ldyBCU0QgbGljZW5zZS4KICogc2VlOiBodHRwOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcyBmb3IgZGV0YWlscwogKi8KLy9Ob3QgdXNpbmcgc3RyaWN0OiB1bmV2ZW4gc3RyaWN0IHN1cHBvcnQgaW4gYnJvd3NlcnMsICMzOTIsIGFuZCBjYXVzZXMKLy9wcm9ibGVtcyB3aXRoIHJlcXVpcmVqcy5leGVjKCkvdHJhbnNwaWxlciBwbHVnaW5zIHRoYXQgbWF5IG5vdCBiZSBzdHJpY3QuCi8qanNsaW50IHJlZ2V4cDogdHJ1ZSwgbm9tZW46IHRydWUsIHNsb3BweTogdHJ1ZSAqLwovKmdsb2JhbCB3aW5kb3csIG5hdmlnYXRvciwgZG9jdW1lbnQsIGltcG9ydFNjcmlwdHMsIHNldFRpbWVvdXQsIG9wZXJhICovCgp2YXIgcmVxdWlyZWpzLCByZXF1aXJlLCBkZWZpbmU7CihmdW5jdGlvbiAoZ2xvYmFsKSB7CiAgICB2YXIgcmVxLCBzLCBoZWFkLCBiYXNlRWxlbWVudCwgZGF0YU1haW4sIHNyYywKICAgICAgICBpbnRlcmFjdGl2ZVNjcmlwdCwgY3VycmVudGx5QWRkaW5nU2NyaXB0LCBtYWluU2NyaXB0LCBzdWJQYXRoLAogICAgICAgIHZlcnNpb24gPSAnMi4xLjIyJywKICAgICAgICBjb21tZW50UmVnRXhwID0gLyhcL1wqKFtcc1xTXSo/KVwqXC98KFteOl18XilcL1wvKC4qKSQpL21nLAogICAgICAgIGNqc1JlcXVpcmVSZWdFeHAgPSAvW14uXVxzKnJlcXVpcmVccypcKFxzKlsiJ10oW14nIlxzXSspWyInXVxzKlwpL2csCiAgICAgICAganNTdWZmaXhSZWdFeHAgPSAvXC5qcyQvLAogICAgICAgIGN1cnJEaXJSZWdFeHAgPSAvXlwuXC8vLAogICAgICAgIG9wID0gT2JqZWN0LnByb3RvdHlwZSwKICAgICAgICBvc3RyaW5nID0gb3AudG9TdHJpbmcsCiAgICAgICAgaGFzT3duID0gb3AuaGFzT3duUHJvcGVydHksCiAgICAgICAgYXAgPSBBcnJheS5wcm90b3R5cGUsCiAgICAgICAgaXNCcm93c2VyID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50KSwKICAgICAgICBpc1dlYldvcmtlciA9ICFpc0Jyb3dzZXIgJiYgdHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICd1bmRlZmluZWQnLAogICAgICAgIC8vUFMzIGluZGljYXRlcyBsb2FkZWQgYW5kIGNvbXBsZXRlLCBidXQgbmVlZCB0byB3YWl0IGZvciBjb21wbGV0ZQogICAgICAgIC8vc3BlY2lmaWNhbGx5LiBTZXF1ZW5jZSBpcyAnbG9hZGluZycsICdsb2FkZWQnLCBleGVjdXRpb24sCiAgICAgICAgLy8gdGhlbiAnY29tcGxldGUnLiBUaGUgVUEgY2hlY2sgaXMgdW5mb3J0dW5hdGUsIGJ1dCBub3Qgc3VyZSBob3cKICAgICAgICAvL3RvIGZlYXR1cmUgdGVzdCB3L28gY2F1c2luZyBwZXJmIGlzc3Vlcy4KICAgICAgICByZWFkeVJlZ0V4cCA9IGlzQnJvd3NlciAmJiBuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdQTEFZU1RBVElPTiAzJyA/CiAgICAgICAgICAgICAgICAgICAgICAvXmNvbXBsZXRlJC8gOiAvXihjb21wbGV0ZXxsb2FkZWQpJC8sCiAgICAgICAgZGVmQ29udGV4dE5hbWUgPSAnXycsCiAgICAgICAgLy9PaCB0aGUgdHJhZ2VkeSwgZGV0ZWN0aW5nIG9wZXJhLiBTZWUgdGhlIHVzYWdlIG9mIGlzT3BlcmEgZm9yIHJlYXNvbi4KICAgICAgICBpc09wZXJhID0gdHlwZW9mIG9wZXJhICE9PSAndW5kZWZpbmVkJyAmJiBvcGVyYS50b1N0cmluZygpID09PSAnW29iamVjdCBPcGVyYV0nLAogICAgICAgIGNvbnRleHRzID0ge30sCiAgICAgICAgY2ZnID0ge30sCiAgICAgICAgZ2xvYmFsRGVmUXVldWUgPSBbXSwKICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IGZhbHNlOwoKICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaXQpIHsKICAgICAgICByZXR1cm4gb3N0cmluZy5jYWxsKGl0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJzsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0FycmF5KGl0KSB7CiAgICAgICAgcmV0dXJuIG9zdHJpbmcuY2FsbChpdCkgPT09ICdbb2JqZWN0IEFycmF5XSc7CiAgICB9CgogICAgLyoqCiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5LiBJZiB0aGUgZnVuYyByZXR1cm5zCiAgICAgKiBhIHRydWUgdmFsdWUsIGl0IHdpbGwgYnJlYWsgb3V0IG9mIHRoZSBsb29wLgogICAgICovCiAgICBmdW5jdGlvbiBlYWNoKGFyeSwgZnVuYykgewogICAgICAgIGlmIChhcnkpIHsKICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnkubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIGlmIChhcnlbaV0gJiYgZnVuYyhhcnlbaV0sIGksIGFyeSkpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEhlbHBlciBmdW5jdGlvbiBmb3IgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXkgYmFja3dhcmRzLiBJZiB0aGUgZnVuYwogICAgICogcmV0dXJucyBhIHRydWUgdmFsdWUsIGl0IHdpbGwgYnJlYWsgb3V0IG9mIHRoZSBsb29wLgogICAgICovCiAgICBmdW5jdGlvbiBlYWNoUmV2ZXJzZShhcnksIGZ1bmMpIHsKICAgICAgICBpZiAoYXJ5KSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICBmb3IgKGkgPSBhcnkubGVuZ3RoIC0gMTsgaSA+IC0xOyBpIC09IDEpIHsKICAgICAgICAgICAgICAgIGlmIChhcnlbaV0gJiYgZnVuYyhhcnlbaV0sIGksIGFyeSkpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBoYXNQcm9wKG9iaiwgcHJvcCkgewogICAgICAgIHJldHVybiBoYXNPd24uY2FsbChvYmosIHByb3ApOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldE93bihvYmosIHByb3ApIHsKICAgICAgICByZXR1cm4gaGFzUHJvcChvYmosIHByb3ApICYmIG9ialtwcm9wXTsKICAgIH0KCiAgICAvKioKICAgICAqIEN5Y2xlcyBvdmVyIHByb3BlcnRpZXMgaW4gYW4gb2JqZWN0IGFuZCBjYWxscyBhIGZ1bmN0aW9uIGZvciBlYWNoCiAgICAgKiBwcm9wZXJ0eSB2YWx1ZS4gSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSB0cnV0aHkgdmFsdWUsIHRoZW4gdGhlCiAgICAgKiBpdGVyYXRpb24gaXMgc3RvcHBlZC4KICAgICAqLwogICAgZnVuY3Rpb24gZWFjaFByb3Aob2JqLCBmdW5jKSB7CiAgICAgICAgdmFyIHByb3A7CiAgICAgICAgZm9yIChwcm9wIGluIG9iaikgewogICAgICAgICAgICBpZiAoaGFzUHJvcChvYmosIHByb3ApKSB7CiAgICAgICAgICAgICAgICBpZiAoZnVuYyhvYmpbcHJvcF0sIHByb3ApKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBTaW1wbGUgZnVuY3Rpb24gdG8gbWl4IGluIHByb3BlcnRpZXMgZnJvbSBzb3VyY2UgaW50byB0YXJnZXQsCiAgICAgKiBidXQgb25seSBpZiB0YXJnZXQgZG9lcyBub3QgYWxyZWFkeSBoYXZlIGEgcHJvcGVydHkgb2YgdGhlIHNhbWUgbmFtZS4KICAgICAqLwogICAgZnVuY3Rpb24gbWl4aW4odGFyZ2V0LCBzb3VyY2UsIGZvcmNlLCBkZWVwU3RyaW5nTWl4aW4pIHsKICAgICAgICBpZiAoc291cmNlKSB7CiAgICAgICAgICAgIGVhY2hQcm9wKHNvdXJjZSwgZnVuY3Rpb24gKHZhbHVlLCBwcm9wKSB7CiAgICAgICAgICAgICAgICBpZiAoZm9yY2UgfHwgIWhhc1Byb3AodGFyZ2V0LCBwcm9wKSkgewogICAgICAgICAgICAgICAgICAgIGlmIChkZWVwU3RyaW5nTWl4aW4gJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAhaXNBcnJheSh2YWx1ZSkgJiYgIWlzRnVuY3Rpb24odmFsdWUpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldFtwcm9wXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW4odGFyZ2V0W3Byb3BdLCB2YWx1ZSwgZm9yY2UsIGRlZXBTdHJpbmdNaXhpbik7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KCiAgICAvL1NpbWlsYXIgdG8gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQsIGJ1dCB0aGUgJ3RoaXMnIG9iamVjdCBpcyBzcGVjaWZpZWQKICAgIC8vZmlyc3QsIHNpbmNlIGl0IGlzIGVhc2llciB0byByZWFkL2ZpZ3VyZSBvdXQgd2hhdCAndGhpcycgd2lsbCBiZS4KICAgIGZ1bmN0aW9uIGJpbmQob2JqLCBmbikgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseShvYmosIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBzY3JpcHRzKCkgewogICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7CiAgICB9CgogICAgZnVuY3Rpb24gZGVmYXVsdE9uRXJyb3IoZXJyKSB7CiAgICAgICAgdGhyb3cgZXJyOwogICAgfQoKICAgIC8vQWxsb3cgZ2V0dGluZyBhIGdsb2JhbCB0aGF0IGlzIGV4cHJlc3NlZCBpbgogICAgLy9kb3Qgbm90YXRpb24sIGxpa2UgJ2EuYi5jJy4KICAgIGZ1bmN0aW9uIGdldEdsb2JhbCh2YWx1ZSkgewogICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgIH0KICAgICAgICB2YXIgZyA9IGdsb2JhbDsKICAgICAgICBlYWNoKHZhbHVlLnNwbGl0KCcuJyksIGZ1bmN0aW9uIChwYXJ0KSB7CiAgICAgICAgICAgIGcgPSBnW3BhcnRdOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBnOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3RydWN0cyBhbiBlcnJvciB3aXRoIGEgcG9pbnRlciB0byBhbiBVUkwgd2l0aCBtb3JlIGluZm9ybWF0aW9uLgogICAgICogQHBhcmFtIHtTdHJpbmd9IGlkIHRoZSBlcnJvciBJRCB0aGF0IG1hcHMgdG8gYW4gSUQgb24gYSB3ZWIgcGFnZS4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIGh1bWFuIHJlYWRhYmxlIGVycm9yLgogICAgICogQHBhcmFtIHtFcnJvcn0gW2Vycl0gdGhlIG9yaWdpbmFsIGVycm9yLCBpZiB0aGVyZSBpcyBvbmUuCiAgICAgKgogICAgICogQHJldHVybnMge0Vycm9yfQogICAgICovCiAgICBmdW5jdGlvbiBtYWtlRXJyb3IoaWQsIG1zZywgZXJyLCByZXF1aXJlTW9kdWxlcykgewogICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1zZyArICdcbmh0dHA6Ly9yZXF1aXJlanMub3JnL2RvY3MvZXJyb3JzLmh0bWwjJyArIGlkKTsKICAgICAgICBlLnJlcXVpcmVUeXBlID0gaWQ7CiAgICAgICAgZS5yZXF1aXJlTW9kdWxlcyA9IHJlcXVpcmVNb2R1bGVzOwogICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgZS5vcmlnaW5hbEVycm9yID0gZXJyOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZTsKICAgIH0KCiAgICBpZiAodHlwZW9mIGRlZmluZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAvL0lmIGEgZGVmaW5lIGlzIGFscmVhZHkgaW4gcGxheSB2aWEgYW5vdGhlciBBTUQgbG9hZGVyLAogICAgICAgIC8vZG8gbm90IG92ZXJ3cml0ZS4KICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKHR5cGVvZiByZXF1aXJlanMgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgaWYgKGlzRnVuY3Rpb24ocmVxdWlyZWpzKSkgewogICAgICAgICAgICAvL0RvIG5vdCBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgcmVxdWlyZWpzIGluc3RhbmNlLgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNmZyA9IHJlcXVpcmVqczsKICAgICAgICByZXF1aXJlanMgPSB1bmRlZmluZWQ7CiAgICB9CgogICAgLy9BbGxvdyBmb3IgYSByZXF1aXJlIGNvbmZpZyBvYmplY3QKICAgIGlmICh0eXBlb2YgcmVxdWlyZSAhPT0gJ3VuZGVmaW5lZCcgJiYgIWlzRnVuY3Rpb24ocmVxdWlyZSkpIHsKICAgICAgICAvL2Fzc3VtZSBpdCBpcyBhIGNvbmZpZyBvYmplY3QuCiAgICAgICAgY2ZnID0gcmVxdWlyZTsKICAgICAgICByZXF1aXJlID0gdW5kZWZpbmVkOwogICAgfQoKICAgIGZ1bmN0aW9uIG5ld0NvbnRleHQoY29udGV4dE5hbWUpIHsKICAgICAgICB2YXIgaW5DaGVja0xvYWRlZCwgTW9kdWxlLCBjb250ZXh0LCBoYW5kbGVycywKICAgICAgICAgICAgY2hlY2tMb2FkZWRUaW1lb3V0SWQsCiAgICAgICAgICAgIGNvbmZpZyA9IHsKICAgICAgICAgICAgICAgIC8vRGVmYXVsdHMuIERvIG5vdCBzZXQgYSBkZWZhdWx0IGZvciBtYXAKICAgICAgICAgICAgICAgIC8vY29uZmlnIHRvIHNwZWVkIHVwIG5vcm1hbGl6ZSgpLCB3aGljaAogICAgICAgICAgICAgICAgLy93aWxsIHJ1biBmYXN0ZXIgaWYgdGhlcmUgaXMgbm8gZGVmYXVsdC4KICAgICAgICAgICAgICAgIHdhaXRTZWNvbmRzOiA3LAogICAgICAgICAgICAgICAgYmFzZVVybDogJy4vJywKICAgICAgICAgICAgICAgIHBhdGhzOiB7fSwKICAgICAgICAgICAgICAgIGJ1bmRsZXM6IHt9LAogICAgICAgICAgICAgICAgcGtnczoge30sCiAgICAgICAgICAgICAgICBzaGltOiB7fSwKICAgICAgICAgICAgICAgIGNvbmZpZzoge30KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVnaXN0cnkgPSB7fSwKICAgICAgICAgICAgLy9yZWdpc3RyeSBvZiBqdXN0IGVuYWJsZWQgbW9kdWxlcywgdG8gc3BlZWQKICAgICAgICAgICAgLy9jeWNsZSBicmVha2luZyBjb2RlIHdoZW4gbG90cyBvZiBtb2R1bGVzCiAgICAgICAgICAgIC8vYXJlIHJlZ2lzdGVyZWQsIGJ1dCBub3QgYWN0aXZhdGVkLgogICAgICAgICAgICBlbmFibGVkUmVnaXN0cnkgPSB7fSwKICAgICAgICAgICAgdW5kZWZFdmVudHMgPSB7fSwKICAgICAgICAgICAgZGVmUXVldWUgPSBbXSwKICAgICAgICAgICAgZGVmaW5lZCA9IHt9LAogICAgICAgICAgICB1cmxGZXRjaGVkID0ge30sCiAgICAgICAgICAgIGJ1bmRsZXNNYXAgPSB7fSwKICAgICAgICAgICAgcmVxdWlyZUNvdW50ZXIgPSAxLAogICAgICAgICAgICB1bm5vcm1hbGl6ZWRDb3VudGVyID0gMTsKCiAgICAgICAgLyoqCiAgICAgICAgICogVHJpbXMgdGhlIC4gYW5kIC4uIGZyb20gYW4gYXJyYXkgb2YgcGF0aCBzZWdtZW50cy4KICAgICAgICAgKiBJdCB3aWxsIGtlZXAgYSBsZWFkaW5nIHBhdGggc2VnbWVudCBpZiBhIC4uIHdpbGwgYmVjb21lCiAgICAgICAgICogdGhlIGZpcnN0IHBhdGggc2VnbWVudCwgdG8gaGVscCB3aXRoIG1vZHVsZSBuYW1lIGxvb2t1cHMsCiAgICAgICAgICogd2hpY2ggYWN0IGxpa2UgcGF0aHMsIGJ1dCBjYW4gYmUgcmVtYXBwZWQuIEJ1dCB0aGUgZW5kIHJlc3VsdCwKICAgICAgICAgKiBhbGwgcGF0aHMgdGhhdCB1c2UgdGhpcyBmdW5jdGlvbiBzaG91bGQgbG9vayBub3JtYWxpemVkLgogICAgICAgICAqIE5PVEU6IHRoaXMgbWV0aG9kIE1PRElGSUVTIHRoZSBpbnB1dCBhcnJheS4KICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnkgdGhlIGFycmF5IG9mIHBhdGggc2VnbWVudHMuCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gdHJpbURvdHMoYXJ5KSB7CiAgICAgICAgICAgIHZhciBpLCBwYXJ0OwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJ5Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBwYXJ0ID0gYXJ5W2ldOwogICAgICAgICAgICAgICAgaWYgKHBhcnQgPT09ICcuJykgewogICAgICAgICAgICAgICAgICAgIGFyeS5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgaSAtPSAxOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYXQgdGhlIHN0YXJ0LCBvciBwcmV2aW91cyB2YWx1ZSBpcyBzdGlsbCAuLiwKICAgICAgICAgICAgICAgICAgICAvLyBrZWVwIHRoZW0gc28gdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHBhdGggaXQgbWF5CiAgICAgICAgICAgICAgICAgICAgLy8gc3RpbGwgd29yayB3aGVuIGNvbnZlcnRlZCB0byBhIHBhdGgsIGV2ZW4gdGhvdWdoCiAgICAgICAgICAgICAgICAgICAgLy8gYXMgYW4gSUQgaXQgaXMgbGVzcyB0aGFuIGlkZWFsLiBJbiBsYXJnZXIgcG9pbnQKICAgICAgICAgICAgICAgICAgICAvLyByZWxlYXNlcywgbWF5IGJlIGJldHRlciB0byBqdXN0IGtpY2sgb3V0IGFuIGVycm9yLgogICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwIHx8IChpID09PSAxICYmIGFyeVsyXSA9PT0gJy4uJykgfHwgYXJ5W2kgLSAxXSA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFyeS5zcGxpY2UoaSAtIDEsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICBpIC09IDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBHaXZlbiBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lLCBsaWtlIC4vc29tZXRoaW5nLCBub3JtYWxpemUgaXQgdG8KICAgICAgICAgKiBhIHJlYWwgbmFtZSB0aGF0IGNhbiBiZSBtYXBwZWQgdG8gYSBwYXRoLgogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSByZWxhdGl2ZSBuYW1lCiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGJhc2VOYW1lIGEgcmVhbCBuYW1lIHRoYXQgdGhlIG5hbWUgYXJnIGlzIHJlbGF0aXZlCiAgICAgICAgICogdG8uCiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBhcHBseU1hcCBhcHBseSB0aGUgbWFwIGNvbmZpZyB0byB0aGUgdmFsdWUuIFNob3VsZAogICAgICAgICAqIG9ubHkgYmUgZG9uZSBpZiB0aGlzIG5vcm1hbGl6YXRpb24gaXMgZm9yIGEgZGVwZW5kZW5jeSBJRC4KICAgICAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBub3JtYWxpemVkIG5hbWUKICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBub3JtYWxpemUobmFtZSwgYmFzZU5hbWUsIGFwcGx5TWFwKSB7CiAgICAgICAgICAgIHZhciBwa2dNYWluLCBtYXBWYWx1ZSwgbmFtZVBhcnRzLCBpLCBqLCBuYW1lU2VnbWVudCwgbGFzdEluZGV4LAogICAgICAgICAgICAgICAgZm91bmRNYXAsIGZvdW5kSSwgZm91bmRTdGFyTWFwLCBzdGFySSwgbm9ybWFsaXplZEJhc2VQYXJ0cywKICAgICAgICAgICAgICAgIGJhc2VQYXJ0cyA9IChiYXNlTmFtZSAmJiBiYXNlTmFtZS5zcGxpdCgnLycpKSwKICAgICAgICAgICAgICAgIG1hcCA9IGNvbmZpZy5tYXAsCiAgICAgICAgICAgICAgICBzdGFyTWFwID0gbWFwICYmIG1hcFsnKiddOwoKICAgICAgICAgICAgLy9BZGp1c3QgYW55IHJlbGF0aXZlIHBhdGhzLgogICAgICAgICAgICBpZiAobmFtZSkgewogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3BsaXQoJy8nKTsKICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IG5hbWUubGVuZ3RoIC0gMTsKCiAgICAgICAgICAgICAgICAvLyBJZiB3YW50aW5nIG5vZGUgSUQgY29tcGF0aWJpbGl0eSwgc3RyaXAgLmpzIGZyb20gZW5kCiAgICAgICAgICAgICAgICAvLyBvZiBJRHMuIEhhdmUgdG8gZG8gdGhpcyBoZXJlLCBhbmQgbm90IGluIG5hbWVUb1VybAogICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBub2RlIGFsbG93cyBlaXRoZXIgLmpzIG9yIG5vbiAuanMgdG8gbWFwCiAgICAgICAgICAgICAgICAvLyB0byBzYW1lIGZpbGUuCiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm5vZGVJZENvbXBhdCAmJiBqc1N1ZmZpeFJlZ0V4cC50ZXN0KG5hbWVbbGFzdEluZGV4XSkpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lW2xhc3RJbmRleF0gPSBuYW1lW2xhc3RJbmRleF0ucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFN0YXJ0cyB3aXRoIGEgJy4nIHNvIG5lZWQgdGhlIGJhc2VOYW1lCiAgICAgICAgICAgICAgICBpZiAobmFtZVswXS5jaGFyQXQoMCkgPT09ICcuJyAmJiBiYXNlUGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAvL0NvbnZlcnQgYmFzZU5hbWUgdG8gYXJyYXksIGFuZCBsb3Agb2ZmIHRoZSBsYXN0IHBhcnQsCiAgICAgICAgICAgICAgICAgICAgLy9zbyB0aGF0IC4gbWF0Y2hlcyB0aGF0ICdkaXJlY3RvcnknIGFuZCBub3QgbmFtZSBvZiB0aGUgYmFzZU5hbWUncwogICAgICAgICAgICAgICAgICAgIC8vbW9kdWxlLiBGb3IgaW5zdGFuY2UsIGJhc2VOYW1lIG9mICdvbmUvdHdvL3RocmVlJywgbWFwcyB0bwogICAgICAgICAgICAgICAgICAgIC8vJ29uZS90d28vdGhyZWUuanMnLCBidXQgd2Ugd2FudCB0aGUgZGlyZWN0b3J5LCAnb25lL3R3bycgZm9yCiAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5vcm1hbGl6YXRpb24uCiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZEJhc2VQYXJ0cyA9IGJhc2VQYXJ0cy5zbGljZSgwLCBiYXNlUGFydHMubGVuZ3RoIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5vcm1hbGl6ZWRCYXNlUGFydHMuY29uY2F0KG5hbWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRyaW1Eb3RzKG5hbWUpOwogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9pbignLycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0FwcGx5IG1hcCBjb25maWcgaWYgYXZhaWxhYmxlLgogICAgICAgICAgICBpZiAoYXBwbHlNYXAgJiYgbWFwICYmIChiYXNlUGFydHMgfHwgc3Rhck1hcCkpIHsKICAgICAgICAgICAgICAgIG5hbWVQYXJ0cyA9IG5hbWUuc3BsaXQoJy8nKTsKCiAgICAgICAgICAgICAgICBvdXRlckxvb3A6IGZvciAoaSA9IG5hbWVQYXJ0cy5sZW5ndGg7IGkgPiAwOyBpIC09IDEpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lU2VnbWVudCA9IG5hbWVQYXJ0cy5zbGljZSgwLCBpKS5qb2luKCcvJyk7CgogICAgICAgICAgICAgICAgICAgIGlmIChiYXNlUGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9GaW5kIHRoZSBsb25nZXN0IGJhc2VOYW1lIHNlZ21lbnQgbWF0Y2ggaW4gdGhlIGNvbmZpZy4KICAgICAgICAgICAgICAgICAgICAgICAgLy9TbywgZG8gam9pbnMgb24gdGhlIGJpZ2dlc3QgdG8gc21hbGxlc3QgbGVuZ3RocyBvZiBiYXNlUGFydHMuCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IGJhc2VQYXJ0cy5sZW5ndGg7IGogPiAwOyBqIC09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFZhbHVlID0gZ2V0T3duKG1hcCwgYmFzZVBhcnRzLnNsaWNlKDAsIGopLmpvaW4oJy8nKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iYXNlTmFtZSBzZWdtZW50IGhhcyBjb25maWcsIGZpbmQgaWYgaXQgaGFzIG9uZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBnZXRPd24obWFwVmFsdWUsIG5hbWVTZWdtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NYXRjaCwgdXBkYXRlIG5hbWUgdG8gdGhlIG5ldyB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRNYXAgPSBtYXBWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgb3V0ZXJMb29wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9DaGVjayBmb3IgYSBzdGFyIG1hcCBtYXRjaCwgYnV0IGp1c3QgaG9sZCBvbiB0byBpdCwKICAgICAgICAgICAgICAgICAgICAvL2lmIHRoZXJlIGlzIGEgc2hvcnRlciBzZWdtZW50IG1hdGNoIGxhdGVyIGluIGEgbWF0Y2hpbmcKICAgICAgICAgICAgICAgICAgICAvL2NvbmZpZywgdGhlbiBmYXZvciBvdmVyIHRoaXMgc3RhciBtYXAuCiAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFN0YXJNYXAgJiYgc3Rhck1hcCAmJiBnZXRPd24oc3Rhck1hcCwgbmFtZVNlZ21lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU3Rhck1hcCA9IGdldE93bihzdGFyTWFwLCBuYW1lU2VnbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJJID0gaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFmb3VuZE1hcCAmJiBmb3VuZFN0YXJNYXApIHsKICAgICAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IGZvdW5kU3Rhck1hcDsKICAgICAgICAgICAgICAgICAgICBmb3VuZEkgPSBzdGFySTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZm91bmRNYXApIHsKICAgICAgICAgICAgICAgICAgICBuYW1lUGFydHMuc3BsaWNlKDAsIGZvdW5kSSwgZm91bmRNYXApOwogICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lUGFydHMuam9pbignLycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgbmFtZSBwb2ludHMgdG8gYSBwYWNrYWdlJ3MgbmFtZSwgdXNlCiAgICAgICAgICAgIC8vIHRoZSBwYWNrYWdlIG1haW4gaW5zdGVhZC4KICAgICAgICAgICAgcGtnTWFpbiA9IGdldE93bihjb25maWcucGtncywgbmFtZSk7CgogICAgICAgICAgICByZXR1cm4gcGtnTWFpbiA/IHBrZ01haW4gOiBuYW1lOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU2NyaXB0KG5hbWUpIHsKICAgICAgICAgICAgaWYgKGlzQnJvd3NlcikgewogICAgICAgICAgICAgICAgZWFjaChzY3JpcHRzKCksIGZ1bmN0aW9uIChzY3JpcHROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKSA9PT0gbmFtZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZWNvbnRleHQnKSA9PT0gY29udGV4dC5jb250ZXh0TmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2NyaXB0Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBoYXNQYXRoRmFsbGJhY2soaWQpIHsKICAgICAgICAgICAgdmFyIHBhdGhDb25maWcgPSBnZXRPd24oY29uZmlnLnBhdGhzLCBpZCk7CiAgICAgICAgICAgIGlmIChwYXRoQ29uZmlnICYmIGlzQXJyYXkocGF0aENvbmZpZykgJiYgcGF0aENvbmZpZy5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAvL1BvcCBvZmYgdGhlIGZpcnN0IGFycmF5IHZhbHVlLCBzaW5jZSBpdCBmYWlsZWQsIGFuZAogICAgICAgICAgICAgICAgLy9yZXRyeQogICAgICAgICAgICAgICAgcGF0aENvbmZpZy5zaGlmdCgpOwogICAgICAgICAgICAgICAgY29udGV4dC5yZXF1aXJlLnVuZGVmKGlkKTsKCiAgICAgICAgICAgICAgICAvL0N1c3RvbSByZXF1aXJlIHRoYXQgZG9lcyBub3QgZG8gbWFwIHRyYW5zbGF0aW9uLCBzaW5jZQogICAgICAgICAgICAgICAgLy9JRCBpcyAiYWJzb2x1dGUiLCBhbHJlYWR5IG1hcHBlZC9yZXNvbHZlZC4KICAgICAgICAgICAgICAgIGNvbnRleHQubWFrZVJlcXVpcmUobnVsbCwgewogICAgICAgICAgICAgICAgICAgIHNraXBNYXA6IHRydWUKICAgICAgICAgICAgICAgIH0pKFtpZF0pOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvL1R1cm5zIGEgcGx1Z2luIXJlc291cmNlIHRvIFtwbHVnaW4sIHJlc291cmNlXQogICAgICAgIC8vd2l0aCB0aGUgcGx1Z2luIGJlaW5nIHVuZGVmaW5lZCBpZiB0aGUgbmFtZQogICAgICAgIC8vZGlkIG5vdCBoYXZlIGEgcGx1Z2luIHByZWZpeC4KICAgICAgICBmdW5jdGlvbiBzcGxpdFByZWZpeChuYW1lKSB7CiAgICAgICAgICAgIHZhciBwcmVmaXgsCiAgICAgICAgICAgICAgICBpbmRleCA9IG5hbWUgPyBuYW1lLmluZGV4T2YoJyEnKSA6IC0xOwogICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkgewogICAgICAgICAgICAgICAgcHJlZml4ID0gbmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpOwogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSwgbmFtZS5sZW5ndGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBbcHJlZml4LCBuYW1lXTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIENyZWF0ZXMgYSBtb2R1bGUgbWFwcGluZyB0aGF0IGluY2x1ZGVzIHBsdWdpbiBwcmVmaXgsIG1vZHVsZQogICAgICAgICAqIG5hbWUsIGFuZCBwYXRoLiBJZiBwYXJlbnRNb2R1bGVNYXAgaXMgcHJvdmlkZWQgaXQgd2lsbAogICAgICAgICAqIGFsc28gbm9ybWFsaXplIHRoZSBuYW1lIHZpYSByZXF1aXJlLm5vcm1hbGl6ZSgpCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgbW9kdWxlIG5hbWUKICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmVudE1vZHVsZU1hcF0gcGFyZW50IG1vZHVsZSBtYXAKICAgICAgICAgKiBmb3IgdGhlIG1vZHVsZSBuYW1lLCB1c2VkIHRvIHJlc29sdmUgcmVsYXRpdmUgbmFtZXMuCiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBpc05vcm1hbGl6ZWQ6IGlzIHRoZSBJRCBhbHJlYWR5IG5vcm1hbGl6ZWQuCiAgICAgICAgICogVGhpcyBpcyB0cnVlIGlmIHRoaXMgY2FsbCBpcyBkb25lIGZvciBhIGRlZmluZSgpIG1vZHVsZSBJRC4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGFwcGx5TWFwOiBhcHBseSB0aGUgbWFwIGNvbmZpZyB0byB0aGUgSUQuCiAgICAgICAgICogU2hvdWxkIG9ubHkgYmUgdHJ1ZSBpZiB0aGlzIG1hcCBpcyBmb3IgYSBkZXBlbmRlbmN5LgogICAgICAgICAqCiAgICAgICAgICogQHJldHVybnMge09iamVjdH0KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBtYWtlTW9kdWxlTWFwKG5hbWUsIHBhcmVudE1vZHVsZU1hcCwgaXNOb3JtYWxpemVkLCBhcHBseU1hcCkgewogICAgICAgICAgICB2YXIgdXJsLCBwbHVnaW5Nb2R1bGUsIHN1ZmZpeCwgbmFtZVBhcnRzLAogICAgICAgICAgICAgICAgcHJlZml4ID0gbnVsbCwKICAgICAgICAgICAgICAgIHBhcmVudE5hbWUgPSBwYXJlbnRNb2R1bGVNYXAgPyBwYXJlbnRNb2R1bGVNYXAubmFtZSA6IG51bGwsCiAgICAgICAgICAgICAgICBvcmlnaW5hbE5hbWUgPSBuYW1lLAogICAgICAgICAgICAgICAgaXNEZWZpbmUgPSB0cnVlLAogICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUgPSAnJzsKCiAgICAgICAgICAgIC8vSWYgbm8gbmFtZSwgdGhlbiBpdCBtZWFucyBpdCBpcyBhIHJlcXVpcmUgY2FsbCwgZ2VuZXJhdGUgYW4KICAgICAgICAgICAgLy9pbnRlcm5hbCBuYW1lLgogICAgICAgICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgICAgICAgIGlzRGVmaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICBuYW1lID0gJ19AcicgKyAocmVxdWlyZUNvdW50ZXIgKz0gMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5hbWVQYXJ0cyA9IHNwbGl0UHJlZml4KG5hbWUpOwogICAgICAgICAgICBwcmVmaXggPSBuYW1lUGFydHNbMF07CiAgICAgICAgICAgIG5hbWUgPSBuYW1lUGFydHNbMV07CgogICAgICAgICAgICBpZiAocHJlZml4KSB7CiAgICAgICAgICAgICAgICBwcmVmaXggPSBub3JtYWxpemUocHJlZml4LCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CiAgICAgICAgICAgICAgICBwbHVnaW5Nb2R1bGUgPSBnZXRPd24oZGVmaW5lZCwgcHJlZml4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9BY2NvdW50IGZvciByZWxhdGl2ZSBwYXRocyBpZiB0aGVyZSBpcyBhIGJhc2UgbmFtZS4KICAgICAgICAgICAgaWYgKG5hbWUpIHsKICAgICAgICAgICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luTW9kdWxlICYmIHBsdWdpbk1vZHVsZS5ub3JtYWxpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9QbHVnaW4gaXMgbG9hZGVkLCB1c2UgaXRzIG5vcm1hbGl6ZSBtZXRob2QuCiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gcGx1Z2luTW9kdWxlLm5vcm1hbGl6ZShuYW1lLCBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIG5lc3RlZCBwbHVnaW4gcmVmZXJlbmNlcywgdGhlbiBkbyBub3QgdHJ5IHRvCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSwgYXMgaXQgd2lsbCBub3Qgbm9ybWFsaXplIGNvcnJlY3RseS4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAvLyBwbGFjZXMgYSByZXN0cmljdGlvbiBvbiByZXNvdXJjZUlkcywgYW5kIHRoZSBsb25nZXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVybSBzb2x1dGlvbiBpcyBub3QgdG8gbm9ybWFsaXplIHVudGlsIHBsdWdpbnMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRlZCBhbmQgYWxsIG5vcm1hbGl6YXRpb25zIHRvIGFsbG93IGZvciBhc3luYwogICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkaW5nIG9mIGEgbG9hZGVyIHBsdWdpbi4gQnV0IGZvciBub3csIGZpeGVzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21tb24gdXNlcy4gRGV0YWlscyBpbiAjMTEzMQogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5hbWUuaW5kZXhPZignIScpID09PSAtMSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIGFwcGx5TWFwKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vQSByZWd1bGFyIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CgogICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplZCBuYW1lIG1heSBiZSBhIHBsdWdpbiBJRCBkdWUgdG8gbWFwIGNvbmZpZwogICAgICAgICAgICAgICAgICAgIC8vYXBwbGljYXRpb24gaW4gbm9ybWFsaXplLiBUaGUgbWFwIGNvbmZpZyB2YWx1ZXMgbXVzdAogICAgICAgICAgICAgICAgICAgIC8vYWxyZWFkeSBiZSBub3JtYWxpemVkLCBzbyBkbyBub3QgbmVlZCB0byByZWRvIHRoYXQgcGFydC4KICAgICAgICAgICAgICAgICAgICBuYW1lUGFydHMgPSBzcGxpdFByZWZpeChub3JtYWxpemVkTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gbmFtZVBhcnRzWzBdOwogICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbmFtZVBhcnRzWzFdOwogICAgICAgICAgICAgICAgICAgIGlzTm9ybWFsaXplZCA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIHVybCA9IGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZWROYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiB0aGUgaWQgaXMgYSBwbHVnaW4gaWQgdGhhdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBpZiBpdCBuZWVkcwogICAgICAgICAgICAvL25vcm1hbGl6YXRpb24sIHN0YW1wIGl0IHdpdGggYSB1bmlxdWUgSUQgc28gdHdvIG1hdGNoaW5nIHJlbGF0aXZlCiAgICAgICAgICAgIC8vaWRzIHRoYXQgbWF5IGNvbmZsaWN0IGNhbiBiZSBzZXBhcmF0ZS4KICAgICAgICAgICAgc3VmZml4ID0gcHJlZml4ICYmICFwbHVnaW5Nb2R1bGUgJiYgIWlzTm9ybWFsaXplZCA/CiAgICAgICAgICAgICAgICAgICAgICdfdW5ub3JtYWxpemVkJyArICh1bm5vcm1hbGl6ZWRDb3VudGVyICs9IDEpIDoKICAgICAgICAgICAgICAgICAgICAgJyc7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgcHJlZml4OiBwcmVmaXgsCiAgICAgICAgICAgICAgICBuYW1lOiBub3JtYWxpemVkTmFtZSwKICAgICAgICAgICAgICAgIHBhcmVudE1hcDogcGFyZW50TW9kdWxlTWFwLAogICAgICAgICAgICAgICAgdW5ub3JtYWxpemVkOiAhIXN1ZmZpeCwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgb3JpZ2luYWxOYW1lOiBvcmlnaW5hbE5hbWUsCiAgICAgICAgICAgICAgICBpc0RlZmluZTogaXNEZWZpbmUsCiAgICAgICAgICAgICAgICBpZDogKHByZWZpeCA/CiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArICchJyArIG5vcm1hbGl6ZWROYW1lIDoKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUpICsgc3VmZml4CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnZXRNb2R1bGUoZGVwTWFwKSB7CiAgICAgICAgICAgIHZhciBpZCA9IGRlcE1hcC5pZCwKICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwoKICAgICAgICAgICAgaWYgKCFtb2QpIHsKICAgICAgICAgICAgICAgIG1vZCA9IHJlZ2lzdHJ5W2lkXSA9IG5ldyBjb250ZXh0Lk1vZHVsZShkZXBNYXApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbW9kOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb24oZGVwTWFwLCBuYW1lLCBmbikgewogICAgICAgICAgICB2YXIgaWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgIGlmIChoYXNQcm9wKGRlZmluZWQsIGlkKSAmJgogICAgICAgICAgICAgICAgICAgICghbW9kIHx8IG1vZC5kZWZpbmVFbWl0Q29tcGxldGUpKSB7CiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2RlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgZm4oZGVmaW5lZFtpZF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbW9kID0gZ2V0TW9kdWxlKGRlcE1hcCk7CiAgICAgICAgICAgICAgICBpZiAobW9kLmVycm9yICYmIG5hbWUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICBmbihtb2QuZXJyb3IpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtb2Qub24obmFtZSwgZm4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvbkVycm9yKGVyciwgZXJyYmFjaykgewogICAgICAgICAgICB2YXIgaWRzID0gZXJyLnJlcXVpcmVNb2R1bGVzLAogICAgICAgICAgICAgICAgbm90aWZpZWQgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmIChlcnJiYWNrKSB7CiAgICAgICAgICAgICAgICBlcnJiYWNrKGVycik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlYWNoKGlkcywgZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwogICAgICAgICAgICAgICAgICAgIGlmIChtb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9TZXQgZXJyb3Igb24gbW9kdWxlLCBzbyBpdCBza2lwcyB0aW1lb3V0IGNoZWNrcy4KICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGlmICghbm90aWZpZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXEub25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gdHJhbnNmZXIgZ2xvYmFsUXVldWUgaXRlbXMgdG8gdGhpcyBjb250ZXh0J3MKICAgICAgICAgKiBkZWZRdWV1ZS4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiB0YWtlR2xvYmFsUXVldWUoKSB7CiAgICAgICAgICAgIC8vUHVzaCBhbGwgdGhlIGdsb2JhbERlZlF1ZXVlIGl0ZW1zIGludG8gdGhlIGNvbnRleHQncyBkZWZRdWV1ZQogICAgICAgICAgICBpZiAoZ2xvYmFsRGVmUXVldWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBlYWNoKGdsb2JhbERlZlF1ZXVlLCBmdW5jdGlvbihxdWV1ZUl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBxdWV1ZUl0ZW1bMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcFtpZF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkZWZRdWV1ZS5wdXNoKHF1ZXVlSXRlbSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGhhbmRsZXJzID0gewogICAgICAgICAgICAncmVxdWlyZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QucmVxdWlyZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2QucmVxdWlyZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtb2QucmVxdWlyZSA9IGNvbnRleHQubWFrZVJlcXVpcmUobW9kLm1hcCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAnZXhwb3J0cyc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIG1vZC51c2luZ0V4cG9ydHMgPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKG1vZC5tYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV4cG9ydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkZWZpbmVkW21vZC5tYXAuaWRdID0gbW9kLmV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLmV4cG9ydHMgPSBkZWZpbmVkW21vZC5tYXAuaWRdID0ge30pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ21vZHVsZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QubW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZC5tb2R1bGU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLm1vZHVsZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG1vZC5tYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHVyaTogbW9kLm1hcC51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldE93bihjb25maWcuY29uZmlnLCBtb2QubWFwLmlkKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogbW9kLmV4cG9ydHMgfHwgKG1vZC5leHBvcnRzID0ge30pCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBjbGVhblJlZ2lzdHJ5KGlkKSB7CiAgICAgICAgICAgIC8vQ2xlYW4gdXAgbWFjaGluZXJ5IHVzZWQgZm9yIHdhaXRpbmcgbW9kdWxlcy4KICAgICAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5W2lkXTsKICAgICAgICAgICAgZGVsZXRlIGVuYWJsZWRSZWdpc3RyeVtpZF07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBicmVha0N5Y2xlKG1vZCwgdHJhY2VkLCBwcm9jZXNzZWQpIHsKICAgICAgICAgICAgdmFyIGlkID0gbW9kLm1hcC5pZDsKCiAgICAgICAgICAgIGlmIChtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgIG1vZC5lbWl0KCdlcnJvcicsIG1vZC5lcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0cmFjZWRbaWRdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGVhY2gobW9kLmRlcE1hcHMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGVwSWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcCA9IGdldE93bihyZWdpc3RyeSwgZGVwSWQpOwoKICAgICAgICAgICAgICAgICAgICAvL09ubHkgZm9yY2UgdGhpbmdzIHRoYXQgaGF2ZSBub3QgY29tcGxldGVkCiAgICAgICAgICAgICAgICAgICAgLy9iZWluZyBkZWZpbmVkLCBzbyBzdGlsbCBpbiB0aGUgcmVnaXN0cnksCiAgICAgICAgICAgICAgICAgICAgLy9hbmQgb25seSBpZiBpdCBoYXMgbm90IGJlZW4gbWF0Y2hlZCB1cAogICAgICAgICAgICAgICAgICAgIC8vaW4gdGhlIG1vZHVsZSBhbHJlYWR5LgogICAgICAgICAgICAgICAgICAgIGlmIChkZXAgJiYgIW1vZC5kZXBNYXRjaGVkW2ldICYmICFwcm9jZXNzZWRbZGVwSWRdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRPd24odHJhY2VkLCBkZXBJZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5kZWZpbmVEZXAoaSwgZGVmaW5lZFtkZXBJZF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmNoZWNrKCk7IC8vcGFzcyBmYWxzZT8KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrQ3ljbGUoZGVwLCB0cmFjZWQsIHByb2Nlc3NlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHByb2Nlc3NlZFtpZF0gPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjaGVja0xvYWRlZCgpIHsKICAgICAgICAgICAgdmFyIGVyciwgdXNpbmdQYXRoRmFsbGJhY2ssCiAgICAgICAgICAgICAgICB3YWl0SW50ZXJ2YWwgPSBjb25maWcud2FpdFNlY29uZHMgKiAxMDAwLAogICAgICAgICAgICAgICAgLy9JdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSB3YWl0IGludGVydmFsIGJ5IHVzaW5nIHdhaXRTZWNvbmRzIG9mIDAuCiAgICAgICAgICAgICAgICBleHBpcmVkID0gd2FpdEludGVydmFsICYmIChjb250ZXh0LnN0YXJ0VGltZSArIHdhaXRJbnRlcnZhbCkgPCBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKICAgICAgICAgICAgICAgIG5vTG9hZHMgPSBbXSwKICAgICAgICAgICAgICAgIHJlcUNhbGxzID0gW10sCiAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSBmYWxzZSwKICAgICAgICAgICAgICAgIG5lZWRDeWNsZUNoZWNrID0gdHJ1ZTsKCiAgICAgICAgICAgIC8vRG8gbm90IGJvdGhlciBpZiB0aGlzIGNhbGwgd2FzIGEgcmVzdWx0IG9mIGEgY3ljbGUgYnJlYWsuCiAgICAgICAgICAgIGlmIChpbkNoZWNrTG9hZGVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGluQ2hlY2tMb2FkZWQgPSB0cnVlOwoKICAgICAgICAgICAgLy9GaWd1cmUgb3V0IHRoZSBzdGF0ZSBvZiBhbGwgdGhlIG1vZHVsZXMuCiAgICAgICAgICAgIGVhY2hQcm9wKGVuYWJsZWRSZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCkgewogICAgICAgICAgICAgICAgdmFyIG1hcCA9IG1vZC5tYXAsCiAgICAgICAgICAgICAgICAgICAgbW9kSWQgPSBtYXAuaWQ7CgogICAgICAgICAgICAgICAgLy9Ta2lwIHRoaW5ncyB0aGF0IGFyZSBub3QgZW5hYmxlZCBvciBpbiBlcnJvciBzdGF0ZS4KICAgICAgICAgICAgICAgIGlmICghbW9kLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICByZXFDYWxscy5wdXNoKG1vZCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGV4ZWN1dGVkLCBhbmQgaXQgaGFzIG5vdAogICAgICAgICAgICAgICAgICAgIC8vYmVlbiBpbml0ZWQgYW5kIHRpbWUgaXMgdXAsIHJlbWVtYmVyIGl0LgogICAgICAgICAgICAgICAgICAgIGlmICghbW9kLmluaXRlZCAmJiBleHBpcmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQYXRoRmFsbGJhY2sobW9kSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ1BhdGhGYWxsYmFjayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9Mb2Fkcy5wdXNoKG1vZElkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVNjcmlwdChtb2RJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtb2QuaW5pdGVkICYmIG1vZC5mZXRjaGVkICYmIG1hcC5pc0RlZmluZSkgewogICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hcC5wcmVmaXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTm8gcmVhc29uIHRvIGtlZXAgbG9va2luZyBmb3IgdW5maW5pc2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2FkaW5nLiBJZiB0aGUgb25seSBzdGlsbExvYWRpbmcgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wbHVnaW4gcmVzb3VyY2UgdGhvdWdoLCBrZWVwIGdvaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iZWNhdXNlIGl0IG1heSBiZSB0aGF0IGEgcGx1Z2luIHJlc291cmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lzIHdhaXRpbmcgb24gYSBub24tcGx1Z2luIGN5Y2xlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChuZWVkQ3ljbGVDaGVjayA9IGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoZXhwaXJlZCAmJiBub0xvYWRzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgLy9JZiB3YWl0IHRpbWUgZXhwaXJlZCwgdGhyb3cgZXJyb3Igb2YgdW5sb2FkZWQgbW9kdWxlcy4KICAgICAgICAgICAgICAgIGVyciA9IG1ha2VFcnJvcigndGltZW91dCcsICdMb2FkIHRpbWVvdXQgZm9yIG1vZHVsZXM6ICcgKyBub0xvYWRzLCBudWxsLCBub0xvYWRzKTsKICAgICAgICAgICAgICAgIGVyci5jb250ZXh0TmFtZSA9IGNvbnRleHQuY29udGV4dE5hbWU7CiAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihlcnIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL05vdCBleHBpcmVkLCBjaGVjayBmb3IgYSBjeWNsZS4KICAgICAgICAgICAgaWYgKG5lZWRDeWNsZUNoZWNrKSB7CiAgICAgICAgICAgICAgICBlYWNoKHJlcUNhbGxzLCBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWtDeWNsZShtb2QsIHt9LCB7fSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiBzdGlsbCB3YWl0aW5nIG9uIGxvYWRzLCBhbmQgdGhlIHdhaXRpbmcgbG9hZCBpcyBzb21ldGhpbmcKICAgICAgICAgICAgLy9vdGhlciB0aGFuIGEgcGx1Z2luIHJlc291cmNlLCBvciB0aGVyZSBhcmUgc3RpbGwgb3V0c3RhbmRpbmcKICAgICAgICAgICAgLy9zY3JpcHRzLCB0aGVuIGp1c3QgdHJ5IGJhY2sgbGF0ZXIuCiAgICAgICAgICAgIGlmICgoIWV4cGlyZWQgfHwgdXNpbmdQYXRoRmFsbGJhY2spICYmIHN0aWxsTG9hZGluZykgewogICAgICAgICAgICAgICAgLy9Tb21ldGhpbmcgaXMgc3RpbGwgd2FpdGluZyB0byBsb2FkLiBXYWl0IGZvciBpdCwgYnV0IG9ubHkKICAgICAgICAgICAgICAgIC8vaWYgYSB0aW1lb3V0IGlzIG5vdCBhbHJlYWR5IGluIGVmZmVjdC4KICAgICAgICAgICAgICAgIGlmICgoaXNCcm93c2VyIHx8IGlzV2ViV29ya2VyKSAmJiAhY2hlY2tMb2FkZWRUaW1lb3V0SWQpIHsKICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9hZGVkKCk7CiAgICAgICAgICAgICAgICAgICAgfSwgNTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpbkNoZWNrTG9hZGVkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBNb2R1bGUgPSBmdW5jdGlvbiAobWFwKSB7CiAgICAgICAgICAgIHRoaXMuZXZlbnRzID0gZ2V0T3duKHVuZGVmRXZlbnRzLCBtYXAuaWQpIHx8IHt9OwogICAgICAgICAgICB0aGlzLm1hcCA9IG1hcDsKICAgICAgICAgICAgdGhpcy5zaGltID0gZ2V0T3duKGNvbmZpZy5zaGltLCBtYXAuaWQpOwogICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHMgPSBbXTsKICAgICAgICAgICAgdGhpcy5kZXBNYXBzID0gW107CiAgICAgICAgICAgIHRoaXMuZGVwTWF0Y2hlZCA9IFtdOwogICAgICAgICAgICB0aGlzLnBsdWdpbk1hcHMgPSB7fTsKICAgICAgICAgICAgdGhpcy5kZXBDb3VudCA9IDA7CgogICAgICAgICAgICAvKiB0aGlzLmV4cG9ydHMgdGhpcy5mYWN0b3J5CiAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcyA9IFtdLAogICAgICAgICAgICAgICB0aGlzLmVuYWJsZWQsIHRoaXMuZmV0Y2hlZAogICAgICAgICAgICAqLwogICAgICAgIH07CgogICAgICAgIE1vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChkZXBNYXBzLCBmYWN0b3J5LCBlcnJiYWNrLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgICAgICAgICAgICAgICAvL0RvIG5vdCBkbyBtb3JlIGluaXRzIGlmIGFscmVhZHkgZG9uZS4gQ2FuIGhhcHBlbiBpZiB0aGVyZQogICAgICAgICAgICAgICAgLy9hcmUgbXVsdGlwbGUgZGVmaW5lIGNhbGxzIGZvciB0aGUgc2FtZSBtb2R1bGUuIFRoYXQgaXMgbm90CiAgICAgICAgICAgICAgICAvL2Egbm9ybWFsLCBjb21tb24gY2FzZSwgYnV0IGl0IGlzIGFsc28gbm90IHVuZXhwZWN0ZWQuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy5mYWN0b3J5ID0gZmFjdG9yeTsKCiAgICAgICAgICAgICAgICBpZiAoZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgIC8vUmVnaXN0ZXIgZm9yIGVycm9ycyBvbiB0aGlzIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICB0aGlzLm9uKCdlcnJvcicsIGVycmJhY2spOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgIC8vSWYgbm8gZXJyYmFjayBhbHJlYWR5LCBidXQgdGhlcmUgYXJlIGVycm9yIGxpc3RlbmVycwogICAgICAgICAgICAgICAgICAgIC8vb24gdGhpcyBtb2R1bGUsIHNldCB1cCBhbiBlcnJiYWNrIHRvIHBhc3MgdG8gdGhlIGRlcHMuCiAgICAgICAgICAgICAgICAgICAgZXJyYmFjayA9IGJpbmQodGhpcywgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0RvIGEgY29weSBvZiB0aGUgZGVwZW5kZW5jeSBhcnJheSwgc28gdGhhdAogICAgICAgICAgICAgICAgLy9zb3VyY2UgaW5wdXRzIGFyZSBub3QgbW9kaWZpZWQuIEZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAvLyJzaGltIiBkZXBzIGFyZSBwYXNzZWQgaW4gaGVyZSBkaXJlY3RseSwgYW5kCiAgICAgICAgICAgICAgICAvL2RvaW5nIGEgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVwTWFwcyBhcnJheQogICAgICAgICAgICAgICAgLy93b3VsZCBhZmZlY3QgdGhhdCBjb25maWcuCiAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMgPSBkZXBNYXBzICYmIGRlcE1hcHMuc2xpY2UoMCk7CgogICAgICAgICAgICAgICAgdGhpcy5lcnJiYWNrID0gZXJyYmFjazsKCiAgICAgICAgICAgICAgICAvL0luZGljYXRlIHRoaXMgbW9kdWxlIGhhcyBiZSBpbml0aWFsaXplZAogICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIHRoaXMuaWdub3JlID0gb3B0aW9ucy5pZ25vcmU7CgogICAgICAgICAgICAgICAgLy9Db3VsZCBoYXZlIG9wdGlvbiB0byBpbml0IHRoaXMgbW9kdWxlIGluIGVuYWJsZWQgbW9kZSwKICAgICAgICAgICAgICAgIC8vb3IgY291bGQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgbWFya2VkIGFzIGVuYWJsZWQuIEhvd2V2ZXIsCiAgICAgICAgICAgICAgICAvL3RoZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB1bnRpbCBpbml0IGlzIGNhbGxlZC4gU28KICAgICAgICAgICAgICAgIC8vaWYgZW5hYmxlZCBwcmV2aW91c2x5LCBub3cgdHJpZ2dlciBkZXBlbmRlbmNpZXMgYXMgZW5hYmxlZC4KICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmVuYWJsZWQgfHwgdGhpcy5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgLy9FbmFibGUgdGhpcyBtb2R1bGUgYW5kIGRlcGVuZGVuY2llcy4KICAgICAgICAgICAgICAgICAgICAvL1dpbGwgY2FsbCB0aGlzLmNoZWNrKCkKICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkZWZpbmVEZXA6IGZ1bmN0aW9uIChpLCBkZXBFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAvL0JlY2F1c2Ugb2YgY3ljbGVzLCBkZWZpbmVkIGNhbGxiYWNrIGZvciBhIGdpdmVuCiAgICAgICAgICAgICAgICAvL2V4cG9ydCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRlcE1hdGNoZWRbaV0pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWRbaV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwQ291bnQgLT0gMTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHNbaV0gPSBkZXBFeHBvcnRzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZmV0Y2g6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmZldGNoZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmZldGNoZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhcnRUaW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKCiAgICAgICAgICAgICAgICB2YXIgbWFwID0gdGhpcy5tYXA7CgogICAgICAgICAgICAgICAgLy9JZiB0aGUgbWFuYWdlciBpcyBmb3IgYSBwbHVnaW4gbWFuYWdlZCByZXNvdXJjZSwKICAgICAgICAgICAgICAgIC8vYXNrIHRoZSBwbHVnaW4gdG8gbG9hZCBpdCBub3cuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGltKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5tYWtlUmVxdWlyZSh0aGlzLm1hcCwgewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdWlsZENhbGxiYWNrOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgfSkodGhpcy5zaGltLmRlcHMgfHwgW10sIGJpbmQodGhpcywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL1JlZ3VsYXIgZGVwZW5kZW5jeS4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgdXJsID0gdGhpcy5tYXAudXJsOwoKICAgICAgICAgICAgICAgIC8vUmVndWxhciBkZXBlbmRlbmN5LgogICAgICAgICAgICAgICAgaWYgKCF1cmxGZXRjaGVkW3VybF0pIHsKICAgICAgICAgICAgICAgICAgICB1cmxGZXRjaGVkW3VybF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZCh0aGlzLm1hcC5pZCwgdXJsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDaGVja3MgaWYgdGhlIG1vZHVsZSBpcyByZWFkeSB0byBkZWZpbmUgaXRzZWxmLCBhbmQgaWYgc28sCiAgICAgICAgICAgICAqIGRlZmluZSBpdC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNoZWNrOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCB8fCB0aGlzLmVuYWJsaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBlcnIsIGNqc01vZHVsZSwKICAgICAgICAgICAgICAgICAgICBpZCA9IHRoaXMubWFwLmlkLAogICAgICAgICAgICAgICAgICAgIGRlcEV4cG9ydHMgPSB0aGlzLmRlcEV4cG9ydHMsCiAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0cywKICAgICAgICAgICAgICAgICAgICBmYWN0b3J5ID0gdGhpcy5mYWN0b3J5OwoKICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGZldGNoIGlmIG5vdCBhbHJlYWR5IGluIHRoZSBkZWZRdWV1ZS4KICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoY29udGV4dC5kZWZRdWV1ZU1hcCwgaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2goKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgdGhpcy5lcnJvcik7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRlZmluaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgLy9UaGUgZmFjdG9yeSBjb3VsZCB0cmlnZ2VyIGFub3RoZXIgcmVxdWlyZSBjYWxsCiAgICAgICAgICAgICAgICAgICAgLy90aGF0IHdvdWxkIHJlc3VsdCBpbiBjaGVja2luZyB0aGlzIG1vZHVsZSB0bwogICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lIGl0c2VsZiBhZ2Fpbi4gSWYgYWxyZWFkeSBpbiB0aGUgcHJvY2VzcwogICAgICAgICAgICAgICAgICAgIC8vb2YgZG9pbmcgdGhhdCwgc2tpcCB0aGlzIHdvcmsuCiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmluZyA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlcENvdW50IDwgMSAmJiAhdGhpcy5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGZhY3RvcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjb250ZXh0LmV4ZWNDYihpZCwgZmFjdG9yeSwgZGVwRXhwb3J0cywgZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYXZvciByZXR1cm4gdmFsdWUgb3ZlciBleHBvcnRzLiBJZiBub2RlL2NqcyBpbiBwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3aWxsIG5vdCBoYXZlIGEgcmV0dXJuIHZhbHVlIGFueXdheS4gRmF2b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS5leHBvcnRzIGFzc2lnbm1lbnQgb3ZlciBleHBvcnRzIG9iamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcC5pc0RlZmluZSAmJiBleHBvcnRzID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSB0aGlzLm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjanNNb2R1bGUuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNpbmdFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXhwb3J0cyBhbHJlYWR5IHNldCB0aGUgZGVmaW5lZCB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIGVycm9yIGxpc3RlbmVyLCBmYXZvciBwYXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhhdCBpbnN0ZWFkIG9mIHRocm93aW5nIGFuIGVycm9yLiBIb3dldmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgZG8gaXQgZm9yIGRlZmluZSgpJ2QgIG1vZHVsZXMuIHJlcXVpcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlcnJiYWNrcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3IgZmFpbHVyZXMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVpciBjYWxsYmFja3MgKCM2OTkpLiBIb3dldmVyIGlmIGEgZ2xvYmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25FcnJvciBpcyBzZXQsIHVzZSB0aGF0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodGhpcy5ldmVudHMuZXJyb3IgJiYgdGhpcy5tYXAuaXNEZWZpbmUpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS5vbkVycm9yICE9PSBkZWZhdWx0T25FcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZU1hcCA9IHRoaXMubWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZU1vZHVsZXMgPSB0aGlzLm1hcC5pc0RlZmluZSA/IFt0aGlzLm1hcC5pZF0gOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZVR5cGUgPSB0aGlzLm1hcC5pc0RlZmluZSA/ICdkZWZpbmUnIDogJ3JlcXVpcmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcigodGhpcy5lcnJvciA9IGVycikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExvZyB0aGUgZXJyb3IgZm9yIGRlYnVnZ2luZy4gSWYgcHJvbWlzZXMgY291bGQgYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCwgdGhpcyB3b3VsZCBiZSBkaWZmZXJlbnQsIGJ1dCBtYWtpbmcgZG8uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3Qgd2FudCB0byBjb21wbGV0ZWx5IGxvc2UgdGhlIGVycm9yLiBXaGlsZSB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgbWVzcyB1cCBwcm9jZXNzaW5nIGFuZCBsZWFkIHRvIHNpbWlsYXIgcmVzdWx0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBidWcgMTQ0MCwgaXQgYXQgbGVhc3Qgc3VyZmFjZXMgdGhlIGVycm9yLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEub25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSnVzdCBhIGxpdGVyYWwgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBmYWN0b3J5OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cG9ydHMgPSBleHBvcnRzOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwLmlzRGVmaW5lICYmICF0aGlzLmlnbm9yZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZFtpZF0gPSBleHBvcnRzOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXEub25SZXNvdXJjZUxvYWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzTG9hZE1hcHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoKHRoaXMuZGVwTWFwcywgZnVuY3Rpb24gKGRlcE1hcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNMb2FkTWFwcy5wdXNoKGRlcE1hcC5ub3JtYWxpemVkTWFwIHx8IGRlcE1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLm9uUmVzb3VyY2VMb2FkKGNvbnRleHQsIHRoaXMubWFwLCByZXNMb2FkTWFwcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQ2xlYW4gdXAKICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5SZWdpc3RyeShpZCk7CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9GaW5pc2hlZCB0aGUgZGVmaW5lIHN0YWdlLiBBbGxvdyBjYWxsaW5nIGNoZWNrIGFnYWluCiAgICAgICAgICAgICAgICAgICAgLy90byBhbGxvdyBkZWZpbmUgbm90aWZpY2F0aW9ucyBiZWxvdyBpbiB0aGUgY2FzZSBvZiBhCiAgICAgICAgICAgICAgICAgICAgLy9jeWNsZS4KICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluaW5nID0gZmFsc2U7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmluZWQgJiYgIXRoaXMuZGVmaW5lRW1pdHRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZUVtaXR0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2RlZmluZWQnLCB0aGlzLmV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZUVtaXRDb21wbGV0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGNhbGxQbHVnaW46IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBtYXAgPSB0aGlzLm1hcCwKICAgICAgICAgICAgICAgICAgICBpZCA9IG1hcC5pZCwKICAgICAgICAgICAgICAgICAgICAvL01hcCBhbHJlYWR5IG5vcm1hbGl6ZWQgdGhlIHByZWZpeC4KICAgICAgICAgICAgICAgICAgICBwbHVnaW5NYXAgPSBtYWtlTW9kdWxlTWFwKG1hcC5wcmVmaXgpOwoKICAgICAgICAgICAgICAgIC8vTWFyayB0aGlzIGFzIGEgZGVwZW5kZW5jeSBmb3IgdGhpcyBwbHVnaW4sIHNvIGl0CiAgICAgICAgICAgICAgICAvL2NhbiBiZSB0cmFjZWQgZm9yIGN5Y2xlcy4KICAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcy5wdXNoKHBsdWdpbk1hcCk7CgogICAgICAgICAgICAgICAgb24ocGx1Z2luTWFwLCAnZGVmaW5lZCcsIGJpbmQodGhpcywgZnVuY3Rpb24gKHBsdWdpbikgewogICAgICAgICAgICAgICAgICAgIHZhciBsb2FkLCBub3JtYWxpemVkTWFwLCBub3JtYWxpemVkTW9kLAogICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVJZCA9IGdldE93bihidW5kbGVzTWFwLCB0aGlzLm1hcC5pZCksCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSB0aGlzLm1hcC5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROYW1lID0gdGhpcy5tYXAucGFyZW50TWFwID8gdGhpcy5tYXAucGFyZW50TWFwLm5hbWUgOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFJlcXVpcmUgPSBjb250ZXh0Lm1ha2VSZXF1aXJlKG1hcC5wYXJlbnRNYXAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1aWxkQ2FsbGJhY2s6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIC8vSWYgY3VycmVudCBtYXAgaXMgbm90IG5vcm1hbGl6ZWQsIHdhaXQgZm9yIHRoYXQKICAgICAgICAgICAgICAgICAgICAvL25vcm1hbGl6ZWQgbmFtZSB0byBsb2FkIGluc3RlYWQgb2YgY29udGludWluZy4KICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXAudW5ub3JtYWxpemVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplIHRoZSBJRCBpZiB0aGUgcGx1Z2luIGFsbG93cyBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpbi5ub3JtYWxpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwbHVnaW4ubm9ybWFsaXplKG5hbWUsIGZ1bmN0aW9uIChuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIHx8ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL3ByZWZpeCBhbmQgbmFtZSBzaG91bGQgYWxyZWFkeSBiZSBub3JtYWxpemVkLCBubyBuZWVkCiAgICAgICAgICAgICAgICAgICAgICAgIC8vZm9yIGFwcGx5aW5nIG1hcCBjb25maWcgYWdhaW4gZWl0aGVyLgogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTWFwID0gbWFrZU1vZHVsZU1hcChtYXAucHJlZml4ICsgJyEnICsgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAucGFyZW50TWFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgb24obm9ybWFsaXplZE1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5ub3JtYWxpemVkTWFwID0gbm9ybWFsaXplZE1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXQoW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlOyB9LCBudWxsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZTogdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE1vZCA9IGdldE93bihyZWdpc3RyeSwgbm9ybWFsaXplZE1hcC5pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkTW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hcmsgdGhpcyBhcyBhIGRlcGVuZGVuY3kgZm9yIHRoaXMgcGx1Z2luLCBzbyBpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jYW4gYmUgdHJhY2VkIGZvciBjeWNsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMucHVzaChub3JtYWxpemVkTWFwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ldmVudHMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTW9kLm9uKCdlcnJvcicsIGJpbmQodGhpcywgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTW9kLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0lmIGEgcGF0aHMgY29uZmlnLCB0aGVuIGp1c3QgbG9hZCB0aGF0IGZpbGUgaW5zdGVhZCB0bwogICAgICAgICAgICAgICAgICAgIC8vcmVzb2x2ZSB0aGUgcGx1Z2luLCBhcyBpdCBpcyBidWlsdCBpbnRvIHRoYXQgcGF0aHMgbGF5ZXIuCiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1bmRsZUlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLnVybCA9IGNvbnRleHQubmFtZVRvVXJsKGJ1bmRsZUlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGxvYWQgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXQoW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlOyB9LCBudWxsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBsb2FkLmVycm9yID0gYmluZCh0aGlzLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycjsKICAgICAgICAgICAgICAgICAgICAgICAgZXJyLnJlcXVpcmVNb2R1bGVzID0gW2lkXTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUmVtb3ZlIHRlbXAgdW5ub3JtYWxpemVkIG1vZHVsZXMgZm9yIHRoaXMgbW9kdWxlLAogICAgICAgICAgICAgICAgICAgICAgICAvL3NpbmNlIHRoZXkgd2lsbCBuZXZlciBiZSByZXNvbHZlZCBvdGhlcndpc2Ugbm93LgogICAgICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChyZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZC5tYXAuaWQuaW5kZXhPZihpZCArICdfdW5ub3JtYWxpemVkJykgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KG1vZC5tYXAuaWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLy9BbGxvdyBwbHVnaW5zIHRvIGxvYWQgb3RoZXIgY29kZSB3aXRob3V0IGhhdmluZyB0byBrbm93IHRoZQogICAgICAgICAgICAgICAgICAgIC8vY29udGV4dCBvciBob3cgdG8gJ2NvbXBsZXRlJyB0aGUgbG9hZC4KICAgICAgICAgICAgICAgICAgICBsb2FkLmZyb21UZXh0ID0gYmluZCh0aGlzLCBmdW5jdGlvbiAodGV4dCwgdGV4dEFsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAvKmpzbGludCBldmlsOiB0cnVlICovCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtb2R1bGVOYW1lID0gbWFwLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVNYXAgPSBtYWtlTW9kdWxlTWFwKG1vZHVsZU5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzSW50ZXJhY3RpdmUgPSB1c2VJbnRlcmFjdGl2ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQXMgb2YgMi4xLjAsIHN1cHBvcnQganVzdCBwYXNzaW5nIHRoZSB0ZXh0LCB0byByZWluZm9yY2UKICAgICAgICAgICAgICAgICAgICAgICAgLy9mcm9tVGV4dCBvbmx5IGJlaW5nIGNhbGxlZCBvbmNlIHBlciByZXNvdXJjZS4gU3RpbGwKICAgICAgICAgICAgICAgICAgICAgICAgLy9zdXBwb3J0IG9sZCBzdHlsZSBvZiBwYXNzaW5nIG1vZHVsZU5hbWUgYnV0IGRpc2NhcmQKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGF0IG1vZHVsZU5hbWUgaW4gZmF2b3Igb2YgdGhlIGludGVybmFsIHJlZi4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRBbHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0QWx0OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL1R1cm4gb2ZmIGludGVyYWN0aXZlIHNjcmlwdCBtYXRjaGluZyBmb3IgSUUgZm9yIGFueSBkZWZpbmUKICAgICAgICAgICAgICAgICAgICAgICAgLy9jYWxscyBpbiB0aGUgdGV4dCwgdGhlbiB0dXJuIGl0IGJhY2sgb24gYXQgdGhlIGVuZC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0ludGVyYWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL1ByaW1lIHRoZSBzeXN0ZW0gYnkgY3JlYXRpbmcgYSBtb2R1bGUgaW5zdGFuY2UgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgIC8vaXQuCiAgICAgICAgICAgICAgICAgICAgICAgIGdldE1vZHVsZShtb2R1bGVNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9UcmFuc2ZlciBhbnkgY29uZmlnIHRvIHRoaXMgb3RoZXIgbW9kdWxlLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUHJvcChjb25maWcuY29uZmlnLCBpZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5jb25maWdbbW9kdWxlTmFtZV0gPSBjb25maWcuY29uZmlnW2lkXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS5leGVjKHRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ2Zyb210ZXh0ZXZhbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tVGV4dCBldmFsIGZvciAnICsgaWQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZmFpbGVkOiAnICsgZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW50ZXJhY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUludGVyYWN0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9NYXJrIHRoaXMgYXMgYSBkZXBlbmRlbmN5IGZvciB0aGUgcGx1Z2luCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzb3VyY2UKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzLnB1c2gobW9kdWxlTWFwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vU3VwcG9ydCBhbm9ueW1vdXMgbW9kdWxlcy4KICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jb21wbGV0ZUxvYWQobW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL0JpbmQgdGhlIHZhbHVlIG9mIHRoYXQgbW9kdWxlIHRvIHRoZSB2YWx1ZSBmb3IgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc291cmNlIElELgogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFJlcXVpcmUoW21vZHVsZU5hbWVdLCBsb2FkKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLy9Vc2UgcGFyZW50TmFtZSBoZXJlIHNpbmNlIHRoZSBwbHVnaW4ncyBuYW1lIGlzIG5vdCByZWxpYWJsZSwKICAgICAgICAgICAgICAgICAgICAvL2NvdWxkIGJlIHNvbWUgd2VpcmQgc3RyaW5nIHdpdGggbm8gcGF0aCB0aGF0IGFjdHVhbGx5IHdhbnRzIHRvCiAgICAgICAgICAgICAgICAgICAgLy9yZWZlcmVuY2UgdGhlIHBhcmVudE5hbWUncyBwYXRoLgogICAgICAgICAgICAgICAgICAgIHBsdWdpbi5sb2FkKG1hcC5uYW1lLCBsb2NhbFJlcXVpcmUsIGxvYWQsIGNvbmZpZyk7CiAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgY29udGV4dC5lbmFibGUocGx1Z2luTWFwLCB0aGlzKTsKICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luTWFwc1twbHVnaW5NYXAuaWRdID0gcGx1Z2luTWFwOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBlbmFibGVkUmVnaXN0cnlbdGhpcy5tYXAuaWRdID0gdGhpczsKICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlZCA9IHRydWU7CgogICAgICAgICAgICAgICAgLy9TZXQgZmxhZyBtZW50aW9uaW5nIHRoYXQgdGhlIG1vZHVsZSBpcyBlbmFibGluZywKICAgICAgICAgICAgICAgIC8vc28gdGhhdCBpbW1lZGlhdGUgY2FsbHMgdG8gdGhlIGRlZmluZWQgY2FsbGJhY2tzCiAgICAgICAgICAgICAgICAvL2ZvciBkZXBlbmRlbmNpZXMgZG8gbm90IHRyaWdnZXIgaW5hZHZlcnRlbnQgbG9hZAogICAgICAgICAgICAgICAgLy93aXRoIHRoZSBkZXBDb3VudCBzdGlsbCBiZWluZyB6ZXJvLgogICAgICAgICAgICAgICAgdGhpcy5lbmFibGluZyA9IHRydWU7CgogICAgICAgICAgICAgICAgLy9FbmFibGUgZWFjaCBkZXBlbmRlbmN5CiAgICAgICAgICAgICAgICBlYWNoKHRoaXMuZGVwTWFwcywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZGVwTWFwLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlkLCBtb2QsIGhhbmRsZXI7CgogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwTWFwID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgICAgICAvL0RlcGVuZGVuY3kgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgZGVwTWFwCiAgICAgICAgICAgICAgICAgICAgICAgIC8vYW5kIHdpcmVkIHVwIHRvIHRoaXMgbW9kdWxlLgogICAgICAgICAgICAgICAgICAgICAgICBkZXBNYXAgPSBtYWtlTW9kdWxlTWFwKGRlcE1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5tYXAuaXNEZWZpbmUgPyB0aGlzLm1hcCA6IHRoaXMubWFwLnBhcmVudE1hcCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuc2tpcE1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwc1tpXSA9IGRlcE1hcDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBnZXRPd24oaGFuZGxlcnMsIGRlcE1hcC5pZCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBFeHBvcnRzW2ldID0gaGFuZGxlcih0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBDb3VudCArPSAxOwoKICAgICAgICAgICAgICAgICAgICAgICAgb24oZGVwTWFwLCAnZGVmaW5lZCcsIGJpbmQodGhpcywgZnVuY3Rpb24gKGRlcEV4cG9ydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVuZGVmZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZURlcChpLCBkZXBFeHBvcnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb24oZGVwTWFwLCAnZXJyb3InLCBiaW5kKHRoaXMsIHRoaXMuZXJyYmFjaykpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXZlbnRzLmVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBkaXJlY3QgZXJyYmFjayBvbiB0aGlzIG1vZHVsZSwgYnV0IHNvbWV0aGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSBpcyBsaXN0ZW5pbmcgZm9yIGVycm9ycywgc28gYmUgc3VyZSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvcGFnYXRlIHRoZSBlcnJvciBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdlcnJvcicsIGJpbmQodGhpcywgZnVuY3Rpb24oZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlkID0gZGVwTWFwLmlkOwogICAgICAgICAgICAgICAgICAgIG1vZCA9IHJlZ2lzdHJ5W2lkXTsKCiAgICAgICAgICAgICAgICAgICAgLy9Ta2lwIHNwZWNpYWwgbW9kdWxlcyBsaWtlICdyZXF1aXJlJywgJ2V4cG9ydHMnLCAnbW9kdWxlJwogICAgICAgICAgICAgICAgICAgIC8vQWxzbywgZG9uJ3QgY2FsbCBlbmFibGUgaWYgaXQgaXMgYWxyZWFkeSBlbmFibGVkLAogICAgICAgICAgICAgICAgICAgIC8vaW1wb3J0YW50IGluIGNpcmN1bGFyIGRlcGVuZGVuY3kgY2FzZXMuCiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcm9wKGhhbmRsZXJzLCBpZCkgJiYgbW9kICYmICFtb2QuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShkZXBNYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICAvL0VuYWJsZSBlYWNoIHBsdWdpbiB0aGF0IGlzIHVzZWQgaW4KICAgICAgICAgICAgICAgIC8vYSBkZXBlbmRlbmN5CiAgICAgICAgICAgICAgICBlYWNoUHJvcCh0aGlzLnBsdWdpbk1hcHMsIGJpbmQodGhpcywgZnVuY3Rpb24gKHBsdWdpbk1hcCkgewogICAgICAgICAgICAgICAgICAgIHZhciBtb2QgPSBnZXRPd24ocmVnaXN0cnksIHBsdWdpbk1hcC5pZCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZCAmJiAhbW9kLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5lbmFibGUocGx1Z2luTWFwLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgdGhpcy5lbmFibGluZyA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIG9uOiBmdW5jdGlvbiAobmFtZSwgY2IpIHsKICAgICAgICAgICAgICAgIHZhciBjYnMgPSB0aGlzLmV2ZW50c1tuYW1lXTsKICAgICAgICAgICAgICAgIGlmICghY2JzKSB7CiAgICAgICAgICAgICAgICAgICAgY2JzID0gdGhpcy5ldmVudHNbbmFtZV0gPSBbXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNicy5wdXNoKGNiKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGVtaXQ6IGZ1bmN0aW9uIChuYW1lLCBldnQpIHsKICAgICAgICAgICAgICAgIGVhY2godGhpcy5ldmVudHNbbmFtZV0sIGZ1bmN0aW9uIChjYikgewogICAgICAgICAgICAgICAgICAgIGNiKGV2dCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmIChuYW1lID09PSAnZXJyb3InKSB7CiAgICAgICAgICAgICAgICAgICAgLy9Ob3cgdGhhdCB0aGUgZXJyb3IgaGFuZGxlciB3YXMgdHJpZ2dlcmVkLCByZW1vdmUKICAgICAgICAgICAgICAgICAgICAvL3RoZSBsaXN0ZW5lcnMsIHNpbmNlIHRoaXMgYnJva2VuIE1vZHVsZSBpbnN0YW5jZQogICAgICAgICAgICAgICAgICAgIC8vY2FuIHN0YXkgYXJvdW5kIGZvciBhIHdoaWxlIGluIHRoZSByZWdpc3RyeS4KICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5ldmVudHNbbmFtZV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBjYWxsR2V0TW9kdWxlKGFyZ3MpIHsKICAgICAgICAgICAgLy9Ta2lwIG1vZHVsZXMgYWxyZWFkeSBkZWZpbmVkLgogICAgICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgYXJnc1swXSkpIHsKICAgICAgICAgICAgICAgIGdldE1vZHVsZShtYWtlTW9kdWxlTWFwKGFyZ3NbMF0sIG51bGwsIHRydWUpKS5pbml0KGFyZ3NbMV0sIGFyZ3NbMl0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihub2RlLCBmdW5jLCBuYW1lLCBpZU5hbWUpIHsKICAgICAgICAgICAgLy9GYXZvciBkZXRhY2hFdmVudCBiZWNhdXNlIG9mIElFOQogICAgICAgICAgICAvL2lzc3VlLCBzZWUgYXR0YWNoRXZlbnQvYWRkRXZlbnRMaXN0ZW5lciBjb21tZW50IGVsc2V3aGVyZQogICAgICAgICAgICAvL2luIHRoaXMgZmlsZS4KICAgICAgICAgICAgaWYgKG5vZGUuZGV0YWNoRXZlbnQgJiYgIWlzT3BlcmEpIHsKICAgICAgICAgICAgICAgIC8vUHJvYmFibHkgSUUuIElmIG5vdCBpdCB3aWxsIHRocm93IGFuIGVycm9yLCB3aGljaCB3aWxsIGJlCiAgICAgICAgICAgICAgICAvL3VzZWZ1bCB0byBrbm93LgogICAgICAgICAgICAgICAgaWYgKGllTmFtZSkgewogICAgICAgICAgICAgICAgICAgIG5vZGUuZGV0YWNoRXZlbnQoaWVOYW1lLCBmdW5jKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jLCBmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEdpdmVuIGFuIGV2ZW50IGZyb20gYSBzY3JpcHQgbm9kZSwgZ2V0IHRoZSByZXF1aXJlanMgaW5mbyBmcm9tIGl0LAogICAgICAgICAqIGFuZCB0aGVuIHJlbW92ZXMgdGhlIGV2ZW50IGxpc3RlbmVycyBvbiB0aGUgbm9kZS4KICAgICAgICAgKiBAcGFyYW0ge0V2ZW50fSBldnQKICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIGdldFNjcmlwdERhdGEoZXZ0KSB7CiAgICAgICAgICAgIC8vVXNpbmcgY3VycmVudFRhcmdldCBpbnN0ZWFkIG9mIHRhcmdldCBmb3IgRmlyZWZveCAyLjAncyBzYWtlLiBOb3QKICAgICAgICAgICAgLy9hbGwgb2xkIGJyb3dzZXJzIHdpbGwgYmUgc3VwcG9ydGVkLCBidXQgdGhpcyBvbmUgd2FzIGVhc3kgZW5vdWdoCiAgICAgICAgICAgIC8vdG8gc3VwcG9ydCBhbmQgc3RpbGwgbWFrZXMgc2Vuc2UuCiAgICAgICAgICAgIHZhciBub2RlID0gZXZ0LmN1cnJlbnRUYXJnZXQgfHwgZXZ0LnNyY0VsZW1lbnQ7CgogICAgICAgICAgICAvL1JlbW92ZSB0aGUgbGlzdGVuZXJzIG9uY2UgaGVyZS4KICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIobm9kZSwgY29udGV4dC5vblNjcmlwdExvYWQsICdsb2FkJywgJ29ucmVhZHlzdGF0ZWNoYW5nZScpOwogICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihub2RlLCBjb250ZXh0Lm9uU2NyaXB0RXJyb3IsICdlcnJvcicpOwoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIG5vZGU6IG5vZGUsCiAgICAgICAgICAgICAgICBpZDogbm9kZSAmJiBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlbW9kdWxlJykKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGludGFrZURlZmluZXMoKSB7CiAgICAgICAgICAgIHZhciBhcmdzOwoKICAgICAgICAgICAgLy9BbnkgZGVmaW5lZCBtb2R1bGVzIGluIHRoZSBnbG9iYWwgcXVldWUsIGludGFrZSB0aGVtIG5vdy4KICAgICAgICAgICAgdGFrZUdsb2JhbFF1ZXVlKCk7CgogICAgICAgICAgICAvL01ha2Ugc3VyZSBhbnkgcmVtYWluaW5nIGRlZlF1ZXVlIGl0ZW1zIGdldCBwcm9wZXJseSBwcm9jZXNzZWQuCiAgICAgICAgICAgIHdoaWxlIChkZWZRdWV1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGFyZ3MgPSBkZWZRdWV1ZS5zaGlmdCgpOwogICAgICAgICAgICAgICAgaWYgKGFyZ3NbMF0gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ21pc21hdGNoJywgJ01pc21hdGNoZWQgYW5vbnltb3VzIGRlZmluZSgpIG1vZHVsZTogJyArCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL2FyZ3MgYXJlIGlkLCBkZXBzLCBmYWN0b3J5LiBTaG91bGQgYmUgbm9ybWFsaXplZCBieSB0aGUKICAgICAgICAgICAgICAgICAgICAvL2RlZmluZSgpIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAgICAgIGNhbGxHZXRNb2R1bGUoYXJncyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcCA9IHt9OwogICAgICAgIH0KCiAgICAgICAgY29udGV4dCA9IHsKICAgICAgICAgICAgY29uZmlnOiBjb25maWcsCiAgICAgICAgICAgIGNvbnRleHROYW1lOiBjb250ZXh0TmFtZSwKICAgICAgICAgICAgcmVnaXN0cnk6IHJlZ2lzdHJ5LAogICAgICAgICAgICBkZWZpbmVkOiBkZWZpbmVkLAogICAgICAgICAgICB1cmxGZXRjaGVkOiB1cmxGZXRjaGVkLAogICAgICAgICAgICBkZWZRdWV1ZTogZGVmUXVldWUsCiAgICAgICAgICAgIGRlZlF1ZXVlTWFwOiB7fSwKICAgICAgICAgICAgTW9kdWxlOiBNb2R1bGUsCiAgICAgICAgICAgIG1ha2VNb2R1bGVNYXA6IG1ha2VNb2R1bGVNYXAsCiAgICAgICAgICAgIG5leHRUaWNrOiByZXEubmV4dFRpY2ssCiAgICAgICAgICAgIG9uRXJyb3I6IG9uRXJyb3IsCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogU2V0IGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnRleHQuCiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgY29uZmlnIG9iamVjdCB0byBpbnRlZ3JhdGUuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBjb25maWd1cmU6IGZ1bmN0aW9uIChjZmcpIHsKICAgICAgICAgICAgICAgIC8vTWFrZSBzdXJlIHRoZSBiYXNlVXJsIGVuZHMgaW4gYSBzbGFzaC4KICAgICAgICAgICAgICAgIGlmIChjZmcuYmFzZVVybCkgewogICAgICAgICAgICAgICAgICAgIGlmIChjZmcuYmFzZVVybC5jaGFyQXQoY2ZnLmJhc2VVcmwubGVuZ3RoIC0gMSkgIT09ICcvJykgewogICAgICAgICAgICAgICAgICAgICAgICBjZmcuYmFzZVVybCArPSAnLyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vU2F2ZSBvZmYgdGhlIHBhdGhzIHNpbmNlIHRoZXkgcmVxdWlyZSBzcGVjaWFsIHByb2Nlc3NpbmcsCiAgICAgICAgICAgICAgICAvL3RoZXkgYXJlIGFkZGl0aXZlLgogICAgICAgICAgICAgICAgdmFyIHNoaW0gPSBjb25maWcuc2hpbSwKICAgICAgICAgICAgICAgICAgICBvYmpzID0gewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoczogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYnVuZGxlczogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBtYXA6IHRydWUKICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGVhY2hQcm9wKGNmZywgZnVuY3Rpb24gKHZhbHVlLCBwcm9wKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG9ianNbcHJvcF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25maWdbcHJvcF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1twcm9wXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1peGluKGNvbmZpZ1twcm9wXSwgdmFsdWUsIHRydWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1twcm9wXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vUmV2ZXJzZSBtYXAgdGhlIGJ1bmRsZXMKICAgICAgICAgICAgICAgIGlmIChjZmcuYnVuZGxlcykgewogICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKGNmZy5idW5kbGVzLCBmdW5jdGlvbiAodmFsdWUsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCh2YWx1ZSwgZnVuY3Rpb24gKHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ICE9PSBwcm9wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVuZGxlc01hcFt2XSA9IHByb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vTWVyZ2Ugc2hpbQogICAgICAgICAgICAgICAgaWYgKGNmZy5zaGltKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLnNoaW0sIGZ1bmN0aW9uICh2YWx1ZSwgaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgdGhlIHN0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUuZXhwb3J0cyB8fCB2YWx1ZS5pbml0KSAmJiAhdmFsdWUuZXhwb3J0c0ZuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5leHBvcnRzRm4gPSBjb250ZXh0Lm1ha2VTaGltRXhwb3J0cyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgc2hpbVtpZF0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBjb25maWcuc2hpbSA9IHNoaW07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9BZGp1c3QgcGFja2FnZXMgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgICAgaWYgKGNmZy5wYWNrYWdlcykgewogICAgICAgICAgICAgICAgICAgIGVhY2goY2ZnLnBhY2thZ2VzLCBmdW5jdGlvbiAocGtnT2JqKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiwgbmFtZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHBrZ09iaiA9IHR5cGVvZiBwa2dPYmogPT09ICdzdHJpbmcnID8ge25hbWU6IHBrZ09ian0gOiBwa2dPYmo7CgogICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGtnT2JqLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gcGtnT2JqLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wYXRoc1tuYW1lXSA9IHBrZ09iai5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TYXZlIHBvaW50ZXIgdG8gbWFpbiBtb2R1bGUgSUQgZm9yIHBrZyBuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAvL1JlbW92ZSBsZWFkaW5nIGRvdCBpbiBtYWluLCBzbyBtYWluIHBhdGhzIGFyZSBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAvL2FuZCByZW1vdmUgYW55IHRyYWlsaW5nIC5qcywgc2luY2UgZGlmZmVyZW50IHBhY2thZ2UKICAgICAgICAgICAgICAgICAgICAgICAgLy9lbnZzIGhhdmUgZGlmZmVyZW50IGNvbnZlbnRpb25zOiBzb21lIHVzZSBhIG1vZHVsZSBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAvL3NvbWUgdXNlIGEgZmlsZSBuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucGtnc1tuYW1lXSA9IHBrZ09iai5uYW1lICsgJy8nICsgKHBrZ09iai5tYWluIHx8ICdtYWluJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGN1cnJEaXJSZWdFeHAsICcnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoanNTdWZmaXhSZWdFeHAsICcnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGFyZSBhbnkgIndhaXRpbmcgdG8gZXhlY3V0ZSIgbW9kdWxlcyBpbiB0aGUgcmVnaXN0cnksCiAgICAgICAgICAgICAgICAvL3VwZGF0ZSB0aGUgbWFwcyBmb3IgdGhlbSwgc2luY2UgdGhlaXIgaW5mbywgbGlrZSBVUkxzIHRvIGxvYWQsCiAgICAgICAgICAgICAgICAvL21heSBoYXZlIGNoYW5nZWQuCiAgICAgICAgICAgICAgICBlYWNoUHJvcChyZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCwgaWQpIHsKICAgICAgICAgICAgICAgICAgICAvL0lmIG1vZHVsZSBhbHJlYWR5IGhhcyBpbml0IGNhbGxlZCwgc2luY2UgaXQgaXMgdG9vCiAgICAgICAgICAgICAgICAgICAgLy9sYXRlIHRvIG1vZGlmeSB0aGVtLCBhbmQgaWdub3JlIHVubm9ybWFsaXplZCBvbmVzCiAgICAgICAgICAgICAgICAgICAgLy9zaW5jZSB0aGV5IGFyZSB0cmFuc2llbnQuCiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2QuaW5pdGVkICYmICFtb2QubWFwLnVubm9ybWFsaXplZCkgewogICAgICAgICAgICAgICAgICAgICAgICBtb2QubWFwID0gbWFrZU1vZHVsZU1hcChpZCwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy9JZiBhIGRlcHMgYXJyYXkgb3IgYSBjb25maWcgY2FsbGJhY2sgaXMgc3BlY2lmaWVkLCB0aGVuIGNhbGwKICAgICAgICAgICAgICAgIC8vcmVxdWlyZSB3aXRoIHRob3NlIGFyZ3MuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVxdWlyZSBpcyBkZWZpbmVkIGFzIGEKICAgICAgICAgICAgICAgIC8vY29uZmlnIG9iamVjdCBiZWZvcmUgcmVxdWlyZS5qcyBpcyBsb2FkZWQuCiAgICAgICAgICAgICAgICBpZiAoY2ZnLmRlcHMgfHwgY2ZnLmNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1aXJlKGNmZy5kZXBzIHx8IFtdLCBjZmcuY2FsbGJhY2spOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbWFrZVNoaW1FeHBvcnRzOiBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZuKCkgewogICAgICAgICAgICAgICAgICAgIHZhciByZXQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdmFsdWUuaW5pdC5hcHBseShnbG9iYWwsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQgfHwgKHZhbHVlLmV4cG9ydHMgJiYgZ2V0R2xvYmFsKHZhbHVlLmV4cG9ydHMpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBmbjsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIG1ha2VSZXF1aXJlOiBmdW5jdGlvbiAocmVsTWFwLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBsb2NhbFJlcXVpcmUoZGVwcywgY2FsbGJhY2ssIGVycmJhY2spIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQsIG1hcCwgcmVxdWlyZU1vZDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZW5hYmxlQnVpbGRDYWxsYmFjayAmJiBjYWxsYmFjayAmJiBpc0Z1bmN0aW9uKGNhbGxiYWNrKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5fX3JlcXVpcmVKc0J1aWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwcyA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0ludmFsaWQgY2FsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IobWFrZUVycm9yKCdyZXF1aXJlYXJncycsICdJbnZhbGlkIHJlcXVpcmUgY2FsbCcpLCBlcnJiYWNrKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiByZXF1aXJlfGV4cG9ydHN8bW9kdWxlIGFyZSByZXF1ZXN0ZWQsIGdldCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy92YWx1ZSBmb3IgdGhlbSBmcm9tIHRoZSBzcGVjaWFsIGhhbmRsZXJzLiBDYXZlYXQ6CiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBvbmx5IHdvcmtzIHdoaWxlIG1vZHVsZSBpcyBiZWluZyBkZWZpbmVkLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsTWFwICYmIGhhc1Byb3AoaGFuZGxlcnMsIGRlcHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlcnNbZGVwc10ocmVnaXN0cnlbcmVsTWFwLmlkXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vU3luY2hyb25vdXMgYWNjZXNzIHRvIG9uZSBtb2R1bGUuIElmIHJlcXVpcmUuZ2V0IGlzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vYXZhaWxhYmxlIChhcyBpbiB0aGUgTm9kZSBhZGFwdGVyKSwgcHJlZmVyIHRoYXQuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXEuZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVxLmdldChjb250ZXh0LCBkZXBzLCByZWxNYXAsIGxvY2FsUmVxdWlyZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplIG1vZHVsZSBuYW1lLCBpZiBpdCBjb250YWlucyAuIG9yIC4uCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCA9IG1ha2VNb2R1bGVNYXAoZGVwcywgcmVsTWFwLCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gbWFwLmlkOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcm9wKGRlZmluZWQsIGlkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IobWFrZUVycm9yKCdub3Rsb2FkZWQnLCAnTW9kdWxlIG5hbWUgIicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIgaGFzIG5vdCBiZWVuIGxvYWRlZCB5ZXQgZm9yIGNvbnRleHQ6ICcgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE5hbWUgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbE1hcCA/ICcnIDogJy4gVXNlIHJlcXVpcmUoW10pJykpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5lZFtpZF07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0dyYWIgZGVmaW5lcyB3YWl0aW5nIGluIHRoZSBnbG9iYWwgcXVldWUuCiAgICAgICAgICAgICAgICAgICAgaW50YWtlRGVmaW5lcygpOwoKICAgICAgICAgICAgICAgICAgICAvL01hcmsgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYXMgbmVlZGluZyB0byBiZSBsb2FkZWQuCiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5uZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vU29tZSBkZWZpbmVzIGNvdWxkIGhhdmUgYmVlbiBhZGRlZCBzaW5jZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXF1aXJlIGNhbGwsIGNvbGxlY3QgdGhlbS4KICAgICAgICAgICAgICAgICAgICAgICAgaW50YWtlRGVmaW5lcygpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZU1vZCA9IGdldE1vZHVsZShtYWtlTW9kdWxlTWFwKG51bGwsIHJlbE1hcCkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TdG9yZSBpZiBtYXAgY29uZmlnIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoaXMgcmVxdWlyZQogICAgICAgICAgICAgICAgICAgICAgICAvL2NhbGwgZm9yIGRlcGVuZGVuY2llcy4KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZU1vZC5za2lwTWFwID0gb3B0aW9ucy5za2lwTWFwOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZU1vZC5pbml0KGRlcHMsIGNhbGxiYWNrLCBlcnJiYWNrLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2FkZWQoKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsUmVxdWlyZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBtaXhpbihsb2NhbFJlcXVpcmUsIHsKICAgICAgICAgICAgICAgICAgICBpc0Jyb3dzZXI6IGlzQnJvd3NlciwKCiAgICAgICAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICAgICAgICogQ29udmVydHMgYSBtb2R1bGUgbmFtZSArIC5leHRlbnNpb24gaW50byBhbiBVUkwgcGF0aC4KICAgICAgICAgICAgICAgICAgICAgKiAqUmVxdWlyZXMqIHRoZSB1c2Ugb2YgYSBtb2R1bGUgbmFtZS4gSXQgZG9lcyBub3Qgc3VwcG9ydCB1c2luZwogICAgICAgICAgICAgICAgICAgICAqIHBsYWluIFVSTHMgbGlrZSBuYW1lVG9VcmwuCiAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgdG9Vcmw6IGZ1bmN0aW9uIChtb2R1bGVOYW1lUGx1c0V4dCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBtb2R1bGVOYW1lUGx1c0V4dC5sYXN0SW5kZXhPZignLicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudCA9IG1vZHVsZU5hbWVQbHVzRXh0LnNwbGl0KCcvJylbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlbGF0aXZlID0gc2VnbWVudCA9PT0gJy4nIHx8IHNlZ21lbnQgPT09ICcuLic7CgogICAgICAgICAgICAgICAgICAgICAgICAvL0hhdmUgYSBmaWxlIGV4dGVuc2lvbiBhbGlhcywgYW5kIGl0IGlzIG5vdCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy9kb3RzIGZyb20gYSByZWxhdGl2ZSBwYXRoLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xICYmICghaXNSZWxhdGl2ZSB8fCBpbmRleCA+IDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHQgPSBtb2R1bGVOYW1lUGx1c0V4dC5zdWJzdHJpbmcoaW5kZXgsIG1vZHVsZU5hbWVQbHVzRXh0Lmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lUGx1c0V4dCA9IG1vZHVsZU5hbWVQbHVzRXh0LnN1YnN0cmluZygwLCBpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Lm5hbWVUb1VybChub3JtYWxpemUobW9kdWxlTmFtZVBsdXNFeHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbE1hcCAmJiByZWxNYXAuaWQsIHRydWUpLCBleHQsICB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAgICBkZWZpbmVkOiBmdW5jdGlvbiAoaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc1Byb3AoZGVmaW5lZCwgbWFrZU1vZHVsZU1hcChpZCwgcmVsTWFwLCBmYWxzZSwgdHJ1ZSkuaWQpOwogICAgICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZDogZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gbWFrZU1vZHVsZU1hcChpZCwgcmVsTWFwLCBmYWxzZSwgdHJ1ZSkuaWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNQcm9wKGRlZmluZWQsIGlkKSB8fCBoYXNQcm9wKHJlZ2lzdHJ5LCBpZCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy9Pbmx5IGFsbG93IHVuZGVmIG9uIHRvcCBsZXZlbCByZXF1aXJlIGNhbGxzCiAgICAgICAgICAgICAgICBpZiAoIXJlbE1hcCkgewogICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZS51bmRlZiA9IGZ1bmN0aW9uIChpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAvL0JpbmQgYW55IHdhaXRpbmcgZGVmaW5lKCkgY2FsbHMgdG8gdGhpcyBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAvL2ZpeCBmb3IgIzQwOAogICAgICAgICAgICAgICAgICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXAgPSBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIHRydWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBpZCk7CgogICAgICAgICAgICAgICAgICAgICAgICBtb2QudW5kZWZlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVNjcmlwdChpZCk7CgogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZGVmaW5lZFtpZF07CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1cmxGZXRjaGVkW21hcC51cmxdOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdW5kZWZFdmVudHNbaWRdOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9DbGVhbiBxdWV1ZWQgZGVmaW5lcyB0b28uIEdvIGJhY2t3YXJkcwogICAgICAgICAgICAgICAgICAgICAgICAvL2luIGFycmF5IHNvIHRoYXQgdGhlIHNwbGljZXMgZG8gbm90CiAgICAgICAgICAgICAgICAgICAgICAgIC8vbWVzcyB1cCB0aGUgaXRlcmF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICBlYWNoUmV2ZXJzZShkZWZRdWV1ZSwgZnVuY3Rpb24oYXJncywgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMF0gPT09IGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmUXVldWUuc3BsaWNlKGksIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGNvbnRleHQuZGVmUXVldWVNYXBbaWRdOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9Ib2xkIG9uIHRvIGxpc3RlbmVycyBpbiBjYXNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9tb2R1bGUgd2lsbCBiZSBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdXNpbmcgYSBkaWZmZXJlbnQgY29uZmlnLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZC5ldmVudHMuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmRXZlbnRzW2lkXSA9IG1vZC5ldmVudHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5SZWdpc3RyeShpZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbFJlcXVpcmU7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQ2FsbGVkIHRvIGVuYWJsZSBhIG1vZHVsZSBpZiBpdCBpcyBzdGlsbCBpbiB0aGUgcmVnaXN0cnkKICAgICAgICAgICAgICogYXdhaXRpbmcgZW5hYmxlbWVudC4gQSBzZWNvbmQgYXJnLCBwYXJlbnQsIHRoZSBwYXJlbnQgbW9kdWxlLAogICAgICAgICAgICAgKiBpcyBwYXNzZWQgaW4gZm9yIGNvbnRleHQsIHdoZW4gdGhpcyBtZXRob2QgaXMgb3ZlcnJpZGRlbiBieQogICAgICAgICAgICAgKiB0aGUgb3B0aW1pemVyLiBOb3Qgc2hvd24gaGVyZSB0byBrZWVwIGNvZGUgY29tcGFjdC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGVuYWJsZTogZnVuY3Rpb24gKGRlcE1hcCkgewogICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgZGVwTWFwLmlkKTsKICAgICAgICAgICAgICAgIGlmIChtb2QpIHsKICAgICAgICAgICAgICAgICAgICBnZXRNb2R1bGUoZGVwTWFwKS5lbmFibGUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBJbnRlcm5hbCBtZXRob2QgdXNlZCBieSBlbnZpcm9ubWVudCBhZGFwdGVycyB0byBjb21wbGV0ZSBhIGxvYWQgZXZlbnQuCiAgICAgICAgICAgICAqIEEgbG9hZCBldmVudCBjb3VsZCBiZSBhIHNjcmlwdCBsb2FkIG9yIGp1c3QgYSBsb2FkIHBhc3MgZnJvbSBhIHN5bmNocm9ub3VzCiAgICAgICAgICAgICAqIGxvYWQgY2FsbC4KICAgICAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IG1vZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBwb3RlbnRpYWxseSBjb21wbGV0ZS4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNvbXBsZXRlTG9hZDogZnVuY3Rpb24gKG1vZHVsZU5hbWUpIHsKICAgICAgICAgICAgICAgIHZhciBmb3VuZCwgYXJncywgbW9kLAogICAgICAgICAgICAgICAgICAgIHNoaW0gPSBnZXRPd24oY29uZmlnLnNoaW0sIG1vZHVsZU5hbWUpIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIHNoRXhwb3J0cyA9IHNoaW0uZXhwb3J0czsKCiAgICAgICAgICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKCiAgICAgICAgICAgICAgICB3aGlsZSAoZGVmUXVldWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgYXJncyA9IGRlZlF1ZXVlLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMF0gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1swXSA9IG1vZHVsZU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vSWYgYWxyZWFkeSBmb3VuZCBhbiBhbm9ueW1vdXMgbW9kdWxlIGFuZCBib3VuZCBpdAogICAgICAgICAgICAgICAgICAgICAgICAvL3RvIHRoaXMgbmFtZSwgdGhlbiB0aGlzIGlzIHNvbWUgb3RoZXIgYW5vbiBtb2R1bGUKICAgICAgICAgICAgICAgICAgICAgICAgLy93YWl0aW5nIGZvciBpdHMgY29tcGxldGVMb2FkIHRvIGZpcmUuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnc1swXSA9PT0gbW9kdWxlTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvL0ZvdW5kIG1hdGNoaW5nIGRlZmluZSBjYWxsIGZvciB0aGlzIHNjcmlwdCEKICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShhcmdzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmUXVldWVNYXAgPSB7fTsKCiAgICAgICAgICAgICAgICAvL0RvIHRoaXMgYWZ0ZXIgdGhlIGN5Y2xlIG9mIGNhbGxHZXRNb2R1bGUgaW4gY2FzZSB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICAvL29mIHRob3NlIGNhbGxzL2luaXQgY2FsbHMgY2hhbmdlcyB0aGUgcmVnaXN0cnkuCiAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIG1vZHVsZU5hbWUpOwoKICAgICAgICAgICAgICAgIGlmICghZm91bmQgJiYgIWhhc1Byb3AoZGVmaW5lZCwgbW9kdWxlTmFtZSkgJiYgbW9kICYmICFtb2QuaW5pdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5lbmZvcmNlRGVmaW5lICYmICghc2hFeHBvcnRzIHx8ICFnZXRHbG9iYWwoc2hFeHBvcnRzKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1BhdGhGYWxsYmFjayhtb2R1bGVOYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IobWFrZUVycm9yKCdub2RlZmluZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdObyBkZWZpbmUgY2FsbCBmb3IgJyArIG1vZHVsZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9BIHNjcmlwdCB0aGF0IGRvZXMgbm90IGNhbGwgZGVmaW5lKCksIHNvIGp1c3Qgc2ltdWxhdGUKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGUgY2FsbCBmb3IgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxHZXRNb2R1bGUoW21vZHVsZU5hbWUsIChzaGltLmRlcHMgfHwgW10pLCBzaGltLmV4cG9ydHNGbl0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjaGVja0xvYWRlZCgpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIENvbnZlcnRzIGEgbW9kdWxlIG5hbWUgdG8gYSBmaWxlIHBhdGguIFN1cHBvcnRzIGNhc2VzIHdoZXJlCiAgICAgICAgICAgICAqIG1vZHVsZU5hbWUgbWF5IGFjdHVhbGx5IGJlIGp1c3QgYW4gVVJMLgogICAgICAgICAgICAgKiBOb3RlIHRoYXQgaXQgKipkb2VzIG5vdCoqIGNhbGwgbm9ybWFsaXplIG9uIHRoZSBtb2R1bGVOYW1lLAogICAgICAgICAgICAgKiBpdCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuIFRoaXMgaXMgYW4KICAgICAgICAgICAgICogaW50ZXJuYWwgQVBJLCBub3QgYSBwdWJsaWMgb25lLiBVc2UgdG9VcmwgZm9yIHRoZSBwdWJsaWMgQVBJLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgbmFtZVRvVXJsOiBmdW5jdGlvbiAobW9kdWxlTmFtZSwgZXh0LCBza2lwRXh0KSB7CiAgICAgICAgICAgICAgICB2YXIgcGF0aHMsIHN5bXMsIGksIHBhcmVudE1vZHVsZSwgdXJsLAogICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGgsIGJ1bmRsZUlkLAogICAgICAgICAgICAgICAgICAgIHBrZ01haW4gPSBnZXRPd24oY29uZmlnLnBrZ3MsIG1vZHVsZU5hbWUpOwoKICAgICAgICAgICAgICAgIGlmIChwa2dNYWluKSB7CiAgICAgICAgICAgICAgICAgICAgbW9kdWxlTmFtZSA9IHBrZ01haW47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYnVuZGxlSWQgPSBnZXRPd24oYnVuZGxlc01hcCwgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKGJ1bmRsZUlkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubmFtZVRvVXJsKGJ1bmRsZUlkLCBleHQsIHNraXBFeHQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vSWYgYSBjb2xvbiBpcyBpbiB0aGUgVVJMLCBpdCBpbmRpY2F0ZXMgYSBwcm90b2NvbCBpcyB1c2VkIGFuZCBpdCBpcyBqdXN0CiAgICAgICAgICAgICAgICAvL2FuIFVSTCB0byBhIGZpbGUsIG9yIGlmIGl0IHN0YXJ0cyB3aXRoIGEgc2xhc2gsIGNvbnRhaW5zIGEgcXVlcnkgYXJnIChpLmUuID8pCiAgICAgICAgICAgICAgICAvL29yIGVuZHMgd2l0aCAuanMsIHRoZW4gYXNzdW1lIHRoZSB1c2VyIG1lYW50IHRvIHVzZSBhbiB1cmwgYW5kIG5vdCBhIG1vZHVsZSBpZC4KICAgICAgICAgICAgICAgIC8vVGhlIHNsYXNoIGlzIGltcG9ydGFudCBmb3IgcHJvdG9jb2wtbGVzcyBVUkxzIGFzIHdlbGwgYXMgZnVsbCBwYXRocy4KICAgICAgICAgICAgICAgIGlmIChyZXEuanNFeHRSZWdFeHAudGVzdChtb2R1bGVOYW1lKSkgewogICAgICAgICAgICAgICAgICAgIC8vSnVzdCBhIHBsYWluIHBhdGgsIG5vdCBtb2R1bGUgbmFtZSBsb29rdXAsIHNvIGp1c3QgcmV0dXJuIGl0LgogICAgICAgICAgICAgICAgICAgIC8vQWRkIGV4dGVuc2lvbiBpZiBpdCBpcyBpbmNsdWRlZC4gVGhpcyBpcyBhIGJpdCB3b25reSwgb25seSBub24tLmpzIHRoaW5ncyBwYXNzCiAgICAgICAgICAgICAgICAgICAgLy9hbiBleHRlbnNpb24sIHRoaXMgbWV0aG9kIHByb2JhYmx5IG5lZWRzIHRvIGJlIHJld29ya2VkLgogICAgICAgICAgICAgICAgICAgIHVybCA9IG1vZHVsZU5hbWUgKyAoZXh0IHx8ICcnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy9BIG1vZHVsZSB0aGF0IG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIHBhdGguCiAgICAgICAgICAgICAgICAgICAgcGF0aHMgPSBjb25maWcucGF0aHM7CgogICAgICAgICAgICAgICAgICAgIHN5bXMgPSBtb2R1bGVOYW1lLnNwbGl0KCcvJyk7CiAgICAgICAgICAgICAgICAgICAgLy9Gb3IgZWFjaCBtb2R1bGUgbmFtZSBzZWdtZW50LCBzZWUgaWYgdGhlcmUgaXMgYSBwYXRoCiAgICAgICAgICAgICAgICAgICAgLy9yZWdpc3RlcmVkIGZvciBpdC4gU3RhcnQgd2l0aCBtb3N0IHNwZWNpZmljIG5hbWUKICAgICAgICAgICAgICAgICAgICAvL2FuZCB3b3JrIHVwIGZyb20gaXQuCiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gc3ltcy5sZW5ndGg7IGkgPiAwOyBpIC09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50TW9kdWxlID0gc3ltcy5zbGljZSgwLCBpKS5qb2luKCcvJyk7CgogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRQYXRoID0gZ2V0T3duKHBhdGhzLCBwYXJlbnRNb2R1bGUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50UGF0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiBhbiBhcnJheSwgaXQgbWVhbnMgdGhlcmUgYXJlIGEgZmV3IGNob2ljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0Nob29zZSB0aGUgb25lIHRoYXQgaXMgZGVzaXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkocGFyZW50UGF0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRQYXRoID0gcGFyZW50UGF0aFswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bXMuc3BsaWNlKDAsIGksIHBhcmVudFBhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vSm9pbiB0aGUgcGF0aCBwYXJ0cyB0b2dldGhlciwgdGhlbiBmaWd1cmUgb3V0IGlmIGJhc2VVcmwgaXMgbmVlZGVkLgogICAgICAgICAgICAgICAgICAgIHVybCA9IHN5bXMuam9pbignLycpOwogICAgICAgICAgICAgICAgICAgIHVybCArPSAoZXh0IHx8ICgvXmRhdGFcOnxcPy8udGVzdCh1cmwpIHx8IHNraXBFeHQgPyAnJyA6ICcuanMnKSk7CiAgICAgICAgICAgICAgICAgICAgdXJsID0gKHVybC5jaGFyQXQoMCkgPT09ICcvJyB8fCB1cmwubWF0Y2goL15bXHdcK1wuXC1dKzovKSA/ICcnIDogY29uZmlnLmJhc2VVcmwpICsgdXJsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBjb25maWcudXJsQXJncyA/IHVybCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnVybEFyZ3MpIDogdXJsOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLy9EZWxlZ2F0ZXMgdG8gcmVxLmxvYWQuIEJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0bwogICAgICAgICAgICAvL2FsbG93IG92ZXJyaWRpbmcgaW4gdGhlIG9wdGltaXplci4KICAgICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGlkLCB1cmwpIHsKICAgICAgICAgICAgICAgIHJlcS5sb2FkKGNvbnRleHQsIGlkLCB1cmwpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEV4ZWN1dGVzIGEgbW9kdWxlIGNhbGxiYWNrIGZ1bmN0aW9uLiBCcm9rZW4gb3V0IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24KICAgICAgICAgICAgICogc29sZWx5IHRvIGFsbG93IHRoZSBidWlsZCBzeXN0ZW0gdG8gc2VxdWVuY2UgdGhlIGZpbGVzIGluIHRoZSBidWlsdAogICAgICAgICAgICAgKiBsYXllciBpbiB0aGUgcmlnaHQgc2VxdWVuY2UuCiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIEBwcml2YXRlCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBleGVjQ2I6IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaywgYXJncywgZXhwb3J0cykgewogICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KGV4cG9ydHMsIGFyZ3MpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIGNhbGxiYWNrIGZvciBzY3JpcHQgbG9hZHMsIHVzZWQgdG8gY2hlY2sgc3RhdHVzIG9mIGxvYWRpbmcuCiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2dCB0aGUgZXZlbnQgZnJvbSB0aGUgYnJvd3NlciBmb3IgdGhlIHNjcmlwdAogICAgICAgICAgICAgKiB0aGF0IHdhcyBsb2FkZWQuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBvblNjcmlwdExvYWQ6IGZ1bmN0aW9uIChldnQpIHsKICAgICAgICAgICAgICAgIC8vVXNpbmcgY3VycmVudFRhcmdldCBpbnN0ZWFkIG9mIHRhcmdldCBmb3IgRmlyZWZveCAyLjAncyBzYWtlLiBOb3QKICAgICAgICAgICAgICAgIC8vYWxsIG9sZCBicm93c2VycyB3aWxsIGJlIHN1cHBvcnRlZCwgYnV0IHRoaXMgb25lIHdhcyBlYXN5IGVub3VnaAogICAgICAgICAgICAgICAgLy90byBzdXBwb3J0IGFuZCBzdGlsbCBtYWtlcyBzZW5zZS4KICAgICAgICAgICAgICAgIGlmIChldnQudHlwZSA9PT0gJ2xvYWQnIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkeVJlZ0V4cC50ZXN0KChldnQuY3VycmVudFRhcmdldCB8fCBldnQuc3JjRWxlbWVudCkucmVhZHlTdGF0ZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgLy9SZXNldCBpbnRlcmFjdGl2ZSBzY3JpcHQgc28gYSBzY3JpcHQgbm9kZSBpcyBub3QgaGVsZCBvbnRvIGZvcgogICAgICAgICAgICAgICAgICAgIC8vdG8gbG9uZy4KICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZVNjcmlwdCA9IG51bGw7CgogICAgICAgICAgICAgICAgICAgIC8vUHVsbCBvdXQgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBhbmQgdGhlIGNvbnRleHQuCiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBnZXRTY3JpcHREYXRhKGV2dCk7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jb21wbGV0ZUxvYWQoZGF0YS5pZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQ2FsbGJhY2sgZm9yIHNjcmlwdCBlcnJvcnMuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBvblNjcmlwdEVycm9yOiBmdW5jdGlvbiAoZXZ0KSB7CiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGdldFNjcmlwdERhdGEoZXZ0KTsKICAgICAgICAgICAgICAgIGlmICghaGFzUGF0aEZhbGxiYWNrKGRhdGEuaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChyZWdpc3RyeSwgZnVuY3Rpb24odmFsdWUsIGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LmluZGV4T2YoJ19AcicpICE9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoKHZhbHVlLmRlcE1hcHMsIGZ1bmN0aW9uKGRlcE1hcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXBNYXAuaWQgPT09IGRhdGEuaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50cy5wdXNoKGtleSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3NjcmlwdGVycm9yJywgJ1NjcmlwdCBlcnJvciBmb3IgIicgKyBkYXRhLmlkICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudHMubGVuZ3RoID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIsIG5lZWRlZCBieTogJyArIHBhcmVudHMuam9pbignLCAnKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJyksIGV2dCwgW2RhdGEuaWRdKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBjb250ZXh0LnJlcXVpcmUgPSBjb250ZXh0Lm1ha2VSZXF1aXJlKCk7CiAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWluIGVudHJ5IHBvaW50LgogICAgICoKICAgICAqIElmIHRoZSBvbmx5IGFyZ3VtZW50IHRvIHJlcXVpcmUgaXMgYSBzdHJpbmcsIHRoZW4gdGhlIG1vZHVsZSB0aGF0CiAgICAgKiBpcyByZXByZXNlbnRlZCBieSB0aGF0IHN0cmluZyBpcyBmZXRjaGVkIGZvciB0aGUgYXBwcm9wcmlhdGUgY29udGV4dC4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4gYXJyYXksIHRoZW4gaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGFuIGFycmF5CiAgICAgKiBvZiBkZXBlbmRlbmN5IHN0cmluZyBuYW1lcyB0byBmZXRjaC4gQW4gb3B0aW9uYWwgZnVuY3Rpb24gY2FsbGJhY2sgY2FuCiAgICAgKiBiZSBzcGVjaWZpZWQgdG8gZXhlY3V0ZSB3aGVuIGFsbCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGF2YWlsYWJsZS4KICAgICAqCiAgICAgKiBNYWtlIGEgbG9jYWwgcmVxIHZhcmlhYmxlIHRvIGhlbHAgQ2FqYSBjb21wbGlhbmNlIChpdCBhc3N1bWVzIHRoaW5ncwogICAgICogb24gYSByZXF1aXJlIHRoYXQgYXJlIG5vdCBzdGFuZGFyZGl6ZWQpLCBhbmQgdG8gZ2l2ZSBhIHNob3J0CiAgICAgKiBuYW1lIGZvciBtaW5pZmljYXRpb24vbG9jYWwgc2NvcGUgdXNlLgogICAgICovCiAgICByZXEgPSByZXF1aXJlanMgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIG9wdGlvbmFsKSB7CgogICAgICAgIC8vRmluZCB0aGUgcmlnaHQgY29udGV4dCwgdXNlIGRlZmF1bHQKICAgICAgICB2YXIgY29udGV4dCwgY29uZmlnLAogICAgICAgICAgICBjb250ZXh0TmFtZSA9IGRlZkNvbnRleHROYW1lOwoKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgaGF2ZSBjb25maWcgb2JqZWN0IGluIHRoZSBjYWxsLgogICAgICAgIGlmICghaXNBcnJheShkZXBzKSAmJiB0eXBlb2YgZGVwcyAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgLy8gZGVwcyBpcyBhIGNvbmZpZyBvYmplY3QKICAgICAgICAgICAgY29uZmlnID0gZGVwczsKICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAvLyBBZGp1c3QgYXJncyBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICBkZXBzID0gY2FsbGJhY2s7CiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGVycmJhY2s7CiAgICAgICAgICAgICAgICBlcnJiYWNrID0gb3B0aW9uYWw7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkZXBzID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dE5hbWUgPSBjb25maWcuY29udGV4dDsKICAgICAgICB9CgogICAgICAgIGNvbnRleHQgPSBnZXRPd24oY29udGV4dHMsIGNvbnRleHROYW1lKTsKICAgICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRzW2NvbnRleHROYW1lXSA9IHJlcS5zLm5ld0NvbnRleHQoY29udGV4dE5hbWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbmZpZykgewogICAgICAgICAgICBjb250ZXh0LmNvbmZpZ3VyZShjb25maWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNvbnRleHQucmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjayk7CiAgICB9OwoKICAgIC8qKgogICAgICogU3VwcG9ydCByZXF1aXJlLmNvbmZpZygpIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvb3BlcmF0ZSB3aXRoIG90aGVyCiAgICAgKiBBTUQgbG9hZGVycyBvbiBnbG9iYWxseSBhZ3JlZWQgbmFtZXMuCiAgICAgKi8KICAgIHJlcS5jb25maWcgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgcmV0dXJuIHJlcShjb25maWcpOwogICAgfTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGUgc29tZXRoaW5nIGFmdGVyIHRoZSBjdXJyZW50IHRpY2sKICAgICAqIG9mIHRoZSBldmVudCBsb29wLiBPdmVycmlkZSBmb3Igb3RoZXIgZW52cwogICAgICogdGhhdCBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4gc2V0VGltZW91dC4KICAgICAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmbiBmdW5jdGlvbiB0byBleGVjdXRlIGxhdGVyLgogICAgICovCiAgICByZXEubmV4dFRpY2sgPSB0eXBlb2Ygc2V0VGltZW91dCAhPT0gJ3VuZGVmaW5lZCcgPyBmdW5jdGlvbiAoZm4pIHsKICAgICAgICBzZXRUaW1lb3V0KGZuLCA0KTsKICAgIH0gOiBmdW5jdGlvbiAoZm4pIHsgZm4oKTsgfTsKCiAgICAvKioKICAgICAqIEV4cG9ydCByZXF1aXJlIGFzIGEgZ2xvYmFsLCBidXQgb25seSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgogICAgICovCiAgICBpZiAoIXJlcXVpcmUpIHsKICAgICAgICByZXF1aXJlID0gcmVxOwogICAgfQoKICAgIHJlcS52ZXJzaW9uID0gdmVyc2lvbjsKCiAgICAvL1VzZWQgdG8gZmlsdGVyIG91dCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYWxyZWFkeSBwYXRocy4KICAgIHJlcS5qc0V4dFJlZ0V4cCA9IC9eXC98OnxcP3xcLmpzJC87CiAgICByZXEuaXNCcm93c2VyID0gaXNCcm93c2VyOwogICAgcyA9IHJlcS5zID0gewogICAgICAgIGNvbnRleHRzOiBjb250ZXh0cywKICAgICAgICBuZXdDb250ZXh0OiBuZXdDb250ZXh0CiAgICB9OwoKICAgIC8vQ3JlYXRlIGRlZmF1bHQgY29udGV4dC4KICAgIHJlcSh7fSk7CgogICAgLy9FeHBvcnRzIHNvbWUgY29udGV4dC1zZW5zaXRpdmUgbWV0aG9kcyBvbiBnbG9iYWwgcmVxdWlyZS4KICAgIGVhY2goWwogICAgICAgICd0b1VybCcsCiAgICAgICAgJ3VuZGVmJywKICAgICAgICAnZGVmaW5lZCcsCiAgICAgICAgJ3NwZWNpZmllZCcKICAgIF0sIGZ1bmN0aW9uIChwcm9wKSB7CiAgICAgICAgLy9SZWZlcmVuY2UgZnJvbSBjb250ZXh0cyBpbnN0ZWFkIG9mIGVhcmx5IGJpbmRpbmcgdG8gZGVmYXVsdCBjb250ZXh0LAogICAgICAgIC8vc28gdGhhdCBkdXJpbmcgYnVpbGRzLCB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IGNvbnRleHQKICAgICAgICAvL3dpdGggaXRzIGNvbmZpZyBnZXRzIHVzZWQuCiAgICAgICAgcmVxW3Byb3BdID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgY3R4ID0gY29udGV4dHNbZGVmQ29udGV4dE5hbWVdOwogICAgICAgICAgICByZXR1cm4gY3R4LnJlcXVpcmVbcHJvcF0uYXBwbHkoY3R4LCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9KTsKCiAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgaGVhZCA9IHMuaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07CiAgICAgICAgLy9JZiBCQVNFIHRhZyBpcyBpbiBwbGF5LCB1c2luZyBhcHBlbmRDaGlsZCBpcyBhIHByb2JsZW0gZm9yIElFNi4KICAgICAgICAvL1doZW4gdGhhdCBicm93c2VyIGRpZXMsIHRoaXMgY2FuIGJlIHJlbW92ZWQuIERldGFpbHMgaW4gdGhpcyBqUXVlcnkgYnVnOgogICAgICAgIC8vaHR0cDovL2Rldi5qcXVlcnkuY29tL3RpY2tldC8yNzA5CiAgICAgICAgYmFzZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmFzZScpWzBdOwogICAgICAgIGlmIChiYXNlRWxlbWVudCkgewogICAgICAgICAgICBoZWFkID0gcy5oZWFkID0gYmFzZUVsZW1lbnQucGFyZW50Tm9kZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBbnkgZXJyb3JzIHRoYXQgcmVxdWlyZSBleHBsaWNpdGx5IGdlbmVyYXRlcyB3aWxsIGJlIHBhc3NlZCB0byB0aGlzCiAgICAgKiBmdW5jdGlvbi4gSW50ZXJjZXB0L292ZXJyaWRlIGl0IGlmIHlvdSB3YW50IGN1c3RvbSBlcnJvciBoYW5kbGluZy4KICAgICAqIEBwYXJhbSB7RXJyb3J9IGVyciB0aGUgZXJyb3Igb2JqZWN0LgogICAgICovCiAgICByZXEub25FcnJvciA9IGRlZmF1bHRPbkVycm9yOwoKICAgIC8qKgogICAgICogQ3JlYXRlcyB0aGUgbm9kZSBmb3IgdGhlIGxvYWQgY29tbWFuZC4gT25seSB1c2VkIGluIGJyb3dzZXIgZW52cy4KICAgICAqLwogICAgcmVxLmNyZWF0ZU5vZGUgPSBmdW5jdGlvbiAoY29uZmlnLCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgbm9kZSA9IGNvbmZpZy54aHRtbCA/CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbDpzY3JpcHQnKSA6CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBub2RlLnR5cGUgPSBjb25maWcuc2NyaXB0VHlwZSB8fCAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBub2RlLmNoYXJzZXQgPSAndXRmLTgnOwogICAgICAgIG5vZGUuYXN5bmMgPSB0cnVlOwogICAgICAgIHJldHVybiBub2RlOwogICAgfTsKCiAgICAvKioKICAgICAqIERvZXMgdGhlIHJlcXVlc3QgdG8gbG9hZCBhIG1vZHVsZSBmb3IgdGhlIGJyb3dzZXIgY2FzZS4KICAgICAqIE1ha2UgdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGFsbG93IG90aGVyIGVudmlyb25tZW50cwogICAgICogdG8gb3ZlcnJpZGUgaXQuCiAgICAgKgogICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHQgdGhlIHJlcXVpcmUgY29udGV4dCB0byBmaW5kIHN0YXRlLgogICAgICogQHBhcmFtIHtTdHJpbmd9IG1vZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB1cmwgdGhlIFVSTCB0byB0aGUgbW9kdWxlLgogICAgICovCiAgICByZXEubG9hZCA9IGZ1bmN0aW9uIChjb250ZXh0LCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgY29uZmlnID0gKGNvbnRleHQgJiYgY29udGV4dC5jb25maWcpIHx8IHt9LAogICAgICAgICAgICBub2RlOwogICAgICAgIGlmIChpc0Jyb3dzZXIpIHsKICAgICAgICAgICAgLy9JbiB0aGUgYnJvd3NlciBzbyB1c2UgYSBzY3JpcHQgdGFnCiAgICAgICAgICAgIG5vZGUgPSByZXEuY3JlYXRlTm9kZShjb25maWcsIG1vZHVsZU5hbWUsIHVybCk7CiAgICAgICAgICAgIGlmIChjb25maWcub25Ob2RlQ3JlYXRlZCkgewogICAgICAgICAgICAgICAgY29uZmlnLm9uTm9kZUNyZWF0ZWQobm9kZSwgY29uZmlnLCBtb2R1bGVOYW1lLCB1cmwpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcsIGNvbnRleHQuY29udGV4dE5hbWUpOwogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlbW9kdWxlJywgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAvL1NldCB1cCBsb2FkIGxpc3RlbmVyLiBUZXN0IGF0dGFjaEV2ZW50IGZpcnN0IGJlY2F1c2UgSUU5IGhhcwogICAgICAgICAgICAvL2Egc3VidGxlIGlzc3VlIGluIGl0cyBhZGRFdmVudExpc3RlbmVyIGFuZCBzY3JpcHQgb25sb2FkIGZpcmluZ3MKICAgICAgICAgICAgLy90aGF0IGRvIG5vdCBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgYWxsIG90aGVyIGJyb3dzZXJzIHdpdGgKICAgICAgICAgICAgLy9hZGRFdmVudExpc3RlbmVyIHN1cHBvcnQsIHdoaWNoIGZpcmUgdGhlIG9ubG9hZCBldmVudCBmb3IgYQogICAgICAgICAgICAvL3NjcmlwdCByaWdodCBhZnRlciB0aGUgc2NyaXB0IGV4ZWN1dGlvbi4gU2VlOgogICAgICAgICAgICAvL2h0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvNjQ4MDU3L3NjcmlwdC1vbmxvYWQtZXZlbnQtaXMtbm90LWZpcmVkLWltbWVkaWF0ZWx5LWFmdGVyLXNjcmlwdC1leGVjdXRpb24KICAgICAgICAgICAgLy9VTkZPUlRVTkFURUxZIE9wZXJhIGltcGxlbWVudHMgYXR0YWNoRXZlbnQgYnV0IGRvZXMgbm90IGZvbGxvdyB0aGUgc2NyaXB0CiAgICAgICAgICAgIC8vc2NyaXB0IGV4ZWN1dGlvbiBtb2RlLgogICAgICAgICAgICBpZiAobm9kZS5hdHRhY2hFdmVudCAmJgogICAgICAgICAgICAgICAgICAgIC8vQ2hlY2sgaWYgbm9kZS5hdHRhY2hFdmVudCBpcyBhcnRpZmljaWFsbHkgYWRkZWQgYnkgY3VzdG9tIHNjcmlwdCBvcgogICAgICAgICAgICAgICAgICAgIC8vbmF0aXZlbHkgc3VwcG9ydGVkIGJ5IGJyb3dzZXIKICAgICAgICAgICAgICAgICAgICAvL3JlYWQgaHR0cHM6Ly9naXRodWIuY29tL2pyYnVya2UvcmVxdWlyZWpzL2lzc3Vlcy8xODcKICAgICAgICAgICAgICAgICAgICAvL2lmIHdlIGNhbiBOT1QgZmluZCBbbmF0aXZlIGNvZGVdIHRoZW4gaXQgbXVzdCBOT1QgbmF0aXZlbHkgc3VwcG9ydGVkLgogICAgICAgICAgICAgICAgICAgIC8vaW4gSUU4LCBub2RlLmF0dGFjaEV2ZW50IGRvZXMgbm90IGhhdmUgdG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgIC8vTm90ZSB0aGUgdGVzdCBmb3IgIltuYXRpdmUgY29kZSIgd2l0aCBubyBjbG9zaW5nIGJyYWNlLCBzZWU6CiAgICAgICAgICAgICAgICAgICAgLy9odHRwczovL2dpdGh1Yi5jb20vanJidXJrZS9yZXF1aXJlanMvaXNzdWVzLzI3MwogICAgICAgICAgICAgICAgICAgICEobm9kZS5hdHRhY2hFdmVudC50b1N0cmluZyAmJiBub2RlLmF0dGFjaEV2ZW50LnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlJykgPCAwKSAmJgogICAgICAgICAgICAgICAgICAgICFpc09wZXJhKSB7CiAgICAgICAgICAgICAgICAvL1Byb2JhYmx5IElFLiBJRSAoYXQgbGVhc3QgNi04KSBkbyBub3QgZmlyZQogICAgICAgICAgICAgICAgLy9zY3JpcHQgb25sb2FkIHJpZ2h0IGFmdGVyIGV4ZWN1dGluZyB0aGUgc2NyaXB0LCBzbwogICAgICAgICAgICAgICAgLy93ZSBjYW5ub3QgdGllIHRoZSBhbm9ueW1vdXMgZGVmaW5lIGNhbGwgdG8gYSBuYW1lLgogICAgICAgICAgICAgICAgLy9Ib3dldmVyLCBJRSByZXBvcnRzIHRoZSBzY3JpcHQgYXMgYmVpbmcgaW4gJ2ludGVyYWN0aXZlJwogICAgICAgICAgICAgICAgLy9yZWFkeVN0YXRlIGF0IHRoZSB0aW1lIG9mIHRoZSBkZWZpbmUgY2FsbC4KICAgICAgICAgICAgICAgIHVzZUludGVyYWN0aXZlID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICBub2RlLmF0dGFjaEV2ZW50KCdvbnJlYWR5c3RhdGVjaGFuZ2UnLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCk7CiAgICAgICAgICAgICAgICAvL0l0IHdvdWxkIGJlIGdyZWF0IHRvIGFkZCBhbiBlcnJvciBoYW5kbGVyIGhlcmUgdG8gY2F0Y2gKICAgICAgICAgICAgICAgIC8vNDA0cyBpbiBJRTkrLiBIb3dldmVyLCBvbnJlYWR5c3RhdGVjaGFuZ2Ugd2lsbCBmaXJlIGJlZm9yZQogICAgICAgICAgICAgICAgLy90aGUgZXJyb3IgaGFuZGxlciwgc28gdGhhdCBkb2VzIG5vdCBoZWxwLiBJZiBhZGRFdmVudExpc3RlbmVyCiAgICAgICAgICAgICAgICAvL2lzIHVzZWQsIHRoZW4gSUUgd2lsbCBmaXJlIGVycm9yIGJlZm9yZSBsb2FkLCBidXQgd2UgY2Fubm90CiAgICAgICAgICAgICAgICAvL3VzZSB0aGF0IHBhdGh3YXkgZ2l2ZW4gdGhlIGNvbm5lY3QubWljcm9zb2Z0LmNvbSBpc3N1ZQogICAgICAgICAgICAgICAgLy9tZW50aW9uZWQgYWJvdmUgYWJvdXQgbm90IGRvaW5nIHRoZSAnc2NyaXB0IGV4ZWN1dGUsCiAgICAgICAgICAgICAgICAvL3RoZW4gZmlyZSB0aGUgc2NyaXB0IGxvYWQgZXZlbnQgbGlzdGVuZXIgYmVmb3JlIGV4ZWN1dGUKICAgICAgICAgICAgICAgIC8vbmV4dCBzY3JpcHQnIHRoYXQgb3RoZXIgYnJvd3NlcnMgZG8uCiAgICAgICAgICAgICAgICAvL0Jlc3QgaG9wZTogSUUxMCBmaXhlcyB0aGUgaXNzdWVzLAogICAgICAgICAgICAgICAgLy9hbmQgdGhlbiBkZXN0cm95cyBhbGwgaW5zdGFsbHMgb2YgSUUgNi05LgogICAgICAgICAgICAgICAgLy9ub2RlLmF0dGFjaEV2ZW50KCdvbmVycm9yJywgY29udGV4dC5vblNjcmlwdEVycm9yKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGNvbnRleHQub25TY3JpcHRMb2FkLCBmYWxzZSk7CiAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgY29udGV4dC5vblNjcmlwdEVycm9yLCBmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbm9kZS5zcmMgPSB1cmw7CgogICAgICAgICAgICAvL0ZvciBzb21lIGNhY2hlIGNhc2VzIGluIElFIDYtOCwgdGhlIHNjcmlwdCBleGVjdXRlcyBiZWZvcmUgdGhlIGVuZAogICAgICAgICAgICAvL29mIHRoZSBhcHBlbmRDaGlsZCBleGVjdXRpb24sIHNvIHRvIHRpZSBhbiBhbm9ueW1vdXMgZGVmaW5lCiAgICAgICAgICAgIC8vY2FsbCB0byB0aGUgbW9kdWxlIG5hbWUgKHdoaWNoIGlzIHN0b3JlZCBvbiB0aGUgbm9kZSksIGhvbGQgb24KICAgICAgICAgICAgLy90byBhIHJlZmVyZW5jZSB0byB0aGlzIG5vZGUsIGJ1dCBjbGVhciBhZnRlciB0aGUgRE9NIGluc2VydGlvbi4KICAgICAgICAgICAgY3VycmVudGx5QWRkaW5nU2NyaXB0ID0gbm9kZTsKICAgICAgICAgICAgaWYgKGJhc2VFbGVtZW50KSB7CiAgICAgICAgICAgICAgICBoZWFkLmluc2VydEJlZm9yZShub2RlLCBiYXNlRWxlbWVudCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN1cnJlbnRseUFkZGluZ1NjcmlwdCA9IG51bGw7CgogICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICB9IGVsc2UgaWYgKGlzV2ViV29ya2VyKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAvL0luIGEgd2ViIHdvcmtlciwgdXNlIGltcG9ydFNjcmlwdHMuIFRoaXMgaXMgbm90IGEgdmVyeQogICAgICAgICAgICAgICAgLy9lZmZpY2llbnQgdXNlIG9mIGltcG9ydFNjcmlwdHMsIGltcG9ydFNjcmlwdHMgd2lsbCBibG9jayB1bnRpbAogICAgICAgICAgICAgICAgLy9pdHMgc2NyaXB0IGlzIGRvd25sb2FkZWQgYW5kIGV2YWx1YXRlZC4gSG93ZXZlciwgaWYgd2ViIHdvcmtlcnMKICAgICAgICAgICAgICAgIC8vYXJlIGluIHBsYXksIHRoZSBleHBlY3RhdGlvbiBpcyB0aGF0IGEgYnVpbGQgaGFzIGJlZW4gZG9uZSBzbwogICAgICAgICAgICAgICAgLy90aGF0IG9ubHkgb25lIHNjcmlwdCBuZWVkcyB0byBiZSBsb2FkZWQgYW55d2F5LiBUaGlzIG1heSBuZWVkCiAgICAgICAgICAgICAgICAvL3RvIGJlIHJlZXZhbHVhdGVkIGlmIG90aGVyIHVzZSBjYXNlcyBiZWNvbWUgY29tbW9uLgogICAgICAgICAgICAgICAgaW1wb3J0U2NyaXB0cyh1cmwpOwoKICAgICAgICAgICAgICAgIC8vQWNjb3VudCBmb3IgYW5vbnltb3VzIG1vZHVsZXMKICAgICAgICAgICAgICAgIGNvbnRleHQuY29tcGxldGVMb2FkKG1vZHVsZU5hbWUpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IobWFrZUVycm9yKCdpbXBvcnRzY3JpcHRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0U2NyaXB0cyBmYWlsZWQgZm9yICcgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lICsgJyBhdCAnICsgdXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZHVsZU5hbWVdKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIGZ1bmN0aW9uIGdldEludGVyYWN0aXZlU2NyaXB0KCkgewogICAgICAgIGlmIChpbnRlcmFjdGl2ZVNjcmlwdCAmJiBpbnRlcmFjdGl2ZVNjcmlwdC5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnKSB7CiAgICAgICAgICAgIHJldHVybiBpbnRlcmFjdGl2ZVNjcmlwdDsKICAgICAgICB9CgogICAgICAgIGVhY2hSZXZlcnNlKHNjcmlwdHMoKSwgZnVuY3Rpb24gKHNjcmlwdCkgewogICAgICAgICAgICBpZiAoc2NyaXB0LnJlYWR5U3RhdGUgPT09ICdpbnRlcmFjdGl2ZScpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoaW50ZXJhY3RpdmVTY3JpcHQgPSBzY3JpcHQpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGludGVyYWN0aXZlU2NyaXB0OwogICAgfQoKICAgIC8vTG9vayBmb3IgYSBkYXRhLW1haW4gc2NyaXB0IGF0dHJpYnV0ZSwgd2hpY2ggY291bGQgYWxzbyBhZGp1c3QgdGhlIGJhc2VVcmwuCiAgICBpZiAoaXNCcm93c2VyICYmICFjZmcuc2tpcERhdGFNYWluKSB7CiAgICAgICAgLy9GaWd1cmUgb3V0IGJhc2VVcmwuIEdldCBpdCBmcm9tIHRoZSBzY3JpcHQgdGFnIHdpdGggcmVxdWlyZS5qcyBpbiBpdC4KICAgICAgICBlYWNoUmV2ZXJzZShzY3JpcHRzKCksIGZ1bmN0aW9uIChzY3JpcHQpIHsKICAgICAgICAgICAgLy9TZXQgdGhlICdoZWFkJyB3aGVyZSB3ZSBjYW4gYXBwZW5kIGNoaWxkcmVuIGJ5CiAgICAgICAgICAgIC8vdXNpbmcgdGhlIHNjcmlwdCdzIHBhcmVudC4KICAgICAgICAgICAgaWYgKCFoZWFkKSB7CiAgICAgICAgICAgICAgICBoZWFkID0gc2NyaXB0LnBhcmVudE5vZGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vTG9vayBmb3IgYSBkYXRhLW1haW4gYXR0cmlidXRlIHRvIHNldCBtYWluIHNjcmlwdCBmb3IgdGhlIHBhZ2UKICAgICAgICAgICAgLy90byBsb2FkLiBJZiBpdCBpcyB0aGVyZSwgdGhlIHBhdGggdG8gZGF0YSBtYWluIGJlY29tZXMgdGhlCiAgICAgICAgICAgIC8vYmFzZVVybCwgaWYgaXQgaXMgbm90IGFscmVhZHkgc2V0LgogICAgICAgICAgICBkYXRhTWFpbiA9IHNjcmlwdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWFpbicpOwogICAgICAgICAgICBpZiAoZGF0YU1haW4pIHsKICAgICAgICAgICAgICAgIC8vUHJlc2VydmUgZGF0YU1haW4gaW4gY2FzZSBpdCBpcyBhIHBhdGggKGkuZS4gY29udGFpbnMgJz8nKQogICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IGRhdGFNYWluOwoKICAgICAgICAgICAgICAgIC8vU2V0IGZpbmFsIGJhc2VVcmwgaWYgdGhlcmUgaXMgbm90IGFscmVhZHkgYW4gZXhwbGljaXQgb25lLgogICAgICAgICAgICAgICAgaWYgKCFjZmcuYmFzZVVybCkgewogICAgICAgICAgICAgICAgICAgIC8vUHVsbCBvZmYgdGhlIGRpcmVjdG9yeSBvZiBkYXRhLW1haW4gZm9yIHVzZSBhcyB0aGUKICAgICAgICAgICAgICAgICAgICAvL2Jhc2VVcmwuCiAgICAgICAgICAgICAgICAgICAgc3JjID0gbWFpblNjcmlwdC5zcGxpdCgnLycpOwogICAgICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBzcmMucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgc3ViUGF0aCA9IHNyYy5sZW5ndGggPyBzcmMuam9pbignLycpICArICcvJyA6ICcuLyc7CgogICAgICAgICAgICAgICAgICAgIGNmZy5iYXNlVXJsID0gc3ViUGF0aDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL1N0cmlwIG9mZiBhbnkgdHJhaWxpbmcgLmpzIHNpbmNlIG1haW5TY3JpcHQgaXMgbm93CiAgICAgICAgICAgICAgICAvL2xpa2UgYSBtb2R1bGUgbmFtZS4KICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBtYWluU2NyaXB0LnJlcGxhY2UoanNTdWZmaXhSZWdFeHAsICcnKTsKCiAgICAgICAgICAgICAgICAvL0lmIG1haW5TY3JpcHQgaXMgc3RpbGwgYSBwYXRoLCBmYWxsIGJhY2sgdG8gZGF0YU1haW4KICAgICAgICAgICAgICAgIGlmIChyZXEuanNFeHRSZWdFeHAudGVzdChtYWluU2NyaXB0KSkgewogICAgICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBkYXRhTWFpbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL1B1dCB0aGUgZGF0YS1tYWluIHNjcmlwdCBpbiB0aGUgZmlsZXMgdG8gbG9hZC4KICAgICAgICAgICAgICAgIGNmZy5kZXBzID0gY2ZnLmRlcHMgPyBjZmcuZGVwcy5jb25jYXQobWFpblNjcmlwdCkgOiBbbWFpblNjcmlwdF07CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgZGVmaW5pdGlvbnMgb2YgbW9kdWxlcy4gRGlmZmVycyBmcm9tCiAgICAgKiByZXF1aXJlKCkgaW4gdGhhdCBhIHN0cmluZyBmb3IgdGhlIG1vZHVsZSBzaG91bGQgYmUgdGhlIGZpcnN0IGFyZ3VtZW50LAogICAgICogYW5kIHRoZSBmdW5jdGlvbiB0byBleGVjdXRlIGFmdGVyIGRlcGVuZGVuY2llcyBhcmUgbG9hZGVkIHNob3VsZAogICAgICogcmV0dXJuIGEgdmFsdWUgdG8gZGVmaW5lIHRoZSBtb2R1bGUgY29ycmVzcG9uZGluZyB0byB0aGUgZmlyc3QgYXJndW1lbnQncwogICAgICogbmFtZS4KICAgICAqLwogICAgZGVmaW5lID0gZnVuY3Rpb24gKG5hbWUsIGRlcHMsIGNhbGxiYWNrKSB7CiAgICAgICAgdmFyIG5vZGUsIGNvbnRleHQ7CgogICAgICAgIC8vQWxsb3cgZm9yIGFub255bW91cyBtb2R1bGVzCiAgICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykgewogICAgICAgICAgICAvL0FkanVzdCBhcmdzIGFwcHJvcHJpYXRlbHkKICAgICAgICAgICAgY2FsbGJhY2sgPSBkZXBzOwogICAgICAgICAgICBkZXBzID0gbmFtZTsKICAgICAgICAgICAgbmFtZSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAvL1RoaXMgbW9kdWxlIG1heSBub3QgaGF2ZSBkZXBlbmRlbmNpZXMKICAgICAgICBpZiAoIWlzQXJyYXkoZGVwcykpIHsKICAgICAgICAgICAgY2FsbGJhY2sgPSBkZXBzOwogICAgICAgICAgICBkZXBzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vSWYgbm8gbmFtZSwgYW5kIGNhbGxiYWNrIGlzIGEgZnVuY3Rpb24sIHRoZW4gZmlndXJlIG91dCBpZiBpdCBhCiAgICAgICAgLy9Db21tb25KUyB0aGluZyB3aXRoIGRlcGVuZGVuY2llcy4KICAgICAgICBpZiAoIWRlcHMgJiYgaXNGdW5jdGlvbihjYWxsYmFjaykpIHsKICAgICAgICAgICAgZGVwcyA9IFtdOwogICAgICAgICAgICAvL1JlbW92ZSBjb21tZW50cyBmcm9tIHRoZSBjYWxsYmFjayBzdHJpbmcsCiAgICAgICAgICAgIC8vbG9vayBmb3IgcmVxdWlyZSBjYWxscywgYW5kIHB1bGwgdGhlbSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMsCiAgICAgICAgICAgIC8vYnV0IG9ubHkgaWYgdGhlcmUgYXJlIGZ1bmN0aW9uIGFyZ3MuCiAgICAgICAgICAgIGlmIChjYWxsYmFjay5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgLnRvU3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShjb21tZW50UmVnRXhwLCAnJykKICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShjanNSZXF1aXJlUmVnRXhwLCBmdW5jdGlvbiAobWF0Y2gsIGRlcCkgewogICAgICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL01heSBiZSBhIENvbW1vbkpTIHRoaW5nIGV2ZW4gd2l0aG91dCByZXF1aXJlIGNhbGxzLCBidXQgc3RpbGwKICAgICAgICAgICAgICAgIC8vY291bGQgdXNlIGV4cG9ydHMsIGFuZCBtb2R1bGUuIEF2b2lkIGRvaW5nIGV4cG9ydHMgYW5kIG1vZHVsZQogICAgICAgICAgICAgICAgLy93b3JrIHRob3VnaCBpZiBpdCBqdXN0IG5lZWRzIHJlcXVpcmUuCiAgICAgICAgICAgICAgICAvL1JFUVVJUkVTIHRoZSBmdW5jdGlvbiB0byBleHBlY3QgdGhlIENvbW1vbkpTIHZhcmlhYmxlcyBpbiB0aGUKICAgICAgICAgICAgICAgIC8vb3JkZXIgbGlzdGVkIGJlbG93LgogICAgICAgICAgICAgICAgZGVwcyA9IChjYWxsYmFjay5sZW5ndGggPT09IDEgPyBbJ3JlcXVpcmUnXSA6IFsncmVxdWlyZScsICdleHBvcnRzJywgJ21vZHVsZSddKS5jb25jYXQoZGVwcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vSWYgaW4gSUUgNi04IGFuZCBoaXQgYW4gYW5vbnltb3VzIGRlZmluZSgpIGNhbGwsIGRvIHRoZSBpbnRlcmFjdGl2ZQogICAgICAgIC8vd29yay4KICAgICAgICBpZiAodXNlSW50ZXJhY3RpdmUpIHsKICAgICAgICAgICAgbm9kZSA9IGN1cnJlbnRseUFkZGluZ1NjcmlwdCB8fCBnZXRJbnRlcmFjdGl2ZVNjcmlwdCgpOwogICAgICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0c1tub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy9BbHdheXMgc2F2ZSBvZmYgZXZhbHVhdGluZyB0aGUgZGVmIGNhbGwgdW50aWwgdGhlIHNjcmlwdCBvbmxvYWQgaGFuZGxlci4KICAgICAgICAvL1RoaXMgYWxsb3dzIG11bHRpcGxlIG1vZHVsZXMgdG8gYmUgaW4gYSBmaWxlIHdpdGhvdXQgcHJlbWF0dXJlbHkKICAgICAgICAvL3RyYWNpbmcgZGVwZW5kZW5jaWVzLCBhbmQgYWxsb3dzIGZvciBhbm9ueW1vdXMgbW9kdWxlIHN1cHBvcnQsCiAgICAgICAgLy93aGVyZSB0aGUgbW9kdWxlIG5hbWUgaXMgbm90IGtub3duIHVudGlsIHRoZSBzY3JpcHQgb25sb2FkIGV2ZW50CiAgICAgICAgLy9vY2N1cnMuIElmIG5vIGNvbnRleHQsIHVzZSB0aGUgZ2xvYmFsIHF1ZXVlLCBhbmQgZ2V0IGl0IHByb2Nlc3NlZAogICAgICAgIC8vaW4gdGhlIG9uc2NyaXB0IGxvYWQgY2FsbGJhY2suCiAgICAgICAgaWYgKGNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZS5wdXNoKFtuYW1lLCBkZXBzLCBjYWxsYmFja10pOwogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlTWFwW25hbWVdID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBnbG9iYWxEZWZRdWV1ZS5wdXNoKFtuYW1lLCBkZXBzLCBjYWxsYmFja10pOwogICAgICAgIH0KICAgIH07CgogICAgZGVmaW5lLmFtZCA9IHsKICAgICAgICBqUXVlcnk6IHRydWUKICAgIH07CgogICAgLyoqCiAgICAgKiBFeGVjdXRlcyB0aGUgdGV4dC4gTm9ybWFsbHkganVzdCB1c2VzIGV2YWwsIGJ1dCBjYW4gYmUgbW9kaWZpZWQKICAgICAqIHRvIHVzZSBhIGJldHRlciwgZW52aXJvbm1lbnQtc3BlY2lmaWMgY2FsbC4gT25seSB1c2VkIGZvciB0cmFuc3BpbGluZwogICAgICogbG9hZGVyIHBsdWdpbnMsIG5vdCBmb3IgcGxhaW4gSlMgbW9kdWxlcy4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0ZXh0IHRoZSB0ZXh0IHRvIGV4ZWN1dGUvZXZhbHVhdGUuCiAgICAgKi8KICAgIHJlcS5leGVjID0gZnVuY3Rpb24gKHRleHQpIHsKICAgICAgICAvKmpzbGludCBldmlsOiB0cnVlICovCiAgICAgICAgcmV0dXJuIGV2YWwodGV4dCk7CiAgICB9OwoKICAgIC8vU2V0IHVwIHdpdGggY29uZmlnIGluZm8uCiAgICByZXEoY2ZnKTsKfSh0aGlzKSk7Cg==","headers":[["content-type","application/javascript"]],"ok":true,"status":200,"status_text":""}}},"id":"8YCVGqZkJJxT","outputId":"c8f989e0-7818-43c4-a6bb-8b591ecfebfb"},"outputs":[{"data":{"text/html":["\n"," \n"," "],"text/plain":[""]},"metadata":{"tags":[]},"output_type":"display_data"},{"data":{"text/html":[" \n"," "]},"metadata":{"tags":[]},"output_type":"display_data"},{"data":{"application/vnd.plotly.v1+json":{"config":{"linkText":"Export to plot.ly","plotlyServerURL":"https://plot.ly","showLink":false},"data":[{"type":"contour","z":[[10,10.625,12.5,15.625,20],[5.625,6.25,8.125,11.25,15.625],[2.5,3.125,5,8.125,12.5],[0.625,1.25,3.125,6.25,10.625],[0,0.625,2.5,5.625,10]]}],"layout":{"template":{"data":{"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5}},"type":"bar"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5}},"type":"barpolar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"heatmapgl":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmapgl"}],"histogram":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"histogram"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"scatter":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","zerolinecolor":"white","zerolinewidth":2}}}}},"text/html":["
\n"," \n"," \n","
\n"," \n","
"]},"metadata":{"tags":[]},"output_type":"display_data"}],"source":["from plotly.offline import iplot\n","import plotly.graph_objs as go\n","\n","data = [\n"," go.Contour(\n"," z=[[10, 10.625, 12.5, 15.625, 20],\n"," [5.625, 6.25, 8.125, 11.25, 15.625],\n"," [2.5, 3.125, 5., 8.125, 12.5],\n"," [0.625, 1.25, 3.125, 6.25, 10.625],\n"," [0, 0.625, 2.5, 5.625, 10]]\n"," )\n","]\n","iplot(data)"]}]}